<?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>64250</bug_id>
          
          <creation_ts>2011-07-10 22:11:28 -0700</creation_ts>
          <short_desc>Global strict mode function leaking global object as &quot;this&quot;.</short_desc>
          <delta_ts>2011-12-25 15:49:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>64677</blocked>
    
    <blocked>64678</blocked>
    
    <blocked>64679</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Mark S. Miller">erights</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>arv</cc>
    
    <cc>barraclough</cc>
    
    <cc>brendan</cc>
    
    <cc>erights</cc>
    
    <cc>ggaren</cc>
    
    <cc>jwalden+bwo</cc>
    
    <cc>rectalogic</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>434670</commentid>
    <comment_count>0</comment_count>
    <who name="Mark S. Miller">erights</who>
    <bug_when>2011-07-10 22:11:28 -0700</bug_when>
    <thetext>&gt; function foo(){&quot;use strict&quot;; return this;}
    undefined

    &gt; foo()
    DOMWindow

The call to foo() should have returned undefined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436261</commentid>
    <comment_count>1</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-12 22:44:26 -0700</bug_when>
    <thetext>Trivially, the bug here is that JSGlobalObject doesn&apos;t set NeedsThisConversion.  But just setting that may be a performance regression.  (Will make us take unnecessary calls out in non-strict code).

An alternative would be a NeedsStrictThisConversion flag, but it would probably be better to fix jsc so we no longer rely on this conversion to fix up scope objects once we&apos;re inside the call, and instead to pass the correct this object into functions in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436598</commentid>
    <comment_count>2</comment_count>
    <who name="Brendan Eich">brendan</who>
    <bug_when>2011-07-13 12:23:52 -0700</bug_when>
    <thetext>http://code.google.com/p/v8/issues/detail?id=1547 has a testcase in comment 6, correct ES5 output is &quot;oooouuuu&quot;, Firefox does &quot;ioiouuuu&quot; for backward compat (but we would like to break that in a coordinated move by browser vendors, with site evangelism as needed).

/be</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436643</commentid>
    <comment_count>3</comment_count>
      <attachid>100706</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-13 14:12:11 -0700</bug_when>
    <thetext>Created attachment 100706
Updated test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436646</commentid>
    <comment_count>4</comment_count>
      <attachid>100709</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-13 14:19:21 -0700</bug_when>
    <thetext>Created attachment 100709
Correction to test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436665</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-13 14:37:09 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; http://code.google.com/p/v8/issues/detail?id=1547 has a testcase in comment 6, correct ES5 output is &quot;oooouuuu&quot;, Firefox does &quot;ioiouuuu&quot; for backward compat (but we would like to break that in a coordinated move by browser vendors, with site evangelism as needed).
&gt; 
&gt; /be

Hey Brendan,

Thanks for the test case.  Just to confirm, the text in the test case seems to be incorrect in stating the expected result to be &quot;iooouuuu&quot;, whereas my understanding agrees with your comment that the correct result should be &quot;oooouuuu&quot;.

I&apos;ve expanded the test to cover &apos;with&apos; behaviour.  I&apos;d expected that the correct this value to be passed in all cases of with statements should be the base object that the property is being accessed off, but looking at the spec (and Safari/FireFox behaviour!) this is incorrect, since the definition for the comma operator causes GetValue to be called on the reference.  It would be great to get confirmation that my understanding here is correct!

WRT to coordinating releases, that would be great.  I&apos;ll probably fix this in ToT soon so we can start the bug finding /evangelism process.  I think you guys have plans on a faster release cycle than we do right now - any idea when you&apos;d expect to see this change in a release Firefox?

many thanks,
G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436751</commentid>
    <comment_count>6</comment_count>
    <who name="Brendan Eich">brendan</who>
    <bug_when>2011-07-13 16:24:26 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #2)
&gt; &gt; http://code.google.com/p/v8/issues/detail?id=1547 has a testcase in comment 6, correct ES5 output is &quot;oooouuuu&quot;, Firefox does &quot;ioiouuuu&quot; for backward compat (but we would like to break that in a coordinated move by browser vendors, with site evangelism as needed).
&gt; &gt; 
&gt; &gt; /be
&gt; 
&gt; Hey Brendan,
&gt; 
&gt; Thanks for the test case.  Just to confirm, the text in the test case seems to be incorrect in stating the expected result to be &quot;iooouuuu&quot;, whereas my understanding agrees with your comment that the correct result should be &quot;oooouuuu&quot;.

ES5 wants oooouuuu.

Mark, upon hearing the full horror of the web compatibility constraint, wants iooouuuu (he wrote the test, I extended it to test the strict callee g). This is something Mark wants to allow strict callers to protect themselves from leaking the capability to their global object to non-strict callees.

Firefox and IE do ioio.... (IE, even IE10pp, still does not handle strict mode correctly, so gives ioio for .... -- Firefox gives uuuu).

For SpiderMonkey in Firefox, we avoided an extra test for strict caller and wound up with ioiouuuu. We could add the test to avoid the capability leak, but I just today expressed to mark my hope that we can all switch to oooouuuu without breaking the web (maybe with a bit of site evangelism).

&gt; I&apos;ve expanded the test to cover &apos;with&apos; behaviour.  I&apos;d expected that the correct this value to be passed in all cases of with statements should be the base object that the property is being accessed off, but looking at the spec (and Safari/FireFox behaviour!) this is incorrect, since the definition for the comma operator causes GetValue to be called on the reference.  It would be great to get confirmation that my understanding here is correct!

You are correct.

&gt; WRT to coordinating releases, that would be great.  I&apos;ll probably fix this in ToT soon so we can start the bug finding /evangelism process.  I think you guys have plans on a faster release cycle than we do right now - any idea when you&apos;d expect to see this change in a release Firefox?


Firefox 8, so since we shipped 5 and we ship every quarter, &lt; 3 quarters from now -- early next year.

Question is how many sites will test with our nightly, aurora (think a for alpha) and beta channels, which pipeline-stage every six weeks. But if we get you and V8 to do oooouuuu as well, then *maybe*. The IE share is the worry.

/be</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437264</commentid>
    <comment_count>7</comment_count>
      <attachid>100846</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-14 12:45:41 -0700</bug_when>
    <thetext>Created attachment 100846
The patch

Perf tested okay, tested 32bit, 64bit, DFG &amp; interpreter builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437271</commentid>
    <comment_count>8</comment_count>
      <attachid>100846</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-07-14 12:55:34 -0700</bug_when>
    <thetext>Comment on attachment 100846
The patch

Check behaviour of getters and setters on the global object, including the cached scenarios.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437367</commentid>
    <comment_count>9</comment_count>
      <attachid>100875</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-14 15:30:57 -0700</bug_when>
    <thetext>Created attachment 100875
Fix for global object getter/setter properties, added test case &amp; ASSERT in JSC::call to guard against global object being passed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437372</commentid>
    <comment_count>10</comment_count>
      <attachid>100875</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-07-14 15:39:55 -0700</bug_when>
    <thetext>Comment on attachment 100875
Fix for global object getter/setter properties, added test case &amp; ASSERT in JSC::call to guard against global object being passed.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437376</commentid>
    <comment_count>11</comment_count>
      <attachid>100875</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-07-14 15:47:40 -0700</bug_when>
    <thetext>Comment on attachment 100875
Fix for global object getter/setter properties, added test case &amp; ASSERT in JSC::call to guard against global object being passed.

I think badness can happen in ::execute(Program... ::execute(EvalNode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437876</commentid>
    <comment_count>12</comment_count>
      <attachid>101020</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-15 12:00:06 -0700</bug_when>
    <thetext>Created attachment 101020
Added asserts, changed calls in WebCore/WebKit/WebKit2 to pass correct global object to call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437889</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-15 12:11:21 -0700</bug_when>
    <thetext>Attachment 101020 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/JavaScriptCore/interpreter/Interpreter.h:100:  The parameter name &quot;scopeChain&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 45 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437892</commentid>
    <comment_count>14</comment_count>
      <attachid>101020</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-07-15 12:12:02 -0700</bug_when>
    <thetext>Comment on attachment 101020
Added asserts, changed calls in WebCore/WebKit/WebKit2 to pass correct global object to call.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437925</commentid>
    <comment_count>15</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-15 12:53:32 -0700</bug_when>
    <thetext>I&apos;ve landed these changes in r91095, Now we just need be vigilant for compatibility issues.

G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438239</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-07-16 20:33:55 -0700</bug_when>
    <thetext>This caused a bunch of new assertions on the bots:
http://build.webkit.org/results/Leopard%20Intel%20Debug%20(Tests)/r91161%20(32455)/http/tests/inspector/network/network-embed-crash-log.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438311</commentid>
    <comment_count>17</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-17 14:12:53 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; This caused a bunch of new assertions on the bots:
&gt; http://build.webkit.org/results/Leopard%20Intel%20Debug%20(Tests)/r91161%20(32455)/http/tests/inspector/network/network-embed-crash-log.txt

Cheers Simon, missed those, will investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440192</commentid>
    <comment_count>18</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-20 19:18:52 -0700</bug_when>
    <thetext>*** Bug 51097 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440194</commentid>
    <comment_count>19</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-20 19:19:01 -0700</bug_when>
    <thetext>*** Bug 58338 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450173</commentid>
    <comment_count>20</comment_count>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-08-11 17:09:12 -0700</bug_when>
    <thetext>The isValidThisObject assert added to Source/JavaScriptCore/runtime/CallData.cpp breaks the Qt JS bridge signal connection functionality in debug builds.
http://doc.qt.nokia.com/latest/qtwebkit-bridge.html#signal-to-function-connections

See bug 66097.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527084</commentid>
    <comment_count>21</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-12-25 15:49:26 -0800</bug_when>
    <thetext>*** Bug 11884 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>100706</attachid>
            <date>2011-07-13 14:12:11 -0700</date>
            <delta_ts>2011-07-13 14:19:21 -0700</delta_ts>
            <desc>Updated test case</desc>
            <filename>inner-out5.html</filename>
            <type>text/html</type>
            <size>1205</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">PGJvZHk+CiAgPHNjcmlwdD4KICAgIHdpbmRvdy5uYW1lID0gIm8iOwogICAgZnVuY3Rpb24gZigp
IHsgCiAgICAgIHJldHVybiB0aGlzLm5hbWU7CiAgICB9CiAgICBmdW5jdGlvbiBnKCkgeyAKICAg
ICAgInVzZSBzdHJpY3QiOwogICAgICByZXR1cm4gdGhpcyA/IHRoaXMubmFtZSA6ICJ1IjsKICAg
IH0KICA8L3NjcmlwdD4KICA8aWZyYW1lIG5hbWU9ImkiIAogICAgICAgICAgc3JjPSJqYXZhc2Ny
aXB0OiB3aW5kb3cuZiA9IHBhcmVudC5mOyB3aW5kb3cuZyA9IHBhcmVudC5nOyB3aW5kb3cudyA9
IHsgbmFtZTondycsIGY6cGFyZW50LmYsIGc6cGFyZW50LmcgfTsKICAgICAgICAgICAgICAgJ1No
b3VsZCBiZSBvb29vdXV1dXd3d3c6ICcgKwogICAgICAgICAgICAgICAoZnVuY3Rpb24oKXtyZXR1
cm4gZigpO30pKCkgKwogICAgICAgICAgICAgICAoZnVuY3Rpb24oKXtyZXR1cm4gKDEsZikoKTt9
KSgpICsKICAgICAgICAgICAgICAgKGZ1bmN0aW9uKCl7J3VzZSBzdHJpY3QnOyByZXR1cm4gZigp
O30pKCkgKwogICAgICAgICAgICAgICAoZnVuY3Rpb24oKXsndXNlIHN0cmljdCc7IHJldHVybiAo
MSxmKSgpO30pKCkgKwogICAgICAgICAgICAgICAoZnVuY3Rpb24oKXtyZXR1cm4gZygpO30pKCkg
KwogICAgICAgICAgICAgICAoZnVuY3Rpb24oKXtyZXR1cm4gKDEsZykoKTt9KSgpICsKICAgICAg
ICAgICAgICAgKGZ1bmN0aW9uKCl7J3VzZSBzdHJpY3QnOyByZXR1cm4gZygpO30pKCkgKwogICAg
ICAgICAgICAgICAoZnVuY3Rpb24oKXsndXNlIHN0cmljdCc7IHJldHVybiAoMSxnKSgpO30pKCkg
KwogICAgICAgICAgICAgICAoZnVuY3Rpb24oKXt3aXRoKHcpeyByZXR1cm4gKGZ1bmN0aW9uKCl7
J3VzZSBzdHJpY3QnOyByZXR1cm4gZigpO30pKCk7IH19KSgpICsKICAgICAgICAgICAgICAgKGZ1
bmN0aW9uKCl7d2l0aCh3KXsgcmV0dXJuIChmdW5jdGlvbigpeyd1c2Ugc3RyaWN0JzsgcmV0dXJu
ICgxLGYpKCk7fSkoKTsgfX0pKCkgKwogICAgICAgICAgICAgICAoZnVuY3Rpb24oKXt3aXRoKHcp
eyByZXR1cm4gKGZ1bmN0aW9uKCl7J3VzZSBzdHJpY3QnOyByZXR1cm4gZygpO30pKCk7IH19KSgp
ICsKICAgICAgICAgICAgICAgKGZ1bmN0aW9uKCl7d2l0aCh3KXsgcmV0dXJuIChmdW5jdGlvbigp
eyd1c2Ugc3RyaWN0JzsgcmV0dXJuICgxLGcpKCk7fSkoKTsgfX0pKCkgIj4KICA8L2lmcmFtZT4K
PC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>100709</attachid>
            <date>2011-07-13 14:19:21 -0700</date>
            <delta_ts>2011-07-13 14:19:21 -0700</delta_ts>
            <desc>Correction to test case</desc>
            <filename>inner-out6.html</filename>
            <type>text/html</type>
            <size>1205</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">PGJvZHk+CiAgPHNjcmlwdD4KICAgIHdpbmRvdy5uYW1lID0gIm8iOwogICAgZnVuY3Rpb24gZigp
IHsgCiAgICAgIHJldHVybiB0aGlzLm5hbWU7CiAgICB9CiAgICBmdW5jdGlvbiBnKCkgeyAKICAg
ICAgInVzZSBzdHJpY3QiOwogICAgICByZXR1cm4gdGhpcyA/IHRoaXMubmFtZSA6ICJ1IjsKICAg
IH0KICA8L3NjcmlwdD4KICA8aWZyYW1lIG5hbWU9ImkiIAogICAgICAgICAgc3JjPSJqYXZhc2Ny
aXB0OiB3aW5kb3cuZiA9IHBhcmVudC5mOyB3aW5kb3cuZyA9IHBhcmVudC5nOyB3aW5kb3cudyA9
IHsgbmFtZTondycsIGY6cGFyZW50LmYsIGc6cGFyZW50LmcgfTsKICAgICAgICAgICAgICAgJ1No
b3VsZCBiZSBvb29vdXV1dXdvd3U6ICcgKwogICAgICAgICAgICAgICAoZnVuY3Rpb24oKXtyZXR1
cm4gZigpO30pKCkgKwogICAgICAgICAgICAgICAoZnVuY3Rpb24oKXtyZXR1cm4gKDEsZikoKTt9
KSgpICsKICAgICAgICAgICAgICAgKGZ1bmN0aW9uKCl7J3VzZSBzdHJpY3QnOyByZXR1cm4gZigp
O30pKCkgKwogICAgICAgICAgICAgICAoZnVuY3Rpb24oKXsndXNlIHN0cmljdCc7IHJldHVybiAo
MSxmKSgpO30pKCkgKwogICAgICAgICAgICAgICAoZnVuY3Rpb24oKXtyZXR1cm4gZygpO30pKCkg
KwogICAgICAgICAgICAgICAoZnVuY3Rpb24oKXtyZXR1cm4gKDEsZykoKTt9KSgpICsKICAgICAg
ICAgICAgICAgKGZ1bmN0aW9uKCl7J3VzZSBzdHJpY3QnOyByZXR1cm4gZygpO30pKCkgKwogICAg
ICAgICAgICAgICAoZnVuY3Rpb24oKXsndXNlIHN0cmljdCc7IHJldHVybiAoMSxnKSgpO30pKCkg
KwogICAgICAgICAgICAgICAoZnVuY3Rpb24oKXt3aXRoKHcpeyByZXR1cm4gKGZ1bmN0aW9uKCl7
J3VzZSBzdHJpY3QnOyByZXR1cm4gZigpO30pKCk7IH19KSgpICsKICAgICAgICAgICAgICAgKGZ1
bmN0aW9uKCl7d2l0aCh3KXsgcmV0dXJuIChmdW5jdGlvbigpeyd1c2Ugc3RyaWN0JzsgcmV0dXJu
ICgxLGYpKCk7fSkoKTsgfX0pKCkgKwogICAgICAgICAgICAgICAoZnVuY3Rpb24oKXt3aXRoKHcp
eyByZXR1cm4gKGZ1bmN0aW9uKCl7J3VzZSBzdHJpY3QnOyByZXR1cm4gZygpO30pKCk7IH19KSgp
ICsKICAgICAgICAgICAgICAgKGZ1bmN0aW9uKCl7d2l0aCh3KXsgcmV0dXJuIChmdW5jdGlvbigp
eyd1c2Ugc3RyaWN0JzsgcmV0dXJuICgxLGcpKCk7fSkoKTsgfX0pKCkgIj4KICA8L2lmcmFtZT4K
PC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100846</attachid>
            <date>2011-07-14 12:45:41 -0700</date>
            <delta_ts>2011-07-14 15:30:57 -0700</delta_ts>
            <desc>The patch</desc>
            <filename>64250.patch</filename>
            <type>text/plain</type>
            <size>53190</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTEwMjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOTcgQEAK
KzIwMTEtMDctMTQgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDI1MAor
ICAgICAgICBHbG9iYWwgc3RyaWN0IG1vZGUgZnVuY3Rpb24gbGVha2luZyBnbG9iYWwgb2JqZWN0
IGFzICJ0aGlzIi4KKworICAgICAgICBUaGUgcm9vdCBwcm9ibGVtIGhlcmUgaXMgdGhhdCB3ZSBw
YXNzIHRoZSB3cm9uZyB2YWx1ZXMgaW50bworICAgICAgICBjYWxscywgYW5kIHRoZW4gdHJ5IHRv
IGZpeCB0aGVtIHVwIGluIHRoZSBjYWxsZWUuIENvcnJlY3QKKyAgICAgICAgYmVoYXZpb3VyIHBl
ciB0aGUgc3BlYyBpcyB0byBwYXNzIGluIHRoZSB2YWx1ZSB1bmRlZmluZWQsCisgICAgICAgIGFz
IHRoaXMgdW5sZXNzIGVpdGhlciAoMSkgdGhlIGZ1bmN0aW9uIGNhbGwgaXMgYmFzZWQgb24gYW4K
KyAgICAgICAgZXhwbGljaXQgcHJvcGVydHkgYWNjZXNzIG9yICgyKSB0aGUgYmFzZSBvZiB0aGUg
Y2FsbCBjb21lcworICAgICAgICBkaXJlY3RseSBmcm9tIGEgJ3dpdGgnLgorCisgICAgICAgIFRo
aXMgY2hhbmdlIGRvZXMgYXdheSB3aXRoIHRoZSBuZWVkIGZvciB0aGlzIGNvbnZlcnNpb24gb2YK
KyAgICAgICAgb2JqZWN0cyAobm9uIHN0cmljdCBjb2RlIHNob3VsZCBvbmx5IGJveCBwcmltaXRp
dmVzKSwgYW5kCisgICAgICAgIGRvZXMgYXdheSB3aXRoIGFsbCB0aGlzIGNvbnZlcnNpb24gZm9y
IHN0cmljdCBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYXkgaGF2ZSB3ZWIgY29t
cGF0aWJpbGl0eSByYW1pZmljYXRpb25zLCBhbmQgbWF5CisgICAgICAgIHJlcXVpcmUgc29tZSBh
ZHZvY2FjeS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVt
cCk6CisgICAgICAgICAgICAtIFJlbW92ZWQgb3BfY29udmVydF90aGlzX3N0cmljdCwgYWRkZWQg
b3BfcmVzb2x2ZV93aXRoX3RoaXMuCisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAg
ICAgICAgICAtIFJlbW92ZWQgb3BfY29udmVydF90aGlzX3N0cmljdCwgYWRkZWQgb3BfcmVzb2x2
ZV93aXRoX3RoaXMuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgor
ICAgICAgICAgICAgLSBSZW1vdmVkIG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIGFkZGVkIG9wX3Jl
c29sdmVfd2l0aF90aGlzLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAgICAgLSBSZW1vdmVkIG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIGFkZGVk
IG9wX3Jlc29sdmVfd2l0aF90aGlzLgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwOgorICAgICAgICAoSlNDOjpFdmFsRnVuY3Rpb25DYWxsTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgICAgICAtIFJlbW92ZWQgb3BfY29udmVydF90aGlzX3N0cmljdCwgYWRkZWQgb3Bf
cmVzb2x2ZV93aXRoX3RoaXMuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICAg
ICAtIENoYW5nZSBOZWVkc1RoaXNDb252ZXJzaW9uIGNoZWNrIHRvIHRlc3QgZm9yIEpTU3RyaW5n
J3MgdnB0cgorICAgICAgICAgICAgICAob2JqZWN0cyBubyBsb25nZXIgbmVlZCBjb252ZXJzaW9u
KS4KKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpyZXNvbHZlVGhpc0FuZFByb3BlcnR5KToKKyAgICAgICAgICAgIC0gQmFz
ZWQgb24gcmVzb2x2ZUJhc2VBbmRQcm9wZXJ0eSwgYnV0IHByb2R1Y2UgY29ycmVjdCB0aGlzIHZh
bHVlLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAg
ICAgICAgLSBSZW1vdmVkIG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIGFkZGVkIG9wX3Jlc29sdmVf
d2l0aF90aGlzLgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAg
ICAgICAgLSBSZW1vdmVkIG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIGFkZGVkIG9wX3Jlc29sdmVf
d2l0aF90aGlzLgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rl
cy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX3dpdGhfdGhpcyk6Cisg
ICAgICAgICAgICAtIFJlbW92ZWQgb3BfY29udmVydF90aGlzX3N0cmljdCwgYWRkZWQgb3BfcmVz
b2x2ZV93aXRoX3RoaXMuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXMp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NvbnZlcnRfdGhpcyk6CisgICAgICAg
ICAgICAtIENoYW5nZSBOZWVkc1RoaXNDb252ZXJzaW9uIGNoZWNrIHRvIHRlc3QgZm9yIEpTU3Ry
aW5nJ3MgdnB0cgorICAgICAgICAgICAgICAob2JqZWN0cyBubyBsb25nZXIgbmVlZCBjb252ZXJz
aW9uKS4KKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3Jlc29sdmVfd2l0aF90aGlzKToKKyAgICAgICAgICAgIC0gUmVtb3ZlZCBv
cF9jb252ZXJ0X3RoaXNfc3RyaWN0LCBhZGRlZCBvcF9yZXNvbHZlX3dpdGhfdGhpcy4KKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2NvbnZlcnRfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfY29udmVydF90aGlzKToKKyAgICAgICAgICAgIC0gQ2hhbmdlIE5lZWRzVGhp
c0NvbnZlcnNpb24gY2hlY2sgdG8gdGVzdCBmb3IgSlNTdHJpbmcncyB2cHRyCisgICAgICAgICAg
ICAgIChvYmplY3RzIG5vIGxvbmdlciBuZWVkIGNvbnZlcnNpb24pLgorICAgICAgICAqIGppdC9K
SVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAg
ICAgICAgIC0gUmVtb3ZlZCBvcF9jb252ZXJ0X3RoaXNfc3RyaWN0LCBhZGRlZCBvcF9yZXNvbHZl
X3dpdGhfdGhpcy4KKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAgICAgIC0gUmVt
b3ZlZCBvcF9jb252ZXJ0X3RoaXNfc3RyaWN0LCBhZGRlZCBvcF9yZXNvbHZlX3dpdGhfdGhpcy4K
KyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAgICAgLSByZW1vdmVk
IE5lZWRzVGhpc0NvbnZlcnNpb24gZmxhZywgYWRkZWQgSXNFbnZpcm9ubWVudFJlY29yZC4KKyAg
ICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaDoKKyAgICAgICAgICAgIC0gcmVt
b3ZlZCBOZWVkc1RoaXNDb252ZXJzaW9uIGZsYWcsIGFkZGVkIElzRW52aXJvbm1lbnRSZWNvcmQu
CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRl
cjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgICAgIC0gcmVtb3ZlZCBOZWVkc1RoaXNDb252
ZXJzaW9uLgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAoSlNDOjpU
eXBlSW5mbzo6aXNFbnZpcm9ubWVudFJlY29yZCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpv
dmVycmlkZXNIYXNJbnN0YW5jZSk6CisgICAgICAgICAgICAtIHJlbW92ZWQgTmVlZHNUaGlzQ29u
dmVyc2lvbiBmbGFnLCBhZGRlZCBJc0Vudmlyb25tZW50UmVjb3JkLgorICAgICAgICAqIHJ1bnRp
bWUvSlNWYWx1ZS5oOgorICAgICAgICAgICAgLSByZW1vdmVkIE5lZWRzVGhpc0NvbnZlcnNpb24u
CisgICAgICAgICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAgICAgICAtIENv
cnJlY3RlZCBTdHJ1Y3R1cmVGbGFncyBpbmhlcml0YW5jZS4KKyAgICAgICAgKiBydW50aW1lL1N0
cmljdEV2YWxBY3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAgICAgLSBBZGRlZCBJc0Vudmlyb25tZW50UmVj
b3JkIHRvIFN0cnVjdHVyZUZsYWdzLCBhZGRkZWQgY3JlYXRlU3RydWN0dXJlLgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICAgICAtIHJlbW92ZWQgTmVlZHNUaGlzQ29u
dmVyc2lvbi4KKyAgICAgICAgKiB0ZXN0cy9tb3ppbGxhL2VjbWEvU3RyaW5nLzE1LjUuNC42LTIu
anM6CisgICAgICAgIChnZXRUZXN0Q2FzZXMpOgorICAgICAgICAgICAgLSBSZW1vdmVkIGludmFs
aWQgdGVzdCBjYXNlLgorCiAyMDExLTA3LTE0ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBBZGQgT3duUHRyIHNwZWNpYWxpemF0aW9uIGZvciBF
Y29yZV9QaXBlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAJKHJldmlzaW9uIDkwOTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMiwxMSArNTIyLDYgQEAgdm9p
ZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgcHJpbnRm
KCJbJTRkXSBjb252ZXJ0X3RoaXMgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNl
IG9wX2NvbnZlcnRfdGhpc19zdHJpY3Q6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBjb252ZXJ0X3RoaXNfc3RyaWN0
ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfb2JqZWN0OiB7CiAg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHByaW50
ZigiWyU0ZF0gbmV3X29iamVjdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCkpOwpAQCAtODAzLDYgKzc5OCwxMyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChF
eGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludGYoIlslNGRdIHJlc29sdmVfd2l0
aF9iYXNlICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRp
ZmllcnNbaWQwXSkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAg
ICAgIGNhc2Ugb3BfcmVzb2x2ZV93aXRoX3RoaXM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBw
cmludGYoIlslNGRdIHJlc29sdmVfd2l0aF90aGlzICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7CiAgICAgICAg
ICAgICBwcmludEdldEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJnZXRfYnlfaWQiKTsKICAg
ICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
Y29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNv
ZGUuaAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIG1hY3JvKG9wX2NyZWF0ZV90aGlzLCAzKSBcCiAgICAgICAgIG1hY3JvKG9wX2dl
dF9jYWxsZWUsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfY29udmVydF90aGlzLCAyKSBcCi0gICAg
ICAgIG1hY3JvKG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIDIpIFwKICAgICAgICAgXAogICAgICAg
ICBtYWNybyhvcF9uZXdfb2JqZWN0LCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX25ld19hcnJheSwg
NCkgXApAQCAtMTA3LDYgKzEwNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhv
cF9yZXNvbHZlX2Jhc2UsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfZW5zdXJlX3Byb3BlcnR5X2V4
aXN0cywgMykgXAogICAgICAgICBtYWNybyhvcF9yZXNvbHZlX3dpdGhfYmFzZSwgNCkgXAorICAg
ICAgICBtYWNybyhvcF9yZXNvbHZlX3dpdGhfdGhpcywgNCkgXAogICAgICAgICBtYWNybyhvcF9n
ZXRfYnlfaWQsIDgpIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX3NlbGYsIDgpIFwKICAg
ICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX3NlbGZfbGlzdCwgOCkgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAJKHJldmlzaW9uIDkwOTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNCwxMSArNDE0
LDEwIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihGdW4KICAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOwogICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuY1Byb3RvLT5pbmRleCgpKTsKICAgICB9IGVsc2UgaWYg
KGZ1bmN0aW9uQm9keS0+dXNlc1RoaXMoKSB8fCBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKSB7Ci0g
ICAgICAgIGlmIChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgZW1pdE9w
Y29kZShvcF9jb252ZXJ0X3RoaXNfc3RyaWN0KTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAo
IWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgICAgIGVtaXRPcGNvZGUob3Bf
Y29udmVydF90aGlzKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lz
dGVyLmluZGV4KCkpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1Jl
Z2lzdGVyLmluZGV4KCkpOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0xNDE1LDYgKzE0MTQs
NTMgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAgIHJldHVy
biBiYXNlRHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29s
dmVXaXRoVGhpcyhSZWdpc3RlcklEKiBiYXNlRHN0LCBSZWdpc3RlcklEKiBwcm9wRHN0LCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKK3sKKyAgICBzaXplX3QgZGVwdGggPSAwOworICAgIGlu
dCBpbmRleCA9IDA7CisgICAgSlNPYmplY3QqIGdsb2JhbE9iamVjdCA9IDA7CisgICAgYm9vbCBy
ZXF1aXJlc0R5bmFtaWNDaGVja3MgPSBmYWxzZTsKKyAgICBpZiAoIWZpbmRTY29wZWRQcm9wZXJ0
eShwcm9wZXJ0eSwgaW5kZXgsIGRlcHRoLCBmYWxzZSwgcmVxdWlyZXNEeW5hbWljQ2hlY2tzLCBn
bG9iYWxPYmplY3QpIHx8ICFnbG9iYWxPYmplY3QgfHwgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSB7
CisgICAgICAgIC8vIFdlIGNhbid0IG9wdGltaXNlIGF0IGFsbCA6LSgKKyAgICAgICAgZW1pdE9w
Y29kZShvcF9yZXNvbHZlX3dpdGhfdGhpcyk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChiYXNlRHN0LT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BE
c3QtPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQo
cHJvcGVydHkpKTsKKyAgICAgICAgcmV0dXJuIGJhc2VEc3Q7CisgICAgfQorCisgICAgYm9vbCBm
b3JjZUdsb2JhbFJlc29sdmUgPSBmYWxzZTsKKworICAgIC8vIEdsb2JhbCBvYmplY3QgaXMgdGhl
IGJhc2UKKyAgICBlbWl0TG9hZChiYXNlRHN0LCBqc1VuZGVmaW5lZCgpKTsKKworICAgIGlmIChp
bmRleCAhPSBtaXNzaW5nU3ltYm9sTWFya2VyKCkgJiYgIWZvcmNlR2xvYmFsUmVzb2x2ZSkgewor
ICAgICAgICAvLyBEaXJlY3RseSBpbmRleCB0aGUgcHJvcGVydHkgbG9va3VwIGFjcm9zcyBtdWx0
aXBsZSBzY29wZXMuCisgICAgICAgIGVtaXRHZXRTY29wZWRWYXIocHJvcERzdCwgZGVwdGgsIGlu
ZGV4LCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gYmFzZURzdDsKKyAgICB9CisgICAg
aWYgKHNob3VsZEF2b2lkUmVzb2x2ZUdsb2JhbCgpKSB7CisgICAgICAgIGVtaXRPcGNvZGUob3Bf
cmVzb2x2ZSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wRHN0LT5pbmRleCgp
KTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7
CisgICAgICAgIHJldHVybiBiYXNlRHN0OworICAgIH0KKyNpZiBFTkFCTEUoSklUKQorICAgIG1f
Y29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwor
I2VuZGlmCisjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQorICAgIG1fY29kZUJsb2NrLT5hZGRHbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyNlbmRpZgorICAg
IGVtaXRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJv
cERzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHBy
b3BlcnR5KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZCgwKTsKKyAgICBpZiAocmVxdWlyZXNEeW5hbWljQ2hlY2tzKQorICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZGVwdGgpOworICAgIHJldHVybiBiYXNlRHN0OworfQorCiB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TWV0aG9kQ2hlY2soKQogewogICAgIGVtaXRPcGNv
ZGUob3BfbWV0aG9kX2NoZWNrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDkwOTM2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsNiArMzEzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlQmFzZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmVCYXNl
Rm9yUHV0KFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZVdpdGhCYXNlKFJlZ2lzdGVySUQqIGJhc2VEc3Qs
IFJlZ2lzdGVySUQqIHByb3BEc3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmVXaXRoVGhpcyhSZWdpc3RlcklEKiBiYXNlRHN0LCBS
ZWdpc3RlcklEKiBwcm9wRHN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7CiAKICAgICAg
ICAgdm9pZCBlbWl0TWV0aG9kQ2hlY2soKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gOTA5MzYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsNyBAQCBSZWdpc3RlcklEKiBFdmFsRnVuY3Rp
b25DYWxsTm9kZTo6ZW1pdEJ5CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmMgPSBnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRz
KGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCkgLSBzdGFydE9mZnNldCgpICsgNCwgNCwgMCk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRSZXNv
bHZlV2l0aEJhc2UoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgZnVuYy5nZXQoKSwgZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ldmFsKTsKKyAgICBnZW5lcmF0b3IuZW1pdFJlc29sdmVX
aXRoVGhpcyhjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBmdW5jLmdldCgpLCBnZW5lcmF0
b3IucHJvcGVydHlOYW1lcygpLmV2YWwpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGxF
dmFsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuYy5nZXQoKSksIGZ1bmMuZ2V0
KCksIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsK
IH0KIApAQCAtMzc0LDcgKzM3NCw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVO
b2RlOjplbWkKICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2Fy
Z3MpOwogICAgIGludCBpZGVudGlmaWVyU3RhcnQgPSBkaXZvdCgpIC0gc3RhcnRPZmZzZXQoKTsK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGlkZW50aWZpZXJTdGFydCArIG1faWRl
bnQubGVuZ3RoKCksIG1faWRlbnQubGVuZ3RoKCksIDApOwotICAgIGdlbmVyYXRvci5lbWl0UmVz
b2x2ZVdpdGhCYXNlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGZ1bmMuZ2V0KCksIG1f
aWRlbnQpOworICAgIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVdpdGhUaGlzKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGZ1bmMuZ2V0KCksIG1faWRlbnQpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0LCBmdW5j
LmdldCgpKSwgZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgc3RhcnRPZmZzZXQo
KSwgZW5kT2Zmc2V0KCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTk3LDEwICs5OTcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAKICAgICBjYXNlIENvbnZlcnRUaGlzOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IHRoaXNWYWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHRl
bXAodGhpcyk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh0
aGlzVmFsdWUuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0ZW1wLmdwcigpKTsK
LSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hUZXN0OChKSVRDb21waWxlcjo6
Tm9uWmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgU3RydWN0dXJlOjp0eXBl
SW5mb0ZsYWdzT2Zmc2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE5lZWRzVGhpc0Nv
bnZlcnNpb24pKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoUHRyKEpJ
VENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGhpc1ZhbHVlLmdwcigpKSwg
SklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc1N0cmluZ1ZQ
dHIpKSk7CiAKICAgICAgICAgY2VsbFJlc3VsdCh0aGlzVmFsdWUuZ3ByKCksIG1fY29tcGlsZUlu
ZGV4KTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDkwOTM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzIxLDYgKzMyMSw1MCBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6cmVz
b2x2ZUJhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnBy
ZXRlcjo6cmVzb2x2ZVRoaXNBbmRQcm9wZXJ0eShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5zdHJ1
Y3Rpb24qIHZQQywgSlNWYWx1ZSYgZXhjZXB0aW9uVmFsdWUpCit7CisgICAgaW50IHRoaXNEc3Qg
PSB2UENbMV0udS5vcGVyYW5kOworICAgIGludCBwcm9wRHN0ID0gdlBDWzJdLnUub3BlcmFuZDsK
KyAgICBpbnQgcHJvcGVydHkgPSB2UENbM10udS5vcGVyYW5kOworCisgICAgU2NvcGVDaGFpbk5v
ZGUqIHNjb3BlQ2hhaW4gPSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsKKyAgICBTY29wZUNoYWlu
SXRlcmF0b3IgaXRlciA9IHNjb3BlQ2hhaW4tPmJlZ2luKCk7CisgICAgU2NvcGVDaGFpbkl0ZXJh
dG9yIGVuZCA9IHNjb3BlQ2hhaW4tPmVuZCgpOworCisgICAgLy8gRklYTUU6IGFkZCBzY29wZURl
cHRoSXNaZXJvIG9wdGltaXphdGlvbgorCisgICAgQVNTRVJUKGl0ZXIgIT0gZW5kKTsKKworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBJZGVu
dGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CisgICAgSlNP
YmplY3QqIGJhc2U7CisgICAgZG8geworICAgICAgICBiYXNlID0gaXRlci0+Z2V0KCk7CisgICAg
ICAgICsraXRlcjsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSk7CisgICAgICAgIGlm
IChiYXNlLT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKKyAgICAg
ICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIGlkZW50KTsK
KyAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZXhj
ZXB0aW9uOworICAgICAgICAgICAgaWYgKGV4Y2VwdGlvblZhbHVlKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihwcm9wRHN0
KSA9IEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIC8vIEFsbCBlbnRyaWVzIG9uIHRoZSBz
Y29wZSBjaGFpbiBzaG91bGQgYmUgRW52aXJvbm1lbnRSZWNvcmRzIChhY3RpdmF0aW9ucyBldGMp
LAorICAgICAgICAgICAgLy8gb3RoZXIgdGhlbiAnd2l0aCcgb2JqZWN0LCB3aGljaCBhcmUgZGly
ZWN0bHkgcmVmZXJlbmNlZCBmcm9tIHRoZSBzY29wZSBjaGFpbiwKKyAgICAgICAgICAgIC8vIGFu
ZCB0aGUgZ2xvYmFsIG9iamVjdC4gSWYgd2UgaGl0IGVpdGhlciBhbiBFbnZpcm9ubWVudFJlY29y
ZCBvciBhIGdsb2JhbAorICAgICAgICAgICAgLy8gb2JqZWN0IGF0IHRoZSBlbmQgb2YgdGhlIHNj
b3BlIGNoYWluLCB0aGlzIGlzIHVuZGVmaW5lZC4gSWYgd2UgaGl0IGEgbm9uLQorICAgICAgICAg
ICAgLy8gRW52aXJvbm1lbnRSZWNvcmQgd2l0aGluIHRoZSBzY29wZSBjaGFpbiwgcGFzcyB0aGUg
YmFzZSBhcyB0aGUgdGhpcyB2YWx1ZS4KKyAgICAgICAgICAgIGlmIChpdGVyID09IGVuZCB8fCBi
YXNlLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pc0Vudmlyb25tZW50UmVjb3JkKCkpCisgICAg
ICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKHRoaXNEc3QpID0ganNVbmRlZmluZWQo
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tl
ZFIodGhpc0RzdCkgPSBKU1ZhbHVlKGJhc2UpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICB9IHdoaWxlIChpdGVyICE9IGVuZCk7CisKKyAgICBleGNlcHRpb25WYWx1
ZSA9IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoY2FsbEZyYW1lLCBpZGVudCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKElOVEVSUFJFVEVSKQogCiBBTFdB
WVNfSU5MSU5FIENhbGxGcmFtZSogSW50ZXJwcmV0ZXI6OnNsaWRlUmVnaXN0ZXJXaW5kb3dGb3JD
YWxsKENvZGVCbG9jayogbmV3Q29kZUJsb2NrLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHNpemVfdCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ2MpCkBA
IC0yNjA0LDYgKzI2NDgsMjIgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUo
RXhlYwogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX3dpdGhfYmFzZSk7
CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CisgICAgREVGSU5FX09QQ09ERShv
cF9yZXNvbHZlX3dpdGhfdGhpcykgeworICAgICAgICAvKiByZXNvbHZlX3dpdGhfdGhpcyB0aGlz
RHN0KHIpIHByb3BEc3QocikgcHJvcGVydHkoaWQpCisKKyAgICAgICAgICAgU2VhcmNoZXMgdGhl
IHNjb3BlIGNoYWluIGZvciBhbiBvYmplY3QgY29udGFpbmluZworICAgICAgICAgICBpZGVudGlm
aWVyIHByb3BlcnR5LCBhbmQgaWYgb25lIGlzIGZvdW5kLCB3cml0ZXMgdGhlCisgICAgICAgICAg
IHJldHJpZXZlZCBwcm9wZXJ0eSB2YWx1ZSB0byByZWdpc3RlciBwcm9wRHN0LCBhbmQgdGhlCisg
ICAgICAgICAgIHRoaXMgb2JqZWN0IHRvIHBhc3MgaW4gYSBjYWxsIHRvIHRoaXNEc3QuCisKKyAg
ICAgICAgICAgSWYgdGhlIHByb3BlcnR5IGlzIG5vdCBmb3VuZCwgcmFpc2VzIGFuIGV4Y2VwdGlv
bi4KKyAgICAgICAgKi8KKyAgICAgICAgaWYgKFVOTElLRUxZKCFyZXNvbHZlVGhpc0FuZFByb3Bl
cnR5KGNhbGxGcmFtZSwgdlBDLCBleGNlcHRpb25WYWx1ZSkpKQorICAgICAgICAgICAgZ290byB2
bV90aHJvdzsKKworICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX3dpdGhf
dGhpcyk7CisgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKKyAgICB9CiAgICAgREVGSU5FX09Q
Q09ERShvcF9nZXRfYnlfaWQpIHsKICAgICAgICAgLyogZ2V0X2J5X2lkIGRzdChyKSBiYXNlKHIp
IHByb3BlcnR5KGlkKSBzdHJ1Y3R1cmUoc0lEKSBub3Aobikgbm9wKG4pIG5vcChuKQogCkBAIC00
NTU2LDMxICs0NjE2LDEyIEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAKICAgICAgICAgaW50IHRo
aXNSZWdpc3RlciA9IHZQQ1sxXS51Lm9wZXJhbmQ7CiAgICAgICAgIEpTVmFsdWUgdGhpc1ZhbCA9
IGNhbGxGcmFtZS0+cih0aGlzUmVnaXN0ZXIpLmpzVmFsdWUoKTsKLSAgICAgICAgaWYgKHRoaXNW
YWwubmVlZHNUaGlzQ29udmVyc2lvbigpKQorICAgICAgICBpZiAoIXRoaXNWYWwuaXNDZWxsKCkg
fHwgdGhpc1ZhbC5pc1N0cmluZygpKQogICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRS
KHRoaXNSZWdpc3RlcikgPSBKU1ZhbHVlKHRoaXNWYWwudG9UaGlzT2JqZWN0KGNhbGxGcmFtZSkp
OwogCiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2NvbnZlcnRfdGhpcyk7CiAgICAg
ICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9Ci0gICAgREVGSU5FX09QQ09ERShvcF9jb252
ZXJ0X3RoaXNfc3RyaWN0KSB7Ci0gICAgICAgIC8qIGNvbnZlcnRfdGhpc19zdHJpY3QgdGhpcyhy
KQotICAgICAgICAgCi0gICAgICAgICBUYWtlcyB0aGUgdmFsdWUgaW4gdGhlICd0aGlzJyByZWdp
c3RlciwgYW5kIGNvbnZlcnRzIGl0IHRvCi0gICAgICAgICBpdHMgInRoaXMiIGZvcm0gaWYgKGFu
ZCBvbmx5IGlmKSAidGhpcyIgaXMgYW4gb2JqZWN0IHdpdGggYQotICAgICAgICAgY3VzdG9tIHRo
aXMgY29udmVyc2lvbgotICAgICAgICAgCi0gICAgICAgICBUaGlzIG9wY29kZSBzaG91bGQgb25s
eSBiZSB1c2VkIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlCi0gICAgICAgICBibG9jay4KLSAg
ICAgICAgICovCi0gICAgICAgIAotICAgICAgICBpbnQgdGhpc1JlZ2lzdGVyID0gdlBDWzFdLnUu
b3BlcmFuZDsKLSAgICAgICAgSlNWYWx1ZSB0aGlzVmFsID0gY2FsbEZyYW1lLT5yKHRoaXNSZWdp
c3RlcikuanNWYWx1ZSgpOwotICAgICAgICBpZiAodGhpc1ZhbC5pc09iamVjdCgpICYmIHRoaXNW
YWwubmVlZHNUaGlzQ29udmVyc2lvbigpKQotICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNr
ZWRSKHRoaXNSZWdpc3RlcikgPSBKU1ZhbHVlKHRoaXNWYWwudG9TdHJpY3RUaGlzT2JqZWN0KGNh
bGxGcmFtZSkpOwotICAgICAgICAKLSAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfY29u
dmVydF90aGlzX3N0cmljdCk7Ci0gICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKLSAgICB9CiAg
ICAgREVGSU5FX09QQ09ERShvcF9pbml0X2xhenlfcmVnKSB7CiAgICAgICAgIC8qIGluaXRfbGF6
eV9yZWcgZHN0KHIpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiA5MDkzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNiAr
MTMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE5FVkVSX0lOTElORSBib29sIHJlc29s
dmVHbG9iYWxEeW5hbWljKENhbGxGcmFtZSosIEluc3RydWN0aW9uKiwgSlNWYWx1ZSYgZXhjZXB0
aW9uVmFsdWUpOwogICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCByZXNvbHZlQmFzZShDYWxsRnJh
bWUqLCBJbnN0cnVjdGlvbiogdlBDKTsKICAgICAgICAgTkVWRVJfSU5MSU5FIGJvb2wgcmVzb2x2
ZUJhc2VBbmRQcm9wZXJ0eShDYWxsRnJhbWUqLCBJbnN0cnVjdGlvbiosIEpTVmFsdWUmIGV4Y2Vw
dGlvblZhbHVlKTsKKyAgICAgICAgTkVWRVJfSU5MSU5FIGJvb2wgcmVzb2x2ZVRoaXNBbmRQcm9w
ZXJ0eShDYWxsRnJhbWUqLCBJbnN0cnVjdGlvbiosIEpTVmFsdWUmIGV4Y2VwdGlvblZhbHVlKTsK
ICAgICAgICAgTkVWRVJfSU5MSU5FIFNjb3BlQ2hhaW5Ob2RlKiBjcmVhdGVFeGNlcHRpb25TY29w
ZShDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogdlBDKTsKIAogICAgICAgICB2b2lkIHRy
eUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqLCBDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiosIEpTVmFs
dWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5U2xvdCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gOTA5
MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIyMyw3ICsyMjMsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAg
ICAgICAgIERFRklORV9PUChvcF9nZXRfY2FsbGVlKQogICAgICAgICBERUZJTkVfT1Aob3BfY3Jl
YXRlX3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF9jb252ZXJ0X3RoaXMpCi0gICAgICAgIERF
RklORV9PUChvcF9jb252ZXJ0X3RoaXNfc3RyaWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfaW5p
dF9sYXp5X3JlZykKICAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV9hcmd1bWVudHMpCiAgICAg
ICAgIERFRklORV9PUChvcF9kZWJ1ZykKQEAgLTMxMCw2ICszMDksNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9yZXNvbHZlX2dsb2Jh
bF9keW5hbWljKQogICAgICAgICBERUZJTkVfT1Aob3BfcmVzb2x2ZV9za2lwKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcmVzb2x2ZV93aXRoX2Jhc2UpCisgICAgICAgIERFRklORV9PUChvcF9yZXNv
bHZlX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3JldCkKICAgICAgICAgREVGSU5F
X09QKG9wX2NhbGxfcHV0X3Jlc3VsdCkKICAgICAgICAgREVGSU5FX09QKG9wX3JldF9vYmplY3Rf
b3JfdGhpcykKQEAgLTQwMSw3ICs0MDEsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93
Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY2FsbF92YXJhcmdzKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY29uc3RydWN0KQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfY29udmVydF90aGlzKQotICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
Y29udmVydF90aGlzX3N0cmljdCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RpdikK
ICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2VxKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfZ2V0X2J5X2lkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lv
biA5MDkzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTczNiw3ICs3MzYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
X29wX2dldF9jYWxsZWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NyZWF0
ZV90aGlzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jb252ZXJ0X3RoaXMo
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2NvbnZlcnRfdGhpc19zdHJpY3Qo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NyZWF0ZV9hcmd1bWVudHMoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKQEAgLTgyMSw2ICs4
MjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29sdmVf
c2tpcChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcmVzb2x2ZV93aXRoX2Jh
c2UoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29sdmVfd2l0aF90aGlz
KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXQoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyhJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfcnNoaWZ0KEluc3RydWN0aW9uKik7CkBAIC04NTMsNyArODUz
LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbF92YXJh
cmdzKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb252ZXJ0
X3RoaXMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0g
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY29udmVydF90aGlzX3N0cmljdChJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9kaXYoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZXEoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X2lk
KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNp
b24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExMDIsNiArMTEwMiwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9yZXNvbHZlX3dpdGhfYmFzZShJbnN0CiAgICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV93aXRo
X3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTdHViQ2Fs
bCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcmVzb2x2ZV93aXRoX3RoaXMpOworICAgIHN0dWJDYWxs
LmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIoJm1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKSk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
SW1tMzIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgIHN0dWJDYWxsLmNh
bGwoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7Cit9CisKIHZvaWQgSklUOjplbWl0
X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9uZXdfZnVuY19leHApOwpAQCAtMTQ0
NCw1MiArMTQ1MiwyNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXMoSW5zdHJ1Y3Rp
CiAgICAgZW1pdExvYWQodGhpc1JlZ2lzdGVyLCByZWdUMSwgcmVnVDApOwogCiAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2Vs
bFRhZykpKTsKLQotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25aZXJvLCBB
ZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihOZWVkc1RoaXNDb252ZXJzaW9uKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihF
cXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc1N0cmlu
Z1ZQdHIpKSk7CiAKICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5HVEgob3Bf
Y29udmVydF90aGlzKSwgdGhpc1JlZ2lzdGVyLCByZWdUMSwgcmVnVDApOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCi17Ci0gICAgdW5zaWduZWQgdGhpc1JlZ2lzdGVyID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKLSAgICAKLSAgICBlbWl0TG9hZCh0aGlzUmVnaXN0ZXIsIHJlZ1QxLCBy
ZWdUMCk7Ci0gICAgCi0gICAgSnVtcCBub3ROdWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOwotICAgIGVtaXRTdG9yZSh0
aGlzUmVnaXN0ZXIsIGpzTnVsbCgpKTsKLSAgICBKdW1wIHNldFRoaXMgPSBqdW1wKCk7Ci0gICAg
bm90TnVsbC5saW5rKHRoaXMpOwotICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2gzMihOb3RF
cXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAg
IEp1bXAgbm90QW5PYmplY3QgPSBicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1
Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsK
LSAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1
Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihOZWVkc1RoaXNDb252
ZXJzaW9uKSkpOwotICAgIGlzSW1tZWRpYXRlLmxpbmsodGhpcyk7Ci0gICAgbm90QW5PYmplY3Qu
bGluayh0aGlzKTsKLSAgICBzZXRUaGlzLmxpbmsodGhpcyk7Ci0gICAgbWFwKG1fYnl0ZWNvZGVP
ZmZzZXQgKyBPUENPREVfTEVOR1RIKG9wX2NvbnZlcnRfdGhpc19zdHJpY3QpLCB0aGlzUmVnaXN0
ZXIsIHJlZ1QxLCByZWdUMCk7Ci19Ci0KIHZvaWQgSklUOjplbWl0U2xvd19vcF9jb252ZXJ0X3Ro
aXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKKyAgICB2b2lkKiBnbG9iYWxUaGlzID0gbV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWluKCktPmdsb2JhbFRoaXMuZ2V0KCk7CiAg
ICAgdW5zaWduZWQgdGhpc1JlZ2lzdGVyID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Cisg
ICAgSnVtcCBpc05vdFVuZGVmaW5lZCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZykpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihn
bG9iYWxUaGlzKSwgcmVnVDApOworICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxU
YWcpLCByZWdUMSk7CisgICAgZW1pdFN0b3JlKHRoaXNSZWdpc3RlciwgcmVnVDEsIHJlZ1QwKTsK
KyAgICBlbWl0SnVtcFNsb3dUb0hvdChqdW1wKCksIE9QQ09ERV9MRU5HVEgob3BfY29udmVydF90
aGlzKSk7CiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfY29udmVydF90
aGlzKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMSwgcmVnVDApOwotICAgIHN0dWJD
YWxsLmNhbGwodGhpc1JlZ2lzdGVyKTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnZl
cnRfdGhpc19zdHJpY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKLXsKLSAgICB1bnNpZ25lZCB0aGlzUmVnaXN0
ZXIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIAorICAgIGlzTm90VW5k
ZWZpbmVkLmxpbmsodGhpcyk7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIAotICAgIEpJ
VFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KTsKKyAg
ICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfY29udmVydF90aGlzKTsKICAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMSwgcmVnVDApOwogICAgIHN0dWJDYWxsLmNhbGwodGhp
c1JlZ2lzdGVyKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDgsNiArNzA4LDE0IEBAIHZvaWQgSklUOjpl
bWl0X29wX3Jlc29sdmVfd2l0aF9iYXNlKEluc3QKICAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZl
X3dpdGhfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJVFN0
dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9yZXNvbHZlX3dpdGhfdGhpcyk7CisgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbVB0cigmbV9jb2RlQmxvY2stPmlkZW50aWZpZXIo
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgc3R1YkNh
bGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKK30KKwogdm9pZCBKSVQ6
OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX25ld19mdW5jX2V4cCk7CkBA
IC0xMTM2LDI1ICsxMTQ0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY29udmVydF90aGlzKEluc3Ry
dWN0aQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCwgcmVnVDApOwogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1Qw
KTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCByZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhy
ZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTmVl
ZHNUaGlzQ29udmVyc2lvbikpKTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRfb3BfY29udmVydF90aGlz
X3N0cmljdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDApOwot
ICAgIEp1bXAgbm90TnVsbCA9IGJyYW5jaFRlc3RQdHIoTm9uWmVybywgcmVnVDApOwotICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpKSwgcmVnVDApOwotICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwg
cmVnVDApOwotICAgIEp1bXAgc2V0VGhpcyA9IGp1bXAoKTsKLSAgICBub3ROdWxsLmxpbmsodGhp
cyk7Ci0gICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJl
Z1QxKTsKLSAgICBKdW1wIG5vdEFuT2JqZWN0ID0gYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmpl
Y3RUeXBlKSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhy
ZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTmVl
ZHNUaGlzQ29udmVyc2lvbikpKTsKLSAgICBpc0ltbWVkaWF0ZS5saW5rKHRoaXMpOwotICAgIG5v
dEFuT2JqZWN0LmxpbmsodGhpcyk7Ci0gICAgc2V0VGhpcy5saW5rKHRoaXMpOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9n
bG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9j
YWxsZWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTExOTksMTcgKzExODks
MTcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV9kaWRfY2FsbChJbnN0cgogCiB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfY29udmVydF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CisgICAgdm9pZCog
Z2xvYmFsVGhpcyA9IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsU2NvcGVDaGFp
bigpLT5nbG9iYWxUaGlzLmdldCgpOworCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3Bf
Y29udmVydF90aGlzKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgc3R1
YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKLX0KKyAgICBKdW1w
IGlzTm90VW5kZWZpbmVkID0gYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0
cihKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoZ2xvYmFsVGhpcyksIHJlZ1QwKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKyAgICBlbWl0SnVtcFNsb3dUb0hv
dChqdW1wKCksIE9QQ09ERV9MRU5HVEgob3BfY29udmVydF90aGlzKSk7CiAKLXZvaWQgSklUOjpl
bWl0U2xvd19vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCi17CisgICAgaXNO
b3RVbmRlZmluZWQubGluayh0aGlzKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklU
U3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2NvbnZlcnRfdGhpc19zdHJpY3QpOworICAg
IEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jb252ZXJ0X3RoaXMpOwogICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKICAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAJKHJldmlzaW9uIDkwOTM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyODAsMTkgKzEyODAsOSBAQCBERUZJ
TkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfCiAgICAgSlNWYWx1ZSB2MSA9IHN0
YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBz
dGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIEpTT2JqZWN0KiByZXN1bHQgPSB2MS50b1RoaXNP
YmplY3QoY2FsbEZyYW1lKTsKLSAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLX0KKyAgICBBU1NFUlQoIXYxLmlzQ2Vs
bCgpIHx8IHYxLmlzU3RyaW5nKCkpOwogCi1ERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNW
YWx1ZSwgb3BfY29udmVydF90aGlzX3N0cmljdCkKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJB
TUUoc3RhY2tGcmFtZSk7Ci0gICAgCi0gICAgSlNWYWx1ZSB2MSA9IHN0YWNrRnJhbWUuYXJnc1sw
XS5qc1ZhbHVlKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxG
cmFtZTsKLSAgICBBU1NFUlQodjEuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm5l
ZWRzVGhpc0NvbnZlcnNpb24oKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB2MS50b1N0cmljdFRo
aXNPYmplY3QoY2FsbEZyYW1lKTsKKyAgICBKU09iamVjdCogcmVzdWx0ID0gdjEudG9UaGlzT2Jq
ZWN0KGNhbGxGcmFtZSk7CiAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zMDM2LDYgKzMwMjYsNDggQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wXwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKIH0KIAorREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2Rl
ZEpTVmFsdWUsIG9wX3Jlc29sdmVfd2l0aF90aGlzKQoreworICAgIFNUVUJfSU5JVF9TVEFDS19G
UkFNRShzdGFja0ZyYW1lKTsKKworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFt
ZS5jYWxsRnJhbWU7CisgICAgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4gPSBjYWxsRnJhbWUt
PnNjb3BlQ2hhaW4oKTsKKworICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVyID0gc2NvcGVDaGFp
bi0+YmVnaW4oKTsKKyAgICBTY29wZUNoYWluSXRlcmF0b3IgZW5kID0gc2NvcGVDaGFpbi0+ZW5k
KCk7CisKKyAgICAvLyBGSVhNRTogYWRkIHNjb3BlRGVwdGhJc1plcm8gb3B0aW1pemF0aW9uCisK
KyAgICBBU1NFUlQoaXRlciAhPSBlbmQpOworCisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBzdGFj
a0ZyYW1lLmFyZ3NbMF0uaWRlbnRpZmllcigpOworICAgIEpTT2JqZWN0KiBiYXNlOworICAgIGRv
IHsKKyAgICAgICAgYmFzZSA9IGl0ZXItPmdldCgpOworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChiYXNlKTsKKyAgICAgICAgaWYgKGJhc2UtPmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIGlk
ZW50LCBzbG90KSkgeworICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVl
KGNhbGxGcmFtZSwgaWRlbnQpOworICAgICAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9F
TkQoKTsKKworICAgICAgICAgICAgLy8gQWxsIGVudHJpZXMgb24gdGhlIHNjb3BlIGNoYWluIHNo
b3VsZCBiZSBFbnZpcm9ubWVudFJlY29yZHMgKGFjdGl2YXRpb25zIGV0YyksCisgICAgICAgICAg
ICAvLyBvdGhlciB0aGVuICd3aXRoJyBvYmplY3QsIHdoaWNoIGFyZSBkaXJlY3RseSByZWZlcmVu
Y2VkIGZyb20gdGhlIHNjb3BlIGNoYWluLAorICAgICAgICAgICAgLy8gYW5kIHRoZSBnbG9iYWwg
b2JqZWN0LiBJZiB3ZSBoaXQgZWl0aGVyIGFuIEVudmlyb25tZW50UmVjb3JkIG9yIGEgZ2xvYmFs
CisgICAgICAgICAgICAvLyBvYmplY3QgYXQgdGhlIGVuZCBvZiB0aGUgc2NvcGUgY2hhaW4sIHRo
aXMgaXMgdW5kZWZpbmVkLiBJZiB3ZSBoaXQgYSBub24tCisgICAgICAgICAgICAvLyBFbnZpcm9u
bWVudFJlY29yZCB3aXRoaW4gdGhlIHNjb3BlIGNoYWluLCBwYXNzIHRoZSBiYXNlIGFzIHRoZSB0
aGlzIHZhbHVlLgorICAgICAgICAgICAgaWYgKGl0ZXIgPT0gZW5kIHx8IGJhc2UtPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLmlzRW52aXJvbm1lbnRSZWNvcmQoKSkKKyAgICAgICAgICAgICAgICBj
YWxsRnJhbWUtPnJlZ2lzdGVycygpW3N0YWNrRnJhbWUuYXJnc1sxXS5pbnQzMigpXSA9IGpzVW5k
ZWZpbmVkKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2FsbEZyYW1lLT5y
ZWdpc3RlcnMoKVtzdGFja0ZyYW1lLmFyZ3NbMV0uaW50MzIoKV0gPSBKU1ZhbHVlKGJhc2UpOwor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgICAgICB9Cisg
ICAgICAgICsraXRlcjsKKyAgICB9IHdoaWxlIChpdGVyICE9IGVuZCk7CisKKyAgICBzdGFja0Zy
YW1lLmdsb2JhbERhdGEtPmV4Y2VwdGlvbiA9IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3Io
Y2FsbEZyYW1lLCBpZGVudCk7CisgICAgVk1fVEhST1dfRVhDRVBUSU9OX0FUX0VORCgpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKK30KKwogREVGSU5FX1NUVUJfRlVO
Q1RJT04oSlNPYmplY3QqLCBvcF9uZXdfZnVuY19leHApCiB7CiAgICAgU1RVQl9JTklUX1NUQUNL
X0ZSQU1FKHN0YWNrRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
aAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw3ICszMjIsNiBAQCBleHRlcm4gIkMiIHsKICAgICBF
bmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfY29uc3RydWN0X05vdEpTQ29uc3RydWN0KFNU
VUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29w
X2NyZWF0ZV90aGlzKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUg
SklUX1NUVUIgY3RpX29wX2NvbnZlcnRfdGhpcyhTVFVCX0FSR1NfREVDTEFSQVRJT04pOwotICAg
IEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KFNUVUJf
QVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2Ny
ZWF0ZV9hcmd1bWVudHMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNvZGVkSlNWYWx1
ZSBKSVRfU1RVQiBjdGlfb3BfY3JlYXRlX2FyZ3VtZW50c19ub19wYXJhbXMoU1RVQl9BUkdTX0RF
Q0xBUkFUSU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfZGVsX2J5X2lk
KFNUVUJfQVJHU19ERUNMQVJBVElPTik7CkBAIC0zNzIsNiArMzcxLDcgQEAgZXh0ZXJuICJDIiB7
CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFt
aWMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBj
dGlfb3BfcmVzb2x2ZV9za2lwKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpT
VmFsdWUgSklUX1NUVUIgY3RpX29wX3Jlc29sdmVfd2l0aF9iYXNlKFNUVUJfQVJHU19ERUNMQVJB
VElPTik7CisgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX3Jlc29sdmVfd2l0aF90
aGlzKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIg
Y3RpX29wX3JzaGlmdChTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIEVuY29kZWRKU1ZhbHVl
IEpJVF9TVFVCIGN0aV9vcF9zdHJjYXQoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNv
ZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3Bfc3RyaWN0ZXEoU1RVQl9BUkdTX0RFQ0xBUkFUSU9O
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5o
CShyZXZpc2lvbiA5MDkzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0
aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBB
bm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IE5lZWRzVGhpc0NvbnZlcnNpb24gfCBPdmVycmlkZXNWaXNpdENoaWxkcmVu
IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTVmFyaWFibGVPYmplY3Q6OlN0cnVjdHVy
ZUZsYWdzOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBJ
c0Vudmlyb25tZW50UmVjb3JkIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU1ZhcmlhYmxl
T2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgc3lt
Ym9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3Qu
aAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
YXRpY1Njb3BlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNw
YWNlIEpTQ3sKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsgfQogCiAgICAgcHJvdGVjdGVkOgot
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBOZWVkc1RoaXNDb252ZXJzaW9uIHwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU1ZhcmlhYmxlT2JqZWN0OjpT
dHJ1Y3R1cmVGbGFnczsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gSXNFbnZpcm9ubWVudFJlY29yZCB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNW
YXJpYWJsZU9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgogICAgICAgICBT
eW1ib2xUYWJsZSBtX3N5bWJvbFRhYmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiA5MDkzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyOCw3ICszMjgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5
cGVJbmZvKFN0cmluZ1R5cGUsIE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE5lZWRzVGhp
c0NvbnZlcnNpb24pLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOworICAgICAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhTdHJp
bmdUeXBlLCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QpLCBBbm9ueW1vdXNTbG90Q291bnQs
ICZzX2luZm8pOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xh
c3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVJbmZvLmgJKHJldmlzaW9uIDkwOTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbXBsZW1lbnRzSGFzSW5zdGFuY2Ug
PSAxIDw8IDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE92ZXJyaWRlc0hhc0luc3RhbmNl
ID0gMSA8PCAyOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbXBsZW1lbnRzRGVmYXVsdEhh
c0luc3RhbmNlID0gMSA8PCAzOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBOZWVkc1RoaXND
b252ZXJzaW9uID0gMSA8PCA0OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJc0Vudmlyb25t
ZW50UmVjb3JkID0gMSA8PCA0OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgPSAxIDw8IDU7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gPSAxIDw8IDY7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgPSAxIDw8IDc7CkBAIC02NCw4ICs2NCw4IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpIGNv
bnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOyB9CiAgICAgICAg
IGJvb2wgaW1wbGVtZW50c0hhc0luc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIElt
cGxlbWVudHNIYXNJbnN0YW5jZTsgfQorICAgICAgICBib29sIGlzRW52aXJvbm1lbnRSZWNvcmQo
KSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgSXNFbnZpcm9ubWVudFJlY29yZDsgfQogICAgICAg
ICBib29sIG92ZXJyaWRlc0hhc0luc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIE92
ZXJyaWRlc0hhc0luc3RhbmNlOyB9Ci0gICAgICAgIGJvb2wgbmVlZHNUaGlzQ29udmVyc2lvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBOZWVkc1RoaXNDb252ZXJzaW9uOyB9CiAgICAgICAg
IGJvb2wgb3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkgY29uc3QgeyByZXR1cm4gbV9mbGFn
cyAmIE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsgfQogICAgICAgICBib29sIG92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbjsgfQogICAgICAgICBib29sIG92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMoKSBjb25z
dCB7IHJldHVybiBtX2ZsYWdzICYgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2aXNpb24gOTA5MzYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIwNiw3ICsyMDYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBwdXREaXJl
Y3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdm9pZCBwdXQoRXhlY1N0YXRlKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKIAotICAgICAgICBib29sIG5lZWRzVGhpc0NvbnZlcnNp
b24oKSBjb25zdDsKICAgICAgICAgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBj
b25zdDsKICAgICAgICAgSlNWYWx1ZSB0b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRlKikgY29u
c3Q7CiAgICAgICAgIFVTdHJpbmcgdG9UaGlzU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3Qu
aAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
cmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRQcm9wZXJ0eU5h
bWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNOb25G
aW5hbE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICAgICAgSlNWYXJpYWJsZU9iamVjdChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTeW1ib2xUYWJs
ZSogc3ltYm9sVGFibGUsIFJlZ2lzdGVyKiByZWdpc3RlcnMpCiAgICAgICAgICAgICA6IEpTTm9u
RmluYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCShyZXZpc2lv
biA5MDkzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3Rp
dmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDE0IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYp
OwogICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsK
ICAgICB2aXJ0dWFsIEpTVmFsdWUgdG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0
OworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CisgICAgfQor
ICAgIAorcHJvdGVjdGVkOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IElzRW52aXJvbm1lbnRSZWNvcmQgfCBKU05vbkZpbmFsT2JqZWN0OjpTdHJ1Y3R1cmVGbGFn
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDkwOTM2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4OSwxMyArMjg5
LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBqc051bGwoKSwgVHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKSwgQW5vbnltb3Vz
U2xvdENvdW50LCAmc19kdW1teUNlbGxJbmZvKTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBK
U1ZhbHVlOjpuZWVkc1RoaXNDb252ZXJzaW9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChV
TkxJS0VMWSghaXNDZWxsKCkpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHJl
dHVybiBhc0NlbGwoKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkubmVlZHNUaGlzQ29udmVyc2lv
bigpOwotICAgIH0KLQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBNYXJrU3RhY2s6OmludGVybmFs
QXBwZW5kKEpTQ2VsbCogY2VsbCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9pc0NoZWNraW5n
Rm9yRGVmYXVsdE1hcmtWaW9sYXRpb24pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL21vemlsbGEvZWNtYS9TdHJpbmcvMTUuNS40LjYtMi5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW96aWxsYS9lY21hL1N0cmluZy8xNS41LjQuNi0yLmpz
CShyZXZpc2lvbiA5MDkzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxh
L2VjbWEvU3RyaW5nLzE1LjUuNC42LTIuanMJKHdvcmtpbmcgY29weSkKQEAgLTE4NCwxMCArMTg0
LDExIEBAIGZ1bmN0aW9uIGdldFRlc3RDYXNlcygpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoInZh
ciBvYmogPSBuZXcgT2JqZWN0KCk7IG9iai5pbmRleE9mID0gU3RyaW5nLnByb3RvdHlwZS5pbmRl
eE9mOyBvYmouaW5kZXhPZignYmplY3QnKSIpICk7CiAKLSAgICBhcnJheVtpdGVtKytdID0gbmV3
IFRlc3RDYXNlKCBTRUNUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2
YXIgZiA9IG5ldyBPYmplY3QoIFN0cmluZy5wcm90b3R5cGUuaW5kZXhPZiApOyBmKCciK0dMT0JB
TCsiJykiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCgidmFyIGYgPSBuZXcgT2JqZWN0KCBTdHJpbmcu
cHJvdG90eXBlLmluZGV4T2YgKTsgZignIitHTE9CQUwrIicpIikgKTsKKy8vIFRoaXMgY29ycmVj
dGx5IHRocm93cywgZHVlIHRvIEVTNSAxNS41LjQuNyBzdGVwIDEKKy8vICAgIGFycmF5W2l0ZW0r
K10gPSBuZXcgVGVzdENhc2UoIFNFQ1RJT04sCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAidmFyIGYgPSBuZXcgT2JqZWN0KCBTdHJpbmcucHJvdG90eXBlLmluZGV4T2YgKTsg
ZignIitHTE9CQUwrIicpIiwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKCJ2YXIgZiA9IG5ldyBP
YmplY3QoIFN0cmluZy5wcm90b3R5cGUuaW5kZXhPZiApOyBmKCciK0dMT0JBTCsiJykiKSApOwog
CiAgICAgYXJyYXlbaXRlbSsrXSA9IG5ldyBUZXN0Q2FzZSggU0VDVElPTiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAidmFyIGYgPSBuZXcgRnVuY3Rpb24oKTsgZi50b1N0cmlu
ZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7IGYuaW5kZXhPZiA9IFN0cmluZy5wcm90b3R5
cGUuaW5kZXhPZjsgZi5pbmRleE9mKCdbb2JqZWN0IEZ1bmN0aW9uXScpIiwKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDkxMDIwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTEtMDctMTQgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91
Z2hAYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NDI1MAorICAgICAgICBHbG9iYWwgc3RyaWN0IG1vZGUgZnVuY3Rpb24gbGVha2lu
ZyBnbG9iYWwgb2JqZWN0IGFzICJ0aGlzIi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBjYXNlIC8gdXBkYXRlIHRlc3QgcmVzdWx0cy4K
KworICAgICAgICAqIGZhc3QvanMvY2FsbC1iYXNlLXJlc29sdXRpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2NhbGwtYmFzZS1yZXNvbHV0aW9uLmh0bWw6IEFkZGVk
LgorICAgICAgICAgICAgLSBBZGQgdGVzdCBmb3IgRVM1IGNvcnJlY3QgdGhpcyB2YWx1ZSByZXNv
bHV0aW9uIGluIGNhbGxzLgorICAgICAgICAqIHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZl
X09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xMF9TdHJpbmcucHJvdG90eXBlLm1h
dGNoL1MxNS41LjQuMTBfQTFfVDMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHNwdXRuaWsvQ29u
Zm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xMl9T
dHJpbmcucHJvdG90eXBlLnNlYXJjaC9TMTUuNS40LjEyX0ExX1QzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5n
LzE1LjUuNC8xNS41LjQuMTNfU3RyaW5nLnByb3RvdHlwZS5zbGljZS9TMTUuNS40LjEzX0ExX1Qz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9P
YmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTRfU3RyaW5nLnByb3RvdHlwZS5zcGxp
dC9TMTUuNS40LjE0X0ExX1QzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzcHV0bmlrL0NvbmZv
cm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTVfU3Ry
aW5nLnByb3RvdHlwZS5zdWJzdHJpbmcvUzE1LjUuNC4xNV9BMV9UMy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmlu
Zy8xNS41LjQvMTUuNS40LjRfU3RyaW5nLnByb3RvdHlwZS5jaGFyQXQvUzE1LjUuNC40X0ExX1Qz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9P
YmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuNV9TdHJpbmcucHJvdG90eXBlLmNoYXJD
b2RlQXQvUzE1LjUuNC41X0ExX1QzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzcHV0bmlrL0Nv
bmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuNl9T
dHJpbmcucHJvdG90eXBlLmNvbmNhdC9TMTUuNS40LjZfQTFfVDMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcv
MTUuNS40LzE1LjUuNC43X1N0cmluZy5wcm90b3R5cGUuaW5kZXhPZi9TMTUuNS40LjdfQTFfVDMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09i
amVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC44X1N0cmluZy5wcm90b3R5cGUubGFzdElu
ZGV4T2YvUzE1LjUuNC44X0ExX1QzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgICAgIC0gQ2hlY2sg
aW4gZmFpbGluZyByZXN1bHRzIGZvciB0aGVzZSB0ZXN0cyAtIHRoZXNlIHRlc3RzIHdlcmUgYXNz
ZXJ0aW5nIGluY29ycmVjdCBiZWhhdmlvdXIsCisgICAgICAgICAgICAgIGFuZCBoYXZlIHNpbmNl
IGJlZW4gZml4ZWQgaW4gdGVzdC0yNjIsIHNlZSBodHRwczovL2J1Z3MuZWNtYXNjcmlwdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNworCiAyMDExLTA3LTE0ICBWaW5jZW50IFNjaGVpYiAgPHNjaGVp
YkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSB1cGRhdGVkIHRlc3QgZXhwZWN0
YXRpb25zLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9jYWxsLWJhc2UtcmVzb2x1dGlvbi1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9jYWxsLWJhc2Ut
cmVzb2x1dGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL2NhbGwtYmFzZS1yZXNvbHV0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1IEBACitQQVNTIG9vYW9ib2FidXVhdWJ1YWIgc2hvdWxkIGJlIG9vYW9ib2FidXVhdWJ1
YWIsIGFuZCBpcy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2NhbGwtYmFzZS1yZXNvbHV0aW9uLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9jYWxsLWJhc2UtcmVzb2x1dGlv
bi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9jYWxsLWJhc2UtcmVz
b2x1dGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKyAgPHNjcmlwdD4KKyAgICB3aW5kb3cubmFtZSA9ICJvIjsKKyAgICBmdW5jdGlvbiBmKCkg
eyAKKyAgICAgIHJldHVybiB0aGlzLm5hbWU7CisgICAgfQorICAgIGZ1bmN0aW9uIGcoKSB7IAor
ICAgICAgInVzZSBzdHJpY3QiOworICAgICAgcmV0dXJuIHRoaXMgPyB0aGlzLm5hbWUgOiAidSI7
CisgICAgfQorICA8L3NjcmlwdD4KKworICA8aWZyYW1lIG5hbWU9ImkiIAorICAgIHNyYz0iamF2
YXNjcmlwdDoKKworICAgICAgICB3aW5kb3cuZiA9IHBhcmVudC5mOworICAgICAgICB3aW5kb3cu
ZyA9IHBhcmVudC5nOworICAgICAgICB3aW5kb3cuYSA9IHsgbmFtZTonYScsIGY6cGFyZW50LmYs
IGc6cGFyZW50LmcgfTsKKyAgICAgICAgd2luZG93LmIgPSB7IG5hbWU6J2InLCBmOnBhcmVudC5m
LCBnOnBhcmVudC5nIH07CisKKyAgICAgICAgdmFyIHJlc3VsdHMgPSAnJzsKKworICAgICAgICAv
KiBUaHJlZSBvZiB0aGUgZmlyc3QgZm91ciBjYXNlcyBwYXNzIHVuZGVmaW5lZCAocHJvbW90ZWQg
aW5zaWRlIHRoZSBjYWxsZWUgdG8gdGhlIGNhbGxlZSdzIGdsb2JhbCBvYmplY3QpLiAqLworICAg
ICAgICAvKiBhLmYoKSBpcyB0aGUgb25lIGV4Y2VwdGlvbiwgd2hpY2ggcGFzc2VzIHRoZSBiYXNl
LCBhLCBhcyB0aGUgdGhpcyBvYmplY3QuICovCisgICAgICAgIHJlc3VsdHMgKz0gKGZ1bmN0aW9u
KCl7cmV0dXJuIGYoKTt9KSgpOworICAgICAgICByZXN1bHRzICs9IChmdW5jdGlvbigpe3JldHVy
biAoMSxmKSgpO30pKCk7CisgICAgICAgIHJlc3VsdHMgKz0gKGZ1bmN0aW9uKCl7cmV0dXJuIGEu
ZigpO30pKCk7CisgICAgICAgIHJlc3VsdHMgKz0gKGZ1bmN0aW9uKCl7cmV0dXJuIGV2YWwoJ2Yo
KScpO30pKCk7CisgICAgICAgIC8qIFNhbWUgY2FzZXMgYXMgYWJvdmUsIGJ1dCB3cmFwcGVkIGlu
IGEgd2l0aC4gVGhlIGZpcnN0ICYgbGFzdCBvZiB0aGVzZSBjYXNlcyBwYXNzIGIsICovCisgICAg
ICAgIC8qIHRoZSBvYmplY3Qgc2NvcGVkIGJ5IHRoZSB3aXRoLCBhcyB0aGUgdGhpcyB2YWx1ZS4g
Ki8KKyAgICAgICAgLyogYS5mKCkgc3RpbGwgcGFzc2VzIHRoZSBleHBsaWNpdCBiYXNlLCBhLiAo
MSxmKSgpIGlzIGEgbGl0dGxlIHRyaWNrc2llciAtIHRoaXMgcGFzc2VzICovCisgICAgICAgIC8q
IHVuZGVmaW5lZCAocHJvbW90ZWQgdG8gdGhlIGNhbGxlZSBnbG9iYWwgb2JqZWN0KSBzaW5jZSB0
ZWggY29tbWEgb3BlcmF0b3IgY2FsbGVzIEdldFZhbHVlICovCisgICAgICAgIC8qIG9uIHRoZSBy
ZWZlcmVuY2UgKHNlZSBFUzUgMTEuMTQuKSAqLworICAgICAgICByZXN1bHRzICs9IChmdW5jdGlv
bigpe3dpdGgoYil7IHJldHVybiAoZnVuY3Rpb24oKXsgcmV0dXJuIGYoKTt9KSgpOyB9fSkoKTsK
KyAgICAgICAgcmVzdWx0cyArPSAoZnVuY3Rpb24oKXt3aXRoKGIpeyByZXR1cm4gKGZ1bmN0aW9u
KCl7IHJldHVybiAoMSxmKSgpO30pKCk7IH19KSgpOworICAgICAgICByZXN1bHRzICs9IChmdW5j
dGlvbigpe3dpdGgoYil7IHJldHVybiAoZnVuY3Rpb24oKXsgcmV0dXJuIGEuZigpO30pKCk7IH19
KSgpOworICAgICAgICByZXN1bHRzICs9IChmdW5jdGlvbigpe3dpdGgoYil7IHJldHVybiAoZnVu
Y3Rpb24oKXsgcmV0dXJuIGV2YWwoJ2YoKScpO30pKCk7IH19KSgpOworCisgICAgICAgIC8qIFNh
bWUgdGVzdHMgYXMgYWJvdmUsIGJ1dCB3aXRoIGEgc3RyaWN0IGNhbGxlZS4gKi8KKyAgICAgICAg
LyogV2UgZXhwZWN0IHRoZSBzYW1lIHJlc3VsdHMsIGV4Y2VwdCB1bmRlZmluZWQgdGhpcyBpcyBu
b3QgcmVwbGFjZWQgd2l0aCB0aGUgZ2xvYmFsIG9iamVjdC4gKi8KKyAgICAgICAgcmVzdWx0cyAr
PSAoZnVuY3Rpb24oKXtyZXR1cm4gZygpO30pKCk7CisgICAgICAgIHJlc3VsdHMgKz0gKGZ1bmN0
aW9uKCl7cmV0dXJuICgxLGcpKCk7fSkoKTsKKyAgICAgICAgcmVzdWx0cyArPSAoZnVuY3Rpb24o
KXtyZXR1cm4gYS5nKCk7fSkoKTsKKyAgICAgICAgcmVzdWx0cyArPSAoZnVuY3Rpb24oKXtyZXR1
cm4gZXZhbCgnZygpJyk7fSkoKTsKKyAgICAgICAgcmVzdWx0cyArPSAoZnVuY3Rpb24oKXt3aXRo
KGIpeyByZXR1cm4gZygpOyB9fSkoKTsKKyAgICAgICAgcmVzdWx0cyArPSAoZnVuY3Rpb24oKXt3
aXRoKGIpeyByZXR1cm4gKDEsZykoKTsgfX0pKCk7CisgICAgICAgIHJlc3VsdHMgKz0gKGZ1bmN0
aW9uKCl7d2l0aChiKXsgcmV0dXJuIGEuZygpOyB9fSkoKTsKKyAgICAgICAgcmVzdWx0cyArPSAo
ZnVuY3Rpb24oKXt3aXRoKGIpeyByZXR1cm4gKGZ1bmN0aW9uKCl7IHJldHVybiBldmFsKCdnKCkn
KTt9KSgpOyB9fSkoKTsKKworICAgICAgICB2YXIgZXhwZWN0ZWQgPSAnb29hb2JvYWJ1dWF1YnVh
Yic7CisKKyAgICAgICAgaWYgKHJlc3VsdHMgPT0gZXhwZWN0ZWQpCisgICAgICAgICAgICBwYXJl
bnQudGVzdFBhc3NlZChyZXN1bHRzICsgJyBzaG91bGQgYmUgJyArIGV4cGVjdGVkICsgJywgYW5k
IGlzLicpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXJlbnQudGVzdEZhaWxlZChyZXN1
bHRzICsgJyBzaG91bGQgYmUgJyArIGV4cGVjdGVkICsgJywgYnV0IHdhcyBub3QuJyk7CisgICAg
ICAgIHBhcmVudC5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgICI+CisgIDwvaWZyYW1l
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1
X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuNF9TdHJpbmcucHJvdG90
eXBlLmNoYXJBdC9TMTUuNS40LjRfQTFfVDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJp
bmcvMTUuNS40LzE1LjUuNC40X1N0cmluZy5wcm90b3R5cGUuY2hhckF0L1MxNS41LjQuNF9BMV9U
My1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkwOTM2KQorKysgTGF5b3V0VGVzdHMvc3B1dG5pay9D
b25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjRf
U3RyaW5nLnByb3RvdHlwZS5jaGFyQXQvUzE1LjUuNC40X0ExX1QzLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIFMxNS41LjQuNF9BMV9UMwogCi1QQVNTIAorRkFJ
TCBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRU
ZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1
LjUuNC8xNS41LjQuNV9TdHJpbmcucHJvdG90eXBlLmNoYXJDb2RlQXQvUzE1LjUuNC41X0ExX1Qz
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1h
bmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuNV9TdHJpbmcu
cHJvdG90eXBlLmNoYXJDb2RlQXQvUzE1LjUuNC41X0ExX1QzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gOTA5MzYpCisrKyBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9P
YmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuNV9TdHJpbmcucHJvdG90eXBlLmNoYXJD
b2RlQXQvUzE1LjUuNC41X0ExX1QzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIFMxNS41LjQuNV9BMV9UMwogCi1QQVNTIAorRkFJTCBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZv
cm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuNl9TdHJp
bmcucHJvdG90eXBlLmNvbmNhdC9TMTUuNS40LjZfQTFfVDMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMv
MTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC42X1N0cmluZy5wcm90b3R5cGUuY29uY2F0L1MxNS41
LjQuNl9BMV9UMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkwOTM2KQorKysgTGF5b3V0VGVzdHMv
c3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQv
MTUuNS40LjZfU3RyaW5nLnByb3RvdHlwZS5jb25jYXQvUzE1LjUuNC42X0ExX1QzLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIFMxNS41LjQuNl9BMV9UMwogCi1Q
QVNTIAorRkFJTCBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIAogVEVTVCBDT01QTEVURQogCkluZGV4
OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVf
U3RyaW5nLzE1LjUuNC8xNS41LjQuN19TdHJpbmcucHJvdG90eXBlLmluZGV4T2YvUzE1LjUuNC43
X0ExX1QzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zcHV0bmlrL0Nv
bmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuN19T
dHJpbmcucHJvdG90eXBlLmluZGV4T2YvUzE1LjUuNC43X0ExX1QzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gOTA5MzYpCisrKyBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2
ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuN19TdHJpbmcucHJvdG90eXBlLmlu
ZGV4T2YvUzE1LjUuNC43X0ExX1QzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIFMxNS41LjQuN19BMV9UMwogCi1QQVNTIAorRkFJTCBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZv
cm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuOF9TdHJp
bmcucHJvdG90eXBlLmxhc3RJbmRleE9mL1MxNS41LjQuOF9BMV9UMy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2Jq
ZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjhfU3RyaW5nLnByb3RvdHlwZS5sYXN0SW5k
ZXhPZi9TMTUuNS40LjhfQTFfVDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MDkzNikKKysrIExh
eW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJp
bmcvMTUuNS40LzE1LjUuNC44X1N0cmluZy5wcm90b3R5cGUubGFzdEluZGV4T2YvUzE1LjUuNC44
X0ExX1QzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIFMxNS41
LjQuOF9BMV9UMwogCi1QQVNTIAorRkFJTCBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIAogVEVTVCBD
T01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2
ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTBfU3RyaW5nLnByb3RvdHlwZS5t
YXRjaC9TMTUuNS40LjEwX0ExX1QzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1
LjUuNC8xNS41LjQuMTBfU3RyaW5nLnByb3RvdHlwZS5tYXRjaC9TMTUuNS40LjEwX0ExX1QzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gOTA5MzYpCisrKyBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZv
cm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTBfU3Ry
aW5nLnByb3RvdHlwZS5tYXRjaC9TMTUuNS40LjEwX0ExX1QzLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIFMxNS41LjQuMTBfQTFfVDMKIAotUEFTUyAKK0ZBSUwg
VHlwZUVycm9yOiBUeXBlIGVycm9yCiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVz
dHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41
LjQvMTUuNS40LjEyX1N0cmluZy5wcm90b3R5cGUuc2VhcmNoL1MxNS41LjQuMTJfQTFfVDMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2Uv
MTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xMl9TdHJpbmcucHJv
dG90eXBlLnNlYXJjaC9TMTUuNS40LjEyX0ExX1QzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTA5
MzYpCisrKyBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3Rz
LzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTJfU3RyaW5nLnByb3RvdHlwZS5zZWFyY2gvUzE1
LjUuNC4xMl9BMV9UMy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiBTMTUuNS40LjEyX0ExX1QzCiAKLVBBU1MgCitGQUlMIFR5cGVFcnJvcjogVHlwZSBlcnJvcgog
CiBURVNUIENPTVBMRVRFCiAKSW5kZXg6IExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2Uv
MTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xM19TdHJpbmcucHJv
dG90eXBlLnNsaWNlL1MxNS41LjQuMTNfQTFfVDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9T
dHJpbmcvMTUuNS40LzE1LjUuNC4xM19TdHJpbmcucHJvdG90eXBlLnNsaWNlL1MxNS41LjQuMTNf
QTFfVDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MDkzNikKKysrIExheW91dFRlc3RzL3NwdXRu
aWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUu
NC4xM19TdHJpbmcucHJvdG90eXBlLnNsaWNlL1MxNS41LjQuMTNfQTFfVDMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogUzE1LjUuNC4xM19BMV9UMwogCi1QQVNT
IAorRkFJTCBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBM
YXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3Ry
aW5nLzE1LjUuNC8xNS41LjQuMTRfU3RyaW5nLnByb3RvdHlwZS5zcGxpdC9TMTUuNS40LjE0X0Ex
X1QzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZv
cm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTRfU3Ry
aW5nLnByb3RvdHlwZS5zcGxpdC9TMTUuNS40LjE0X0ExX1QzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gOTA5MzYpCisrKyBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9P
YmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTRfU3RyaW5nLnByb3RvdHlwZS5zcGxp
dC9TMTUuNS40LjE0X0ExX1QzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIFMxNS41LjQuMTRfQTFfVDMKIAotUEFTUyAKK0ZBSUwgVHlwZUVycm9yOiBUeXBlIGVy
cm9yCiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3Jt
YW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjE1X1N0cmlu
Zy5wcm90b3R5cGUuc3Vic3RyaW5nL1MxNS41LjQuMTVfQTFfVDMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVj
dHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xNV9TdHJpbmcucHJvdG90eXBlLnN1YnN0cmlu
Zy9TMTUuNS40LjE1X0ExX1QzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTA5MzYpCisrKyBMYXlv
dXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5n
LzE1LjUuNC8xNS41LjQuMTVfU3RyaW5nLnByb3RvdHlwZS5zdWJzdHJpbmcvUzE1LjUuNC4xNV9B
MV9UMy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBTMTUuNS40
LjE1X0ExX1QzCiAKLVBBU1MgCitGQUlMIFR5cGVFcnJvcjogVHlwZSBlcnJvcgogCiBURVNUIENP
TVBMRVRFCiAK
</data>
<flag name="review"
          id="95607"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100875</attachid>
            <date>2011-07-14 15:30:57 -0700</date>
            <delta_ts>2011-07-15 12:00:06 -0700</delta_ts>
            <desc>Fix for global object getter/setter properties, added test case &amp; ASSERT in JSC::call to guard against global object being passed.</desc>
            <filename>64250.2.patch</filename>
            <type>text/plain</type>
            <size>56988</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTEwMjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOTcgQEAK
KzIwMTEtMDctMTQgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDI1MAor
ICAgICAgICBHbG9iYWwgc3RyaWN0IG1vZGUgZnVuY3Rpb24gbGVha2luZyBnbG9iYWwgb2JqZWN0
IGFzICJ0aGlzIi4KKworICAgICAgICBUaGUgcm9vdCBwcm9ibGVtIGhlcmUgaXMgdGhhdCB3ZSBw
YXNzIHRoZSB3cm9uZyB2YWx1ZXMgaW50bworICAgICAgICBjYWxscywgYW5kIHRoZW4gdHJ5IHRv
IGZpeCB0aGVtIHVwIGluIHRoZSBjYWxsZWUuIENvcnJlY3QKKyAgICAgICAgYmVoYXZpb3VyIHBl
ciB0aGUgc3BlYyBpcyB0byBwYXNzIGluIHRoZSB2YWx1ZSB1bmRlZmluZWQsCisgICAgICAgIGFz
IHRoaXMgdW5sZXNzIGVpdGhlciAoMSkgdGhlIGZ1bmN0aW9uIGNhbGwgaXMgYmFzZWQgb24gYW4K
KyAgICAgICAgZXhwbGljaXQgcHJvcGVydHkgYWNjZXNzIG9yICgyKSB0aGUgYmFzZSBvZiB0aGUg
Y2FsbCBjb21lcworICAgICAgICBkaXJlY3RseSBmcm9tIGEgJ3dpdGgnLgorCisgICAgICAgIFRo
aXMgY2hhbmdlIGRvZXMgYXdheSB3aXRoIHRoZSBuZWVkIGZvciB0aGlzIGNvbnZlcnNpb24gb2YK
KyAgICAgICAgb2JqZWN0cyAobm9uIHN0cmljdCBjb2RlIHNob3VsZCBvbmx5IGJveCBwcmltaXRp
dmVzKSwgYW5kCisgICAgICAgIGRvZXMgYXdheSB3aXRoIGFsbCB0aGlzIGNvbnZlcnNpb24gZm9y
IHN0cmljdCBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYXkgaGF2ZSB3ZWIgY29t
cGF0aWJpbGl0eSByYW1pZmljYXRpb25zLCBhbmQgbWF5CisgICAgICAgIHJlcXVpcmUgc29tZSBh
ZHZvY2FjeS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVt
cCk6CisgICAgICAgICAgICAtIFJlbW92ZWQgb3BfY29udmVydF90aGlzX3N0cmljdCwgYWRkZWQg
b3BfcmVzb2x2ZV93aXRoX3RoaXMuCisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAg
ICAgICAgICAtIFJlbW92ZWQgb3BfY29udmVydF90aGlzX3N0cmljdCwgYWRkZWQgb3BfcmVzb2x2
ZV93aXRoX3RoaXMuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgor
ICAgICAgICAgICAgLSBSZW1vdmVkIG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIGFkZGVkIG9wX3Jl
c29sdmVfd2l0aF90aGlzLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAgICAgLSBSZW1vdmVkIG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIGFkZGVk
IG9wX3Jlc29sdmVfd2l0aF90aGlzLgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwOgorICAgICAgICAoSlNDOjpFdmFsRnVuY3Rpb25DYWxsTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgICAgICAtIFJlbW92ZWQgb3BfY29udmVydF90aGlzX3N0cmljdCwgYWRkZWQgb3Bf
cmVzb2x2ZV93aXRoX3RoaXMuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICAg
ICAtIENoYW5nZSBOZWVkc1RoaXNDb252ZXJzaW9uIGNoZWNrIHRvIHRlc3QgZm9yIEpTU3RyaW5n
J3MgdnB0cgorICAgICAgICAgICAgICAob2JqZWN0cyBubyBsb25nZXIgbmVlZCBjb252ZXJzaW9u
KS4KKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpyZXNvbHZlVGhpc0FuZFByb3BlcnR5KToKKyAgICAgICAgICAgIC0gQmFz
ZWQgb24gcmVzb2x2ZUJhc2VBbmRQcm9wZXJ0eSwgYnV0IHByb2R1Y2UgY29ycmVjdCB0aGlzIHZh
bHVlLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAg
ICAgICAgLSBSZW1vdmVkIG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIGFkZGVkIG9wX3Jlc29sdmVf
d2l0aF90aGlzLgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAg
ICAgICAgLSBSZW1vdmVkIG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIGFkZGVkIG9wX3Jlc29sdmVf
d2l0aF90aGlzLgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rl
cy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX3dpdGhfdGhpcyk6Cisg
ICAgICAgICAgICAtIFJlbW92ZWQgb3BfY29udmVydF90aGlzX3N0cmljdCwgYWRkZWQgb3BfcmVz
b2x2ZV93aXRoX3RoaXMuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXMp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NvbnZlcnRfdGhpcyk6CisgICAgICAg
ICAgICAtIENoYW5nZSBOZWVkc1RoaXNDb252ZXJzaW9uIGNoZWNrIHRvIHRlc3QgZm9yIEpTU3Ry
aW5nJ3MgdnB0cgorICAgICAgICAgICAgICAob2JqZWN0cyBubyBsb25nZXIgbmVlZCBjb252ZXJz
aW9uKS4KKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3Jlc29sdmVfd2l0aF90aGlzKToKKyAgICAgICAgICAgIC0gUmVtb3ZlZCBv
cF9jb252ZXJ0X3RoaXNfc3RyaWN0LCBhZGRlZCBvcF9yZXNvbHZlX3dpdGhfdGhpcy4KKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2NvbnZlcnRfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfY29udmVydF90aGlzKToKKyAgICAgICAgICAgIC0gQ2hhbmdlIE5lZWRzVGhp
c0NvbnZlcnNpb24gY2hlY2sgdG8gdGVzdCBmb3IgSlNTdHJpbmcncyB2cHRyCisgICAgICAgICAg
ICAgIChvYmplY3RzIG5vIGxvbmdlciBuZWVkIGNvbnZlcnNpb24pLgorICAgICAgICAqIGppdC9K
SVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAg
ICAgICAgIC0gUmVtb3ZlZCBvcF9jb252ZXJ0X3RoaXNfc3RyaWN0LCBhZGRlZCBvcF9yZXNvbHZl
X3dpdGhfdGhpcy4KKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAgICAgIC0gUmVt
b3ZlZCBvcF9jb252ZXJ0X3RoaXNfc3RyaWN0LCBhZGRlZCBvcF9yZXNvbHZlX3dpdGhfdGhpcy4K
KyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAgICAgLSByZW1vdmVk
IE5lZWRzVGhpc0NvbnZlcnNpb24gZmxhZywgYWRkZWQgSXNFbnZpcm9ubWVudFJlY29yZC4KKyAg
ICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaDoKKyAgICAgICAgICAgIC0gcmVt
b3ZlZCBOZWVkc1RoaXNDb252ZXJzaW9uIGZsYWcsIGFkZGVkIElzRW52aXJvbm1lbnRSZWNvcmQu
CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRl
cjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgICAgIC0gcmVtb3ZlZCBOZWVkc1RoaXNDb252
ZXJzaW9uLgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAoSlNDOjpU
eXBlSW5mbzo6aXNFbnZpcm9ubWVudFJlY29yZCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpv
dmVycmlkZXNIYXNJbnN0YW5jZSk6CisgICAgICAgICAgICAtIHJlbW92ZWQgTmVlZHNUaGlzQ29u
dmVyc2lvbiBmbGFnLCBhZGRlZCBJc0Vudmlyb25tZW50UmVjb3JkLgorICAgICAgICAqIHJ1bnRp
bWUvSlNWYWx1ZS5oOgorICAgICAgICAgICAgLSByZW1vdmVkIE5lZWRzVGhpc0NvbnZlcnNpb24u
CisgICAgICAgICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAgICAgICAtIENv
cnJlY3RlZCBTdHJ1Y3R1cmVGbGFncyBpbmhlcml0YW5jZS4KKyAgICAgICAgKiBydW50aW1lL1N0
cmljdEV2YWxBY3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAgICAgLSBBZGRlZCBJc0Vudmlyb25tZW50UmVj
b3JkIHRvIFN0cnVjdHVyZUZsYWdzLCBhZGRkZWQgY3JlYXRlU3RydWN0dXJlLgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICAgICAtIHJlbW92ZWQgTmVlZHNUaGlzQ29u
dmVyc2lvbi4KKyAgICAgICAgKiB0ZXN0cy9tb3ppbGxhL2VjbWEvU3RyaW5nLzE1LjUuNC42LTIu
anM6CisgICAgICAgIChnZXRUZXN0Q2FzZXMpOgorICAgICAgICAgICAgLSBSZW1vdmVkIGludmFs
aWQgdGVzdCBjYXNlLgorCiAyMDExLTA3LTE0ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBBZGQgT3duUHRyIHNwZWNpYWxpemF0aW9uIGZvciBF
Y29yZV9QaXBlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAJKHJldmlzaW9uIDkwOTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMiwxMSArNTIyLDYgQEAgdm9p
ZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgcHJpbnRm
KCJbJTRkXSBjb252ZXJ0X3RoaXMgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNl
IG9wX2NvbnZlcnRfdGhpc19zdHJpY3Q6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBjb252ZXJ0X3RoaXNfc3RyaWN0
ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfb2JqZWN0OiB7CiAg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHByaW50
ZigiWyU0ZF0gbmV3X29iamVjdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCkpOwpAQCAtODAzLDYgKzc5OCwxMyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChF
eGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludGYoIlslNGRdIHJlc29sdmVfd2l0
aF9iYXNlICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRp
ZmllcnNbaWQwXSkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAg
ICAgIGNhc2Ugb3BfcmVzb2x2ZV93aXRoX3RoaXM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBw
cmludGYoIlslNGRdIHJlc29sdmVfd2l0aF90aGlzICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7CiAgICAgICAg
ICAgICBwcmludEdldEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJnZXRfYnlfaWQiKTsKICAg
ICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
Y29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNv
ZGUuaAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIG1hY3JvKG9wX2NyZWF0ZV90aGlzLCAzKSBcCiAgICAgICAgIG1hY3JvKG9wX2dl
dF9jYWxsZWUsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfY29udmVydF90aGlzLCAyKSBcCi0gICAg
ICAgIG1hY3JvKG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIDIpIFwKICAgICAgICAgXAogICAgICAg
ICBtYWNybyhvcF9uZXdfb2JqZWN0LCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX25ld19hcnJheSwg
NCkgXApAQCAtMTA3LDYgKzEwNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhv
cF9yZXNvbHZlX2Jhc2UsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfZW5zdXJlX3Byb3BlcnR5X2V4
aXN0cywgMykgXAogICAgICAgICBtYWNybyhvcF9yZXNvbHZlX3dpdGhfYmFzZSwgNCkgXAorICAg
ICAgICBtYWNybyhvcF9yZXNvbHZlX3dpdGhfdGhpcywgNCkgXAogICAgICAgICBtYWNybyhvcF9n
ZXRfYnlfaWQsIDgpIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX3NlbGYsIDgpIFwKICAg
ICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX3NlbGZfbGlzdCwgOCkgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAJKHJldmlzaW9uIDkwOTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNCwxMSArNDE0
LDEwIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihGdW4KICAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOwogICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuY1Byb3RvLT5pbmRleCgpKTsKICAgICB9IGVsc2UgaWYg
KGZ1bmN0aW9uQm9keS0+dXNlc1RoaXMoKSB8fCBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKSB7Ci0g
ICAgICAgIGlmIChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgZW1pdE9w
Y29kZShvcF9jb252ZXJ0X3RoaXNfc3RyaWN0KTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAo
IWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgICAgIGVtaXRPcGNvZGUob3Bf
Y29udmVydF90aGlzKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lz
dGVyLmluZGV4KCkpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1Jl
Z2lzdGVyLmluZGV4KCkpOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0xNDE1LDYgKzE0MTQs
NTMgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAgIHJldHVy
biBiYXNlRHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29s
dmVXaXRoVGhpcyhSZWdpc3RlcklEKiBiYXNlRHN0LCBSZWdpc3RlcklEKiBwcm9wRHN0LCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKK3sKKyAgICBzaXplX3QgZGVwdGggPSAwOworICAgIGlu
dCBpbmRleCA9IDA7CisgICAgSlNPYmplY3QqIGdsb2JhbE9iamVjdCA9IDA7CisgICAgYm9vbCBy
ZXF1aXJlc0R5bmFtaWNDaGVja3MgPSBmYWxzZTsKKyAgICBpZiAoIWZpbmRTY29wZWRQcm9wZXJ0
eShwcm9wZXJ0eSwgaW5kZXgsIGRlcHRoLCBmYWxzZSwgcmVxdWlyZXNEeW5hbWljQ2hlY2tzLCBn
bG9iYWxPYmplY3QpIHx8ICFnbG9iYWxPYmplY3QgfHwgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSB7
CisgICAgICAgIC8vIFdlIGNhbid0IG9wdGltaXNlIGF0IGFsbCA6LSgKKyAgICAgICAgZW1pdE9w
Y29kZShvcF9yZXNvbHZlX3dpdGhfdGhpcyk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChiYXNlRHN0LT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BE
c3QtPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQo
cHJvcGVydHkpKTsKKyAgICAgICAgcmV0dXJuIGJhc2VEc3Q7CisgICAgfQorCisgICAgYm9vbCBm
b3JjZUdsb2JhbFJlc29sdmUgPSBmYWxzZTsKKworICAgIC8vIEdsb2JhbCBvYmplY3QgaXMgdGhl
IGJhc2UKKyAgICBlbWl0TG9hZChiYXNlRHN0LCBqc1VuZGVmaW5lZCgpKTsKKworICAgIGlmIChp
bmRleCAhPSBtaXNzaW5nU3ltYm9sTWFya2VyKCkgJiYgIWZvcmNlR2xvYmFsUmVzb2x2ZSkgewor
ICAgICAgICAvLyBEaXJlY3RseSBpbmRleCB0aGUgcHJvcGVydHkgbG9va3VwIGFjcm9zcyBtdWx0
aXBsZSBzY29wZXMuCisgICAgICAgIGVtaXRHZXRTY29wZWRWYXIocHJvcERzdCwgZGVwdGgsIGlu
ZGV4LCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gYmFzZURzdDsKKyAgICB9CisgICAg
aWYgKHNob3VsZEF2b2lkUmVzb2x2ZUdsb2JhbCgpKSB7CisgICAgICAgIGVtaXRPcGNvZGUob3Bf
cmVzb2x2ZSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wRHN0LT5pbmRleCgp
KTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7
CisgICAgICAgIHJldHVybiBiYXNlRHN0OworICAgIH0KKyNpZiBFTkFCTEUoSklUKQorICAgIG1f
Y29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwor
I2VuZGlmCisjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQorICAgIG1fY29kZUJsb2NrLT5hZGRHbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyNlbmRpZgorICAg
IGVtaXRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJv
cERzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHBy
b3BlcnR5KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZCgwKTsKKyAgICBpZiAocmVxdWlyZXNEeW5hbWljQ2hlY2tzKQorICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZGVwdGgpOworICAgIHJldHVybiBiYXNlRHN0OworfQorCiB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TWV0aG9kQ2hlY2soKQogewogICAgIGVtaXRPcGNv
ZGUob3BfbWV0aG9kX2NoZWNrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDkwOTM2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsNiArMzEzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlQmFzZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmVCYXNl
Rm9yUHV0KFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZVdpdGhCYXNlKFJlZ2lzdGVySUQqIGJhc2VEc3Qs
IFJlZ2lzdGVySUQqIHByb3BEc3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmVXaXRoVGhpcyhSZWdpc3RlcklEKiBiYXNlRHN0LCBS
ZWdpc3RlcklEKiBwcm9wRHN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7CiAKICAgICAg
ICAgdm9pZCBlbWl0TWV0aG9kQ2hlY2soKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gOTA5MzYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsNyBAQCBSZWdpc3RlcklEKiBFdmFsRnVuY3Rp
b25DYWxsTm9kZTo6ZW1pdEJ5CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmMgPSBnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRz
KGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCkgLSBzdGFydE9mZnNldCgpICsgNCwgNCwgMCk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRSZXNv
bHZlV2l0aEJhc2UoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgZnVuYy5nZXQoKSwgZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ldmFsKTsKKyAgICBnZW5lcmF0b3IuZW1pdFJlc29sdmVX
aXRoVGhpcyhjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBmdW5jLmdldCgpLCBnZW5lcmF0
b3IucHJvcGVydHlOYW1lcygpLmV2YWwpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGxF
dmFsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuYy5nZXQoKSksIGZ1bmMuZ2V0
KCksIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsK
IH0KIApAQCAtMzc0LDcgKzM3NCw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVO
b2RlOjplbWkKICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2Fy
Z3MpOwogICAgIGludCBpZGVudGlmaWVyU3RhcnQgPSBkaXZvdCgpIC0gc3RhcnRPZmZzZXQoKTsK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGlkZW50aWZpZXJTdGFydCArIG1faWRl
bnQubGVuZ3RoKCksIG1faWRlbnQubGVuZ3RoKCksIDApOwotICAgIGdlbmVyYXRvci5lbWl0UmVz
b2x2ZVdpdGhCYXNlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGZ1bmMuZ2V0KCksIG1f
aWRlbnQpOworICAgIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVdpdGhUaGlzKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGZ1bmMuZ2V0KCksIG1faWRlbnQpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0LCBmdW5j
LmdldCgpKSwgZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgc3RhcnRPZmZzZXQo
KSwgZW5kT2Zmc2V0KCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTk3LDEwICs5OTcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAKICAgICBjYXNlIENvbnZlcnRUaGlzOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IHRoaXNWYWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHRl
bXAodGhpcyk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh0
aGlzVmFsdWUuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0ZW1wLmdwcigpKTsK
LSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hUZXN0OChKSVRDb21waWxlcjo6
Tm9uWmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgU3RydWN0dXJlOjp0eXBl
SW5mb0ZsYWdzT2Zmc2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE5lZWRzVGhpc0Nv
bnZlcnNpb24pKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoUHRyKEpJ
VENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGhpc1ZhbHVlLmdwcigpKSwg
SklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc1N0cmluZ1ZQ
dHIpKSk7CiAKICAgICAgICAgY2VsbFJlc3VsdCh0aGlzVmFsdWUuZ3ByKCksIG1fY29tcGlsZUlu
ZGV4KTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDkwOTM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzIxLDYgKzMyMSw1MCBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6cmVz
b2x2ZUJhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnBy
ZXRlcjo6cmVzb2x2ZVRoaXNBbmRQcm9wZXJ0eShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5zdHJ1
Y3Rpb24qIHZQQywgSlNWYWx1ZSYgZXhjZXB0aW9uVmFsdWUpCit7CisgICAgaW50IHRoaXNEc3Qg
PSB2UENbMV0udS5vcGVyYW5kOworICAgIGludCBwcm9wRHN0ID0gdlBDWzJdLnUub3BlcmFuZDsK
KyAgICBpbnQgcHJvcGVydHkgPSB2UENbM10udS5vcGVyYW5kOworCisgICAgU2NvcGVDaGFpbk5v
ZGUqIHNjb3BlQ2hhaW4gPSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsKKyAgICBTY29wZUNoYWlu
SXRlcmF0b3IgaXRlciA9IHNjb3BlQ2hhaW4tPmJlZ2luKCk7CisgICAgU2NvcGVDaGFpbkl0ZXJh
dG9yIGVuZCA9IHNjb3BlQ2hhaW4tPmVuZCgpOworCisgICAgLy8gRklYTUU6IGFkZCBzY29wZURl
cHRoSXNaZXJvIG9wdGltaXphdGlvbgorCisgICAgQVNTRVJUKGl0ZXIgIT0gZW5kKTsKKworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBJZGVu
dGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CisgICAgSlNP
YmplY3QqIGJhc2U7CisgICAgZG8geworICAgICAgICBiYXNlID0gaXRlci0+Z2V0KCk7CisgICAg
ICAgICsraXRlcjsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSk7CisgICAgICAgIGlm
IChiYXNlLT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKKyAgICAg
ICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIGlkZW50KTsK
KyAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZXhj
ZXB0aW9uOworICAgICAgICAgICAgaWYgKGV4Y2VwdGlvblZhbHVlKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihwcm9wRHN0
KSA9IEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIC8vIEFsbCBlbnRyaWVzIG9uIHRoZSBz
Y29wZSBjaGFpbiBzaG91bGQgYmUgRW52aXJvbm1lbnRSZWNvcmRzIChhY3RpdmF0aW9ucyBldGMp
LAorICAgICAgICAgICAgLy8gb3RoZXIgdGhlbiAnd2l0aCcgb2JqZWN0LCB3aGljaCBhcmUgZGly
ZWN0bHkgcmVmZXJlbmNlZCBmcm9tIHRoZSBzY29wZSBjaGFpbiwKKyAgICAgICAgICAgIC8vIGFu
ZCB0aGUgZ2xvYmFsIG9iamVjdC4gSWYgd2UgaGl0IGVpdGhlciBhbiBFbnZpcm9ubWVudFJlY29y
ZCBvciBhIGdsb2JhbAorICAgICAgICAgICAgLy8gb2JqZWN0IGF0IHRoZSBlbmQgb2YgdGhlIHNj
b3BlIGNoYWluLCB0aGlzIGlzIHVuZGVmaW5lZC4gSWYgd2UgaGl0IGEgbm9uLQorICAgICAgICAg
ICAgLy8gRW52aXJvbm1lbnRSZWNvcmQgd2l0aGluIHRoZSBzY29wZSBjaGFpbiwgcGFzcyB0aGUg
YmFzZSBhcyB0aGUgdGhpcyB2YWx1ZS4KKyAgICAgICAgICAgIGlmIChpdGVyID09IGVuZCB8fCBi
YXNlLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pc0Vudmlyb25tZW50UmVjb3JkKCkpCisgICAg
ICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKHRoaXNEc3QpID0ganNVbmRlZmluZWQo
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tl
ZFIodGhpc0RzdCkgPSBKU1ZhbHVlKGJhc2UpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICB9IHdoaWxlIChpdGVyICE9IGVuZCk7CisKKyAgICBleGNlcHRpb25WYWx1
ZSA9IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoY2FsbEZyYW1lLCBpZGVudCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKElOVEVSUFJFVEVSKQogCiBBTFdB
WVNfSU5MSU5FIENhbGxGcmFtZSogSW50ZXJwcmV0ZXI6OnNsaWRlUmVnaXN0ZXJXaW5kb3dGb3JD
YWxsKENvZGVCbG9jayogbmV3Q29kZUJsb2NrLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHNpemVfdCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ2MpCkBA
IC0yNjA0LDYgKzI2NDgsMjIgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUo
RXhlYwogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX3dpdGhfYmFzZSk7
CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9CisgICAgREVGSU5FX09QQ09ERShv
cF9yZXNvbHZlX3dpdGhfdGhpcykgeworICAgICAgICAvKiByZXNvbHZlX3dpdGhfdGhpcyB0aGlz
RHN0KHIpIHByb3BEc3QocikgcHJvcGVydHkoaWQpCisKKyAgICAgICAgICAgU2VhcmNoZXMgdGhl
IHNjb3BlIGNoYWluIGZvciBhbiBvYmplY3QgY29udGFpbmluZworICAgICAgICAgICBpZGVudGlm
aWVyIHByb3BlcnR5LCBhbmQgaWYgb25lIGlzIGZvdW5kLCB3cml0ZXMgdGhlCisgICAgICAgICAg
IHJldHJpZXZlZCBwcm9wZXJ0eSB2YWx1ZSB0byByZWdpc3RlciBwcm9wRHN0LCBhbmQgdGhlCisg
ICAgICAgICAgIHRoaXMgb2JqZWN0IHRvIHBhc3MgaW4gYSBjYWxsIHRvIHRoaXNEc3QuCisKKyAg
ICAgICAgICAgSWYgdGhlIHByb3BlcnR5IGlzIG5vdCBmb3VuZCwgcmFpc2VzIGFuIGV4Y2VwdGlv
bi4KKyAgICAgICAgKi8KKyAgICAgICAgaWYgKFVOTElLRUxZKCFyZXNvbHZlVGhpc0FuZFByb3Bl
cnR5KGNhbGxGcmFtZSwgdlBDLCBleGNlcHRpb25WYWx1ZSkpKQorICAgICAgICAgICAgZ290byB2
bV90aHJvdzsKKworICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX3dpdGhf
dGhpcyk7CisgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKKyAgICB9CiAgICAgREVGSU5FX09Q
Q09ERShvcF9nZXRfYnlfaWQpIHsKICAgICAgICAgLyogZ2V0X2J5X2lkIGRzdChyKSBiYXNlKHIp
IHByb3BlcnR5KGlkKSBzdHJ1Y3R1cmUoc0lEKSBub3Aobikgbm9wKG4pIG5vcChuKQogCkBAIC00
NTU2LDMxICs0NjE2LDEyIEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAKICAgICAgICAgaW50IHRo
aXNSZWdpc3RlciA9IHZQQ1sxXS51Lm9wZXJhbmQ7CiAgICAgICAgIEpTVmFsdWUgdGhpc1ZhbCA9
IGNhbGxGcmFtZS0+cih0aGlzUmVnaXN0ZXIpLmpzVmFsdWUoKTsKLSAgICAgICAgaWYgKHRoaXNW
YWwubmVlZHNUaGlzQ29udmVyc2lvbigpKQorICAgICAgICBpZiAoIXRoaXNWYWwuaXNDZWxsKCkg
fHwgdGhpc1ZhbC5pc1N0cmluZygpKQogICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRS
KHRoaXNSZWdpc3RlcikgPSBKU1ZhbHVlKHRoaXNWYWwudG9UaGlzT2JqZWN0KGNhbGxGcmFtZSkp
OwogCiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2NvbnZlcnRfdGhpcyk7CiAgICAg
ICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9Ci0gICAgREVGSU5FX09QQ09ERShvcF9jb252
ZXJ0X3RoaXNfc3RyaWN0KSB7Ci0gICAgICAgIC8qIGNvbnZlcnRfdGhpc19zdHJpY3QgdGhpcyhy
KQotICAgICAgICAgCi0gICAgICAgICBUYWtlcyB0aGUgdmFsdWUgaW4gdGhlICd0aGlzJyByZWdp
c3RlciwgYW5kIGNvbnZlcnRzIGl0IHRvCi0gICAgICAgICBpdHMgInRoaXMiIGZvcm0gaWYgKGFu
ZCBvbmx5IGlmKSAidGhpcyIgaXMgYW4gb2JqZWN0IHdpdGggYQotICAgICAgICAgY3VzdG9tIHRo
aXMgY29udmVyc2lvbgotICAgICAgICAgCi0gICAgICAgICBUaGlzIG9wY29kZSBzaG91bGQgb25s
eSBiZSB1c2VkIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlCi0gICAgICAgICBibG9jay4KLSAg
ICAgICAgICovCi0gICAgICAgIAotICAgICAgICBpbnQgdGhpc1JlZ2lzdGVyID0gdlBDWzFdLnUu
b3BlcmFuZDsKLSAgICAgICAgSlNWYWx1ZSB0aGlzVmFsID0gY2FsbEZyYW1lLT5yKHRoaXNSZWdp
c3RlcikuanNWYWx1ZSgpOwotICAgICAgICBpZiAodGhpc1ZhbC5pc09iamVjdCgpICYmIHRoaXNW
YWwubmVlZHNUaGlzQ29udmVyc2lvbigpKQotICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNr
ZWRSKHRoaXNSZWdpc3RlcikgPSBKU1ZhbHVlKHRoaXNWYWwudG9TdHJpY3RUaGlzT2JqZWN0KGNh
bGxGcmFtZSkpOwotICAgICAgICAKLSAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfY29u
dmVydF90aGlzX3N0cmljdCk7Ci0gICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKLSAgICB9CiAg
ICAgREVGSU5FX09QQ09ERShvcF9pbml0X2xhenlfcmVnKSB7CiAgICAgICAgIC8qIGluaXRfbGF6
eV9yZWcgZHN0KHIpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiA5MDkzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNiAr
MTMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE5FVkVSX0lOTElORSBib29sIHJlc29s
dmVHbG9iYWxEeW5hbWljKENhbGxGcmFtZSosIEluc3RydWN0aW9uKiwgSlNWYWx1ZSYgZXhjZXB0
aW9uVmFsdWUpOwogICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCByZXNvbHZlQmFzZShDYWxsRnJh
bWUqLCBJbnN0cnVjdGlvbiogdlBDKTsKICAgICAgICAgTkVWRVJfSU5MSU5FIGJvb2wgcmVzb2x2
ZUJhc2VBbmRQcm9wZXJ0eShDYWxsRnJhbWUqLCBJbnN0cnVjdGlvbiosIEpTVmFsdWUmIGV4Y2Vw
dGlvblZhbHVlKTsKKyAgICAgICAgTkVWRVJfSU5MSU5FIGJvb2wgcmVzb2x2ZVRoaXNBbmRQcm9w
ZXJ0eShDYWxsRnJhbWUqLCBJbnN0cnVjdGlvbiosIEpTVmFsdWUmIGV4Y2VwdGlvblZhbHVlKTsK
ICAgICAgICAgTkVWRVJfSU5MSU5FIFNjb3BlQ2hhaW5Ob2RlKiBjcmVhdGVFeGNlcHRpb25TY29w
ZShDYWxsRnJhbWUqLCBjb25zdCBJbnN0cnVjdGlvbiogdlBDKTsKIAogICAgICAgICB2b2lkIHRy
eUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqLCBDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiosIEpTVmFs
dWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5U2xvdCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gOTA5
MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIyMyw3ICsyMjMsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAg
ICAgICAgIERFRklORV9PUChvcF9nZXRfY2FsbGVlKQogICAgICAgICBERUZJTkVfT1Aob3BfY3Jl
YXRlX3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF9jb252ZXJ0X3RoaXMpCi0gICAgICAgIERF
RklORV9PUChvcF9jb252ZXJ0X3RoaXNfc3RyaWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfaW5p
dF9sYXp5X3JlZykKICAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV9hcmd1bWVudHMpCiAgICAg
ICAgIERFRklORV9PUChvcF9kZWJ1ZykKQEAgLTMxMCw2ICszMDksNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9yZXNvbHZlX2dsb2Jh
bF9keW5hbWljKQogICAgICAgICBERUZJTkVfT1Aob3BfcmVzb2x2ZV9za2lwKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcmVzb2x2ZV93aXRoX2Jhc2UpCisgICAgICAgIERFRklORV9PUChvcF9yZXNv
bHZlX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3JldCkKICAgICAgICAgREVGSU5F
X09QKG9wX2NhbGxfcHV0X3Jlc3VsdCkKICAgICAgICAgREVGSU5FX09QKG9wX3JldF9vYmplY3Rf
b3JfdGhpcykKQEAgLTQwMSw3ICs0MDEsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93
Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY2FsbF92YXJhcmdzKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY29uc3RydWN0KQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfY29udmVydF90aGlzKQotICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
Y29udmVydF90aGlzX3N0cmljdCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2RpdikK
ICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2VxKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfZ2V0X2J5X2lkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lv
biA5MDkzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTczNiw3ICs3MzYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
X29wX2dldF9jYWxsZWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NyZWF0
ZV90aGlzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jb252ZXJ0X3RoaXMo
SW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX2NvbnZlcnRfdGhpc19zdHJpY3Qo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NyZWF0ZV9hcmd1bWVudHMoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKQEAgLTgyMSw2ICs4
MjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29sdmVf
c2tpcChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcmVzb2x2ZV93aXRoX2Jh
c2UoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29sdmVfd2l0aF90aGlz
KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXQoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyhJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfcnNoaWZ0KEluc3RydWN0aW9uKik7CkBAIC04NTMsNyArODUz
LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbF92YXJh
cmdzKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb252ZXJ0
X3RoaXMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0g
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY29udmVydF90aGlzX3N0cmljdChJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xv
d19vcF9kaXYoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZXEoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X2lk
KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNp
b24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExMDIsNiArMTEwMiwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9yZXNvbHZlX3dpdGhfYmFzZShJbnN0CiAgICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV93aXRo
X3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTdHViQ2Fs
bCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcmVzb2x2ZV93aXRoX3RoaXMpOworICAgIHN0dWJDYWxs
LmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIoJm1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKSk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
SW1tMzIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgIHN0dWJDYWxsLmNh
bGwoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7Cit9CisKIHZvaWQgSklUOjplbWl0
X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9uZXdfZnVuY19leHApOwpAQCAtMTQ0
NCw1MiArMTQ1MiwyNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXMoSW5zdHJ1Y3Rp
CiAgICAgZW1pdExvYWQodGhpc1JlZ2lzdGVyLCByZWdUMSwgcmVnVDApOwogCiAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2Vs
bFRhZykpKTsKLQotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25aZXJvLCBB
ZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihOZWVkc1RoaXNDb252ZXJzaW9uKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihF
cXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc1N0cmlu
Z1ZQdHIpKSk7CiAKICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5HVEgob3Bf
Y29udmVydF90aGlzKSwgdGhpc1JlZ2lzdGVyLCByZWdUMSwgcmVnVDApOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCi17Ci0gICAgdW5zaWduZWQgdGhpc1JlZ2lzdGVyID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKLSAgICAKLSAgICBlbWl0TG9hZCh0aGlzUmVnaXN0ZXIsIHJlZ1QxLCBy
ZWdUMCk7Ci0gICAgCi0gICAgSnVtcCBub3ROdWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOwotICAgIGVtaXRTdG9yZSh0
aGlzUmVnaXN0ZXIsIGpzTnVsbCgpKTsKLSAgICBKdW1wIHNldFRoaXMgPSBqdW1wKCk7Ci0gICAg
bm90TnVsbC5saW5rKHRoaXMpOwotICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2gzMihOb3RF
cXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAg
IEp1bXAgbm90QW5PYmplY3QgPSBicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1
Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsK
LSAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1
Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihOZWVkc1RoaXNDb252
ZXJzaW9uKSkpOwotICAgIGlzSW1tZWRpYXRlLmxpbmsodGhpcyk7Ci0gICAgbm90QW5PYmplY3Qu
bGluayh0aGlzKTsKLSAgICBzZXRUaGlzLmxpbmsodGhpcyk7Ci0gICAgbWFwKG1fYnl0ZWNvZGVP
ZmZzZXQgKyBPUENPREVfTEVOR1RIKG9wX2NvbnZlcnRfdGhpc19zdHJpY3QpLCB0aGlzUmVnaXN0
ZXIsIHJlZ1QxLCByZWdUMCk7Ci19Ci0KIHZvaWQgSklUOjplbWl0U2xvd19vcF9jb252ZXJ0X3Ro
aXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKKyAgICB2b2lkKiBnbG9iYWxUaGlzID0gbV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWluKCktPmdsb2JhbFRoaXMuZ2V0KCk7CiAg
ICAgdW5zaWduZWQgdGhpc1JlZ2lzdGVyID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Cisg
ICAgSnVtcCBpc05vdFVuZGVmaW5lZCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZykpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihn
bG9iYWxUaGlzKSwgcmVnVDApOworICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxU
YWcpLCByZWdUMSk7CisgICAgZW1pdFN0b3JlKHRoaXNSZWdpc3RlciwgcmVnVDEsIHJlZ1QwKTsK
KyAgICBlbWl0SnVtcFNsb3dUb0hvdChqdW1wKCksIE9QQ09ERV9MRU5HVEgob3BfY29udmVydF90
aGlzKSk7CiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfY29udmVydF90
aGlzKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMSwgcmVnVDApOwotICAgIHN0dWJD
YWxsLmNhbGwodGhpc1JlZ2lzdGVyKTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnZl
cnRfdGhpc19zdHJpY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKLXsKLSAgICB1bnNpZ25lZCB0aGlzUmVnaXN0
ZXIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIAorICAgIGlzTm90VW5k
ZWZpbmVkLmxpbmsodGhpcyk7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIAotICAgIEpJ
VFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KTsKKyAg
ICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfY29udmVydF90aGlzKTsKICAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMSwgcmVnVDApOwogICAgIHN0dWJDYWxsLmNhbGwodGhp
c1JlZ2lzdGVyKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDgsNiArNzA4LDE0IEBAIHZvaWQgSklUOjpl
bWl0X29wX3Jlc29sdmVfd2l0aF9iYXNlKEluc3QKICAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZl
X3dpdGhfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJVFN0
dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9yZXNvbHZlX3dpdGhfdGhpcyk7CisgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbVB0cigmbV9jb2RlQmxvY2stPmlkZW50aWZpZXIo
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgc3R1YkNh
bGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKK30KKwogdm9pZCBKSVQ6
OmVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX25ld19mdW5jX2V4cCk7CkBA
IC0xMTM2LDI1ICsxMTQ0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY29udmVydF90aGlzKEluc3Ry
dWN0aQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCwgcmVnVDApOwogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1Qw
KTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCByZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhy
ZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTmVl
ZHNUaGlzQ29udmVyc2lvbikpKTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRfb3BfY29udmVydF90aGlz
X3N0cmljdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDApOwot
ICAgIEp1bXAgbm90TnVsbCA9IGJyYW5jaFRlc3RQdHIoTm9uWmVybywgcmVnVDApOwotICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpKSwgcmVnVDApOwotICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwg
cmVnVDApOwotICAgIEp1bXAgc2V0VGhpcyA9IGp1bXAoKTsKLSAgICBub3ROdWxsLmxpbmsodGhp
cyk7Ci0gICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJl
Z1QxKTsKLSAgICBKdW1wIG5vdEFuT2JqZWN0ID0gYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmpl
Y3RUeXBlKSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhy
ZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTmVl
ZHNUaGlzQ29udmVyc2lvbikpKTsKLSAgICBpc0ltbWVkaWF0ZS5saW5rKHRoaXMpOwotICAgIG5v
dEFuT2JqZWN0LmxpbmsodGhpcyk7Ci0gICAgc2V0VGhpcy5saW5rKHRoaXMpOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9n
bG9iYWxEYXRhLT5qc1N0cmluZ1ZQdHIpKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9j
YWxsZWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTExOTksMTcgKzExODks
MTcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV9kaWRfY2FsbChJbnN0cgogCiB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfY29udmVydF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CisgICAgdm9pZCog
Z2xvYmFsVGhpcyA9IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsU2NvcGVDaGFp
bigpLT5nbG9iYWxUaGlzLmdldCgpOworCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3Bf
Y29udmVydF90aGlzKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgc3R1
YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKLX0KKyAgICBKdW1w
IGlzTm90VW5kZWZpbmVkID0gYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0
cihKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoZ2xvYmFsVGhpcyksIHJlZ1QwKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKyAgICBlbWl0SnVtcFNsb3dUb0hv
dChqdW1wKCksIE9QQ09ERV9MRU5HVEgob3BfY29udmVydF90aGlzKSk7CiAKLXZvaWQgSklUOjpl
bWl0U2xvd19vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCi17CisgICAgaXNO
b3RVbmRlZmluZWQubGluayh0aGlzKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklU
U3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2NvbnZlcnRfdGhpc19zdHJpY3QpOworICAg
IEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jb252ZXJ0X3RoaXMpOwogICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKICAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAJKHJldmlzaW9uIDkwOTM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyODAsMTkgKzEyODAsOSBAQCBERUZJ
TkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfCiAgICAgSlNWYWx1ZSB2MSA9IHN0
YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBz
dGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIEpTT2JqZWN0KiByZXN1bHQgPSB2MS50b1RoaXNP
YmplY3QoY2FsbEZyYW1lKTsKLSAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLX0KKyAgICBBU1NFUlQoIXYxLmlzQ2Vs
bCgpIHx8IHYxLmlzU3RyaW5nKCkpOwogCi1ERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNW
YWx1ZSwgb3BfY29udmVydF90aGlzX3N0cmljdCkKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJB
TUUoc3RhY2tGcmFtZSk7Ci0gICAgCi0gICAgSlNWYWx1ZSB2MSA9IHN0YWNrRnJhbWUuYXJnc1sw
XS5qc1ZhbHVlKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxG
cmFtZTsKLSAgICBBU1NFUlQodjEuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm5l
ZWRzVGhpc0NvbnZlcnNpb24oKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB2MS50b1N0cmljdFRo
aXNPYmplY3QoY2FsbEZyYW1lKTsKKyAgICBKU09iamVjdCogcmVzdWx0ID0gdjEudG9UaGlzT2Jq
ZWN0KGNhbGxGcmFtZSk7CiAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zMDM2LDYgKzMwMjYsNDggQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wXwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKIH0KIAorREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2Rl
ZEpTVmFsdWUsIG9wX3Jlc29sdmVfd2l0aF90aGlzKQoreworICAgIFNUVUJfSU5JVF9TVEFDS19G
UkFNRShzdGFja0ZyYW1lKTsKKworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFt
ZS5jYWxsRnJhbWU7CisgICAgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4gPSBjYWxsRnJhbWUt
PnNjb3BlQ2hhaW4oKTsKKworICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVyID0gc2NvcGVDaGFp
bi0+YmVnaW4oKTsKKyAgICBTY29wZUNoYWluSXRlcmF0b3IgZW5kID0gc2NvcGVDaGFpbi0+ZW5k
KCk7CisKKyAgICAvLyBGSVhNRTogYWRkIHNjb3BlRGVwdGhJc1plcm8gb3B0aW1pemF0aW9uCisK
KyAgICBBU1NFUlQoaXRlciAhPSBlbmQpOworCisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBzdGFj
a0ZyYW1lLmFyZ3NbMF0uaWRlbnRpZmllcigpOworICAgIEpTT2JqZWN0KiBiYXNlOworICAgIGRv
IHsKKyAgICAgICAgYmFzZSA9IGl0ZXItPmdldCgpOworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChiYXNlKTsKKyAgICAgICAgaWYgKGJhc2UtPmdldFByb3BlcnR5U2xvdChjYWxsRnJhbWUsIGlk
ZW50LCBzbG90KSkgeworICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVl
KGNhbGxGcmFtZSwgaWRlbnQpOworICAgICAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9F
TkQoKTsKKworICAgICAgICAgICAgLy8gQWxsIGVudHJpZXMgb24gdGhlIHNjb3BlIGNoYWluIHNo
b3VsZCBiZSBFbnZpcm9ubWVudFJlY29yZHMgKGFjdGl2YXRpb25zIGV0YyksCisgICAgICAgICAg
ICAvLyBvdGhlciB0aGVuICd3aXRoJyBvYmplY3QsIHdoaWNoIGFyZSBkaXJlY3RseSByZWZlcmVu
Y2VkIGZyb20gdGhlIHNjb3BlIGNoYWluLAorICAgICAgICAgICAgLy8gYW5kIHRoZSBnbG9iYWwg
b2JqZWN0LiBJZiB3ZSBoaXQgZWl0aGVyIGFuIEVudmlyb25tZW50UmVjb3JkIG9yIGEgZ2xvYmFs
CisgICAgICAgICAgICAvLyBvYmplY3QgYXQgdGhlIGVuZCBvZiB0aGUgc2NvcGUgY2hhaW4sIHRo
aXMgaXMgdW5kZWZpbmVkLiBJZiB3ZSBoaXQgYSBub24tCisgICAgICAgICAgICAvLyBFbnZpcm9u
bWVudFJlY29yZCB3aXRoaW4gdGhlIHNjb3BlIGNoYWluLCBwYXNzIHRoZSBiYXNlIGFzIHRoZSB0
aGlzIHZhbHVlLgorICAgICAgICAgICAgaWYgKGl0ZXIgPT0gZW5kIHx8IGJhc2UtPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLmlzRW52aXJvbm1lbnRSZWNvcmQoKSkKKyAgICAgICAgICAgICAgICBj
YWxsRnJhbWUtPnJlZ2lzdGVycygpW3N0YWNrRnJhbWUuYXJnc1sxXS5pbnQzMigpXSA9IGpzVW5k
ZWZpbmVkKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2FsbEZyYW1lLT5y
ZWdpc3RlcnMoKVtzdGFja0ZyYW1lLmFyZ3NbMV0uaW50MzIoKV0gPSBKU1ZhbHVlKGJhc2UpOwor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgICAgICB9Cisg
ICAgICAgICsraXRlcjsKKyAgICB9IHdoaWxlIChpdGVyICE9IGVuZCk7CisKKyAgICBzdGFja0Zy
YW1lLmdsb2JhbERhdGEtPmV4Y2VwdGlvbiA9IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3Io
Y2FsbEZyYW1lLCBpZGVudCk7CisgICAgVk1fVEhST1dfRVhDRVBUSU9OX0FUX0VORCgpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKK30KKwogREVGSU5FX1NUVUJfRlVO
Q1RJT04oSlNPYmplY3QqLCBvcF9uZXdfZnVuY19leHApCiB7CiAgICAgU1RVQl9JTklUX1NUQUNL
X0ZSQU1FKHN0YWNrRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
aAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw3ICszMjIsNiBAQCBleHRlcm4gIkMiIHsKICAgICBF
bmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfY29uc3RydWN0X05vdEpTQ29uc3RydWN0KFNU
VUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29w
X2NyZWF0ZV90aGlzKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUg
SklUX1NUVUIgY3RpX29wX2NvbnZlcnRfdGhpcyhTVFVCX0FSR1NfREVDTEFSQVRJT04pOwotICAg
IEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0KFNUVUJf
QVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2Ny
ZWF0ZV9hcmd1bWVudHMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNvZGVkSlNWYWx1
ZSBKSVRfU1RVQiBjdGlfb3BfY3JlYXRlX2FyZ3VtZW50c19ub19wYXJhbXMoU1RVQl9BUkdTX0RF
Q0xBUkFUSU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfZGVsX2J5X2lk
KFNUVUJfQVJHU19ERUNMQVJBVElPTik7CkBAIC0zNzIsNiArMzcxLDcgQEAgZXh0ZXJuICJDIiB7
CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFt
aWMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBj
dGlfb3BfcmVzb2x2ZV9za2lwKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpT
VmFsdWUgSklUX1NUVUIgY3RpX29wX3Jlc29sdmVfd2l0aF9iYXNlKFNUVUJfQVJHU19ERUNMQVJB
VElPTik7CisgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX3Jlc29sdmVfd2l0aF90
aGlzKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIg
Y3RpX29wX3JzaGlmdChTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIEVuY29kZWRKU1ZhbHVl
IEpJVF9TVFVCIGN0aV9vcF9zdHJjYXQoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNv
ZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3Bfc3RyaWN0ZXEoU1RVQl9BUkdTX0RFQ0xBUkFUSU9O
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5jcHAJKHJl
dmlzaW9uIDkwOTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBK
U1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxs
VHlwZSBjYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmIGNhbGxEYXRhLCBKU1ZhbHVlIHRoaXNWYWx1
ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKKyAgICAvLyBUaGlzIHZhbHVlIG11c3Qgbm90IGJl
IGFuIG9iamVjdCB0aGF0IHdvdWxkIHJlcXVpcmUgdGhpcyBjb252ZXJzaW9uIChXZWJDb3JlJ3Mg
Z2xvYmFsIG9iamVjdCkuCisgICAgQVNTRVJUKCF0aGlzVmFsdWUuaXNPYmplY3QoKSB8fCB0aGlz
VmFsdWUudG9UaGlzT2JqZWN0KGV4ZWMpID09IHRoaXNWYWx1ZSk7CiAgICAgQVNTRVJUKGNhbGxU
eXBlID09IENhbGxUeXBlSlMgfHwgY2FsbFR5cGUgPT0gQ2FsbFR5cGVIb3N0KTsKICAgICByZXR1
cm4gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZUNhbGwoZXhlYywgYXNPYmplY3QoZnVuY3Rp
b25PYmplY3QpLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkocmV2aXNp
b24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0
YSwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3Vz
U2xvdENvdW50LCAmc19pbmZvKTsgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBOZWVkc1RoaXNDb252ZXJzaW9uIHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJy
aWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU1ZhcmlhYmxlT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsK
KyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSXNFbnZpcm9u
bWVudFJlY29yZCB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNWYXJpYWJsZU9iamVjdDo6
U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgogICAgICAgICBib29sIHN5bWJvbFRhYmxl
R2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDkwOTM2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDcsNyArMTQ3LDkgQEAgdm9pZCBKU09iamVjdDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29u
cwogICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gc2V0dGVyRnVuYy0+Z2V0Q2Fs
bERhdGEoY2FsbERhdGEpOwogICAgICAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3M7CiAgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQodmFsdWUpOwotICAgICAgICAgICAgICAg
IGNhbGwoZXhlYywgc2V0dGVyRnVuYywgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmdzKTsK
KworICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgV2ViQ29yZSdzIGdsb2JhbCBvYmplY3Qg
dGhlbiB3ZSBuZWVkIHRvIHN1YnN0aXR1dGUgdGhlIHNoZWxsLgorICAgICAgICAgICAgICAgIGNh
bGwoZXhlYywgc2V0dGVyRnVuYywgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLT50b1RoaXNPYmpl
Y3QoZXhlYyksIGFyZ3MpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGlj
U2NvcGVPYmplY3QuaAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUw
LDcgQEAgbmFtZXNwYWNlIEpTQ3sKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsgfQogCiAgICAg
cHJvdGVjdGVkOgotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBOZWVkc1RoaXNDb252ZXJzaW9uIHwgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU1Zhcmlh
YmxlT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gSXNFbnZpcm9ubWVudFJlY29yZCB8IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0
eU5hbWVzIHwgSlNWYXJpYWJsZU9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBTeW1ib2xUYWJsZSBtX3N5bWJvbFRhYmxlOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiA5MDkzNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyOCw3
ICszMjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0
YSwgcHJvdG8sIFR5cGVJbmZvKFN0cmluZ1R5cGUsIE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IE5lZWRzVGhpc0NvbnZlcnNpb24pLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwor
ICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBU
eXBlSW5mbyhTdHJpbmdUeXBlLCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QpLCBBbm9ueW1v
dXNTbG90Q291bnQsICZzX2luZm8pOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0
aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDkwOTM2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbXBsZW1lbnRz
SGFzSW5zdGFuY2UgPSAxIDw8IDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE92ZXJyaWRl
c0hhc0luc3RhbmNlID0gMSA8PCAyOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbXBsZW1l
bnRzRGVmYXVsdEhhc0luc3RhbmNlID0gMSA8PCAzOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBOZWVkc1RoaXNDb252ZXJzaW9uID0gMSA8PCA0OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBJc0Vudmlyb25tZW50UmVjb3JkID0gMSA8PCA0OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgPSAxIDw8IDU7CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gPSAxIDw8IDY7CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgPSAxIDw8IDc7CkBAIC02NCw4
ICs2NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgbWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
OyB9CiAgICAgICAgIGJvb2wgaW1wbGVtZW50c0hhc0luc3RhbmNlKCkgY29uc3QgeyByZXR1cm4g
bV9mbGFncyAmIEltcGxlbWVudHNIYXNJbnN0YW5jZTsgfQorICAgICAgICBib29sIGlzRW52aXJv
bm1lbnRSZWNvcmQoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgSXNFbnZpcm9ubWVudFJlY29y
ZDsgfQogICAgICAgICBib29sIG92ZXJyaWRlc0hhc0luc3RhbmNlKCkgY29uc3QgeyByZXR1cm4g
bV9mbGFncyAmIE92ZXJyaWRlc0hhc0luc3RhbmNlOyB9Ci0gICAgICAgIGJvb2wgbmVlZHNUaGlz
Q29udmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBOZWVkc1RoaXNDb252ZXJzaW9u
OyB9CiAgICAgICAgIGJvb2wgb3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkgY29uc3QgeyBy
ZXR1cm4gbV9mbGFncyAmIE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsgfQogICAgICAgICBi
b29sIG92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbjsgfQogICAgICAgICBib29sIG92ZXJyaWRlc0dldFByb3BlcnR5
TmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
czsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2aXNp
b24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIwNiw3ICsyMDYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBwdXREaXJlY3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdm9pZCBwdXQoRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKIAotICAgICAgICBib29sIG5lZWRz
VGhpc0NvbnZlcnNpb24oKSBjb25zdDsKICAgICAgICAgSlNPYmplY3QqIHRvVGhpc09iamVjdChF
eGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgSlNWYWx1ZSB0b1N0cmljdFRoaXNPYmplY3QoRXhl
Y1N0YXRlKikgY29uc3Q7CiAgICAgICAgIFVTdHJpbmcgdG9UaGlzU3RyaW5nKEV4ZWNTdGF0ZSop
IGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFy
aWFibGVPYmplY3QuaAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgcHJvdGVjdGVkOgot
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNH
ZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRQcm9wZXJ0eU5h
bWVzIHwgSlNOb25GaW5hbE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICAgICAgSlNWYXJp
YWJsZU9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIFJlZ2lzdGVyKiByZWdpc3RlcnMpCiAgICAgICAg
ICAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCShyZXZpc2lv
biA5MDkzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDExIEBAIEpTVmFsdWUgUHJvcGVydHlTbG90
OjpmdW5jdGlvbkdldHRlcihFeGUKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gbV9kYXRhLmdldHRlckZ1bmMtPmdldENhbGxEYXRhKGNhbGxEYXRhKTsK
LSAgICByZXR1cm4gY2FsbChleGVjLCBtX2RhdGEuZ2V0dGVyRnVuYywgY2FsbFR5cGUsIGNhbGxE
YXRhLCB0aGlzVmFsdWUoKSwgZXhlYy0+ZW1wdHlMaXN0KCkpOworICAgIAorICAgIC8vIE9ubHkg
b2JqZWN0cyBjYW4gaGF2ZSBhY2Nlc3NvciBwcm9wZXJ0aWVzLgorICAgIC8vIElmIHRoZSBiYXNl
IGlzIFdlYkNvcmUncyBnbG9iYWwgb2JqZWN0IHRoZW4gd2UgbmVlZCB0byBzdWJzdGl0dXRlIHRo
ZSBzaGVsbC4KKyAgICBBU1NFUlQobV9zbG90QmFzZS5pc09iamVjdCgpKTsKKyAgICByZXR1cm4g
Y2FsbChleGVjLCBtX2RhdGEuZ2V0dGVyRnVuYywgY2FsbFR5cGUsIGNhbGxEYXRhLCBtX3RoaXNW
YWx1ZS50b1RoaXNPYmplY3QoZXhlYyksIGV4ZWMtPmVtcHR5TGlzdCgpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVNsb3QuaAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDggKzIxMiw2IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLmluZGV4OyB9CiAKLSAgICAgICAgSlNWYWx1ZSB0aGlzVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3RoaXNWYWx1ZTsgfQotCiAgICAgICAgIEdldFZhbHVlRnVuYyBjdXN0b21HZXR0ZXIo
KSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9jYWNoZWRQcm9wZXJ0eVR5
cGUgPT0gQ3VzdG9tKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlj
dEV2YWxBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw2ICszNiwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZVBy
b3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKICAgICB2aXJ0dWFsIEpTT2Jq
ZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgdmlydHVhbCBKU1ZhbHVl
IHRvU3RyaWN0VGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKKworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUg
cHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2Jh
bERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBB
bm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOworICAgIH0KKyAgICAKK3Byb3RlY3RlZDoKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBJc0Vudmlyb25tZW50UmVj
b3JkIHwgSlNOb25GaW5hbE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
CShyZXZpc2lvbiA5MDkzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODksMTMgKzI4OSw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwganNOdWxsKCks
IFR5cGVJbmZvKFVuc3BlY2lmaWVkVHlwZSksIEFub255bW91c1Nsb3RDb3VudCwgJnNfZHVtbXlD
ZWxsSW5mbyk7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6bmVlZHNUaGlzQ29u
dmVyc2lvbigpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoVU5MSUtFTFkoIWlzQ2VsbCgpKSkK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gYXNDZWxsKCktPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm5lZWRzVGhpc0NvbnZlcnNpb24oKTsKLSAgICB9Ci0KICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjppbnRlcm5hbEFwcGVuZChKU0NlbGwqIGNlbGwp
CiAgICAgewogICAgICAgICBBU1NFUlQoIW1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0
aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxhL2VjbWEvU3Ry
aW5nLzE1LjUuNC42LTIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL21vemlsbGEvZWNtYS9TdHJpbmcvMTUuNS40LjYtMi5qcwkocmV2aXNpb24gOTA5MzYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW96aWxsYS9lY21hL1N0cmluZy8xNS41LjQu
Ni0yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsMTAgKzE4NCwxMSBAQCBmdW5jdGlvbiBnZXRU
ZXN0Q2FzZXMoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKCJ2YXIgb2JqID0gbmV3IE9iamVjdCgp
OyBvYmouaW5kZXhPZiA9IFN0cmluZy5wcm90b3R5cGUuaW5kZXhPZjsgb2JqLmluZGV4T2YoJ2Jq
ZWN0JykiKSApOwogCi0gICAgYXJyYXlbaXRlbSsrXSA9IG5ldyBUZXN0Q2FzZSggU0VDVElPTiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFyIGYgPSBuZXcgT2JqZWN0KCBT
dHJpbmcucHJvdG90eXBlLmluZGV4T2YgKTsgZignIitHTE9CQUwrIicpIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV2YWwoInZhciBmID0gbmV3IE9iamVjdCggU3RyaW5nLnByb3RvdHlwZS5pbmRleE9mICk7
IGYoJyIrR0xPQkFMKyInKSIpICk7CisvLyBUaGlzIGNvcnJlY3RseSB0aHJvd3MsIGR1ZSB0byBF
UzUgMTUuNS40Ljcgc3RlcCAxCisvLyAgICBhcnJheVtpdGVtKytdID0gbmV3IFRlc3RDYXNlKCBT
RUNUSU9OLAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhciBmID0gbmV3
IE9iamVjdCggU3RyaW5nLnByb3RvdHlwZS5pbmRleE9mICk7IGYoJyIrR0xPQkFMKyInKSIsCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXZhbCgidmFyIGYgPSBuZXcgT2JqZWN0KCBTdHJpbmcucHJvdG90
eXBlLmluZGV4T2YgKTsgZignIitHTE9CQUwrIicpIikgKTsKIAogICAgIGFycmF5W2l0ZW0rK10g
PSBuZXcgVGVzdENhc2UoIFNFQ1RJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInZhciBmID0gbmV3IEZ1bmN0aW9uKCk7IGYudG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBl
LnRvU3RyaW5nOyBmLmluZGV4T2YgPSBTdHJpbmcucHJvdG90eXBlLmluZGV4T2Y7IGYuaW5kZXhP
ZignW29iamVjdCBGdW5jdGlvbl0nKSIsCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MTAyMCkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEx
LTA3LTE0ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQyNTAKKyAgICAg
ICAgR2xvYmFsIHN0cmljdCBtb2RlIGZ1bmN0aW9uIGxlYWtpbmcgZ2xvYmFsIG9iamVjdCBhcyAi
dGhpcyIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHRlc3QgY2FzZSAvIHVwZGF0ZSB0ZXN0IHJlc3VsdHMuCisKKyAgICAgICAgKiBmYXN0L2pz
L2NhbGwtYmFzZS1yZXNvbHV0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9qcy9jYWxsLWJhc2UtcmVzb2x1dGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgICAgIC0gQWRk
IHRlc3QgZm9yIEVTNSBjb3JyZWN0IHRoaXMgdmFsdWUgcmVzb2x1dGlvbiBpbiBjYWxscy4KKyAg
ICAgICAgKiBzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5n
LzE1LjUuNC8xNS41LjQuMTBfU3RyaW5nLnByb3RvdHlwZS5tYXRjaC9TMTUuNS40LjEwX0ExX1Qz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9P
YmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTJfU3RyaW5nLnByb3RvdHlwZS5zZWFy
Y2gvUzE1LjUuNC4xMl9BMV9UMy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3B1dG5pay9Db25m
b3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjEzX1N0
cmluZy5wcm90b3R5cGUuc2xpY2UvUzE1LjUuNC4xM19BMV9UMy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8x
NS41LjQvMTUuNS40LjE0X1N0cmluZy5wcm90b3R5cGUuc3BsaXQvUzE1LjUuNC4xNF9BMV9UMy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2Jq
ZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjE1X1N0cmluZy5wcm90b3R5cGUuc3Vic3Ry
aW5nL1MxNS41LjQuMTVfQTFfVDMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHNwdXRuaWsvQ29u
Zm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC40X1N0
cmluZy5wcm90b3R5cGUuY2hhckF0L1MxNS41LjQuNF9BMV9UMy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8x
NS41LjQvMTUuNS40LjVfU3RyaW5nLnByb3RvdHlwZS5jaGFyQ29kZUF0L1MxNS41LjQuNV9BMV9U
My1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVf
T2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjZfU3RyaW5nLnByb3RvdHlwZS5jb25j
YXQvUzE1LjUuNC42X0ExX1QzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzcHV0bmlrL0NvbmZv
cm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuN19TdHJp
bmcucHJvdG90eXBlLmluZGV4T2YvUzE1LjUuNC43X0ExX1QzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1
LjUuNC8xNS41LjQuOF9TdHJpbmcucHJvdG90eXBlLmxhc3RJbmRleE9mL1MxNS41LjQuOF9BMV9U
My1leHBlY3RlZC50eHQ6CisgICAgICAgICAgICAtIENoZWNrIGluIGZhaWxpbmcgcmVzdWx0cyBm
b3IgdGhlc2UgdGVzdHMgLSB0aGVzZSB0ZXN0cyB3ZXJlIGFzc2VydGluZyBpbmNvcnJlY3QgYmVo
YXZpb3VyLAorICAgICAgICAgICAgICBhbmQgaGF2ZSBzaW5jZSBiZWVuIGZpeGVkIGluIHRlc3Qt
MjYyLCBzZWUgaHR0cHM6Ly9idWdzLmVjbWFzY3JpcHQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTcK
KwogMjAxMS0wNy0xNCAgVmluY2VudCBTY2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gdXBkYXRlZCB0ZXN0IGV4cGVjdGF0aW9ucy4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMvY2FsbC1iYXNlLXJlc29sdXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvY2FsbC1iYXNlLXJlc29sdXRpb24tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9jYWxsLWJhc2UtcmVzb2x1
dGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorUEFTUyBvb2Fv
Ym9hYnV1YXVidWFib29hb2JvYWIgc2hvdWxkIGJlIG9vYW9ib2FidXVhdWJ1YWJvb2FvYm9hYiwg
YW5kIGlzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvY2FsbC1iYXNlLXJlc29sdXRpb24uaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2NhbGwtYmFzZS1yZXNvbHV0aW9uLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2NhbGwtYmFzZS1yZXNvbHV0
aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODcgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
ICA8c2NyaXB0PgorICAgIHdpbmRvdy5uYW1lID0gIm8iOworICAgIGZ1bmN0aW9uIGYoKSB7IAor
ICAgICAgcmV0dXJuIHRoaXMgPyB0aGlzLm5hbWUgOiAidCI7CisgICAgfQorICAgIGZ1bmN0aW9u
IGcoKSB7IAorICAgICAgInVzZSBzdHJpY3QiOworICAgICAgcmV0dXJuIHRoaXMgPyB0aGlzLm5h
bWUgOiAidSI7CisgICAgfQorICAgIGZ1bmN0aW9uIGgoKSB7IAorICAgICAgcmV0dXJuIHRoaXMg
PyB0aGlzLm5hbWUgOiAidiI7CisgICAgfQorICA8L3NjcmlwdD4KKworICA8aWZyYW1lIG5hbWU9
ImkiIAorICAgIHNyYz0iamF2YXNjcmlwdDoKKworICAgICAgICB3aW5kb3cuZiA9IHBhcmVudC5m
OworICAgICAgICB3aW5kb3cuZyA9IHBhcmVudC5nOworICAgICAgICB3aW5kb3cuYSA9IHsgbmFt
ZTonYScsIGY6cGFyZW50LmYsIGc6cGFyZW50LmcgfTsKKyAgICAgICAgd2luZG93LmIgPSB7IG5h
bWU6J2InLCBmOnBhcmVudC5mLCBnOnBhcmVudC5nIH07CisgICAgICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh3aW5kb3csICdoJywgeyBnZXQ6IChmdW5jdGlvbigpeyByZXR1cm4gcGFyZW50Lmg7
IH0pfSk7CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCAnaCcsIHsgZ2V0OiAoZnVu
Y3Rpb24oKXsgcmV0dXJuIHBhcmVudC5oOyB9KX0pOworICAgICAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkoYiwgJ2gnLCB7IGdldDogKGZ1bmN0aW9uKCl7IHJldHVybiBwYXJlbnQuaDsgfSl9KTsK
KworICAgICAgICB2YXIgcmVzdWx0cyA9ICcnOworCisgICAgICAgIC8qIFRocmVlIG9mIHRoZSBm
aXJzdCBmb3VyIGNhc2VzIHBhc3MgdW5kZWZpbmVkIChwcm9tb3RlZCBpbnNpZGUgdGhlIGNhbGxl
ZSB0byB0aGUgY2FsbGVlJ3MgZ2xvYmFsIG9iamVjdCkuICovCisgICAgICAgIC8qIGEuZigpIGlz
IHRoZSBvbmUgZXhjZXB0aW9uLCB3aGljaCBwYXNzZXMgdGhlIGJhc2UsIGEsIGFzIHRoZSB0aGlz
IG9iamVjdC4gKi8KKyAgICAgICAgcmVzdWx0cyArPSAoZnVuY3Rpb24oKXtyZXR1cm4gZigpO30p
KCk7CisgICAgICAgIHJlc3VsdHMgKz0gKGZ1bmN0aW9uKCl7cmV0dXJuICgxLGYpKCk7fSkoKTsK
KyAgICAgICAgcmVzdWx0cyArPSAoZnVuY3Rpb24oKXtyZXR1cm4gYS5mKCk7fSkoKTsKKyAgICAg
ICAgcmVzdWx0cyArPSAoZnVuY3Rpb24oKXtyZXR1cm4gZXZhbCgnZigpJyk7fSkoKTsKKyAgICAg
ICAgLyogU2FtZSBjYXNlcyBhcyBhYm92ZSwgYnV0IHdyYXBwZWQgaW4gYSB3aXRoLiBUaGUgZmly
c3QgJiBsYXN0IG9mIHRoZXNlIGNhc2VzIHBhc3MgYiwgKi8KKyAgICAgICAgLyogdGhlIG9iamVj
dCBzY29wZWQgYnkgdGhlIHdpdGgsIGFzIHRoZSB0aGlzIHZhbHVlLiAqLworICAgICAgICAvKiBh
LmYoKSBzdGlsbCBwYXNzZXMgdGhlIGV4cGxpY2l0IGJhc2UsIGEuICgxLGYpKCkgaXMgYSBsaXR0
bGUgdHJpY2tzaWVyIC0gdGhpcyBwYXNzZXMgKi8KKyAgICAgICAgLyogdW5kZWZpbmVkIChwcm9t
b3RlZCB0byB0aGUgY2FsbGVlIGdsb2JhbCBvYmplY3QpIHNpbmNlIHRlaCBjb21tYSBvcGVyYXRv
ciBjYWxsZXMgR2V0VmFsdWUgKi8KKyAgICAgICAgLyogb24gdGhlIHJlZmVyZW5jZSAoc2VlIEVT
NSAxMS4xNC4pICovCisgICAgICAgIHJlc3VsdHMgKz0gKGZ1bmN0aW9uKCl7d2l0aChiKXsgcmV0
dXJuIChmdW5jdGlvbigpeyByZXR1cm4gZigpO30pKCk7IH19KSgpOworICAgICAgICByZXN1bHRz
ICs9IChmdW5jdGlvbigpe3dpdGgoYil7IHJldHVybiAoZnVuY3Rpb24oKXsgcmV0dXJuICgxLGYp
KCk7fSkoKTsgfX0pKCk7CisgICAgICAgIHJlc3VsdHMgKz0gKGZ1bmN0aW9uKCl7d2l0aChiKXsg
cmV0dXJuIChmdW5jdGlvbigpeyByZXR1cm4gYS5mKCk7fSkoKTsgfX0pKCk7CisgICAgICAgIHJl
c3VsdHMgKz0gKGZ1bmN0aW9uKCl7d2l0aChiKXsgcmV0dXJuIChmdW5jdGlvbigpeyByZXR1cm4g
ZXZhbCgnZigpJyk7fSkoKTsgfX0pKCk7CisKKyAgICAgICAgLyogU2FtZSB0ZXN0cyBhcyBhYm92
ZSwgYnV0IHdpdGggYSBzdHJpY3QgY2FsbGVlLiAqLworICAgICAgICAvKiBXZSBleHBlY3QgdGhl
IHNhbWUgcmVzdWx0cywgZXhjZXB0IHVuZGVmaW5lZCB0aGlzIGlzIG5vdCByZXBsYWNlZCB3aXRo
IHRoZSBnbG9iYWwgb2JqZWN0LiAqLworICAgICAgICByZXN1bHRzICs9IChmdW5jdGlvbigpe3Jl
dHVybiBnKCk7fSkoKTsKKyAgICAgICAgcmVzdWx0cyArPSAoZnVuY3Rpb24oKXtyZXR1cm4gKDEs
ZykoKTt9KSgpOworICAgICAgICByZXN1bHRzICs9IChmdW5jdGlvbigpe3JldHVybiBhLmcoKTt9
KSgpOworICAgICAgICByZXN1bHRzICs9IChmdW5jdGlvbigpe3JldHVybiBldmFsKCdnKCknKTt9
KSgpOworICAgICAgICByZXN1bHRzICs9IChmdW5jdGlvbigpe3dpdGgoYil7IHJldHVybiBnKCk7
IH19KSgpOworICAgICAgICByZXN1bHRzICs9IChmdW5jdGlvbigpe3dpdGgoYil7IHJldHVybiAo
MSxnKSgpOyB9fSkoKTsKKyAgICAgICAgcmVzdWx0cyArPSAoZnVuY3Rpb24oKXt3aXRoKGIpeyBy
ZXR1cm4gYS5nKCk7IH19KSgpOworICAgICAgICByZXN1bHRzICs9IChmdW5jdGlvbigpe3dpdGgo
Yil7IHJldHVybiAoZnVuY3Rpb24oKXsgcmV0dXJuIGV2YWwoJ2coKScpO30pKCk7IH19KSgpOwor
CisgICAgICAgIC8qIFNhbWUgYXMgdGhlIGZpcnN0IHNldCwgYnV0IGggaXMgYSBnZXR0ZXIgcHJv
cGVydHkuICovCisgICAgICAgIHJlc3VsdHMgKz0gKGZ1bmN0aW9uKCl7cmV0dXJuIGgoKTt9KSgp
OworICAgICAgICByZXN1bHRzICs9IChmdW5jdGlvbigpe3JldHVybiAoMSxoKSgpO30pKCk7Cisg
ICAgICAgIHJlc3VsdHMgKz0gKGZ1bmN0aW9uKCl7cmV0dXJuIGEuaCgpO30pKCk7CisgICAgICAg
IHJlc3VsdHMgKz0gKGZ1bmN0aW9uKCl7cmV0dXJuIGV2YWwoJ2goKScpO30pKCk7CisgICAgICAg
IHJlc3VsdHMgKz0gKGZ1bmN0aW9uKCl7d2l0aChiKXsgcmV0dXJuIGgoKTsgfX0pKCk7CisgICAg
ICAgIHJlc3VsdHMgKz0gKGZ1bmN0aW9uKCl7d2l0aChiKXsgcmV0dXJuICgxLGgpKCk7IH19KSgp
OworICAgICAgICByZXN1bHRzICs9IChmdW5jdGlvbigpe3dpdGgoYil7IHJldHVybiBhLmgoKTsg
fX0pKCk7CisgICAgICAgIHJlc3VsdHMgKz0gKGZ1bmN0aW9uKCl7d2l0aChiKXsgcmV0dXJuIChm
dW5jdGlvbigpeyByZXR1cm4gZXZhbCgnaCgpJyk7fSkoKTsgfX0pKCk7CisKKyAgICAgICAgdmFy
IGV4cGVjdGVkID0gJ29vYW9ib2FidXVhdWJ1YWJvb2FvYm9hYic7CisKKyAgICAgICAgaWYgKHJl
c3VsdHMgPT0gZXhwZWN0ZWQpCisgICAgICAgICAgICBwYXJlbnQudGVzdFBhc3NlZChyZXN1bHRz
ICsgJyBzaG91bGQgYmUgJyArIGV4cGVjdGVkICsgJywgYW5kIGlzLicpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBwYXJlbnQudGVzdEZhaWxlZChyZXN1bHRzICsgJyBzaG91bGQgYmUgJyAr
IGV4cGVjdGVkICsgJywgYnV0IHdhcyBub3QuJyk7CisgICAgICAgIHBhcmVudC5zdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworICAgICI+CisgIDwvaWZyYW1lPgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVf
U3RyaW5nLzE1LjUuNC8xNS41LjQuNF9TdHJpbmcucHJvdG90eXBlLmNoYXJBdC9TMTUuNS40LjRf
QTFfVDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3NwdXRuaWsvQ29u
Zm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC40X1N0
cmluZy5wcm90b3R5cGUuY2hhckF0L1MxNS41LjQuNF9BMV9UMy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDkwOTM2KQorKysgTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVf
T2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjRfU3RyaW5nLnByb3RvdHlwZS5jaGFy
QXQvUzE1LjUuNC40X0ExX1QzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIFMxNS41LjQuNF9BMV9UMwogCi1QQVNTIAorRkFJTCBUeXBlRXJyb3I6IFR5cGUgZXJy
b3IKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1h
bmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuNV9TdHJpbmcu
cHJvdG90eXBlLmNoYXJDb2RlQXQvUzE1LjUuNC41X0ExX1QzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3Rz
LzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuNV9TdHJpbmcucHJvdG90eXBlLmNoYXJDb2RlQXQv
UzE1LjUuNC41X0ExX1QzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTA5MzYpCisrKyBMYXlvdXRU
ZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1
LjUuNC8xNS41LjQuNV9TdHJpbmcucHJvdG90eXBlLmNoYXJDb2RlQXQvUzE1LjUuNC41X0ExX1Qz
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIFMxNS41LjQuNV9B
MV9UMwogCi1QQVNTIAorRkFJTCBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIAogVEVTVCBDT01QTEVU
RQogCkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmpl
Y3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuNl9TdHJpbmcucHJvdG90eXBlLmNvbmNhdC9T
MTUuNS40LjZfQTFfVDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Nw
dXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1
LjUuNC42X1N0cmluZy5wcm90b3R5cGUuY29uY2F0L1MxNS41LjQuNl9BMV9UMy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDkwOTM2KQorKysgTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8x
NV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjZfU3RyaW5nLnByb3Rv
dHlwZS5jb25jYXQvUzE1LjUuNC42X0ExX1QzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKIFMxNS41LjQuNl9BMV9UMwogCi1QQVNTIAorRkFJTCBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlr
L0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQu
N19TdHJpbmcucHJvdG90eXBlLmluZGV4T2YvUzE1LjUuNC43X0ExX1QzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9P
YmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuN19TdHJpbmcucHJvdG90eXBlLmluZGV4
T2YvUzE1LjUuNC43X0ExX1QzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTA5MzYpCisrKyBMYXlv
dXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5n
LzE1LjUuNC8xNS41LjQuN19TdHJpbmcucHJvdG90eXBlLmluZGV4T2YvUzE1LjUuNC43X0ExX1Qz
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIFMxNS41LjQuN19B
MV9UMwogCi1QQVNTIAorRkFJTCBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIAogVEVTVCBDT01QTEVU
RQogCkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmpl
Y3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuOF9TdHJpbmcucHJvdG90eXBlLmxhc3RJbmRl
eE9mL1MxNS41LjQuOF9BMV9UMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41
LjQvMTUuNS40LjhfU3RyaW5nLnByb3RvdHlwZS5sYXN0SW5kZXhPZi9TMTUuNS40LjhfQTFfVDMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MDkzNikKKysrIExheW91dFRlc3RzL3NwdXRuaWsvQ29u
Zm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC44X1N0
cmluZy5wcm90b3R5cGUubGFzdEluZGV4T2YvUzE1LjUuNC44X0ExX1QzLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIFMxNS41LjQuOF9BMV9UMwogCi1QQVNTIAor
RkFJTCBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlv
dXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5n
LzE1LjUuNC8xNS41LjQuMTBfU3RyaW5nLnByb3RvdHlwZS5tYXRjaC9TMTUuNS40LjEwX0ExX1Qz
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1h
bmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTBfU3RyaW5n
LnByb3RvdHlwZS5tYXRjaC9TMTUuNS40LjEwX0ExX1QzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
OTA5MzYpCisrKyBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmpl
Y3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTBfU3RyaW5nLnByb3RvdHlwZS5tYXRjaC9T
MTUuNS40LjEwX0ExX1QzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIFMxNS41LjQuMTBfQTFfVDMKIAotUEFTUyAKK0ZBSUwgVHlwZUVycm9yOiBUeXBlIGVycm9y
CiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5j
ZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjEyX1N0cmluZy5w
cm90b3R5cGUuc2VhcmNoL1MxNS41LjQuMTJfQTFfVDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUu
NV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xMl9TdHJpbmcucHJvdG90eXBlLnNlYXJjaC9TMTUuNS40
LjEyX0ExX1QzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTA5MzYpCisrKyBMYXlvdXRUZXN0cy9z
cHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8x
NS41LjQuMTJfU3RyaW5nLnByb3RvdHlwZS5zZWFyY2gvUzE1LjUuNC4xMl9BMV9UMy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBTMTUuNS40LjEyX0ExX1QzCiAK
LVBBU1MgCitGQUlMIFR5cGVFcnJvcjogVHlwZSBlcnJvcgogCiBURVNUIENPTVBMRVRFCiAKSW5k
ZXg6IExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUu
NV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xM19TdHJpbmcucHJvdG90eXBlLnNsaWNlL1MxNS41LjQu
MTNfQTFfVDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3NwdXRuaWsv
Q29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4x
M19TdHJpbmcucHJvdG90eXBlLnNsaWNlL1MxNS41LjQuMTNfQTFfVDMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA5MDkzNikKKysrIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0
aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xM19TdHJpbmcucHJvdG90eXBl
LnNsaWNlL1MxNS41LjQuMTNfQTFfVDMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogUzE1LjUuNC4xM19BMV9UMwogCi1QQVNTIAorRkFJTCBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0Nv
bmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTRf
U3RyaW5nLnByb3RvdHlwZS5zcGxpdC9TMTUuNS40LjE0X0ExX1QzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmpl
Y3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTRfU3RyaW5nLnByb3RvdHlwZS5zcGxpdC9T
MTUuNS40LjE0X0ExX1QzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTA5MzYpCisrKyBMYXlvdXRU
ZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1
LjUuNC8xNS41LjQuMTRfU3RyaW5nLnByb3RvdHlwZS5zcGxpdC9TMTUuNS40LjE0X0ExX1QzLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIFMxNS41LjQuMTRfQTFf
VDMKIAotUEFTUyAKK0ZBSUwgVHlwZUVycm9yOiBUeXBlIGVycm9yCiAKIFRFU1QgQ09NUExFVEUK
IApJbmRleDogTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0
cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjE1X1N0cmluZy5wcm90b3R5cGUuc3Vic3RyaW5n
L1MxNS41LjQuMTVfQTFfVDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40
LzE1LjUuNC4xNV9TdHJpbmcucHJvdG90eXBlLnN1YnN0cmluZy9TMTUuNS40LjE1X0ExX1QzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gOTA5MzYpCisrKyBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZv
cm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTVfU3Ry
aW5nLnByb3RvdHlwZS5zdWJzdHJpbmcvUzE1LjUuNC4xNV9BMV9UMy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBTMTUuNS40LjE1X0ExX1QzCiAKLVBBU1MgCitG
QUlMIFR5cGVFcnJvcjogVHlwZSBlcnJvcgogCiBURVNUIENPTVBMRVRFCiAK
</data>
<flag name="review"
          id="95642"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101020</attachid>
            <date>2011-07-15 12:00:06 -0700</date>
            <delta_ts>2011-07-15 12:12:02 -0700</delta_ts>
            <desc>Added asserts, changed calls in WebCore/WebKit/WebKit2 to pass correct global object to call.</desc>
            <filename>64250.3.patch</filename>
            <type>text/plain</type>
            <size>68588</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTEwMjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOTcgQEAK
KzIwMTEtMDctMTQgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDI1MAor
ICAgICAgICBHbG9iYWwgc3RyaWN0IG1vZGUgZnVuY3Rpb24gbGVha2luZyBnbG9iYWwgb2JqZWN0
IGFzICJ0aGlzIi4KKworICAgICAgICBUaGUgcm9vdCBwcm9ibGVtIGhlcmUgaXMgdGhhdCB3ZSBw
YXNzIHRoZSB3cm9uZyB2YWx1ZXMgaW50bworICAgICAgICBjYWxscywgYW5kIHRoZW4gdHJ5IHRv
IGZpeCB0aGVtIHVwIGluIHRoZSBjYWxsZWUuIENvcnJlY3QKKyAgICAgICAgYmVoYXZpb3VyIHBl
ciB0aGUgc3BlYyBpcyB0byBwYXNzIGluIHRoZSB2YWx1ZSB1bmRlZmluZWQsCisgICAgICAgIGFz
IHRoaXMgdW5sZXNzIGVpdGhlciAoMSkgdGhlIGZ1bmN0aW9uIGNhbGwgaXMgYmFzZWQgb24gYW4K
KyAgICAgICAgZXhwbGljaXQgcHJvcGVydHkgYWNjZXNzIG9yICgyKSB0aGUgYmFzZSBvZiB0aGUg
Y2FsbCBjb21lcworICAgICAgICBkaXJlY3RseSBmcm9tIGEgJ3dpdGgnLgorCisgICAgICAgIFRo
aXMgY2hhbmdlIGRvZXMgYXdheSB3aXRoIHRoZSBuZWVkIGZvciB0aGlzIGNvbnZlcnNpb24gb2YK
KyAgICAgICAgb2JqZWN0cyAobm9uIHN0cmljdCBjb2RlIHNob3VsZCBvbmx5IGJveCBwcmltaXRp
dmVzKSwgYW5kCisgICAgICAgIGRvZXMgYXdheSB3aXRoIGFsbCB0aGlzIGNvbnZlcnNpb24gZm9y
IHN0cmljdCBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYXkgaGF2ZSB3ZWIgY29t
cGF0aWJpbGl0eSByYW1pZmljYXRpb25zLCBhbmQgbWF5CisgICAgICAgIHJlcXVpcmUgc29tZSBh
ZHZvY2FjeS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVt
cCk6CisgICAgICAgICAgICAtIFJlbW92ZWQgb3BfY29udmVydF90aGlzX3N0cmljdCwgYWRkZWQg
b3BfcmVzb2x2ZV93aXRoX3RoaXMuCisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAg
ICAgICAgICAtIFJlbW92ZWQgb3BfY29udmVydF90aGlzX3N0cmljdCwgYWRkZWQgb3BfcmVzb2x2
ZV93aXRoX3RoaXMuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgor
ICAgICAgICAgICAgLSBSZW1vdmVkIG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIGFkZGVkIG9wX3Jl
c29sdmVfd2l0aF90aGlzLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAgICAgLSBSZW1vdmVkIG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIGFkZGVk
IG9wX3Jlc29sdmVfd2l0aF90aGlzLgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwOgorICAgICAgICAoSlNDOjpFdmFsRnVuY3Rpb25DYWxsTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgICAgICAtIFJlbW92ZWQgb3BfY29udmVydF90aGlzX3N0cmljdCwgYWRkZWQgb3Bf
cmVzb2x2ZV93aXRoX3RoaXMuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICAg
ICAtIENoYW5nZSBOZWVkc1RoaXNDb252ZXJzaW9uIGNoZWNrIHRvIHRlc3QgZm9yIEpTU3RyaW5n
J3MgdnB0cgorICAgICAgICAgICAgICAob2JqZWN0cyBubyBsb25nZXIgbmVlZCBjb252ZXJzaW9u
KS4KKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpyZXNvbHZlVGhpc0FuZFByb3BlcnR5KToKKyAgICAgICAgICAgIC0gQmFz
ZWQgb24gcmVzb2x2ZUJhc2VBbmRQcm9wZXJ0eSwgYnV0IHByb2R1Y2UgY29ycmVjdCB0aGlzIHZh
bHVlLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAg
ICAgICAgLSBSZW1vdmVkIG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIGFkZGVkIG9wX3Jlc29sdmVf
d2l0aF90aGlzLgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAg
ICAgICAgLSBSZW1vdmVkIG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIGFkZGVkIG9wX3Jlc29sdmVf
d2l0aF90aGlzLgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rl
cy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX3dpdGhfdGhpcyk6Cisg
ICAgICAgICAgICAtIFJlbW92ZWQgb3BfY29udmVydF90aGlzX3N0cmljdCwgYWRkZWQgb3BfcmVz
b2x2ZV93aXRoX3RoaXMuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jb252ZXJ0X3RoaXMp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NvbnZlcnRfdGhpcyk6CisgICAgICAg
ICAgICAtIENoYW5nZSBOZWVkc1RoaXNDb252ZXJzaW9uIGNoZWNrIHRvIHRlc3QgZm9yIEpTU3Ry
aW5nJ3MgdnB0cgorICAgICAgICAgICAgICAob2JqZWN0cyBubyBsb25nZXIgbmVlZCBjb252ZXJz
aW9uKS4KKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3Jlc29sdmVfd2l0aF90aGlzKToKKyAgICAgICAgICAgIC0gUmVtb3ZlZCBv
cF9jb252ZXJ0X3RoaXNfc3RyaWN0LCBhZGRlZCBvcF9yZXNvbHZlX3dpdGhfdGhpcy4KKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2NvbnZlcnRfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfY29udmVydF90aGlzKToKKyAgICAgICAgICAgIC0gQ2hhbmdlIE5lZWRzVGhp
c0NvbnZlcnNpb24gY2hlY2sgdG8gdGVzdCBmb3IgSlNTdHJpbmcncyB2cHRyCisgICAgICAgICAg
ICAgIChvYmplY3RzIG5vIGxvbmdlciBuZWVkIGNvbnZlcnNpb24pLgorICAgICAgICAqIGppdC9K
SVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAg
ICAgICAgIC0gUmVtb3ZlZCBvcF9jb252ZXJ0X3RoaXNfc3RyaWN0LCBhZGRlZCBvcF9yZXNvbHZl
X3dpdGhfdGhpcy4KKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAgICAgIC0gUmVt
b3ZlZCBvcF9jb252ZXJ0X3RoaXNfc3RyaWN0LCBhZGRlZCBvcF9yZXNvbHZlX3dpdGhfdGhpcy4K
KyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAgICAgLSByZW1vdmVk
IE5lZWRzVGhpc0NvbnZlcnNpb24gZmxhZywgYWRkZWQgSXNFbnZpcm9ubWVudFJlY29yZC4KKyAg
ICAgICAgKiBydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaDoKKyAgICAgICAgICAgIC0gcmVt
b3ZlZCBOZWVkc1RoaXNDb252ZXJzaW9uIGZsYWcsIGFkZGVkIElzRW52aXJvbm1lbnRSZWNvcmQu
CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRl
cjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgICAgIC0gcmVtb3ZlZCBOZWVkc1RoaXNDb252
ZXJzaW9uLgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAoSlNDOjpU
eXBlSW5mbzo6aXNFbnZpcm9ubWVudFJlY29yZCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpv
dmVycmlkZXNIYXNJbnN0YW5jZSk6CisgICAgICAgICAgICAtIHJlbW92ZWQgTmVlZHNUaGlzQ29u
dmVyc2lvbiBmbGFnLCBhZGRlZCBJc0Vudmlyb25tZW50UmVjb3JkLgorICAgICAgICAqIHJ1bnRp
bWUvSlNWYWx1ZS5oOgorICAgICAgICAgICAgLSByZW1vdmVkIE5lZWRzVGhpc0NvbnZlcnNpb24u
CisgICAgICAgICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAgICAgICAtIENv
cnJlY3RlZCBTdHJ1Y3R1cmVGbGFncyBpbmhlcml0YW5jZS4KKyAgICAgICAgKiBydW50aW1lL1N0
cmljdEV2YWxBY3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAgICAgLSBBZGRlZCBJc0Vudmlyb25tZW50UmVj
b3JkIHRvIFN0cnVjdHVyZUZsYWdzLCBhZGRkZWQgY3JlYXRlU3RydWN0dXJlLgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICAgICAtIHJlbW92ZWQgTmVlZHNUaGlzQ29u
dmVyc2lvbi4KKyAgICAgICAgKiB0ZXN0cy9tb3ppbGxhL2VjbWEvU3RyaW5nLzE1LjUuNC42LTIu
anM6CisgICAgICAgIChnZXRUZXN0Q2FzZXMpOgorICAgICAgICAgICAgLSBSZW1vdmVkIGludmFs
aWQgdGVzdCBjYXNlLgorCiAyMDExLTA3LTE0ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBBZGQgT3duUHRyIHNwZWNpYWxpemF0aW9uIGZvciBF
Y29yZV9QaXBlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAJKHJldmlzaW9uIDkwOTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMiwxMSArNTIyLDYgQEAgdm9p
ZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgcHJpbnRm
KCJbJTRkXSBjb252ZXJ0X3RoaXMgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywg
cjApLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNl
IG9wX2NvbnZlcnRfdGhpc19zdHJpY3Q6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBjb252ZXJ0X3RoaXNfc3RyaWN0
ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfb2JqZWN0OiB7CiAg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHByaW50
ZigiWyU0ZF0gbmV3X29iamVjdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMs
IHIwKS5kYXRhKCkpOwpAQCAtODAzLDYgKzc5OCwxMyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChF
eGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludGYoIlslNGRdIHJlc29sdmVfd2l0
aF9iYXNlICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRp
ZmllcnNbaWQwXSkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAg
ICAgIGNhc2Ugb3BfcmVzb2x2ZV93aXRoX3RoaXM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBw
cmludGYoIlslNGRdIHJlc29sdmVfd2l0aF90aGlzICVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCBy
ZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRh
KCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7CiAgICAgICAg
ICAgICBwcmludEdldEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJnZXRfYnlfaWQiKTsKICAg
ICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
Y29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNv
ZGUuaAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIG1hY3JvKG9wX2NyZWF0ZV90aGlzLCAzKSBcCiAgICAgICAgIG1hY3JvKG9wX2dl
dF9jYWxsZWUsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfY29udmVydF90aGlzLCAyKSBcCi0gICAg
ICAgIG1hY3JvKG9wX2NvbnZlcnRfdGhpc19zdHJpY3QsIDIpIFwKICAgICAgICAgXAogICAgICAg
ICBtYWNybyhvcF9uZXdfb2JqZWN0LCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX25ld19hcnJheSwg
NCkgXApAQCAtMTA3LDYgKzEwNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhv
cF9yZXNvbHZlX2Jhc2UsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfZW5zdXJlX3Byb3BlcnR5X2V4
aXN0cywgMykgXAogICAgICAgICBtYWNybyhvcF9yZXNvbHZlX3dpdGhfYmFzZSwgNCkgXAorICAg
ICAgICBtYWNybyhvcF9yZXNvbHZlX3dpdGhfdGhpcywgNCkgXAogICAgICAgICBtYWNybyhvcF9n
ZXRfYnlfaWQsIDgpIFwKICAgICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX3NlbGYsIDgpIFwKICAg
ICAgICAgbWFjcm8ob3BfZ2V0X2J5X2lkX3NlbGZfbGlzdCwgOCkgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAJKHJldmlzaW9uIDkwOTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNCwxMSArNDE0
LDEwIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihGdW4KICAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOwogICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuY1Byb3RvLT5pbmRleCgpKTsKICAgICB9IGVsc2UgaWYg
KGZ1bmN0aW9uQm9keS0+dXNlc1RoaXMoKSB8fCBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKSB7Ci0g
ICAgICAgIGlmIChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgZW1pdE9w
Y29kZShvcF9jb252ZXJ0X3RoaXNfc3RyaWN0KTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAo
IWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgICAgIGVtaXRPcGNvZGUob3Bf
Y29udmVydF90aGlzKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1JlZ2lz
dGVyLmluZGV4KCkpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhpc1Jl
Z2lzdGVyLmluZGV4KCkpOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0xNDE1LDYgKzE0MTQs
NTMgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAgIHJldHVy
biBiYXNlRHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29s
dmVXaXRoVGhpcyhSZWdpc3RlcklEKiBiYXNlRHN0LCBSZWdpc3RlcklEKiBwcm9wRHN0LCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKK3sKKyAgICBzaXplX3QgZGVwdGggPSAwOworICAgIGlu
dCBpbmRleCA9IDA7CisgICAgSlNPYmplY3QqIGdsb2JhbE9iamVjdCA9IDA7CisgICAgYm9vbCBy
ZXF1aXJlc0R5bmFtaWNDaGVja3MgPSBmYWxzZTsKKyAgICBpZiAoIWZpbmRTY29wZWRQcm9wZXJ0
eShwcm9wZXJ0eSwgaW5kZXgsIGRlcHRoLCBmYWxzZSwgcmVxdWlyZXNEeW5hbWljQ2hlY2tzLCBn
bG9iYWxPYmplY3QpIHx8ICFnbG9iYWxPYmplY3QgfHwgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSB7
CisgICAgICAgIC8vIFdlIGNhbid0IG9wdGltaXNlIGF0IGFsbCA6LSgKKyAgICAgICAgZW1pdE9w
Y29kZShvcF9yZXNvbHZlX3dpdGhfdGhpcyk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChiYXNlRHN0LT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BE
c3QtPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQo
cHJvcGVydHkpKTsKKyAgICAgICAgcmV0dXJuIGJhc2VEc3Q7CisgICAgfQorCisgICAgYm9vbCBm
b3JjZUdsb2JhbFJlc29sdmUgPSBmYWxzZTsKKworICAgIC8vIEdsb2JhbCBvYmplY3QgaXMgdGhl
IGJhc2UKKyAgICBlbWl0TG9hZChiYXNlRHN0LCBqc1VuZGVmaW5lZCgpKTsKKworICAgIGlmIChp
bmRleCAhPSBtaXNzaW5nU3ltYm9sTWFya2VyKCkgJiYgIWZvcmNlR2xvYmFsUmVzb2x2ZSkgewor
ICAgICAgICAvLyBEaXJlY3RseSBpbmRleCB0aGUgcHJvcGVydHkgbG9va3VwIGFjcm9zcyBtdWx0
aXBsZSBzY29wZXMuCisgICAgICAgIGVtaXRHZXRTY29wZWRWYXIocHJvcERzdCwgZGVwdGgsIGlu
ZGV4LCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gYmFzZURzdDsKKyAgICB9CisgICAg
aWYgKHNob3VsZEF2b2lkUmVzb2x2ZUdsb2JhbCgpKSB7CisgICAgICAgIGVtaXRPcGNvZGUob3Bf
cmVzb2x2ZSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wRHN0LT5pbmRleCgp
KTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7
CisgICAgICAgIHJldHVybiBiYXNlRHN0OworICAgIH0KKyNpZiBFTkFCTEUoSklUKQorICAgIG1f
Y29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwor
I2VuZGlmCisjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQorICAgIG1fY29kZUJsb2NrLT5hZGRHbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyNlbmRpZgorICAg
IGVtaXRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJv
cERzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHBy
b3BlcnR5KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZCgwKTsKKyAgICBpZiAocmVxdWlyZXNEeW5hbWljQ2hlY2tzKQorICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZGVwdGgpOworICAgIHJldHVybiBiYXNlRHN0OworfQorCiB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TWV0aG9kQ2hlY2soKQogewogICAgIGVtaXRPcGNv
ZGUob3BfbWV0aG9kX2NoZWNrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDkwOTM2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsNiArMzEzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlQmFzZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmVCYXNl
Rm9yUHV0KFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZVdpdGhCYXNlKFJlZ2lzdGVySUQqIGJhc2VEc3Qs
IFJlZ2lzdGVySUQqIHByb3BEc3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmVXaXRoVGhpcyhSZWdpc3RlcklEKiBiYXNlRHN0LCBS
ZWdpc3RlcklEKiBwcm9wRHN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7CiAKICAgICAg
ICAgdm9pZCBlbWl0TWV0aG9kQ2hlY2soKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gOTA5MzYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsNyBAQCBSZWdpc3RlcklEKiBFdmFsRnVuY3Rp
b25DYWxsTm9kZTo6ZW1pdEJ5CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmMgPSBnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRz
KGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCkgLSBzdGFydE9mZnNldCgpICsgNCwgNCwgMCk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRSZXNv
bHZlV2l0aEJhc2UoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgZnVuYy5nZXQoKSwgZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ldmFsKTsKKyAgICBnZW5lcmF0b3IuZW1pdFJlc29sdmVX
aXRoVGhpcyhjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBmdW5jLmdldCgpLCBnZW5lcmF0
b3IucHJvcGVydHlOYW1lcygpLmV2YWwpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGxF
dmFsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuYy5nZXQoKSksIGZ1bmMuZ2V0
KCksIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsK
IH0KIApAQCAtMzc0LDcgKzM3NCw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVO
b2RlOjplbWkKICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2Fy
Z3MpOwogICAgIGludCBpZGVudGlmaWVyU3RhcnQgPSBkaXZvdCgpIC0gc3RhcnRPZmZzZXQoKTsK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGlkZW50aWZpZXJTdGFydCArIG1faWRl
bnQubGVuZ3RoKCksIG1faWRlbnQubGVuZ3RoKCksIDApOwotICAgIGdlbmVyYXRvci5lbWl0UmVz
b2x2ZVdpdGhCYXNlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGZ1bmMuZ2V0KCksIG1f
aWRlbnQpOworICAgIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVdpdGhUaGlzKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGZ1bmMuZ2V0KCksIG1faWRlbnQpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0LCBmdW5j
LmdldCgpKSwgZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgc3RhcnRPZmZzZXQo
KSwgZW5kT2Zmc2V0KCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTk3LDEwICs5OTcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAKICAgICBjYXNlIENvbnZlcnRUaGlzOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IHRoaXNWYWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHRl
bXAodGhpcyk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh0
aGlzVmFsdWUuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0ZW1wLmdwcigpKTsK
LSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hUZXN0OChKSVRDb21waWxlcjo6
Tm9uWmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgU3RydWN0dXJlOjp0eXBl
SW5mb0ZsYWdzT2Zmc2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE5lZWRzVGhpc0Nv
bnZlcnNpb24pKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoUHRyKEpJ
VENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGhpc1ZhbHVlLmdwcigpKSwg
SklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc1N0cmluZ1ZQ
dHIpKSk7CiAKICAgICAgICAgY2VsbFJlc3VsdCh0aGlzVmFsdWUuZ3ByKCksIG1fY29tcGlsZUlu
ZGV4KTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDkwOTM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzIxLDYgKzMyMSw1MCBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6cmVz
b2x2ZUJhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnBy
ZXRlcjo6cmVzb2x2ZVRoaXNBbmRQcm9wZXJ0eShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5zdHJ1
Y3Rpb24qIHZQQywgSlNWYWx1ZSYgZXhjZXB0aW9uVmFsdWUpCit7CisgICAgaW50IHRoaXNEc3Qg
PSB2UENbMV0udS5vcGVyYW5kOworICAgIGludCBwcm9wRHN0ID0gdlBDWzJdLnUub3BlcmFuZDsK
KyAgICBpbnQgcHJvcGVydHkgPSB2UENbM10udS5vcGVyYW5kOworCisgICAgU2NvcGVDaGFpbk5v
ZGUqIHNjb3BlQ2hhaW4gPSBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsKKyAgICBTY29wZUNoYWlu
SXRlcmF0b3IgaXRlciA9IHNjb3BlQ2hhaW4tPmJlZ2luKCk7CisgICAgU2NvcGVDaGFpbkl0ZXJh
dG9yIGVuZCA9IHNjb3BlQ2hhaW4tPmVuZCgpOworCisgICAgLy8gRklYTUU6IGFkZCBzY29wZURl
cHRoSXNaZXJvIG9wdGltaXphdGlvbgorCisgICAgQVNTRVJUKGl0ZXIgIT0gZW5kKTsKKworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBJZGVu
dGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CisgICAgSlNP
YmplY3QqIGJhc2U7CisgICAgZG8geworICAgICAgICBiYXNlID0gaXRlci0+Z2V0KCk7CisgICAg
ICAgICsraXRlcjsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSk7CisgICAgICAgIGlm
IChiYXNlLT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKKyAgICAg
ICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIGlkZW50KTsK
KyAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZXhj
ZXB0aW9uOworICAgICAgICAgICAgaWYgKGV4Y2VwdGlvblZhbHVlKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihwcm9wRHN0
KSA9IEpTVmFsdWUocmVzdWx0KTsKKyAgICAgICAgICAgIC8vIEFsbCBlbnRyaWVzIG9uIHRoZSBz
Y29wZSBjaGFpbiBzaG91bGQgYmUgRW52aXJvbm1lbnRSZWNvcmRzIChhY3RpdmF0aW9ucyBldGMp
LAorICAgICAgICAgICAgLy8gb3RoZXIgdGhlbiAnd2l0aCcgb2JqZWN0LCB3aGljaCBhcmUgZGly
ZWN0bHkgcmVmZXJlbmNlZCBmcm9tIHRoZSBzY29wZSBjaGFpbiwKKyAgICAgICAgICAgIC8vIGFu
ZCB0aGUgZ2xvYmFsIG9iamVjdC4gSWYgd2UgaGl0IGVpdGhlciBhbiBFbnZpcm9ubWVudFJlY29y
ZCBvciBhIGdsb2JhbAorICAgICAgICAgICAgLy8gb2JqZWN0IGF0IHRoZSBlbmQgb2YgdGhlIHNj
b3BlIGNoYWluLCB0aGlzIGlzIHVuZGVmaW5lZC4gSWYgd2UgaGl0IGEgbm9uLQorICAgICAgICAg
ICAgLy8gRW52aXJvbm1lbnRSZWNvcmQgd2l0aGluIHRoZSBzY29wZSBjaGFpbiwgcGFzcyB0aGUg
YmFzZSBhcyB0aGUgdGhpcyB2YWx1ZS4KKyAgICAgICAgICAgIGlmIChpdGVyID09IGVuZCB8fCBi
YXNlLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pc0Vudmlyb25tZW50UmVjb3JkKCkpCisgICAg
ICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKHRoaXNEc3QpID0ganNVbmRlZmluZWQo
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tl
ZFIodGhpc0RzdCkgPSBKU1ZhbHVlKGJhc2UpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICB9IHdoaWxlIChpdGVyICE9IGVuZCk7CisKKyAgICBleGNlcHRpb25WYWx1
ZSA9IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoY2FsbEZyYW1lLCBpZGVudCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKElOVEVSUFJFVEVSKQogCiBBTFdB
WVNfSU5MSU5FIENhbGxGcmFtZSogSW50ZXJwcmV0ZXI6OnNsaWRlUmVnaXN0ZXJXaW5kb3dGb3JD
YWxsKENvZGVCbG9jayogbmV3Q29kZUJsb2NrLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHNpemVfdCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ2MpCkBA
IC00MDksNyArNDUzLDkgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmNhbGxF
dgogICAgIGlmIChVTkxJS0VMWSghZXZhbCkpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGNh
bGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUpOwogCi0gICAgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFs
RGF0YSgpLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIGNhbGxGcmFtZSwgY2FsbEZyYW1lLT51
bmNoZWNrZWRSKGNvZGVCbG9jay0+dGhpc1JlZ2lzdGVyKCkpLmpzVmFsdWUoKS50b1RoaXNPYmpl
Y3QoY2FsbEZyYW1lKSwgY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAtIHJlZ2lzdGVyRmlsZS0+YmVn
aW4oKSArIHJlZ2lzdGVyT2Zmc2V0LCBzY29wZUNoYWluKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihjb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpKS5qc1Zh
bHVlKCk7CisgICAgQVNTRVJUKGlzVmFsaWRUaGlzT2JqZWN0KHRoaXNWYWx1ZSwgY2FsbEZyYW1l
KSk7CisgICAgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5leGVj
dXRlKGV2YWwsIGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0g
cmVnaXN0ZXJGaWxlLT5iZWdpbigpICsgcmVnaXN0ZXJPZmZzZXQsIHNjb3BlQ2hhaW4pOwogfQog
CiBJbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIoKQpAQCAtNzE4LDYgKzc2NCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNPYmplY3QqIGNoZWNrZWRSZXR1cm4oSlMKIAogSlNWYWx1ZSBJbnRlcnByZXRlcjo6
ZXhlY3V0ZShQcm9ncmFtRXhlY3V0YWJsZSogcHJvZ3JhbSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluLCBKU09iamVjdCogdGhpc09iaikKIHsKKyAgICBB
U1NFUlQoaXNWYWxpZFRoaXNPYmplY3QodGhpc09iaiwgY2FsbEZyYW1lKSk7CiAgICAgQVNTRVJU
KCFzY29wZUNoYWluLT5nbG9iYWxEYXRhLT5leGNlcHRpb24pOwogICAgIEFTU0VSVCghY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCkuaXNDb2xsZWN0b3JCdXN5KCkpOwogICAgIGlmIChjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKS5pc0NvbGxlY3RvckJ1c3koKSkKQEAgLTg0Myw2ICs4OTAsNyBAQCBmYWls
ZWRKU09OUDoKIAogSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IENh
bGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3Mp
CiB7CisgICAgQVNTRVJUKGlzVmFsaWRUaGlzT2JqZWN0KHRoaXNWYWx1ZSwgY2FsbEZyYW1lKSk7
CiAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKTsKICAgICBBU1NFUlQoIWNh
bGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmlzQ29sbGVjdG9yQnVzeSgpKTsKICAgICBpZiAoY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCkuaXNDb2xsZWN0b3JCdXN5KCkpCkBAIC0xMTE4LDE2ICsxMTY2LDE3
IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmVuZFJlcGVhdENhbGwoQ2FsbEZyYW0KICAgICBtX3JlZ2lz
dGVyRmlsZS5zaHJpbmsoY2xvc3VyZS5vbGRFbmQpOwogfQogCi1KU1ZhbHVlIEludGVycHJldGVy
OjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNP
YmplY3QqIHRoaXNPYmosIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKQorSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikKIHsKICAg
ICBKU09iamVjdCogY29tcGlsZUVycm9yID0gZXZhbC0+Y29tcGlsZShjYWxsRnJhbWUsIHNjb3Bl
Q2hhaW4pOwogICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCiAgICAgICAgIHJldHVy
biBjaGVja2VkUmV0dXJuKHRocm93RXJyb3IoY2FsbEZyYW1lLCBjb21waWxlRXJyb3IpKTsKLSAg
ICByZXR1cm4gZXhlY3V0ZShldmFsLCBjYWxsRnJhbWUsIHRoaXNPYmosIG1fcmVnaXN0ZXJGaWxl
LnNpemUoKSArIGV2YWwtPmdlbmVyYXRlZEJ5dGVjb2RlKCkubV9udW1QYXJhbWV0ZXJzICsgUmVn
aXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplLCBzY29wZUNoYWluKTsKKyAgICByZXR1cm4g
ZXhlY3V0ZShldmFsLCBjYWxsRnJhbWUsIHRoaXNWYWx1ZSwgbV9yZWdpc3RlckZpbGUuc2l6ZSgp
ICsgZXZhbC0+Z2VuZXJhdGVkQnl0ZWNvZGUoKS5tX251bVBhcmFtZXRlcnMgKyBSZWdpc3RlckZp
bGU6OkNhbGxGcmFtZUhlYWRlclNpemUsIHNjb3BlQ2hhaW4pOwogfQogCi1KU1ZhbHVlIEludGVy
cHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNPYmplY3QqIHRoaXNPYmosIGludCBnbG9iYWxSZWdpc3Rlck9mZnNldCwgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW4pCitKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVj
dXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIGlu
dCBnbG9iYWxSZWdpc3Rlck9mZnNldCwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pCiB7Cisg
ICAgQVNTRVJUKGlzVmFsaWRUaGlzT2JqZWN0KHRoaXNWYWx1ZSwgY2FsbEZyYW1lKSk7CiAgICAg
QVNTRVJUKCFzY29wZUNoYWluLT5nbG9iYWxEYXRhLT5leGNlcHRpb24pOwogICAgIEFTU0VSVCgh
Y2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuaXNDb2xsZWN0b3JCdXN5KCkpOwogICAgIGlmIChjYWxs
RnJhbWUtPmdsb2JhbERhdGEoKS5pc0NvbGxlY3RvckJ1c3koKSkKQEAgLTExOTEsNyArMTI0MCw3
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIAogICAgIEFTU0VS
VChjb2RlQmxvY2stPm1fbnVtUGFyYW1ldGVycyA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0
aGlzJy4KICAgICBuZXdDYWxsRnJhbWUtPmluaXQoY29kZUJsb2NrLCAwLCBzY29wZUNoYWluLCBj
YWxsRnJhbWUtPmFkZEhvc3RDYWxsRnJhbWVGbGFnKCksIGNvZGVCbG9jay0+bV9udW1QYXJhbWV0
ZXJzLCAwKTsKLSAgICBuZXdDYWxsRnJhbWUtPnVuY2hlY2tlZFIobmV3Q2FsbEZyYW1lLT5ob3N0
VGhpc1JlZ2lzdGVyKCkpID0gSlNWYWx1ZSh0aGlzT2JqKTsKKyAgICBuZXdDYWxsRnJhbWUtPnVu
Y2hlY2tlZFIobmV3Q2FsbEZyYW1lLT5ob3N0VGhpc1JlZ2lzdGVyKCkpID0gdGhpc1ZhbHVlLnRv
VGhpc09iamVjdChuZXdDYWxsRnJhbWUpOwogCiAgICAgUHJvZmlsZXIqKiBwcm9maWxlciA9IFBy
b2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKTsKICAgICBpZiAoKnByb2ZpbGVyKQpA
QCAtMjYwNCw2ICsyNjUzLDIyIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRl
KEV4ZWMKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfcmVzb2x2ZV93aXRoX2Jhc2Up
OwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQorICAgIERFRklORV9PUENPREUo
b3BfcmVzb2x2ZV93aXRoX3RoaXMpIHsKKyAgICAgICAgLyogcmVzb2x2ZV93aXRoX3RoaXMgdGhp
c0RzdChyKSBwcm9wRHN0KHIpIHByb3BlcnR5KGlkKQorCisgICAgICAgICAgIFNlYXJjaGVzIHRo
ZSBzY29wZSBjaGFpbiBmb3IgYW4gb2JqZWN0IGNvbnRhaW5pbmcKKyAgICAgICAgICAgaWRlbnRp
ZmllciBwcm9wZXJ0eSwgYW5kIGlmIG9uZSBpcyBmb3VuZCwgd3JpdGVzIHRoZQorICAgICAgICAg
ICByZXRyaWV2ZWQgcHJvcGVydHkgdmFsdWUgdG8gcmVnaXN0ZXIgcHJvcERzdCwgYW5kIHRoZQor
ICAgICAgICAgICB0aGlzIG9iamVjdCB0byBwYXNzIGluIGEgY2FsbCB0byB0aGlzRHN0LgorCisg
ICAgICAgICAgIElmIHRoZSBwcm9wZXJ0eSBpcyBub3QgZm91bmQsIHJhaXNlcyBhbiBleGNlcHRp
b24uCisgICAgICAgICovCisgICAgICAgIGlmIChVTkxJS0VMWSghcmVzb2x2ZVRoaXNBbmRQcm9w
ZXJ0eShjYWxsRnJhbWUsIHZQQywgZXhjZXB0aW9uVmFsdWUpKSkKKyAgICAgICAgICAgIGdvdG8g
dm1fdGhyb3c7CisKKyAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfcmVzb2x2ZV93aXRo
X3RoaXMpOworICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CisgICAgfQogICAgIERFRklORV9P
UENPREUob3BfZ2V0X2J5X2lkKSB7CiAgICAgICAgIC8qIGdldF9ieV9pZCBkc3QocikgYmFzZShy
KSBwcm9wZXJ0eShpZCkgc3RydWN0dXJlKHNJRCkgbm9wKG4pIG5vcChuKSBub3AobikKIApAQCAt
NDU1NiwzMSArNDYyMSwxMiBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogCiAgICAgICAgIGludCB0
aGlzUmVnaXN0ZXIgPSB2UENbMV0udS5vcGVyYW5kOwogICAgICAgICBKU1ZhbHVlIHRoaXNWYWwg
PSBjYWxsRnJhbWUtPnIodGhpc1JlZ2lzdGVyKS5qc1ZhbHVlKCk7Ci0gICAgICAgIGlmICh0aGlz
VmFsLm5lZWRzVGhpc0NvbnZlcnNpb24oKSkKKyAgICAgICAgaWYgKCF0aGlzVmFsLmlzQ2VsbCgp
IHx8IHRoaXNWYWwuaXNTdHJpbmcoKSkKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2Vk
Uih0aGlzUmVnaXN0ZXIpID0gSlNWYWx1ZSh0aGlzVmFsLnRvVGhpc09iamVjdChjYWxsRnJhbWUp
KTsKIAogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9jb252ZXJ0X3RoaXMpOwogICAg
ICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQotICAgIERFRklORV9PUENPREUob3BfY29u
dmVydF90aGlzX3N0cmljdCkgewotICAgICAgICAvKiBjb252ZXJ0X3RoaXNfc3RyaWN0IHRoaXMo
cikKLSAgICAgICAgIAotICAgICAgICAgVGFrZXMgdGhlIHZhbHVlIGluIHRoZSAndGhpcycgcmVn
aXN0ZXIsIGFuZCBjb252ZXJ0cyBpdCB0bwotICAgICAgICAgaXRzICJ0aGlzIiBmb3JtIGlmIChh
bmQgb25seSBpZikgInRoaXMiIGlzIGFuIG9iamVjdCB3aXRoIGEKLSAgICAgICAgIGN1c3RvbSB0
aGlzIGNvbnZlcnNpb24KLSAgICAgICAgIAotICAgICAgICAgVGhpcyBvcGNvZGUgc2hvdWxkIG9u
bHkgYmUgdXNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgY29kZQotICAgICAgICAgYmxvY2suCi0g
ICAgICAgICAqLwotICAgICAgICAKLSAgICAgICAgaW50IHRoaXNSZWdpc3RlciA9IHZQQ1sxXS51
Lm9wZXJhbmQ7Ci0gICAgICAgIEpTVmFsdWUgdGhpc1ZhbCA9IGNhbGxGcmFtZS0+cih0aGlzUmVn
aXN0ZXIpLmpzVmFsdWUoKTsKLSAgICAgICAgaWYgKHRoaXNWYWwuaXNPYmplY3QoKSAmJiB0aGlz
VmFsLm5lZWRzVGhpc0NvbnZlcnNpb24oKSkKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVj
a2VkUih0aGlzUmVnaXN0ZXIpID0gSlNWYWx1ZSh0aGlzVmFsLnRvU3RyaWN0VGhpc09iamVjdChj
YWxsRnJhbWUpKTsKLSAgICAgICAgCi0gICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2Nv
bnZlcnRfdGhpc19zdHJpY3QpOwotICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7Ci0gICAgfQog
ICAgIERFRklORV9PUENPREUob3BfaW5pdF9sYXp5X3JlZykgewogICAgICAgICAvKiBpbml0X2xh
enlfcmVnIGRzdChyKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyAr
OTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKFByb2dyYW1F
eGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgU2NvcGVDaGFpbk5vZGUqLCBKU09iamVjdCogdGhpc09i
aik7CiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGZ1
bmN0aW9uLCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29u
c3QgQXJnTGlzdCYpOwogICAgICAgICBKU09iamVjdCogZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJh
bWUqLCBKU09iamVjdCogZnVuY3Rpb24sIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERh
dGEmLCBjb25zdCBBcmdMaXN0Jik7Ci0gICAgICAgIEpTVmFsdWUgZXhlY3V0ZShFdmFsRXhlY3V0
YWJsZSogZXZhbE5vZGUsIENhbGxGcmFtZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIFNjb3Bl
Q2hhaW5Ob2RlKiBzY29wZUNoYWluKTsKKyAgICAgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVj
dXRhYmxlKiBldmFsTm9kZSwgQ2FsbEZyYW1lKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU2Nv
cGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pOwogCiAgICAgICAgIEpTVmFsdWUgcmV0cmlldmVBcmd1
bWVudHMoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiopIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBKU1ZhbHVlIHJldHJpZXZlQ2FsbGVyKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qKSBj
b25zdDsKQEAgLTEyMSw3ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBl
bmRSZXBlYXRDYWxsKENhbGxGcmFtZUNsb3N1cmUmKTsKICAgICAgICAgSlNWYWx1ZSBleGVjdXRl
KENhbGxGcmFtZUNsb3N1cmUmKTsKIAotICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXZhbEV4ZWN1
dGFibGUqLCBDYWxsRnJhbWUqLCBKU09iamVjdCogdGhpc09iamVjdCwgaW50IGdsb2JhbFJlZ2lz
dGVyT2Zmc2V0LCBTY29wZUNoYWluTm9kZSopOworICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXZh
bEV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgaW50IGdsb2JhbFJl
Z2lzdGVyT2Zmc2V0LCBTY29wZUNoYWluTm9kZSopOwogCiAjaWYgRU5BQkxFKElOVEVSUFJFVEVS
KQogICAgICAgICBORVZFUl9JTkxJTkUgYm9vbCByZXNvbHZlKENhbGxGcmFtZSosIEluc3RydWN0
aW9uKiwgSlNWYWx1ZSYgZXhjZXB0aW9uVmFsdWUpOwpAQCAtMTMwLDYgKzEzMCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBORVZFUl9JTkxJTkUgYm9vbCByZXNvbHZlR2xvYmFsRHluYW1p
YyhDYWxsRnJhbWUqLCBJbnN0cnVjdGlvbiosIEpTVmFsdWUmIGV4Y2VwdGlvblZhbHVlKTsKICAg
ICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgcmVzb2x2ZUJhc2UoQ2FsbEZyYW1lKiwgSW5zdHJ1Y3Rp
b24qIHZQQyk7CiAgICAgICAgIE5FVkVSX0lOTElORSBib29sIHJlc29sdmVCYXNlQW5kUHJvcGVy
dHkoQ2FsbEZyYW1lKiwgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHVlJiBleGNlcHRpb25WYWx1ZSk7Cisg
ICAgICAgIE5FVkVSX0lOTElORSBib29sIHJlc29sdmVUaGlzQW5kUHJvcGVydHkoQ2FsbEZyYW1l
KiwgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHVlJiBleGNlcHRpb25WYWx1ZSk7CiAgICAgICAgIE5FVkVS
X0lOTElORSBTY29wZUNoYWluTm9kZSogY3JlYXRlRXhjZXB0aW9uU2NvcGUoQ2FsbEZyYW1lKiwg
Y29uc3QgSW5zdHJ1Y3Rpb24qIHZQQyk7CiAKICAgICAgICAgdm9pZCB0cnlDYWNoZUdldEJ5SUQo
Q2FsbEZyYW1lKiwgQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHVlIGJhc2VWYWx1ZSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKQEAg
LTE2NCw3ICsxNjUsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEhhc2hNYXA8T3Bjb2Rl
LCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRCBm
b3IgZGVjb21waWxpbmcKICNlbmRpZgogICAgIH07Ci0gICAgCisKKyAgICAvLyBUaGlzIHZhbHVl
IG11c3Qgbm90IGJlIGFuIG9iamVjdCB0aGF0IHdvdWxkIHJlcXVpcmUgdGhpcyBjb252ZXJzaW9u
IChXZWJDb3JlJ3MgZ2xvYmFsIG9iamVjdCkuCisgICAgaW5saW5lIGJvb2wgaXNWYWxpZFRoaXNP
YmplY3QoSlNWYWx1ZSB0aGlzVmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykKKyAgICB7CisgICAgICAg
IHJldHVybiAhdGhpc1ZhbHVlLmlzT2JqZWN0KCkgfHwgdGhpc1ZhbHVlLnRvVGhpc09iamVjdChl
eGVjKSA9PSB0aGlzVmFsdWU7CisgICAgfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
IC8vIEludGVycHJldGVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlz
aW9uIDkwOTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjMsNyArMjIzLDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2NhbGxlZSkKICAgICAgICAgREVGSU5FX09Q
KG9wX2NyZWF0ZV90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29udmVydF90aGlzKQotICAg
ICAgICBERUZJTkVfT1Aob3BfY29udmVydF90aGlzX3N0cmljdCkKICAgICAgICAgREVGSU5FX09Q
KG9wX2luaXRfbGF6eV9yZWcpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfYXJndW1lbnRz
KQogICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCkBAIC0zMTAsNiArMzA5LDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcmVzb2x2
ZV9nbG9iYWxfZHluYW1pYykKICAgICAgICAgREVGSU5FX09QKG9wX3Jlc29sdmVfc2tpcCkKICAg
ICAgICAgREVGSU5FX09QKG9wX3Jlc29sdmVfd2l0aF9iYXNlKQorICAgICAgICBERUZJTkVfT1Ao
b3BfcmVzb2x2ZV93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF9yZXQpCiAgICAgICAg
IERFRklORV9PUChvcF9jYWxsX3B1dF9yZXN1bHQpCiAgICAgICAgIERFRklORV9PUChvcF9yZXRf
b2JqZWN0X29yX3RoaXMpCkBAIC00MDEsNyArNDAxLDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NhbGxfdmFyYXJn
cykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NvbnN0cnVjdCkKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX2NvbnZlcnRfdGhpcykKLSAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX2NvbnZlcnRfdGhpc19zdHJpY3QpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9kaXYpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9lcSkKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX2dldF9ieV9pZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAko
cmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MzYsNyArNzM2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9nZXRfY2FsbGVlKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29udmVy
dF90aGlzKEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9jb252ZXJ0X3RoaXNf
c3RyaWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfYXJndW1l
bnRzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CkBAIC04
MjEsNiArODIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXNv
bHZlX2dsb2JhbF9keW5hbWljKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9y
ZXNvbHZlX3NraXAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29sdmVf
d2l0aF9iYXNlKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9yZXNvbHZlX3dp
dGhfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcmV0KEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXRfb2JqZWN0X29yX3RoaXMoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3JzaGlmdChJbnN0cnVjdGlvbiopOwpAQCAtODUz
LDcgKzg1Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2Nh
bGxfdmFyYXJncyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb25zdHJ1Y3QoSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
Y29udmVydF90aGlzKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NvbnZlcnRfdGhpc19zdHJpY3QoSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfZGl2KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VxKEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dl
dF9ieV9pZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJ
KHJldmlzaW9uIDkwOTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAyLDYgKzExMDIsMTQgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcmVzb2x2ZV93aXRoX2Jhc2UoSW5zdAogICAgIHN0dWJDYWxsLmNhbGwoY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3Jlc29s
dmVfd2l0aF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklU
U3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3Jlc29sdmVfd2l0aF90aGlzKTsKKyAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKCZtX2NvZGVCbG9jay0+aWRlbnRpZmll
cihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSkpOworICAgIHN0dWJDYWxsLmFkZEFy
Z3VtZW50KEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICBzdHVi
Q2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworfQorCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfbmV3X2Z1bmNfZXhwKTsK
QEAgLTE0NDQsNTIgKzE0NTIsMjYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY29udmVydF90aGlzKElu
c3RydWN0aQogICAgIGVtaXRMb2FkKHRoaXNSZWdpc3RlciwgcmVnVDEsIHJlZ1QwKTsKIAogICAg
IGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpKSk7Ci0KLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9u
WmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoTmVlZHNUaGlzQ29udmVyc2lvbikpKTsKKyAgICBhZGRTbG93Q2FzZShicmFu
Y2hQdHIoRXF1YWwsIEFkZHJlc3MocmVnVDApLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+
anNTdHJpbmdWUHRyKSkpOwogCiAgICAgbWFwKG1fYnl0ZWNvZGVPZmZzZXQgKyBPUENPREVfTEVO
R1RIKG9wX2NvbnZlcnRfdGhpcyksIHRoaXNSZWdpc3RlciwgcmVnVDEsIHJlZ1QwKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRfb3BfY29udmVydF90aGlzX3N0cmljdChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQotewotICAgIHVuc2lnbmVkIHRoaXNSZWdpc3RlciA9IGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgCi0gICAgZW1pdExvYWQodGhpc1JlZ2lzdGVyLCBy
ZWdUMSwgcmVnVDApOwotICAgIAotICAgIEp1bXAgbm90TnVsbCA9IGJyYW5jaDMyKE5vdEVxdWFs
LCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKLSAgICBlbWl0
U3RvcmUodGhpc1JlZ2lzdGVyLCBqc051bGwoKSk7Ci0gICAgSnVtcCBzZXRUaGlzID0ganVtcCgp
OwotICAgIG5vdE51bGwubGluayh0aGlzKTsKLSAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNo
MzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1Qy
KTsKLSAgICBKdW1wIG5vdEFuT2JqZWN0ID0gYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhyZWdU
MiwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RU
eXBlKSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdU
MiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTmVlZHNU
aGlzQ29udmVyc2lvbikpKTsKLSAgICBpc0ltbWVkaWF0ZS5saW5rKHRoaXMpOwotICAgIG5vdEFu
T2JqZWN0LmxpbmsodGhpcyk7Ci0gICAgc2V0VGhpcy5saW5rKHRoaXMpOwotICAgIG1hcChtX2J5
dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF9jb252ZXJ0X3RoaXNfc3RyaWN0KSwgdGhp
c1JlZ2lzdGVyLCByZWdUMSwgcmVnVDApOwotfQotCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29u
dmVydF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CisgICAgdm9pZCogZ2xvYmFsVGhpcyA9IG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsU2NvcGVDaGFpbigpLT5nbG9iYWxUaGlzLmdl
dCgpOwogICAgIHVuc2lnbmVkIHRoaXNSZWdpc3RlciA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOworICAgIEp1bXAgaXNOb3RVbmRlZmluZWQgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEs
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKTsKKyAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoZ2xvYmFsVGhpcyksIHJlZ1QwKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSwgcmVnVDEpOworICAgIGVtaXRTdG9yZSh0aGlzUmVnaXN0ZXIsIHJlZ1QxLCBy
ZWdUMCk7CisgICAgZW1pdEp1bXBTbG93VG9Ib3QoanVtcCgpLCBPUENPREVfTEVOR1RIKG9wX2Nv
bnZlcnRfdGhpcykpOwogCi0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2Nv
bnZlcnRfdGhpcyk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEsIHJlZ1QwKTsKLSAg
ICBzdHViQ2FsbC5jYWxsKHRoaXNSZWdpc3Rlcik7Ci19Ci0KLXZvaWQgSklUOjplbWl0U2xvd19v
cF9jb252ZXJ0X3RoaXNfc3RyaWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCi17Ci0gICAgdW5zaWduZWQgdGhp
c1JlZ2lzdGVyID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICAKKyAgICBp
c05vdFVuZGVmaW5lZC5saW5rKHRoaXMpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICAK
LSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfY29udmVydF90aGlzX3N0cmlj
dCk7CisgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2NvbnZlcnRfdGhpcyk7
CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDEsIHJlZ1QwKTsKICAgICBzdHViQ2FsbC5j
YWxsKHRoaXNSZWdpc3Rlcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDkwOTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzA4LDYgKzcwOCwxNCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3dpdGhfYmFzZShJbnN0CiAgICAgc3R1YkNhbGwuY2FsbChj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3Bf
cmVzb2x2ZV93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAg
ICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcmVzb2x2ZV93aXRoX3RoaXMpOwor
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIoJm1fY29kZUJsb2NrLT5pZGVu
dGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKSk7CisgICAgc3R1YkNhbGwu
YWRkQXJndW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAg
IHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7Cit9CisKIHZv
aWQgSklUOjplbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9uZXdfZnVuY19l
eHApOwpAQCAtMTEzNiwyNSArMTE0NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NvbnZlcnRfdGhp
cyhJbnN0cnVjdGkKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChyZWdUMCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KE5vblplcm8sIEFk
ZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKE5lZWRzVGhpc0NvbnZlcnNpb24pKSk7Ci19Ci0KLXZvaWQgSklUOjplbWl0X29wX2NvbnZl
cnRfdGhpc19zdHJpY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJl
Z1QwKTsKLSAgICBKdW1wIG5vdE51bGwgPSBicmFuY2hUZXN0UHRyKE5vblplcm8sIHJlZ1QwKTsK
LSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKSksIHJlZ1Qw
KTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQsIHJlZ1QwKTsKLSAgICBKdW1wIHNldFRoaXMgPSBqdW1wKCk7Ci0gICAgbm90TnVsbC5s
aW5rKHRoaXMpOwotICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJl
Z1QwKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCByZWdUMSk7Ci0gICAgSnVtcCBub3RBbk9iamVjdCA9IGJyYW5jaDgoTm90RXF1YWwsIEFk
ZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
MzIoT2JqZWN0VHlwZSkpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KE5vblplcm8sIEFk
ZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKE5lZWRzVGhpc0NvbnZlcnNpb24pKSk7Ci0gICAgaXNJbW1lZGlhdGUubGluayh0aGlzKTsK
LSAgICBub3RBbk9iamVjdC5saW5rKHRoaXMpOwotICAgIHNldFRoaXMubGluayh0aGlzKTsKKyAg
ICBhZGRTbG93Q2FzZShicmFuY2hQdHIoRXF1YWwsIEFkZHJlc3MocmVnVDApLCBUcnVzdGVkSW1t
UHRyKG1fZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKSkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfY2FsbGVlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMTk5LDE3
ICsxMTg5LDE3IEBAIHZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfZGlkX2NhbGwoSW5zdHIKIAog
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnZlcnRfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogeworICAg
IHZvaWQqIGdsb2JhbFRoaXMgPSBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFNj
b3BlQ2hhaW4oKS0+Z2xvYmFsVGhpcy5nZXQoKTsKKwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsK
LSAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywg
Y3RpX29wX2NvbnZlcnRfdGhpcyk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwot
ICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7Ci19Cisg
ICAgSnVtcCBpc05vdFVuZGVmaW5lZCA9IGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDAsIFRydXN0
ZWRJbW1QdHIoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSk7CisgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGdsb2JhbFRoaXMpLCByZWdUMCk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZWdUMCk7CisgICAgZW1pdEp1bXBT
bG93VG9Ib3QoanVtcCgpLCBPUENPREVfTEVOR1RIKG9wX2NvbnZlcnRfdGhpcykpOwogCi12b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfY29udmVydF90aGlzX3N0cmljdChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQotewor
ICAgIGlzTm90VW5kZWZpbmVkLmxpbmsodGhpcyk7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwot
ICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jb252ZXJ0X3RoaXNfc3RyaWN0
KTsKKyAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfY29udmVydF90aGlzKTsK
ICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7CiAgICAgc3R1YkNhbGwuY2FsbChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiA5MDkzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgwLDE5ICsxMjgwLDkg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wXwogICAgIEpTVmFsdWUg
djEgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAgICBKU09iamVjdCogcmVzdWx0ID0gdjEu
dG9UaGlzT2JqZWN0KGNhbGxGcmFtZSk7Ci0gICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQo
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19CisgICAgQVNTRVJUKCF2
MS5pc0NlbGwoKSB8fCB2MS5pc1N0cmluZygpKTsKIAotREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5j
b2RlZEpTVmFsdWUsIG9wX2NvbnZlcnRfdGhpc19zdHJpY3QpCi17Ci0gICAgU1RVQl9JTklUX1NU
QUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotICAgIAotICAgIEpTVmFsdWUgdjEgPSBzdGFja0ZyYW1l
LmFyZ3NbMF0uanNWYWx1ZSgpOwotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFt
ZS5jYWxsRnJhbWU7Ci0gICAgQVNTRVJUKHYxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5uZWVkc1RoaXNDb252ZXJzaW9uKCkpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gdjEudG9T
dHJpY3RUaGlzT2JqZWN0KGNhbGxGcmFtZSk7CisgICAgSlNPYmplY3QqIHJlc3VsdCA9IHYxLnRv
VGhpc09iamVjdChjYWxsRnJhbWUpOwogICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMzAzNiw2ICszMDI2
LDQ4IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF8KICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiB9CiAKK0RFRklORV9TVFVCX0ZVTkNUSU9O
KEVuY29kZWRKU1ZhbHVlLCBvcF9yZXNvbHZlX3dpdGhfdGhpcykKK3sKKyAgICBTVFVCX0lOSVRf
U1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CisKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0
YWNrRnJhbWUuY2FsbEZyYW1lOworICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluID0gY2Fs
bEZyYW1lLT5zY29wZUNoYWluKCk7CisKKyAgICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IHNj
b3BlQ2hhaW4tPmJlZ2luKCk7CisgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IHNjb3BlQ2hh
aW4tPmVuZCgpOworCisgICAgLy8gRklYTUU6IGFkZCBzY29wZURlcHRoSXNaZXJvIG9wdGltaXph
dGlvbgorCisgICAgQVNTRVJUKGl0ZXIgIT0gZW5kKTsKKworICAgIElkZW50aWZpZXImIGlkZW50
ID0gc3RhY2tGcmFtZS5hcmdzWzBdLmlkZW50aWZpZXIoKTsKKyAgICBKU09iamVjdCogYmFzZTsK
KyAgICBkbyB7CisgICAgICAgIGJhc2UgPSBpdGVyLT5nZXQoKTsKKyAgICAgICAgKytpdGVyOwor
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlKTsKKyAgICAgICAgaWYgKGJhc2UtPmdldFBy
b3BlcnR5U2xvdChjYWxsRnJhbWUsIGlkZW50LCBzbG90KSkgeworICAgICAgICAgICAgSlNWYWx1
ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOworICAgICAgICAgICAg
Q0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKKworICAgICAgICAgICAgLy8gQWxsIGVudHJp
ZXMgb24gdGhlIHNjb3BlIGNoYWluIHNob3VsZCBiZSBFbnZpcm9ubWVudFJlY29yZHMgKGFjdGl2
YXRpb25zIGV0YyksCisgICAgICAgICAgICAvLyBvdGhlciB0aGVuICd3aXRoJyBvYmplY3QsIHdo
aWNoIGFyZSBkaXJlY3RseSByZWZlcmVuY2VkIGZyb20gdGhlIHNjb3BlIGNoYWluLAorICAgICAg
ICAgICAgLy8gYW5kIHRoZSBnbG9iYWwgb2JqZWN0LiBJZiB3ZSBoaXQgZWl0aGVyIGFuIEVudmly
b25tZW50UmVjb3JkIG9yIGEgZ2xvYmFsCisgICAgICAgICAgICAvLyBvYmplY3QgYXQgdGhlIGVu
ZCBvZiB0aGUgc2NvcGUgY2hhaW4sIHRoaXMgaXMgdW5kZWZpbmVkLiBJZiB3ZSBoaXQgYSBub24t
CisgICAgICAgICAgICAvLyBFbnZpcm9ubWVudFJlY29yZCB3aXRoaW4gdGhlIHNjb3BlIGNoYWlu
LCBwYXNzIHRoZSBiYXNlIGFzIHRoZSB0aGlzIHZhbHVlLgorICAgICAgICAgICAgaWYgKGl0ZXIg
PT0gZW5kIHx8IGJhc2UtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLmlzRW52aXJvbm1lbnRSZWNv
cmQoKSkKKyAgICAgICAgICAgICAgICBjYWxsRnJhbWUtPnJlZ2lzdGVycygpW3N0YWNrRnJhbWUu
YXJnc1sxXS5pbnQzMigpXSA9IGpzVW5kZWZpbmVkKCk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgY2FsbEZyYW1lLT5yZWdpc3RlcnMoKVtzdGFja0ZyYW1lLmFyZ3NbMV0uaW50
MzIoKV0gPSBKU1ZhbHVlKGJhc2UpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOworICAgICAgICB9CisgICAgfSB3aGlsZSAoaXRlciAhPSBlbmQpOworCisgICAg
c3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5leGNlcHRpb24gPSBjcmVhdGVVbmRlZmluZWRWYXJpYWJs
ZUVycm9yKGNhbGxGcmFtZSwgaWRlbnQpOworICAgIFZNX1RIUk9XX0VYQ0VQVElPTl9BVF9FTkQo
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Cit9CisKIERFRklORV9T
VFVCX0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3BfbmV3X2Z1bmNfZXhwKQogewogICAgIFNUVUJfSU5J
VF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmgJKHJldmlzaW9uIDkwOTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjIsNyArMzIyLDYgQEAgZXh0ZXJuICJDIiB7
CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2NvbnN0cnVjdF9Ob3RKU0NvbnN0
cnVjdChTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVC
IGN0aV9vcF9jcmVhdGVfdGhpcyhTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIEVuY29kZWRK
U1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9jb252ZXJ0X3RoaXMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9O
KTsKLSAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfY29udmVydF90aGlzX3N0cmlj
dChTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0
aV9vcF9jcmVhdGVfYXJndW1lbnRzKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2Rl
ZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2NyZWF0ZV9hcmd1bWVudHNfbm9fcGFyYW1zKFNUVUJf
QVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2Rl
bF9ieV9pZChTVFVCX0FSR1NfREVDTEFSQVRJT04pOwpAQCAtMzcyLDYgKzM3MSw3IEBAIGV4dGVy
biAiQyIgewogICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9yZXNvbHZlX2dsb2Jh
bF9keW5hbWljKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklU
X1NUVUIgY3RpX29wX3Jlc29sdmVfc2tpcChTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIEVu
Y29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9yZXNvbHZlX3dpdGhfYmFzZShTVFVCX0FSR1Nf
REVDTEFSQVRJT04pOworICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9yZXNvbHZl
X3dpdGhfdGhpcyhTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJ
VF9TVFVCIGN0aV9vcF9yc2hpZnQoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNvZGVk
SlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3Bfc3RyY2F0KFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAg
ICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX3N0cmljdGVxKFNUVUJfQVJHU19ERUNM
QVJBVElPTik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEu
Y3BwCShyZXZpc2lvbiA5MDkzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
bGxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIEpTVmFsdWUgY2FsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZnVuY3Rpb25PYmplY3Qs
IENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEsIEpTVmFsdWUgdGhp
c1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAgIEFTU0VSVChjYWxsVHlwZSA9PSBD
YWxsVHlwZUpTIHx8IGNhbGxUeXBlID09IENhbGxUeXBlSG9zdCk7CisgICAgQVNTRVJUKGlzVmFs
aWRUaGlzT2JqZWN0KHRoaXNWYWx1ZSwgZXhlYykpOwogICAgIHJldHVybiBleGVjLT5pbnRlcnBy
ZXRlcigpLT5leGVjdXRlQ2FsbChleGVjLCBhc09iamVjdChmdW5jdGlvbk9iamVjdCksIGNhbGxU
eXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHJldmlzaW9uIDkwOTM2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU5LDcgKzU5LDkgQEAgQ29tcGxldGlvbiBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IFNjbwogICAgICAgICByZXR1cm4gQ29tcGxldGlvbihUaHJvdywgZXhjZXB0aW9uKTsKICAgICB9
CiAKLSAgICBKU09iamVjdCogdGhpc09iaiA9ICghdGhpc1ZhbHVlIHx8IHRoaXNWYWx1ZS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKSA/IGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSA6IHRoaXNWYWx1
ZS50b09iamVjdChleGVjKTsKKyAgICBpZiAoIXRoaXNWYWx1ZSB8fCB0aGlzVmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKSkKKyAgICAgICAgdGhpc1ZhbHVlID0gZXhlYy0+ZHluYW1pY0dsb2JhbE9i
amVjdCgpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvVGhpc09iamVjdChl
eGVjKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0
ZShwcm9ncmFtLCBleGVjLCBzY29wZUNoYWluLCB0aGlzT2JqKTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDkwOTM2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY5LDcgKzY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFs
dWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwg
JnNfaW5mbyk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgTmVlZHNU
aGlzQ29udmVyc2lvbiB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzIHwgSlNWYXJpYWJsZU9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IElzRW52aXJvbm1lbnRSZWNvcmQg
fCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwg
T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTVmFyaWFibGVPYmplY3Q6OlN0cnVjdHVyZUZs
YWdzOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJ
ZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiA5MDkzNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0
Nyw5IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnMKICAgICAgICAg
ICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IHNldHRlckZ1bmMtPmdldENhbGxEYXRhKGNhbGxE
YXRhKTsKICAgICAgICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgICAg
ICAgICAgICAgIGFyZ3MuYXBwZW5kKHZhbHVlKTsKLSAgICAgICAgICAgICAgICBjYWxsKGV4ZWMs
IHNldHRlckZ1bmMsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJncyk7CisKKyAgICAgICAg
ICAgICAgICAvLyBJZiB0aGlzIGlzIFdlYkNvcmUncyBnbG9iYWwgb2JqZWN0IHRoZW4gd2UgbmVl
ZCB0byBzdWJzdGl0dXRlIHRoZSBzaGVsbC4KKyAgICAgICAgICAgICAgICBjYWxsKGV4ZWMsIHNl
dHRlckZ1bmMsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcy0+dG9UaGlzT2JqZWN0KGV4ZWMpLCBh
cmdzKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0
LmgJKHJldmlzaW9uIDkwOTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dGF0aWNTY29wZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVz
cGFjZSBKU0N7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7IH0KIAogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgTmVlZHNUaGlzQ29udmVyc2lvbiB8IE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNWYXJpYWJsZU9iamVjdDo6
U3RydWN0dXJlRmxhZ3M7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IElzRW52aXJvbm1lbnRSZWNvcmQgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpT
VmFyaWFibGVPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
U3ltYm9sVGFibGUgbV9zeW1ib2xUYWJsZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjgsNyArMzI4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBU
eXBlSW5mbyhTdHJpbmdUeXBlLCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBOZWVkc1Ro
aXNDb252ZXJzaW9uKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKKyAgICAgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oU3Ry
aW5nVHlwZSwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KSwgQW5vbnltb3VzU2xvdENvdW50
LCAmc19pbmZvKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlSW5mby5oCShyZXZpc2lvbiA5MDkzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNl
ID0gMSA8PCAxOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5j
ZSA9IDEgPDwgMjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW1wbGVtZW50c0RlZmF1bHRI
YXNJbnN0YW5jZSA9IDEgPDwgMzsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTmVlZHNUaGlz
Q29udmVyc2lvbiA9IDEgPDwgNDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSXNFbnZpcm9u
bWVudFJlY29yZCA9IDEgPDwgNDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90ID0gMSA8PCA1OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBP
dmVycmlkZXNWaXNpdENoaWxkcmVuID0gMSA8PCA2OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzID0gMSA8PCA3OwpAQCAtNjQsOCArNjQsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSBj
b25zdCB7IHJldHVybiBtX2ZsYWdzICYgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZDsgfQogICAgICAg
ICBib29sIGltcGxlbWVudHNIYXNJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBJ
bXBsZW1lbnRzSGFzSW5zdGFuY2U7IH0KKyAgICAgICAgYm9vbCBpc0Vudmlyb25tZW50UmVjb3Jk
KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIElzRW52aXJvbm1lbnRSZWNvcmQ7IH0KICAgICAg
ICAgYm9vbCBvdmVycmlkZXNIYXNJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBP
dmVycmlkZXNIYXNJbnN0YW5jZTsgfQotICAgICAgICBib29sIG5lZWRzVGhpc0NvbnZlcnNpb24o
KSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgTmVlZHNUaGlzQ29udmVyc2lvbjsgfQogICAgICAg
ICBib29sIG92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxh
Z3MgJiBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7IH0KICAgICAgICAgYm9vbCBvdmVycmlk
ZXNWaXNpdENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW47IH0KICAgICAgICAgYm9vbCBvdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkgY29u
c3QgeyByZXR1cm4gbV9mbGFncyAmIE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7IH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHJldmlzaW9uIDkwOTM2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDYsNyArMjA2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHV0RGly
ZWN0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CiAKLSAgICAgICAgYm9vbCBuZWVkc1RoaXNDb252ZXJz
aW9uKCkgY29uc3Q7CiAgICAgICAgIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikg
Y29uc3Q7CiAgICAgICAgIEpTVmFsdWUgdG9TdHJpY3RUaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNv
bnN0OwogICAgICAgICBVU3RyaW5nIHRvVGhpc1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0
LmgJKHJldmlzaW9uIDkwOTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0UHJvcGVydHlO
YW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTTm9u
RmluYWxPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgICAgIEpTVmFyaWFibGVPYmplY3Qo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3ltYm9sVGFi
bGUqIHN5bWJvbFRhYmxlLCBSZWdpc3RlciogcmVnaXN0ZXJzKQogICAgICAgICAgICAgOiBKU05v
bkZpbmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcAkocmV2aXNpb24gOTA5MzYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw3ICszNCwxMSBAQCBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6ZnVuY3Rpb25H
ZXR0ZXIoRXhlCiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlw
ZSA9IG1fZGF0YS5nZXR0ZXJGdW5jLT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7Ci0gICAgcmV0dXJu
IGNhbGwoZXhlYywgbV9kYXRhLmdldHRlckZ1bmMsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1Zh
bHVlKCksIGV4ZWMtPmVtcHR5TGlzdCgpKTsKKyAgICAKKyAgICAvLyBPbmx5IG9iamVjdHMgY2Fu
IGhhdmUgYWNjZXNzb3IgcHJvcGVydGllcy4KKyAgICAvLyBJZiB0aGUgYmFzZSBpcyBXZWJDb3Jl
J3MgZ2xvYmFsIG9iamVjdCB0aGVuIHdlIG5lZWQgdG8gc3Vic3RpdHV0ZSB0aGUgc2hlbGwuCisg
ICAgQVNTRVJUKG1fc2xvdEJhc2UuaXNPYmplY3QoKSk7CisgICAgcmV0dXJuIGNhbGwoZXhlYywg
bV9kYXRhLmdldHRlckZ1bmMsIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV90aGlzVmFsdWUudG9UaGlz
T2JqZWN0KGV4ZWMpLCBleGVjLT5lbXB0eUxpc3QoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJ
KHJldmlzaW9uIDkwOTM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw4ICsyMTIsNiBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pbmRl
eDsgfQogCi0gICAgICAgIEpTVmFsdWUgdGhpc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV90aGlz
VmFsdWU7IH0KLQogICAgICAgICBHZXRWYWx1ZUZ1bmMgY3VzdG9tR2V0dGVyKCkgY29uc3QKICAg
ICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1fY2FjaGVkUHJvcGVydHlUeXBlID09IEN1c3Rv
bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZh
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlj
dEV2YWxBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDkwOTM2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NiArMzYsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlz
T2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIHZpcnR1YWwgSlNWYWx1ZSB0b1N0cmljdFRo
aXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xv
dENvdW50LCAmc19pbmZvKTsKKyAgICB9CisgICAgCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSXNFbnZpcm9ubWVudFJlY29yZCB8IEpTTm9u
RmluYWxPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24g
OTA5MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjg5LDEzICsyODksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGpzTnVsbCgpLCBUeXBlSW5mbyhV
bnNwZWNpZmllZFR5cGUpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2R1bW15Q2VsbEluZm8pOwog
ICAgIH0KIAotICAgIGlubGluZSBib29sIEpTVmFsdWU6Om5lZWRzVGhpc0NvbnZlcnNpb24oKSBj
b25zdAotICAgIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFpc0NlbGwoKSkpCi0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS5uZWVkc1RoaXNDb252ZXJzaW9uKCk7Ci0gICAgfQotCiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIE1hcmtTdGFjazo6aW50ZXJuYWxBcHBlbmQoSlNDZWxsKiBjZWxsKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKCFtX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW96aWxsYS9lY21hL1N0cmluZy8xNS41LjQu
Ni0yLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxh
L2VjbWEvU3RyaW5nLzE1LjUuNC42LTIuanMJKHJldmlzaW9uIDkwOTM2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL21vemlsbGEvZWNtYS9TdHJpbmcvMTUuNS40LjYtMi5qcwkod29y
a2luZyBjb3B5KQpAQCAtMTg0LDEwICsxODQsMTEgQEAgZnVuY3Rpb24gZ2V0VGVzdENhc2VzKCkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXZhbCgidmFyIG9iaiA9IG5ldyBPYmplY3QoKTsgb2JqLmluZGV4
T2YgPSBTdHJpbmcucHJvdG90eXBlLmluZGV4T2Y7IG9iai5pbmRleE9mKCdiamVjdCcpIikgKTsK
IAotICAgIGFycmF5W2l0ZW0rK10gPSBuZXcgVGVzdENhc2UoIFNFQ1RJT04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInZhciBmID0gbmV3IE9iamVjdCggU3RyaW5nLnByb3Rv
dHlwZS5pbmRleE9mICk7IGYoJyIrR0xPQkFMKyInKSIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKCJ2
YXIgZiA9IG5ldyBPYmplY3QoIFN0cmluZy5wcm90b3R5cGUuaW5kZXhPZiApOyBmKCciK0dMT0JB
TCsiJykiKSApOworLy8gVGhpcyBjb3JyZWN0bHkgdGhyb3dzLCBkdWUgdG8gRVM1IDE1LjUuNC43
IHN0ZXAgMQorLy8gICAgYXJyYXlbaXRlbSsrXSA9IG5ldyBUZXN0Q2FzZSggU0VDVElPTiwKKy8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YXIgZiA9IG5ldyBPYmplY3QoIFN0
cmluZy5wcm90b3R5cGUuaW5kZXhPZiApOyBmKCciK0dMT0JBTCsiJykiLAorLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV2YWwoInZhciBmID0gbmV3IE9iamVjdCggU3RyaW5nLnByb3RvdHlwZS5pbmRleE9m
ICk7IGYoJyIrR0xPQkFMKyInKSIpICk7CiAKICAgICBhcnJheVtpdGVtKytdID0gbmV3IFRlc3RD
YXNlKCBTRUNUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YXIgZiA9
IG5ldyBGdW5jdGlvbigpOyBmLnRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzsg
Zi5pbmRleE9mID0gU3RyaW5nLnByb3RvdHlwZS5pbmRleE9mOyBmLmluZGV4T2YoJ1tvYmplY3Qg
RnVuY3Rpb25dJykiLApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTEwNTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0w
Ny0xNCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MjUwCisgICAgICAg
IEdsb2JhbCBzdHJpY3QgbW9kZSBmdW5jdGlvbiBsZWFraW5nIGdsb2JhbCBvYmplY3QgYXMgInRo
aXMiLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
YmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpK
U01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAg
ICAgLSBDaGFuZ2UgY2FsbCB0byBwYXNzIERPTSBXaW5kb3cgc2hlbGwsIGluc3RlYWQgb2YgdGhl
IGdsb2JhbCB2YXJhaWJsZSBvYmplY3QuCisKIDIwMTEtMDctMTQgIE1PUklUQSBIYWppbWUgIDxt
b3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyIHNo
b3VsZCBoYXZlIGl0cyBvd24gRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmNwcCBmaWxlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3Rh
dGUuaAkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01h
aW5UaHJlYWRFeGVjU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOSBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjYWxsKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0
IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBK
U0M6OkFyZ0xpc3QmIGFyZ3MpCiAgICAgewogICAgICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGUg
Y3VycmVudFN0YXRlKGV4ZWMpOworICAgICAgICAvLyBFbnN1cmUgRE9NIGdsb2JhbCBvYmplY3Qg
aXMgdW53cmFwcGVkIHRvIHRoZSBzaGVsbC4KKyAgICAgICAgaWYgKHRoaXNWYWx1ZS5pc09iamVj
dCgpKQorICAgICAgICAgICAgdGhpc1ZhbHVlID0gdGhpc1ZhbHVlLnRvVGhpc09iamVjdChleGVj
KTsKICAgICAgICAgcmV0dXJuIEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5
cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZp
c2lvbiA5MDkzNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC03NDUsNyArNzQ1LDYgQEAgc3ViIEdlbmVyYXRl
SGVhZGVyCiAgICAgIyBTdHJ1Y3R1cmUgSUQKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRP
TVdpbmRvdyIpIHsKICAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6OkltcGxlbWVudHNIYXNJ
bnN0YW5jZSJ9ID0gMTsKLSAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok5lZWRzVGhpc0Nv
bnZlcnNpb24ifSA9IDE7CiAgICAgfQogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsCiAgICAgICAg
ICIgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4iIC4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDkxMDU2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMTQgIEdhdmluIEJhcnJhY2xvdWdo
ICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NDI1MAorICAgICAgICBHbG9iYWwgc3RyaWN0IG1vZGUgZnVu
Y3Rpb24gbGVha2luZyBnbG9iYWwgb2JqZWN0IGFzICJ0aGlzIi4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUEpTT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBKU09iamVjdDo6aW52b2tl
KToKKyAgICAgICAgICAgIC0gQ2hhbmdlIGNhbGwgdG8gcGFzcyBET00gV2luZG93IHNoZWxsLCBp
bnN0ZWFkIG9mIHRoZSBnbG9iYWwgdmFyYWlibGUgb2JqZWN0LgorCiAyMDExLTA3LTE0ICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCShyZXZpc2lvbiA5
MDkzNikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpT
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkxLDcgKzI5MSw3IEBAIGJvb2wgTlBKU09i
amVjdDo6aW52b2tlKEV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgYXJndW1lbnRMaXN0LmFwcGVu
ZChtX29iamVjdE1hcC0+Y29udmVydE5QVmFyaWFudFRvSlNWYWx1ZShleGVjLCBnbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50c1tpXSkpOwogCiAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVj
a2VyLnN0YXJ0KCk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTQzo6Y2FsbChleGVjLCBmdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCBtX2pzT2JqZWN0LmdldCgpLCBhcmd1bWVudExpc3QpOwor
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBj
YWxsRGF0YSwgbV9qc09iamVjdC0+dG9UaGlzT2JqZWN0KGV4ZWMpLCBhcmd1bWVudExpc3QpOwog
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICAvLyBD
b252ZXJ0IGFuZCByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gY2FsbC4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxMDU2KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDctMTQgIEdhdmlu
IEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDI1MAorICAgICAgICBHbG9iYWwgc3Ry
aWN0IG1vZGUgZnVuY3Rpb24gbGVha2luZyBnbG9iYWwgb2JqZWN0IGFzICJ0aGlzIi4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjppbnZva2UpOgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Omludm9rZURlZmF1bHQpOgorICAgICAgICAgICAgLSBD
aGFuZ2UgY2FsbCB0byBwYXNzIERPTSBXaW5kb3cgc2hlbGwsIGluc3RlYWQgb2YgdGhlIGdsb2Jh
bCB2YXJhaWJsZSBvYmplY3QuCisKIDIwMTEtMDctMTMgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBl
Y2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBJbXByb3ZlIG5hbWVzIG9mIHNvbWUgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UgYWNjZXNzb3IgbWV0aG9kcwpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbQkocmV2aXNpb24gOTA5MzYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAg
LTkyMSw3ICs5MjEsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6aW52b2tl
CiAKICAgICBSZWZQdHI8SlNHbG9iYWxEYXRhPiBnbG9iYWxEYXRhID0gcGx1Z2luV29ybGQoKS0+
Z2xvYmFsRGF0YSgpOwogICAgIGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7Ci0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0
YSwgb2JqZWN0LCBhcmdMaXN0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbChleGVjLCBmdW5j
dGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QtPnRvVGhpc09iamVjdChleGVjKSwgYXJn
TGlzdCk7CiAgICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RvcCgpOwogICAgICAgICAK
ICAgICBtYXJzaGFsVmFsdWUoZXhlYywgdmFsdWUsIHJlc3VsdERhdGEsIHJlc3VsdExlbmd0aCk7
CkBAIC05NTYsNyArOTU2LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Omlu
dm9rZQogCiAgICAgUmVmUHRyPEpTR2xvYmFsRGF0YT4gZ2xvYmFsRGF0YSA9IHBsdWdpbldvcmxk
KCktPmdsb2JhbERhdGEoKTsKICAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdGFydCgp
OwotICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsKGV4ZWMsIG9iamVjdCwgY2FsbFR5cGUsIGNhbGxE
YXRhLCBvYmplY3QsIGFyZ0xpc3QpOworICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsKGV4ZWMsIG9i
amVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QtPnRvVGhpc09iamVjdChleGVjKSwgYXJn
TGlzdCk7CiAgICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RvcCgpOwogICAgIAogICAg
IG1hcnNoYWxWYWx1ZShleGVjLCB2YWx1ZSwgcmVzdWx0RGF0YSwgcmVzdWx0TGVuZ3RoKTsKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDkxMDIwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDctMTQgIEdhdmluIEJhcnJhY2xvdWdoICA8
YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NDI1MAorICAgICAgICBHbG9iYWwgc3RyaWN0IG1vZGUgZnVuY3Rp
b24gbGVha2luZyBnbG9iYWwgb2JqZWN0IGFzICJ0aGlzIi4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBjYXNlIC8gdXBkYXRlIHRlc3Qg
cmVzdWx0cy4KKworICAgICAgICAqIGZhc3QvanMvY2FsbC1iYXNlLXJlc29sdXRpb24tZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2NhbGwtYmFzZS1yZXNvbHV0aW9uLmh0
bWw6IEFkZGVkLgorICAgICAgICAgICAgLSBBZGQgdGVzdCBmb3IgRVM1IGNvcnJlY3QgdGhpcyB2
YWx1ZSByZXNvbHV0aW9uIGluIGNhbGxzLgorICAgICAgICAqIHNwdXRuaWsvQ29uZm9ybWFuY2Uv
MTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xMF9TdHJpbmcucHJv
dG90eXBlLm1hdGNoL1MxNS41LjQuMTBfQTFfVDMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHNw
dXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1
LjUuNC4xMl9TdHJpbmcucHJvdG90eXBlLnNlYXJjaC9TMTUuNS40LjEyX0ExX1QzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1
LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTNfU3RyaW5nLnByb3RvdHlwZS5zbGljZS9TMTUuNS40
LjEzX0ExX1QzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzcHV0bmlrL0NvbmZvcm1hbmNlLzE1
X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTRfU3RyaW5nLnByb3Rv
dHlwZS5zcGxpdC9TMTUuNS40LjE0X0ExX1QzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzcHV0
bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41
LjQuMTVfU3RyaW5nLnByb3RvdHlwZS5zdWJzdHJpbmcvUzE1LjUuNC4xNV9BMV9UMy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8x
NS41X1N0cmluZy8xNS41LjQvMTUuNS40LjRfU3RyaW5nLnByb3RvdHlwZS5jaGFyQXQvUzE1LjUu
NC40X0ExX1QzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzcHV0bmlrL0NvbmZvcm1hbmNlLzE1
X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuNV9TdHJpbmcucHJvdG90
eXBlLmNoYXJDb2RlQXQvUzE1LjUuNC41X0ExX1QzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBz
cHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8x
NS41LjQuNl9TdHJpbmcucHJvdG90eXBlLmNvbmNhdC9TMTUuNS40LjZfQTFfVDMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUu
NV9TdHJpbmcvMTUuNS40LzE1LjUuNC43X1N0cmluZy5wcm90b3R5cGUuaW5kZXhPZi9TMTUuNS40
LjdfQTFfVDMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVf
TmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC44X1N0cmluZy5wcm90b3R5
cGUubGFzdEluZGV4T2YvUzE1LjUuNC44X0ExX1QzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgICAg
IC0gQ2hlY2sgaW4gZmFpbGluZyByZXN1bHRzIGZvciB0aGVzZSB0ZXN0cyAtIHRoZXNlIHRlc3Rz
IHdlcmUgYXNzZXJ0aW5nIGluY29ycmVjdCBiZWhhdmlvdXIsCisgICAgICAgICAgICAgIGFuZCBo
YXZlIHNpbmNlIGJlZW4gZml4ZWQgaW4gdGVzdC0yNjIsIHNlZSBodHRwczovL2J1Z3MuZWNtYXNj
cmlwdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNworCiAyMDExLTA3LTE0ICBWaW5jZW50IFNjaGVp
YiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSB1cGRhdGVkIHRl
c3QgZXhwZWN0YXRpb25zLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9jYWxsLWJhc2UtcmVz
b2x1dGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9j
YWxsLWJhc2UtcmVzb2x1dGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2pzL2NhbGwtYmFzZS1yZXNvbHV0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1IEBACitQQVNTIG9vYW9ib2FidXVhdWJ1YWJvb2FvYm9hYiBzaG91bGQg
YmUgb29hb2JvYWJ1dWF1YnVhYm9vYW9ib2FiLCBhbmQgaXMuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9jYWxsLWJhc2UtcmVzb2x1dGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvY2FsbC1iYXNlLXJlc29sdXRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvY2FsbC1iYXNlLXJlc29sdXRpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQ+CisgICAgd2luZG93Lm5hbWUg
PSAibyI7CisgICAgZnVuY3Rpb24gZigpIHsgCisgICAgICByZXR1cm4gdGhpcyA/IHRoaXMubmFt
ZSA6ICJ0IjsKKyAgICB9CisgICAgZnVuY3Rpb24gZygpIHsgCisgICAgICAidXNlIHN0cmljdCI7
CisgICAgICByZXR1cm4gdGhpcyA/IHRoaXMubmFtZSA6ICJ1IjsKKyAgICB9CisgICAgZnVuY3Rp
b24gaCgpIHsgCisgICAgICByZXR1cm4gdGhpcyA/IHRoaXMubmFtZSA6ICJ2IjsKKyAgICB9Cisg
IDwvc2NyaXB0PgorCisgIDxpZnJhbWUgbmFtZT0iaSIgCisgICAgc3JjPSJqYXZhc2NyaXB0Ogor
CisgICAgICAgIHdpbmRvdy5mID0gcGFyZW50LmY7CisgICAgICAgIHdpbmRvdy5nID0gcGFyZW50
Lmc7CisgICAgICAgIHdpbmRvdy5hID0geyBuYW1lOidhJywgZjpwYXJlbnQuZiwgZzpwYXJlbnQu
ZyB9OworICAgICAgICB3aW5kb3cuYiA9IHsgbmFtZTonYicsIGY6cGFyZW50LmYsIGc6cGFyZW50
LmcgfTsKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywgJ2gnLCB7IGdldDog
KGZ1bmN0aW9uKCl7IHJldHVybiBwYXJlbnQuaDsgfSl9KTsKKyAgICAgICAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGEsICdoJywgeyBnZXQ6IChmdW5jdGlvbigpeyByZXR1cm4gcGFyZW50Lmg7IH0p
fSk7CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShiLCAnaCcsIHsgZ2V0OiAoZnVuY3Rp
b24oKXsgcmV0dXJuIHBhcmVudC5oOyB9KX0pOworCisgICAgICAgIHZhciByZXN1bHRzID0gJyc7
CisKKyAgICAgICAgLyogVGhyZWUgb2YgdGhlIGZpcnN0IGZvdXIgY2FzZXMgcGFzcyB1bmRlZmlu
ZWQgKHByb21vdGVkIGluc2lkZSB0aGUgY2FsbGVlIHRvIHRoZSBjYWxsZWUncyBnbG9iYWwgb2Jq
ZWN0KS4gKi8KKyAgICAgICAgLyogYS5mKCkgaXMgdGhlIG9uZSBleGNlcHRpb24sIHdoaWNoIHBh
c3NlcyB0aGUgYmFzZSwgYSwgYXMgdGhlIHRoaXMgb2JqZWN0LiAqLworICAgICAgICByZXN1bHRz
ICs9IChmdW5jdGlvbigpe3JldHVybiBmKCk7fSkoKTsKKyAgICAgICAgcmVzdWx0cyArPSAoZnVu
Y3Rpb24oKXtyZXR1cm4gKDEsZikoKTt9KSgpOworICAgICAgICByZXN1bHRzICs9IChmdW5jdGlv
bigpe3JldHVybiBhLmYoKTt9KSgpOworICAgICAgICByZXN1bHRzICs9IChmdW5jdGlvbigpe3Jl
dHVybiBldmFsKCdmKCknKTt9KSgpOworICAgICAgICAvKiBTYW1lIGNhc2VzIGFzIGFib3ZlLCBi
dXQgd3JhcHBlZCBpbiBhIHdpdGguIFRoZSBmaXJzdCAmIGxhc3Qgb2YgdGhlc2UgY2FzZXMgcGFz
cyBiLCAqLworICAgICAgICAvKiB0aGUgb2JqZWN0IHNjb3BlZCBieSB0aGUgd2l0aCwgYXMgdGhl
IHRoaXMgdmFsdWUuICovCisgICAgICAgIC8qIGEuZigpIHN0aWxsIHBhc3NlcyB0aGUgZXhwbGlj
aXQgYmFzZSwgYS4gKDEsZikoKSBpcyBhIGxpdHRsZSB0cmlja3NpZXIgLSB0aGlzIHBhc3NlcyAq
LworICAgICAgICAvKiB1bmRlZmluZWQgKHByb21vdGVkIHRvIHRoZSBjYWxsZWUgZ2xvYmFsIG9i
amVjdCkgc2luY2UgdGVoIGNvbW1hIG9wZXJhdG9yIGNhbGxlcyBHZXRWYWx1ZSAqLworICAgICAg
ICAvKiBvbiB0aGUgcmVmZXJlbmNlIChzZWUgRVM1IDExLjE0LikgKi8KKyAgICAgICAgcmVzdWx0
cyArPSAoZnVuY3Rpb24oKXt3aXRoKGIpeyByZXR1cm4gKGZ1bmN0aW9uKCl7IHJldHVybiBmKCk7
fSkoKTsgfX0pKCk7CisgICAgICAgIHJlc3VsdHMgKz0gKGZ1bmN0aW9uKCl7d2l0aChiKXsgcmV0
dXJuIChmdW5jdGlvbigpeyByZXR1cm4gKDEsZikoKTt9KSgpOyB9fSkoKTsKKyAgICAgICAgcmVz
dWx0cyArPSAoZnVuY3Rpb24oKXt3aXRoKGIpeyByZXR1cm4gKGZ1bmN0aW9uKCl7IHJldHVybiBh
LmYoKTt9KSgpOyB9fSkoKTsKKyAgICAgICAgcmVzdWx0cyArPSAoZnVuY3Rpb24oKXt3aXRoKGIp
eyByZXR1cm4gKGZ1bmN0aW9uKCl7IHJldHVybiBldmFsKCdmKCknKTt9KSgpOyB9fSkoKTsKKwor
ICAgICAgICAvKiBTYW1lIHRlc3RzIGFzIGFib3ZlLCBidXQgd2l0aCBhIHN0cmljdCBjYWxsZWUu
ICovCisgICAgICAgIC8qIFdlIGV4cGVjdCB0aGUgc2FtZSByZXN1bHRzLCBleGNlcHQgdW5kZWZp
bmVkIHRoaXMgaXMgbm90IHJlcGxhY2VkIHdpdGggdGhlIGdsb2JhbCBvYmplY3QuICovCisgICAg
ICAgIHJlc3VsdHMgKz0gKGZ1bmN0aW9uKCl7cmV0dXJuIGcoKTt9KSgpOworICAgICAgICByZXN1
bHRzICs9IChmdW5jdGlvbigpe3JldHVybiAoMSxnKSgpO30pKCk7CisgICAgICAgIHJlc3VsdHMg
Kz0gKGZ1bmN0aW9uKCl7cmV0dXJuIGEuZygpO30pKCk7CisgICAgICAgIHJlc3VsdHMgKz0gKGZ1
bmN0aW9uKCl7cmV0dXJuIGV2YWwoJ2coKScpO30pKCk7CisgICAgICAgIHJlc3VsdHMgKz0gKGZ1
bmN0aW9uKCl7d2l0aChiKXsgcmV0dXJuIGcoKTsgfX0pKCk7CisgICAgICAgIHJlc3VsdHMgKz0g
KGZ1bmN0aW9uKCl7d2l0aChiKXsgcmV0dXJuICgxLGcpKCk7IH19KSgpOworICAgICAgICByZXN1
bHRzICs9IChmdW5jdGlvbigpe3dpdGgoYil7IHJldHVybiBhLmcoKTsgfX0pKCk7CisgICAgICAg
IHJlc3VsdHMgKz0gKGZ1bmN0aW9uKCl7d2l0aChiKXsgcmV0dXJuIChmdW5jdGlvbigpeyByZXR1
cm4gZXZhbCgnZygpJyk7fSkoKTsgfX0pKCk7CisKKyAgICAgICAgLyogU2FtZSBhcyB0aGUgZmly
c3Qgc2V0LCBidXQgaCBpcyBhIGdldHRlciBwcm9wZXJ0eS4gKi8KKyAgICAgICAgcmVzdWx0cyAr
PSAoZnVuY3Rpb24oKXtyZXR1cm4gaCgpO30pKCk7CisgICAgICAgIHJlc3VsdHMgKz0gKGZ1bmN0
aW9uKCl7cmV0dXJuICgxLGgpKCk7fSkoKTsKKyAgICAgICAgcmVzdWx0cyArPSAoZnVuY3Rpb24o
KXtyZXR1cm4gYS5oKCk7fSkoKTsKKyAgICAgICAgcmVzdWx0cyArPSAoZnVuY3Rpb24oKXtyZXR1
cm4gZXZhbCgnaCgpJyk7fSkoKTsKKyAgICAgICAgcmVzdWx0cyArPSAoZnVuY3Rpb24oKXt3aXRo
KGIpeyByZXR1cm4gaCgpOyB9fSkoKTsKKyAgICAgICAgcmVzdWx0cyArPSAoZnVuY3Rpb24oKXt3
aXRoKGIpeyByZXR1cm4gKDEsaCkoKTsgfX0pKCk7CisgICAgICAgIHJlc3VsdHMgKz0gKGZ1bmN0
aW9uKCl7d2l0aChiKXsgcmV0dXJuIGEuaCgpOyB9fSkoKTsKKyAgICAgICAgcmVzdWx0cyArPSAo
ZnVuY3Rpb24oKXt3aXRoKGIpeyByZXR1cm4gKGZ1bmN0aW9uKCl7IHJldHVybiBldmFsKCdoKCkn
KTt9KSgpOyB9fSkoKTsKKworICAgICAgICB2YXIgZXhwZWN0ZWQgPSAnb29hb2JvYWJ1dWF1YnVh
Ym9vYW9ib2FiJzsKKworICAgICAgICBpZiAocmVzdWx0cyA9PSBleHBlY3RlZCkKKyAgICAgICAg
ICAgIHBhcmVudC50ZXN0UGFzc2VkKHJlc3VsdHMgKyAnIHNob3VsZCBiZSAnICsgZXhwZWN0ZWQg
KyAnLCBhbmQgaXMuJyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcmVudC50ZXN0RmFp
bGVkKHJlc3VsdHMgKyAnIHNob3VsZCBiZSAnICsgZXhwZWN0ZWQgKyAnLCBidXQgd2FzIG5vdC4n
KTsKKyAgICAgICAgcGFyZW50LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgIj4KKyAg
PC9pZnJhbWU+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9y
bWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC40X1N0cmlu
Zy5wcm90b3R5cGUuY2hhckF0L1MxNS41LjQuNF9BMV9UMy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8x
NS41X1N0cmluZy8xNS41LjQvMTUuNS40LjRfU3RyaW5nLnByb3RvdHlwZS5jaGFyQXQvUzE1LjUu
NC40X0ExX1QzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTA5MzYpCisrKyBMYXlvdXRUZXN0cy9z
cHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8x
NS41LjQuNF9TdHJpbmcucHJvdG90eXBlLmNoYXJBdC9TMTUuNS40LjRfQTFfVDMtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogUzE1LjUuNC40X0ExX1QzCiAKLVBB
U1MgCitGQUlMIFR5cGVFcnJvcjogVHlwZSBlcnJvcgogCiBURVNUIENPTVBMRVRFCiAKSW5kZXg6
IExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9T
dHJpbmcvMTUuNS40LzE1LjUuNC41X1N0cmluZy5wcm90b3R5cGUuY2hhckNvZGVBdC9TMTUuNS40
LjVfQTFfVDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3NwdXRuaWsv
Q29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC41
X1N0cmluZy5wcm90b3R5cGUuY2hhckNvZGVBdC9TMTUuNS40LjVfQTFfVDMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA5MDkzNikKKysrIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVf
TmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC41X1N0cmluZy5wcm90b3R5
cGUuY2hhckNvZGVBdC9TMTUuNS40LjVfQTFfVDMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogUzE1LjUuNC41X0ExX1QzCiAKLVBBU1MgCitGQUlMIFR5cGVFcnJv
cjogVHlwZSBlcnJvcgogCiBURVNUIENPTVBMRVRFCiAKSW5kZXg6IExheW91dFRlc3RzL3NwdXRu
aWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUu
NC42X1N0cmluZy5wcm90b3R5cGUuY29uY2F0L1MxNS41LjQuNl9BMV9UMy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVf
T2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjZfU3RyaW5nLnByb3RvdHlwZS5jb25j
YXQvUzE1LjUuNC42X0ExX1QzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTA5MzYpCisrKyBMYXlv
dXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5n
LzE1LjUuNC8xNS41LjQuNl9TdHJpbmcucHJvdG90eXBlLmNvbmNhdC9TMTUuNS40LjZfQTFfVDMt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogUzE1LjUuNC42X0Ex
X1QzCiAKLVBBU1MgCitGQUlMIFR5cGVFcnJvcjogVHlwZSBlcnJvcgogCiBURVNUIENPTVBMRVRF
CiAKSW5kZXg6IExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVj
dHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC43X1N0cmluZy5wcm90b3R5cGUuaW5kZXhPZi9T
MTUuNS40LjdfQTFfVDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Nw
dXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1
LjUuNC43X1N0cmluZy5wcm90b3R5cGUuaW5kZXhPZi9TMTUuNS40LjdfQTFfVDMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA5MDkzNikKKysrIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2Uv
MTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC43X1N0cmluZy5wcm90
b3R5cGUuaW5kZXhPZi9TMTUuNS40LjdfQTFfVDMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogUzE1LjUuNC43X0ExX1QzCiAKLVBBU1MgCitGQUlMIFR5cGVFcnJv
cjogVHlwZSBlcnJvcgogCiBURVNUIENPTVBMRVRFCiAKSW5kZXg6IExheW91dFRlc3RzL3NwdXRu
aWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUu
NC44X1N0cmluZy5wcm90b3R5cGUubGFzdEluZGV4T2YvUzE1LjUuNC44X0ExX1QzLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05h
dGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuOF9TdHJpbmcucHJvdG90eXBl
Lmxhc3RJbmRleE9mL1MxNS41LjQuOF9BMV9UMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkwOTM2
KQorKysgTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8x
NS41X1N0cmluZy8xNS41LjQvMTUuNS40LjhfU3RyaW5nLnByb3RvdHlwZS5sYXN0SW5kZXhPZi9T
MTUuNS40LjhfQTFfVDMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogUzE1LjUuNC44X0ExX1QzCiAKLVBBU1MgCitGQUlMIFR5cGVFcnJvcjogVHlwZSBlcnJvcgog
CiBURVNUIENPTVBMRVRFCiAKSW5kZXg6IExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2Uv
MTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xMF9TdHJpbmcucHJv
dG90eXBlLm1hdGNoL1MxNS41LjQuMTBfQTFfVDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9T
dHJpbmcvMTUuNS40LzE1LjUuNC4xMF9TdHJpbmcucHJvdG90eXBlLm1hdGNoL1MxNS41LjQuMTBf
QTFfVDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MDkzNikKKysrIExheW91dFRlc3RzL3NwdXRu
aWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUu
NC4xMF9TdHJpbmcucHJvdG90eXBlLm1hdGNoL1MxNS41LjQuMTBfQTFfVDMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogUzE1LjUuNC4xMF9BMV9UMwogCi1QQVNT
IAorRkFJTCBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBM
YXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3Ry
aW5nLzE1LjUuNC8xNS41LjQuMTJfU3RyaW5nLnByb3RvdHlwZS5zZWFyY2gvUzE1LjUuNC4xMl9B
MV9UMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3B1dG5pay9Db25m
b3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjEyX1N0
cmluZy5wcm90b3R5cGUuc2VhcmNoL1MxNS41LjQuMTJfQTFfVDMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA5MDkzNikKKysrIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZl
X09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xMl9TdHJpbmcucHJvdG90eXBlLnNl
YXJjaC9TMTUuNS40LjEyX0ExX1QzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIFMxNS41LjQuMTJfQTFfVDMKIAotUEFTUyAKK0ZBSUwgVHlwZUVycm9yOiBUeXBl
IGVycm9yCiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvc3B1dG5pay9Db25m
b3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjEzX1N0
cmluZy5wcm90b3R5cGUuc2xpY2UvUzE1LjUuNC4xM19BMV9UMy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0
cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjEzX1N0cmluZy5wcm90b3R5cGUuc2xpY2UvUzE1
LjUuNC4xM19BMV9UMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkwOTM2KQorKysgTGF5b3V0VGVz
dHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41
LjQvMTUuNS40LjEzX1N0cmluZy5wcm90b3R5cGUuc2xpY2UvUzE1LjUuNC4xM19BMV9UMy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBTMTUuNS40LjEzX0ExX1Qz
CiAKLVBBU1MgCitGQUlMIFR5cGVFcnJvcjogVHlwZSBlcnJvcgogCiBURVNUIENPTVBMRVRFCiAK
SW5kZXg6IExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMv
MTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xNF9TdHJpbmcucHJvdG90eXBlLnNwbGl0L1MxNS41
LjQuMTRfQTFfVDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3NwdXRu
aWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUu
NC4xNF9TdHJpbmcucHJvdG90eXBlLnNwbGl0L1MxNS41LjQuMTRfQTFfVDMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA5MDkzNikKKysrIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVf
TmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xNF9TdHJpbmcucHJvdG90
eXBlLnNwbGl0L1MxNS41LjQuMTRfQTFfVDMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDYgKzEsNiBAQAogUzE1LjUuNC4xNF9BMV9UMwogCi1QQVNTIAorRkFJTCBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlr
L0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQu
MTVfU3RyaW5nLnByb3RvdHlwZS5zdWJzdHJpbmcvUzE1LjUuNC4xNV9BMV9UMy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRp
dmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjE1X1N0cmluZy5wcm90b3R5cGUu
c3Vic3RyaW5nL1MxNS41LjQuMTVfQTFfVDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MDkzNikK
KysrIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUu
NV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xNV9TdHJpbmcucHJvdG90eXBlLnN1YnN0cmluZy9TMTUu
NS40LjE1X0ExX1QzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IFMxNS41LjQuMTVfQTFfVDMKIAotUEFTUyAKK0ZBSUwgVHlwZUVycm9yOiBUeXBlIGVycm9yCiAK
IFRFU1QgQ09NUExFVEUKIAo=
</data>
<flag name="review"
          id="95822"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>