<?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>81479</bug_id>
          
          <creation_ts>2012-03-18 18:43:57 -0700</creation_ts>
          <short_desc>[chromium] Transfer wheel flings to main thread if we hit a region that can&apos;t be scrolled from the compositor thread</short_desc>
          <delta_ts>2012-03-29 16:30:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>81458</dependson>
    
    <dependson>81462</dependson>
    
    <dependson>82154</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="Nat Duca">nduca</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>davemoore</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>levin+threading</cc>
    
    <cc>nduca</cc>
    
    <cc>rjkroege</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>581557</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-18 18:43:57 -0700</bug_when>
    <thetext>[chromium] Transfer wheel flings to main thread if we hit a region that can&apos;t be scrolled from the compositor thread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581558</commentid>
    <comment_count>1</comment_count>
      <attachid>132520</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-18 18:45:02 -0700</bug_when>
    <thetext>Created attachment 132520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581559</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-18 18:51:37 -0700</bug_when>
    <thetext>This patch depends on https://bugs.webkit.org/show_bug.cgi?id=81458 and https://bugs.webkit.org/show_bug.cgi?id=81462 and has an old version of https://bugs.webkit.org/show_bug.cgi?id=81458 included as part of it.

This is needed for the case where we start a wheel fling on the compositor thread but scroll over an area that needs to process wheel events on the main thread, or we receive a tree update that requires us to process wheels on the main thread.  In this case, the curve is cancelled on the compositor thread and the in-progress animation parameters are copied over to the main thread.  The rest of the wheel fling is then evaluated on the main thread by WebViewImpl.

This touches a lot of files and interfaces, unfortunately.  There is no good way to pass full events from the compositor thread to the main thread without risking serious damage to the input acking system since acks from the main thread don&apos;t go back through the compositor thread.  I think we definitely want to handle flings on the compositor thread whenever possible so this complexity is worth it.

The only other way I can think of to avoid this is if we handled the curves somewhere external to both the compositor thread and webkit main thread.

There&apos;s one known potential bug - I&apos;m not passing the modifiers from the GestureFlingStart through, so they won&apos;t end up on the synthetic wheel events generated by the main thread.  I need to bundle up all the transfer..() parameters into a struct before adding that or I&apos;ll go crazy modifying 20000 interfaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581622</commentid>
    <comment_count>3</comment_count>
      <attachid>132542</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-18 21:58:10 -0700</bug_when>
    <thetext>Created attachment 132542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582155</commentid>
    <comment_count>4</comment_count>
      <attachid>132651</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-19 13:33:48 -0700</bug_when>
    <thetext>Created attachment 132651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582183</commentid>
    <comment_count>5</comment_count>
      <attachid>132658</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-19 13:47:44 -0700</bug_when>
    <thetext>Created attachment 132658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582511</commentid>
    <comment_count>6</comment_count>
      <attachid>132731</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-19 17:29:27 -0700</bug_when>
    <thetext>Created attachment 132731
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582516</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-19 17:33:33 -0700</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org, abarth@webkit.org or jamesr@chromium.org before submitting because this patch contains changes to the Chromium platform API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582517</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-19 17:34:01 -0700</bug_when>
    <thetext>Attachment 132731 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/WebCore/platform/CrossThreadCopier.h:44:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 37 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>582518</commentid>
    <comment_count>9</comment_count>
      <attachid>132731</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-19 17:34:09 -0700</bug_when>
    <thetext>Comment on attachment 132731
Patch

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

&gt; Source/WebKit/chromium/src/WebCompositorInputHandlerImpl.cpp:267
&gt; +        OwnPtr&lt;PlatformGestureCurve&gt; flingCurve = TouchFlingPlatformGestureCurve::create(FloatPoint(gestureEvent.deltaX, gestureEvent.deltaY));

note about directions:

Before this patch, the curve was created in the -deltaX / -deltaY direction and the scrollBy() increment was flipped again in WebCompositorInputHandlerImpl::scrollBy() (see line 315 pre-patch).  I changed this here to match what WebViewImpl does - the curve is generated in the +deltaX / +deltaY direction and the scrollBy applies it without inverting so I wouldn&apos;t have to invert again when passing out to the main thread.

&gt; Source/WebKit/chromium/tests/WebCompositorInputHandlerImplTest.cpp:369
&gt; +    // The second call should start scrolling in the -X direction.

this flipped because we don&apos;t invert inside scrollBy() any more, see comment above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582520</commentid>
    <comment_count>10</comment_count>
      <attachid>132733</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-19 17:35:12 -0700</bug_when>
    <thetext>Created attachment 132733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582523</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-19 17:37:22 -0700</bug_when>
    <thetext>Attachment 132733 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/WebCore/platform/CrossThreadCopier.h:44:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 37 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>582658</commentid>
    <comment_count>12</comment_count>
      <attachid>132733</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-19 19:50:23 -0700</bug_when>
    <thetext>Comment on attachment 132733
Patch

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

LGTM given that we&apos;re hurrying. :)

&gt; Source/WebCore/platform/PlatformGestureCurve.h:44
&gt; +    virtual IntSize cumulativeScroll() const = 0;

How will this work for a pinch zoom animation? We had gone down the apply(target) route to avoid the interface specifying the properties that the curve manipulated... this having been said, maybe its okay to mix and match design patterns?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:417
&gt;  

So, thinking about it, CC doesn&apos;t actually want to know a thing about transfer logic, right? This is literally reaching into CC simply because thats the only way to çross the threads. It seems to me that if we had a main-thread counterpart to WCIH [e.g. CCLayerTreeHostClient], then all CC would need to provide is a mechanism for posting a task against the main-thread WCIH counterpart. Am I making sense? Fine if we hold this for later, implementation wise.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:635
&gt; +        TRACE_EVENT_INSTANT2(&quot;webkit&quot;, &quot;WebViewImpl::gestureEvent::GestureFlingStart&quot;, &quot;deltaX&quot;, event.deltaX, &quot;deltaY&quot;, event.deltaY);

These are good candidates for TRACE_EVENT_START/TRACE_EVENT_FINISH. You just need an ID for the gesture (which could be the active gesture animaiton pointer). Not a blocker for the reivew ofc.

&gt; Source/WebKit/chromium/tests/WebCompositorInputHandlerImplTest.cpp:415
&gt;  

Do we need a CCLayerTreeHost test to test the proxy features?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582700</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-19 20:47:34 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 132733 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132733&amp;action=review
&gt; 
&gt; LGTM given that we&apos;re hurrying. :)
&gt; 
&gt; &gt; Source/WebCore/platform/PlatformGestureCurve.h:44
&gt; &gt; +    virtual IntSize cumulativeScroll() const = 0;
&gt; 
&gt; How will this work for a pinch zoom animation? We had gone down the apply(target) route to avoid the interface specifying the properties that the curve manipulated... this having been said, maybe its okay to mix and match design patterns?
&gt;

It doesn&apos;t really work for any sort of curve other than a wheel fling curve.  Although, now that you bring it up this could all be tracked inside of WebCompositorInputHandlerImpl by tracking the callbacks from the curve.  Hmmmmm....
 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:417
&gt; &gt;  
&gt; 
&gt; So, thinking about it, CC doesn&apos;t actually want to know a thing about transfer logic, right? This is literally reaching into CC simply because thats the only way to çross the threads. It seems to me that if we had a main-thread counterpart to WCIH [e.g. CCLayerTreeHostClient], then all CC would need to provide is a mechanism for posting a task against the main-thread WCIH counterpart. Am I making sense? Fine if we hold this for later, implementation wise.
&gt; 

Yeah, we could pass this out in another way.  One way would be to pass it out through the WebCompositorInputHandlerClient and have the chromium side get it over to the main thread on the chromium side, then pass it back into WebKit via WebView or WebWidget or something.  That might make more sense from a layering perspective.


&gt; &gt; Source/WebKit/chromium/tests/WebCompositorInputHandlerImplTest.cpp:415
&gt; &gt;  
&gt; 
&gt; Do we need a CCLayerTreeHost test to test the proxy features?

It&apos;s mostly pass through (now at least), but more tests couldn&apos;t hurt!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582734</commentid>
    <comment_count>14</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-19 21:37:01 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (From update of attachment 132733 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132733&amp;action=review
&gt;
&gt; &gt; &gt; Source/WebKit/chromium/tests/WebCompositorInputHandlerImplTest.cpp:415
&gt; &gt; &gt;  
&gt; &gt; 
&gt; &gt; Do we need a CCLayerTreeHost test to test the proxy features?
&gt; 
&gt; It&apos;s mostly pass through (now at least), but more tests couldn&apos;t hurt!

It&apos;s mostly pass through, but I&apos;m more worried about the synchronization.  Does applyScrollAndScale get called at the right time?

I worry about a potential ordering issue applying scrolling and transferring the animation, maybe causing some discrepancy between &quot;global point&quot; and the current scroll position?  I&apos;d feel better with a proxy test to verify that a scroll on the impl thread is equal to the scroll transferred to the main thread, similar to how we have some tests to make sure that scroll positions copied back end up being ultimately consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583807</commentid>
    <comment_count>15</comment_count>
      <attachid>132969</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-20 22:09:36 -0700</bug_when>
    <thetext>Created attachment 132969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583813</commentid>
    <comment_count>16</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-20 22:14:46 -0700</bug_when>
    <thetext>I think we&apos;re OK w.r.t. applyScrollAndScale since they are both compositor thread -&gt; main thread PostTask()s, so they&apos;ll be processed in the correct order on the main thread.

Updated this patch with the feedback so far.  I also implemented the transfer via WebCompositorInputHandlerClient, and it&apos;s a whole lot cleaner - but it requires a chromium-side patch that I haven&apos;t even compile checked yet.  So this is here for people to test with and play with, and in case my chromium side changes aren&apos;t quite right.  Given infinite time, I&apos;d rather do the routing on the chromium side so that the core compositor code doesn&apos;t need to know anything about this.  In general I think the less parts of the compositor that have to be aware of input stuff the better. 

Here&apos;s the alternative:
https://bugs.webkit.org/show_bug.cgi?id=81740
https://chromiumcodereview.appspot.com/9802006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584190</commentid>
    <comment_count>17</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-21 09:04:22 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; I think we&apos;re OK w.r.t. applyScrollAndScale since they are both compositor thread -&gt; main thread PostTask()s, so they&apos;ll be processed in the correct order on the main thread.

I stared at this some more, and I think we&apos;re ok, mostly because CCLTH::applyScrollAndScale is called before CCLTH::updateAnimations.  So, even though the gesture gets transferred and set prior to the BFAC with the croll updates, the scroll position is applied before we start sending synthetic wheel events, so everything should end up synced properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584373</commentid>
    <comment_count>18</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-21 11:10:24 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 81740 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586918</commentid>
    <comment_count>19</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-23 17:54:26 -0700</bug_when>
    <thetext>Picking this back up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587077</commentid>
    <comment_count>20</comment_count>
      <attachid>133630</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-24 04:16:44 -0700</bug_when>
    <thetext>Created attachment 133630
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587078</commentid>
    <comment_count>21</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-24 04:18:34 -0700</bug_when>
    <thetext>Hey james, one open issue --- the timeshift that we do from monotonic to regular time then mucks up the tests.

Two options:
1. option not listed --- something cool that you think up
2. I get monotonic time on the main thread and we make webviewimpl tick its wheel fling gestures using monotonic time [even though raf uses &quot;regular&quot; time.

Wdyt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587079</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-24 04:19:53 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587081</commentid>
    <comment_count>23</comment_count>
      <attachid>133630</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-24 04:49:16 -0700</bug_when>
    <thetext>Comment on attachment 133630
Patch

Attachment 133630 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12132038</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587385</commentid>
    <comment_count>24</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-25 17:33:54 -0700</bug_when>
    <thetext>Will fix the unit testing by routing monotonic clock up to WebViewImpl and then making fling animations always use that clock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587397</commentid>
    <comment_count>25</comment_count>
      <attachid>133710</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-25 18:31:13 -0700</bug_when>
    <thetext>Created attachment 133710
Rebase on top of 82154</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591694</commentid>
    <comment_count>26</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-29 16:30:16 -0700</bug_when>
    <thetext>r112364 fixed this</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132520</attachid>
            <date>2012-03-18 18:45:02 -0700</date>
            <delta_ts>2012-03-18 21:58:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81479-20120318184501.patch</filename>
            <type>text/plain</type>
            <size>52625</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4ZWI3MTFhYWY2MTM3
MzQzOGRkNWU4ZTA4ZDU2ZjZiNjk1NWFjODIyLi5mZDA2ZjU2ZmE3MzZkNGJiMzliMmUwYmRkNmQw
YTFkNDg5NDc1ZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMy0xOCAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gVHJhbnNmZXIgd2hlZWwgZmxpbmdzIHRvIG1haW4gdGhyZWFkIGlmIHdlIGhpdCBhIHJlZ2lv
biB0aGF0IGNhbid0IGJlIHNjcm9sbGVkIGZyb20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQ3OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYkxheWVyVHJlZVZpZXdD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Q2xpZW50Ojp0cmFuc2Zl
cldoZWVsRmxpbmdBbmltYXRpb24pOgorCiAyMDEyLTAzLTA4ICBKYW1lcyBSb2JpbnNvbiAgPGph
bWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXNlIGFuIGV4cGxpY2l0IGF0dHJpYnV0ZSB0
byBzaWduYWwgdGhhdCBhIGNvbnRleHQgcHJlZmVycyB0byB1c2UgYSBkaXNjcmV0ZSBHUFUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA4Y2IzNTgyMjcwZGM1NmNiMjE0NmRlNGY1OWY1ZTkyM2Y5N2U0NGM5Li5mODFk
MjY4YmJmZjMzOWRmZjZmN2M0YTZkYzc2OTZlZWY1Yjk1Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsNjYgQEAKIDIwMTItMDMtMTggIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9y
Zz4KIAorICAgICAgICBbY2hyb21pdW1dIFRyYW5zZmVyIHdoZWVsIGZsaW5ncyB0byBtYWluIHRo
cmVhZCBpZiB3ZSBoaXQgYSByZWdpb24gdGhhdCBjYW4ndCBiZSBzY3JvbGxlZCBmcm9tIHRoZSBj
b21wb3NpdG9yIHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODE0NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIHBsYXRmb3JtL0FjdGl2
ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVQ
bGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6QWN0aXZlUGxh
dGZvcm1HZXN0dXJlQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9BY3RpdmVQbGF0Zm9y
bUdlc3R1cmVBbmltYXRpb24uaDoKKyAgICAgICAgKEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1h
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUN1cnZlLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBsYXRmb3JtR2VzdHVyZUN1cnZlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0
dXJlQ3VydmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSk6CisgICAgICAgICogcGxh
dGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmg6CisgICAgICAgIChUb3VjaEZs
aW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hGbGluZ1Bs
YXRmb3JtR2VzdHVyZUN1cnZlOjpjdW11bGF0aXZlU2Nyb2xsKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaDoKKyAgICAgICAgKFdlYkNvcmU6Oldo
ZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3VtdWxhdGl2ZVNjcm9sbCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6Y3VtdWxh
dGl2ZVNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6c3RhcnRUaW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oOgorICAgICAgICAo
Q0NHZXN0dXJlQ3VydmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDSW5wdXRIYW5kbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dDo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgor
ICAgICAgICAoQ0NMYXllclRyZWVIb3N0Q2xpZW50KToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdEltcGw6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAg
ICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCk6CisgICAgICAgIChDQ0xheWVyVHJlZUhv
c3RJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Npbmds
ZVRocmVhZFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojp0
cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb25Ub01haW5UaHJlYWRPbkltcGxUaHJlYWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0
aW9uVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJh
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCisyMDEyLTAzLTE4ICBKYW1lcyBSb2Jp
bnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1l
bnQgZmxpbmctYnktd2hlZWwgb24gY29tcG9zaXRvciB0aHJlYWQKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNDYyCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggYzQxNzBlZTU1M2UyOTM3NjAwMDFjNjI1MjczYTE5MThkMmMzNDg5NC4uMmFm
NGEzZThkZjQ2ZmJkYTRiYWYwNTUzYzM0ODAyMTY3ODJiMTM5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsNSArMSw0NCBAQAogMjAxMi0wMy0xOCAgSmFtZXMgUm9iaW5zb24gIDxq
YW1lc3JAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gVHJhbnNmZXIgd2hlZWwg
ZmxpbmdzIHRvIG1haW4gdGhyZWFkIGlmIHdlIGhpdCBhIHJlZ2lvbiB0aGF0IGNhbid0IGJlIHNj
cm9sbGVkIGZyb20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQ3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVRvQ0NHZXN0dXJlQWRh
cHRlcjo6Y3VtdWxhdGl2ZVNjcm9sbCk6CisgICAgICAgIChQbGF0Zm9ybUdlc3R1cmVUb0NDR2Vz
dHVyZUFkYXB0ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbDo6aGFuZGxlSW5wdXRFdmVudEludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSk6CisgICAgICAg
ICogc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmg6CisgICAgICAgICogc3JjL1dl
YkxheWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmll
d0ltcGw6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oOgorICAgICAgICAoV2ViTGF5ZXJU
cmVlVmlld0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpzY3JvbGxCeSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRp
ZENvbW1pdExvYWQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdDo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFkT25JbXBsVGhyZWFk
KToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdU
Rjo6TW9ja0xheWVyVHJlZUhvc3RDbGllbnQ6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbik6
CisgICAgICAgIChNb2NrTGF5ZXJUcmVlSG9zdENsaWVudCk6CisgICAgICAgICogdGVzdHMvRmFr
ZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RmFrZUNDTGF5ZXJU
cmVlSG9zdENsaWVudDo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiB0
ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwOgorCisyMDEyLTAzLTE4
ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW2Nocm9t
aXVtXSBJbXBsZW1lbnQgZmxpbmctYnktd2hlZWwgb24gY29tcG9zaXRvciB0aHJlYWQKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNDYyCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0Ns
aWVudC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3
Q2xpZW50LmgKaW5kZXggNWMwYjllZjlhMmEyYzYxM2IxMTkwMGMxM2Y4OThmMjI4MzliNDY1Yi4u
MjI5MjZlYzg1ZWRmNjY2MDJkN2I5Mzk4ZDQ1NjkyZWUwMTE1NThkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmgKKysr
IGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50
LmgKQEAgLTU1LDYgKzU1LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0
QW5kRHJhd0ZyYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZm
ZXJzKCkgPSAwOwogCisgICAgLy8gVHJhbnNmZXJzIGFuIGluLXByb2dyZXNzIHdoZWVsIGZsaW5n
IGFuaW1hdGlvbiB0aGF0IHRoZSBXZWJMYXllclRyZWVWaWV3CisgICAgLy8gY2FuIG5vIGxvbmdl
ciBhZHZhbmNlIHRvIHRoZSBjbGllbnQgdG8gZmluaXNoIG91dC4KKyAgICAvLyBGSVhNRTogUmVt
b3ZlIGRlZmF1bHQgaW1wbCB3aGVuIGNsaWVudHMgYXJlIGFsbCB1cGRhdGVkCisgICAgdmlydHVh
bCB2b2lkIHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBXZWJGbG9hdFBvaW50JiBm
bGluZ0RlbHRhLCBjb25zdCBXZWJQb2ludCYgZmxpbmdQb2ludCwgY29uc3QgV2ViUG9pbnQmIGds
b2JhbEZsaW5nUG9pbnQsIGRvdWJsZSBzdGFydFRpbWUsIGNvbnN0IFdlYlBvaW50JiBjdW11bGF0
aXZlU2Nyb2xsKSB7IH0KKwogICAgIC8vIFNjaGVkdWxlcyBhIGNvbXBvc2l0aW5nIHBhc3MsIG1l
YW5pbmcgdGhlIGNsaWVudCBzaG91bGQgY2FsbAogICAgIC8vIFdlYkxheWVyVHJlZVZpZXc6OmNv
bXBvc2l0ZSBhdCBhIGxhdGVyIHRpbWUuIFRoaXMgaXMgb25seSBjYWxsZWQgaWYgdGhlCiAgICAg
Ly8gY29tcG9zaXRvciB0aHJlYWQgaXMgZGlzYWJsZWQ7IHdoZW4gZW5hYmxlZCwgdGhlIGNvbXBv
c2l0b3Igd2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxh
dGZvcm1HZXN0dXJlQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2
ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5jcHAKaW5kZXggMThlYzdlYjM0YWUyZTRlMDdiNTZj
MTRhM2UwMmEzMzc4YmFkOWQ1MC4uNWExMDBkNjdjNmVlZjFmZDEwZTQ1ODlkZGY5MjU0YmNjYjI5
NjA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1H
ZXN0dXJlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQ
bGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uY3BwCkBAIC0zNyw2ICszNywxMSBAQCBQYXNzT3duUHRy
PEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbj4gQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5p
bWF0aW9uOjpjcmVhdAogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQWN0aXZlUGxhdGZvcm1HZXN0
dXJlQW5pbWF0aW9uKGN1cnZlLCB0YXJnZXQpKTsKIH0KIAorUGFzc093blB0cjxBY3RpdmVQbGF0
Zm9ybUdlc3R1cmVBbmltYXRpb24+IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3Jl
YXRlKFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGN1cnZlLCBQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZVRhcmdldCogdGFyZ2V0LCBkb3VibGUgc3RhcnRUaW1lKQoreworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKGN1cnZlLCB0YXJnZXQs
IHN0YXJ0VGltZSkpOworfQorCiBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246On5BY3Rp
dmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oKQogewogfQpAQCAtNDksNiArNTQsMTUgQEAgQWN0
aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRp
b24oUGFzc093blB0cjxQbGF0Zm8KIHsKIH0KIAorQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0
aW9uOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0cjxQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZT4gY3VydmUsIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0KiB0YXJnZXQsIGRv
dWJsZSBzdGFydFRpbWUpCisgICAgOiBtX3N0YXJ0VGltZShzdGFydFRpbWUpCisgICAgLCBtX3dh
aXRpbmdGb3JGaXJzdFRpY2soZmFsc2UpCisgICAgLCBtX2N1cnZlKGN1cnZlKQorICAgICwgbV90
YXJnZXQodGFyZ2V0KQoreworfQorCisKIGJvb2wgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0
aW9uOjphbmltYXRlKGRvdWJsZSB0aW1lKQogewogICAgIGlmIChtX3dhaXRpbmdGb3JGaXJzdFRp
Y2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3Jt
R2VzdHVyZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZv
cm1HZXN0dXJlQW5pbWF0aW9uLmgKaW5kZXggOWQ1NjNlNDgzNjY2ZGQyYWRhMWI1YjA1ZTg5ODRk
ZjE1YmFjNzAyNC4uMjFmMTk5YzA3YTFmY2YzNGM1OGMxMjQ5ZjJiODRlNGM1NzExYmNhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5p
bWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0
dXJlQW5pbWF0aW9uLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgQWN0aXZlUGxhdGZvcm1HZXN0
dXJlQW5pbWF0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBY3RpdmVQbGF0Zm9ybUdl
c3R1cmVBbmltYXRpb24pOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEFjdGl2ZVBs
YXRmb3JtR2VzdHVyZUFuaW1hdGlvbj4gY3JlYXRlKFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJl
Q3VydmU+LCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCopOworICAgIHN0YXRpYyBQYXNzT3du
UHRyPEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbj4gY3JlYXRlKFBhc3NPd25QdHI8UGxh
dGZvcm1HZXN0dXJlQ3VydmU+LCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCosIGRvdWJsZSBz
dGFydFRpbWUpOwogICAgIH5BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oKTsKIAogICAg
IGJvb2wgYW5pbWF0ZShkb3VibGUgdGltZSk7CkBAIC01MCw2ICs1MSw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgLy8gQXNzdW1lcyBhIHZhbGlkIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0
IHRoYXQgb3V0bGl2ZXMgdGhlIGFuaW1hdGlvbi4KICAgICBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb24oUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4sIFBsYXRmb3JtR2VzdHVy
ZUN1cnZlVGFyZ2V0Kik7CisgICAgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKFBhc3NP
d25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+LCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCos
IGRvdWJsZSBzdGFydFRpbWUpOwogCiAgICAgZG91YmxlIG1fc3RhcnRUaW1lOwogICAgIGJvb2wg
bV93YWl0aW5nRm9yRmlyc3RUaWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhy
ZWFkQ29waWVyLmgKaW5kZXggM2I2MDc2MTQyY2RhYWMyMTRhZDAwOTM2ZmNmYjNjNTA0YTNmZDE3
MC4uZTQ3MmVlZmNiOTJkNWZkZmFkOTUwODRhNTEyZDg1OTQ2ZDdkNmE2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCkBAIC00MSw2ICs0MSw4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIEZsb2F0U2l6ZTsKKyAgICBjbGFzcyBJ
bnRQb2ludDsKICAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIEludFNpemU7CiAgICAgY2xh
c3MgS1VSTDsKQEAgLTcwLDYgKzcyLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBUaHJlYWRh
YmxlTG9hZGVyT3B0aW9ucz4gOiBwdWJsaWMgQ3Jvc3NUaHJlYWRDb3BpZXJQYXNzVGhyb3VnaDxU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucz4gewogICAgIH07CiAKKyAgICB0ZW1wbGF0ZTw+IHN0cnVj
dCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBGbG9hdFNpemU+IDogcHVibGlj
IENyb3NzVGhyZWFkQ29waWVyUGFzc1Rocm91Z2g8RmxvYXRTaXplPiB7CisgICAgfTsKKworICAg
IHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIElu
dFBvaW50PiA6IHB1YmxpYyBDcm9zc1RocmVhZENvcGllclBhc3NUaHJvdWdoPEludFBvaW50PiB7
CisgICAgfTsKKwogICAgIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxm
YWxzZSwgZmFsc2UsIEludFJlY3Q+IDogcHVibGljIENyb3NzVGhyZWFkQ29waWVyUGFzc1Rocm91
Z2g8SW50UmVjdD4gewogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtR2VzdHVyZUN1cnZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybUdlc3R1cmVDdXJ2ZS5oCmluZGV4IDkyMjE5OTE0NzhlYTljMTg5M2Y5NmIzZmYwZWVkN2Vm
NjRjNzdjNDIuLmI0Mzc5ZTA2ZGRmMzgzZGE1MzRmYjMzMDUyNGNhNDU2ZDk5NzdkNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3VydmUuaApAQCAtMjcs
NiArMjcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEludFBvaW50OwogY2xh
c3MgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQ7CiAKIC8vIEFic3RyYWN0IGludGVyZmFjZSBm
b3IgY3VydmVzIHVzZWQgYnkgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLiBBCkBAIC0z
OSw2ICs0MCw4IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgY3VydmUgaGFz
IGZpbmlzaGVkIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIGFwcGxpZWQuCiAgICAgdmlydHVhbCBib29s
IGFwcGx5KGRvdWJsZSB0aW1lLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCopID0gMDsKKwor
ICAgIHZpcnR1YWwgSW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCgpIGNvbnN0ID0gMDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCmluZGV4IDA2ZWQ1NGFj
M2FjMDk2YmM0MGUxNjVlZTI1NDdjZGE1ZDkzNDYwNWMuLjUzNjU3NWY4NjlmZmYzOTg3ZTMwMjYz
MTExMGM5MWZjMDE3YjViYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Rv
dWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcApAQCAtMzUsMTIgKzM1LDE4
IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3Vy
dmU+IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UG9p
bnQmIHZlbG9jaXR5KQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgVG91Y2hGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlKHZlbG9jaXR5KSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUb3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUodmVsb2NpdHksIEludFBvaW50Ojp6ZXJvKCkpKTsK
IH0KIAotVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpUb3VjaEZsaW5nUGxhdGZvcm1H
ZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHkpCitQYXNzT3duUHRyPFBsYXRm
b3JtR2VzdHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShj
b25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgSW50UG9pbnQmIGN1bXVsYXRpdmVTY3Jv
bGwpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJl
Q3VydmUodmVsb2NpdHksIGN1bXVsYXRpdmVTY3JvbGwpKTsKK30KKworVG91Y2hGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxv
YXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IEludFBvaW50JiBjdW11bGF0aXZlU2Nyb2xsKQogICAg
IDogbV92ZWxvY2l0eSh2ZWxvY2l0eSkKICAgICAsIG1fdGltZVNjYWxlRmFjdG9yKDEwMDAgLyBt
YXgoMS5mLCBtYXgoZmFicyh2ZWxvY2l0eS54KCkpLCBmYWJzKHZlbG9jaXR5LnkoKSkpKSkKKyAg
ICAsIG1fY3VtdWxhdGl2ZVNjcm9sbChjdW11bGF0aXZlU2Nyb2xsKQogewogICAgIEFTU0VSVCh2
ZWxvY2l0eSAhPSBGbG9hdFBvaW50Ojp6ZXJvKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaAppbmRleCBm
ZDUyYmM0ZWM3NGMwYjUyYjc1ODQ1YjQ2NjlmNjU2ZjA3ZDI1MGVlLi5hNjU4MmNhMDY1OWIzZDQx
NjgzNjhmZWZmZDgwZjI4MzUzZTc2NzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaApAQCAtNDEsMTIgKzQx
LDE0IEBAIGNsYXNzIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0OwogY2xhc3MgVG91Y2hGbGlu
Z1BsYXRmb3JtR2VzdHVyZUN1cnZlIDogcHVibGljIFBsYXRmb3JtR2VzdHVyZUN1cnZlIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRl
KGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5KTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25z
dCBJbnRQb2ludCYgY3VtdWxhdGl2ZVNjcm9sbCk7CiAgICAgdmlydHVhbCB+VG91Y2hGbGluZ1Bs
YXRmb3JtR2VzdHVyZUN1cnZlKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoZG91YmxlIHRp
bWUsIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0Kik7CisgICAgdmlydHVhbCBJbnRQb2ludCBj
dW11bGF0aXZlU2Nyb2xsKCkgY29uc3QgeyByZXR1cm4gbV9jdW11bGF0aXZlU2Nyb2xsOyB9CiAK
IHByaXZhdGU6Ci0gICAgZXhwbGljaXQgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNv
bnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5KTsKKyAgICBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJl
Q3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IEludFBvaW50JiBjdW11bGF0
aXZlU2Nyb2xsKTsKIAogICAgIEZsb2F0UG9pbnQgbV92ZWxvY2l0eTsKICAgICBmbG9hdCBtX3Rp
bWVTY2FsZUZhY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVs
RmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hl
ZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKaW5kZXggYjcyMTQ2MTY1MzMzZjIzYzhjOWJi
ZjZjMDFkZGJmMDY3YWVlMWFjMi4uMDJhNmExYWM5NGIxNjI5NGNkYjgyNThkMjdiMWYyNDMwZTVl
OWE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGlu
Z1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgfldoZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSgpOwogCiAgICAgdmlydHVhbCBi
b29sIGFwcGx5KGRvdWJsZSB0aW1lLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCopOworICAg
IHZpcnR1YWwgSW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vt
dWxhdGl2ZVNjcm9sbDsgfQogCiBwcml2YXRlOgogICAgIFdoZWVsRmxpbmdQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUdlc3R1cmVBbmlt
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmNwcAppbmRleCBhNGFmM2U1OWJjNTU3N2E4ODZmMDI5
YmU1OTJmYzQ5OWFkNDNiYTAxLi42OGJjZjM2MTkwNDliMTcwMTkyZjc2NDZiNWU0NTM0MTQ2NWU3
NWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNjL0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlv
bi5oIgogCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJjYy9DQ0dlc3R1cmVDdXJ2
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw2ICs0OCwxMSBAQCBDQ0FjdGl2ZUdl
c3R1cmVBbmltYXRpb246On5DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24oKQogewogfQogCitJbnRQ
b2ludCBDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb246OmN1bXVsYXRpdmVTY3JvbGwoKSBjb25zdAor
eworICAgIHJldHVybiBtX2dlc3R1cmVDdXJ2ZS0+Y3VtdWxhdGl2ZVNjcm9sbCgpOworfQorCiBi
b29sIENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6YW5pbWF0ZShkb3VibGUgdGltZSkKIHsKICAg
ICBpZiAobV93YWl0aW5nRm9yRmlyc3RUaWNrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZl
R2VzdHVyZUFuaW1hdGlvbi5oCmluZGV4IDliY2Q3NTM3MDRjMzU5NGUyM2JlZDM2YjZiNjU0OTQw
YTg1NGQ3MGQuLjQ1OGRjNWJhYjkxZGQ0NTRlYTE3MmMyZTk2ZTRmNmMwMzBiYThjNzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0
aXZlR2VzdHVyZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5oCkBAIC0zMywxNyArMzMs
MjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0dlc3R1cmVDdXJ2ZTsKIGNsYXNz
IENDR2VzdHVyZUN1cnZlVGFyZ2V0OworY2xhc3MgSW50UG9pbnQ7CiAKIGNsYXNzIENDQWN0aXZl
R2VzdHVyZUFuaW1hdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NBY3RpdmVHZXN0
dXJlQW5pbWF0aW9uKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDQ0FjdGl2ZUdl
c3R1cmVBbmltYXRpb24+IGNyZWF0ZShQYXNzT3duUHRyPENDR2VzdHVyZUN1cnZlPiwgQ0NHZXN0
dXJlQ3VydmVUYXJnZXQqKTsKKwogICAgIH5DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24oKTsKIAog
ICAgIGJvb2wgYW5pbWF0ZShkb3VibGUgdGltZSk7CiAKKyAgICBkb3VibGUgc3RhcnRUaW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGFydFRpbWU7IH0KKyAgICBJbnRQb2ludCBjdW11bGF0aXZlU2Ny
b2xsKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKFBh
c3NPd25QdHI8Q0NHZXN0dXJlQ3VydmU+LCBDQ0dlc3R1cmVDdXJ2ZVRhcmdldCopOworICAgIEND
QWN0aXZlR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPENDR2VzdHVyZUN1cnZlPiwgQ0NHZXN0
dXJlQ3VydmVUYXJnZXQqLCBkb3VibGUgc3RhcnRUaW1lKTsKIAogICAgIGRvdWJsZSBtX3N0YXJ0
VGltZTsKICAgICBkb3VibGUgbV93YWl0aW5nRm9yRmlyc3RUaWNrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHZXN0dXJlQ3VydmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR2VzdHVy
ZUN1cnZlLmgKaW5kZXggNGJjMWMwZGQ4MDZkZjc2NWUzZjI0NzJkMmI2NjM2NDVkMjg5YzZhNS4u
ZDdkMDI1ZWExYTk1MDc1MTBlNjQzMjA4YjNiNzBmNmZjMGIyOTQwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHZXN0dXJlQ3VydmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dl
c3R1cmVDdXJ2ZS5oCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ0dl
c3R1cmVDdXJ2ZSgpIHsgfQogCiAgICAgdmlydHVhbCBib29sIGFwcGx5KGRvdWJsZSB0aW1lLCBD
Q0dlc3R1cmVDdXJ2ZVRhcmdldCopID0gMDsKKworICAgIHZpcnR1YWwgSW50UG9pbnQgY3VtdWxh
dGl2ZVNjcm9sbCgpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
SW5wdXRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0lucHV0SGFuZGxlci5oCmluZGV4IDAxOWQyZDgzNWIxYzI0YjNmNTkxZTg5OGJkNzM3
MDE4ZjAxYjgzNzkuLjFjYzkxZjNhMTlhZmM2NjNjZWJjMGVkNGE1NTJkMWRiOGFkYjIwMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
SW5wdXRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaApAQCAtODEsNiArODEsOCBAQCBwdWJsaWM6CiAgICAg
Ly8gUmVxdWVzdCBhIG5ldyBmcmFtZSB3aXRoIHVwZGF0ZWQgYW5pbWF0aW9uIHN0YXRlLiBUeXBp
Y2FsbHkgY2FsbGVkIGJ5IENDSW5wdXRIYW5kbGVyOjphbmltYXRlKCkuCiAgICAgdmlydHVhbCB2
b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCkgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVy
V2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBGbG9hdFNpemUmIGZsaW5nRGVsdGEsIGNvbnN0IElu
dFBvaW50JiBmbGluZ1BvaW50LCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsRmxpbmdQb2ludCwgZG91
YmxlIHN0YXJ0VGltZSwgY29uc3QgSW50UG9pbnQmIGN1bXVsYXRpdmVTY3JvbGwpID0gMDsKKwog
cHJvdGVjdGVkOgogICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB+
Q0NJbnB1dEhhbmRsZXJDbGllbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
CmluZGV4IDAxNzgyMGE3YzcwZTFiOTNmYzYyYTRkZjQ3NjY0NTI4Njk3MDM1YTEuLjI2YjM3YWUz
MTcxODQ5M2ZmOGU5ZjZjOTllZjIwNWY0ZTNjMThlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcApAQCAtNDE0LDYgKzQxNCwxMyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29t
cG9zaXRlKCkKICAgICBzdGF0aWNfY2FzdDxDQ1NpbmdsZVRocmVhZFByb3h5Kj4obV9wcm94eS5n
ZXQoKSktPmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVIb3N0
Ojp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgRmxvYXRTaXplJiBmbGluZ0RlbHRh
LCBjb25zdCBJbnRQb2ludCYgZmxpbmdQb2ludCwgY29uc3QgSW50UG9pbnQmIGdsb2JhbEZsaW5n
UG9pbnQsIGRvdWJsZSBzdGFydFRpbWUsIGNvbnN0IEludFBvaW50JiBjdW11bGF0aXZlU2Nyb2xs
KQoreworICAgIC8vIFdlIHRpY2sgYW5pbWF0aW9ucyBpbiBDQ0xheWVyVHJlZUhvc3QgdXNpbmcg
Y3VycmVudFRpbWUoKSwgYnV0IHRoZSBpbXBsIHRocmVhZCB1c2VzIG1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpLiBSZWJhc2UgaGVyZSBiZWZvcmUgcGFzc2luZyB0aW1lcyBvdXQgdG8gdGhl
IGNsaWVudC4KKyAgICBkb3VibGUgcmViYXNlZFN0YXJ0VGltZSA9IGN1cnJlbnRUaW1lKCkgLSBt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSArIHN0YXJ0VGltZTsKKyAgICBtX2NsaWVudC0+
dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGZsaW5nRGVsdGEsIGZsaW5nUG9pbnQsIGdsb2Jh
bEZsaW5nUG9pbnQsIHJlYmFzZWRTdGFydFRpbWUsIGN1bXVsYXRpdmVTY3JvbGwpOworfQorCiBi
b29sIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKIHsKICAgICBpZiAoIW1fbGF5ZXJS
ZW5kZXJlckluaXRpYWxpemVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDg5
ZjFiZTMwN2VkZmM5MTZkNjA5ZTA4NWEzNTUyMjY3NzYyM2VjODcuLjJlNjAyNjU4NTlmZTg0N2Iz
ZGE4MmNiZThhMDc5MjU1YmFiM2NjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBA
IC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250
ZXh0KGJvb2wgc3VjY2VzcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3
RnJhbWUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBG
bG9hdFNpemUmIGZsaW5nRGVsdGEsIGNvbnN0IEludFBvaW50JiBmbGluZ1BvaW50LCBjb25zdCBJ
bnRQb2ludCYgZ2xvYmFsRmxpbmdQb2ludCwgZG91YmxlIHN0YXJ0VGltZSwgY29uc3QgSW50UG9p
bnQmIGN1bXVsYXRpdmVTY3JvbGwpID0gMDsKIAogICAgIC8vIFVzZWQgb25seSBpbiB0aGUgc2lu
Z2xlLXRocmVhZGVkIHBhdGguCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCkg
PSAwOwpAQCAtMTQzLDYgKzE0NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENvbW1pdEFuZERy
YXdGcmFtZSgpIHsgbV9jbGllbnQtPmRpZENvbW1pdEFuZERyYXdGcmFtZSgpOyB9CiAgICAgdm9p
ZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgeyBtX2NsaWVudC0+ZGlkQ29tcGxldGVTd2FwQnVm
ZmVycygpOyB9CiAgICAgdm9pZCBkZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKFRl
eHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2b2lkIHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihj
b25zdCBGbG9hdFNpemUmIGZsaW5nRGVsdGEsIGNvbnN0IEludFBvaW50JiBmbGluZ1BvaW50LCBj
b25zdCBJbnRQb2ludCYgZ2xvYmFsRmxpbmdQb2ludCwgZG91YmxlIHN0YXJ0VGltZSwgY29uc3Qg
SW50UG9pbnQmIGN1bXVsYXRpdmVTY3JvbGwpOwogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgd2Ug
c2hvdWxkIGFib3J0IHRoaXMgZnJhbWUgZHVlIHRvIGluaXRpYWxpemF0aW9uIGZhaWx1cmUuCiAg
ICAgYm9vbCB1cGRhdGVMYXllcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAppbmRleCBkZDJkNDJhNDcxN2FhYTBlZmE1YmFjYzhhM2MyOWYyNmIwMjRkYjg4Li43
MmRiZWZlZDhlMWE2M2ZlNGM0ZDAxYzM0NmM4MTlkYzBjYzQwZDk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMTg2LDYgKzE4NiwxMyBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdEltcGw6OnNjaGVkdWxlQW5pbWF0aW9uKCkKICAgICBtX2NsaWVudC0+c2V0TmVl
ZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKIH0KIAorCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6
OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBGbG9hdFNpemUmIGZsaW5nRGVsdGEs
IGNvbnN0IEludFBvaW50JiBmbGluZ1BvaW50LCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsRmxpbmdQ
b2ludCwgZG91YmxlIHN0YXJ0VGltZSwgY29uc3QgSW50UG9pbnQmIGN1bXVsYXRpdmVTY3JvbGwp
Cit7CisKKyAgICBtX2NsaWVudC0+dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhy
ZWFkT25JbXBsVGhyZWFkKGZsaW5nRGVsdGEsIGZsaW5nUG9pbnQsIGdsb2JhbEZsaW5nUG9pbnQs
IHN0YXJ0VGltZSwgY3VtdWxhdGl2ZVNjcm9sbCk7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0
SW1wbDo6dHJhY2tEYW1hZ2VGb3JBbGxTdXJmYWNlcyhDQ0xheWVySW1wbCogcm9vdERyYXdMYXll
ciwgY29uc3QgQ0NMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCiB7CiAgICAgLy8g
Rm9yIG5vdywgd2UgdXNlIGRhbWFnZSB0cmFja2luZyB0byBjb21wdXRlIGEgZ2xvYmFsIHNjaXNz
b3IuIFRvIGRvIHRoaXMsIHdlIG11c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aAppbmRleCAwZGFlNjA0NjgyNDJlOWIxNDI2NjdkNzA3Y2ExZTViOTQwMmRiZTIxLi44Y2UyZjQw
NTY2ODZjYzEyMWVjMmVkYmJhNmUwM2E5MmNiMWJlNGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5p
bWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRp
b25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb25Ub01haW5UaHJlYWRPbkltcGxUaHJlYWQo
Y29uc3QgRmxvYXRTaXplJiBmbGluZ0RlbHRhLCBjb25zdCBJbnRQb2ludCYgZmxpbmdQb2ludCwg
Y29uc3QgSW50UG9pbnQmIGdsb2JhbEZsaW5nUG9pbnQsIGRvdWJsZSBzdGFydFRpbWUsIGNvbnN0
IEludFBvaW50JiBjdW11bGF0aXZlU2Nyb2xsKSA9IDA7CiB9OwogCiAvLyBDQ0xheWVyVHJlZUhv
c3RJbXBsIG93bnMgdGhlIENDTGF5ZXJJbXBsIHRyZWUgYXMgd2VsbCBhcyBhc3NvY2lhdGVkIHJl
bmRlcmluZyBzdGF0ZQpAQCAtNzYsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgLy8gVG8gY2xlYXIg
YW4gYWN0aXZlIGFuaW1hdGlvbiwgcGFzcyBudWxscHRyLgogICAgIHZpcnR1YWwgdm9pZCBzZXRB
Y3RpdmVHZXN0dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8Q0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9u
Pik7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAgdmlydHVhbCB2
b2lkIHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBGbG9hdFNpemUmIGZsaW5nRGVs
dGEsIGNvbnN0IEludFBvaW50JiBmbGluZ1BvaW50LCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsRmxp
bmdQb2ludCwgZG91YmxlIHN0YXJ0VGltZSwgY29uc3QgSW50UG9pbnQmIGN1bXVsYXRpdmVTY3Jv
bGwpOwogCiAgICAgLy8gVmlydHVhbCBmb3IgdGVzdGluZy4KICAgICB2aXJ0dWFsIHZvaWQgYmVn
aW5Db21taXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCBlYmJk
OTZlMmMzODgyMjE4OWQyYjkwYjIxZTZkOTc2YTM2N2MwZTljLi43ZTY4M2I3YTY3ZWFjNGRmNzZl
NDAzYjU1NzdlNmQzN2M4ZDg0ZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNS
ZWRyYXdPbkltcGxUaHJlYWQoKSB7IG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXQoKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpIHsgbV9sYXll
clRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBbmlt
YXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlv
bkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKGNvbnN0
IEZsb2F0U2l6ZSYgZmxpbmdEZWx0YSwgY29uc3QgSW50UG9pbnQmIGZsaW5nUG9pbnQsIGNvbnN0
IEludFBvaW50JiBnbG9iYWxGbGluZ1BvaW50LCBkb3VibGUgc3RhcnRUaW1lLCBjb25zdCBJbnRQ
b2ludCYgY3VtdWxhdGl2ZVNjcm9sbCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAg
Ly8gQ2FsbGVkIGJ5IHRoZSBsZWdhY3kgcGF0aCB3aGVyZSBSZW5kZXJXaWRnZXQgZG9lcyB0aGUg
c2NoZWR1bGluZy4KICAgICB2b2lkIGNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCmluZGV4IGUxNjc1MjIzYzU0ODA3N2JmNDBjYmJhYjNkZmViZDlmNmIy
YjgyODUuLjI4ZmRlNzcxY2Y3ODFhMjBkNGFiNWQ5ZWU4MmQyMGFhYWViMzFmYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0yOTYsNiArMjk2LDE5IEBAIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6cG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNzT3du
UHRyPENDQW5pCiAgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFk
VGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6c2V0QW5pbWF0aW9uRXZlbnRzLCBldmVudHMsIHdh
bGxDbG9ja1RpbWUpKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5Ojp0cmFuc2ZlcldoZWVsRmxp
bmdBbmltYXRpb25Ub01haW5UaHJlYWRPbkltcGxUaHJlYWQoY29uc3QgRmxvYXRTaXplJiBmbGlu
Z0RlbHRhLCBjb25zdCBJbnRQb2ludCYgZmxpbmdQb2ludCwgY29uc3QgSW50UG9pbnQmIGdsb2Jh
bEZsaW5nUG9pbnQsIGRvdWJsZSBzdGFydFRpbWUsIGNvbnN0IEludFBvaW50JiBjdW11bGF0aXZl
U2Nyb2xsKQoreworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgVFJBQ0VfRVZFTlQw
KCJjYyIsICJDQ1RocmVhZFByb3h5Ojp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb25Ub01haW5U
aHJlYWRPbkltcGxUaHJlYWQiKTsKKyAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3Jl
YXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojp0cmFuc2ZlcldoZWVsRmxpbmdB
bmltYXRpb24sIGZsaW5nRGVsdGEsIGZsaW5nUG9pbnQsIGdsb2JhbEZsaW5nUG9pbnQsIHN0YXJ0
VGltZSwgY3VtdWxhdGl2ZVNjcm9sbCkpOworfQorCit2b2lkIENDVGhyZWFkUHJveHk6OnRyYW5z
ZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBGbG9hdFNpemUmIGZsaW5nRGVsdGEsIGNvbnN0
IEludFBvaW50JiBmbGluZ1BvaW50LCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsRmxpbmdQb2ludCwg
ZG91YmxlIHN0YXJ0VGltZSwgY29uc3QgSW50UG9pbnQmIGN1bXVsYXRpdmVTY3JvbGwpCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnRyYW5zZmVy
V2hlZWxGbGluZ0FuaW1hdGlvbihmbGluZ0RlbHRhLCBmbGluZ1BvaW50LCBnbG9iYWxGbGluZ1Bv
aW50LCBzdGFydFRpbWUsIGN1bXVsYXRpdmVTY3JvbGwpOworfQorCiB2b2lkIENDVGhyZWFkUHJv
eHk6OnNldE5lZWRzUmVkcmF3KCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAt
Mzk0LDcgKzQwNyw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5G
cmFtZSgpCiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRB
Y3Rpb25CZWdpbkZyYW1lIik7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVz
dCk7CiAgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QgPSBhZG9wdFB0cihuZXcgQmVnaW5G
cmFtZUFuZENvbW1pdFN0YXRlKCkpOwotICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5m
cmFtZUJlZ2luVGltZSA9IDA7CisgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QtPmZyYW1l
QmVnaW5UaW1lID0gY3VycmVudFRpbWUoKTsKICAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVz
dC0+c2Nyb2xsSW5mbyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMo
KTsKIAogICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2so
dGhpcywgJkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aAppbmRleCA5ZTUyNGE3NjNlMjg1MGZkMjA5YzEzZTM1MjYxMmVjNWNhMzA0OWUxLi40ZTQ4OTBm
NmYyNjMxZTc4NDJhMzllYzI3YWI4NWVmNDhlNDYyNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5oCkBAIC03Niw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNS
ZWRyYXdPbkltcGxUaHJlYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbklt
cGxUaHJlYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRo
cmVhZE9uSW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91
YmxlIHdhbGxDbG9ja1RpbWUpOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdB
bmltYXRpb25Ub01haW5UaHJlYWRPbkltcGxUaHJlYWQoY29uc3QgRmxvYXRTaXplJiBmbGluZ0Rl
bHRhLCBjb25zdCBJbnRQb2ludCYgZmxpbmdQb2ludCwgY29uc3QgSW50UG9pbnQmIGdsb2JhbEZs
aW5nUG9pbnQsIGRvdWJsZSBzdGFydFRpbWUsIGNvbnN0IEludFBvaW50JiBjdW11bGF0aXZlU2Ny
b2xsKTsKIAogICAgIC8vIENDU2NoZWR1bGVyQ2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmly
dHVhbCBib29sIGNhbkRyYXcoKTsKQEAgLTEwNSw2ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0QW5pbWF0aW9uRXZlbnRzKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+
LCBkb3VibGUgd2FsbENsb2NrVGltZSk7CiAgICAgdm9pZCBiZWdpbkNvbnRleHRSZWNyZWF0aW9u
KCk7CiAgICAgdm9pZCB0cnlUb1JlY3JlYXRlQ29udGV4dCgpOworICAgIHZvaWQgdHJhbnNmZXJX
aGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IEZsb2F0U2l6ZSYgZmxpbmdEZWx0YSwgY29uc3QgSW50
UG9pbnQmIGZsaW5nUG9pbnQsIGNvbnN0IEludFBvaW50JiBnbG9iYWxGbGluZ1BvaW50LCBkb3Vi
bGUgc3RhcnRUaW1lLCBjb25zdCBJbnRQb2ludCYgY3VtdWxhdGl2ZVNjcm9sbCk7CiAKICAgICAv
LyBDYWxsZWQgb24gaW1wbCB0aHJlYWQKICAgICBzdHJ1Y3QgUmVhZGJhY2tSZXF1ZXN0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsLmNwcAppbmRleCA1MGFmNTFmZDU1ZDAzNzk1MTMwNzdkM2Q0MWVkNGIx
ZGYwZTg3OThhLi44YzJmNGVkYTc1MjI4MTI0NGQ0N2YzMjkzYjgxNjM2ODYwMGQ3Yzg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGwuY3BwCkBAIC02OCw2ICs2OCwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fdGFyZ2V0LT5zY3JvbGxCeShzY3JvbGxEZWx0YSk7CiAgICAgfQogCisgICAgdmlydHVhbCBJ
bnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2N1cnZlLT5jdW11bGF0aXZlU2Nyb2xsKCk7CisgICAgfQorCiBwcml2YXRlOgogICAgIFBsYXRm
b3JtR2VzdHVyZVRvQ0NHZXN0dXJlQWRhcHRlcihQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1
cnZlPiBjdXJ2ZSkKICAgICAgICAgOiBtX2N1cnZlKGN1cnZlKQpAQCAtMTgxLDkgKzE4Niw5IEBA
IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIFdlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoCiAgICAgICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVu
dC0+c2Nyb2xsRW5kKCk7CiAgICAgICAgICAgICByZXR1cm4gRGlkSGFuZGxlOwogICAgICAgICBj
YXNlIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJZ25vcmVkOgotICAgICAgICAgICAgcmV0
dXJuIERpZE5vdEhhbmRsZTsKLSAgICAgICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Ny
b2xsRmFpbGVkOgogICAgICAgICAgICAgcmV0dXJuIERyb3BFdmVudDsKKyAgICAgICAgY2FzZSBD
Q0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkOgorICAgICAgICAgICAgcmV0dXJuIERp
ZE5vdEhhbmRsZTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PSBXZWJJ
bnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW4pIHsKICAgICAgICAgQVNTRVJUKCFtX2dlc3R1
cmVTY3JvbGxTdGFydGVkKTsKQEAgLTI1OCw5ICsyNjMsMTEgQEAgV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OmgKICAgICBzd2l0Y2ggKHNjcm9sbFN0YXR1cykgewogICAgIGNhc2UgQ0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQ6IHsKICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAo
ImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxpbmc6
OnN0YXJ0ZWQiKTsKLSAgICAgICAgT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBmbGluZ0N1
cnZlID0gVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoRmxvYXRQb2ludCgt
Z2VzdHVyZUV2ZW50LmRlbHRhWCwgLWdlc3R1cmVFdmVudC5kZWx0YVkpKTsKKyAgICAgICAgT3du
UHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBmbGluZ0N1cnZlID0gVG91Y2hGbGluZ1BsYXRmb3Jt
R2VzdHVyZUN1cnZlOjpjcmVhdGUoRmxvYXRQb2ludChnZXN0dXJlRXZlbnQuZGVsdGFYLCBnZXN0
dXJlRXZlbnQuZGVsdGFZKSk7CiAgICAgICAgIG1fd2hlZWxGbGluZ0FuaW1hdGlvbiA9IENDQWN0
aXZlR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFBsYXRmb3JtR2VzdHVyZVRvQ0NHZXN0dXJlQWRh
cHRlcjo6Y3JlYXRlKGZsaW5nQ3VydmUucmVsZWFzZSgpKSwgdGhpcyk7CisgICAgICAgIG1fd2hl
ZWxGbGluZ0RlbHRhID0gRmxvYXRTaXplKGdlc3R1cmVFdmVudC5kZWx0YVgsIGdlc3R1cmVFdmVu
dC5kZWx0YVkpOwogICAgICAgICBtX3doZWVsRmxpbmdQb2ludCA9IEludFBvaW50KGdlc3R1cmVF
dmVudC54LCBnZXN0dXJlRXZlbnQueSk7CisgICAgICAgIG1fd2hlZWxGbGluZ0dsb2JhbFBvaW50
ID0gSW50UG9pbnQoZ2VzdHVyZUV2ZW50Lmdsb2JhbFgsIGdlc3R1cmVFdmVudC5nbG9iYWxZKTsK
ICAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjaGVkdWxlQW5pbWF0aW9uKCk7CiAgICAg
ICAgIHJldHVybiBEaWRIYW5kbGU7CiAgICAgfQpAQCAtMzEwLDggKzMxNyw4IEBAIHZvaWQgV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5KGNvbnN0IEludFBvaW50JiBpbmNy
ZW1lbnQpCiAKICAgICBXZWJNb3VzZVdoZWVsRXZlbnQgZXZlbnQ7CiAgICAgZXZlbnQudHlwZSA9
IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWw7Ci0gICAgZXZlbnQuZGVsdGFYID0gLWluY3JlbWVu
dC54KCk7Ci0gICAgZXZlbnQuZGVsdGFZID0gLWluY3JlbWVudC55KCk7CisgICAgZXZlbnQuZGVs
dGFYID0gaW5jcmVtZW50LngoKTsKKyAgICBldmVudC5kZWx0YVkgPSBpbmNyZW1lbnQueSgpOwog
ICAgIGV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB0cnVlOwogICAgIGV2ZW50Lngg
PSBtX3doZWVsRmxpbmdQb2ludC54KCk7CiAgICAgZXZlbnQueSA9IG1fd2hlZWxGbGluZ1BvaW50
LnkoKTsKQEAgLTMxOSwxOCArMzI2LDIwIEBAIHZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGw6OnNjcm9sbEJ5KGNvbnN0IEludFBvaW50JiBpbmNyZW1lbnQpCiAgICAgV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gZGlzcG9zaXRpb24gPSBoYW5k
bGVJbnB1dEV2ZW50SW50ZXJuYWwoZXZlbnQpOwogICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsK
ICAgICBjYXNlIERpZEhhbmRsZToKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEcm9wRXZlbnQ6
CiAgICAgICAgIGJyZWFrOyAKICAgICBjYXNlIERpZE5vdEhhbmRsZToKICAgICAgICAgVFJBQ0Vf
RVZFTlRfSU5TVEFOVDAoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3Jv
bGxCeTo6QWJvcnRGbGluZyIpOwotICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ290IGEgRGlkTm90
SGFuZGxlLCB0aGF0IG1lYW5zIHdlIG5lZWQgdG8gZGVsaXZlciB3aGVlbHMgb24gdGhlIG1haW4g
dGhyZWFkLgorICAgICAgICAvLyBJZiB3ZSBnb3QgYSBEaWROb3RIYW5kbGUsIHRoYXQgbWVhbnMg
d2UgbmVlZCB0byBkZWxpdmVyIHdoZWVscyBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIC8v
IEluIHRoaXMgY2FzZSB3ZSBuZWVkIHRvIHNjaGVkdWxlIGEgY29tbWl0IGFuZCB0cmFuc2ZlciB0
aGUgZmxpbmcgY3VydmUgb3ZlciB0byB0aGUgbWFpbgogICAgICAgICAvLyB0aHJlYWQgYW5kIHJ1
biB0aGUgcmVzdCBvZiB0aGUgd2hlZWxzIGZyb20gdGhlcmUuCiAgICAgICAgIC8vIFRoaXMgY2Fu
IGhhcHBlbiB3aGVuIGZsaW5naW5nIGEgcGFnZSB0aGF0IGNvbnRhaW5zIGEgc2Nyb2xsYWJsZSBz
dWJhcmVhIHRoYXQgd2UgY2FuJ3QKICAgICAgICAgLy8gc2Nyb2xsIG9uIHRoZSB0aHJlYWQgaWYg
dGhlIGZsaW5nIHN0YXJ0cyBvdXRzaWRlIHRoZSBzdWJhcmVhIGJ1dCB0aGVuIGlzIGZsdW5nICJ1
bmRlciIgdGhlCiAgICAgICAgIC8vIHBvaW50ZXIuCi0gICAgICAgIC8vIEZvciBub3csIGp1c3Qg
YWJvcnQgdGhlIGZsaW5nLgorICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+dHJhbnNmZXJX
aGVlbEZsaW5nQW5pbWF0aW9uKG1fd2hlZWxGbGluZ0RlbHRhLCBtX3doZWVsRmxpbmdQb2ludCwg
bV93aGVlbEZsaW5nR2xvYmFsUG9pbnQsIG1fd2hlZWxGbGluZ0FuaW1hdGlvbi0+c3RhcnRUaW1l
KCksIG1fd2hlZWxGbGluZ0FuaW1hdGlvbi0+Y3VtdWxhdGl2ZVNjcm9sbCgpKTsKICAgICAgICAg
Y2FuY2VsQ3VycmVudEZsaW5nKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsLmgKaW5kZXggN2EwYjM2ZDU3YzVhNjE4MDI4NjU2OWJlODI3YzY0ZTdmMTFiNjdh
OC4uYWE5NDJmNjY5N2Q2MjRjZjBkNDFkZWFkNjA1N2ZhNjg2NGJiNzlmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsX2gKICNkZWZpbmUgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxfaAogCisj
aW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAi
V2ViQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXIuaCIK
QEAgLTgyLDcgKzgzLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5jZWxDdXJyZW50Rmxpbmco
KTsKIAogICAgIE93blB0cjxXZWJDb3JlOjpDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24+IG1fd2hl
ZWxGbGluZ0FuaW1hdGlvbjsKLSAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3doZWVsRmxpbmdQb2lu
dDsgLy8gUG9pbnRlciBwb3NpdGlvbiBmb3IgdGhlIGN1cnJlbnQgZmxpbmcuIAorICAgIC8vIFBh
cmFtZXRlcnMgZm9yIHRoZSBhY3RpdmUgZmxpbmcgYW5pbWF0aW9uLCBzdG9yZWQgaW4gY2FzZSB3
ZSBuZWVkIHRvIHRyYW5zZmVyIGl0IG91dCBsYXRlci4KKyAgICBXZWJDb3JlOjpGbG9hdFNpemUg
bV93aGVlbEZsaW5nRGVsdGE7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV93aGVlbEZsaW5nUG9p
bnQ7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV93aGVlbEZsaW5nR2xvYmFsUG9pbnQ7CiAKICAg
ICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKICAgICBpbnQgbV9p
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5
ZXJUcmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlld0ltcGwuY3BwCmluZGV4IDMzNTg3OWI2NjA1MzRhNGJjNzU3ZTUxNzc0ZjMyZmZkYzY3
ZTdmZWMuLmEzZTc1MTM5OTQ2YTYzMzJiMDYxMWM0MjRjNmExZmJhYzI1ZTU0MWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAK
QEAgLTM2LDYgKzM2LDggQEAKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3Q2xp
ZW50LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlRocmVhZC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFBvaW50Lmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYlBvaW50Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0x
MDcsNiArMTA5LDEyIEBAIHZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmRpZENvbXBsZXRlU3dh
cEJ1ZmZlcnMoKQogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOwog
fQogCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRp
b24oY29uc3QgRmxvYXRTaXplJiBmbGluZ0RlbHRhLCBjb25zdCBJbnRQb2ludCYgZmxpbmdQb2lu
dCwgY29uc3QgSW50UG9pbnQmIGdsb2JhbEZsaW5nUG9pbnQsIGRvdWJsZSBzdGFydFRpbWUsIGNv
bnN0IEludFBvaW50JiBjdW11bGF0aXZlU2Nyb2xsKQoreworICAgIGlmIChtX2NsaWVudCkKKyAg
ICAgICAgbV9jbGllbnQtPnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihXZWJGbG9hdFBvaW50
KGZsaW5nRGVsdGEud2lkdGgoKSwgZmxpbmdEZWx0YS5oZWlnaHQoKSksIGZsaW5nUG9pbnQsIGds
b2JhbEZsaW5nUG9pbnQsIHN0YXJ0VGltZSwgY3VtdWxhdGl2ZVNjcm9sbCk7Cit9CisKIHZvaWQg
V2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNjaGVkdWxlQ29tcG9zaXRlKCkKIHsKICAgICBpZiAobV9j
bGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRy
ZWVWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmll
d0ltcGwuaAppbmRleCBiMWIyNmQwZmMzMzg2MDRmZTVjZjM4MDcxZjUwYThjMzU4NjQ1MmZiLi4x
ZGUwMjFjNjI0NzRlN2U4YmQwMjc1NDE5MzRlYmEwNDgxNjk2NTFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKQEAgLTQ4LDYgKzQ4
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wg
c3VjY2Vzcyk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7CisgICAgdmlydHVhbCB2b2lk
IHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGZs
aW5nRGVsdGEsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBmbGluZ1BvaW50LCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgZ2xvYmFsRmxpbmdQb2ludCwgZG91YmxlIHN0YXJ0VGltZSwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIGN1bXVsYXRpdmVTY3JvbGwpOwogCiAgICAgLy8gT25seSB1c2Vk
IGluIHRoZSBzaW5nbGUgdGhyZWFkZWQgcGF0aC4KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVD
b21wb3NpdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApp
bmRleCA1Yjg4NTQwM2UyZGU4Yjg2M2FkYjg3YjBmZmU2YWRiZjZkZDhkYWI0Li43NDc0ZTQyMTk2
YjJmMTlkOTI5MGMxNTQ5NWE3OTkyMjI0MDAwMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogCi0jaW5jbHVkZSAiQXV0b2ZpbGxQb3B1
cE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQWN0
aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiQXV0b2ZpbGxQb3B1cE1l
bnVDbGllbnQuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RDaHJvbWl1bS5oIgotI2luY2x1
ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVk
ZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgpAQCAtMTA5LDYgKzEw
OSw3IEBACiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJU
ZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlRvdWNoRmxpbmdQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRl
ICJUeXBpbmdDb21tYW5kLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAg
LTExOCwzMSArMTE5LDM0IEBACiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRvckltcGwuaCIKICNpbmNs
dWRlICJXZWJEZXZUb29sc0FnZW50SW1wbC5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRQ
cml2YXRlLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViRHJhZ0RhdGEuaCIKICNpbmNsdWRlICJX
ZWJGcmFtZUltcGwuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJHcmFwaGljc0NvbnRleHQzRC5o
IgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUgIldlYklucHV0RXZl
bnRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0v
V2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXIuaCIK
LSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3LmgiCiAjaW5jbHVkZSAiV2ViTWVk
aWFQbGF5ZXJBY3Rpb24uaCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViUGx1
Z2luLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luQWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2lu
Q29udGFpbmVySW1wbC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBvaW50LmgiCiAjaW5jbHVk
ZSAiV2ViUG9wdXBNZW51SW1wbC5oIgogI2luY2x1ZGUgIldlYlJhbmdlLmgiCi0jaW5jbHVkZSAi
cGxhdGZvcm0vV2ViUmVjdC5oIgogI2luY2x1ZGUgIldlYlJ1bnRpbWVGZWF0dXJlcy5oIgogI2lu
Y2x1ZGUgIldlYlNldHRpbmdzSW1wbC5oIgorI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKyNp
bmNsdWRlICJXaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkRyYWdEYXRhLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViR3JhcGhpY3ND
b250ZXh0M0QuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJJbWFnZS5oIgorI2luY2x1ZGUgInBs
YXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxh
eWVyLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmlldy5oIgorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlJlY3QuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKICNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKLSNpbmNsdWRlICJXZWJWaWV3Q2xpZW50Lmgi
CisjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
UG9pbnQuaD4KICNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJl
bnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTQwOCw2ICs0MTIsOSBA
QCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogI2VuZGlm
CiAKICAgICBtX2luc3BlY3RvclNldHRpbmdzTWFwID0gYWRvcHRQdHIobmV3IFNldHRpbmdzTWFw
KTsKKworICAgIG1fbGFzdFdoZWVsUG9zaXRpb24gPSBXZWJQb2ludCgtMSwgLTEpOworICAgIG1f
bGFzdFdoZWVsR2xvYmFsUG9zaXRpb24gPSBXZWJQb2ludCgtMSwgLTEpOwogfQogCiBXZWJWaWV3
SW1wbDo6fldlYlZpZXdJbXBsKCkKQEAgLTYwMywxMSArNjEwLDcxIEBAIGJvb2wgV2ViVmlld0lt
cGw6Om1vdXNlV2hlZWwoY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50JiBldmVudCkKICAgICByZXR1
cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlV2hlZWxF
dmVudChwbGF0Zm9ybUV2ZW50KTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6c2Nyb2xsQnkoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlbHRhKQoreworICAgIFdlYk1vdXNlV2hlZWxFdmVudCBz
eW50aGV0aWNXaGVlbDsKKyAgICBjb25zdCBmbG9hdCB0aWNrRGl2aXNvciA9IChmbG9hdClXZWJD
b3JlOjpXaGVlbEV2ZW50Ojp0aWNrTXVsdGlwbGllcjsKKworICAgIHN5bnRoZXRpY1doZWVsLmRl
bHRhWCA9IGRlbHRhLngoKTsKKyAgICBzeW50aGV0aWNXaGVlbC5kZWx0YVkgPSBkZWx0YS55KCk7
CisgICAgc3ludGhldGljV2hlZWwud2hlZWxUaWNrc1ggPSBkZWx0YS54KCkgLyB0aWNrRGl2aXNv
cjsKKyAgICBzeW50aGV0aWNXaGVlbC53aGVlbFRpY2tzWSA9IGRlbHRhLnkoKSAvIHRpY2tEaXZp
c29yOworICAgIHN5bnRoZXRpY1doZWVsLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB0cnVl
OworICAgIHN5bnRoZXRpY1doZWVsLnggPSBtX2xhc3RXaGVlbFBvc2l0aW9uLng7CisgICAgc3lu
dGhldGljV2hlZWwueSA9IG1fbGFzdFdoZWVsUG9zaXRpb24ueTsKKyAgICBzeW50aGV0aWNXaGVl
bC5nbG9iYWxYID0gbV9sYXN0V2hlZWxHbG9iYWxQb3NpdGlvbi54OworICAgIHN5bnRoZXRpY1do
ZWVsLmdsb2JhbFkgPSBtX2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9uLnk7CisKKyAgICBtb3VzZVdo
ZWVsKHN5bnRoZXRpY1doZWVsKTsKK30KKwogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIGJv
b2wgV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50
KQogewotICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlciBwbGF0Zm9ybUV2ZW50KG1haW5G
cmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KTsKLSAgICByZXR1cm4gbWFpbkZyYW1lSW1w
bCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlR2VzdHVyZUV2ZW50KHBsYXRmb3Jt
RXZlbnQpOworICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgeworICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZUZsaW5nU3RhcnQ6IHsKKyAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIGlu
IGEgc3Vic2VxdWVudCBwYXRjaCByZXZpc2lvbi4KKyAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFO
VDIoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50OjpHZXN0dXJlRmxpbmdTdGFy
dCIsICJkZWx0YVgiLCBldmVudC5kZWx0YVgsICJkZWx0YVkiLCBldmVudC5kZWx0YVkpOworICAg
ICAgICBtX2xhc3RXaGVlbFBvc2l0aW9uID0gV2ViUG9pbnQoZXZlbnQueCwgZXZlbnQueSk7Cisg
ICAgICAgIG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb24gPSBXZWJQb2ludChldmVudC5nbG9iYWxY
LCBldmVudC5nbG9iYWxZKTsKKyAgICAgICAgQVNTRVJUKCFtX2dlc3R1cmVBbmltYXRpb24pOwor
ICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGUgY3VydmUgcGFyYW1ldHJpemFibGUgZnJvbSB0aGUg
YnJvd3Nlci4KKyAgICAgICAgbV9nZXN0dXJlQW5pbWF0aW9uID0gQWN0aXZlUGxhdGZvcm1HZXN0
dXJlQW5pbWF0aW9uOjpjcmVhdGUoVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVh
dGUoRmxvYXRQb2ludChldmVudC5kZWx0YVgsIGV2ZW50LmRlbHRhWSkpLCB0aGlzKTsKKyAgICAg
ICAgc2NoZWR1bGVBbmltYXRpb24oKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDoKKyAgICAvLyBGSVhNRTog
cHV0IHRoaXMgaW50byBhIHN1Yi1mdW5jdGlvbj8KKyAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFO
VDAoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50OjpHZXN0dXJlRmxpbmdDYW5j
ZWwiKTsKKyAgICAgICAgbV9nZXN0dXJlQW5pbWF0aW9uLmNsZWFyKCk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6CisgICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZVRhcDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXBEb3duOgorICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKKyAgICBjYXNlIFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVQaW5jaEJlZ2luOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBp
bmNoRW5kOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoVXBkYXRlOiB7Cisg
ICAgICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFt
ZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KTsKKyAgICAgICAgcmV0dXJuIG1haW5GcmFtZUlt
cGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChwbGF0Zm9y
bUV2ZW50KTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6dHJh
bnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkZsb2F0UG9pbnQmIGZsaW5nRGVsdGEs
IGNvbnN0IFdlYlBvaW50JiBmbGluZ1BvaW50LCBjb25zdCBXZWJQb2ludCYgZ2xvYmFsRmxpbmdQ
b2ludCwgZG91YmxlIHN0YXJ0VGltZSwgY29uc3QgV2ViUG9pbnQmIGN1bXVsYXRpdmVTY3JvbGwp
Cit7CisgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6dHJh
bnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uIik7CisgICAgQVNTRVJUKCFtX2dlc3R1cmVBbmltYXRp
b24pOworICAgIG1fbGFzdFdoZWVsUG9zaXRpb24gPSBmbGluZ1BvaW50OworICAgIG1fbGFzdFdo
ZWVsR2xvYmFsUG9zaXRpb24gPSBnbG9iYWxGbGluZ1BvaW50OworICAgIE93blB0cjxQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZT4gY3VydmUgPSBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNy
ZWF0ZShmbGluZ0RlbHRhLCBJbnRQb2ludChjdW11bGF0aXZlU2Nyb2xsKSk7CisgICAgbV9nZXN0
dXJlQW5pbWF0aW9uID0gQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGUoY3Vy
dmUucmVsZWFzZSgpLCB0aGlzLCBzdGFydFRpbWUpOworICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7
CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IElu
dFBvaW50JiBzY3JvbGwsIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBuZXdTY2FsZSwgZG91YmxlIGR1
cmF0aW9uU2VjKQpAQCAtMTI4Myw2ICsxMzUwLDE3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0
ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKQogI2lmIEVOQUJMRShSRVFVRVNUX0FO
SU1BVElPTl9GUkFNRSkKICAgICBUUkFDRV9FVkVOVCgiV2ViVmlld0ltcGw6OnVwZGF0ZUFuaW1h
dGlvbnMiLCB0aGlzLCAwKTsKIAorICAgIC8vIENyZWF0ZSBzeW50aGV0aWMgd2hlZWwgZXZlbnRz
IGFzIG5lY2Vzc2FyeSBmb3IgZmxpbmcuCisgICAgaWYgKG1fZ2VzdHVyZUFuaW1hdGlvbikgewor
ICAgICAgICBpZiAobV9nZXN0dXJlQW5pbWF0aW9uLT5hbmltYXRlKGZyYW1lQmVnaW5UaW1lKSkg
eworICAgICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1w
bDo6YW5pbWF0ZTo6ZmxpbmcgY29udGludWUiKTsKKyAgICAgICAgICAgIHNjaGVkdWxlQW5pbWF0
aW9uKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5U
MCgid2Via2l0IiwgIldlYlZpZXdJbXBsOjphbmltYXRlOjpmbGluZyBvdmVyIik7CisgICAgICAg
ICAgICBtX2dlc3R1cmVBbmltYXRpb24uY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKwogICAg
IFdlYkZyYW1lSW1wbCogd2ViZnJhbWUgPSBtYWluRnJhbWVJbXBsKCk7CiAgICAgaWYgKCF3ZWJm
cmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjgzOCw2ICsyOTE2LDggQEAgdm9pZCBXZWJWaWV3
SW1wbDo6ZGlkQ29tbWl0TG9hZChib29sKiBpc05ld05hdmlnYXRpb24sIGJvb2wgaXNOYXZpZ2F0
aW9uV2l0aGluUGEKICAgICBtX29ic2VydmVkTmV3TmF2aWdhdGlvbiA9IGZhbHNlOwogICAgIGlm
ICghaXNOYXZpZ2F0aW9uV2l0aGluUGFnZSkKICAgICAgICAgbV9wYWdlU2NhbGVGYWN0b3JJc1Nl
dCA9IGZhbHNlOworCisgICAgbV9nZXN0dXJlQW5pbWF0aW9uLmNsZWFyKCk7CiB9CiAKIHZvaWQg
V2ViVmlld0ltcGw6OmxheW91dFVwZGF0ZWQoV2ViRnJhbWVJbXBsKiB3ZWJmcmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDlkOTM5NjlmOGNmMWZhNjA0
YTNlOTUxMzdkZmUyMDg4MWMxOTkzNDcuLmNhZGMxZmUyNjUxNjAzOTE4YTBjNWE2MTAzMWQ0Yjdh
OTE0ZDY1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAt
NTIsMTEgKzUyLDEzIEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk5vdGlmaWNh
dGlvblByZXNlbnRlckltcGwuaCIKICNpbmNsdWRlICJQYWdlT3ZlcmxheUxpc3QuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNs
aWVudEltcGwuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQWN0aXZlUGxhdGZvcm1HZXN0
dXJlQW5pbWF0aW9uOwogY2xhc3MgQ2hyb21pdW1EYXRhT2JqZWN0OwogY2xhc3MgRG9jdW1lbnRM
b2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTY1LDYgKzY3LDcgQEAgY2xhc3MgSGlzdG9yeUl0ZW07
CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBhZ2U7
CitjbGFzcyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldDsKIGNsYXNzIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDsKIGNsYXNzIFBvcHVwQ29udGFpbmVyOwogY2xhc3MgUG9wdXBNZW51Q2xpZW50OwpA
QCAtOTYsNyArOTksNyBAQCBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CiBjbGFzcyBXZWJTZXR0
aW5nc0ltcGw7CiBjbGFzcyBXZWJUb3VjaEV2ZW50OwogCi1jbGFzcyBXZWJWaWV3SW1wbCA6IHB1
YmxpYyBXZWJWaWV3LCBwdWJsaWMgV2ViTGF5ZXJUcmVlVmlld0NsaWVudCwgcHVibGljIFJlZkNv
dW50ZWQ8V2ViVmlld0ltcGw+IHsKK2NsYXNzIFdlYlZpZXdJbXBsIDogcHVibGljIFdlYlZpZXcs
IHB1YmxpYyBXZWJMYXllclRyZWVWaWV3Q2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWV3
SW1wbD4sIHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCB7CiBwdWJs
aWM6CiAgICAgZW51bSBBdXRvWm9vbVR5cGUgewogICAgICAgICBEb3VibGVUYXAsCkBAIC0yNTgs
NiArMjYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJh
bWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOwogICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgpOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zl
cldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgV2ViRmxvYXRQb2ludCYgZmxpbmdEZWx0YSwgY29u
c3QgV2ViUG9pbnQmIGZsaW5nUG9pbnQsIGNvbnN0IFdlYlBvaW50JiBnbG9iYWxGbGluZ1BvaW50
LCBkb3VibGUgc3RhcnRUaW1lLCBjb25zdCBXZWJQb2ludCYgY3VtdWxhdGl2ZVNjcm9sbCk7CiAK
ICAgICAvLyBXZWJWaWV3SW1wbAogCkBAIC0zMzMsNiArMzM3LDkgQEAgcHVibGljOgogICAgIHZv
aWQgbnVtYmVyT2ZXaGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKTsKICAgICB2b2lk
IG51bWJlck9mVG91Y2hFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCk7CiAKKyAgICAvLyBQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCBpbXBsZW1lbnRhdGlvbiBmb3Igd2hlZWwgZmxpbmcu
CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisK
ICAgICAvLyBIYW5kbGVzIGNvbnRleHQgbWVudSBldmVudHMgb3JpZ25hdGVkIHZpYSB0aGUgdGhl
IGtleWJvYXJkLiBUaGVzZQogICAgIC8vIGluY2x1ZGUgdGhlIFZLX0FQUFMgdmlydHVhbCBrZXkg
YW5kIHRoZSBTaGlmdCtGMTAgY29tYmluZS4gQ29kZSBpcwogICAgIC8vIGJhc2VkIG9uIHRoZSBX
ZWJraXQgZnVuY3Rpb24gYm9vbCBXZWJWaWV3OjpoYW5kbGVDb250ZXh0TWVudUV2ZW50KFdQQVJB
TQpAQCAtNzE4LDYgKzcyNSw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ICAgICBVc2VyTWVkaWFDbGllbnRJbXBsIG1fdXNlck1lZGlhQ2xpZW50SW1wbDsKICNlbmRpZgor
ICAgIE93blB0cjxXZWJDb3JlOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24+IG1fZ2Vz
dHVyZUFuaW1hdGlvbjsKKyAgICBXZWJQb2ludCBtX2xhc3RXaGVlbFBvc2l0aW9uOworICAgIFdl
YlBvaW50IG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggYTE5MmJhNTU3YmYwZWExNmMyMWU0YzA0MjQyY2Iy
NWQwOTBhMTc2My4uNDk3NGMxMTA3ZjM3NDQ2MDM0M2I3MjEzZTlkMGJjYWM2ZWJmNjI1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHAKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpIHsgbV9kaWRSZXF1ZXN0UmVkcmF3ID0gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpIHsgbV9k
aWRSZXF1ZXN0Q29tbWl0ID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9u
RXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVu
dHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHRy
YW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvblRvTWFpblRocmVhZE9uSW1wbFRocmVhZChjb25zdCBG
bG9hdFNpemUmIGZsaW5nRGVsdGEsIGNvbnN0IEludFBvaW50JiBmbGluZ1BvaW50LCBjb25zdCBJ
bnRQb2ludCYgZ2xvYmFsRmxpbmdQb2ludCwgZG91YmxlIHN0YXJ0VGltZSwgY29uc3QgSW50UG9p
bnQmIGN1bXVsYXRpdmVTY3JvbGwpIHsgfQogCiAgICAgc3RhdGljIHZvaWQgZXhwZWN0Q2xlYXJl
ZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAK
aW5kZXggNzAyYmJmMTYzOWI0M2IxNmFlZjNhYmI2NjA2MjkwNDk4YzBkNjYxNS4uMDlkNzZlOTAx
MzFiOTJlZTFmYmM2N2E3OWE1NTZjNzgzMDRlYmMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0yNTYsNiArMjU2
LDkgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJX
aGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFBvaW50JiwgY29u
c3QgSW50UG9pbnQmLCBkb3VibGUsIGNvbnN0IEludFBvaW50JikgeyB9CisKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBNb2NrTGF5ZXJUcmVlSG9zdENsaWVudChUZXN0SG9va3MqIHRlc3RIb29r
cykgOiBtX3Rlc3RIb29rcyh0ZXN0SG9va3MpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oCmluZGV4IDM4
ODc2ZDczN2ZiNTJhYTZkMDNjNzFiZmZlNDE3MjhjOGNjY2YwYjUuLjA2OTVmNzRmODU3YWZlMzlh
NGYzZTgwMWExNmY4MDU0ZmE5OGY0N2EgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oCkBAIC00NSw2ICs0NSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3Vj
Y2VzcykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBGbG9hdFNpemUmIGZsaW5n
RGVsdGEsIGNvbnN0IEludFBvaW50JiBmbGluZ1BvaW50LCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
RmxpbmdQb2ludCwgZG91YmxlIHN0YXJ0VGltZSwgY29uc3QgSW50UG9pbnQmIGN1bXVsYXRpdmVT
Y3JvbGwpIHsgfQogCiAgICAgLy8gVXNlZCBvbmx5IGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgcGF0
aC4KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGxUZXN0LmNwcAppbmRleCBhMDU3MDhjM2U4YjVhNGU0MTgwNDQyYzFkYjdk
MzY5NjQyN2NjYzRmLi40YTdmMTYwNDU3ZjA2NjFlNGY4YzYwMTVmYTNiOGMwOTJiNjc4NjU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCkBAIC02Miw2ICs2Miw4IEBAIHB1
YmxpYzoKICAgICBNT0NLX01FVEhPRDEoc2Nyb2xsQnksIHZvaWQoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpKTsKICAgICBNT0NLX01FVEhPRDAoc2Nyb2xsRW5kLCB2b2lkKCkpOwogCisgICAgTU9D
S19NRVRIT0Q1KHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbiwgdm9pZChjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIGZsaW5nRGVsdGEsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBmbGluZ1Bv
aW50LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsRmxpbmdQb2ludCwgZG91YmxlIHN0
YXJ0VGltZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGN1bXVsYXRpdmVTY3JvbGwpKTsKKwog
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgYW5jaG9yUG9pbnQsCkBAIC0zMDgsMjEgKzMxMCw4MSBA
QCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdB
bmltYXRlcykKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXIsIHNjcm9sbEVuZCgp
KTsKICAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4xKTsKIAorICAgIC8vIElmIHdlIGNh
bmNlbCB0aGUgZmxpbmcsIHRoZSBuZXh0IGFuaW1hdGlvbiBzaG91bGQgYmUgYSBuby1vcCBhbmQg
c2hvdWxkIG5vdCByZXN1bHQgaW4gYW5vdGhlcgorICAgIC8vIGZyYW1lIGJlaW5nIHJlcXVlc3Rl
ZC4KKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGlu
Z0NhbmNlbDsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZEhhbmRsZUlucHV0RXZl
bnQoKSk7CisgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CisK
KyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXIsIHNjaGVkdWxlQW5pbWF0aW9uKCkp
LlRpbWVzKDApOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlciwgc2Nyb2xsQmVn
aW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDApOworICAgIG1faW5wdXRIYW5kbGVy
LT5hbmltYXRlKDEwLjMpOworfQorCitURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGxUZXN0LCBnZXN0dXJlRmxpbmdUcmFuc2ZlcikKK3sKKyAgICAvLyBXZSBzaG91bGQgaGFuZGxl
IHRoZSBlbnRpcmUgc2VxdWVuY2Ugb3Vyc2VsdmVzLgorICAgIEVYUEVDVF9DQUxMKG1fbW9ja0Ns
aWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudCg6OnRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKKwor
ICAgIC8vIE9uIHRoZSBmbGluZyBzdGFydCwgd2Ugc2hvdWxkIHNjaGVkdWxlIGFuIGFuaW1hdGlv
biBidXQgbm90IGFjdHVhbGx5IHN0YXJ0CisgICAgLy8gc2Nyb2xsaW5nLgorICAgIGdlc3R1cmUu
dHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisgICAgV2Vi
Q29yZTo6RmxvYXRTaXplIGZsaW5nRGVsdGEgPSBXZWJDb3JlOjpGbG9hdFNpemUoMTAwMCwgMCk7
CisgICAgV2ViQ29yZTo6SW50UG9pbnQgZmxpbmdQb2ludCA9IFdlYkNvcmU6OkludFBvaW50KDcs
IDEzKTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBmbGluZ0dsb2JhbFBvaW50ID0gV2ViQ29yZTo6
SW50UG9pbnQoMTcsIDIzKTsKKyAgICBnZXN0dXJlLmRlbHRhWCA9IGZsaW5nRGVsdGEud2lkdGgo
KTsKKyAgICBnZXN0dXJlLmRlbHRhWSA9IGZsaW5nRGVsdGEuaGVpZ2h0KCk7CisgICAgZ2VzdHVy
ZS54ID0gZmxpbmdQb2ludC54KCk7CisgICAgZ2VzdHVyZS55ID0gZmxpbmdQb2ludC55KCk7Cisg
ICAgZ2VzdHVyZS5nbG9iYWxYID0gZmxpbmdHbG9iYWxQb2ludC54KCk7CisgICAgZ2VzdHVyZS5n
bG9iYWxZID0gZmxpbmdHbG9iYWxQb2ludC55KCk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xp
ZW50LCBkaWRIYW5kbGVJbnB1dEV2ZW50KCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0
SGFuZGxlciwgc2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5w
dXRIYW5kbGVyLCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAg
LldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6
U2Nyb2xsU3RhcnRlZCkpOworICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdl
c3R1cmUpOworCisgICAgLy8gVGhlIGZpcnN0IGFuaW1hdGUgY2FsbCBzaG91bGQgbGV0IHVzIHBp
Y2sgdXAgYW4gYW5pbWF0aW9uIHN0YXJ0IHRpbWUsIGJ1dCB3ZQorICAgIC8vIHNob3VsZG4ndCBh
Y3R1YWxseSBtb3ZlIGFueXdoZXJlIGp1c3QgeWV0LiBUaGUgZmlyc3QgZnJhbWUgYWZ0ZXIgdGhl
IGZsaW5nIHN0YXJ0CisgICAgLy8gd2lsbCB0eXBpY2FsbHkgaW5jbHVkZSB0aGUgbGFzdCBzY3Jv
bGwgZnJvbSB0aGUgZ2VzdHVyZSB0aGF0IGxlYWQgdG8gdGhlIHNjcm9sbAorICAgIC8vIChlaXRo
ZXIgd2hlZWwgb3IgZ2VzdHVyZSBzY3JvbGwpLCBzbyB0aGVyZSBzaG91bGQgYmUgbm8gdmlzaWJs
ZSBoaXRjaC4KKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXIsIHNjaGVkdWxlQW5p
bWF0aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlciwgc2Nyb2xsQmVn
aW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDApOworICAgIG1faW5wdXRIYW5kbGVy
LT5hbmltYXRlKDEwKTsKKworICAgIC8vIFRoZSBzZWNvbmQgY2FsbCBzaG91bGQgc3RhcnQgc2Ny
b2xsaW5nIGluIHRoZSAtWCBkaXJlY3Rpb24uCisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRI
YW5kbGVyLCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1
dEhhbmRsZXIsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAu
V2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpT
Y3JvbGxTdGFydGVkKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyLCBzY3Jv
bGxCeSh0ZXN0aW5nOjpQcm9wZXJ0eSgmV2ViQ29yZTo6SW50U2l6ZTo6d2lkdGgsIHRlc3Rpbmc6
Okx0KDApKSkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlciwgc2Nyb2xsRW5k
KCkpOworICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwLjEpOworCiAgICAgLy8gTGV0J3Mg
c2F5IG9uIHRoZSB0aGlyZCBjYWxsIHdlIGhpdCBhIG5vbi1zY3JvbGxhYmxlIHJlZ2lvbi4gV2Ug
c2hvdWxkIGFib3J0IHRoZSBmbGluZyBhbmQgbm90IHNjcm9sbC4KLSAgICAvLyBGSVhNRTogV2Ug
YWxzbyBuZWVkIHRvIGRvIHNvbWUgd29yayB0byB0cmFuc2ZlciB0aGUgcmVzdCBvZiB0aGlzIGZs
aW5nIHRvIHRoZSBtYWluIHRocmVhZC4KLSAgICAvLyBBZGQgdGVzdHMgZm9yIHRoaXMgb25jZSBp
dCdzIGltcGxlbWVudGVkLgorICAgIC8vIFdlIGFsc28gc2hvdWxkIHBhc3MgdGhlIGN1cnJlbnQg
ZmxpbmcgcGFyYW1ldGVycyBvdXQgdG8gdGhlIGNsaWVudCBzbyB0aGUgcmVzdCBvZiB0aGUgZmxp
bmcgY2FuIGJlCisgICAgLy8gdHJhbnNmZXJyZWQgdG8gdGhlIG1haW4gdGhyZWFkLgogICAgIEVY
UEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlciwgc2NoZWR1bGVBbmltYXRpb24oKSk7CiAgICAg
RVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyLCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0
ZXN0aW5nOjpfKSkKLSAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpD
Q0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsSWdub3JlZCkpOworICAgICAgICAuV2lsbE9uY2Uo
dGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxGYWls
ZWQpKTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXIsIHNjcm9sbEJ5KHRlc3Rp
bmc6Ol8pKS5UaW1lcygwKTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXIsIHNj
cm9sbEVuZCgpKS5UaW1lcygwKTsKKyAgICAvLyBFeHBlY3RlZCB3aGVlbCBmbGluZyBhbmltYXRp
b24gcGFyYW1ldGVyczoKKyAgICAvLyAqKSBmbGluZ0RlbHRhIGFuZCBmbGluZ1BvaW50IHNob3Vs
ZCBtYXRjaCB0aGUgb3JpZ2luYWwgR2VzdHVyZUZsaW5nU3RhcnQgZXZlbnQKKyAgICAvLyAqKSBz
dGFydFRpbWUgc2hvdWxkIGJlIDEwIHRvIG1hdGNoIHRoZSB0aW1lIHBhcmFtZXRlciBvZiB0aGUg
Zmlyc3QgYW5pbWF0ZSgpIGNhbGwgYWZ0ZXIgdGhlIEdlc3R1cmVGbGluZ1N0YXJ0CisgICAgLy8g
KikgY3VtdWxhdGl2ZVNjcm9sbCBkZXBlbmRzIG9uIHRoZSBjdXJ2ZSwgYnV0IHNpbmNlIHdlJ3Zl
IGFuaW1hdGVkIGluIHRoZSAtWCBkaXJlY3Rpb24gdGhlIFggdmFsdWUgc2hvdWxkIGJlIDwgMAor
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlciwgdHJhbnNmZXJXaGVlbEZsaW5nQW5p
bWF0aW9uKGZsaW5nRGVsdGEsIGZsaW5nUG9pbnQsIGZsaW5nR2xvYmFsUG9pbnQsIDEwLCB0ZXN0
aW5nOjpQcm9wZXJ0eSgmV2ViQ29yZTo6SW50UG9pbnQ6OngsIHRlc3Rpbmc6Okd0KDApKSkpOwog
ICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwLjIpOwogCi0gICAgLy8gU2luY2Ugd2UndmUg
YWJvcnRlZCB0aGUgZmxpbmcsIHRoZSBuZXh0IGFuaW1hdGlvbiBzaG91bGQgYmUgYSBuby1vcCBh
bmQgc2hvdWxkIG5vdCByZXN1bHQgaW4gYW5vdGhlcgotICAgIC8vIGZyYW1lIGJlaW5nIHJlcXVl
c3RlZC4KKyAgICAvLyBPbmNlIHRoZSBmbGluZyBpcyB0cmFuc2ZlcnJlZCwgd2Ugc2hvdWxkIHN0
b3Agc2Nyb2xsaW5nLgogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlciwgc2NoZWR1
bGVBbmltYXRpb24oKSkuVGltZXMoMCk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5k
bGVyLCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CiAgICAg
bV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMyk7CisKKyAgICAvLyBTaW5jZSB3ZSd2ZSB0cmFu
c2ZlcnJlZCB0aGUgZmxpbmcgdG8gdGhlIG1haW4gdGhyZWFkLCB3ZSBuZWVkIHRvIHBhc3MgdGhl
IG5leHQgR2VzdHVyZUZsaW5nQ2FuY2VsIHRvIHRoZSBtYWluCisgICAgLy8gdGhyZWFkIGFzIHdl
bGwuCisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50
KHRydWUpKTsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1
cmVGbGluZ0NhbmNlbDsKKyAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0
dXJlKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132542</attachid>
            <date>2012-03-18 21:58:10 -0700</date>
            <delta_ts>2012-03-19 13:33:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81479-20120318215808.patch</filename>
            <type>text/plain</type>
            <size>58915</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4ZWI3MTFhYWY2MTM3
MzQzOGRkNWU4ZTA4ZDU2ZjZiNjk1NWFjODIyLi5mZDA2ZjU2ZmE3MzZkNGJiMzliMmUwYmRkNmQw
YTFkNDg5NDc1ZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMy0xOCAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gVHJhbnNmZXIgd2hlZWwgZmxpbmdzIHRvIG1haW4gdGhyZWFkIGlmIHdlIGhpdCBhIHJlZ2lv
biB0aGF0IGNhbid0IGJlIHNjcm9sbGVkIGZyb20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQ3OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYkxheWVyVHJlZVZpZXdD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Q2xpZW50Ojp0cmFuc2Zl
cldoZWVsRmxpbmdBbmltYXRpb24pOgorCiAyMDEyLTAzLTA4ICBKYW1lcyBSb2JpbnNvbiAgPGph
bWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXNlIGFuIGV4cGxpY2l0IGF0dHJpYnV0ZSB0
byBzaWduYWwgdGhhdCBhIGNvbnRleHQgcHJlZmVycyB0byB1c2UgYSBkaXNjcmV0ZSBHUFUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAzZjhlMzUzZjI1NGJmNDg0MGRjYzg2Mjk1ZThiYzU2ZGZmNzQ1NTkyLi4yZTJl
ODIwMDc1NGY1NmYwNTE0YTgwNTVjMWJlY2YwZDM4YWI0MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNjQgQEAKKzIwMTItMDMtMTggIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbY2hyb21pdW1dIFRyYW5zZmVyIHdoZWVsIGZsaW5ncyB0byBtYWluIHRo
cmVhZCBpZiB3ZSBoaXQgYSByZWdpb24gdGhhdCBjYW4ndCBiZSBzY3JvbGxlZCBmcm9tIHRoZSBj
b21wb3NpdG9yIHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODE0NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIHBsYXRmb3JtL0FjdGl2
ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVQ
bGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6QWN0aXZlUGxh
dGZvcm1HZXN0dXJlQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9BY3RpdmVQbGF0Zm9y
bUdlc3R1cmVBbmltYXRpb24uaDoKKyAgICAgICAgKEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1h
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUN1cnZlLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBsYXRmb3JtR2VzdHVyZUN1cnZlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0
dXJlQ3VydmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSk6CisgICAgICAgICogcGxh
dGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmg6CisgICAgICAgIChUb3VjaEZs
aW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hGbGluZ1Bs
YXRmb3JtR2VzdHVyZUN1cnZlOjpjdW11bGF0aXZlU2Nyb2xsKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaDoKKyAgICAgICAgKFdlYkNvcmU6Oldo
ZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3VtdWxhdGl2ZVNjcm9sbCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6Y3VtdWxh
dGl2ZVNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6c3RhcnRUaW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oOgorICAgICAgICAo
Q0NHZXN0dXJlQ3VydmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDSW5wdXRIYW5kbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dDo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgor
ICAgICAgICAoQ0NMYXllclRyZWVIb3N0Q2xpZW50KToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdEltcGw6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAg
ICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCk6CisgICAgICAgIChDQ0xheWVyVHJlZUhv
c3RJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Npbmds
ZVRocmVhZFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojp0
cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb25Ub01haW5UaHJlYWRPbkltcGxUaHJlYWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0
aW9uVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJh
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTAzLTE3ICBKYW1lcyBSb2Jp
bnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1l
bnQgZmxpbmctYnktd2hlZWwgb24gY29tcG9zaXRvciB0aHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggMTE3OTg4OWJkMDhhOTI3YWM4NjM4YTMxMjRiMDk0ODAwMTU2NDkyYi4uZGZj
OWYwNTFlYTc3YmUzMzBiOGM3Y2ViYWRmMTM5N2NhNjQzNzA3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMi0wMy0xOCAgSmFtZXMgUm9iaW5zb24gIDxq
YW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVHJhbnNmZXIgd2hlZWwg
ZmxpbmdzIHRvIG1haW4gdGhyZWFkIGlmIHdlIGhpdCBhIHJlZ2lvbiB0aGF0IGNhbid0IGJlIHNj
cm9sbGVkIGZyb20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQ3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVRvQ0NHZXN0dXJlQWRh
cHRlcjo6Y3VtdWxhdGl2ZVNjcm9sbCk6CisgICAgICAgIChQbGF0Zm9ybUdlc3R1cmVUb0NDR2Vz
dHVyZUFkYXB0ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbDo6aGFuZGxlSW5wdXRFdmVudEludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSk6CisgICAgICAg
ICogc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmg6CisgICAgICAgICogc3JjL1dl
YkxheWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmll
d0ltcGw6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oOgorICAgICAgICAoV2ViTGF5ZXJU
cmVlVmlld0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpzY3JvbGxCeSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRp
ZENvbW1pdExvYWQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdDo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFkT25JbXBsVGhyZWFk
KToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdU
Rjo6TW9ja0xheWVyVHJlZUhvc3RDbGllbnQ6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbik6
CisgICAgICAgIChNb2NrTGF5ZXJUcmVlSG9zdENsaWVudCk6CisgICAgICAgICogdGVzdHMvRmFr
ZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RmFrZUNDTGF5ZXJU
cmVlSG9zdENsaWVudDo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiB0
ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwOgorCiAyMDEyLTAzLTE3
ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBJbXBsZW1lbnQgZmxpbmctYnktd2hlZWwgb24gY29tcG9zaXRvciB0aHJlYWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291cmNlL1BsYXRmb3JtL1Bs
YXRmb3JtLmd5cGkKaW5kZXggYWZhMTQ3MTNmNWQ2YWFjYjgzMTlkNzVhNjc3MzZhNmYyM2IxMzQ5
YS4uOGVjZjg4MTNhMDZmYTc2M2E2NDJkNGY4NmFjYjllODVhYjMwY2M2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKKysrIGIvU291cmNlL1BsYXRmb3JtL1BsYXRm
b3JtLmd5cGkKQEAgLTMxLDYgKzMxLDcgQEAKIHsKICAgICAndmFyaWFibGVzJzogewogICAgICAg
ICAncGxhdGZvcm1fZmlsZXMnOiBbCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkFj
dGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1Ymxp
Yy9XZWJDU3RyaW5nLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDYW52YXMu
aCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbG9yLmgnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFy
YW1ldGVycy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVl
bEZsaW5nUGFyYW1ldGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZDMzYTU3ZDA4ZTMzZjE1OGYwZmFiMjhh
NThlODVjYzFlOGNkYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgKQEAgLTAsMCArMSw1MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnNfaAorI2RlZmlu
ZSBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyc19oCisKKyNpbmNsdWRlICJXZWJDb21tb24u
aCIKKworI2luY2x1ZGUgIldlYkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJXZWJQb2ludC5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0
ZXJzIHsKKyAgICBXZWJGbG9hdFBvaW50IGRlbHRhOworICAgIFdlYlBvaW50IHBvaW50OworICAg
IFdlYlBvaW50IGdsb2JhbFBvaW50OworICAgIGludCBtb2RpZmllcnM7CisgICAgV2ViU2l6ZSBj
dW11bGF0aXZlU2Nyb2xsOworICAgIGRvdWJsZSBzdGFydFRpbWU7CisKKyAgICBXZWJBY3RpdmVX
aGVlbEZsaW5nUGFyYW1ldGVycygpCisgICAgICAgIDogbW9kaWZpZXJzKDApCisgICAgICAgICwg
c3RhcnRUaW1lKDApCisgICAgeworICAgIH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQu
aCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVu
dC5oCmluZGV4IDVjMGI5ZWY5YTJhMmM2MTNiMTE5MDBjMTNmODk4ZjIyODM5YjQ2NWIuLjQ4YmQ5
ZGNmOTczYTcxN2EyN2I5MTk3NWY1NWJlODYwYzMyNDQzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCisrKyBiL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCkBA
IC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdlYkxheWVyVHJlZVZpZXdDbGllbnRfaAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKK3N0cnVjdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczsKIGNs
YXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOwogc3RydWN0IFdlYlNpemU7CiBjbGFzcyBXZWJUaHJl
YWQ7CkBAIC01NSw2ICs1NiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1p
dEFuZERyYXdGcmFtZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVm
ZmVycygpID0gMDsKIAorICAgIC8vIFRyYW5zZmVycyBhbiBpbi1wcm9ncmVzcyB3aGVlbCBmbGlu
ZyBhbmltYXRpb24gdGhhdCB0aGUgV2ViTGF5ZXJUcmVlVmlldworICAgIC8vIGNhbiBubyBsb25n
ZXIgYWR2YW5jZSB0byB0aGUgY2xpZW50IHRvIGZpbmlzaCBvdXQuCisgICAgLy8gRklYTUU6IFJl
bW92ZSBkZWZhdWx0IGltcGwgd2hlbiBjbGllbnRzIGFyZSBhbGwgdXBkYXRlZAorICAgIHZpcnR1
YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnMmKSB7IH0KKwogICAgIC8vIFNjaGVkdWxlcyBhIGNvbXBvc2l0aW5nIHBh
c3MsIG1lYW5pbmcgdGhlIGNsaWVudCBzaG91bGQgY2FsbAogICAgIC8vIFdlYkxheWVyVHJlZVZp
ZXc6OmNvbXBvc2l0ZSBhdCBhIGxhdGVyIHRpbWUuIFRoaXMgaXMgb25seSBjYWxsZWQgaWYgdGhl
CiAgICAgLy8gY29tcG9zaXRvciB0aHJlYWQgaXMgZGlzYWJsZWQ7IHdoZW4gZW5hYmxlZCwgdGhl
IGNvbXBvc2l0b3Igd2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGE1ZTg0NTg4OWE5ZmIwMjU2NDVj
ZThiODY1ZTkzNTdjNjVlOWZjYTAuLjExZDIyODVkMjAwYTg4NTRjODM4ZGNmOTNkYjBmYzYxYmJi
ZTEwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTMzNjAsNiArMzM2MCw3IEBACiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBs
YXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3Rp
dmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uY3BwCmluZGV4IDE4ZWM3ZWIzNGFlMmU0ZTA3YjU2
YzE0YTNlMDJhMzM3OGJhZDlkNTAuLjZhMDEzYWRmYjQ0NWQ2ZGM5NTNkNDM5NzhmNDk4NTAxMzdj
YzBlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3Jt
R2VzdHVyZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZl
UGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmNwcApAQCAtMzcsNiArMzcsMTEgQEAgUGFzc093blB0
cjxBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24+IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFu
aW1hdGlvbjo6Y3JlYXQKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEFjdGl2ZVBsYXRmb3JtR2Vz
dHVyZUFuaW1hdGlvbihjdXJ2ZSwgdGFyZ2V0KSk7CiB9CiAKK1Bhc3NPd25QdHI8QWN0aXZlUGxh
dGZvcm1HZXN0dXJlQW5pbWF0aW9uPiBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OmNy
ZWF0ZShQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjdXJ2ZSwgUGxhdGZvcm1HZXN0
dXJlQ3VydmVUYXJnZXQqIHRhcmdldCwgZG91YmxlIHN0YXJ0VGltZSkKK3sKKyAgICByZXR1cm4g
YWRvcHRQdHIobmV3IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbihjdXJ2ZSwgdGFyZ2V0
LCBzdGFydFRpbWUpKTsKK30KKwogQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjp+QWN0
aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKCkKIHsKIH0KQEAgLTQ5LDYgKzU0LDE0IEBAIEFj
dGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0
aW9uKFBhc3NPd25QdHI8UGxhdGZvCiB7CiB9CiAKK0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1h
dGlvbjo6QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8UGxhdGZvcm1H
ZXN0dXJlQ3VydmU+IGN1cnZlLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCogdGFyZ2V0LCBk
b3VibGUgc3RhcnRUaW1lKQorICAgIDogbV9zdGFydFRpbWUoc3RhcnRUaW1lKQorICAgICwgbV93
YWl0aW5nRm9yRmlyc3RUaWNrKGZhbHNlKQorICAgICwgbV9jdXJ2ZShjdXJ2ZSkKKyAgICAsIG1f
dGFyZ2V0KHRhcmdldCkKK3sKK30KKwogYm9vbCBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRp
b246OmFuaW1hdGUoZG91YmxlIHRpbWUpCiB7CiAgICAgaWYgKG1fd2FpdGluZ0ZvckZpcnN0VGlj
aykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1H
ZXN0dXJlQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9y
bUdlc3R1cmVBbmltYXRpb24uaAppbmRleCA5ZDU2M2U0ODM2NjZkZDJhZGExYjViMDVlODk4NGRm
MTViYWM3MDI0Li4yMWYxOTljMDdhMWZjZjM0YzU4YzEyNDlmMmI4NGU0YzU3MTFiY2E0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmlt
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1
cmVBbmltYXRpb24uaApAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBBY3RpdmVQbGF0Zm9ybUdlc3R1
cmVBbmltYXRpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjdGl2ZVBsYXRmb3JtR2Vz
dHVyZUFuaW1hdGlvbik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8QWN0aXZlUGxh
dGZvcm1HZXN0dXJlQW5pbWF0aW9uPiBjcmVhdGUoUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZT4sIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0Kik7CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uPiBjcmVhdGUoUGFzc093blB0cjxQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZT4sIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0KiwgZG91YmxlIHN0
YXJ0VGltZSk7CiAgICAgfkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbigpOwogCiAgICAg
Ym9vbCBhbmltYXRlKGRvdWJsZSB0aW1lKTsKQEAgLTUwLDYgKzUxLDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICAvLyBBc3N1bWVzIGEgdmFsaWQgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQg
dGhhdCBvdXRsaXZlcyB0aGUgYW5pbWF0aW9uLgogICAgIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFu
aW1hdGlvbihQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiwgUGxhdGZvcm1HZXN0dXJl
Q3VydmVUYXJnZXQqKTsKKyAgICBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oUGFzc093
blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4sIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0Kiwg
ZG91YmxlIHN0YXJ0VGltZSk7CiAKICAgICBkb3VibGUgbV9zdGFydFRpbWU7CiAgICAgYm9vbCBt
X3dhaXRpbmdGb3JGaXJzdFRpY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Dcm9zc1RocmVhZENvcGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJl
YWRDb3BpZXIuaAppbmRleCAzYjYwNzYxNDJjZGFhYzIxNGFkMDA5MzZmY2ZiM2M1MDRhM2ZkMTcw
Li44OTYyY2VlOTQ0ZjExOGM1ZjNlYTcxOWI4MzVjOWVmZjk4MjRjOGRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKQEAgLTQxLDYgKzQxLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCisgICAgc3RydWN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0
ZXJzOwogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xhc3MgSW50U2l6ZTsKICAgICBjbGFzcyBL
VVJMOwpAQCAtNzAsNiArNzEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgVGhyZWFkYWJsZUxv
YWRlck9wdGlvbnM+IDogcHVibGljIENyb3NzVGhyZWFkQ29waWVyUGFzc1Rocm91Z2g8VGhyZWFk
YWJsZUxvYWRlck9wdGlvbnM+IHsKICAgICB9OwogCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jv
c3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRl
cnM+IDogcHVibGljIENyb3NzVGhyZWFkQ29waWVyUGFzc1Rocm91Z2g8QWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnM+IHsKKyAgICB9OworCiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJl
YWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSW50UmVjdD4gOiBwdWJsaWMgQ3Jvc3NUaHJlYWRD
b3BpZXJQYXNzVGhyb3VnaDxJbnRSZWN0PiB7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3VydmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKaW5kZXggOTIyMTk5MTQ3OGVhOWMxODkz
Zjk2YjNmZjBlZWQ3ZWY2NGM3N2M0Mi4uZTBlZDI0Mzk3ZmE4ODQ2ZDdhNGU0Njg4OTIxZjNiNmQz
MjI4M2NhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0
dXJlQ3VydmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVD
dXJ2ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
SW50U2l6ZTsKIGNsYXNzIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0OwogCiAvLyBBYnN0cmFj
dCBpbnRlcmZhY2UgZm9yIGN1cnZlcyB1c2VkIGJ5IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1h
dGlvbi4gQQpAQCAtMzksNiArNDAsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIGZhbHNl
IGlmIGN1cnZlIGhhcyBmaW5pc2hlZCBhbmQgY2FuIG5vIGxvbmdlciBiZSBhcHBsaWVkLgogICAg
IHZpcnR1YWwgYm9vbCBhcHBseShkb3VibGUgdGltZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJn
ZXQqKSA9IDA7CisKKyAgICB2aXJ0dWFsIEludFNpemUgY3VtdWxhdGl2ZVNjcm9sbCgpIGNvbnN0
ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCmlu
ZGV4IDA2ZWQ1NGFjM2FjMDk2YmM0MGUxNjVlZTI1NDdjZGE1ZDkzNDYwNWMuLmQ1ZTYzMzZjMTBh
MWZmNTRhNjFlNWZlOWI3MjdhOGU1Mjc4NGIyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcApAQCAt
MzUsMTEgKzM1LDE3IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIFBhc3NPd25QdHI8UGxhdGZv
cm1HZXN0dXJlQ3VydmU+IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKGNv
bnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5KQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgVG91
Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKHZlbG9jaXR5KSk7CisgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUodmVsb2NpdHksIEludFNpemUo
KSkpOwogfQogCi1Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxpbmdQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSkKK1Bhc3NPd25QdHI8
UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3Jl
YXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBJbnRTaXplJiBjdW11bGF0aXZl
U2Nyb2xsKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgVG91Y2hGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlKHZlbG9jaXR5LCBjdW11bGF0aXZlU2Nyb2xsKSk7Cit9CisKK1RvdWNoRmxpbmdQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNvbnN0
IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBJbnRTaXplJiBjdW11bGF0aXZlU2Nyb2xsKQog
ICAgIDogbV92ZWxvY2l0eSh2ZWxvY2l0eSkKKyAgICAsIG1fY3VtdWxhdGl2ZVNjcm9sbChjdW11
bGF0aXZlU2Nyb2xsKQogICAgICwgbV90aW1lU2NhbGVGYWN0b3IoMTAwMCAvIG1heCgxLmYsIG1h
eChmYWJzKHZlbG9jaXR5LngoKSksIGZhYnModmVsb2NpdHkueSgpKSkpKQogewogICAgIEFTU0VS
VCh2ZWxvY2l0eSAhPSBGbG9hdFBvaW50Ojp6ZXJvKCkpOwpAQCAtNzIsNyArNzgsNyBAQCBib29s
IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6YXBwbHkoZG91YmxlIHRpbWUsIFBsYXRm
b3JtR2VzdHVyZUN1cnZlVGFyZwogICAgICAgICBkaXNwbGFjZW1lbnQgPSAxLjA7CiAKICAgICAv
LyBLZWVwIHRyYWNrIG9mIGludGVnZXIgcG9ydGlvbiBvZiBzY3JvbGwgdGh1cyBmYXIsIGFuZCBw
cmVwYXJlIGluY3JlbWVudC4KLSAgICBJbnRQb2ludCBzY3JvbGwoZGlzcGxhY2VtZW50ICogbV92
ZWxvY2l0eS54KCksIGRpc3BsYWNlbWVudCAqIG1fdmVsb2NpdHkueSgpKTsKKyAgICBJbnRTaXpl
IHNjcm9sbChkaXNwbGFjZW1lbnQgKiBtX3ZlbG9jaXR5LngoKSwgZGlzcGxhY2VtZW50ICogbV92
ZWxvY2l0eS55KCkpOwogICAgIEludFBvaW50IHNjcm9sbEluY3JlbWVudChzY3JvbGwgLSBtX2N1
bXVsYXRpdmVTY3JvbGwpOwogICAgIG1fY3VtdWxhdGl2ZVNjcm9sbCA9IHNjcm9sbDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVy
ZUN1cnZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0
dXJlQ3VydmUuaAppbmRleCBmZDUyYmM0ZWM3NGMwYjUyYjc1ODQ1YjQ2NjlmNjU2ZjA3ZDI1MGVl
Li4xNmFlZmUyNTc0ZTUxNzhhZDgzZTUxZDE4NzFkMmQzN2IyOGJkMzJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmUuaApAQCAtNDEsMTYgKzQxLDE4IEBAIGNsYXNzIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0
OwogY2xhc3MgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlIDogcHVibGljIFBsYXRmb3Jt
R2VzdHVyZUN1cnZlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5KTsKKyAgICBzdGF0
aWMgUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0IEZsb2F0UG9p
bnQmIHZlbG9jaXR5LCBjb25zdCBJbnRTaXplJiBjdW11bGF0aXZlU2Nyb2xsKTsKICAgICB2aXJ0
dWFsIH5Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBhcHBseShkb3VibGUgdGltZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqKTsKKyAgICB2
aXJ0dWFsIEludFNpemUgY3VtdWxhdGl2ZVNjcm9sbCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VtdWxh
dGl2ZVNjcm9sbDsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFRvdWNoRmxpbmdQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSk7CisgICAgVG91Y2hGbGlu
Z1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBJ
bnRTaXplJiBjdW11bGF0aXZlU2Nyb2xsKTsKIAogICAgIEZsb2F0UG9pbnQgbV92ZWxvY2l0eTsK
KyAgICBJbnRTaXplIG1fY3VtdWxhdGl2ZVNjcm9sbDsKICAgICBmbG9hdCBtX3RpbWVTY2FsZUZh
Y3RvcjsKLSAgICBJbnRQb2ludCBtX2N1bXVsYXRpdmVTY3JvbGw7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZs
aW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hl
ZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcAppbmRleCBjOWYxNzMyODk3OWNiN2M3MmZm
MzlmN2VjYzIxMTEwZjQzM2JjMzk5Li5lYmQ3ODhmZTQ1OWE2YzgxN2JhYWVhMDhiMWE5ZWMyMzQ5
MmViZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxh
dGZvcm1HZXN0dXJlQ3VydmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVs
RmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBXaGVl
bEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmFwcGx5KGRvdWJsZSB0aW1lLCBQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZVRhcmcKICAgICAvLyBGSVhNRTogY29uc2lkZXIgbWFraW5nIHRoZSB2YWx1ZSBv
ZiBzaWdtYSBzZXR0YWJsZSBpbiB0aGUgY29uc3RydWN0b3IuCiAgICAgc3RhdGljIGRvdWJsZSB0
d29TaWdtYVNxdWFyZWRJbnZlcnNlID0gMTY7IC8vIHNpZ21hID0gMC4yNQogICAgIGZsb2F0IGNk
ZiA9IDEgLSBleHAoLXRpbWUgKiB0aW1lICogdHdvU2lnbWFTcXVhcmVkSW52ZXJzZSk7Ci0gICAg
SW50UG9pbnQgc2Nyb2xsKGNkZiAqIG1fdmVsb2NpdHkueCgpLCBjZGYgKiBtX3ZlbG9jaXR5Lnko
KSk7CisgICAgSW50U2l6ZSBzY3JvbGwoY2RmICogbV92ZWxvY2l0eS54KCksIGNkZiAqIG1fdmVs
b2NpdHkueSgpKTsKICAgICBJbnRQb2ludCBzY3JvbGxJbmNyZW1lbnQoc2Nyb2xsIC0gbV9jdW11
bGF0aXZlU2Nyb2xsKTsKICAgICBtX2N1bXVsYXRpdmVTY3JvbGwgPSBzY3JvbGw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVy
ZUN1cnZlLmgKaW5kZXggYjcyMTQ2MTY1MzMzZjIzYzhjOWJiZjZjMDFkZGJmMDY3YWVlMWFjMi4u
MjlmMTUxZmMxYjJmMDhhNTkxMmJlNTBmZjc5Y2M2OTViZDljNWFhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZl
LmgKQEAgLTQ0LDEyICs0NCwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2hlZWxGbGluZ1Bs
YXRmb3JtR2VzdHVyZUN1cnZlKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoZG91YmxlIHRp
bWUsIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0Kik7CisgICAgdmlydHVhbCBJbnRTaXplIGN1
bXVsYXRpdmVTY3JvbGwoKSBjb25zdCB7IHJldHVybiBtX2N1bXVsYXRpdmVTY3JvbGw7IH0KIAog
cHJpdmF0ZToKICAgICBXaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQ
b2ludCYgdmVsb2NpdHkpOwogCiAgICAgRmxvYXRQb2ludCBtX3ZlbG9jaXR5OwotICAgIEludFBv
aW50IG1fY3VtdWxhdGl2ZVNjcm9sbDsKKyAgICBJbnRTaXplIG1fY3VtdWxhdGl2ZVNjcm9sbDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2
ZUdlc3R1cmVBbmltYXRpb24uY3BwCmluZGV4IGE0YWYzZTU5YmM1NTc3YTg4NmYwMjliZTU5MmZj
NDk5YWQ0M2JhMDEuLjYyYzE5ZmZjYjljNWNkYjgyNWQ3NjZkNTJhNTgwYjFmNGFhNmUzZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
QWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmNwcApAQCAtMjYs
NiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgiCiAK
KyNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgImNjL0NDR2VzdHVyZUN1cnZlLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDYgKzQ4LDExIEBAIENDQWN0aXZlR2VzdHVyZUFu
aW1hdGlvbjo6fkNDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbigpCiB7CiB9CiAKK0ludFNpemUgQ0NB
Y3RpdmVHZXN0dXJlQW5pbWF0aW9uOjpjdW11bGF0aXZlU2Nyb2xsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9nZXN0dXJlQ3VydmUtPmN1bXVsYXRpdmVTY3JvbGwoKTsKK30KKwogYm9vbCBDQ0Fj
dGl2ZUdlc3R1cmVBbmltYXRpb246OmFuaW1hdGUoZG91YmxlIHRpbWUpCiB7CiAgICAgaWYgKG1f
d2FpdGluZ0ZvckZpcnN0VGljaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUdlc3R1cmVB
bmltYXRpb24uaAppbmRleCA5YmNkNzUzNzA0YzM1OTRlMjNiZWQzNmI2YjY1NDk0MGE4NTRkNzBk
Li4zZDUwNzU5NGIzODIxYWU3MTdlYjA5MTk0ZWM3MzBkNDY1NTFmNjM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUdlc3R1
cmVBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uaApAQCAtMzMsMTcgKzMzLDIzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NHZXN0dXJlQ3VydmU7CiBjbGFzcyBDQ0dlc3R1
cmVDdXJ2ZVRhcmdldDsKK2NsYXNzIEludFNpemU7CiAKIGNsYXNzIENDQWN0aXZlR2VzdHVyZUFu
aW1hdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NBY3RpdmVHZXN0dXJlQW5pbWF0
aW9uKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDQ0FjdGl2ZUdlc3R1cmVBbmlt
YXRpb24+IGNyZWF0ZShQYXNzT3duUHRyPENDR2VzdHVyZUN1cnZlPiwgQ0NHZXN0dXJlQ3VydmVU
YXJnZXQqKTsKKwogICAgIH5DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24oKTsKIAogICAgIGJvb2wg
YW5pbWF0ZShkb3VibGUgdGltZSk7CiAKKyAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGFydFRpbWU7IH0KKyAgICBJbnRTaXplIGN1bXVsYXRpdmVTY3JvbGwoKSBjb25z
dDsKKwogcHJpdmF0ZToKICAgICBDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0cjxD
Q0dlc3R1cmVDdXJ2ZT4sIENDR2VzdHVyZUN1cnZlVGFyZ2V0Kik7CisgICAgQ0NBY3RpdmVHZXN0
dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8Q0NHZXN0dXJlQ3VydmU+LCBDQ0dlc3R1cmVDdXJ2ZVRh
cmdldCosIGRvdWJsZSBzdGFydFRpbWUpOwogCiAgICAgZG91YmxlIG1fc3RhcnRUaW1lOwogICAg
IGRvdWJsZSBtX3dhaXRpbmdGb3JGaXJzdFRpY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHZXN0dXJlQ3VydmUuaApp
bmRleCA0YmMxYzBkZDgwNmRmNzY1ZTNmMjQ3MmQyYjY2MzY0NWQyODljNmE1Li5jYzc5ZjcxODAx
ZTQyMmY2Mjg5MjJhYjYxZTY0ZTRjODM1YjQxYzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR2VzdHVyZUN1cnZl
LmgKQEAgLTQyLDYgKzQyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNDR2VzdHVyZUN1cnZl
KCkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoZG91YmxlIHRpbWUsIENDR2VzdHVyZUN1
cnZlVGFyZ2V0KikgPSAwOworCisgICAgdmlydHVhbCBJbnRTaXplIGN1bXVsYXRpdmVTY3JvbGwo
KSBjb25zdCA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1
dEhhbmRsZXIuaAppbmRleCAwMTlkMmQ4MzViMWMyNGIzZjU5MWU4OThiZDczNzAxOGYwMWI4Mzc5
Li40NTZiYzM0MDJlMTkwODQ3NWMwNTdlZjkyMmIyMTY1NjViMGI4NDEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
SW5wdXRIYW5kbGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitzdHJ1Y3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM7CiBjbGFzcyBDQ0FjdGl2ZUdlc3R1
cmVBbmltYXRpb247CiBjbGFzcyBDQ0dlc3R1cmVDdXJ2ZVRhcmdldDsKIGNsYXNzIEludFBvaW50
OwpAQCAtODEsNiArODIsOCBAQCBwdWJsaWM6CiAgICAgLy8gUmVxdWVzdCBhIG5ldyBmcmFtZSB3
aXRoIHVwZGF0ZWQgYW5pbWF0aW9uIHN0YXRlLiBUeXBpY2FsbHkgY2FsbGVkIGJ5IENDSW5wdXRI
YW5kbGVyOjphbmltYXRlKCkuCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCkg
PSAwOwogCisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25z
dCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpID0gMDsKKwogcHJvdGVjdGVkOgogICAgIEND
SW5wdXRIYW5kbGVyQ2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB+Q0NJbnB1dEhhbmRsZXJDbGll
bnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDAxNzgyMGE3Yzcw
ZTFiOTNmYzYyYTRkZjQ3NjY0NTI4Njk3MDM1YTEuLmIwZmZhNTA0Yjk2NjcxNzQwNjI0OTIwYjlk
MmIyZjhlNzY3NjNiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMjYs
NiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAKKyNpbmNsdWRl
ICJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0u
aCIKICNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIgpAQCAtNDE0LDYgKzQxNSwxNSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6Y29tcG9zaXRlKCkKICAgICBzdGF0aWNfY2FzdDxDQ1NpbmdsZVRocmVhZFByb3h5Kj4obV9w
cm94eS5nZXQoKSktPmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7CiB9CiAKK3ZvaWQgQ0NMYXllclRy
ZWVIb3N0Ojp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgLy8gV2UgdGljayBhbmltYXRpb25zIGlu
IENDTGF5ZXJUcmVlSG9zdCB1c2luZyBjdXJyZW50VGltZSgpLCBidXQgdGhlIGltcGwgdGhyZWFk
IHVzZXMgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkuIFJlYmFzZSBoZXJlIGJlZm9yZSBw
YXNzaW5nIHRpbWVzIG91dCB0byB0aGUgY2xpZW50LgorICAgIGRvdWJsZSB0aW1lU2hpZnQgPSBj
dXJyZW50VGltZSgpIC0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgQWN0aXZl
V2hlZWxGbGluZ1BhcmFtZXRlcnMgcGFyYW1ldGVyc1dpdGhTaGlmdGVkVGltZSA9IHBhcmFtZXRl
cnM7CisgICAgcGFyYW1ldGVyc1dpdGhTaGlmdGVkVGltZS5zdGFydFRpbWUgKz0gdGltZVNoaWZ0
OworICAgIG1fY2xpZW50LT50cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24ocGFyYW1ldGVyc1dp
dGhTaGlmdGVkVGltZSk7Cit9CisKIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMo
KQogewogICAgIGlmICghbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmgKaW5kZXggODlmMWJlMzA3ZWRmYzkxNmQ2MDllMDg1YTM1NTIyNjc3NjIz
ZWM4Ny4uMTJhODM5ZTEwNWYxZjIzMGY0NmQ4YTFkZmY0MjEzYTlkOGE3NjU3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitzdHJ1Y3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM7CiBjbGFzcyBDQ0xheWVy
VHJlZUhvc3RJbXBsOwogY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDNEOwpAQCAtNTksNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y3JlYXRlQ29udGV4dChib29sIHN1Y2Nlc3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29t
bWl0QW5kRHJhd0ZyYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3YXBC
dWZmZXJzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRp
b24oY29uc3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSA9IDA7CiAKICAgICAvLyBVc2Vk
IG9ubHkgaW4gdGhlIHNpbmdsZS10aHJlYWRlZCBwYXRoLgogICAgIHZpcnR1YWwgdm9pZCBzY2hl
ZHVsZUNvbXBvc2l0ZSgpID0gMDsKQEAgLTE0Myw2ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSB7IG1fY2xpZW50LT5kaWRDb21taXRBbmREcmF3RnJh
bWUoKTsgfQogICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIHsgbV9jbGllbnQtPmRp
ZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsgfQogICAgIHZvaWQgZGVsZXRlQ29udGVudHNUZXh0dXJl
c09uSW1wbFRocmVhZChUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdmlydHVhbCB2b2lkIHRyYW5z
ZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYp
OwogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgd2Ugc2hvdWxkIGFib3J0IHRoaXMgZnJhbWUgZHVl
IHRvIGluaXRpYWxpemF0aW9uIGZhaWx1cmUuCiAgICAgYm9vbCB1cGRhdGVMYXllcnMoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBkZDJkNDJhNDcxN2Fh
YTBlZmE1YmFjYzhhM2MyOWYyNmIwMjRkYjg4Li5iZTMwYzI5NzI5NjViZDVlMjJlZWM2NWIyMzdl
YzAwY2YwZGE2OGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApA
QCAtMTg2LDYgKzE4NiwxMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNjaGVkdWxlQW5p
bWF0aW9uKCkKICAgICBtX2NsaWVudC0+c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKIH0K
IAordm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24o
Y29uc3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisKKyAgICBt
X2NsaWVudC0+dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFkT25JbXBsVGhy
ZWFkKHBhcmFtZXRlcnMpOworfQorCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnRyYWNrRGFt
YWdlRm9yQWxsU3VyZmFjZXMoQ0NMYXllckltcGwqIHJvb3REcmF3TGF5ZXIsIGNvbnN0IENDTGF5
ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQogewogICAgIC8vIEZvciBub3csIHdlIHVz
ZSBkYW1hZ2UgdHJhY2tpbmcgdG8gY29tcHV0ZSBhIGdsb2JhbCBzY2lzc29yLiBUbyBkbyB0aGlz
LCB3ZSBtdXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggMGRhZTYw
NDY4MjQyZTliMTQyNjY3ZDcwN2NhMWU1Yjk0MDJkYmUyMS4uNTA1ODYyOTFmZDhkZjMxNDRhNThk
NzY5N2JiMDY2YjVkMTNkZTk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aApAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0cnVjdCBBY3Rp
dmVXaGVlbEZsaW5nUGFyYW1ldGVyczsKIGNsYXNzIENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjsK
IGNsYXNzIENDQ29tcGxldGlvbkV2ZW50OwogY2xhc3MgQ0NQYWdlU2NhbGVBbmltYXRpb247CkBA
IC01NSw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdP
bkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBs
VGhyZWFkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWlu
VGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBk
b3VibGUgd2FsbENsb2NrVGltZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVs
RmxpbmdBbmltYXRpb25Ub01haW5UaHJlYWRPbkltcGxUaHJlYWQoY29uc3QgQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnMmKSA9IDA7CiB9OwogCiAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsIG93bnMg
dGhlIENDTGF5ZXJJbXBsIHRyZWUgYXMgd2VsbCBhcyBhc3NvY2lhdGVkIHJlbmRlcmluZyBzdGF0
ZQpAQCAtNzYsNiArNzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gVG8gY2xlYXIgYW4gYWN0aXZlIGFu
aW1hdGlvbiwgcGFzcyBudWxscHRyLgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmVHZXN0dXJl
QW5pbWF0aW9uKFBhc3NPd25QdHI8Q0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uPik7CiAgICAgdmly
dHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVy
V2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpOwog
CiAgICAgLy8gVmlydHVhbCBmb3IgdGVzdGluZy4KICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Db21t
aXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCBlYmJkOTZlMmMz
ODgyMjE4OWQyYjkwYjIxZTZkOTc2YTM2N2MwZTljLi5mODMwYThmNzI4YjgyZWVhZmU1MWRiNjY3
YjQ2MzNmMDQ5MDlkOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBA
IC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdP
bkltcGxUaHJlYWQoKSB7IG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXQoKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpIHsgbV9sYXllclRyZWVI
b3N0LT5zZXROZWVkc0NvbW1pdCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25F
dmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50
c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKKyAgICB2b2lkIHRyYW5zZmVyV2hlZWxG
bGluZ0FuaW1hdGlvblRvTWFpblRocmVhZE9uSW1wbFRocmVhZChjb25zdCBBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVycyYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIENhbGxl
ZCBieSB0aGUgbGVnYWN5IHBhdGggd2hlcmUgUmVuZGVyV2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxp
bmcuCiAgICAgdm9pZCBjb21wb3NpdGVJbW1lZGlhdGVseSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcAppbmRleCBlMTY3NTIyM2M1NDgwNzdiZjQwY2JiYWIzZGZlYmQ5ZjZiMmI4Mjg1Li44
M2Q1YjlmYjA5Y2JjYTFhN2I1YTZhOTY4Mjk4YWViY2ZlOTM3OTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQ
cm94eS5oIgogCisjaW5jbHVkZSAiQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNs
dWRlICJjYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmgiCkBAIC0yOTYsNiArMjk3LDE5IEBAIHZv
aWQgQ0NUaHJlYWRQcm94eTo6cG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRo
cmVhZChQYXNzT3duUHRyPENDQW5pCiAgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNy
ZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6c2V0QW5pbWF0aW9uRXZlbnRz
LCBldmVudHMsIHdhbGxDbG9ja1RpbWUpKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5Ojp0cmFu
c2ZlcldoZWVsRmxpbmdBbmltYXRpb25Ub01haW5UaHJlYWRPbkltcGxUaHJlYWQoY29uc3QgQWN0
aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgQVNTRVJUKGlzSW1w
bFRocmVhZCgpKTsKKyAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94
eTo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkIik7
CisgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlz
LCAmQ0NUaHJlYWRQcm94eTo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uLCBwYXJhbWV0ZXJz
KSk7Cit9CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9u
KEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnRyYW5zZmVyV2hlZWxGbGluZ0Fu
aW1hdGlvbihwYXJhbWV0ZXJzKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc1Jl
ZHJhdygpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTM5NCw3ICs0MDgsNyBA
QCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKQogICAgIFRS
QUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFt
ZSIpOwogICAgIEFTU0VSVCghbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QpOwogICAgIG1fcGVu
ZGluZ0JlZ2luRnJhbWVSZXF1ZXN0ID0gYWRvcHRQdHIobmV3IEJlZ2luRnJhbWVBbmRDb21taXRT
dGF0ZSgpKTsKLSAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+ZnJhbWVCZWdpblRpbWUg
PSAwOworICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5mcmFtZUJlZ2luVGltZSA9IGN1
cnJlbnRUaW1lKCk7CiAgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QtPnNjcm9sbEluZm8g
PSBtX2xheWVyVHJlZUhvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CiAKICAgICBtX21h
aW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVh
ZFByb3h5OjpiZWdpbkZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggOWU1MjRh
NzYzZTI4NTBmZDIwOWMxM2UzNTI2MTJlYzVjYTMwNDllMS4uZDk4YTgwZmJlYzkyZGFjM2E0ODVm
OTQ0NTkwM2NiZTZlYjFiZjI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNzYsNiAr
NzYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhy
ZWFkKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCk7CiAg
ICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJl
YWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tU
aW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWlu
VGhyZWFkT25JbXBsVGhyZWFkKGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJik7CiAK
ICAgICAvLyBDQ1NjaGVkdWxlckNsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9v
bCBjYW5EcmF3KCk7CkBAIC0xMDUsNiArMTA2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEFu
aW1hdGlvbkV2ZW50cyhQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91Ymxl
IHdhbGxDbG9ja1RpbWUpOwogICAgIHZvaWQgYmVnaW5Db250ZXh0UmVjcmVhdGlvbigpOwogICAg
IHZvaWQgdHJ5VG9SZWNyZWF0ZUNvbnRleHQoKTsKKyAgICB2b2lkIHRyYW5zZmVyV2hlZWxGbGlu
Z0FuaW1hdGlvbihBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyk7CiAKICAgICAvLyBDYWxsZWQg
b24gaW1wbCB0aHJlYWQKICAgICBzdHJ1Y3QgUmVhZGJhY2tSZXF1ZXN0IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsLmNwcAppbmRleCA5Zjg2ZDA2MzdlYTM4NTI1ZmJjNjVlMTIzMjA0NTBhODUyYWRkYjBi
Li43ZGUzYTE3N2MwYjM0NmUzOTcxMDFjNmUwMWU1MDA0ZjM4OWQxMWFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGwuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJXZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVySW1wbC5oIgogCisjaW5jbHVkZSAiQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRl
cnMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oIgogI2luY2x1ZGUg
IlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0
b3JJbXBsLmgiCkBAIC02Nyw2ICs2OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGFyZ2V0LT5z
Y3JvbGxCeShzY3JvbGxEZWx0YSk7CiAgICAgfQogCisgICAgdmlydHVhbCBJbnRTaXplIGN1bXVs
YXRpdmVTY3JvbGwoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY3VydmUtPmN1bXVs
YXRpdmVTY3JvbGwoKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1HZXN0dXJlVG9D
Q0dlc3R1cmVBZGFwdGVyKFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGN1cnZlKQog
ICAgICAgICA6IG1fY3VydmUoY3VydmUpCkBAIC0xNzksOSArMTg1LDkgQEAgV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGw6OmgKICAgICAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxFbmQo
KTsKICAgICAgICAgICAgIHJldHVybiBEaWRIYW5kbGU7CiAgICAgICAgIGNhc2UgQ0NJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbElnbm9yZWQ6Ci0gICAgICAgICAgICByZXR1cm4gRGlkTm90SGFu
ZGxlOwotICAgICAgICBjYXNlIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxGYWlsZWQ6CiAg
ICAgICAgICAgICByZXR1cm4gRHJvcEV2ZW50OworICAgICAgICBjYXNlIENDSW5wdXRIYW5kbGVy
Q2xpZW50OjpTY3JvbGxGYWlsZWQ6CisgICAgICAgICAgICByZXR1cm4gRGlkTm90SGFuZGxlOwog
ICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6Okdl
c3R1cmVTY3JvbGxCZWdpbikgewogICAgICAgICBBU1NFUlQoIW1fZ2VzdHVyZVNjcm9sbFN0YXJ0
ZWQpOwpAQCAtMjU1LDkgKzI2MSwxMSBAQCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6
RXZlbnREaXNwb3NpdGlvbiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAogICAgIEND
SW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsU3RhdHVzID0gbV9pbnB1dEhh
bmRsZXJDbGllbnQtPnNjcm9sbEJlZ2luKEludFBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJl
RXZlbnQueSksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpHZXN0dXJlKTsKICAgICBzd2l0Y2ggKHNj
cm9sbFN0YXR1cykgewogICAgIGNhc2UgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0
ZWQ6IHsKLSAgICAgICAgT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBmbGluZ0N1cnZlID0g
VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoRmxvYXRQb2ludCgtZ2VzdHVy
ZUV2ZW50LmRlbHRhWCwgLWdlc3R1cmVFdmVudC5kZWx0YVkpKTsKKyAgICAgICAgT3duUHRyPFBs
YXRmb3JtR2VzdHVyZUN1cnZlPiBmbGluZ0N1cnZlID0gVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVy
ZUN1cnZlOjpjcmVhdGUoRmxvYXRQb2ludChnZXN0dXJlRXZlbnQuZGVsdGFYLCBnZXN0dXJlRXZl
bnQuZGVsdGFZKSk7CiAgICAgICAgIG1fd2hlZWxGbGluZ0FuaW1hdGlvbiA9IENDQWN0aXZlR2Vz
dHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFBsYXRmb3JtR2VzdHVyZVRvQ0NHZXN0dXJlQWRhcHRlcjo6
Y3JlYXRlKGZsaW5nQ3VydmUucmVsZWFzZSgpKSwgdGhpcyk7Ci0gICAgICAgIG1fd2hlZWxGbGlu
Z1BvaW50ID0gSW50UG9pbnQoZ2VzdHVyZUV2ZW50LngsIGdlc3R1cmVFdmVudC55KTsKKyAgICAg
ICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5kZWx0YSA9IEZsb2F0U2l6ZShnZXN0dXJlRXZlbnQu
ZGVsdGFYLCBnZXN0dXJlRXZlbnQuZGVsdGFZKTsKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1l
dGVycy5wb2ludCA9IEludFBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQueSk7Cisg
ICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZ2xvYmFsUG9pbnQgPSBJbnRQb2ludChnZXN0
dXJlRXZlbnQuZ2xvYmFsWCwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFkpOwogICAgICAgICBtX2lucHV0
SGFuZGxlckNsaWVudC0+c2NoZWR1bGVBbmltYXRpb24oKTsKICAgICAgICAgcmV0dXJuIERpZEhh
bmRsZTsKICAgICB9CkBAIC0yOTYsMjggKzMwNCwzNCBAQCB2b2lkIFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsOjpzY3JvbGxCeShjb25zdCBJbnRQb2ludCYgaW5jcmVtZW50KQogICAgIGlm
IChpbmNyZW1lbnQgPT0gSW50UG9pbnQ6Onplcm8oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
V2ViTW91c2VXaGVlbEV2ZW50IGV2ZW50OwotICAgIGV2ZW50LnR5cGUgPSBXZWJJbnB1dEV2ZW50
OjpNb3VzZVdoZWVsOwotICAgIGV2ZW50LmRlbHRhWCA9IC1pbmNyZW1lbnQueCgpOwotICAgIGV2
ZW50LmRlbHRhWSA9IC1pbmNyZW1lbnQueSgpOwotICAgIGV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxp
bmdEZWx0YXMgPSB0cnVlOwotICAgIGV2ZW50LnggPSBtX3doZWVsRmxpbmdQb2ludC54KCk7Ci0g
ICAgZXZlbnQueSA9IG1fd2hlZWxGbGluZ1BvaW50LnkoKTsKLQotICAgIFdlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uID0gaGFuZGxlSW5w
dXRFdmVudEludGVybmFsKGV2ZW50KTsKKyAgICBXZWJNb3VzZVdoZWVsRXZlbnQgc3ludGhldGlj
V2hlZWw7CisgICAgc3ludGhldGljV2hlZWwudHlwZSA9IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hl
ZWw7CisgICAgc3ludGhldGljV2hlZWwuZGVsdGFYID0gaW5jcmVtZW50LngoKTsKKyAgICBzeW50
aGV0aWNXaGVlbC5kZWx0YVkgPSBpbmNyZW1lbnQueSgpOworICAgIHN5bnRoZXRpY1doZWVsLmhh
c1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB0cnVlOworICAgIHN5bnRoZXRpY1doZWVsLnggPSBt
X3doZWVsRmxpbmdQYXJhbWV0ZXJzLnBvaW50LngoKTsKKyAgICBzeW50aGV0aWNXaGVlbC55ID0g
bV93aGVlbEZsaW5nUGFyYW1ldGVycy5wb2ludC55KCk7CisgICAgc3ludGhldGljV2hlZWwuZ2xv
YmFsWD0gbV93aGVlbEZsaW5nUGFyYW1ldGVycy5nbG9iYWxQb2ludC54KCk7CisgICAgc3ludGhl
dGljV2hlZWwuZ2xvYmFsWSA9IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZ2xvYmFsUG9pbnQueSgp
OworICAgIHN5bnRoZXRpY1doZWVsLm1vZGlmaWVycyA9IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMu
bW9kaWZpZXJzOworCisgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlz
cG9zaXRpb24gZGlzcG9zaXRpb24gPSBoYW5kbGVJbnB1dEV2ZW50SW50ZXJuYWwoc3ludGhldGlj
V2hlZWwpOwogICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKICAgICBjYXNlIERpZEhhbmRsZToK
ICAgICBjYXNlIERyb3BFdmVudDoKICAgICAgICAgYnJlYWs7IAogICAgIGNhc2UgRGlkTm90SGFu
ZGxlOgotICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ290IGEgRGlkTm90SGFuZGxlLCB0aGF0IG1l
YW5zIHdlIG5lZWQgdG8gZGVsaXZlciB3aGVlbHMgb24gdGhlIG1haW4gdGhyZWFkLgorICAgICAg
ICAvLyBJZiB3ZSBnb3QgYSBEaWROb3RIYW5kbGUsIHRoYXQgbWVhbnMgd2UgbmVlZCB0byBkZWxp
dmVyIHdoZWVscyBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB3
ZSBuZWVkIHRvIHNjaGVkdWxlIGEgY29tbWl0IGFuZCB0cmFuc2ZlciB0aGUgZmxpbmcgY3VydmUg
b3ZlciB0byB0aGUgbWFpbgogICAgICAgICAvLyB0aHJlYWQgYW5kIHJ1biB0aGUgcmVzdCBvZiB0
aGUgd2hlZWxzIGZyb20gdGhlcmUuCiAgICAgICAgIC8vIFRoaXMgY2FuIGhhcHBlbiB3aGVuIGZs
aW5naW5nIGEgcGFnZSB0aGF0IGNvbnRhaW5zIGEgc2Nyb2xsYWJsZSBzdWJhcmVhIHRoYXQgd2Ug
Y2FuJ3QKICAgICAgICAgLy8gc2Nyb2xsIG9uIHRoZSB0aHJlYWQgaWYgdGhlIGZsaW5nIHN0YXJ0
cyBvdXRzaWRlIHRoZSBzdWJhcmVhIGJ1dCB0aGVuIGlzIGZsdW5nICJ1bmRlciIgdGhlCiAgICAg
ICAgIC8vIHBvaW50ZXIuCi0gICAgICAgIC8vIEZvciBub3csIGp1c3QgYWJvcnQgdGhlIGZsaW5n
LgorICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnN0YXJ0VGltZSA9IG1fd2hlZWxGbGlu
Z0FuaW1hdGlvbi0+c3RhcnRUaW1lKCk7CisgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMu
Y3VtdWxhdGl2ZVNjcm9sbCA9IG1fd2hlZWxGbGluZ0FuaW1hdGlvbi0+Y3VtdWxhdGl2ZVNjcm9s
bCgpOworICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+dHJhbnNmZXJXaGVlbEZsaW5nQW5p
bWF0aW9uKG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMpOwogICAgICAgICBjYW5jZWxDdXJyZW50Rmxp
bmcoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaAppbmRl
eCA3YTBiMzZkNTdjNWE2MTgwMjg2NTY5YmU4MjdjNjRlN2YxMWI2N2E4Li40NzYwMWZiZjE5OTdi
MWRiOWZkZjQ2NWIyYjZkNjQyZGU4MjNiOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgKQEAgLTI2
LDcgKzI2LDcgQEAKICNpZm5kZWYgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxfaAogI2Rl
ZmluZSBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbF9oCiAKLSNpbmNsdWRlICJJbnRQb2lu
dC5oIgorI2luY2x1ZGUgIkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAi
V2ViQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXIuaCIK
ICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIE11dGV4
OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbnRQb2ludDsKIGNsYXNzIENDR2Vz
dHVyZUN1cnZlVGFyZ2V0OwogY2xhc3MgQ0NJbnB1dEhhbmRsZXJDbGllbnQ7CiBjbGFzcyBDQ1Ro
cmVhZDsKQEAgLTgyLDcgKzgzLDggQEAgcHJpdmF0ZToKICAgICBib29sIGNhbmNlbEN1cnJlbnRG
bGluZygpOwogCiAgICAgT3duUHRyPFdlYkNvcmU6OkNDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbj4g
bV93aGVlbEZsaW5nQW5pbWF0aW9uOwotICAgIFdlYkNvcmU6OkludFBvaW50IG1fd2hlZWxGbGlu
Z1BvaW50OyAvLyBQb2ludGVyIHBvc2l0aW9uIGZvciB0aGUgY3VycmVudCBmbGluZy4gCisgICAg
Ly8gUGFyYW1ldGVycyBmb3IgdGhlIGFjdGl2ZSBmbGluZyBhbmltYXRpb24sIHN0b3JlZCBpbiBj
YXNlIHdlIG5lZWQgdG8gdHJhbnNmZXIgaXQgb3V0IGxhdGVyLgorICAgIFdlYkNvcmU6OkFjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnM7CiAKICAgICBXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKICAgICBpbnQgbV9pZGVudGlm
aWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVl
Vmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmll
d0ltcGwuY3BwCmluZGV4IDMzNTg3OWI2NjA1MzRhNGJjNzU3ZTUxNzc0ZjMyZmZkYzY3ZTdmZWMu
LmYyZGNhM2JiODFmNzc2MDFjNTliODIxMTUxZDk3MTAwNmZmYWViODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKQEAgLTI2
LDE2ICsyNiwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJl
ZVZpZXdJbXBsLmgiCiAKKyNpbmNsdWRlICJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgIkNDVGhyZWFkSW1wbC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJjYy9DQ1RocmVh
ZFByb3h5LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllci5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVy
VHJlZVZpZXcuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3Q2xpZW50Lmgi
Ci0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlRo
cmVhZC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJMYXllci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllclRyZWVWaWV3
Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViU2l6ZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5n
UGFyYW1ldGVycy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFBvaW50Lmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYlBvaW50Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0x
MDcsNiArMTExLDIwIEBAIHZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmRpZENvbXBsZXRlU3dh
cEJ1ZmZlcnMoKQogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOwog
fQogCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRp
b24oY29uc3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAg
aWYgKG1fY2xpZW50KSB7CisgICAgICAgIFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHdl
YlBhcmFtZXRlcnM7CisgICAgICAgIHdlYlBhcmFtZXRlcnMuZGVsdGEgPSBXZWJGbG9hdFBvaW50
KHBhcmFtZXRlcnMuZGVsdGEud2lkdGgoKSwgcGFyYW1ldGVycy5kZWx0YS5oZWlnaHQoKSk7Cisg
ICAgICAgIHdlYlBhcmFtZXRlcnMucG9pbnQgPSBwYXJhbWV0ZXJzLnBvaW50OworICAgICAgICB3
ZWJQYXJhbWV0ZXJzLmdsb2JhbFBvaW50ID0gcGFyYW1ldGVycy5wb2ludDsKKyAgICAgICAgd2Vi
UGFyYW1ldGVycy5tb2RpZmllcnMgPSBwYXJhbWV0ZXJzLm1vZGlmaWVyczsKKyAgICAgICAgd2Vi
UGFyYW1ldGVycy5zdGFydFRpbWUgPSBwYXJhbWV0ZXJzLnN0YXJ0VGltZTsKKyAgICAgICAgd2Vi
UGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsID0gcGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xs
OworICAgICAgICBtX2NsaWVudC0+dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKHdlYlBhcmFt
ZXRlcnMpOworICAgIH0KK30KKwogdm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6c2NoZWR1bGVD
b21wb3NpdGUoKQogewogICAgIGlmIChtX2NsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCmluZGV4IGIxYjI2ZDBmYzMzODYwNGZl
NWNmMzgwNzFmNTBhOGMzNTg2NDUyZmIuLjZhOTQ5NDJmMDkzYTJhZjQ1N2Q5MTFlMzc5NGIzOTM4
MDYwYThjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVy
VHJlZVZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlld0ltcGwuaApAQCAtMzAsNiArMzAsMTAgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJl
ZUhvc3QuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitzdHJ1Y3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM7Cit9CisKIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgV2ViTGF5ZXI7CiBjbGFzcyBXZWJMYXllclRyZWVWaWV3Q2xpZW50OwpA
QCAtNDgsNiArNTIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUNv
bnRleHQoYm9vbCBzdWNjZXNzKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0Zy
YW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkNvcmU6OkFj
dGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJik7CiAKICAgICAvLyBPbmx5IHVzZWQgaW4gdGhlIHNp
bmdsZSB0aHJlYWRlZCBwYXRoLgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDQ4OTA2
ZWE1Zjk1MzU5ZDcxMDRmZjEwODI5NmQ5NDZhZWIxMWZjYzguLmFhYWQ2MWVkZmQwYzlkNDAzNDEw
NzQ3NTQ2MmExNjQ5N2FhYWY5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAKLSNpbmNsdWRlICJBdXRvZmlsbFBvcHVwTWVudUNsaWVu
dC5oIgogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJBY3RpdmVQbGF0Zm9y
bUdlc3R1cmVBbmltYXRpb24uaCIKKyNpbmNsdWRlICJBdXRvZmlsbFBvcHVwTWVudUNsaWVudC5o
IgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdENocm9taXVtLmgiCi0jaW5jbHVkZSAiY2MvQ0NQ
cm94eS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NWYWx1
ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCkBAIC0xMDksNiArMTA5LDcgQEAKICNp
bmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiVG91Y2hGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIlR5cGluZ0Nv
bW1hbmQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpAQCAtMTE4LDMxICsx
MTksMzUgQEAKICNpbmNsdWRlICJXZWJDb21wb3NpdG9ySW1wbC5oIgogI2luY2x1ZGUgIldlYkRl
dlRvb2xzQWdlbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUuaCIK
LSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1w
bC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVk
ZSAicGxhdGZvcm0vV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNp
bmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudENvbnZlcnNp
b24uaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0
Zm9ybVN1cHBvcnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllci5oIgotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkxheWVyVHJlZVZpZXcuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllckFj
dGlvbi5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJQbHVnaW4uaCIKICNp
bmNsdWRlICJXZWJQbHVnaW5BY3Rpb24uaCIKICNpbmNsdWRlICJXZWJQbHVnaW5Db250YWluZXJJ
bXBsLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIKICNpbmNsdWRlICJXZWJQb3B1
cE1lbnVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViUmFuZ2UuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJSZWN0LmgiCiAjaW5jbHVkZSAiV2ViUnVudGltZUZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2Vi
U2V0dGluZ3NJbXBsLmgiCisjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgorI2luY2x1ZGUgIldo
ZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVkZSAicGxhdGZvcm0v
V2ViRHJhZ0RhdGEuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJJbWFnZS5oIgorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlN0cmluZy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgotI2luY2x1ZGUgIldl
YlZpZXdDbGllbnQuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFt
ZXRlcnMuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRQb2ludC5oPgorI2luY2x1ZGUgPHB1
YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllci5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg+CisjaW5jbHVkZSA8cHVibGlj
L1dlYlBvaW50Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KICNpbmNsdWRlIDx3dGYv
Qnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KQEAgLTQwOCw2ICs0MTMsOSBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0lt
cGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogI2VuZGlmCiAKICAgICBtX2luc3BlY3RvclNldHRp
bmdzTWFwID0gYWRvcHRQdHIobmV3IFNldHRpbmdzTWFwKTsKKworICAgIG1fbGFzdFdoZWVsUG9z
aXRpb24gPSBXZWJQb2ludCgtMSwgLTEpOworICAgIG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb24g
PSBXZWJQb2ludCgtMSwgLTEpOwogfQogCiBXZWJWaWV3SW1wbDo6fldlYlZpZXdJbXBsKCkKQEAg
LTYwMywxMSArNjExLDcyIEBAIGJvb2wgV2ViVmlld0ltcGw6Om1vdXNlV2hlZWwoY29uc3QgV2Vi
TW91c2VXaGVlbEV2ZW50JiBldmVudCkKICAgICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFt
ZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlV2hlZWxFdmVudChwbGF0Zm9ybUV2ZW50KTsKIH0K
IAordm9pZCBXZWJWaWV3SW1wbDo6c2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRl
bHRhKQoreworICAgIFdlYk1vdXNlV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbDsKKyAgICBjb25z
dCBmbG9hdCB0aWNrRGl2aXNvciA9IChmbG9hdClXZWJDb3JlOjpXaGVlbEV2ZW50Ojp0aWNrTXVs
dGlwbGllcjsKKworICAgIHN5bnRoZXRpY1doZWVsLmRlbHRhWCA9IGRlbHRhLngoKTsKKyAgICBz
eW50aGV0aWNXaGVlbC5kZWx0YVkgPSBkZWx0YS55KCk7CisgICAgc3ludGhldGljV2hlZWwud2hl
ZWxUaWNrc1ggPSBkZWx0YS54KCkgLyB0aWNrRGl2aXNvcjsKKyAgICBzeW50aGV0aWNXaGVlbC53
aGVlbFRpY2tzWSA9IGRlbHRhLnkoKSAvIHRpY2tEaXZpc29yOworICAgIHN5bnRoZXRpY1doZWVs
Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB0cnVlOworICAgIHN5bnRoZXRpY1doZWVsLngg
PSBtX2xhc3RXaGVlbFBvc2l0aW9uLng7CisgICAgc3ludGhldGljV2hlZWwueSA9IG1fbGFzdFdo
ZWVsUG9zaXRpb24ueTsKKyAgICBzeW50aGV0aWNXaGVlbC5nbG9iYWxYID0gbV9sYXN0V2hlZWxH
bG9iYWxQb3NpdGlvbi54OworICAgIHN5bnRoZXRpY1doZWVsLmdsb2JhbFkgPSBtX2xhc3RXaGVl
bEdsb2JhbFBvc2l0aW9uLnk7CisKKyAgICBtb3VzZVdoZWVsKHN5bnRoZXRpY1doZWVsKTsKK30K
KwogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIGJvb2wgV2ViVmlld0ltcGw6Omdlc3R1cmVF
dmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogewotICAgIFBsYXRmb3JtR2VzdHVy
ZUV2ZW50QnVpbGRlciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCks
IGV2ZW50KTsKLSAgICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRs
ZXIoKS0+aGFuZGxlR2VzdHVyZUV2ZW50KHBsYXRmb3JtRXZlbnQpOworICAgIHN3aXRjaCAoZXZl
bnQudHlwZSkgeworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ6IHsK
KyAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIGluIGEgc3Vic2VxdWVudCBwYXRjaCByZXZp
c2lvbi4KKyAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDIoIndlYmtpdCIsICJXZWJWaWV3SW1w
bDo6Z2VzdHVyZUV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydCIsICJkZWx0YVgiLCBldmVudC5kZWx0
YVgsICJkZWx0YVkiLCBldmVudC5kZWx0YVkpOworICAgICAgICBtX2xhc3RXaGVlbFBvc2l0aW9u
ID0gV2ViUG9pbnQoZXZlbnQueCwgZXZlbnQueSk7CisgICAgICAgIG1fbGFzdFdoZWVsR2xvYmFs
UG9zaXRpb24gPSBXZWJQb2ludChldmVudC5nbG9iYWxYLCBldmVudC5nbG9iYWxZKTsKKyAgICAg
ICAgQVNTRVJUKCFtX2dlc3R1cmVBbmltYXRpb24pOworICAgICAgICAvLyBGSVhNRTogTWFrZSB0
aGUgY3VydmUgcGFyYW1ldHJpemFibGUgZnJvbSB0aGUgYnJvd3Nlci4KKyAgICAgICAgbV9nZXN0
dXJlQW5pbWF0aW9uID0gQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGUoVG91
Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoRmxvYXRQb2ludChldmVudC5kZWx0
YVgsIGV2ZW50LmRlbHRhWSkpLCB0aGlzKTsKKyAgICAgICAgc2NoZWR1bGVBbmltYXRpb24oKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdl
c3R1cmVGbGluZ0NhbmNlbDoKKyAgICAvLyBGSVhNRTogcHV0IHRoaXMgaW50byBhIHN1Yi1mdW5j
dGlvbj8KKyAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1w
bDo6Z2VzdHVyZUV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWwiKTsKKyAgICAgICAgbV9nZXN0dXJl
QW5pbWF0aW9uLmNsZWFyKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdl
c3R1cmVTY3JvbGxFbmQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBk
YXRlOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcDoKKyAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6Okdlc3R1cmVUYXBEb3duOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZURvdWJsZVRhcDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaEJlZ2luOgor
ICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoRW5kOgorICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6R2VzdHVyZVBpbmNoVXBkYXRlOiB7CisgICAgICAgIFBsYXRmb3JtR2VzdHVyZUV2
ZW50QnVpbGRlciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2
ZW50KTsKKyAgICAgICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5k
bGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChwbGF0Zm9ybUV2ZW50KTsKKyAgICB9CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9u
KGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAg
IFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJ3ZWJraXQiLCAiV2ViVmlld0ltcGw6OnRyYW5zZmVyV2hl
ZWxGbGluZ0FuaW1hdGlvbiIpOworICAgIEFTU0VSVCghbV9nZXN0dXJlQW5pbWF0aW9uKTsKKyAg
ICBtX2xhc3RXaGVlbFBvc2l0aW9uID0gcGFyYW1ldGVycy5wb2ludDsKKyAgICBtX2xhc3RXaGVl
bEdsb2JhbFBvc2l0aW9uID0gcGFyYW1ldGVycy5nbG9iYWxQb2ludDsKKyAgICAvLyBGSVhNRTog
c3RvcmUgcGFyYW1ldGVycy5tb2RpZmllcnMKKyAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3Vy
dmU+IGN1cnZlID0gVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUocGFyYW1l
dGVycy5kZWx0YSwgcGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsKTsKKyAgICBtX2dlc3R1cmVB
bmltYXRpb24gPSBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZShjdXJ2ZS5y
ZWxlYXNlKCksIHRoaXMsIHBhcmFtZXRlcnMuc3RhcnRUaW1lKTsKKyAgICBzY2hlZHVsZUFuaW1h
dGlvbigpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihj
b25zdCBJbnRQb2ludCYgc2Nyb2xsLCBib29sIHVzZUFuY2hvciwgZmxvYXQgbmV3U2NhbGUsIGRv
dWJsZSBkdXJhdGlvblNlYykKQEAgLTEyODMsNiArMTM1MiwxNyBAQCB2b2lkIFdlYlZpZXdJbXBs
Ojp1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKICNpZiBFTkFCTEUoUkVR
VUVTVF9BTklNQVRJT05fRlJBTUUpCiAgICAgVFJBQ0VfRVZFTlQoIldlYlZpZXdJbXBsOjp1cGRh
dGVBbmltYXRpb25zIiwgdGhpcywgMCk7CiAKKyAgICAvLyBDcmVhdGUgc3ludGhldGljIHdoZWVs
IGV2ZW50cyBhcyBuZWNlc3NhcnkgZm9yIGZsaW5nLgorICAgIGlmIChtX2dlc3R1cmVBbmltYXRp
b24pIHsKKyAgICAgICAgaWYgKG1fZ2VzdHVyZUFuaW1hdGlvbi0+YW5pbWF0ZShmcmFtZUJlZ2lu
VGltZSkpIHsKKyAgICAgICAgICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJ3ZWJraXQiLCAiV2Vi
Vmlld0ltcGw6OmFuaW1hdGU6OmZsaW5nIGNvbnRpbnVlIik7CisgICAgICAgICAgICBzY2hlZHVs
ZUFuaW1hdGlvbigpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgVFJBQ0VfRVZFTlRf
SU5TVEFOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6YW5pbWF0ZTo6Zmxpbmcgb3ZlciIpOwor
ICAgICAgICAgICAgbV9nZXN0dXJlQW5pbWF0aW9uLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9
CisKICAgICBXZWJGcmFtZUltcGwqIHdlYmZyYW1lID0gbWFpbkZyYW1lSW1wbCgpOwogICAgIGlm
ICghd2ViZnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTI4MzgsNiArMjkxOCw4IEBAIHZvaWQg
V2ViVmlld0ltcGw6OmRpZENvbW1pdExvYWQoYm9vbCogaXNOZXdOYXZpZ2F0aW9uLCBib29sIGlz
TmF2aWdhdGlvbldpdGhpblBhCiAgICAgbV9vYnNlcnZlZE5ld05hdmlnYXRpb24gPSBmYWxzZTsK
ICAgICBpZiAoIWlzTmF2aWdhdGlvbldpdGhpblBhZ2UpCiAgICAgICAgIG1fcGFnZVNjYWxlRmFj
dG9ySXNTZXQgPSBmYWxzZTsKKworICAgIG1fZ2VzdHVyZUFuaW1hdGlvbi5jbGVhcigpOwogfQog
CiB2b2lkIFdlYlZpZXdJbXBsOjpsYXlvdXRVcGRhdGVkKFdlYkZyYW1lSW1wbCogd2ViZnJhbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA5ZDkzOTY5Zjhj
ZjFmYTYwNGEzZTk1MTM3ZGZlMjA4ODFjMTk5MzQ3Li42YzJiNDdjM2QyNDBmZGY0ZjQ1YzBkZWMz
MzBjM2U1M2RhZGQwOWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKQEAgLTUyLDExICs1MiwxMyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJO
b3RpZmljYXRpb25QcmVzZW50ZXJJbXBsLmgiCiAjaW5jbHVkZSAiUGFnZU92ZXJsYXlMaXN0Lmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaCIKICNpbmNsdWRlICJVc2Vy
TWVkaWFDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEFjdGl2ZVBsYXRm
b3JtR2VzdHVyZUFuaW1hdGlvbjsKIGNsYXNzIENocm9taXVtRGF0YU9iamVjdDsKIGNsYXNzIERv
Y3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC02NSw2ICs2Nyw3IEBAIGNsYXNzIEhpc3Rv
cnlJdGVtOwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFz
cyBQYWdlOworY2xhc3MgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQ7CiBjbGFzcyBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQb3B1cENvbnRhaW5lcjsKIGNsYXNzIFBvcHVwTWVudUNs
aWVudDsKQEAgLTk2LDcgKzk5LDcgQEAgY2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50OwogY2xhc3Mg
V2ViU2V0dGluZ3NJbXBsOwogY2xhc3MgV2ViVG91Y2hFdmVudDsKIAotY2xhc3MgV2ViVmlld0lt
cGwgOiBwdWJsaWMgV2ViVmlldywgcHVibGljIFdlYkxheWVyVHJlZVZpZXdDbGllbnQsIHB1Ymxp
YyBSZWZDb3VudGVkPFdlYlZpZXdJbXBsPiB7CitjbGFzcyBXZWJWaWV3SW1wbCA6IHB1YmxpYyBX
ZWJWaWV3LCBwdWJsaWMgV2ViTGF5ZXJUcmVlVmlld0NsaWVudCwgcHVibGljIFJlZkNvdW50ZWQ8
V2ViVmlld0ltcGw+LCBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQg
ewogcHVibGljOgogICAgIGVudW0gQXV0b1pvb21UeXBlIHsKICAgICAgICAgRG91YmxlVGFwLApA
QCAtMjU4LDYgKzI2MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5k
RHJhd0ZyYW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJh
bWV0ZXJzJik7CisKIAogICAgIC8vIFdlYlZpZXdJbXBsCiAKQEAgLTMzMyw2ICszMzgsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBudW1iZXJPZldoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWdu
ZWQpOwogICAgIHZvaWQgbnVtYmVyT2ZUb3VjaEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVk
KTsKIAorICAgIC8vIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0IGltcGxlbWVudGF0aW9uIGZv
ciB3aGVlbCBmbGluZy4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKTsKKwogICAgIC8vIEhhbmRsZXMgY29udGV4dCBtZW51IGV2ZW50cyBvcmlnbmF0
ZWQgdmlhIHRoZSB0aGUga2V5Ym9hcmQuIFRoZXNlCiAgICAgLy8gaW5jbHVkZSB0aGUgVktfQVBQ
UyB2aXJ0dWFsIGtleSBhbmQgdGhlIFNoaWZ0K0YxMCBjb21iaW5lLiBDb2RlIGlzCiAgICAgLy8g
YmFzZWQgb24gdGhlIFdlYmtpdCBmdW5jdGlvbiBib29sIFdlYlZpZXc6OmhhbmRsZUNvbnRleHRN
ZW51RXZlbnQoV1BBUkFNCkBAIC03MTgsNiArNzI2LDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogICAgIFVzZXJNZWRpYUNsaWVudEltcGwgbV91c2VyTWVkaWFDbGllbnRJ
bXBsOwogI2VuZGlmCisgICAgT3duUHRyPFdlYkNvcmU6OkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFu
aW1hdGlvbj4gbV9nZXN0dXJlQW5pbWF0aW9uOworICAgIFdlYlBvaW50IG1fbGFzdFdoZWVsUG9z
aXRpb247CisgICAgV2ViUG9pbnQgbV9sYXN0V2hlZWxHbG9iYWxQb3NpdGlvbjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBhMTkyYmE1NTdiZjBlYTE2
YzIxZTRjMDQyNDJjYjI1ZDA5MGExNzYzLi5hNGFlYjA2YjBkNzVhNmU3Y2MyNWRmM2VlMWVmNzFj
MGVmMjkyZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtNTQsNiArNTQsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgeyBtX2RpZFJlcXVl
c3RSZWRyYXcgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBs
VGhyZWFkKCkgeyBtX2RpZFJlcXVlc3RDb21taXQgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxD
Q0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgdHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFkT25JbXBs
VGhyZWFkKGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikgeyB9CiAKICAgICBzdGF0
aWMgdm9pZCBleHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiBs
YXllcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCA3MDJiYmYxNjM5YjQzYjE2YWVmM2FiYjY2MDYyOTA0
OThjMGQ2NjE1Li4yNWFkMjJiNTU4NDQyZTJiNDllZGViYTNlODA3N2U2YmNiNWY3MTQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAKQEAgLTI1Niw2ICsyNTYsOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIHZp
cnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnMmKSB7IH0KKworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1vY2tMYXll
clRyZWVIb3N0Q2xpZW50KFRlc3RIb29rcyogdGVzdEhvb2tzKSA6IG1fdGVzdEhvb2tzKHRlc3RI
b29rcykgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFr
ZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9G
YWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgKaW5kZXggMzg4NzZkNzM3ZmI1MmFhNmQwM2M3MWJm
ZmU0MTcyOGM4Y2NjZjBiNS4uOGRkYjEwYThhMjU5Y2E2ZDkwZjBiM2JkMmYzZWViY2ZlMGFlYTg4
MiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRy
ZWVIb3N0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NM
YXllclRyZWVIb3N0Q2xpZW50LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNzKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENv
bXBsZXRlU3dhcEJ1ZmZlcnMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJXaGVlbEZs
aW5nQW5pbWF0aW9uKGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikgeyB9CiAKICAg
ICAvLyBVc2VkIG9ubHkgaW4gdGhlIHNpbmdsZS10aHJlYWRlZCBwYXRoLgogICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRl
c3QuY3BwCmluZGV4IGEwNTcwOGMzZThiNWE0ZTQxODA0NDJjMWRiN2QzNjk2NDI3Y2NjNGYuLjE2
ZGZhMjU3YjRkZmUzOTRkMmIxMThiMmI5Mjk2ZjQxMjdhMDNmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsVGVzdC5jcHAKQEAgLTYyLDYgKzYyLDggQEAgcHVibGljOgogICAgIE1PQ0tf
TUVUSE9EMShzY3JvbGxCeSwgdm9pZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikpOwogICAgIE1P
Q0tfTUVUSE9EMChzY3JvbGxFbmQsIHZvaWQoKSk7CiAKKyAgICBNT0NLX01FVEhPRDEodHJhbnNm
ZXJXaGVlbEZsaW5nQW5pbWF0aW9uLCB2b2lkKGNvbnN0IFdlYkNvcmU6OkFjdGl2ZVdoZWVsRmxp
bmdQYXJhbWV0ZXJzJikpOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VT
Y2FsZUFuaW1hdGlvbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbmNob3JQb2ludCwK
QEAgLTMwOCwyMSArMzEwLDg3IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bFRlc3QsIGdlc3R1cmVGbGluZ0FuaW1hdGVzKQogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0
SGFuZGxlciwgc2Nyb2xsRW5kKCkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwLjEp
OwogCisgICAgLy8gSWYgd2UgY2FuY2VsIHRoZSBmbGluZywgdGhlIG5leHQgYW5pbWF0aW9uIHNo
b3VsZCBiZSBhIG5vLW9wIGFuZCBzaG91bGQgbm90IHJlc3VsdCBpbiBhbm90aGVyCisgICAgLy8g
ZnJhbWUgYmVpbmcgcmVxdWVzdGVkLgorICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5w
dXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVu
dCwgZGlkSGFuZGxlSW5wdXRFdmVudCgpKTsKKyAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5w
dXRFdmVudChnZXN0dXJlKTsKKworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlciwg
c2NoZWR1bGVBbmltYXRpb24oKSkuVGltZXMoMCk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5w
dXRIYW5kbGVyLCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7
CisgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMyk7Cit9CisKK1RFU1RfRihXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ1RyYW5zZmVyKQoreworICAg
IC8vIFdlIHNob3VsZCBoYW5kbGUgdGhlIGVudGlyZSBzZXF1ZW5jZSBvdXJzZWx2ZXMuCisgICAg
RVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KDo6dGVzdGlu
Zzo6XykpLlRpbWVzKDApOworCisgICAgLy8gT24gdGhlIGZsaW5nIHN0YXJ0LCB3ZSBzaG91bGQg
c2NoZWR1bGUgYW4gYW5pbWF0aW9uIGJ1dCBub3QgYWN0dWFsbHkgc3RhcnQKKyAgICAvLyBzY3Jv
bGxpbmcuCisgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
RmxpbmdTdGFydDsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgZmxpbmdEZWx0YSA9IFdlYkNvcmU6
OkZsb2F0U2l6ZSgxMDAwLCAwKTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBmbGluZ1BvaW50ID0g
V2ViQ29yZTo6SW50UG9pbnQoNywgMTMpOworICAgIFdlYkNvcmU6OkludFBvaW50IGZsaW5nR2xv
YmFsUG9pbnQgPSBXZWJDb3JlOjpJbnRQb2ludCgxNywgMjMpOworICAgIGdlc3R1cmUuZGVsdGFY
ID0gZmxpbmdEZWx0YS53aWR0aCgpOworICAgIGdlc3R1cmUuZGVsdGFZID0gZmxpbmdEZWx0YS5o
ZWlnaHQoKTsKKyAgICBnZXN0dXJlLnggPSBmbGluZ1BvaW50LngoKTsKKyAgICBnZXN0dXJlLnkg
PSBmbGluZ1BvaW50LnkoKTsKKyAgICBnZXN0dXJlLmdsb2JhbFggPSBmbGluZ0dsb2JhbFBvaW50
LngoKTsKKyAgICBnZXN0dXJlLmdsb2JhbFkgPSBmbGluZ0dsb2JhbFBvaW50LnkoKTsKKyAgICBF
WFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZEhhbmRsZUlucHV0RXZlbnQoKSk7CisgICAgRVhQ
RUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyLCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBF
WFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXIsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRl
c3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkND
SW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7CisgICAgbV9pbnB1dEhhbmRsZXIt
PmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CisKKyAgICAvLyBUaGUgZmlyc3QgYW5pbWF0ZSBj
YWxsIHNob3VsZCBsZXQgdXMgcGljayB1cCBhbiBhbmltYXRpb24gc3RhcnQgdGltZSwgYnV0IHdl
CisgICAgLy8gc2hvdWxkbid0IGFjdHVhbGx5IG1vdmUgYW55d2hlcmUganVzdCB5ZXQuIFRoZSBm
aXJzdCBmcmFtZSBhZnRlciB0aGUgZmxpbmcgc3RhcnQKKyAgICAvLyB3aWxsIHR5cGljYWxseSBp
bmNsdWRlIHRoZSBsYXN0IHNjcm9sbCBmcm9tIHRoZSBnZXN0dXJlIHRoYXQgbGVhZCB0byB0aGUg
c2Nyb2xsCisgICAgLy8gKGVpdGhlciB3aGVlbCBvciBnZXN0dXJlIHNjcm9sbCksIHNvIHRoZXJl
IHNob3VsZCBiZSBubyB2aXNpYmxlIGhpdGNoLgorICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0
SGFuZGxlciwgc2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5w
dXRIYW5kbGVyLCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7
CisgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTApOworCisgICAgLy8gVGhlIHNlY29uZCBj
YWxsIHNob3VsZCBzdGFydCBzY3JvbGxpbmcgaW4gdGhlIC1YIGRpcmVjdGlvbi4KKyAgICBFWFBF
Q1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXIsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOworICAgIEVY
UEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlciwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVz
dGluZzo6XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJ
bnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tJbnB1dEhhbmRsZXIsIHNjcm9sbEJ5KHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRT
aXplOjp3aWR0aCwgdGVzdGluZzo6THQoMCkpKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5w
dXRIYW5kbGVyLCBzY3JvbGxFbmQoKSk7CisgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAu
MSk7CisKICAgICAvLyBMZXQncyBzYXkgb24gdGhlIHRoaXJkIGNhbGwgd2UgaGl0IGEgbm9uLXNj
cm9sbGFibGUgcmVnaW9uLiBXZSBzaG91bGQgYWJvcnQgdGhlIGZsaW5nIGFuZCBub3Qgc2Nyb2xs
LgotICAgIC8vIEZJWE1FOiBXZSBhbHNvIG5lZWQgdG8gZG8gc29tZSB3b3JrIHRvIHRyYW5zZmVy
IHRoZSByZXN0IG9mIHRoaXMgZmxpbmcgdG8gdGhlIG1haW4gdGhyZWFkLgotICAgIC8vIEFkZCB0
ZXN0cyBmb3IgdGhpcyBvbmNlIGl0J3MgaW1wbGVtZW50ZWQuCisgICAgLy8gV2UgYWxzbyBzaG91
bGQgcGFzcyB0aGUgY3VycmVudCBmbGluZyBwYXJhbWV0ZXJzIG91dCB0byB0aGUgY2xpZW50IHNv
IHRoZSByZXN0IG9mIHRoZSBmbGluZyBjYW4gYmUKKyAgICAvLyB0cmFuc2ZlcnJlZCB0byB0aGUg
bWFpbiB0aHJlYWQuCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyLCBzY2hlZHVs
ZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXIsIHNjcm9s
bEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQotICAgICAgICAuV2lsbE9uY2UodGVzdGlu
Zzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJZ25vcmVkKSk7
CisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCkpOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFu
ZGxlciwgc2Nyb2xsQnkodGVzdGluZzo6XykpLlRpbWVzKDApOwogICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0lucHV0SGFuZGxlciwgc2Nyb2xsRW5kKCkpLlRpbWVzKDApOworICAgIC8vIEV4cGVjdGVk
IHdoZWVsIGZsaW5nIGFuaW1hdGlvbiBwYXJhbWV0ZXJzOgorICAgIC8vICopIGZsaW5nRGVsdGEg
YW5kIGZsaW5nUG9pbnQgc2hvdWxkIG1hdGNoIHRoZSBvcmlnaW5hbCBHZXN0dXJlRmxpbmdTdGFy
dCBldmVudAorICAgIC8vICopIHN0YXJ0VGltZSBzaG91bGQgYmUgMTAgdG8gbWF0Y2ggdGhlIHRp
bWUgcGFyYW1ldGVyIG9mIHRoZSBmaXJzdCBhbmltYXRlKCkgY2FsbCBhZnRlciB0aGUgR2VzdHVy
ZUZsaW5nU3RhcnQKKyAgICAvLyAqKSBjdW11bGF0aXZlU2Nyb2xsIGRlcGVuZHMgb24gdGhlIGN1
cnZlLCBidXQgc2luY2Ugd2UndmUgYW5pbWF0ZWQgaW4gdGhlIC1YIGRpcmVjdGlvbiB0aGUgWCB2
YWx1ZSBzaG91bGQgYmUgPCAwCisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyLCB0
cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24odGVzdGluZzo6QWxsT2YoCisgICAgICAgIHRlc3Rp
bmc6OkZpZWxkKCZXZWJDb3JlOjpBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6ZGVsdGEsIHRl
c3Rpbmc6OkVxKGZsaW5nRGVsdGEpKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkNvcmU6
OkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpwb2ludCwgdGVzdGluZzo6RXEoZmxpbmdQb2lu
dCkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6QWN0aXZlV2hlZWxGbGluZ1Bh
cmFtZXRlcnM6Omdsb2JhbFBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ0dsb2JhbFBvaW50KSksCisg
ICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
czo6c3RhcnRUaW1lLCB0ZXN0aW5nOjpFcSgxMCkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgm
V2ViQ29yZTo6QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmN1bXVsYXRpdmVTY3JvbGwsCisg
ICAgICAgICAgICB0ZXN0aW5nOjpQcm9wZXJ0eSgmV2ViQ29yZTo6SW50U2l6ZTo6d2lkdGgsIHRl
c3Rpbmc6Okd0KDApKSkpKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMik7CiAK
LSAgICAvLyBTaW5jZSB3ZSd2ZSBhYm9ydGVkIHRoZSBmbGluZywgdGhlIG5leHQgYW5pbWF0aW9u
IHNob3VsZCBiZSBhIG5vLW9wIGFuZCBzaG91bGQgbm90IHJlc3VsdCBpbiBhbm90aGVyCi0gICAg
Ly8gZnJhbWUgYmVpbmcgcmVxdWVzdGVkLgorICAgIC8vIE9uY2UgdGhlIGZsaW5nIGlzIHRyYW5z
ZmVycmVkLCB3ZSBzaG91bGQgc3RvcCBzY3JvbGxpbmcuCiAgICAgRVhQRUNUX0NBTEwobV9tb2Nr
SW5wdXRIYW5kbGVyLCBzY2hlZHVsZUFuaW1hdGlvbigpKS5UaW1lcygwKTsKICAgICBFWFBFQ1Rf
Q0FMTChtX21vY2tJbnB1dEhhbmRsZXIsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6
Ol8pKS5UaW1lcygwKTsKICAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4zKTsKKworICAg
IC8vIFNpbmNlIHdlJ3ZlIHRyYW5zZmVycmVkIHRoZSBmbGluZyB0byB0aGUgbWFpbiB0aHJlYWQs
IHdlIG5lZWQgdG8gcGFzcyB0aGUgbmV4dCBHZXN0dXJlRmxpbmdDYW5jZWwgdG8gdGhlIG1haW4K
KyAgICAvLyB0aHJlYWQgYXMgd2VsbC4KKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRp
ZE5vdEhhbmRsZUlucHV0RXZlbnQodHJ1ZSkpOworICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6
V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOworICAgIG1faW5wdXRIYW5kbGVyLT5o
YW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132651</attachid>
            <date>2012-03-19 13:33:48 -0700</date>
            <delta_ts>2012-03-19 13:47:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81479-20120319133347.patch</filename>
            <type>text/plain</type>
            <size>56528</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBiMTE5MjEzZGE4M2Y2
ZGU5NTEzYWIxMzk5ZTIzNjRlMDYxY2MxN2QzLi43NjhhYzNhYjU0OWE4NWI0YzNjNmU4OTFhNWIy
ZjNiMjllNWE2NzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMy0xOSAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gVHJhbnNmZXIgd2hlZWwgZmxpbmdzIHRvIG1haW4gdGhyZWFkIGlmIHdlIGhpdCBhIHJlZ2lv
biB0aGF0IGNhbid0IGJlIHNjcm9sbGVkIGZyb20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQ3OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYkxheWVyVHJlZVZpZXdD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Q2xpZW50Ojp0cmFuc2Zl
cldoZWVsRmxpbmdBbmltYXRpb24pOgorCiAyMDEyLTAzLTE5ICBEYXZpZCBSZXZlbWFuICA8cmV2
ZW1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBHTF9FWFRfb2NjbHVzaW9u
X3F1ZXJ5X2Jvb2xlYW4gYW5kIEdMX0NIUk9NSVVNX2NvbW1hbmRfYnVmZmVyX3F1ZXJ5IHN1cHBv
cnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggZThlMWExM2U5ZTY5NWFkMjA4NjRhMWI2YjZhNTRmOTJiYTcyNWZh
Mi4uNDFiODUzMWI4YjIyZTY4ZDk3MGI5ZTMzZWI3Y2Q4ODA1MTJiNDljYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDY0IEBACisyMDEyLTAzLTE5ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBUcmFuc2ZlciB3aGVlbCBmbGluZ3MgdG8g
bWFpbiB0aHJlYWQgaWYgd2UgaGl0IGEgcmVnaW9uIHRoYXQgY2FuJ3QgYmUgc2Nyb2xsZWQgZnJv
bSB0aGUgY29tcG9zaXRvciB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxNDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OkFj
dGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vQWN0aXZl
UGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmg6CisgICAgICAgIChBY3RpdmVQbGF0Zm9ybUdlc3R1
cmVBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVDdXJ2
ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSk6
CisgICAgICAgICogcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oOgorICAgICAgICAo
VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNo
RmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3VtdWxhdGl2ZVNjcm9sbCk6CisgICAgICAgICog
cGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmg6CisgICAgICAgIChXZWJD
b3JlOjpXaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmN1bXVsYXRpdmVTY3JvbGwpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlR2VzdHVyZUFu
aW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb246
OmN1bXVsYXRpdmVTY3JvbGwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb246OnN0YXJ0VGltZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHZXN0dXJlQ3VydmUuaDoKKyAg
ICAgICAgKENDR2VzdHVyZUN1cnZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdENsaWVudCk6CisgICAgICAgIChDQ0xheWVy
VHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3RJbXBsOjp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQpOgorICAgICAgICAoQ0NMYXll
clRyZWVIb3N0SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQ
cm94eTo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFkT25JbXBsVGhyZWFk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnRyYW5zZmVyV2hlZWxGbGlu
Z0FuaW1hdGlvblRvTWFpblRocmVhZE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25C
ZWdpbkZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKwogMjAxMi0wMy0xOCAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
SW1wbGVtZW50IGZsaW5nLWJ5LXdoZWVsIG9uIGNvbXBvc2l0b3IgdGhyZWFkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IDk3NjM0NjYwNGJiMjMzMDQzNDJmODMxZWU1MTRjMTVmMWE3YjZi
OTkuLjgwOGRlN2I2ODIyYTUwYmM2OGI1NjhjNzJiZWE0ZmFhN2RkZjRjOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTItMDMtMTkgIEphbWVzIFJvYmlu
c29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFRyYW5zZmVy
IHdoZWVsIGZsaW5ncyB0byBtYWluIHRocmVhZCBpZiB3ZSBoaXQgYSByZWdpb24gdGhhdCBjYW4n
dCBiZSBzY3JvbGxlZCBmcm9tIHRoZSBjb21wb3NpdG9yIHRocmVhZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0NzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVUb0NDR2Vz
dHVyZUFkYXB0ZXI6OmN1bXVsYXRpdmVTY3JvbGwpOgorICAgICAgICAoUGxhdGZvcm1HZXN0dXJl
VG9DQ0dlc3R1cmVBZGFwdGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGw6OmhhbmRsZUlucHV0RXZlbnRJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkpOgor
ICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oOgorICAgICAgICAq
IHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
VHJlZVZpZXdJbXBsOjp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24pOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaDoKKyAgICAgICAgKFdl
YkxheWVyVHJlZVZpZXdJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6c2Nyb2xsQnkpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViVmlld0ltcGwpOgorICAgICAgICAqIHRlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q0NMYXllclRyZWVI
b3N0SW1wbFRlc3Q6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvblRvTWFpblRocmVhZE9uSW1w
bFRocmVhZCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAg
ICAgIChXVEY6Ok1vY2tMYXllclRyZWVIb3N0Q2xpZW50Ojp0cmFuc2ZlcldoZWVsRmxpbmdBbmlt
YXRpb24pOgorICAgICAgICAoTW9ja0xheWVyVHJlZUhvc3RDbGllbnQpOgorICAgICAgICAqIHRl
c3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZha2VD
Q0xheWVyVHJlZUhvc3RDbGllbnQ6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbik6CisgICAg
ICAgICogdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcDoKKwogMjAx
Mi0wMy0xOCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gSW1wbGVtZW50IGZsaW5nLWJ5LXdoZWVsIG9uIGNvbXBvc2l0b3IgdGhyZWFk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0
Zm9ybS9QbGF0Zm9ybS5neXBpCmluZGV4IGFmYTE0NzEzZjVkNmFhY2I4MzE5ZDc1YTY3NzM2YTZm
MjNiMTM0OWEuLjhlY2Y4ODEzYTA2ZmE3NjNhNjQyZDRmODZhY2I5ZTg1YWIzMGNjNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9QbGF0Zm9ybS5neXBpCkBAIC0zMSw2ICszMSw3IEBACiB7CiAgICAgJ3ZhcmlhYmxlcyc6IHsK
ICAgICAgICAgJ3BsYXRmb3JtX2ZpbGVzJzogWworICAgICAgICAgICAgJ2Nocm9taXVtL3B1Ymxp
Yy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViQ1N0cmluZy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
Q2FudmFzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb2xvci5oJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0
aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWQzM2E1N2QwOGUzM2YxNThm
MGZhYjI4YTU4ZTg1Y2MxZThjZGMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oCkBAIC0wLDAg
KzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzX2gK
KyNkZWZpbmUgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnNfaAorCisjaW5jbHVkZSAiV2Vi
Q29tbW9uLmgiCisKKyNpbmNsdWRlICJXZWJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiV2ViUG9p
bnQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJBY3RpdmVXaGVlbEZsaW5n
UGFyYW1ldGVycyB7CisgICAgV2ViRmxvYXRQb2ludCBkZWx0YTsKKyAgICBXZWJQb2ludCBwb2lu
dDsKKyAgICBXZWJQb2ludCBnbG9iYWxQb2ludDsKKyAgICBpbnQgbW9kaWZpZXJzOworICAgIFdl
YlNpemUgY3VtdWxhdGl2ZVNjcm9sbDsKKyAgICBkb3VibGUgc3RhcnRUaW1lOworCisgICAgV2Vi
QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMoKQorICAgICAgICA6IG1vZGlmaWVycygwKQorICAg
ICAgICAsIHN0YXJ0VGltZSgwKQorICAgIHsKKyAgICB9Cit9OworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3
Q2xpZW50LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZp
ZXdDbGllbnQuaAppbmRleCA1YzBiOWVmOWEyYTJjNjEzYjExOTAwYzEzZjg5OGYyMjgzOWI0NjVi
Li40OGJkOWRjZjk3M2E3MTdhMjdiOTE5NzVmNTViZTg2MGMzMjQ0MzhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaAor
KysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGll
bnQuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXZWJMYXllclRyZWVWaWV3Q2xpZW50X2gK
IAogbmFtZXNwYWNlIFdlYktpdCB7CitzdHJ1Y3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRl
cnM7CiBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKIHN0cnVjdCBXZWJTaXplOwogY2xhc3Mg
V2ViVGhyZWFkOwpAQCAtNTUsNiArNTYsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRDb21taXRBbmREcmF3RnJhbWUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRl
U3dhcEJ1ZmZlcnMoKSA9IDA7CiAKKyAgICAvLyBUcmFuc2ZlcnMgYW4gaW4tcHJvZ3Jlc3Mgd2hl
ZWwgZmxpbmcgYW5pbWF0aW9uIHRoYXQgdGhlIFdlYkxheWVyVHJlZVZpZXcKKyAgICAvLyBjYW4g
bm8gbG9uZ2VyIGFkdmFuY2UgdG8gdGhlIGNsaWVudCB0byBmaW5pc2ggb3V0LgorICAgIC8vIEZJ
WE1FOiBSZW1vdmUgZGVmYXVsdCBpbXBsIHdoZW4gY2xpZW50cyBhcmUgYWxsIHVwZGF0ZWQKKyAg
ICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikgeyB9CisKICAgICAvLyBTY2hlZHVsZXMgYSBjb21wb3Np
dGluZyBwYXNzLCBtZWFuaW5nIHRoZSBjbGllbnQgc2hvdWxkIGNhbGwKICAgICAvLyBXZWJMYXll
clRyZWVWaWV3Ojpjb21wb3NpdGUgYXQgYSBsYXRlciB0aW1lLiBUaGlzIGlzIG9ubHkgY2FsbGVk
IGlmIHRoZQogICAgIC8vIGNvbXBvc2l0b3IgdGhyZWFkIGlzIGRpc2FibGVkOyB3aGVuIGVuYWJs
ZWQsIHRoZSBjb21wb3NpdG9yIHdpbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwNmJmOWYwNzBiZjg2
ZjdkZWI0ZjA3YTQyMGYzYWNmZTliYmEyZTk2Li5lNjViN2IwMGNkNmI3M2UwMmNiNmVhODA0MzNm
N2FlODQ0MzhjZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zMzU4LDYgKzMzNTgsNyBAQAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9B
Y3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmNwcAppbmRleCAxOGVjN2ViMzRhZTJl
NGUwN2I1NmMxNGEzZTAyYTMzNzhiYWQ5ZDUwLi42YTAxM2FkZmI0NDVkNmRjOTUzZDQzOTc4ZjQ5
ODUwMTM3Y2MwZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQ
bGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5jcHAKQEAgLTM3LDYgKzM3LDExIEBAIFBh
c3NPd25QdHI8QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uPiBBY3RpdmVQbGF0Zm9ybUdl
c3R1cmVBbmltYXRpb246OmNyZWF0CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBY3RpdmVQbGF0
Zm9ybUdlc3R1cmVBbmltYXRpb24oY3VydmUsIHRhcmdldCkpOwogfQogCitQYXNzT3duUHRyPEFj
dGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbj4gQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0
aW9uOjpjcmVhdGUoUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3VydmUsIFBsYXRm
b3JtR2VzdHVyZUN1cnZlVGFyZ2V0KiB0YXJnZXQsIGRvdWJsZSBzdGFydFRpbWUpCit7CisgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oY3VydmUs
IHRhcmdldCwgc3RhcnRUaW1lKSk7Cit9CisKIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlv
bjo6fkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbigpCiB7CiB9CkBAIC00OSw2ICs1NCwx
NCBAQCBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OkFjdGl2ZVBsYXRmb3JtR2VzdHVy
ZUFuaW1hdGlvbihQYXNzT3duUHRyPFBsYXRmbwogewogfQogCitBY3RpdmVQbGF0Zm9ybUdlc3R1
cmVBbmltYXRpb246OkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPFBs
YXRmb3JtR2VzdHVyZUN1cnZlPiBjdXJ2ZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqIHRh
cmdldCwgZG91YmxlIHN0YXJ0VGltZSkKKyAgICA6IG1fc3RhcnRUaW1lKHN0YXJ0VGltZSkKKyAg
ICAsIG1fd2FpdGluZ0ZvckZpcnN0VGljayhmYWxzZSkKKyAgICAsIG1fY3VydmUoY3VydmUpCisg
ICAgLCBtX3RhcmdldCh0YXJnZXQpCit7Cit9CisKIGJvb2wgQWN0aXZlUGxhdGZvcm1HZXN0dXJl
QW5pbWF0aW9uOjphbmltYXRlKGRvdWJsZSB0aW1lKQogewogICAgIGlmIChtX3dhaXRpbmdGb3JG
aXJzdFRpY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBs
YXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZl
UGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmgKaW5kZXggOWQ1NjNlNDgzNjY2ZGQyYWRhMWI1YjA1
ZTg5ODRkZjE1YmFjNzAyNC4uMjFmMTk5YzA3YTFmY2YzNGM1OGMxMjQ5ZjJiODRlNGM1NzExYmNh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0
dXJlQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZv
cm1HZXN0dXJlQW5pbWF0aW9uLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgQWN0aXZlUGxhdGZv
cm1HZXN0dXJlQW5pbWF0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBY3RpdmVQbGF0
Zm9ybUdlc3R1cmVBbmltYXRpb24pOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEFj
dGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbj4gY3JlYXRlKFBhc3NPd25QdHI8UGxhdGZvcm1H
ZXN0dXJlQ3VydmU+LCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCopOworICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbj4gY3JlYXRlKFBhc3NPd25Q
dHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+LCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCosIGRv
dWJsZSBzdGFydFRpbWUpOwogICAgIH5BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oKTsK
IAogICAgIGJvb2wgYW5pbWF0ZShkb3VibGUgdGltZSk7CkBAIC01MCw2ICs1MSw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgLy8gQXNzdW1lcyBhIHZhbGlkIFBsYXRmb3JtR2VzdHVyZUN1cnZl
VGFyZ2V0IHRoYXQgb3V0bGl2ZXMgdGhlIGFuaW1hdGlvbi4KICAgICBBY3RpdmVQbGF0Zm9ybUdl
c3R1cmVBbmltYXRpb24oUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4sIFBsYXRmb3Jt
R2VzdHVyZUN1cnZlVGFyZ2V0Kik7CisgICAgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9u
KFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+LCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRh
cmdldCosIGRvdWJsZSBzdGFydFRpbWUpOwogCiAgICAgZG91YmxlIG1fc3RhcnRUaW1lOwogICAg
IGJvb2wgbV93YWl0aW5nRm9yRmlyc3RUaWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ny
b3NzVGhyZWFkQ29waWVyLmgKaW5kZXggM2I2MDc2MTQyY2RhYWMyMTRhZDAwOTM2ZmNmYjNjNTA0
YTNmZDE3MC4uODk2MmNlZTk0NGYxMThjNWYzZWE3MTliODM1YzllZmY5ODI0YzhkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCkBAIC00MSw2ICs0MSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIHN0cnVjdCBBY3RpdmVXaGVlbEZsaW5n
UGFyYW1ldGVyczsKICAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIEludFNpemU7CiAgICAg
Y2xhc3MgS1VSTDsKQEAgLTcwLDYgKzcxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHRl
bXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFRocmVh
ZGFibGVMb2FkZXJPcHRpb25zPiA6IHB1YmxpYyBDcm9zc1RocmVhZENvcGllclBhc3NUaHJvdWdo
PFRocmVhZGFibGVMb2FkZXJPcHRpb25zPiB7CiAgICAgfTsKIAorICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEFjdGl2ZVdoZWVsRmxpbmdQ
YXJhbWV0ZXJzPiA6IHB1YmxpYyBDcm9zc1RocmVhZENvcGllclBhc3NUaHJvdWdoPEFjdGl2ZVdo
ZWVsRmxpbmdQYXJhbWV0ZXJzPiB7CisgICAgfTsKKwogICAgIHRlbXBsYXRlPD4gc3RydWN0IENy
b3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEludFJlY3Q+IDogcHVibGljIENyb3Nz
VGhyZWFkQ29waWVyUGFzc1Rocm91Z2g8SW50UmVjdD4gewogICAgIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUN1cnZlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCmluZGV4IDkyMjE5OTE0Nzhl
YTljMTg5M2Y5NmIzZmYwZWVkN2VmNjRjNzdjNDIuLmUwZWQyNDM5N2ZhODg0NmQ3YTRlNDY4ODky
MWYzYjZkMzIyODNjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtR2VzdHVyZUN1cnZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1H
ZXN0dXJlQ3VydmUuaApAQCAtMjcsNiArMjcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIEludFNpemU7CiBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldDsKIAogLy8g
QWJzdHJhY3QgaW50ZXJmYWNlIGZvciBjdXJ2ZXMgdXNlZCBieSBBY3RpdmVQbGF0Zm9ybUdlc3R1
cmVBbmltYXRpb24uIEEKQEAgLTM5LDYgKzQwLDggQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJu
cyBmYWxzZSBpZiBjdXJ2ZSBoYXMgZmluaXNoZWQgYW5kIGNhbiBubyBsb25nZXIgYmUgYXBwbGll
ZC4KICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoZG91YmxlIHRpbWUsIFBsYXRmb3JtR2VzdHVyZUN1
cnZlVGFyZ2V0KikgPSAwOworCisgICAgdmlydHVhbCBJbnRTaXplIGN1bXVsYXRpdmVTY3JvbGwo
KSBjb25zdCA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZl
LmNwcAppbmRleCAwNmVkNTRhYzNhYzA5NmJjNDBlMTY1ZWUyNTQ3Y2RhNWQ5MzQ2MDVjLi5kNWU2
MzM2YzEwYTFmZjU0YTYxZTVmZTliNzI3YThlNTI3ODRiMjRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5j
cHAKQEAgLTM1LDExICszNSwxNyBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBQYXNzT3duUHRy
PFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNy
ZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSh2ZWxvY2l0eSkpOworICAgIHJldHVy
biBhZG9wdFB0cihuZXcgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKHZlbG9jaXR5LCBJ
bnRTaXplKCkpKTsKIH0KIAotVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpUb3VjaEZs
aW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHkpCitQYXNz
T3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmU6OmNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgSW50U2l6ZSYgY3Vt
dWxhdGl2ZVNjcm9sbCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRvdWNoRmxpbmdQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZSh2ZWxvY2l0eSwgY3VtdWxhdGl2ZVNjcm9sbCkpOworfQorCitUb3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgSW50U2l6ZSYgY3VtdWxhdGl2ZVNj
cm9sbCkKICAgICA6IG1fdmVsb2NpdHkodmVsb2NpdHkpCisgICAgLCBtX2N1bXVsYXRpdmVTY3Jv
bGwoY3VtdWxhdGl2ZVNjcm9sbCkKICAgICAsIG1fdGltZVNjYWxlRmFjdG9yKDEwMDAgLyBtYXgo
MS5mLCBtYXgoZmFicyh2ZWxvY2l0eS54KCkpLCBmYWJzKHZlbG9jaXR5LnkoKSkpKSkKIHsKICAg
ICBBU1NFUlQodmVsb2NpdHkgIT0gRmxvYXRQb2ludDo6emVybygpKTsKQEAgLTcyLDcgKzc4LDcg
QEAgYm9vbCBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmFwcGx5KGRvdWJsZSB0aW1l
LCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmcKICAgICAgICAgZGlzcGxhY2VtZW50ID0gMS4wOwog
CiAgICAgLy8gS2VlcCB0cmFjayBvZiBpbnRlZ2VyIHBvcnRpb24gb2Ygc2Nyb2xsIHRodXMgZmFy
LCBhbmQgcHJlcGFyZSBpbmNyZW1lbnQuCi0gICAgSW50UG9pbnQgc2Nyb2xsKGRpc3BsYWNlbWVu
dCAqIG1fdmVsb2NpdHkueCgpLCBkaXNwbGFjZW1lbnQgKiBtX3ZlbG9jaXR5LnkoKSk7CisgICAg
SW50U2l6ZSBzY3JvbGwoZGlzcGxhY2VtZW50ICogbV92ZWxvY2l0eS54KCksIGRpc3BsYWNlbWVu
dCAqIG1fdmVsb2NpdHkueSgpKTsKICAgICBJbnRQb2ludCBzY3JvbGxJbmNyZW1lbnQoc2Nyb2xs
IC0gbV9jdW11bGF0aXZlU2Nyb2xsKTsKICAgICBtX2N1bXVsYXRpdmVTY3JvbGwgPSBzY3JvbGw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlLmgKaW5kZXggZmQ1MmJjNGVjNzRjMGI1MmI3NTg0NWI0NjY5ZjY1NmYw
N2QyNTBlZS4uMTZhZWZlMjU3NGU1MTc4YWQ4M2U1MWQxODcxZDJkMzdiMjhiZDMyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlLmgKQEAgLTQxLDE2ICs0MSwxOCBAQCBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZVRhcmdldDsKIGNsYXNzIFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSA6IHB1YmxpYyBQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGxh
dGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSk7Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZShjb25zdCBG
bG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgSW50U2l6ZSYgY3VtdWxhdGl2ZVNjcm9sbCk7CiAg
ICAgdmlydHVhbCB+VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKCk7CiAKICAgICB2aXJ0
dWFsIGJvb2wgYXBwbHkoZG91YmxlIHRpbWUsIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0Kik7
CisgICAgdmlydHVhbCBJbnRTaXplIGN1bXVsYXRpdmVTY3JvbGwoKSBjb25zdCB7IHJldHVybiBt
X2N1bXVsYXRpdmVTY3JvbGw7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBUb3VjaEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHkpOworICAgIFRv
dWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwg
Y29uc3QgSW50U2l6ZSYgY3VtdWxhdGl2ZVNjcm9sbCk7CiAKICAgICBGbG9hdFBvaW50IG1fdmVs
b2NpdHk7CisgICAgSW50U2l6ZSBtX2N1bXVsYXRpdmVTY3JvbGw7CiAgICAgZmxvYXQgbV90aW1l
U2NhbGVGYWN0b3I7Ci0gICAgSW50UG9pbnQgbV9jdW11bGF0aXZlU2Nyb2xsOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
V2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKaW5kZXggYzlmMTczMjg5Nzlj
YjdjNzJmZjM5ZjdlY2MyMTExMGY0MzNiYzM5OS4uZWJkNzg4ZmU0NTlhNmM4MTdiYWFlYTA4YjFh
OWVjMjM0OTJlYmY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxG
bGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCkBAIC01OSw3ICs1OSw3IEBAIGJv
b2wgV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjphcHBseShkb3VibGUgdGltZSwgUGxh
dGZvcm1HZXN0dXJlQ3VydmVUYXJnCiAgICAgLy8gRklYTUU6IGNvbnNpZGVyIG1ha2luZyB0aGUg
dmFsdWUgb2Ygc2lnbWEgc2V0dGFibGUgaW4gdGhlIGNvbnN0cnVjdG9yLgogICAgIHN0YXRpYyBk
b3VibGUgdHdvU2lnbWFTcXVhcmVkSW52ZXJzZSA9IDE2OyAvLyBzaWdtYSA9IDAuMjUKICAgICBm
bG9hdCBjZGYgPSAxIC0gZXhwKC10aW1lICogdGltZSAqIHR3b1NpZ21hU3F1YXJlZEludmVyc2Up
OwotICAgIEludFBvaW50IHNjcm9sbChjZGYgKiBtX3ZlbG9jaXR5LngoKSwgY2RmICogbV92ZWxv
Y2l0eS55KCkpOworICAgIEludFNpemUgc2Nyb2xsKGNkZiAqIG1fdmVsb2NpdHkueCgpLCBjZGYg
KiBtX3ZlbG9jaXR5LnkoKSk7CiAgICAgSW50UG9pbnQgc2Nyb2xsSW5jcmVtZW50KHNjcm9sbCAt
IG1fY3VtdWxhdGl2ZVNjcm9sbCk7CiAgICAgbV9jdW11bGF0aXZlU2Nyb2xsID0gc2Nyb2xsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1H
ZXN0dXJlQ3VydmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZS5oCmluZGV4IGI3MjE0NjE2NTMzM2YyM2M4YzliYmY2YzAxZGRiZjA2N2Fl
ZTFhYzIuLjI5ZjE1MWZjMWIyZjA4YTU5MTJiZTUwZmY3OWNjNjk1YmQ5YzVhYTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZS5oCkBAIC00NCwxMiArNDQsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldoZWVs
RmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSgpOwogCiAgICAgdmlydHVhbCBib29sIGFwcGx5KGRv
dWJsZSB0aW1lLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCopOworICAgIHZpcnR1YWwgSW50
U2l6ZSBjdW11bGF0aXZlU2Nyb2xsKCkgY29uc3QgeyByZXR1cm4gbV9jdW11bGF0aXZlU2Nyb2xs
OyB9CiAKIHByaXZhdGU6CiAgICAgV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNvbnN0
IEZsb2F0UG9pbnQmIHZlbG9jaXR5KTsKIAogICAgIEZsb2F0UG9pbnQgbV92ZWxvY2l0eTsKLSAg
ICBJbnRQb2ludCBtX2N1bXVsYXRpdmVTY3JvbGw7CisgICAgSW50U2l6ZSBtX2N1bXVsYXRpdmVT
Y3JvbGw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BY3RpdmVXaGVlbEZsaW5nUGFyYW1l
dGVycy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQWN0aXZl
V2hlZWxGbGluZ1BhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjhjYWE3OTYzYWYyNzYyNDRlNTZi
ZDkzZjFhODFkNzc1NTc1MjYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaApAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyc19o
CisjZGVmaW5lIEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzX2gKKworI2luY2x1ZGUgIkZsb2F0
U2l6ZS5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RydWN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHsKKyAgICBGbG9hdFNpemUgZGVsdGE7
CisgICAgSW50UG9pbnQgcG9pbnQ7CisgICAgSW50UG9pbnQgZ2xvYmFsUG9pbnQ7CisgICAgaW50
IG1vZGlmaWVyczsKKyAgICBJbnRTaXplIGN1bXVsYXRpdmVTY3JvbGw7CisgICAgZG91YmxlIHN0
YXJ0VGltZTsKKworICAgIEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKCkKKyAgICAgICAgOiBt
b2RpZmllcnMoMCkKKyAgICAgICAgLCBzdGFydFRpbWUoMCkKKyAgICB7CisgICAgfQorfTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24u
Y3BwCmluZGV4IGE0YWYzZTU5YmM1NTc3YTg4NmYwMjliZTU5MmZjNDk5YWQ0M2JhMDEuLjYyYzE5
ZmZjYjljNWNkYjgyNWQ3NjZkNTJhNTgwYjFmNGFhNmUzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlR2VzdHVyZUFuaW1h
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5j
bHVkZSAiY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgiCiAKKyNpbmNsdWRlICJJbnRQb2lu
dC5oIgogI2luY2x1ZGUgImNjL0NDR2VzdHVyZUN1cnZlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTQ3LDYgKzQ4LDExIEBAIENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6fkNDQWN0aXZl
R2VzdHVyZUFuaW1hdGlvbigpCiB7CiB9CiAKK0ludFNpemUgQ0NBY3RpdmVHZXN0dXJlQW5pbWF0
aW9uOjpjdW11bGF0aXZlU2Nyb2xsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9nZXN0dXJlQ3Vy
dmUtPmN1bXVsYXRpdmVTY3JvbGwoKTsKK30KKwogYm9vbCBDQ0FjdGl2ZUdlc3R1cmVBbmltYXRp
b246OmFuaW1hdGUoZG91YmxlIHRpbWUpCiB7CiAgICAgaWYgKG1fd2FpdGluZ0ZvckZpcnN0VGlj
aykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uaAppbmRleCA5
YmNkNzUzNzA0YzM1OTRlMjNiZWQzNmI2YjY1NDk0MGE4NTRkNzBkLi4zZDUwNzU5NGIzODIxYWU3
MTdlYjA5MTk0ZWM3MzBkNDY1NTFmNjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUdl
c3R1cmVBbmltYXRpb24uaApAQCAtMzMsMTcgKzMzLDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ0NHZXN0dXJlQ3VydmU7CiBjbGFzcyBDQ0dlc3R1cmVDdXJ2ZVRhcmdldDsKK2Ns
YXNzIEludFNpemU7CiAKIGNsYXNzIENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbiB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKTsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc093blB0cjxDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24+IGNyZWF0ZShQYXNz
T3duUHRyPENDR2VzdHVyZUN1cnZlPiwgQ0NHZXN0dXJlQ3VydmVUYXJnZXQqKTsKKwogICAgIH5D
Q0FjdGl2ZUdlc3R1cmVBbmltYXRpb24oKTsKIAogICAgIGJvb2wgYW5pbWF0ZShkb3VibGUgdGlt
ZSk7CiAKKyAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFRpbWU7
IH0KKyAgICBJbnRTaXplIGN1bXVsYXRpdmVTY3JvbGwoKSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICBDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0cjxDQ0dlc3R1cmVDdXJ2ZT4sIEND
R2VzdHVyZUN1cnZlVGFyZ2V0Kik7CisgICAgQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKFBhc3NP
d25QdHI8Q0NHZXN0dXJlQ3VydmU+LCBDQ0dlc3R1cmVDdXJ2ZVRhcmdldCosIGRvdWJsZSBzdGFy
dFRpbWUpOwogCiAgICAgZG91YmxlIG1fc3RhcnRUaW1lOwogICAgIGRvdWJsZSBtX3dhaXRpbmdG
b3JGaXJzdFRpY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHZXN0dXJlQ3VydmUuaAppbmRleCA0YmMxYzBkZDgwNmRm
NzY1ZTNmMjQ3MmQyYjY2MzY0NWQyODljNmE1Li5jYzc5ZjcxODAxZTQyMmY2Mjg5MjJhYjYxZTY0
ZTRjODM1YjQxYzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR2VzdHVyZUN1cnZlLmgKQEAgLTQyLDYgKzQyLDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNDR2VzdHVyZUN1cnZlKCkgeyB9CiAKICAgICB2aXJ0
dWFsIGJvb2wgYXBwbHkoZG91YmxlIHRpbWUsIENDR2VzdHVyZUN1cnZlVGFyZ2V0KikgPSAwOwor
CisgICAgdmlydHVhbCBJbnRTaXplIGN1bXVsYXRpdmVTY3JvbGwoKSBjb25zdCA9IDA7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAppbmRleCA3
NjYwOGQ5ZmMxZDBkYTEzOWE0OTMwYmM1MDQ3YzA4YWViOGIyZGY0Li5kY2QwZWVkMGVlMDY2NGQ0
NmQ3NTEzYWY0ODAwZDIzMjVkZmIyYjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKQEAg
LTI5LDYgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdHJ1Y3QgQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnM7CiBjbGFzcyBDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb247CiBjbGFz
cyBDQ0dlc3R1cmVDdXJ2ZVRhcmdldDsKIGNsYXNzIEludFBvaW50OwpAQCAtODEsNiArODIsOCBA
QCBwdWJsaWM6CiAgICAgLy8gUmVxdWVzdCBhbm90aGVyIGNhbGxiYWNrIHRvIENDSW5wdXRIYW5k
bGVyOjphbmltYXRlKCkuCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCkgPSAw
OwogCisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBB
Y3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpID0gMDsKKwogcHJvdGVjdGVkOgogICAgIENDSW5w
dXRIYW5kbGVyQ2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB+Q0NJbnB1dEhhbmRsZXJDbGllbnQo
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDAxNzgyMGE3YzcwZTFi
OTNmYzYyYTRkZjQ3NjY0NTI4Njk3MDM1YTEuLmIwZmZhNTA0Yjk2NjcxNzQwNjI0OTIwYjlkMmIy
ZjhlNzY3NjNiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMjYsNiAr
MjYsNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAKKyNpbmNsdWRlICJB
Y3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIK
ICNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oIgpAQCAtNDE0LDYgKzQxNSwxNSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
Y29tcG9zaXRlKCkKICAgICBzdGF0aWNfY2FzdDxDQ1NpbmdsZVRocmVhZFByb3h5Kj4obV9wcm94
eS5nZXQoKSktPmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVI
b3N0Ojp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgQWN0aXZlV2hlZWxGbGluZ1Bh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgLy8gV2UgdGljayBhbmltYXRpb25zIGluIEND
TGF5ZXJUcmVlSG9zdCB1c2luZyBjdXJyZW50VGltZSgpLCBidXQgdGhlIGltcGwgdGhyZWFkIHVz
ZXMgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkuIFJlYmFzZSBoZXJlIGJlZm9yZSBwYXNz
aW5nIHRpbWVzIG91dCB0byB0aGUgY2xpZW50LgorICAgIGRvdWJsZSB0aW1lU2hpZnQgPSBjdXJy
ZW50VGltZSgpIC0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnMgcGFyYW1ldGVyc1dpdGhTaGlmdGVkVGltZSA9IHBhcmFtZXRlcnM7
CisgICAgcGFyYW1ldGVyc1dpdGhTaGlmdGVkVGltZS5zdGFydFRpbWUgKz0gdGltZVNoaWZ0Owor
ICAgIG1fY2xpZW50LT50cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24ocGFyYW1ldGVyc1dpdGhT
aGlmdGVkVGltZSk7Cit9CisKIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQog
ewogICAgIGlmICghbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKaW5kZXggODlmMWJlMzA3ZWRmYzkxNmQ2MDllMDg1YTM1NTIyNjc3NjIzZWM4
Ny4uMTJhODM5ZTEwNWYxZjIzMGY0NmQ4YTFkZmY0MjEzYTlkOGE3NjU3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitzdHJ1Y3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM7CiBjbGFzcyBDQ0xheWVyVHJl
ZUhvc3RJbXBsOwogY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDNEOwpAQCAtNTksNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3Jl
YXRlQ29udGV4dChib29sIHN1Y2Nlc3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0
QW5kRHJhd0ZyYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZm
ZXJzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24o
Y29uc3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSA9IDA7CiAKICAgICAvLyBVc2VkIG9u
bHkgaW4gdGhlIHNpbmdsZS10aHJlYWRlZCBwYXRoLgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZUNvbXBvc2l0ZSgpID0gMDsKQEAgLTE0Myw2ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRDb21taXRBbmREcmF3RnJhbWUoKSB7IG1fY2xpZW50LT5kaWRDb21taXRBbmREcmF3RnJhbWUo
KTsgfQogICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIHsgbV9jbGllbnQtPmRpZENv
bXBsZXRlU3dhcEJ1ZmZlcnMoKTsgfQogICAgIHZvaWQgZGVsZXRlQ29udGVudHNUZXh0dXJlc09u
SW1wbFRocmVhZChUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVy
V2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpOwog
ICAgIC8vIFJldHVybnMgZmFsc2UgaWYgd2Ugc2hvdWxkIGFib3J0IHRoaXMgZnJhbWUgZHVlIHRv
IGluaXRpYWxpemF0aW9uIGZhaWx1cmUuCiAgICAgYm9vbCB1cGRhdGVMYXllcnMoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBkZDJkNDJhNDcxN2FhYTBl
ZmE1YmFjYzhhM2MyOWYyNmIwMjRkYjg4Li5iZTMwYzI5NzI5NjViZDVlMjJlZWM2NWIyMzdlYzAw
Y2YwZGE2OGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAt
MTg2LDYgKzE4NiwxMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNjaGVkdWxlQW5pbWF0
aW9uKCkKICAgICBtX2NsaWVudC0+c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKIH0KIAor
dm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oY29u
c3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisKKyAgICBtX2Ns
aWVudC0+dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFkT25JbXBsVGhyZWFk
KHBhcmFtZXRlcnMpOworfQorCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnRyYWNrRGFtYWdl
Rm9yQWxsU3VyZmFjZXMoQ0NMYXllckltcGwqIHJvb3REcmF3TGF5ZXIsIGNvbnN0IENDTGF5ZXJM
aXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQogewogICAgIC8vIEZvciBub3csIHdlIHVzZSBk
YW1hZ2UgdHJhY2tpbmcgdG8gY29tcHV0ZSBhIGdsb2JhbCBzY2lzc29yLiBUbyBkbyB0aGlzLCB3
ZSBtdXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggMGRhZTYwNDY4
MjQyZTliMTQyNjY3ZDcwN2NhMWU1Yjk0MDJkYmUyMS4uNTA1ODYyOTFmZDhkZjMxNDRhNThkNzY5
N2JiMDY2YjVkMTNkZTk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApA
QCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0cnVjdCBBY3RpdmVX
aGVlbEZsaW5nUGFyYW1ldGVyczsKIGNsYXNzIENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjsKIGNs
YXNzIENDQ29tcGxldGlvbkV2ZW50OwogY2xhc3MgQ0NQYWdlU2NhbGVBbmltYXRpb247CkBAIC01
NSw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbklt
cGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhy
ZWFkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhy
ZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3Vi
bGUgd2FsbENsb2NrVGltZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxp
bmdBbmltYXRpb25Ub01haW5UaHJlYWRPbkltcGxUaHJlYWQoY29uc3QgQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMmKSA9IDA7CiB9OwogCiAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsIG93bnMgdGhl
IENDTGF5ZXJJbXBsIHRyZWUgYXMgd2VsbCBhcyBhc3NvY2lhdGVkIHJlbmRlcmluZyBzdGF0ZQpA
QCAtNzYsNiArNzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gVG8gY2xlYXIgYW4gYWN0aXZlIGFuaW1h
dGlvbiwgcGFzcyBudWxscHRyLgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmVHZXN0dXJlQW5p
bWF0aW9uKFBhc3NPd25QdHI8Q0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uPik7CiAgICAgdmlydHVh
bCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyV2hl
ZWxGbGluZ0FuaW1hdGlvbihjb25zdCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpOwogCiAg
ICAgLy8gVmlydHVhbCBmb3IgdGVzdGluZy4KICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Db21taXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCBlYmJkOTZlMmMzODgy
MjE4OWQyYjkwYjIxZTZkOTc2YTM2N2MwZTljLi5mODMwYThmNzI4YjgyZWVhZmU1MWRiNjY3YjQ2
MzNmMDQ5MDlkOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC02
Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbklt
cGxUaHJlYWQoKSB7IG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXQoKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpIHsgbV9sYXllclRyZWVIb3N0
LT5zZXROZWVkc0NvbW1pdCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25FdmVu
dHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1Zl
Y3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKKyAgICB2b2lkIHRyYW5zZmVyV2hlZWxGbGlu
Z0FuaW1hdGlvblRvTWFpblRocmVhZE9uSW1wbFRocmVhZChjb25zdCBBY3RpdmVXaGVlbEZsaW5n
UGFyYW1ldGVycyYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIENhbGxlZCBi
eSB0aGUgbGVnYWN5IHBhdGggd2hlcmUgUmVuZGVyV2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxpbmcu
CiAgICAgdm9pZCBjb21wb3NpdGVJbW1lZGlhdGVseSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcAppbmRleCBlMTY3NTIyM2M1NDgwNzdiZjQwY2JiYWIzZGZlYmQ5ZjZiMmI4Mjg1Li44M2Q1
YjlmYjA5Y2JjYTFhN2I1YTZhOTY4Mjk4YWViY2ZlOTM3OTdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94
eS5oIgogCisjaW5jbHVkZSAiQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRl
ICJjYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmgiCkBAIC0yOTYsNiArMjk3LDE5IEBAIHZvaWQg
Q0NUaHJlYWRQcm94eTo6cG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVh
ZChQYXNzT3duUHRyPENDQW5pCiAgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0
ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6c2V0QW5pbWF0aW9uRXZlbnRzLCBl
dmVudHMsIHdhbGxDbG9ja1RpbWUpKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5Ojp0cmFuc2Zl
cldoZWVsRmxpbmdBbmltYXRpb25Ub01haW5UaHJlYWRPbkltcGxUaHJlYWQoY29uc3QgQWN0aXZl
V2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgQVNTRVJUKGlzSW1wbFRo
cmVhZCgpKTsKKyAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6
dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkIik7Cisg
ICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAm
Q0NUaHJlYWRQcm94eTo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uLCBwYXJhbWV0ZXJzKSk7
Cit9CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKEFj
dGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1h
dGlvbihwYXJhbWV0ZXJzKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJh
dygpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTM5NCw3ICs0MDgsNyBAQCB2
b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKQogICAgIFRSQUNF
X0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIp
OwogICAgIEFTU0VSVCghbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QpOwogICAgIG1fcGVuZGlu
Z0JlZ2luRnJhbWVSZXF1ZXN0ID0gYWRvcHRQdHIobmV3IEJlZ2luRnJhbWVBbmRDb21taXRTdGF0
ZSgpKTsKLSAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+ZnJhbWVCZWdpblRpbWUgPSAw
OworICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5mcmFtZUJlZ2luVGltZSA9IGN1cnJl
bnRUaW1lKCk7CiAgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QtPnNjcm9sbEluZm8gPSBt
X2xheWVyVHJlZUhvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CiAKICAgICBtX21haW5U
aHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFBy
b3h5OjpiZWdpbkZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggOWU1MjRhNzYz
ZTI4NTBmZDIwOWMxM2UzNTI2MTJlYzVjYTMwNDllMS4uZDk4YTgwZmJlYzkyZGFjM2E0ODVmOTQ0
NTkwM2NiZTZlYjFiZjI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNzYsNiArNzYs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFk
KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCk7CiAgICAg
dmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQo
UGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1l
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhy
ZWFkT25JbXBsVGhyZWFkKGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJik7CiAKICAg
ICAvLyBDQ1NjaGVkdWxlckNsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBj
YW5EcmF3KCk7CkBAIC0xMDUsNiArMTA2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEFuaW1h
dGlvbkV2ZW50cyhQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdh
bGxDbG9ja1RpbWUpOwogICAgIHZvaWQgYmVnaW5Db250ZXh0UmVjcmVhdGlvbigpOwogICAgIHZv
aWQgdHJ5VG9SZWNyZWF0ZUNvbnRleHQoKTsKKyAgICB2b2lkIHRyYW5zZmVyV2hlZWxGbGluZ0Fu
aW1hdGlvbihBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyk7CiAKICAgICAvLyBDYWxsZWQgb24g
aW1wbCB0aHJlYWQKICAgICBzdHJ1Y3QgUmVhZGJhY2tSZXF1ZXN0IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsLmNwcAppbmRleCA1MGFmNTFmZDU1ZDAzNzk1MTMwNzdkM2Q0MWVkNGIxZGYwZTg3OThhLi4z
NjUwYjdhMzZhM2FjYzBjMGJkOTAzMDVmZGE1MmIxNGNlNmU1ZjA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGwuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbC5oIgogCisjaW5jbHVkZSAiQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oIgogI2luY2x1ZGUgIlRv
dWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIK
QEAgLTY4LDYgKzY5LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV90YXJnZXQtPnNjcm9sbEJ5KHNj
cm9sbERlbHRhKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIEludFNpemUgY3VtdWxhdGl2ZVNjcm9s
bCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jdXJ2ZS0+Y3VtdWxhdGl2ZVNjcm9s
bCgpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBQbGF0Zm9ybUdlc3R1cmVUb0NDR2VzdHVyZUFk
YXB0ZXIoUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3VydmUpCiAgICAgICAgIDog
bV9jdXJ2ZShjdXJ2ZSkKQEAgLTE4MSw5ICsxODcsOSBAQCBXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6
aAogICAgICAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEVuZCgpOwogICAgICAg
ICAgICAgcmV0dXJuIERpZEhhbmRsZTsKICAgICAgICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVu
dDo6U2Nyb2xsSWdub3JlZDoKLSAgICAgICAgICAgIHJldHVybiBEaWROb3RIYW5kbGU7Ci0gICAg
ICAgIGNhc2UgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZDoKICAgICAgICAgICAg
IHJldHVybiBEcm9wRXZlbnQ7CisgICAgICAgIGNhc2UgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNj
cm9sbEZhaWxlZDoKKyAgICAgICAgICAgIHJldHVybiBEaWROb3RIYW5kbGU7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9s
bEJlZ2luKSB7CiAgICAgICAgIEFTU0VSVCghbV9nZXN0dXJlU2Nyb2xsU3RhcnRlZCk7CkBAIC0y
NTgsMTggKzI2NCwyMCBAQCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNw
b3NpdGlvbiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAogICAgIHN3aXRjaCAoc2Ny
b2xsU3RhdHVzKSB7CiAgICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRl
ZDogewogICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZzo6c3RhcnRlZCIpOwotICAgICAgICBP
d25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGZsaW5nQ3VydmUgPSBUb3VjaEZsaW5nUGxhdGZv
cm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShGbG9hdFBvaW50KC1nZXN0dXJlRXZlbnQuZGVsdGFYLCAt
Z2VzdHVyZUV2ZW50LmRlbHRhWSkpOworICAgICAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3Vy
dmU+IGZsaW5nQ3VydmUgPSBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShG
bG9hdFBvaW50KGdlc3R1cmVFdmVudC5kZWx0YVgsIGdlc3R1cmVFdmVudC5kZWx0YVkpKTsKICAg
ICAgICAgbV93aGVlbEZsaW5nQW5pbWF0aW9uID0gQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOjpj
cmVhdGUoUGxhdGZvcm1HZXN0dXJlVG9DQ0dlc3R1cmVBZGFwdGVyOjpjcmVhdGUoZmxpbmdDdXJ2
ZS5yZWxlYXNlKCkpLCB0aGlzKTsKLSAgICAgICAgbV93aGVlbEZsaW5nUG9pbnQgPSBJbnRQb2lu
dChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpOworICAgICAgICBtX3doZWVsRmxpbmdQ
YXJhbWV0ZXJzLmRlbHRhID0gRmxvYXRTaXplKGdlc3R1cmVFdmVudC5kZWx0YVgsIGdlc3R1cmVF
dmVudC5kZWx0YVkpOworICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnBvaW50ID0gSW50
UG9pbnQoZ2VzdHVyZUV2ZW50LngsIGdlc3R1cmVFdmVudC55KTsKKyAgICAgICAgbV93aGVlbEZs
aW5nUGFyYW1ldGVycy5nbG9iYWxQb2ludCA9IEludFBvaW50KGdlc3R1cmVFdmVudC5nbG9iYWxY
LCBnZXN0dXJlRXZlbnQuZ2xvYmFsWSk7CiAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5z
Y2hlZHVsZUFuaW1hdGlvbigpOwogICAgICAgICByZXR1cm4gRGlkSGFuZGxlOwogICAgIH0KICAg
ICBjYXNlIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxGYWlsZWQ6CiAgICAgICAgIFRSQUNF
X0VWRU5UX0lOU1RBTlQwKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFu
ZGxlR2VzdHVyZUZsaW5nOjpmYWlsZWQiKTsKLSAgICAgICAgcmV0dXJuIERpZE5vdEhhbmRsZTsK
KyAgICAgICAgcmV0dXJuIERyb3BFdmVudDsKICAgICBjYXNlIENDSW5wdXRIYW5kbGVyQ2xpZW50
OjpTY3JvbGxJZ25vcmVkOgogICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZzo6aWdub3JlZCIp
OwotICAgICAgICByZXR1cm4gRHJvcEV2ZW50OworICAgICAgICByZXR1cm4gRGlkTm90SGFuZGxl
OwogICAgIH0KICAgICByZXR1cm4gRGlkTm90SGFuZGxlOwogfQpAQCAtMzA3LDMwICszMTUsMzUg
QEAgdm9pZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkoY29uc3QgSW50
UG9pbnQmIGluY3JlbWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVFJBQ0VfRVZFTlQyKCJj
YyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkiLCAieCIsIGluY3Jl
bWVudC54KCksICJ5IiwgaW5jcmVtZW50LnkoKSk7Ci0KLSAgICBXZWJNb3VzZVdoZWVsRXZlbnQg
ZXZlbnQ7Ci0gICAgZXZlbnQudHlwZSA9IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWw7Ci0gICAg
ZXZlbnQuZGVsdGFYID0gLWluY3JlbWVudC54KCk7Ci0gICAgZXZlbnQuZGVsdGFZID0gLWluY3Jl
bWVudC55KCk7Ci0gICAgZXZlbnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IHRydWU7Ci0g
ICAgZXZlbnQueCA9IG1fd2hlZWxGbGluZ1BvaW50LngoKTsKLSAgICBldmVudC55ID0gbV93aGVl
bEZsaW5nUG9pbnQueSgpOwotCi0gICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2
ZW50RGlzcG9zaXRpb24gZGlzcG9zaXRpb24gPSBoYW5kbGVJbnB1dEV2ZW50SW50ZXJuYWwoZXZl
bnQpOworICAgIFdlYk1vdXNlV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbDsKKyAgICBzeW50aGV0
aWNXaGVlbC50eXBlID0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbDsKKyAgICBzeW50aGV0aWNX
aGVlbC5kZWx0YVggPSBpbmNyZW1lbnQueCgpOworICAgIHN5bnRoZXRpY1doZWVsLmRlbHRhWSA9
IGluY3JlbWVudC55KCk7CisgICAgc3ludGhldGljV2hlZWwuaGFzUHJlY2lzZVNjcm9sbGluZ0Rl
bHRhcyA9IHRydWU7CisgICAgc3ludGhldGljV2hlZWwueCA9IG1fd2hlZWxGbGluZ1BhcmFtZXRl
cnMucG9pbnQueCgpOworICAgIHN5bnRoZXRpY1doZWVsLnkgPSBtX3doZWVsRmxpbmdQYXJhbWV0
ZXJzLnBvaW50LnkoKTsKKyAgICBzeW50aGV0aWNXaGVlbC5nbG9iYWxYPSBtX3doZWVsRmxpbmdQ
YXJhbWV0ZXJzLmdsb2JhbFBvaW50LngoKTsKKyAgICBzeW50aGV0aWNXaGVlbC5nbG9iYWxZID0g
bV93aGVlbEZsaW5nUGFyYW1ldGVycy5nbG9iYWxQb2ludC55KCk7CisgICAgc3ludGhldGljV2hl
ZWwubW9kaWZpZXJzID0gbV93aGVlbEZsaW5nUGFyYW1ldGVycy5tb2RpZmllcnM7CisKKyAgICBX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBkaXNwb3NpdGlv
biA9IGhhbmRsZUlucHV0RXZlbnRJbnRlcm5hbChzeW50aGV0aWNXaGVlbCk7CiAgICAgc3dpdGNo
IChkaXNwb3NpdGlvbikgewogICAgIGNhc2UgRGlkSGFuZGxlOgogICAgIGNhc2UgRHJvcEV2ZW50
OgogICAgICAgICBicmVhazsgCiAgICAgY2FzZSBEaWROb3RIYW5kbGU6CiAgICAgICAgIFRSQUNF
X0VWRU5UX0lOU1RBTlQwKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Ny
b2xsQnk6OkFib3J0RmxpbmciKTsKLSAgICAgICAgLy8gRklYTUU6IElmIHdlIGdvdCBhIERpZE5v
dEhhbmRsZSwgdGhhdCBtZWFucyB3ZSBuZWVkIHRvIGRlbGl2ZXIgd2hlZWxzIG9uIHRoZSBtYWlu
IHRocmVhZC4KKyAgICAgICAgLy8gSWYgd2UgZ290IGEgRGlkTm90SGFuZGxlLCB0aGF0IG1lYW5z
IHdlIG5lZWQgdG8gZGVsaXZlciB3aGVlbHMgb24gdGhlIG1haW4gdGhyZWFkLgogICAgICAgICAv
LyBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0byBzY2hlZHVsZSBhIGNvbW1pdCBhbmQgdHJhbnNmZXIg
dGhlIGZsaW5nIGN1cnZlIG92ZXIgdG8gdGhlIG1haW4KICAgICAgICAgLy8gdGhyZWFkIGFuZCBy
dW4gdGhlIHJlc3Qgb2YgdGhlIHdoZWVscyBmcm9tIHRoZXJlLgogICAgICAgICAvLyBUaGlzIGNh
biBoYXBwZW4gd2hlbiBmbGluZ2luZyBhIHBhZ2UgdGhhdCBjb250YWlucyBhIHNjcm9sbGFibGUg
c3ViYXJlYSB0aGF0IHdlIGNhbid0CiAgICAgICAgIC8vIHNjcm9sbCBvbiB0aGUgdGhyZWFkIGlm
IHRoZSBmbGluZyBzdGFydHMgb3V0c2lkZSB0aGUgc3ViYXJlYSBidXQgdGhlbiBpcyBmbHVuZyAi
dW5kZXIiIHRoZQogICAgICAgICAvLyBwb2ludGVyLgotICAgICAgICAvLyBGb3Igbm93LCBqdXN0
IGFib3J0IHRoZSBmbGluZy4KKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5zdGFydFRp
bWUgPSBtX3doZWVsRmxpbmdBbmltYXRpb24tPnN0YXJ0VGltZSgpOworICAgICAgICBtX3doZWVs
RmxpbmdQYXJhbWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGwgPSBtX3doZWVsRmxpbmdBbmltYXRpb24t
PmN1bXVsYXRpdmVTY3JvbGwoKTsKKyAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnRyYW5z
ZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihtX3doZWVsRmxpbmdQYXJhbWV0ZXJzKTsKICAgICAgICAg
Y2FuY2VsQ3VycmVudEZsaW5nKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsLmgKaW5kZXggZDk2MTk1ODdkM2Y1ODg2M2VjZTczZGVmYjBjZDRmODE3ZDdjNDI3
My4uMWUzOGUyNGU0NmFiYTg3OGM1NmY2NWFjY2YyZjllNmNiNjI0OTAyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsX2gKICNkZWZpbmUgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxfaAogCi0j
aW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgpAQCAtNDEsNiArNDEs
NyBAQCBjbGFzcyBNdXRleDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW50UG9p
bnQ7CiBjbGFzcyBDQ0dlc3R1cmVDdXJ2ZVRhcmdldDsKIGNsYXNzIENDSW5wdXRIYW5kbGVyQ2xp
ZW50OwogY2xhc3MgQ0NUaHJlYWQ7CkBAIC04NCw3ICs4NSw4IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBjYW5jZWxDdXJyZW50RmxpbmcoKTsKIAogICAgIE93blB0cjxXZWJDb3JlOjpDQ0FjdGl2ZUdl
c3R1cmVBbmltYXRpb24+IG1fd2hlZWxGbGluZ0FuaW1hdGlvbjsKLSAgICBXZWJDb3JlOjpJbnRQ
b2ludCBtX3doZWVsRmxpbmdQb2ludDsgLy8gUG9pbnRlciBwb3NpdGlvbiBmb3IgdGhlIGN1cnJl
bnQgZmxpbmcuIAorICAgIC8vIFBhcmFtZXRlcnMgZm9yIHRoZSBhY3RpdmUgZmxpbmcgYW5pbWF0
aW9uLCBzdG9yZWQgaW4gY2FzZSB3ZSBuZWVkIHRvIHRyYW5zZmVyIGl0IG91dCBsYXRlci4KKyAg
ICBXZWJDb3JlOjpBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyBtX3doZWVsRmxpbmdQYXJhbWV0
ZXJzOwogCiAgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudCogbV9jbGllbnQ7CiAg
ICAgaW50IG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAppbmRleCAzMzU4NzliNjYwNTM0YTRiYzc1N2U1MTc3
NGYzMmZmZGM2N2U3ZmVjLi42YzhkNmVkM2E4ZTcxMGViMmExNjIxYjA0YzZmMTdkMDZkOWIyNzQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmll
d0ltcGwuY3BwCkBAIC0yNiwxNiArMjYsMjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJMYXllclRyZWVWaWV3SW1wbC5oIgogCisjaW5jbHVkZSAiQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJDQ1RocmVhZEltcGwuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5j
bHVkZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkdyYXBoaWNz
Q29udGV4dDNELmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXIuaCIKLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXJU
cmVlVmlld0NsaWVudC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJUaHJlYWQuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnMuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRQb2ludC5oPgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJMYXllci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
UG9pbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU2l6ZS5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApAQCAtMTA3LDYgKzExMSwyMCBAQCB2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBs
OjpkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkKICAgICAgICAgbV9jbGllbnQtPmRpZENvbXBsZXRl
U3dhcEJ1ZmZlcnMoKTsKIH0KIAordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6dHJhbnNmZXJX
aGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQoreworICAgIGlmIChtX2NsaWVudCkgeworICAgICAgICBXZWJBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVycyB3ZWJQYXJhbWV0ZXJzOworICAgICAgICB3ZWJQYXJhbWV0ZXJzLmRlbHRh
ID0gV2ViRmxvYXRQb2ludChwYXJhbWV0ZXJzLmRlbHRhLndpZHRoKCksIHBhcmFtZXRlcnMuZGVs
dGEuaGVpZ2h0KCkpOworICAgICAgICB3ZWJQYXJhbWV0ZXJzLnBvaW50ID0gcGFyYW1ldGVycy5w
b2ludDsKKyAgICAgICAgd2ViUGFyYW1ldGVycy5nbG9iYWxQb2ludCA9IHBhcmFtZXRlcnMucG9p
bnQ7CisgICAgICAgIHdlYlBhcmFtZXRlcnMubW9kaWZpZXJzID0gcGFyYW1ldGVycy5tb2RpZmll
cnM7CisgICAgICAgIHdlYlBhcmFtZXRlcnMuc3RhcnRUaW1lID0gcGFyYW1ldGVycy5zdGFydFRp
bWU7CisgICAgICAgIHdlYlBhcmFtZXRlcnMuY3VtdWxhdGl2ZVNjcm9sbCA9IHBhcmFtZXRlcnMu
Y3VtdWxhdGl2ZVNjcm9sbDsKKyAgICAgICAgbV9jbGllbnQtPnRyYW5zZmVyV2hlZWxGbGluZ0Fu
aW1hdGlvbih3ZWJQYXJhbWV0ZXJzKTsKKyAgICB9Cit9CisKIHZvaWQgV2ViTGF5ZXJUcmVlVmll
d0ltcGw6OnNjaGVkdWxlQ29tcG9zaXRlKCkKIHsKICAgICBpZiAobV9jbGllbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaAppbmRleCBi
MWIyNmQwZmMzMzg2MDRmZTVjZjM4MDcxZjUwYThjMzU4NjQ1MmZiLi42YTk0OTQyZjA5M2EyYWY0
NTdkOTExZTM3OTRiMzkzODA2MGE4YzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKQEAgLTMwLDYgKzMwLDEwIEBACiAjaW5jbHVk
ZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAor
bmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOwor
fQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkxheWVyOwogY2xhc3MgV2ViTGF5ZXJU
cmVlVmlld0NsaWVudDsKQEAgLTQ4LDYgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3VjY2Vzcyk7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENvbW1pdEFuZERyYXdGcmFtZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3YXBC
dWZmZXJzKCk7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihj
b25zdCBXZWJDb3JlOjpBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpOwogCiAgICAgLy8gT25s
eSB1c2VkIGluIHRoZSBzaW5nbGUgdGhyZWFkZWQgcGF0aC4KICAgICB2aXJ0dWFsIHZvaWQgc2No
ZWR1bGVDb21wb3NpdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAppbmRleCAyYjk2MDYzN2YxODcwMzI4ZWM1M2ZjMzdkNGE4MDMzZDYxNjcwNjliLi5lOGU1
MDI0ZTZhMTNkNDMyNTMwZTFkOTIzMjYzZjU1ZDRmNTBkM2RkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0zMSwxMSArMzEsMTAgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogCisjaW5jbHVkZSAiQVhPYmpl
Y3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5oIgog
I2luY2x1ZGUgIkF1dG9maWxsUG9wdXBNZW51Q2xpZW50LmgiCi0jaW5jbHVkZSAiQVhPYmplY3RD
YWNoZS5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdENocm9taXVtLmgiCi0jaW5jbHVkZSAi
Y2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJD
U1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCkBAIC0xMjAsMzIgKzExOSwz
NSBAQAogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JJbXBsLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9v
bHNBZ2VudEltcGwuaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50UHJpdmF0ZS5oIgotI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgi
Ci0jaW5jbHVkZSAicGxhdGZvcm0vV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgogI2luY2x1
ZGUgIldlYklucHV0RXZlbnQuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5o
IgogI2luY2x1ZGUgIldlYktpdC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYktpdFBsYXRmb3Jt
U3VwcG9ydC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyLmgiCi0jaW5jbHVkZSAicGxh
dGZvcm0vV2ViTGF5ZXJUcmVlVmlldy5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyQWN0aW9u
LmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5oIgogI2luY2x1ZGUgIldlYlBsdWdpbi5oIgogI2luY2x1
ZGUgIldlYlBsdWdpbkFjdGlvbi5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5lckltcGwu
aCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQb2ludC5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVu
dUltcGwuaCIKICNpbmNsdWRlICJXZWJSYW5nZS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlJl
Y3QuaCIKICNpbmNsdWRlICJXZWJSdW50aW1lRmVhdHVyZXMuaCIKICNpbmNsdWRlICJXZWJTZXR0
aW5nc0ltcGwuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJWZWN0b3IuaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJEcmFnRGF0YS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkltYWdlLmgiCisjaW5j
bHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCisjaW5jbHVk
ZSA8cHVibGljL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYkZsb2F0UG9pbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0
M0QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
TGF5ZXJUcmVlVmlldy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJQb2ludC5oPgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJSZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC00MTIs
NiArNDE0LDkgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVu
dCkKICNlbmRpZgogCiAgICAgbV9pbnNwZWN0b3JTZXR0aW5nc01hcCA9IGFkb3B0UHRyKG5ldyBT
ZXR0aW5nc01hcCk7CisKKyAgICBtX2xhc3RXaGVlbFBvc2l0aW9uID0gV2ViUG9pbnQoLTEsIC0x
KTsKKyAgICBtX2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9uID0gV2ViUG9pbnQoLTEsIC0xKTsKIH0K
IAogV2ViVmlld0ltcGw6On5XZWJWaWV3SW1wbCgpCkBAIC02MzEsNiArNjM2LDcgQEAgYm9vbCBX
ZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiB7
CiAgICAgc3dpdGNoIChldmVudC50eXBlKSB7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlRmxpbmdTdGFydDogeworICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMigid2Via2l0Iiwg
IldlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0IiwgImRlbHRhWCIs
IGV2ZW50LmRlbHRhWCwgImRlbHRhWSIsIGV2ZW50LmRlbHRhWSk7CiAgICAgICAgIG1fbGFzdFdo
ZWVsUG9zaXRpb24gPSBXZWJQb2ludChldmVudC54LCBldmVudC55KTsKICAgICAgICAgbV9sYXN0
V2hlZWxHbG9iYWxQb3NpdGlvbiA9IFdlYlBvaW50KGV2ZW50Lmdsb2JhbFgsIGV2ZW50Lmdsb2Jh
bFkpOwogICAgICAgICBtX2ZsaW5nTW9kaWZpZXIgPSBldmVudC5tb2RpZmllcnM7CkBAIC02NDAs
NiArNjQ2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1
cmVFdmVudCYgZXZlbnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBjYXNlIFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDoKKyAgICAgICAgVFJBQ0VfRVZFTlRfSU5T
VEFOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50OjpHZXN0dXJlRmxpbmdD
YW5jZWwiKTsKICAgICAgICAgbV9nZXN0dXJlQW5pbWF0aW9uLmNsZWFyKCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgpA
QCAtNjYwLDYgKzY2NywxOCBAQCBib29sIFdlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQoY29uc3Qg
V2ViR2VzdHVyZUV2ZW50JiBldmVudCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgV2Vi
Vmlld0ltcGw6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVl
bEZsaW5nUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBUUkFDRV9FVkVOVF9JTlNUQU5U
MCgid2Via2l0IiwgIldlYlZpZXdJbXBsOjp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24iKTsK
KyAgICBBU1NFUlQoIW1fZ2VzdHVyZUFuaW1hdGlvbik7CisgICAgbV9sYXN0V2hlZWxQb3NpdGlv
biA9IHBhcmFtZXRlcnMucG9pbnQ7CisgICAgbV9sYXN0V2hlZWxHbG9iYWxQb3NpdGlvbiA9IHBh
cmFtZXRlcnMuZ2xvYmFsUG9pbnQ7CisgICAgLy8gRklYTUU6IHN0b3JlIHBhcmFtZXRlcnMubW9k
aWZpZXJzCisgICAgT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjdXJ2ZSA9IFRvdWNoRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKHBhcmFtZXRlcnMuZGVsdGEsIHBhcmFtZXRl
cnMuY3VtdWxhdGl2ZVNjcm9sbCk7CisgICAgbV9nZXN0dXJlQW5pbWF0aW9uID0gQWN0aXZlUGxh
dGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGUoY3VydmUucmVsZWFzZSgpLCB0aGlzLCBwYXJh
bWV0ZXJzLnN0YXJ0VGltZSk7CisgICAgc2NoZWR1bGVBbmltYXRpb24oKTsKK30KKwogdm9pZCBX
ZWJWaWV3SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9s
bCwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCiB7
CiAgICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpCkBAIC0xMzMzLDYgKzEzNTIsMTcg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRp
bWUpCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQogICAgIFRSQUNFX0VWRU5U
KCJXZWJWaWV3SW1wbDo6dXBkYXRlQW5pbWF0aW9ucyIsIHRoaXMsIDApOwogCisgICAgLy8gQ3Jl
YXRlIHN5bnRoZXRpYyB3aGVlbCBldmVudHMgYXMgbmVjZXNzYXJ5IGZvciBmbGluZy4KKyAgICBp
ZiAobV9nZXN0dXJlQW5pbWF0aW9uKSB7CisgICAgICAgIGlmIChtX2dlc3R1cmVBbmltYXRpb24t
PmFuaW1hdGUoZnJhbWVCZWdpblRpbWUpKSB7CisgICAgICAgICAgICBUUkFDRV9FVkVOVF9JTlNU
QU5UMCgid2Via2l0IiwgIldlYlZpZXdJbXBsOjphbmltYXRlOjpmbGluZyBjb250aW51ZSIpOwor
ICAgICAgICAgICAgc2NoZWR1bGVBbmltYXRpb24oKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJ3ZWJraXQiLCAiV2ViVmlld0ltcGw6OmFuaW1h
dGU6OmZsaW5nIG92ZXIiKTsKKyAgICAgICAgICAgIG1fZ2VzdHVyZUFuaW1hdGlvbi5jbGVhcigp
OworICAgICAgICB9CisgICAgfQorCiAgICAgV2ViRnJhbWVJbXBsKiB3ZWJmcmFtZSA9IG1haW5G
cmFtZUltcGwoKTsKICAgICBpZiAoIXdlYmZyYW1lKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCAyMjkzOGFkNmJkNmM0OTc1Zjc0
ZmUzN2U0MTU0ODdmZWVjYTEyMTViLi5lNWFmMTBjNmUyNTk3YzliYmFlNTAzN2Y0MzM3OTQ3ODc5
NDYxMGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTI2
MSw2ICsyNjEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdG
cmFtZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7CiAgICAg
dmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCk7CisgICAgdmlydHVhbCB2b2lkIHRyYW5z
ZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
cyYpOworCiAKICAgICAvLyBXZWJWaWV3SW1wbAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IGExOTJi
YTU1N2JmMGVhMTZjMjFlNGMwNDI0MmNiMjVkMDkwYTE3NjMuLmE0YWViMDZiMGQ3NWE2ZTdjYzI1
ZGYzZWUxZWY3MWMwZWYyOTJmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC01NCw2ICs1NCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSB7
IG1fZGlkUmVxdWVzdFJlZHJhdyA9IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHND
b21taXRPbkltcGxUaHJlYWQoKSB7IG1fZGlkUmVxdWVzdENvbW1pdCA9IHRydWU7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQ
YXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb25Ub01haW5U
aHJlYWRPbkltcGxUaHJlYWQoY29uc3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSB7IH0K
IAogICAgIHN0YXRpYyB2b2lkIGV4cGVjdENsZWFyZWRTY3JvbGxEZWx0YXNSZWN1cnNpdmUoQ0NM
YXllckltcGwqIGxheWVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDcwMmJiZjE2MzliNDNiMTZhZWYz
YWJiNjYwNjI5MDQ5OGMwZDY2MTUuLjI1YWQyMmI1NTg0NDJlMmI0OWVkZWJhM2U4MDc3ZTZiY2I1
ZjcxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RUZXN0LmNwcApAQCAtMjU2LDYgKzI1Niw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
fQogCisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBB
Y3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpIHsgfQorCisKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgTW9ja0xheWVyVHJlZUhvc3RDbGllbnQoVGVzdEhvb2tzKiB0ZXN0SG9va3MpIDogbV90ZXN0
SG9va3ModGVzdEhvb2tzKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaAppbmRleCAzODg3NmQ3MzdmYjUy
YWE2ZDAzYzcxYmZmZTQxNzI4YzhjY2NmMGI1Li44ZGRiMTBhOGEyNTljYTZkOTBmMGIzYmQyZjNl
ZWJjZmUwYWVhODgyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zh
a2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaApAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dChib29sIHN1Y2Nlc3MpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0cmFu
c2ZlcldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMm
KSB7IH0KIAogICAgIC8vIFVzZWQgb25seSBpbiB0aGUgc2luZ2xlLXRocmVhZGVkIHBhdGguCiAg
ICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsVGVzdC5jcHAKaW5kZXggNTc2ZjcwYTliZDY5YzUxNmZjZGQ1ODg2OGViMDJhOTlj
MGM4ZjNiNC4uMzZiMTk5ZTM0YTM1YjZkZWQwNWU5NmJiOGYzYjMzOTlhMjI4Y2FjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcApAQCAtNjIsNiArNjIsOCBAQCBwdWJsaWM6
CiAgICAgTU9DS19NRVRIT0QxKHNjcm9sbEJ5LCB2b2lkKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
KSk7CiAgICAgTU9DS19NRVRIT0QwKHNjcm9sbEVuZCwgdm9pZCgpKTsKIAorICAgIE1PQ0tfTUVU
SE9EMSh0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24sIHZvaWQoY29uc3QgV2ViQ29yZTo6QWN0
aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSk7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRhcmdldFBv
c2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFu
Y2hvclBvaW50LApAQCAtMjgzLDcgKzI4NSwxNSBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdBbmltYXRlcykKICAgICAvLyBPbiB0aGUgZmxp
bmcgc3RhcnQsIHdlIHNob3VsZCBzY2hlZHVsZSBhbiBhbmltYXRpb24gYnV0IG5vdCBhY3R1YWxs
eSBzdGFydAogICAgIC8vIHNjcm9sbGluZy4KICAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6Oldl
YklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OwotICAgIGdlc3R1cmUuZGVsdGFYID0gLTEw
MDA7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIGZsaW5nRGVsdGEgPSBXZWJDb3JlOjpGbG9hdFNp
emUoMTAwMCwgMCk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgZmxpbmdQb2ludCA9IFdlYkNvcmU6
OkludFBvaW50KDcsIDEzKTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBmbGluZ0dsb2JhbFBvaW50
ID0gV2ViQ29yZTo6SW50UG9pbnQoMTcsIDIzKTsKKyAgICBnZXN0dXJlLmRlbHRhWCA9IGZsaW5n
RGVsdGEud2lkdGgoKTsKKyAgICBnZXN0dXJlLmRlbHRhWSA9IGZsaW5nRGVsdGEuaGVpZ2h0KCk7
CisgICAgZ2VzdHVyZS54ID0gZmxpbmdQb2ludC54KCk7CisgICAgZ2VzdHVyZS55ID0gZmxpbmdQ
b2ludC55KCk7CisgICAgZ2VzdHVyZS5nbG9iYWxYID0gZmxpbmdHbG9iYWxQb2ludC54KCk7Cisg
ICAgZ2VzdHVyZS5nbG9iYWxZID0gZmxpbmdHbG9iYWxQb2ludC55KCk7CiAgICAgRVhQRUNUX0NB
TEwobV9tb2NrQ2xpZW50LCBkaWRIYW5kbGVJbnB1dEV2ZW50KCkpOwogICAgIEVYUEVDVF9DQUxM
KG1fbW9ja0lucHV0SGFuZGxlciwgc2NoZWR1bGVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0NB
TEwobV9tb2NrSW5wdXRIYW5kbGVyLCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpf
KSkKQEAgLTI5OCwyOSArMzA4LDQ1IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbFRlc3QsIGdlc3R1cmVGbGluZ0FuaW1hdGVzKQogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lu
cHV0SGFuZGxlciwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDAp
OwogICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwKTsKIAotICAgIC8vIFRoZSBzZWNvbmQg
Y2FsbCBzaG91bGQgc3RhcnQgc2Nyb2xsaW5nIGluIHRoZSArWCBkaXJlY3Rpb24uCisgICAgLy8g
VGhlIHNlY29uZCBjYWxsIHNob3VsZCBzdGFydCBzY3JvbGxpbmcgaW4gdGhlIC1YIGRpcmVjdGlv
bi4KICAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXIsIHNjaGVkdWxlQW5pbWF0aW9u
KCkpOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlciwgc2Nyb2xsQmVnaW4odGVz
dGluZzo6XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4o
V2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKLSAgICBFWFBF
Q1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXIsIHNjcm9sbEJ5KHRlc3Rpbmc6OlByb3BlcnR5KCZX
ZWJDb3JlOjpJbnRTaXplOjp3aWR0aCwgdGVzdGluZzo6R3QoMCkpKSk7CisgICAgRVhQRUNUX0NB
TEwobV9tb2NrSW5wdXRIYW5kbGVyLCBzY3JvbGxCeSh0ZXN0aW5nOjpQcm9wZXJ0eSgmV2ViQ29y
ZTo6SW50U2l6ZTo6d2lkdGgsIHRlc3Rpbmc6Okx0KDApKSkpOwogICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0lucHV0SGFuZGxlciwgc2Nyb2xsRW5kKCkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5hbmlt
YXRlKDEwLjEpOwogCiAgICAgLy8gTGV0J3Mgc2F5IG9uIHRoZSB0aGlyZCBjYWxsIHdlIGhpdCBh
IG5vbi1zY3JvbGxhYmxlIHJlZ2lvbi4gV2Ugc2hvdWxkIGFib3J0IHRoZSBmbGluZyBhbmQgbm90
IHNjcm9sbC4KLSAgICAvLyBGSVhNRTogV2UgYWxzbyBuZWVkIHRvIGRvIHNvbWUgd29yayB0byB0
cmFuc2ZlciB0aGUgcmVzdCBvZiB0aGlzIGZsaW5nIHRvIHRoZSBtYWluIHRocmVhZC4KLSAgICAv
LyBBZGQgdGVzdHMgZm9yIHRoaXMgb25jZSBpdCdzIGltcGxlbWVudGVkLgorICAgIC8vIFdlIGFs
c28gc2hvdWxkIHBhc3MgdGhlIGN1cnJlbnQgZmxpbmcgcGFyYW1ldGVycyBvdXQgdG8gdGhlIGNs
aWVudCBzbyB0aGUgcmVzdCBvZiB0aGUgZmxpbmcgY2FuIGJlCisgICAgLy8gdHJhbnNmZXJyZWQg
dG8gdGhlIG1haW4gdGhyZWFkLgogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlciwg
c2NoZWR1bGVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVy
LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKLSAgICAgICAgLldpbGxPbmNl
KHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsSWdu
b3JlZCkpOworICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5w
dXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxGYWlsZWQpKTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tJ
bnB1dEhhbmRsZXIsIHNjcm9sbEJ5KHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKICAgICBFWFBFQ1Rf
Q0FMTChtX21vY2tJbnB1dEhhbmRsZXIsIHNjcm9sbEVuZCgpKS5UaW1lcygwKTsKKyAgICAvLyBF
eHBlY3RlZCB3aGVlbCBmbGluZyBhbmltYXRpb24gcGFyYW1ldGVyczoKKyAgICAvLyAqKSBmbGlu
Z0RlbHRhIGFuZCBmbGluZ1BvaW50IHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwgR2VzdHVyZUZs
aW5nU3RhcnQgZXZlbnQKKyAgICAvLyAqKSBzdGFydFRpbWUgc2hvdWxkIGJlIDEwIHRvIG1hdGNo
IHRoZSB0aW1lIHBhcmFtZXRlciBvZiB0aGUgZmlyc3QgYW5pbWF0ZSgpIGNhbGwgYWZ0ZXIgdGhl
IEdlc3R1cmVGbGluZ1N0YXJ0CisgICAgLy8gKikgY3VtdWxhdGl2ZVNjcm9sbCBkZXBlbmRzIG9u
IHRoZSBjdXJ2ZSwgYnV0IHNpbmNlIHdlJ3ZlIGFuaW1hdGVkIGluIHRoZSAtWCBkaXJlY3Rpb24g
dGhlIFggdmFsdWUgc2hvdWxkIGJlIDwgMAorICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFu
ZGxlciwgdHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKHRlc3Rpbmc6OkFsbE9mKAorICAgICAg
ICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmRl
bHRhLCB0ZXN0aW5nOjpFcShmbGluZ0RlbHRhKSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZX
ZWJDb3JlOjpBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6cG9pbnQsIHRlc3Rpbmc6OkVxKGZs
aW5nUG9pbnQpKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkNvcmU6OkFjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzOjpnbG9iYWxQb2ludCwgdGVzdGluZzo6RXEoZmxpbmdHbG9iYWxQb2lu
dCkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6QWN0aXZlV2hlZWxGbGluZ1Bh
cmFtZXRlcnM6OnN0YXJ0VGltZSwgdGVzdGluZzo6RXEoMTApKSwKKyAgICAgICAgdGVzdGluZzo6
RmllbGQoJldlYkNvcmU6OkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpjdW11bGF0aXZlU2Ny
b2xsLAorICAgICAgICAgICAgdGVzdGluZzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6Ondp
ZHRoLCB0ZXN0aW5nOjpHdCgwKSkpKSkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEw
LjIpOwogCi0gICAgLy8gU2luY2Ugd2UndmUgYWJvcnRlZCB0aGUgZmxpbmcsIHRoZSBuZXh0IGFu
aW1hdGlvbiBzaG91bGQgYmUgYSBuby1vcCBhbmQgc2hvdWxkIG5vdCByZXN1bHQgaW4gYW5vdGhl
cgotICAgIC8vIGZyYW1lIGJlaW5nIHJlcXVlc3RlZC4KKyAgICAvLyBPbmNlIHRoZSBmbGluZyBp
cyB0cmFuc2ZlcnJlZCwgd2Ugc2hvdWxkIHN0b3Agc2Nyb2xsaW5nLgogICAgIEVYUEVDVF9DQUxM
KG1fbW9ja0lucHV0SGFuZGxlciwgc2NoZWR1bGVBbmltYXRpb24oKSkuVGltZXMoMCk7CiAgICAg
RVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyLCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0
ZXN0aW5nOjpfKSkuVGltZXMoMCk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMyk7
CisKKyAgICAvLyBTaW5jZSB3ZSd2ZSB0cmFuc2ZlcnJlZCB0aGUgZmxpbmcgdG8gdGhlIG1haW4g
dGhyZWFkLCB3ZSBuZWVkIHRvIHBhc3MgdGhlIG5leHQgR2VzdHVyZUZsaW5nQ2FuY2VsIHRvIHRo
ZSBtYWluCisgICAgLy8gdGhyZWFkIGFzIHdlbGwuCisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xp
ZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KHRydWUpKTsKKyAgICBnZXN0dXJlLnR5cGUgPSBX
ZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDsKKyAgICBtX2lucHV0SGFu
ZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132658</attachid>
            <date>2012-03-19 13:47:44 -0700</date>
            <delta_ts>2012-03-19 17:29:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81479-20120319134743.patch</filename>
            <type>text/plain</type>
            <size>56550</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBiMTE5MjEzZGE4M2Y2
ZGU5NTEzYWIxMzk5ZTIzNjRlMDYxY2MxN2QzLi43NjhhYzNhYjU0OWE4NWI0YzNjNmU4OTFhNWIy
ZjNiMjllNWE2NzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMy0xOSAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gVHJhbnNmZXIgd2hlZWwgZmxpbmdzIHRvIG1haW4gdGhyZWFkIGlmIHdlIGhpdCBhIHJlZ2lv
biB0aGF0IGNhbid0IGJlIHNjcm9sbGVkIGZyb20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQ3OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYkxheWVyVHJlZVZpZXdD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Q2xpZW50Ojp0cmFuc2Zl
cldoZWVsRmxpbmdBbmltYXRpb24pOgorCiAyMDEyLTAzLTE5ICBEYXZpZCBSZXZlbWFuICA8cmV2
ZW1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBHTF9FWFRfb2NjbHVzaW9u
X3F1ZXJ5X2Jvb2xlYW4gYW5kIEdMX0NIUk9NSVVNX2NvbW1hbmRfYnVmZmVyX3F1ZXJ5IHN1cHBv
cnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggZThlMWExM2U5ZTY5NWFkMjA4NjRhMWI2YjZhNTRmOTJiYTcyNWZh
Mi4uNDFiODUzMWI4YjIyZTY4ZDk3MGI5ZTMzZWI3Y2Q4ODA1MTJiNDljYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDY0IEBACisyMDEyLTAzLTE5ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBUcmFuc2ZlciB3aGVlbCBmbGluZ3MgdG8g
bWFpbiB0aHJlYWQgaWYgd2UgaGl0IGEgcmVnaW9uIHRoYXQgY2FuJ3QgYmUgc2Nyb2xsZWQgZnJv
bSB0aGUgY29tcG9zaXRvciB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxNDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OkFj
dGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vQWN0aXZl
UGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmg6CisgICAgICAgIChBY3RpdmVQbGF0Zm9ybUdlc3R1
cmVBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVDdXJ2
ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSk6
CisgICAgICAgICogcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oOgorICAgICAgICAo
VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNo
RmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3VtdWxhdGl2ZVNjcm9sbCk6CisgICAgICAgICog
cGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmg6CisgICAgICAgIChXZWJD
b3JlOjpXaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmN1bXVsYXRpdmVTY3JvbGwpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlR2VzdHVyZUFu
aW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb246
OmN1bXVsYXRpdmVTY3JvbGwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb246OnN0YXJ0VGltZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHZXN0dXJlQ3VydmUuaDoKKyAg
ICAgICAgKENDR2VzdHVyZUN1cnZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdENsaWVudCk6CisgICAgICAgIChDQ0xheWVy
VHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3RJbXBsOjp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQpOgorICAgICAgICAoQ0NMYXll
clRyZWVIb3N0SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQ
cm94eTo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFkT25JbXBsVGhyZWFk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnRyYW5zZmVyV2hlZWxGbGlu
Z0FuaW1hdGlvblRvTWFpblRocmVhZE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25C
ZWdpbkZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKwogMjAxMi0wMy0xOCAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
SW1wbGVtZW50IGZsaW5nLWJ5LXdoZWVsIG9uIGNvbXBvc2l0b3IgdGhyZWFkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IDk3NjM0NjYwNGJiMjMzMDQzNDJmODMxZWU1MTRjMTVmMWE3YjZi
OTkuLjgwOGRlN2I2ODIyYTUwYmM2OGI1NjhjNzJiZWE0ZmFhN2RkZjRjOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTItMDMtMTkgIEphbWVzIFJvYmlu
c29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFRyYW5zZmVy
IHdoZWVsIGZsaW5ncyB0byBtYWluIHRocmVhZCBpZiB3ZSBoaXQgYSByZWdpb24gdGhhdCBjYW4n
dCBiZSBzY3JvbGxlZCBmcm9tIHRoZSBjb21wb3NpdG9yIHRocmVhZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0NzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVUb0NDR2Vz
dHVyZUFkYXB0ZXI6OmN1bXVsYXRpdmVTY3JvbGwpOgorICAgICAgICAoUGxhdGZvcm1HZXN0dXJl
VG9DQ0dlc3R1cmVBZGFwdGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGw6OmhhbmRsZUlucHV0RXZlbnRJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkpOgor
ICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oOgorICAgICAgICAq
IHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
VHJlZVZpZXdJbXBsOjp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24pOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaDoKKyAgICAgICAgKFdl
YkxheWVyVHJlZVZpZXdJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6c2Nyb2xsQnkpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViVmlld0ltcGwpOgorICAgICAgICAqIHRlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q0NMYXllclRyZWVI
b3N0SW1wbFRlc3Q6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvblRvTWFpblRocmVhZE9uSW1w
bFRocmVhZCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAg
ICAgIChXVEY6Ok1vY2tMYXllclRyZWVIb3N0Q2xpZW50Ojp0cmFuc2ZlcldoZWVsRmxpbmdBbmlt
YXRpb24pOgorICAgICAgICAoTW9ja0xheWVyVHJlZUhvc3RDbGllbnQpOgorICAgICAgICAqIHRl
c3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZha2VD
Q0xheWVyVHJlZUhvc3RDbGllbnQ6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbik6CisgICAg
ICAgICogdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcDoKKwogMjAx
Mi0wMy0xOCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gSW1wbGVtZW50IGZsaW5nLWJ5LXdoZWVsIG9uIGNvbXBvc2l0b3IgdGhyZWFk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0
Zm9ybS9QbGF0Zm9ybS5neXBpCmluZGV4IGFmYTE0NzEzZjVkNmFhY2I4MzE5ZDc1YTY3NzM2YTZm
MjNiMTM0OWEuLjhlY2Y4ODEzYTA2ZmE3NjNhNjQyZDRmODZhY2I5ZTg1YWIzMGNjNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9QbGF0Zm9ybS5neXBpCkBAIC0zMSw2ICszMSw3IEBACiB7CiAgICAgJ3ZhcmlhYmxlcyc6IHsK
ICAgICAgICAgJ3BsYXRmb3JtX2ZpbGVzJzogWworICAgICAgICAgICAgJ2Nocm9taXVtL3B1Ymxp
Yy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViQ1N0cmluZy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
Q2FudmFzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb2xvci5oJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0
aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTQ1OTZlNjJkZTNkODk4Nzg4
NTg4NDA4MGQyMjRlZTg1ZTEzYzY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oCkBAIC0wLDAg
KzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzX2gK
KyNkZWZpbmUgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnNfaAorCisjaW5jbHVkZSAiV2Vi
Q29tbW9uLmgiCisKKyNpbmNsdWRlICJXZWJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiV2ViUG9p
bnQuaCIKKyNpbmNsdWRlICJXZWJTaXplLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1
Y3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMgeworICAgIFdlYkZsb2F0UG9pbnQgZGVs
dGE7CisgICAgV2ViUG9pbnQgcG9pbnQ7CisgICAgV2ViUG9pbnQgZ2xvYmFsUG9pbnQ7CisgICAg
aW50IG1vZGlmaWVyczsKKyAgICBXZWJTaXplIGN1bXVsYXRpdmVTY3JvbGw7CisgICAgZG91Ymxl
IHN0YXJ0VGltZTsKKworICAgIFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKCkKKyAgICAg
ICAgOiBtb2RpZmllcnMoMCkKKyAgICAgICAgLCBzdGFydFRpbWUoMCkKKyAgICB7CisgICAgfQor
fTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmgKaW5kZXggNWMwYjllZjlhMmEyYzYxM2Ix
MTkwMGMxM2Y4OThmMjI4MzliNDY1Yi4uNDhiZDlkY2Y5NzNhNzE3YTI3YjkxOTc1ZjU1YmU4NjBj
MzI0NDM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJM
YXllclRyZWVWaWV3Q2xpZW50LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV2Vi
TGF5ZXJUcmVlVmlld0NsaWVudF9oCiAKIG5hbWVzcGFjZSBXZWJLaXQgeworc3RydWN0IFdlYkFj
dGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOwogY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CiBz
dHJ1Y3QgV2ViU2l6ZTsKIGNsYXNzIFdlYlRocmVhZDsKQEAgLTU1LDYgKzU2LDExIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgPSAwOwogCisgICAgLy8gVHJhbnNm
ZXJzIGFuIGluLXByb2dyZXNzIHdoZWVsIGZsaW5nIGFuaW1hdGlvbiB0aGF0IHRoZSBXZWJMYXll
clRyZWVWaWV3CisgICAgLy8gY2FuIG5vIGxvbmdlciBhZHZhbmNlIHRvIHRoZSBjbGllbnQgdG8g
ZmluaXNoIG91dC4KKyAgICAvLyBGSVhNRTogUmVtb3ZlIGRlZmF1bHQgaW1wbCB3aGVuIGNsaWVu
dHMgYXJlIGFsbCB1cGRhdGVkCisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyV2hlZWxGbGluZ0Fu
aW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpIHsgfQorCiAgICAg
Ly8gU2NoZWR1bGVzIGEgY29tcG9zaXRpbmcgcGFzcywgbWVhbmluZyB0aGUgY2xpZW50IHNob3Vs
ZCBjYWxsCiAgICAgLy8gV2ViTGF5ZXJUcmVlVmlldzo6Y29tcG9zaXRlIGF0IGEgbGF0ZXIgdGlt
ZS4gVGhpcyBpcyBvbmx5IGNhbGxlZCBpZiB0aGUKICAgICAvLyBjb21wb3NpdG9yIHRocmVhZCBp
cyBkaXNhYmxlZDsgd2hlbiBlbmFibGVkLCB0aGUgY29tcG9zaXRvciB3aWxsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggMDZiZjlmMDcwYmY4NmY3ZGViNGYwN2E0MjBmM2FjZmU5YmJhMmU5Ni4uZTY1Yjdi
MDBjZDZiNzNlMDJjYjZlYTgwNDMzZjdhZTg0NDM4Y2YyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MzM1OCw2ICszMzU4LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRo
Q0cuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1hdGlvbk1hdHJp
eENHLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQWN0aXZl
V2hlZWxGbGluZ1BhcmFtZXRlcnMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5j
cHAKaW5kZXggMThlYzdlYjM0YWUyZTRlMDdiNTZjMTRhM2UwMmEzMzc4YmFkOWQ1MC4uNmEwMTNh
ZGZiNDQ1ZDZkYzk1M2Q0Mzk3OGY0OTg1MDEzN2NjMGVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uY3Bw
CkBAIC0zNyw2ICszNywxMSBAQCBQYXNzT3duUHRyPEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1h
dGlvbj4gQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpjcmVhdAogICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKGN1cnZlLCB0YXJnZXQp
KTsKIH0KIAorUGFzc093blB0cjxBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24+IEFjdGl2
ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0
dXJlQ3VydmU+IGN1cnZlLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCogdGFyZ2V0LCBkb3Vi
bGUgc3RhcnRUaW1lKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQWN0aXZlUGxhdGZvcm1H
ZXN0dXJlQW5pbWF0aW9uKGN1cnZlLCB0YXJnZXQsIHN0YXJ0VGltZSkpOworfQorCiBBY3RpdmVQ
bGF0Zm9ybUdlc3R1cmVBbmltYXRpb246On5BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24o
KQogewogfQpAQCAtNDksNiArNTQsMTQgQEAgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9u
OjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0cjxQbGF0Zm8KIHsKIH0K
IAorQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb24oUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3VydmUsIFBsYXRmb3Jt
R2VzdHVyZUN1cnZlVGFyZ2V0KiB0YXJnZXQsIGRvdWJsZSBzdGFydFRpbWUpCisgICAgOiBtX3N0
YXJ0VGltZShzdGFydFRpbWUpCisgICAgLCBtX3dhaXRpbmdGb3JGaXJzdFRpY2soZmFsc2UpCisg
ICAgLCBtX2N1cnZlKGN1cnZlKQorICAgICwgbV90YXJnZXQodGFyZ2V0KQoreworfQorCiBib29s
IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6YW5pbWF0ZShkb3VibGUgdGltZSkKIHsK
ICAgICBpZiAobV93YWl0aW5nRm9yRmlyc3RUaWNrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5oCmluZGV4IDlk
NTYzZTQ4MzY2NmRkMmFkYTFiNWIwNWU4OTg0ZGYxNWJhYzcwMjQuLjIxZjE5OWMwN2ExZmNmMzRj
NThjMTI0OWYyYjg0ZTRjNTcxMWJjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5oCkBAIC00Myw2ICs0Myw3
IEBAIGNsYXNzIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbiB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKTsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc093blB0cjxBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24+IGNyZWF0
ZShQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiwgUGxhdGZvcm1HZXN0dXJlQ3VydmVU
YXJnZXQqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmlt
YXRpb24+IGNyZWF0ZShQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiwgUGxhdGZvcm1H
ZXN0dXJlQ3VydmVUYXJnZXQqLCBkb3VibGUgc3RhcnRUaW1lKTsKICAgICB+QWN0aXZlUGxhdGZv
cm1HZXN0dXJlQW5pbWF0aW9uKCk7CiAKICAgICBib29sIGFuaW1hdGUoZG91YmxlIHRpbWUpOwpA
QCAtNTAsNiArNTEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIEFzc3VtZXMgYSB2YWxp
ZCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCB0aGF0IG91dGxpdmVzIHRoZSBhbmltYXRpb24u
CiAgICAgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8UGxhdGZvcm1H
ZXN0dXJlQ3VydmU+LCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCopOworICAgIEFjdGl2ZVBs
YXRmb3JtR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiwg
UGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqLCBkb3VibGUgc3RhcnRUaW1lKTsKIAogICAgIGRv
dWJsZSBtX3N0YXJ0VGltZTsKICAgICBib29sIG1fd2FpdGluZ0ZvckZpcnN0VGljazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCmluZGV4IDNiNjA3NjE0MmNk
YWFjMjE0YWQwMDkzNmZjZmIzYzUwNGEzZmQxNzAuLjg5NjJjZWU5NDRmMTE4YzVmM2VhNzE5Yjgz
NWM5ZWZmOTgyNGM4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3Nz
VGhyZWFkQ29waWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRD
b3BpZXIuaApAQCAtNDEsNiArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBz
dHJ1Y3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM7CiAgICAgY2xhc3MgSW50UmVjdDsKICAg
ICBjbGFzcyBJbnRTaXplOwogICAgIGNsYXNzIEtVUkw7CkBAIC03MCw2ICs3MSw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJh
c2U8ZmFsc2UsIGZhbHNlLCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucz4gOiBwdWJsaWMgQ3Jvc3NU
aHJlYWRDb3BpZXJQYXNzVGhyb3VnaDxUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucz4gewogICAgIH07
CiAKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZh
bHNlLCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycz4gOiBwdWJsaWMgQ3Jvc3NUaHJlYWRDb3Bp
ZXJQYXNzVGhyb3VnaDxBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycz4geworICAgIH07CisKICAg
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBJ
bnRSZWN0PiA6IHB1YmxpYyBDcm9zc1RocmVhZENvcGllclBhc3NUaHJvdWdoPEludFJlY3Q+IHsK
ICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdl
c3R1cmVDdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3Vy
dmUuaAppbmRleCA5MjIxOTkxNDc4ZWE5YzE4OTNmOTZiM2ZmMGVlZDdlZjY0Yzc3YzQyLi5lMGVk
MjQzOTdmYTg4NDZkN2E0ZTQ2ODg5MjFmM2I2ZDMyMjgzY2FjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJbnRTaXplOwogY2xhc3MgUGxhdGZvcm1HZXN0
dXJlQ3VydmVUYXJnZXQ7CiAKIC8vIEFic3RyYWN0IGludGVyZmFjZSBmb3IgY3VydmVzIHVzZWQg
YnkgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLiBBCkBAIC0zOSw2ICs0MCw4IEBAIHB1
YmxpYzoKIAogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgY3VydmUgaGFzIGZpbmlzaGVkIGFuZCBj
YW4gbm8gbG9uZ2VyIGJlIGFwcGxpZWQuCiAgICAgdmlydHVhbCBib29sIGFwcGx5KGRvdWJsZSB0
aW1lLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCopID0gMDsKKworICAgIHZpcnR1YWwgSW50
U2l6ZSBjdW11bGF0aXZlU2Nyb2xsKCkgY29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1Bs
YXRmb3JtR2VzdHVyZUN1cnZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKaW5kZXggMDZlZDU0YWMzYWMwOTZiYzQwZTE2NWVl
MjU0N2NkYTVkOTM0NjA1Yy4uZDVlNjMzNmMxMGExZmY1NGE2MWU1ZmU5YjcyN2E4ZTUyNzg0YjI0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3Jt
R2VzdHVyZUN1cnZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCkBAIC0zNSwxMSArMzUsMTcgQEAgdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKIAogUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hGbGluZ1Bs
YXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHkpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUo
dmVsb2NpdHkpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRvdWNoRmxpbmdQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZSh2ZWxvY2l0eSwgSW50U2l6ZSgpKSk7CiB9CiAKLVRvdWNoRmxpbmdQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNvbnN0IEZsb2F0
UG9pbnQmIHZlbG9jaXR5KQorUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hG
bGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2Np
dHksIGNvbnN0IEludFNpemUmIGN1bXVsYXRpdmVTY3JvbGwpCit7CisgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUodmVsb2NpdHksIGN1bXVsYXRp
dmVTY3JvbGwpKTsKK30KKworVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpUb3VjaEZs
aW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0
IEludFNpemUmIGN1bXVsYXRpdmVTY3JvbGwpCiAgICAgOiBtX3ZlbG9jaXR5KHZlbG9jaXR5KQor
ICAgICwgbV9jdW11bGF0aXZlU2Nyb2xsKGN1bXVsYXRpdmVTY3JvbGwpCiAgICAgLCBtX3RpbWVT
Y2FsZUZhY3RvcigxMDAwIC8gbWF4KDEuZiwgbWF4KGZhYnModmVsb2NpdHkueCgpKSwgZmFicyh2
ZWxvY2l0eS55KCkpKSkpCiB7CiAgICAgQVNTRVJUKHZlbG9jaXR5ICE9IEZsb2F0UG9pbnQ6Onpl
cm8oKSk7CkBAIC03Miw3ICs3OCw3IEBAIGJvb2wgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlOjphcHBseShkb3VibGUgdGltZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnCiAgICAgICAg
IGRpc3BsYWNlbWVudCA9IDEuMDsKIAogICAgIC8vIEtlZXAgdHJhY2sgb2YgaW50ZWdlciBwb3J0
aW9uIG9mIHNjcm9sbCB0aHVzIGZhciwgYW5kIHByZXBhcmUgaW5jcmVtZW50LgotICAgIEludFBv
aW50IHNjcm9sbChkaXNwbGFjZW1lbnQgKiBtX3ZlbG9jaXR5LngoKSwgZGlzcGxhY2VtZW50ICog
bV92ZWxvY2l0eS55KCkpOworICAgIEludFNpemUgc2Nyb2xsKGRpc3BsYWNlbWVudCAqIG1fdmVs
b2NpdHkueCgpLCBkaXNwbGFjZW1lbnQgKiBtX3ZlbG9jaXR5LnkoKSk7CiAgICAgSW50UG9pbnQg
c2Nyb2xsSW5jcmVtZW50KHNjcm9sbCAtIG1fY3VtdWxhdGl2ZVNjcm9sbCk7CiAgICAgbV9jdW11
bGF0aXZlU2Nyb2xsID0gc2Nyb2xsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCmluZGV4IGZkNTJiYzRlYzc0
YzBiNTJiNzU4NDViNDY2OWY2NTZmMDdkMjUwZWUuLjE2YWVmZTI1NzRlNTE3OGFkODNlNTFkMTg3
MWQyZDM3YjI4YmQzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNo
RmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCkBAIC00MSwxNiArNDEsMTggQEAgY2xh
c3MgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQ7CiBjbGFzcyBUb3VjaEZsaW5nUGxhdGZvcm1H
ZXN0dXJlQ3VydmUgOiBwdWJsaWMgUGxhdGZvcm1HZXN0dXJlQ3VydmUgewogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGUoY29uc3QgRmxv
YXRQb2ludCYgdmVsb2NpdHkpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVy
ZUN1cnZlPiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IEludFNpemUm
IGN1bXVsYXRpdmVTY3JvbGwpOwogICAgIHZpcnR1YWwgflRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZSgpOwogCiAgICAgdmlydHVhbCBib29sIGFwcGx5KGRvdWJsZSB0aW1lLCBQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZVRhcmdldCopOworICAgIHZpcnR1YWwgSW50U2l6ZSBjdW11bGF0aXZlU2Ny
b2xsKCkgY29uc3QgeyByZXR1cm4gbV9jdW11bGF0aXZlU2Nyb2xsOyB9CiAKIHByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNvbnN0IEZsb2F0UG9p
bnQmIHZlbG9jaXR5KTsKKyAgICBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3Qg
RmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IEludFNpemUmIGN1bXVsYXRpdmVTY3JvbGwpOwog
CiAgICAgRmxvYXRQb2ludCBtX3ZlbG9jaXR5OworICAgIEludFNpemUgbV9jdW11bGF0aXZlU2Ny
b2xsOwogICAgIGZsb2F0IG1fdGltZVNjYWxlRmFjdG9yOwotICAgIEludFBvaW50IG1fY3VtdWxh
dGl2ZVNjcm9sbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUu
Y3BwCmluZGV4IGM5ZjE3MzI4OTc5Y2I3YzcyZmYzOWY3ZWNjMjExMTBmNDMzYmMzOTkuLmViZDc4
OGZlNDU5YTZjODE3YmFhZWEwOGIxYTllYzIzNDkyZWJmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNw
cApAQCAtNTksNyArNTksNyBAQCBib29sIFdoZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6
YXBwbHkoZG91YmxlIHRpbWUsIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZwogICAgIC8vIEZJWE1F
OiBjb25zaWRlciBtYWtpbmcgdGhlIHZhbHVlIG9mIHNpZ21hIHNldHRhYmxlIGluIHRoZSBjb25z
dHJ1Y3Rvci4KICAgICBzdGF0aWMgZG91YmxlIHR3b1NpZ21hU3F1YXJlZEludmVyc2UgPSAxNjsg
Ly8gc2lnbWEgPSAwLjI1CiAgICAgZmxvYXQgY2RmID0gMSAtIGV4cCgtdGltZSAqIHRpbWUgKiB0
d29TaWdtYVNxdWFyZWRJbnZlcnNlKTsKLSAgICBJbnRQb2ludCBzY3JvbGwoY2RmICogbV92ZWxv
Y2l0eS54KCksIGNkZiAqIG1fdmVsb2NpdHkueSgpKTsKKyAgICBJbnRTaXplIHNjcm9sbChjZGYg
KiBtX3ZlbG9jaXR5LngoKSwgY2RmICogbV92ZWxvY2l0eS55KCkpOwogICAgIEludFBvaW50IHNj
cm9sbEluY3JlbWVudChzY3JvbGwgLSBtX2N1bXVsYXRpdmVTY3JvbGwpOwogICAgIG1fY3VtdWxh
dGl2ZVNjcm9sbCA9IHNjcm9sbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaAppbmRleCBiNzIxNDYxNjUzMzNm
MjNjOGM5YmJmNmMwMWRkYmYwNjdhZWUxYWMyLi4yOWYxNTFmYzFiMmYwOGE1OTEyYmU1MGZmNzlj
YzY5NWJkOWM1YWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZs
aW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9X
aGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaApAQCAtNDQsMTIgKzQ0LDEzIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBhcHBseShkb3VibGUgdGltZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJn
ZXQqKTsKKyAgICB2aXJ0dWFsIEludFNpemUgY3VtdWxhdGl2ZVNjcm9sbCgpIGNvbnN0IHsgcmV0
dXJuIG1fY3VtdWxhdGl2ZVNjcm9sbDsgfQogCiBwcml2YXRlOgogICAgIFdoZWVsRmxpbmdQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSk7CiAKICAgICBGbG9h
dFBvaW50IG1fdmVsb2NpdHk7Ci0gICAgSW50UG9pbnQgbV9jdW11bGF0aXZlU2Nyb2xsOworICAg
IEludFNpemUgbV9jdW11bGF0aXZlU2Nyb2xsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTY4Y2FhNzk2M2FmMjc2MjQ0ZTU2YmQ5M2YxYTgxZDc3NTU3NTI2MgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0FjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWN0aXZl
V2hlZWxGbGluZ1BhcmFtZXRlcnNfaAorI2RlZmluZSBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
c19oCisKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyB7
CisgICAgRmxvYXRTaXplIGRlbHRhOworICAgIEludFBvaW50IHBvaW50OworICAgIEludFBvaW50
IGdsb2JhbFBvaW50OworICAgIGludCBtb2RpZmllcnM7CisgICAgSW50U2l6ZSBjdW11bGF0aXZl
U2Nyb2xsOworICAgIGRvdWJsZSBzdGFydFRpbWU7CisKKyAgICBBY3RpdmVXaGVlbEZsaW5nUGFy
YW1ldGVycygpCisgICAgICAgIDogbW9kaWZpZXJzKDApCisgICAgICAgICwgc3RhcnRUaW1lKDAp
CisgICAgeworICAgIH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NB
Y3RpdmVHZXN0dXJlQW5pbWF0aW9uLmNwcAppbmRleCBhNGFmM2U1OWJjNTU3N2E4ODZmMDI5YmU1
OTJmYzQ5OWFkNDNiYTAxLi42MmMxOWZmY2I5YzVjZGI4MjVkNzY2ZDUyYTU4MGIxZjRhYTZlM2Zl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5jcHAKQEAg
LTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNjL0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5o
IgogCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJjYy9DQ0dlc3R1cmVDdXJ2ZS5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw2ICs0OCwxMSBAQCBDQ0FjdGl2ZUdlc3R1
cmVBbmltYXRpb246On5DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24oKQogewogfQogCitJbnRTaXpl
IENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6Y3VtdWxhdGl2ZVNjcm9sbCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fZ2VzdHVyZUN1cnZlLT5jdW11bGF0aXZlU2Nyb2xsKCk7Cit9CisKIGJvb2wg
Q0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOjphbmltYXRlKGRvdWJsZSB0aW1lKQogewogICAgIGlm
IChtX3dhaXRpbmdGb3JGaXJzdFRpY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVHZXN0
dXJlQW5pbWF0aW9uLmgKaW5kZXggOWJjZDc1MzcwNGMzNTk0ZTIzYmVkMzZiNmI2NTQ5NDBhODU0
ZDcwZC4uM2Q1MDc1OTRiMzgyMWFlNzE3ZWIwOTE5NGVjNzMwZDQ2NTUxZjYzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVH
ZXN0dXJlQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgKQEAgLTMzLDE3ICszMywyMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDR2VzdHVyZUN1cnZlOwogY2xhc3MgQ0NH
ZXN0dXJlQ3VydmVUYXJnZXQ7CitjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBDQ0FjdGl2ZUdlc3R1
cmVBbmltYXRpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDQWN0aXZlR2VzdHVyZUFu
aW1hdGlvbik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NBY3RpdmVHZXN0dXJl
QW5pbWF0aW9uPiBjcmVhdGUoUGFzc093blB0cjxDQ0dlc3R1cmVDdXJ2ZT4sIENDR2VzdHVyZUN1
cnZlVGFyZ2V0Kik7CisKICAgICB+Q0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKCk7CiAKICAgICBi
b29sIGFuaW1hdGUoZG91YmxlIHRpbWUpOwogCisgICAgZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhcnRUaW1lOyB9CisgICAgSW50U2l6ZSBjdW11bGF0aXZlU2Nyb2xsKCkg
Y29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKFBhc3NPd25Q
dHI8Q0NHZXN0dXJlQ3VydmU+LCBDQ0dlc3R1cmVDdXJ2ZVRhcmdldCopOworICAgIENDQWN0aXZl
R2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPENDR2VzdHVyZUN1cnZlPiwgQ0NHZXN0dXJlQ3Vy
dmVUYXJnZXQqLCBkb3VibGUgc3RhcnRUaW1lKTsKIAogICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsK
ICAgICBkb3VibGUgbV93YWl0aW5nRm9yRmlyc3RUaWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHZXN0dXJlQ3VydmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR2VzdHVyZUN1cnZl
LmgKaW5kZXggNGJjMWMwZGQ4MDZkZjc2NWUzZjI0NzJkMmI2NjM2NDVkMjg5YzZhNS4uY2M3OWY3
MTgwMWU0MjJmNjI4OTIyYWI2MWU2NGU0YzgzNWI0MWM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHZXN0dXJlQ3VydmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1cmVD
dXJ2ZS5oCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ0dlc3R1cmVD
dXJ2ZSgpIHsgfQogCiAgICAgdmlydHVhbCBib29sIGFwcGx5KGRvdWJsZSB0aW1lLCBDQ0dlc3R1
cmVDdXJ2ZVRhcmdldCopID0gMDsKKworICAgIHZpcnR1YWwgSW50U2l6ZSBjdW11bGF0aXZlU2Ny
b2xsKCkgY29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhh
bmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
SW5wdXRIYW5kbGVyLmgKaW5kZXggNzY2MDhkOWZjMWQwZGExMzlhNDkzMGJjNTA0N2MwOGFlYjhi
MmRmNC4uZGNkMGVlZDBlZTA2NjRkNDZkNzUxM2FmNDgwMGQyMzI1ZGZiMmIxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhh
bmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0lucHV0SGFuZGxlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorc3RydWN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOwogY2xhc3MgQ0NBY3RpdmVH
ZXN0dXJlQW5pbWF0aW9uOwogY2xhc3MgQ0NHZXN0dXJlQ3VydmVUYXJnZXQ7CiBjbGFzcyBJbnRQ
b2ludDsKQEAgLTgxLDYgKzgyLDggQEAgcHVibGljOgogICAgIC8vIFJlcXVlc3QgYW5vdGhlciBj
YWxsYmFjayB0byBDQ0lucHV0SGFuZGxlcjo6YW5pbWF0ZSgpLgogICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZUFuaW1hdGlvbigpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVs
RmxpbmdBbmltYXRpb24oY29uc3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSA9IDA7CisK
IHByb3RlY3RlZDoKICAgICBDQ0lucHV0SGFuZGxlckNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwg
fkNDSW5wdXRIYW5kbGVyQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cAppbmRleCAwMTc4MjBhN2M3MGUxYjkzZmM2MmE0ZGY0NzY2NDUyODY5NzAzNWExLi5iMGZmYTUw
NGI5NjY3MTc0MDYyNDkyMGI5ZDJiMmY4ZTc2NzYzYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVl
SG9zdC5oIgogCisjaW5jbHVkZSAiQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCIKICNpbmNs
dWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIK
ICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKQEAgLTQxNCw2ICs0MTUsMTUgQEAg
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbXBvc2l0ZSgpCiAgICAgc3RhdGljX2Nhc3Q8Q0NTaW5n
bGVUaHJlYWRQcm94eSo+KG1fcHJveHkuZ2V0KCkpLT5jb21wb3NpdGVJbW1lZGlhdGVseSgpOwog
fQogCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGNv
bnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIC8vIFdl
IHRpY2sgYW5pbWF0aW9ucyBpbiBDQ0xheWVyVHJlZUhvc3QgdXNpbmcgY3VycmVudFRpbWUoKSwg
YnV0IHRoZSBpbXBsIHRocmVhZCB1c2VzIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpLiBS
ZWJhc2UgaGVyZSBiZWZvcmUgcGFzc2luZyB0aW1lcyBvdXQgdG8gdGhlIGNsaWVudC4KKyAgICBk
b3VibGUgdGltZVNoaWZ0ID0gY3VycmVudFRpbWUoKSAtIG1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpOworICAgIEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHBhcmFtZXRlcnNXaXRoU2hp
ZnRlZFRpbWUgPSBwYXJhbWV0ZXJzOworICAgIHBhcmFtZXRlcnNXaXRoU2hpZnRlZFRpbWUuc3Rh
cnRUaW1lICs9IHRpbWVTaGlmdDsKKyAgICBtX2NsaWVudC0+dHJhbnNmZXJXaGVlbEZsaW5nQW5p
bWF0aW9uKHBhcmFtZXRlcnNXaXRoU2hpZnRlZFRpbWUpOworfQorCiBib29sIENDTGF5ZXJUcmVl
SG9zdDo6dXBkYXRlTGF5ZXJzKCkKIHsKICAgICBpZiAoIW1fbGF5ZXJSZW5kZXJlckluaXRpYWxp
emVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDg5ZjFiZTMwN2VkZmM5MTZk
NjA5ZTA4NWEzNTUyMjY3NzYyM2VjODcuLjEyYTgzOWUxMDVmMWYyMzBmNDZkOGExZGZmNDIxM2E5
ZDhhNzY1NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC00Miw2ICs0Miw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RydWN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0
ZXJzOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKQEAgLTU5LDYgKzYwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNzKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNm
ZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikg
PSAwOwogCiAgICAgLy8gVXNlZCBvbmx5IGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgcGF0aC4KICAg
ICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKSA9IDA7CkBAIC0xNDMsNiArMTQ1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgeyBtX2NsaWVudC0+
ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7IH0KICAgICB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZl
cnMoKSB7IG1fY2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7IH0KICAgICB2b2lkIGRl
bGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciopOworICAg
IHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnMmKTsKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdlIHNob3VsZCBh
Ym9ydCB0aGlzIGZyYW1lIGR1ZSB0byBpbml0aWFsaXphdGlvbiBmYWlsdXJlLgogICAgIGJvb2wg
dXBkYXRlTGF5ZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
aW5kZXggZGQyZDQyYTQ3MTdhYWEwZWZhNWJhY2M4YTNjMjlmMjZiMDI0ZGI4OC4uYmUzMGMyOTcy
OTY1YmQ1ZTIyZWVjNjViMjM3ZWMwMGNmMGRhNjhlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHAKQEAgLTE4Niw2ICsxODYsMTIgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpzY2hlZHVsZUFuaW1hdGlvbigpCiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3
T25JbXBsVGhyZWFkKCk7CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6dHJhbnNmZXJX
aGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQoreworCisgICAgbV9jbGllbnQtPnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvblRv
TWFpblRocmVhZE9uSW1wbFRocmVhZChwYXJhbWV0ZXJzKTsKK30KKwogdm9pZCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjp0cmFja0RhbWFnZUZvckFsbFN1cmZhY2VzKENDTGF5ZXJJbXBsKiByb290RHJh
d0xheWVyLCBjb25zdCBDQ0xheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKIHsKICAg
ICAvLyBGb3Igbm93LCB3ZSB1c2UgZGFtYWdlIHRyYWNraW5nIHRvIGNvbXB1dGUgYSBnbG9iYWwg
c2Npc3Nvci4gVG8gZG8gdGhpcywgd2UgbXVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oCmluZGV4IDBkYWU2MDQ2ODI0MmU5YjE0MjY2N2Q3MDdjYTFlNWI5NDAyZGJlMjEuLjUw
NTg2MjkxZmQ4ZGYzMTQ0YTU4ZDc2OTdiYjA2NmI1ZDEzZGU5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitzdHJ1Y3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM7CiBjbGFzcyBDQ0FjdGl2
ZUdlc3R1cmVBbmltYXRpb247CiBjbGFzcyBDQ0NvbXBsZXRpb25FdmVudDsKIGNsYXNzIENDUGFn
ZVNjYWxlQW5pbWF0aW9uOwpAQCAtNTUsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFu
aW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5pbWF0
aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFkT25JbXBsVGhyZWFk
KGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikgPSAwOwogfTsKIAogLy8gQ0NMYXll
clRyZWVIb3N0SW1wbCBvd25zIHRoZSBDQ0xheWVySW1wbCB0cmVlIGFzIHdlbGwgYXMgYXNzb2Np
YXRlZCByZW5kZXJpbmcgc3RhdGUKQEAgLTc2LDYgKzc4LDcgQEAgcHVibGljOgogICAgIC8vIFRv
IGNsZWFyIGFuIGFjdGl2ZSBhbmltYXRpb24sIHBhc3MgbnVsbHB0ci4KICAgICB2aXJ0dWFsIHZv
aWQgc2V0QWN0aXZlR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPENDQWN0aXZlR2VzdHVyZUFu
aW1hdGlvbj4pOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpOworICAgIHZp
cnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnMmKTsKIAogICAgIC8vIFZpcnR1YWwgZm9yIHRlc3RpbmcuCiAgICAgdmly
dHVhbCB2b2lkIGJlZ2luQ29tbWl0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmgKaW5kZXggZWJiZDk2ZTJjMzg4MjIxODlkMmI5MGIyMWU2ZDk3NmEzNjdjMGU5Yy4uZjgzMGE4
ZjcyOGI4MmVlYWZlNTFkYjY2N2I0NjMzZjA0OTA5ZDhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgeyBtX2xheWVyVHJlZUhvc3QtPnNldE5l
ZWRzQ29tbWl0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxUaHJl
YWQoKSB7IG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXQoKTsgfQogICAgIHZpcnR1YWwg
dm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25Q
dHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSk7CisgICAg
dm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb25Ub01haW5UaHJlYWRPbkltcGxUaHJlYWQo
Y29uc3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAKICAgICAvLyBDYWxsZWQgYnkgdGhlIGxlZ2FjeSBwYXRoIHdoZXJlIFJlbmRlcldpZGdl
dCBkb2VzIHRoZSBzY2hlZHVsaW5nLgogICAgIHZvaWQgY29tcG9zaXRlSW1tZWRpYXRlbHkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggZTE2NzUyMjNjNTQ4MDc3YmY0MGNiYmFi
M2RmZWJkOWY2YjJiODI4NS4uODNkNWI5ZmIwOWNiY2ExYTdiNWE2YTk2ODI5OGFlYmNmZTkzNzk3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2lu
Y2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKIAorI2luY2x1ZGUgIkFjdGl2ZVdoZWVsRmxpbmdQ
YXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJU
cmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oIgpAQCAt
Mjk2LDYgKzI5NywxOSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnBvc3RBbmltYXRpb25FdmVudHNU
b01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaQogICAgIG1fbWFpblRocmVh
ZFByb3h5LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6
OnNldEFuaW1hdGlvbkV2ZW50cywgZXZlbnRzLCB3YWxsQ2xvY2tUaW1lKSk7CiB9CiAKK3ZvaWQg
Q0NUaHJlYWRQcm94eTo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFkT25J
bXBsVGhyZWFkKGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQor
eworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAo
ImNjIiwgIkNDVGhyZWFkUHJveHk6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvblRvTWFpblRo
cmVhZE9uSW1wbFRocmVhZCIpOworICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVh
dGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnRyYW5zZmVyV2hlZWxGbGluZ0Fu
aW1hdGlvbiwgcGFyYW1ldGVycykpOworfQorCit2b2lkIENDVGhyZWFkUHJveHk6OnRyYW5zZmVy
V2hlZWxGbGluZ0FuaW1hdGlvbihBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyBwYXJhbWV0ZXJz
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV9sYXllclRyZWVIb3N0LT50
cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24ocGFyYW1ldGVycyk7Cit9CisKIHZvaWQgQ0NUaHJl
YWRQcm94eTo6c2V0TmVlZHNSZWRyYXcoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CkBAIC0zOTQsNyArNDA4LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25C
ZWdpbkZyYW1lKCkKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnNjaGVk
dWxlZEFjdGlvbkJlZ2luRnJhbWUiKTsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0JlZ2luRnJhbWVS
ZXF1ZXN0KTsKICAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdCA9IGFkb3B0UHRyKG5ldyBC
ZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGUoKSk7Ci0gICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVl
c3QtPmZyYW1lQmVnaW5UaW1lID0gMDsKKyAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+
ZnJhbWVCZWdpblRpbWUgPSBjdXJyZW50VGltZSgpOwogICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVS
ZXF1ZXN0LT5zY3JvbGxJbmZvID0gbV9sYXllclRyZWVIb3N0SW1wbC0+cHJvY2Vzc1Njcm9sbERl
bHRhcygpOwogCiAgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFk
VGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oCmluZGV4IDllNTI0YTc2M2UyODUwZmQyMDljMTNlMzUyNjEyZWM1Y2EzMDQ5ZTEuLmQ5
OGE4MGZiZWM5MmRhYzNhNDg1Zjk0NDU5MDNjYmU2ZWIxYmYyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmgKQEAgLTc2LDYgKzc2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1p
dE9uSW1wbFRocmVhZCgpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9N
YWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+
LCBkb3VibGUgd2FsbENsb2NrVGltZSk7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyV2hlZWxG
bGluZ0FuaW1hdGlvblRvTWFpblRocmVhZE9uSW1wbFRocmVhZChjb25zdCBBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVycyYpOwogCiAgICAgLy8gQ0NTY2hlZHVsZXJDbGllbnQgaW1wbGVtZW50YXRp
b24KICAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpOwpAQCAtMTA1LDYgKzEwNiw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRBbmltYXRpb25FdmVudHMoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2
ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKICAgICB2b2lkIGJlZ2luQ29udGV4
dFJlY3JlYXRpb24oKTsKICAgICB2b2lkIHRyeVRvUmVjcmVhdGVDb250ZXh0KCk7CisgICAgdm9p
ZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMp
OwogCiAgICAgLy8gQ2FsbGVkIG9uIGltcGwgdGhyZWFkCiAgICAgc3RydWN0IFJlYWRiYWNrUmVx
dWVzdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKaW5kZXggNTBhZjUxZmQ1NWQwMzc5NTEzMDc3
ZDNkNDFlZDRiMWRmMGU4Nzk4YS4uMzY1MGI3YTM2YTNhY2MwYzBiZDkwMzA1ZmRhNTJiMTRjZTZl
NWYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5j
bHVkZSAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaCIKIAorI2luY2x1ZGUgIkFjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlQ3VydmVU
YXJnZXQuaCIKICNpbmNsdWRlICJUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaCIKICNp
bmNsdWRlICJUcmFjZUV2ZW50LmgiCkBAIC02OCw2ICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fdGFyZ2V0LT5zY3JvbGxCeShzY3JvbGxEZWx0YSk7CiAgICAgfQogCisgICAgdmlydHVhbCBJ
bnRTaXplIGN1bXVsYXRpdmVTY3JvbGwoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
Y3VydmUtPmN1bXVsYXRpdmVTY3JvbGwoKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgUGxhdGZv
cm1HZXN0dXJlVG9DQ0dlc3R1cmVBZGFwdGVyKFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3Vy
dmU+IGN1cnZlKQogICAgICAgICA6IG1fY3VydmUoY3VydmUpCkBAIC0xODEsOSArMTg3LDkgQEAg
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGw6OmgKICAgICAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50
LT5zY3JvbGxFbmQoKTsKICAgICAgICAgICAgIHJldHVybiBEaWRIYW5kbGU7CiAgICAgICAgIGNh
c2UgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElnbm9yZWQ6Ci0gICAgICAgICAgICByZXR1
cm4gRGlkTm90SGFuZGxlOwotICAgICAgICBjYXNlIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3Jv
bGxGYWlsZWQ6CiAgICAgICAgICAgICByZXR1cm4gRHJvcEV2ZW50OworICAgICAgICBjYXNlIEND
SW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxGYWlsZWQ6CisgICAgICAgICAgICByZXR1cm4gRGlk
Tm90SGFuZGxlOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09IFdlYklu
cHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbikgewogICAgICAgICBBU1NFUlQoIW1fZ2VzdHVy
ZVNjcm9sbFN0YXJ0ZWQpOwpAQCAtMjU4LDE4ICsyNjQsMjAgQEAgV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OmgKICAgICBzd2l0Y2ggKHNjcm9sbFN0YXR1cykgewogICAgIGNhc2UgQ0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQ6IHsKICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAo
ImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxpbmc6
OnN0YXJ0ZWQiKTsKLSAgICAgICAgT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBmbGluZ0N1
cnZlID0gVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoRmxvYXRQb2ludCgt
Z2VzdHVyZUV2ZW50LmRlbHRhWCwgLWdlc3R1cmVFdmVudC5kZWx0YVkpKTsKKyAgICAgICAgT3du
UHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBmbGluZ0N1cnZlID0gVG91Y2hGbGluZ1BsYXRmb3Jt
R2VzdHVyZUN1cnZlOjpjcmVhdGUoRmxvYXRQb2ludChnZXN0dXJlRXZlbnQuZGVsdGFYLCBnZXN0
dXJlRXZlbnQuZGVsdGFZKSk7CiAgICAgICAgIG1fd2hlZWxGbGluZ0FuaW1hdGlvbiA9IENDQWN0
aXZlR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFBsYXRmb3JtR2VzdHVyZVRvQ0NHZXN0dXJlQWRh
cHRlcjo6Y3JlYXRlKGZsaW5nQ3VydmUucmVsZWFzZSgpKSwgdGhpcyk7Ci0gICAgICAgIG1fd2hl
ZWxGbGluZ1BvaW50ID0gSW50UG9pbnQoZ2VzdHVyZUV2ZW50LngsIGdlc3R1cmVFdmVudC55KTsK
KyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5kZWx0YSA9IEZsb2F0U2l6ZShnZXN0dXJl
RXZlbnQuZGVsdGFYLCBnZXN0dXJlRXZlbnQuZGVsdGFZKTsKKyAgICAgICAgbV93aGVlbEZsaW5n
UGFyYW1ldGVycy5wb2ludCA9IEludFBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQu
eSk7CisgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZ2xvYmFsUG9pbnQgPSBJbnRQb2lu
dChnZXN0dXJlRXZlbnQuZ2xvYmFsWCwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFkpOwogICAgICAgICBt
X2lucHV0SGFuZGxlckNsaWVudC0+c2NoZWR1bGVBbmltYXRpb24oKTsKICAgICAgICAgcmV0dXJu
IERpZEhhbmRsZTsKICAgICB9CiAgICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xs
RmFpbGVkOgogICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZzo6ZmFpbGVkIik7Ci0gICAgICAg
IHJldHVybiBEaWROb3RIYW5kbGU7CisgICAgICAgIHJldHVybiBEcm9wRXZlbnQ7CiAgICAgY2Fz
ZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsSWdub3JlZDoKICAgICAgICAgVFJBQ0VfRVZF
TlRfSU5TVEFOVDAoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVH
ZXN0dXJlRmxpbmc6Omlnbm9yZWQiKTsKLSAgICAgICAgcmV0dXJuIERyb3BFdmVudDsKKyAgICAg
ICAgcmV0dXJuIERpZE5vdEhhbmRsZTsKICAgICB9CiAgICAgcmV0dXJuIERpZE5vdEhhbmRsZTsK
IH0KQEAgLTMwNywzMCArMzE1LDM1IEBAIHZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OnNjcm9sbEJ5KGNvbnN0IEludFBvaW50JiBpbmNyZW1lbnQpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFRSQUNFX0VWRU5UMigiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6
OnNjcm9sbEJ5IiwgIngiLCBpbmNyZW1lbnQueCgpLCAieSIsIGluY3JlbWVudC55KCkpOwotCi0g
ICAgV2ViTW91c2VXaGVlbEV2ZW50IGV2ZW50OwotICAgIGV2ZW50LnR5cGUgPSBXZWJJbnB1dEV2
ZW50OjpNb3VzZVdoZWVsOwotICAgIGV2ZW50LmRlbHRhWCA9IC1pbmNyZW1lbnQueCgpOwotICAg
IGV2ZW50LmRlbHRhWSA9IC1pbmNyZW1lbnQueSgpOwotICAgIGV2ZW50Lmhhc1ByZWNpc2VTY3Jv
bGxpbmdEZWx0YXMgPSB0cnVlOwotICAgIGV2ZW50LnggPSBtX3doZWVsRmxpbmdQb2ludC54KCk7
Ci0gICAgZXZlbnQueSA9IG1fd2hlZWxGbGluZ1BvaW50LnkoKTsKLQotICAgIFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uID0gaGFuZGxl
SW5wdXRFdmVudEludGVybmFsKGV2ZW50KTsKKyAgICBXZWJNb3VzZVdoZWVsRXZlbnQgc3ludGhl
dGljV2hlZWw7CisgICAgc3ludGhldGljV2hlZWwudHlwZSA9IFdlYklucHV0RXZlbnQ6Ok1vdXNl
V2hlZWw7CisgICAgc3ludGhldGljV2hlZWwuZGVsdGFYID0gaW5jcmVtZW50LngoKTsKKyAgICBz
eW50aGV0aWNXaGVlbC5kZWx0YVkgPSBpbmNyZW1lbnQueSgpOworICAgIHN5bnRoZXRpY1doZWVs
Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB0cnVlOworICAgIHN5bnRoZXRpY1doZWVsLngg
PSBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnBvaW50LngoKTsKKyAgICBzeW50aGV0aWNXaGVlbC55
ID0gbV93aGVlbEZsaW5nUGFyYW1ldGVycy5wb2ludC55KCk7CisgICAgc3ludGhldGljV2hlZWwu
Z2xvYmFsWD0gbV93aGVlbEZsaW5nUGFyYW1ldGVycy5nbG9iYWxQb2ludC54KCk7CisgICAgc3lu
dGhldGljV2hlZWwuZ2xvYmFsWSA9IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZ2xvYmFsUG9pbnQu
eSgpOworICAgIHN5bnRoZXRpY1doZWVsLm1vZGlmaWVycyA9IG1fd2hlZWxGbGluZ1BhcmFtZXRl
cnMubW9kaWZpZXJzOworCisgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50
RGlzcG9zaXRpb24gZGlzcG9zaXRpb24gPSBoYW5kbGVJbnB1dEV2ZW50SW50ZXJuYWwoc3ludGhl
dGljV2hlZWwpOwogICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKICAgICBjYXNlIERpZEhhbmRs
ZToKICAgICBjYXNlIERyb3BFdmVudDoKICAgICAgICAgYnJlYWs7IAogICAgIGNhc2UgRGlkTm90
SGFuZGxlOgogICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5OjpBYm9ydEZsaW5nIik7Ci0gICAgICAgIC8vIEZJ
WE1FOiBJZiB3ZSBnb3QgYSBEaWROb3RIYW5kbGUsIHRoYXQgbWVhbnMgd2UgbmVlZCB0byBkZWxp
dmVyIHdoZWVscyBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIC8vIElmIHdlIGdvdCBhIERp
ZE5vdEhhbmRsZSwgdGhhdCBtZWFucyB3ZSBuZWVkIHRvIGRlbGl2ZXIgd2hlZWxzIG9uIHRoZSBt
YWluIHRocmVhZC4KICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIG5lZWQgdG8gc2NoZWR1bGUg
YSBjb21taXQgYW5kIHRyYW5zZmVyIHRoZSBmbGluZyBjdXJ2ZSBvdmVyIHRvIHRoZSBtYWluCiAg
ICAgICAgIC8vIHRocmVhZCBhbmQgcnVuIHRoZSByZXN0IG9mIHRoZSB3aGVlbHMgZnJvbSB0aGVy
ZS4KICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gZmxpbmdpbmcgYSBwYWdlIHRoYXQg
Y29udGFpbnMgYSBzY3JvbGxhYmxlIHN1YmFyZWEgdGhhdCB3ZSBjYW4ndAogICAgICAgICAvLyBz
Y3JvbGwgb24gdGhlIHRocmVhZCBpZiB0aGUgZmxpbmcgc3RhcnRzIG91dHNpZGUgdGhlIHN1YmFy
ZWEgYnV0IHRoZW4gaXMgZmx1bmcgInVuZGVyIiB0aGUKICAgICAgICAgLy8gcG9pbnRlci4KLSAg
ICAgICAgLy8gRm9yIG5vdywganVzdCBhYm9ydCB0aGUgZmxpbmcuCisgICAgICAgIG1fd2hlZWxG
bGluZ1BhcmFtZXRlcnMuc3RhcnRUaW1lID0gbV93aGVlbEZsaW5nQW5pbWF0aW9uLT5zdGFydFRp
bWUoKTsKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsID0g
bV93aGVlbEZsaW5nQW5pbWF0aW9uLT5jdW11bGF0aXZlU2Nyb2xsKCk7CisgICAgICAgIG1faW5w
dXRIYW5kbGVyQ2xpZW50LT50cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24obV93aGVlbEZsaW5n
UGFyYW1ldGVycyk7CiAgICAgICAgIGNhbmNlbEN1cnJlbnRGbGluZygpOworICAgICAgICBicmVh
azsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oCmluZGV4IGQ5NjE5NTg3ZDNmNTg4NjNl
Y2U3M2RlZmIwY2Q0ZjgxN2Q3YzQyNzMuLjFlMzhlMjRlNDZhYmE4NzhjNTZmNjVhY2NmMmY5ZTZj
YjYyNDkwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRl
ZiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbF9oCiAjZGVmaW5lIFdlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsX2gKIAotI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAiQWN0
aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgiCiAj
aW5jbHVkZSAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgIldlYklucHV0
RXZlbnQuaCIKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgTXV0ZXg7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIEludFBvaW50OwogY2xhc3MgQ0NHZXN0dXJlQ3VydmVUYXJnZXQ7CiBj
bGFzcyBDQ0lucHV0SGFuZGxlckNsaWVudDsKIGNsYXNzIENDVGhyZWFkOwpAQCAtODQsNyArODUs
OCBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuY2VsQ3VycmVudEZsaW5nKCk7CiAKICAgICBPd25Q
dHI8V2ViQ29yZTo6Q0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uPiBtX3doZWVsRmxpbmdBbmltYXRp
b247Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgbV93aGVlbEZsaW5nUG9pbnQ7IC8vIFBvaW50ZXIg
cG9zaXRpb24gZm9yIHRoZSBjdXJyZW50IGZsaW5nLiAKKyAgICAvLyBQYXJhbWV0ZXJzIGZvciB0
aGUgYWN0aXZlIGZsaW5nIGFuaW1hdGlvbiwgc3RvcmVkIGluIGNhc2Ugd2UgbmVlZCB0byB0cmFu
c2ZlciBpdCBvdXQgbGF0ZXIuCisgICAgV2ViQ29yZTo6QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRl
cnMgbV93aGVlbEZsaW5nUGFyYW1ldGVyczsKIAogICAgIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJDbGllbnQqIG1fY2xpZW50OwogICAgIGludCBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKaW5kZXggMzM1
ODc5YjY2MDUzNGE0YmM3NTdlNTE3NzRmMzJmZmRjNjdlN2ZlYy4uNmM4ZDZlZDNhOGU3MTBlYjJh
MTYyMWIwNGM2ZjE3ZDA2ZDliMjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcApAQCAtMjYsMTYgKzI2LDIwIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlVmlld0ltcGwuaCIKIAorI2lu
Y2x1ZGUgIkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiQ0NUaHJlYWRJ
bXBsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAi
TGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKLSNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dl
YkxheWVyLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmlldy5oIgotI2luY2x1
ZGUgInBsYXRmb3JtL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJTaXplLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVGhyZWFkLmgiCisjaW5jbHVkZSA8
cHVibGljL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmg+CisjaW5jbHVkZSA8cHVibGlj
L1dlYkZsb2F0UG9pbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5
ZXJUcmVlVmlldy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50Lmg+
CisjaW5jbHVkZSA8cHVibGljL1dlYlBvaW50Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNpemUu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEwNyw2ICsxMTEsMjAgQEAgdm9p
ZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpCiAgICAgICAg
IG1fY2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXJU
cmVlVmlld0ltcGw6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBBY3RpdmVXaGVl
bEZsaW5nUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBpZiAobV9jbGllbnQpIHsKKyAg
ICAgICAgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMgd2ViUGFyYW1ldGVyczsKKyAgICAg
ICAgd2ViUGFyYW1ldGVycy5kZWx0YSA9IFdlYkZsb2F0UG9pbnQocGFyYW1ldGVycy5kZWx0YS53
aWR0aCgpLCBwYXJhbWV0ZXJzLmRlbHRhLmhlaWdodCgpKTsKKyAgICAgICAgd2ViUGFyYW1ldGVy
cy5wb2ludCA9IHBhcmFtZXRlcnMucG9pbnQ7CisgICAgICAgIHdlYlBhcmFtZXRlcnMuZ2xvYmFs
UG9pbnQgPSBwYXJhbWV0ZXJzLnBvaW50OworICAgICAgICB3ZWJQYXJhbWV0ZXJzLm1vZGlmaWVy
cyA9IHBhcmFtZXRlcnMubW9kaWZpZXJzOworICAgICAgICB3ZWJQYXJhbWV0ZXJzLnN0YXJ0VGlt
ZSA9IHBhcmFtZXRlcnMuc3RhcnRUaW1lOworICAgICAgICB3ZWJQYXJhbWV0ZXJzLmN1bXVsYXRp
dmVTY3JvbGwgPSBwYXJhbWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGw7CisgICAgICAgIG1fY2xpZW50
LT50cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24od2ViUGFyYW1ldGVycyk7CisgICAgfQorfQor
CiB2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpzY2hlZHVsZUNvbXBvc2l0ZSgpCiB7CiAgICAg
aWYgKG1fY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TGF5ZXJUcmVlVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVy
VHJlZVZpZXdJbXBsLmgKaW5kZXggYjFiMjZkMGZjMzM4NjA0ZmU1Y2YzODA3MWY1MGE4YzM1ODY0
NTJmYi4uNmE5NDk0MmYwOTNhMmFmNDU3ZDkxMWUzNzk0YjM5MzgwNjBhOGM2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCkBAIC0z
MCw2ICszMCwxMCBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBBY3RpdmVX
aGVlbEZsaW5nUGFyYW1ldGVyczsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJM
YXllcjsKIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdDbGllbnQ7CkBAIC00OCw2ICs1Miw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dChib29sIHN1Y2Nlc3Mp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zl
cldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgV2ViQ29yZTo6QWN0aXZlV2hlZWxGbGluZ1BhcmFt
ZXRlcnMmKTsKIAogICAgIC8vIE9ubHkgdXNlZCBpbiB0aGUgc2luZ2xlIHRocmVhZGVkIHBhdGgu
CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMmI5NjA2MzdmMTg3MDMyOGVjNTNmYzM3
ZDRhODAzM2Q2MTY3MDY5Yi4uZThlNTAyNGU2YTEzZDQzMjUzMGUxZDkyMzI2M2Y1NWQ0ZjUwZDNk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzEs
MTEgKzMxLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwu
aCIKIAorI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBY3RpdmVQbGF0Zm9y
bUdlc3R1cmVBbmltYXRpb24uaCIKICNpbmNsdWRlICJBdXRvZmlsbFBvcHVwTWVudUNsaWVudC5o
IgotI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RD
aHJvbWl1bS5oIgotI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNl
bGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNocm9t
ZS5oIgpAQCAtMTIwLDMyICsxMTksMzUgQEAKICNpbmNsdWRlICJXZWJDb21wb3NpdG9ySW1wbC5o
IgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9v
bHNBZ2VudFByaXZhdGUuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJEcmFnRGF0YS5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lSW1wbC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkdyYXBoaWNzQ29u
dGV4dDNELmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJJ
bnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2Vi
SW5wdXRFdmVudENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJM
YXllci5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyVHJlZVZpZXcuaCIKICNpbmNsdWRl
ICJXZWJNZWRpYVBsYXllckFjdGlvbi5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRl
ICJXZWJQbHVnaW4uaCIKICNpbmNsdWRlICJXZWJQbHVnaW5BY3Rpb24uaCIKICNpbmNsdWRlICJX
ZWJQbHVnaW5Db250YWluZXJJbXBsLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIK
ICNpbmNsdWRlICJXZWJQb3B1cE1lbnVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViUmFuZ2UuaCIKLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCiAjaW5jbHVkZSAiV2ViUnVudGltZUZlYXR1cmVz
LmgiCiAjaW5jbHVkZSAiV2ViU2V0dGluZ3NJbXBsLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2Vi
U3RyaW5nLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCiAjaW5jbHVkZSAiV2Vi
Vmlld0NsaWVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJjYy9DQ1By
b3h5LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViRHJhZ0RhdGEuaCIKKyNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJJbWFnZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9y
dC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlZlY3Rvci5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1l
dGVycy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFBvaW50Lmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+
CisjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaD4KKyNpbmNsdWRlIDxwdWJsaWMv
V2ViUG9pbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5oPgogI2luY2x1ZGUgPHd0Zi9C
eXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgpAQCAtNDEyLDYgKzQxNCw5IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1w
bChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAjZW5kaWYKIAogICAgIG1faW5zcGVjdG9yU2V0dGlu
Z3NNYXAgPSBhZG9wdFB0cihuZXcgU2V0dGluZ3NNYXApOworCisgICAgbV9sYXN0V2hlZWxQb3Np
dGlvbiA9IFdlYlBvaW50KC0xLCAtMSk7CisgICAgbV9sYXN0V2hlZWxHbG9iYWxQb3NpdGlvbiA9
IFdlYlBvaW50KC0xLCAtMSk7CiB9CiAKIFdlYlZpZXdJbXBsOjp+V2ViVmlld0ltcGwoKQpAQCAt
NjMxLDYgKzYzNiw3IEBAIGJvb2wgV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25zdCBXZWJH
ZXN0dXJlRXZlbnQmIGV2ZW50KQogewogICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewogICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ6IHsKKyAgICAgICAgVFJBQ0VfRVZF
TlRfSU5TVEFOVDIoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50OjpHZXN0dXJl
RmxpbmdTdGFydCIsICJkZWx0YVgiLCBldmVudC5kZWx0YVgsICJkZWx0YVkiLCBldmVudC5kZWx0
YVkpOwogICAgICAgICBtX2xhc3RXaGVlbFBvc2l0aW9uID0gV2ViUG9pbnQoZXZlbnQueCwgZXZl
bnQueSk7CiAgICAgICAgIG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb24gPSBXZWJQb2ludChldmVu
dC5nbG9iYWxYLCBldmVudC5nbG9iYWxZKTsKICAgICAgICAgbV9mbGluZ01vZGlmaWVyID0gZXZl
bnQubW9kaWZpZXJzOwpAQCAtNjQwLDYgKzY0Niw3IEBAIGJvb2wgV2ViVmlld0ltcGw6Omdlc3R1
cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw6Cisg
ICAgICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJ3ZWJraXQiLCAiV2ViVmlld0ltcGw6Omdlc3R1
cmVFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsIik7CiAgICAgICAgIG1fZ2VzdHVyZUFuaW1hdGlv
bi5jbGVhcigpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6
Okdlc3R1cmVTY3JvbGxCZWdpbjoKQEAgLTY2MCw2ICs2NjcsMTggQEAgYm9vbCBXZWJWaWV3SW1w
bDo6Z2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRp
b24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7Cisg
ICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6dHJhbnNmZXJX
aGVlbEZsaW5nQW5pbWF0aW9uIik7CisgICAgQVNTRVJUKCFtX2dlc3R1cmVBbmltYXRpb24pOwor
ICAgIG1fbGFzdFdoZWVsUG9zaXRpb24gPSBwYXJhbWV0ZXJzLnBvaW50OworICAgIG1fbGFzdFdo
ZWVsR2xvYmFsUG9zaXRpb24gPSBwYXJhbWV0ZXJzLmdsb2JhbFBvaW50OworICAgIC8vIEZJWE1F
OiBzdG9yZSBwYXJhbWV0ZXJzLm1vZGlmaWVycworICAgIE93blB0cjxQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZT4gY3VydmUgPSBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShwYXJh
bWV0ZXJzLmRlbHRhLCBwYXJhbWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGwpOworICAgIG1fZ2VzdHVy
ZUFuaW1hdGlvbiA9IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKGN1cnZl
LnJlbGVhc2UoKSwgdGhpcywgcGFyYW1ldGVycy5zdGFydFRpbWUpOworICAgIHNjaGVkdWxlQW5p
bWF0aW9uKCk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9u
KGNvbnN0IEludFBvaW50JiBzY3JvbGwsIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBuZXdTY2FsZSwg
ZG91YmxlIGR1cmF0aW9uU2VjKQogewogICAgIGlmICghbV9sYXllclRyZWVWaWV3LmlzTnVsbCgp
KQpAQCAtMTMzMyw2ICsxMzUyLDE3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZUFuaW1hdGlv
bnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKQogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9G
UkFNRSkKICAgICBUUkFDRV9FVkVOVCgiV2ViVmlld0ltcGw6OnVwZGF0ZUFuaW1hdGlvbnMiLCB0
aGlzLCAwKTsKIAorICAgIC8vIENyZWF0ZSBzeW50aGV0aWMgd2hlZWwgZXZlbnRzIGFzIG5lY2Vz
c2FyeSBmb3IgZmxpbmcuCisgICAgaWYgKG1fZ2VzdHVyZUFuaW1hdGlvbikgeworICAgICAgICBp
ZiAobV9nZXN0dXJlQW5pbWF0aW9uLT5hbmltYXRlKGZyYW1lQmVnaW5UaW1lKSkgeworICAgICAg
ICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6YW5pbWF0
ZTo6ZmxpbmcgY29udGludWUiKTsKKyAgICAgICAgICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgid2Via2l0
IiwgIldlYlZpZXdJbXBsOjphbmltYXRlOjpmbGluZyBvdmVyIik7CisgICAgICAgICAgICBtX2dl
c3R1cmVBbmltYXRpb24uY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIFdlYkZyYW1l
SW1wbCogd2ViZnJhbWUgPSBtYWluRnJhbWVJbXBsKCk7CiAgICAgaWYgKCF3ZWJmcmFtZSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5k
ZXggMjI5MzhhZDZiZDZjNDk3NWY3NGZlMzdlNDE1NDg3ZmVlY2ExMjE1Yi4uZTVhZjEwYzZlMjU5
N2M5YmJhZTUwMzdmNDMzNzk0Nzg3OTQ2MTBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCkBAIC0yNjEsNiArMjYxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxl
dGVTd2FwQnVmZmVycygpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgpOwor
ICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgV2ViQWN0
aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKTsKKwogCiAgICAgLy8gV2ViVmlld0ltcGwKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LmNwcAppbmRleCBhMTkyYmE1NTdiZjBlYTE2YzIxZTRjMDQyNDJjYjI1ZDA5MGExNzYz
Li5hNGFlYjA2YjBkNzVhNmU3Y2MyNWRmM2VlMWVmNzFjMGVmMjkyZjM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcApAQCAtNTQsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRz
UmVkcmF3T25JbXBsVGhyZWFkKCkgeyBtX2RpZFJlcXVlc3RSZWRyYXcgPSB0cnVlOyB9CiAgICAg
dmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgeyBtX2RpZFJlcXVlc3RD
b21taXQgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01h
aW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4s
IGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJXaGVl
bEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKGNvbnN0IEFjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzJikgeyB9CiAKICAgICBzdGF0aWMgdm9pZCBleHBlY3RDbGVhcmVkU2Ny
b2xsRGVsdGFzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRl
eCA3MDJiYmYxNjM5YjQzYjE2YWVmM2FiYjY2MDYyOTA0OThjMGQ2NjE1Li4yNWFkMjJiNTU4NDQy
ZTJiNDllZGViYTNlODA3N2U2YmNiNWY3MTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTI1Niw2ICsyNTYsOSBA
QCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVs
RmxpbmdBbmltYXRpb24oY29uc3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSB7IH0KKwor
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1vY2tMYXllclRyZWVIb3N0Q2xpZW50KFRlc3RIb29r
cyogdGVzdEhvb2tzKSA6IG1fdGVzdEhvb2tzKHRlc3RIb29rcykgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50
LmgKaW5kZXggMzg4NzZkNzM3ZmI1MmFhNmQwM2M3MWJmZmU0MTcyOGM4Y2NjZjBiNS4uOGRkYjEw
YThhMjU5Y2E2ZDkwZjBiM2JkMmYzZWViY2ZlMGFlYTg4MiAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgKQEAg
LTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUNvbnRl
eHQoYm9vbCBzdWNjZXNzKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0Zy
YW1lKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IEFjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikgeyB9CiAKICAgICAvLyBVc2VkIG9ubHkgaW4gdGhlIHNp
bmdsZS10aHJlYWRlZCBwYXRoLgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCmluZGV4IDU3NmY3MGE5YmQ2
OWM1MTZmY2RkNTg4NjhlYjAyYTk5YzBjOGYzYjQuLjM2YjE5OWUzNGEzNWI2ZGVkMDVlOTZiYjhm
M2IzMzk5YTIyOGNhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAKQEAg
LTYyLDYgKzYyLDggQEAgcHVibGljOgogICAgIE1PQ0tfTUVUSE9EMShzY3JvbGxCeSwgdm9pZChj
b25zdCBXZWJDb3JlOjpJbnRTaXplJikpOwogICAgIE1PQ0tfTUVUSE9EMChzY3JvbGxFbmQsIHZv
aWQoKSk7CiAKKyAgICBNT0NLX01FVEhPRDEodHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uLCB2
b2lkKGNvbnN0IFdlYkNvcmU6OkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikpOworCiBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBhbmNob3JQb2ludCwKQEAgLTI4Myw3ICsyODUsMTUgQEAgVEVT
VF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nQW5pbWF0
ZXMpCiAgICAgLy8gT24gdGhlIGZsaW5nIHN0YXJ0LCB3ZSBzaG91bGQgc2NoZWR1bGUgYW4gYW5p
bWF0aW9uIGJ1dCBub3QgYWN0dWFsbHkgc3RhcnQKICAgICAvLyBzY3JvbGxpbmcuCiAgICAgZ2Vz
dHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKLSAg
ICBnZXN0dXJlLmRlbHRhWCA9IC0xMDAwOworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBmbGluZ0Rl
bHRhID0gV2ViQ29yZTo6RmxvYXRTaXplKDEwMDAsIDApOworICAgIFdlYkNvcmU6OkludFBvaW50
IGZsaW5nUG9pbnQgPSBXZWJDb3JlOjpJbnRQb2ludCg3LCAxMyk7CisgICAgV2ViQ29yZTo6SW50
UG9pbnQgZmxpbmdHbG9iYWxQb2ludCA9IFdlYkNvcmU6OkludFBvaW50KDE3LCAyMyk7CisgICAg
Z2VzdHVyZS5kZWx0YVggPSBmbGluZ0RlbHRhLndpZHRoKCk7CisgICAgZ2VzdHVyZS5kZWx0YVkg
PSBmbGluZ0RlbHRhLmhlaWdodCgpOworICAgIGdlc3R1cmUueCA9IGZsaW5nUG9pbnQueCgpOwor
ICAgIGdlc3R1cmUueSA9IGZsaW5nUG9pbnQueSgpOworICAgIGdlc3R1cmUuZ2xvYmFsWCA9IGZs
aW5nR2xvYmFsUG9pbnQueCgpOworICAgIGdlc3R1cmUuZ2xvYmFsWSA9IGZsaW5nR2xvYmFsUG9p
bnQueSgpOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkSGFuZGxlSW5wdXRFdmVu
dCgpKTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXIsIHNjaGVkdWxlQW5pbWF0
aW9uKCkpOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlciwgc2Nyb2xsQmVnaW4o
dGVzdGluZzo6XywgdGVzdGluZzo6XykpCkBAIC0yOTgsMjkgKzMwOCw0NSBAQCBURVNUX0YoV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdBbmltYXRlcykKICAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXIsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8s
IHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKICAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMCk7
CiAKLSAgICAvLyBUaGUgc2Vjb25kIGNhbGwgc2hvdWxkIHN0YXJ0IHNjcm9sbGluZyBpbiB0aGUg
K1ggZGlyZWN0aW9uLgorICAgIC8vIFRoZSBzZWNvbmQgY2FsbCBzaG91bGQgc3RhcnQgc2Nyb2xs
aW5nIGluIHRoZSAtWCBkaXJlY3Rpb24uCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5k
bGVyLCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhh
bmRsZXIsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2ls
bE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3Jv
bGxTdGFydGVkKSk7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyLCBzY3JvbGxC
eSh0ZXN0aW5nOjpQcm9wZXJ0eSgmV2ViQ29yZTo6SW50U2l6ZTo6d2lkdGgsIHRlc3Rpbmc6Okd0
KDApKSkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlciwgc2Nyb2xsQnkodGVz
dGluZzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6OndpZHRoLCB0ZXN0aW5nOjpMdCgwKSkp
KTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXIsIHNjcm9sbEVuZCgpKTsKICAg
ICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4xKTsKIAogICAgIC8vIExldCdzIHNheSBvbiB0
aGUgdGhpcmQgY2FsbCB3ZSBoaXQgYSBub24tc2Nyb2xsYWJsZSByZWdpb24uIFdlIHNob3VsZCBh
Ym9ydCB0aGUgZmxpbmcgYW5kIG5vdCBzY3JvbGwuCi0gICAgLy8gRklYTUU6IFdlIGFsc28gbmVl
ZCB0byBkbyBzb21lIHdvcmsgdG8gdHJhbnNmZXIgdGhlIHJlc3Qgb2YgdGhpcyBmbGluZyB0byB0
aGUgbWFpbiB0aHJlYWQuCi0gICAgLy8gQWRkIHRlc3RzIGZvciB0aGlzIG9uY2UgaXQncyBpbXBs
ZW1lbnRlZC4KKyAgICAvLyBXZSBhbHNvIHNob3VsZCBwYXNzIHRoZSBjdXJyZW50IGZsaW5nIHBh
cmFtZXRlcnMgb3V0IHRvIHRoZSBjbGllbnQgc28gdGhlIHJlc3Qgb2YgdGhlIGZsaW5nIGNhbiBi
ZQorICAgIC8vIHRyYW5zZmVycmVkIHRvIHRoZSBtYWluIHRocmVhZC4KICAgICBFWFBFQ1RfQ0FM
TChtX21vY2tJbnB1dEhhbmRsZXIsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9D
QUxMKG1fbW9ja0lucHV0SGFuZGxlciwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6
XykpCi0gICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbElnbm9yZWQpKTsKKyAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6
OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKSk7CiAg
ICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyLCBzY3JvbGxCeSh0ZXN0aW5nOjpfKSku
VGltZXMoMCk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyLCBzY3JvbGxFbmQo
KSkuVGltZXMoMCk7CisgICAgLy8gRXhwZWN0ZWQgd2hlZWwgZmxpbmcgYW5pbWF0aW9uIHBhcmFt
ZXRlcnM6CisgICAgLy8gKikgZmxpbmdEZWx0YSBhbmQgZmxpbmdQb2ludCBzaG91bGQgbWF0Y2gg
dGhlIG9yaWdpbmFsIEdlc3R1cmVGbGluZ1N0YXJ0IGV2ZW50CisgICAgLy8gKikgc3RhcnRUaW1l
IHNob3VsZCBiZSAxMCB0byBtYXRjaCB0aGUgdGltZSBwYXJhbWV0ZXIgb2YgdGhlIGZpcnN0IGFu
aW1hdGUoKSBjYWxsIGFmdGVyIHRoZSBHZXN0dXJlRmxpbmdTdGFydAorICAgIC8vICopIGN1bXVs
YXRpdmVTY3JvbGwgZGVwZW5kcyBvbiB0aGUgY3VydmUsIGJ1dCBzaW5jZSB3ZSd2ZSBhbmltYXRl
ZCBpbiB0aGUgLVggZGlyZWN0aW9uIHRoZSBYIHZhbHVlIHNob3VsZCBiZSA8IDAKKyAgICBFWFBF
Q1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXIsIHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbih0
ZXN0aW5nOjpBbGxPZigKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkNvcmU6OkFjdGl2ZVdo
ZWVsRmxpbmdQYXJhbWV0ZXJzOjpkZWx0YSwgdGVzdGluZzo6RXEoZmxpbmdEZWx0YSkpLAorICAg
ICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6
OnBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ1BvaW50KSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxk
KCZXZWJDb3JlOjpBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6Z2xvYmFsUG9pbnQsIHRlc3Rp
bmc6OkVxKGZsaW5nR2xvYmFsUG9pbnQpKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkNv
cmU6OkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpzdGFydFRpbWUsIHRlc3Rpbmc6OkVxKDEw
KSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpBY3RpdmVXaGVlbEZsaW5nUGFy
YW1ldGVyczo6Y3VtdWxhdGl2ZVNjcm9sbCwKKyAgICAgICAgICAgIHRlc3Rpbmc6OlByb3BlcnR5
KCZXZWJDb3JlOjpJbnRTaXplOjp3aWR0aCwgdGVzdGluZzo6R3QoMCkpKSkpKTsKICAgICBtX2lu
cHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4yKTsKIAotICAgIC8vIFNpbmNlIHdlJ3ZlIGFib3J0ZWQg
dGhlIGZsaW5nLCB0aGUgbmV4dCBhbmltYXRpb24gc2hvdWxkIGJlIGEgbm8tb3AgYW5kIHNob3Vs
ZCBub3QgcmVzdWx0IGluIGFub3RoZXIKLSAgICAvLyBmcmFtZSBiZWluZyByZXF1ZXN0ZWQuCisg
ICAgLy8gT25jZSB0aGUgZmxpbmcgaXMgdHJhbnNmZXJyZWQsIHdlIHNob3VsZCBzdG9wIHNjcm9s
bGluZy4KICAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXIsIHNjaGVkdWxlQW5pbWF0
aW9uKCkpLlRpbWVzKDApOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlciwgc2Ny
b2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDApOwogICAgIG1faW5wdXRI
YW5kbGVyLT5hbmltYXRlKDEwLjMpOworCisgICAgLy8gU2luY2Ugd2UndmUgdHJhbnNmZXJyZWQg
dGhlIGZsaW5nIHRvIHRoZSBtYWluIHRocmVhZCwgd2UgbmVlZCB0byBwYXNzIHRoZSBuZXh0IEdl
c3R1cmVGbGluZ0NhbmNlbCB0byB0aGUgbWFpbgorICAgIC8vIHRocmVhZCBhcyB3ZWxsLgorICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudCh0cnVlKSk7
CisgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdD
YW5jZWw7CisgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiB9
CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132731</attachid>
            <date>2012-03-19 17:29:27 -0700</date>
            <delta_ts>2012-03-19 17:35:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81479-20120319172926.patch</filename>
            <type>text/plain</type>
            <size>55846</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMjc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3YTc2MDgzY2YxOTY2
MWNhZTNiZTlmYTcyYjE5M2M3YmE0NTFmM2U0Li44ZTFhYWUzOGZlODJkNzVkYzA4YmY2ZDI2YzVl
ZDAyYzMzMzllODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wMy0xOSAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gVHJhbnNmZXIgd2hlZWwgZmxpbmdzIHRvIG1haW4gdGhyZWFkIGlmIHdlIGhpdCBhIHJlZ2lv
biB0aGF0IGNhbid0IGJlIHNjcm9sbGVkIGZyb20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQ3OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUElzIGZvciB0
cmFuc2ZlcmluZyBhbiBpbi1wcm9ncmVzcyB3aGVlbCBmbGluZyBmcm9tIGEgV2ViTGF5ZXJUcmVl
VmlldyBvdXQgdG8gaXRzIGNsaWVudC4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6CisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9z
dENsaWVudC5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkFjdGl2ZVdoZWVsRmxp
bmdQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFt
ZXRlcnM6OldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBjaHJvbWl1
bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYkxheWVyVHJlZVZpZXdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXll
clRyZWVWaWV3Q2xpZW50Ojp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24pOgorCiAyMDEyLTAz
LTE5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTExMjA3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZiYjQ5ZDE5
N2ZiMTk0YTE0MjFiMmJkN2QxN2EwMDJiOTNkZjA2NzYuLjEzM2Q5NGExMjg1NWY3NjY2MDA2YmRl
Y2NhMWY5MmIxMjUyODNmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAorMjAxMi0wMy0x
OSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gVHJhbnNmZXIgd2hlZWwgZmxpbmdzIHRvIG1haW4gdGhyZWFkIGlmIHdlIGhpdCBhIHJl
Z2lvbiB0aGF0IGNhbid0IGJlIHNjcm9sbGVkIGZyb20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQ3OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgdGhlIGFi
aWxpdHkgdG8gdHJhbnNmZXIgYSB3aGVlbCBmbGluZyBmcm9tIHRoZSBjb21wb3NpdG9yIHRocmVh
ZCB0byB0aGUgbWFpbiB0aHJlYWQgaWYgd2UgaGl0IGEgbm9uLXdoZWVsCisgICAgICAgIHNjcm9s
bGFibGUgYXJlYS4gVGhpcyBjYW4gaGFwcGVuIGlmIHdlIHNjcm9sbCBhIHNjcm9sbGFibGUgYXJl
YSAidW5kZXIiIHRoZSBtb3VzZSBwb2ludGVyIHBvc2l0aW9uIG9yIGlmIHdlIGdldAorICAgICAg
ICBhIGNvbW1pdCB3aXRoIHVwZGF0ZWQgd2hlZWwgaGFuZGxlciBvciBzY3JvbGxhYmxlIGFyZWEg
ZGF0YSB3aGlsZSB0aGUgZmxpbmcgaXMgaW4gcHJvZ3Jlc3MuIEluIHRoaXMgY2FzZSwgd2UKKyAg
ICAgICAgZ3JhYiB0aGUgY3VycmVudCBhbmltYXRpb24gcGFyYW1ldGVycyBvZmYgb2YgdGhlIGN1
cnZlIGFuZCBwYXNzIHRoZW0gb3V0IHRvIHRoZSBjb21wb3NpdG9yJ3MgY2xpZW50IHRvIHJlc3Vt
ZS4KKworICAgICAgICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QgdXBkYXRlZCB0
byBjb3ZlciB0aGUgdHJhbnNmZXJpbmcgbG9naWMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlUGxhdGZvcm1H
ZXN0dXJlQW5pbWF0aW9uOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5oOgorICAgICAgICAo
QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Dcm9z
c1RocmVhZENvcGllci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0v
UGxhdGZvcm1HZXN0dXJlQ3VydmUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGxh
dGZvcm1HZXN0dXJlQ3VydmUpOgorICAgICAgICAqIHBsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxhdGZvcm1H
ZXN0dXJlQ3VydmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZS5oOgorICAgICAgICAoVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3VtdWxhdGl2
ZVNjcm9sbCk6CisgICAgICAgICogcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZl
OjpjdW11bGF0aXZlU2Nyb2xsKToKKyAgICAgICAgKFdoZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6Y3Vt
dWxhdGl2ZVNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6c3RhcnRUaW1lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oOgorICAgICAg
ICAoQ0NHZXN0dXJlQ3VydmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSW5wdXRIYW5kbGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDTGF5
ZXJUcmVlSG9zdENsaWVudCk6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6dHJhbnNmZXJXaGVlbEZsaW5n
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCk6CisgICAgICAgIChDQ0xheWVy
VHJlZUhvc3RJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFBy
b3h5Ojp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb25Ub01haW5UaHJlYWRPbkltcGxUaHJlYWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dHJhbnNmZXJXaGVlbEZsaW5n
QW5pbWF0aW9uVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJl
Z2luRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTAzLTE5ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdGhlIGNocm9taXVtIHdv
cmxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBjMGMzZmVkYWQ3MGRlY2E3MDNkM2Fl
NTc0MDkyYzM1N2UxZTkxNTQ4Li5mZDBhNWJjOGJiNTI0YmU0ZjNlZWYxN2E2NTNmY2VhM2Q5YTAw
M2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAz
LTE5ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2No
cm9taXVtXSBUcmFuc2ZlciB3aGVlbCBmbGluZ3MgdG8gbWFpbiB0aHJlYWQgaWYgd2UgaGl0IGEg
cmVnaW9uIHRoYXQgY2FuJ3QgYmUgc2Nyb2xsZWQgZnJvbSB0aGUgY29tcG9zaXRvciB0aHJlYWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNDc5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1HZXN0dXJlVG9DQ0dlc3R1cmVBZGFwdGVyOjpjdW11bGF0aXZlU2Nyb2xsKToKKyAgICAgICAg
KFBsYXRmb3JtR2VzdHVyZVRvQ0NHZXN0dXJlQWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkpOgorICAg
ICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlv
bik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1w
bC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3SW1wbCk6
CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6Omdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp0cmFu
c2ZlcldoZWVsRmxpbmdBbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKyAgICAgICAgKiB0ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0Ojp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb25Ub01haW5UaHJlYWRP
bkltcGxUaHJlYWQpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgor
ICAgICAgICAoV1RGOjpNb2NrTGF5ZXJUcmVlSG9zdENsaWVudDo6dHJhbnNmZXJXaGVlbEZsaW5n
QW5pbWF0aW9uKToKKyAgICAgICAgKE1vY2tMYXllclRyZWVIb3N0Q2xpZW50KToKKyAgICAgICAg
KiB0ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpG
YWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50Ojp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24pOgor
ICAgICAgICAqIHRlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHA6CisK
IDIwMTItMDMtMTggIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIEltcGxlbWVudCBmbGluZy1ieS13aGVlbCBvbiBjb21wb3NpdG9yIHRo
cmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2Uv
UGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRleCBhZmExNDcxM2Y1ZDZhYWNiODMxOWQ3NWE2Nzcz
NmE2ZjIzYjEzNDlhLi44ZWNmODgxM2EwNmZhNzYzYTY0MmQ0Zjg2YWNiOWU4NWFiMzBjYzYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxh
dGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAtMzEsNiArMzEsNyBAQAogewogICAgICd2YXJpYWJsZXMn
OiB7CiAgICAgICAgICdwbGF0Zm9ybV9maWxlcyc6IFsKKyAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYkNTdHJpbmcuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYkNhbnZhcy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29sb3IuaCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkFjdGl2ZVdo
ZWVsRmxpbmdQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE0NTk2ZTYyZGUzZDg5
ODc4ODU4ODQwODBkMjI0ZWU4NWUxM2M2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaApAQCAt
MCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
c19oCisjZGVmaW5lIFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzX2gKKworI2luY2x1ZGUg
IldlYkNvbW1vbi5oIgorCisjaW5jbHVkZSAiV2ViRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIldl
YlBvaW50LmgiCisjaW5jbHVkZSAiV2ViU2l6ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
c3RydWN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHsKKyAgICBXZWJGbG9hdFBvaW50
IGRlbHRhOworICAgIFdlYlBvaW50IHBvaW50OworICAgIFdlYlBvaW50IGdsb2JhbFBvaW50Owor
ICAgIGludCBtb2RpZmllcnM7CisgICAgV2ViU2l6ZSBjdW11bGF0aXZlU2Nyb2xsOworICAgIGRv
dWJsZSBzdGFydFRpbWU7CisKKyAgICBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycygpCisg
ICAgICAgIDogbW9kaWZpZXJzKDApCisgICAgICAgICwgc3RhcnRUaW1lKDApCisgICAgeworICAg
IH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCmluZGV4IDVjMGI5ZWY5YTJhMmM2
MTNiMTE5MDBjMTNmODk4ZjIyODM5YjQ2NWIuLjQ4YmQ5ZGNmOTczYTcxN2EyN2I5MTk3NWY1NWJl
ODYwYzMyNDQzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5l
IFdlYkxheWVyVHJlZVZpZXdDbGllbnRfaAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK3N0cnVjdCBX
ZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczsKIGNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNE
Owogc3RydWN0IFdlYlNpemU7CiBjbGFzcyBXZWJUaHJlYWQ7CkBAIC01NSw2ICs1NiwxMSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpID0gMDsKIAorICAgIC8vIFRy
YW5zZmVycyBhbiBpbi1wcm9ncmVzcyB3aGVlbCBmbGluZyBhbmltYXRpb24gdGhhdCB0aGUgV2Vi
TGF5ZXJUcmVlVmlldworICAgIC8vIGNhbiBubyBsb25nZXIgYWR2YW5jZSB0byB0aGUgY2xpZW50
IHRvIGZpbmlzaCBvdXQuCisgICAgLy8gRklYTUU6IFJlbW92ZSBkZWZhdWx0IGltcGwgd2hlbiBj
bGllbnRzIGFyZSBhbGwgdXBkYXRlZAorICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxp
bmdBbmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSB7IH0KKwog
ICAgIC8vIFNjaGVkdWxlcyBhIGNvbXBvc2l0aW5nIHBhc3MsIG1lYW5pbmcgdGhlIGNsaWVudCBz
aG91bGQgY2FsbAogICAgIC8vIFdlYkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0ZSBhdCBhIGxhdGVy
IHRpbWUuIFRoaXMgaXMgb25seSBjYWxsZWQgaWYgdGhlCiAgICAgLy8gY29tcG9zaXRvciB0aHJl
YWQgaXMgZGlzYWJsZWQ7IHdoZW4gZW5hYmxlZCwgdGhlIGNvbXBvc2l0b3Igd2lsbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDM4NmVmYjI4ZDliMjkwZjJiNTljMTg4OTcyZTNlZGNkMjMwZDZlOWIuLmQ5
NDY4ODAxYjcxNDc5N2FiMGZmZWMwYjA2OWU3MzZlYzQ2Yjg2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTMzNTgsNiArMzM1OCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0aENHLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25N
YXRyaXhDRy5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Fj
dGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRp
b24uY3BwCmluZGV4IDE4ZWM3ZWIzNGFlMmU0ZTA3YjU2YzE0YTNlMDJhMzM3OGJhZDlkNTAuLjZh
MDEzYWRmYjQ0NWQ2ZGM5NTNkNDM5NzhmNDk4NTAxMzdjYzBlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9u
LmNwcApAQCAtMzcsNiArMzcsMTEgQEAgUGFzc093blB0cjxBY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb24+IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXQKICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbihjdXJ2ZSwgdGFy
Z2V0KSk7CiB9CiAKK1Bhc3NPd25QdHI8QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uPiBB
Y3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZShQYXNzT3duUHRyPFBsYXRmb3Jt
R2VzdHVyZUN1cnZlPiBjdXJ2ZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqIHRhcmdldCwg
ZG91YmxlIHN0YXJ0VGltZSkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEFjdGl2ZVBsYXRm
b3JtR2VzdHVyZUFuaW1hdGlvbihjdXJ2ZSwgdGFyZ2V0LCBzdGFydFRpbWUpKTsKK30KKwogQWN0
aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjp+QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0
aW9uKCkKIHsKIH0KQEAgLTQ5LDYgKzU0LDE0IEBAIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1h
dGlvbjo6QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8UGxhdGZvCiB7
CiB9CiAKK0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6QWN0aXZlUGxhdGZvcm1HZXN0
dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGN1cnZlLCBQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCogdGFyZ2V0LCBkb3VibGUgc3RhcnRUaW1lKQorICAgIDog
bV9zdGFydFRpbWUoc3RhcnRUaW1lKQorICAgICwgbV93YWl0aW5nRm9yRmlyc3RUaWNrKGZhbHNl
KQorICAgICwgbV9jdXJ2ZShjdXJ2ZSkKKyAgICAsIG1fdGFyZ2V0KHRhcmdldCkKK3sKK30KKwog
Ym9vbCBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OmFuaW1hdGUoZG91YmxlIHRpbWUp
CiB7CiAgICAgaWYgKG1fd2FpdGluZ0ZvckZpcnN0VGljaykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uaAppbmRl
eCA5ZDU2M2U0ODM2NjZkZDJhZGExYjViMDVlODk4NGRmMTViYWM3MDI0Li4yMWYxOTljMDdhMWZj
ZjM0YzU4YzEyNDlmMmI4NGU0YzU3MTFiY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uaApAQCAtNDMsNiAr
NDMsNyBAQCBjbGFzcyBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbik7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uPiBj
cmVhdGUoUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4sIFBsYXRmb3JtR2VzdHVyZUN1
cnZlVGFyZ2V0Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8QWN0aXZlUGxhdGZvcm1HZXN0dXJl
QW5pbWF0aW9uPiBjcmVhdGUoUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4sIFBsYXRm
b3JtR2VzdHVyZUN1cnZlVGFyZ2V0KiwgZG91YmxlIHN0YXJ0VGltZSk7CiAgICAgfkFjdGl2ZVBs
YXRmb3JtR2VzdHVyZUFuaW1hdGlvbigpOwogCiAgICAgYm9vbCBhbmltYXRlKGRvdWJsZSB0aW1l
KTsKQEAgLTUwLDYgKzUxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBBc3N1bWVzIGEg
dmFsaWQgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQgdGhhdCBvdXRsaXZlcyB0aGUgYW5pbWF0
aW9uLgogICAgIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPFBsYXRm
b3JtR2VzdHVyZUN1cnZlPiwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqKTsKKyAgICBBY3Rp
dmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZT4sIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0KiwgZG91YmxlIHN0YXJ0VGltZSk7CiAKICAg
ICBkb3VibGUgbV9zdGFydFRpbWU7CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JGaXJzdFRpY2s7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAppbmRleCAzYjYwNzYx
NDJjZGFhYzIxNGFkMDA5MzZmY2ZiM2M1MDRhM2ZkMTcwLi44OTYyY2VlOTQ0ZjExOGM1ZjNlYTcx
OWI4MzVjOWVmZjk4MjRjOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
cm9zc1RocmVhZENvcGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhy
ZWFkQ29waWVyLmgKQEAgLTQxLDYgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisg
ICAgc3RydWN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOwogICAgIGNsYXNzIEludFJlY3Q7
CiAgICAgY2xhc3MgSW50U2l6ZTsKICAgICBjbGFzcyBLVVJMOwpAQCAtNzAsNiArNzEsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3Bp
ZXJCYXNlPGZhbHNlLCBmYWxzZSwgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM+IDogcHVibGljIENy
b3NzVGhyZWFkQ29waWVyUGFzc1Rocm91Z2g8VGhyZWFkYWJsZUxvYWRlck9wdGlvbnM+IHsKICAg
ICB9OwogCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNl
LCBmYWxzZSwgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM+IDogcHVibGljIENyb3NzVGhyZWFk
Q29waWVyUGFzc1Rocm91Z2g8QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM+IHsKKyAgICB9Owor
CiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxz
ZSwgSW50UmVjdD4gOiBwdWJsaWMgQ3Jvc3NUaHJlYWRDb3BpZXJQYXNzVGhyb3VnaDxJbnRSZWN0
PiB7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1HZXN0dXJlQ3VydmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZUN1cnZlLmgKaW5kZXggOTIyMTk5MTQ3OGVhOWMxODkzZjk2YjNmZjBlZWQ3ZWY2NGM3N2M0Mi4u
ZTBlZDI0Mzk3ZmE4ODQ2ZDdhNGU0Njg4OTIxZjNiNmQzMjI4M2NhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3VydmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFBsYXRmb3Jt
R2VzdHVyZUN1cnZlVGFyZ2V0OwogCiAvLyBBYnN0cmFjdCBpbnRlcmZhY2UgZm9yIGN1cnZlcyB1
c2VkIGJ5IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi4gQQpAQCAtMzksNiArNDAsOCBA
QCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIGN1cnZlIGhhcyBmaW5pc2hlZCBh
bmQgY2FuIG5vIGxvbmdlciBiZSBhcHBsaWVkLgogICAgIHZpcnR1YWwgYm9vbCBhcHBseShkb3Vi
bGUgdGltZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqKSA9IDA7CisKKyAgICB2aXJ0dWFs
IEludFNpemUgY3VtdWxhdGl2ZVNjcm9sbCgpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCmluZGV4IDA2ZWQ1NGFjM2FjMDk2YmM0MGUx
NjVlZTI1NDdjZGE1ZDkzNDYwNWMuLmQ1ZTYzMzZjMTBhMWZmNTRhNjFlNWZlOWI3MjdhOGU1Mjc4
NGIyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hG
bGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcApAQCAtMzUsMTEgKzM1LDE3IEBAIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRvdWNoRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5
KQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlKHZlbG9jaXR5KSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUb3VjaEZsaW5nUGxhdGZv
cm1HZXN0dXJlQ3VydmUodmVsb2NpdHksIEludFNpemUoKSkpOwogfQogCi1Ub3VjaEZsaW5nUGxh
dGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBG
bG9hdFBvaW50JiB2ZWxvY2l0eSkKK1Bhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRv
dWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZl
bG9jaXR5LCBjb25zdCBJbnRTaXplJiBjdW11bGF0aXZlU2Nyb2xsKQoreworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKHZlbG9jaXR5LCBjdW11
bGF0aXZlU2Nyb2xsKSk7Cit9CisKK1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6VG91
Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBj
b25zdCBJbnRTaXplJiBjdW11bGF0aXZlU2Nyb2xsKQogICAgIDogbV92ZWxvY2l0eSh2ZWxvY2l0
eSkKKyAgICAsIG1fY3VtdWxhdGl2ZVNjcm9sbChjdW11bGF0aXZlU2Nyb2xsKQogICAgICwgbV90
aW1lU2NhbGVGYWN0b3IoMTAwMCAvIG1heCgxLmYsIG1heChmYWJzKHZlbG9jaXR5LngoKSksIGZh
YnModmVsb2NpdHkueSgpKSkpKQogewogICAgIEFTU0VSVCh2ZWxvY2l0eSAhPSBGbG9hdFBvaW50
Ojp6ZXJvKCkpOwpAQCAtNzIsNyArNzgsNyBAQCBib29sIFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZTo6YXBwbHkoZG91YmxlIHRpbWUsIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZwogICAg
ICAgICBkaXNwbGFjZW1lbnQgPSAxLjA7CiAKICAgICAvLyBLZWVwIHRyYWNrIG9mIGludGVnZXIg
cG9ydGlvbiBvZiBzY3JvbGwgdGh1cyBmYXIsIGFuZCBwcmVwYXJlIGluY3JlbWVudC4KLSAgICBJ
bnRQb2ludCBzY3JvbGwoZGlzcGxhY2VtZW50ICogbV92ZWxvY2l0eS54KCksIGRpc3BsYWNlbWVu
dCAqIG1fdmVsb2NpdHkueSgpKTsKKyAgICBJbnRTaXplIHNjcm9sbChkaXNwbGFjZW1lbnQgKiBt
X3ZlbG9jaXR5LngoKSwgZGlzcGxhY2VtZW50ICogbV92ZWxvY2l0eS55KCkpOwogICAgIEludFBv
aW50IHNjcm9sbEluY3JlbWVudChzY3JvbGwgLSBtX2N1bXVsYXRpdmVTY3JvbGwpOwogICAgIG1f
Y3VtdWxhdGl2ZVNjcm9sbCA9IHNjcm9sbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaAppbmRleCBmZDUyYmM0
ZWM3NGMwYjUyYjc1ODQ1YjQ2NjlmNjU2ZjA3ZDI1MGVlLi4xNmFlZmUyNTc0ZTUxNzhhZDgzZTUx
ZDE4NzFkMmQzN2IyOGJkMzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
b3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaApAQCAtNDEsMTYgKzQxLDE4IEBA
IGNsYXNzIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0OwogY2xhc3MgVG91Y2hGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlIDogcHVibGljIFBsYXRmb3JtR2VzdHVyZUN1cnZlIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0
IEZsb2F0UG9pbnQmIHZlbG9jaXR5KTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBJbnRT
aXplJiBjdW11bGF0aXZlU2Nyb2xsKTsKICAgICB2aXJ0dWFsIH5Ub3VjaEZsaW5nUGxhdGZvcm1H
ZXN0dXJlQ3VydmUoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBhcHBseShkb3VibGUgdGltZSwgUGxh
dGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqKTsKKyAgICB2aXJ0dWFsIEludFNpemUgY3VtdWxhdGl2
ZVNjcm9sbCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VtdWxhdGl2ZVNjcm9sbDsgfQogCiBwcml2YXRl
OgotICAgIGV4cGxpY2l0IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9h
dFBvaW50JiB2ZWxvY2l0eSk7CisgICAgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNv
bnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBJbnRTaXplJiBjdW11bGF0aXZlU2Nyb2xs
KTsKIAogICAgIEZsb2F0UG9pbnQgbV92ZWxvY2l0eTsKKyAgICBJbnRTaXplIG1fY3VtdWxhdGl2
ZVNjcm9sbDsKICAgICBmbG9hdCBtX3RpbWVTY2FsZUZhY3RvcjsKLSAgICBJbnRQb2ludCBtX2N1
bXVsYXRpdmVTY3JvbGw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlLmNwcAppbmRleCBjOWYxNzMyODk3OWNiN2M3MmZmMzlmN2VjYzIxMTEwZjQzM2JjMzk5Li5l
YmQ3ODhmZTQ1OWE2YzgxN2JhYWVhMDhiMWE5ZWMyMzQ5MmViZjhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBXaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmU6OmFwcGx5KGRvdWJsZSB0aW1lLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmcKICAgICAvLyBG
SVhNRTogY29uc2lkZXIgbWFraW5nIHRoZSB2YWx1ZSBvZiBzaWdtYSBzZXR0YWJsZSBpbiB0aGUg
Y29uc3RydWN0b3IuCiAgICAgc3RhdGljIGRvdWJsZSB0d29TaWdtYVNxdWFyZWRJbnZlcnNlID0g
MTY7IC8vIHNpZ21hID0gMC4yNQogICAgIGZsb2F0IGNkZiA9IDEgLSBleHAoLXRpbWUgKiB0aW1l
ICogdHdvU2lnbWFTcXVhcmVkSW52ZXJzZSk7Ci0gICAgSW50UG9pbnQgc2Nyb2xsKGNkZiAqIG1f
dmVsb2NpdHkueCgpLCBjZGYgKiBtX3ZlbG9jaXR5LnkoKSk7CisgICAgSW50U2l6ZSBzY3JvbGwo
Y2RmICogbV92ZWxvY2l0eS54KCksIGNkZiAqIG1fdmVsb2NpdHkueSgpKTsKICAgICBJbnRQb2lu
dCBzY3JvbGxJbmNyZW1lbnQoc2Nyb2xsIC0gbV9jdW11bGF0aXZlU2Nyb2xsKTsKICAgICBtX2N1
bXVsYXRpdmVTY3JvbGwgPSBzY3JvbGw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKaW5kZXggYjcyMTQ2MTY1
MzMzZjIzYzhjOWJiZjZjMDFkZGJmMDY3YWVlMWFjMi4uMjlmMTUxZmMxYjJmMDhhNTkxMmJlNTBm
Zjc5Y2M2OTViZDljNWFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hl
ZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKQEAgLTQ0LDEyICs0NCwxMyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+V2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKCk7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoZG91YmxlIHRpbWUsIFBsYXRmb3JtR2VzdHVyZUN1cnZl
VGFyZ2V0Kik7CisgICAgdmlydHVhbCBJbnRTaXplIGN1bXVsYXRpdmVTY3JvbGwoKSBjb25zdCB7
IHJldHVybiBtX2N1bXVsYXRpdmVTY3JvbGw7IH0KIAogcHJpdmF0ZToKICAgICBXaGVlbEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHkpOwogCiAgICAg
RmxvYXRQb2ludCBtX3ZlbG9jaXR5OwotICAgIEludFBvaW50IG1fY3VtdWxhdGl2ZVNjcm9sbDsK
KyAgICBJbnRTaXplIG1fY3VtdWxhdGl2ZVNjcm9sbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9BY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU2OGNhYTc5NjNhZjI3NjI0NGU1NmJkOTNmMWE4MWQ3NzU1NzUyNjIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BY3RpdmVX
aGVlbEZsaW5nUGFyYW1ldGVycy5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFj
dGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzX2gKKyNkZWZpbmUgQWN0aXZlV2hlZWxGbGluZ1BhcmFt
ZXRlcnNfaAorCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiSW50UG9pbnQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRl
cnMgeworICAgIEZsb2F0U2l6ZSBkZWx0YTsKKyAgICBJbnRQb2ludCBwb2ludDsKKyAgICBJbnRQ
b2ludCBnbG9iYWxQb2ludDsKKyAgICBpbnQgbW9kaWZpZXJzOworICAgIEludFNpemUgY3VtdWxh
dGl2ZVNjcm9sbDsKKyAgICBkb3VibGUgc3RhcnRUaW1lOworCisgICAgQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMoKQorICAgICAgICA6IG1vZGlmaWVycygwKQorICAgICAgICAsIHN0YXJ0VGlt
ZSgwKQorICAgIHsKKyAgICB9Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVHZXN0dXJlQW5p
bWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5jcHAKaW5kZXggYTRhZjNlNTliYzU1NzdhODg2ZjAy
OWJlNTkyZmM0OTlhZDQzYmEwMS4uN2U5Y2M2MmEwYzQ4YWIyNDk2MWRmYjBjOGY5ODlmZjJiM2Ix
OTlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJjYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRp
b24uaCIKIAorI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJjYy9DQ0dlc3R1cmVDdXJ2
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw2ICs0OCwxMSBAQCBDQ0FjdGl2ZUdl
c3R1cmVBbmltYXRpb246On5DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24oKQogewogfQogCitJbnRT
aXplIENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6Y3VtdWxhdGl2ZVNjcm9sbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fZ2VzdHVyZUN1cnZlLT5jdW11bGF0aXZlU2Nyb2xsKCk7Cit9CisKIGJv
b2wgQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOjphbmltYXRlKGRvdWJsZSB0aW1lKQogewogICAg
IGlmIChtX3dhaXRpbmdGb3JGaXJzdFRpY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVH
ZXN0dXJlQW5pbWF0aW9uLmgKaW5kZXggOWJjZDc1MzcwNGMzNTk0ZTIzYmVkMzZiNmI2NTQ5NDBh
ODU0ZDcwZC4uM2Q1MDc1OTRiMzgyMWFlNzE3ZWIwOTE5NGVjNzMwZDQ2NTUxZjYzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3Rp
dmVHZXN0dXJlQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgKQEAgLTMzLDE3ICszMywy
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDR2VzdHVyZUN1cnZlOwogY2xhc3Mg
Q0NHZXN0dXJlQ3VydmVUYXJnZXQ7CitjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBDQ0FjdGl2ZUdl
c3R1cmVBbmltYXRpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDQWN0aXZlR2VzdHVy
ZUFuaW1hdGlvbik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NBY3RpdmVHZXN0
dXJlQW5pbWF0aW9uPiBjcmVhdGUoUGFzc093blB0cjxDQ0dlc3R1cmVDdXJ2ZT4sIENDR2VzdHVy
ZUN1cnZlVGFyZ2V0Kik7CisKICAgICB+Q0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKCk7CiAKICAg
ICBib29sIGFuaW1hdGUoZG91YmxlIHRpbWUpOwogCisgICAgZG91YmxlIHN0YXJ0VGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhcnRUaW1lOyB9CisgICAgSW50U2l6ZSBjdW11bGF0aXZlU2Nyb2xs
KCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKFBhc3NP
d25QdHI8Q0NHZXN0dXJlQ3VydmU+LCBDQ0dlc3R1cmVDdXJ2ZVRhcmdldCopOworICAgIENDQWN0
aXZlR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPENDR2VzdHVyZUN1cnZlPiwgQ0NHZXN0dXJl
Q3VydmVUYXJnZXQqLCBkb3VibGUgc3RhcnRUaW1lKTsKIAogICAgIGRvdWJsZSBtX3N0YXJ0VGlt
ZTsKICAgICBkb3VibGUgbV93YWl0aW5nRm9yRmlyc3RUaWNrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHZXN0dXJlQ3VydmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR2VzdHVyZUN1
cnZlLmgKaW5kZXggNGJjMWMwZGQ4MDZkZjc2NWUzZjI0NzJkMmI2NjM2NDVkMjg5YzZhNS4uY2M3
OWY3MTgwMWU0MjJmNjI4OTIyYWI2MWU2NGU0YzgzNWI0MWM4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHZXN0dXJlQ3VydmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1
cmVDdXJ2ZS5oCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ0dlc3R1
cmVDdXJ2ZSgpIHsgfQogCiAgICAgdmlydHVhbCBib29sIGFwcGx5KGRvdWJsZSB0aW1lLCBDQ0dl
c3R1cmVDdXJ2ZVRhcmdldCopID0gMDsKKworICAgIHZpcnR1YWwgSW50U2l6ZSBjdW11bGF0aXZl
U2Nyb2xsKCkgY29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1
dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDSW5wdXRIYW5kbGVyLmgKaW5kZXggNzY2MDhkOWZjMWQwZGExMzlhNDkzMGJjNTA0N2MwOGFl
YjhiMmRmNC4uZGNkMGVlZDBlZTA2NjRkNDZkNzUxM2FmNDgwMGQyMzI1ZGZiMmIxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1
dEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0lucHV0SGFuZGxlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorc3RydWN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOwogY2xhc3MgQ0NBY3Rp
dmVHZXN0dXJlQW5pbWF0aW9uOwogY2xhc3MgQ0NHZXN0dXJlQ3VydmVUYXJnZXQ7CiBjbGFzcyBJ
bnRQb2ludDsKQEAgLTgxLDYgKzgyLDggQEAgcHVibGljOgogICAgIC8vIFJlcXVlc3QgYW5vdGhl
ciBjYWxsYmFjayB0byBDQ0lucHV0SGFuZGxlcjo6YW5pbWF0ZSgpLgogICAgIHZpcnR1YWwgdm9p
ZCBzY2hlZHVsZUFuaW1hdGlvbigpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zlcldo
ZWVsRmxpbmdBbmltYXRpb24oY29uc3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSA9IDA7
CisKIHByb3RlY3RlZDoKICAgICBDQ0lucHV0SGFuZGxlckNsaWVudCgpIHsgfQogICAgIHZpcnR1
YWwgfkNDSW5wdXRIYW5kbGVyQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcAppbmRleCAwMTc4MjBhN2M3MGUxYjkzZmM2MmE0ZGY0NzY2NDUyODY5NzAzNWExLi5iMGZm
YTUwNGI5NjY3MTc0MDYyNDkyMGI5ZDJiMmY4ZTc2NzYzYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNjL0NDTGF5ZXJU
cmVlSG9zdC5oIgogCisjaW5jbHVkZSAiQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCIKICNp
bmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0u
aCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKQEAgLTQxNCw2ICs0MTUsMTUg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbXBvc2l0ZSgpCiAgICAgc3RhdGljX2Nhc3Q8Q0NT
aW5nbGVUaHJlYWRQcm94eSo+KG1fcHJveHkuZ2V0KCkpLT5jb21wb3NpdGVJbW1lZGlhdGVseSgp
OwogfQogCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9u
KGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIC8v
IFdlIHRpY2sgYW5pbWF0aW9ucyBpbiBDQ0xheWVyVHJlZUhvc3QgdXNpbmcgY3VycmVudFRpbWUo
KSwgYnV0IHRoZSBpbXBsIHRocmVhZCB1c2VzIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
LiBSZWJhc2UgaGVyZSBiZWZvcmUgcGFzc2luZyB0aW1lcyBvdXQgdG8gdGhlIGNsaWVudC4KKyAg
ICBkb3VibGUgdGltZVNoaWZ0ID0gY3VycmVudFRpbWUoKSAtIG1vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZSgpOworICAgIEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHBhcmFtZXRlcnNXaXRo
U2hpZnRlZFRpbWUgPSBwYXJhbWV0ZXJzOworICAgIHBhcmFtZXRlcnNXaXRoU2hpZnRlZFRpbWUu
c3RhcnRUaW1lICs9IHRpbWVTaGlmdDsKKyAgICBtX2NsaWVudC0+dHJhbnNmZXJXaGVlbEZsaW5n
QW5pbWF0aW9uKHBhcmFtZXRlcnNXaXRoU2hpZnRlZFRpbWUpOworfQorCiBib29sIENDTGF5ZXJU
cmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKIHsKICAgICBpZiAoIW1fbGF5ZXJSZW5kZXJlckluaXRp
YWxpemVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDg5ZjFiZTMwN2VkZmM5
MTZkNjA5ZTA4NWEzNTUyMjY3NzYyM2VjODcuLjEyYTgzOWUxMDVmMWYyMzBmNDZkOGExZGZmNDIx
M2E5ZDhhNzY1NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC00Miw2ICs0Miw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RydWN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJh
bWV0ZXJzOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIGNsYXNzIENDVGV4dHVyZVVwZGF0
ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKQEAgLTU5LDYgKzYwLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNzKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdHJh
bnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJz
JikgPSAwOwogCiAgICAgLy8gVXNlZCBvbmx5IGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgcGF0aC4K
ICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKSA9IDA7CkBAIC0xNDMsNiArMTQ1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgeyBtX2NsaWVu
dC0+ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7IH0KICAgICB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1
ZmZlcnMoKSB7IG1fY2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7IH0KICAgICB2b2lk
IGRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciopOwor
ICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgQWN0aXZl
V2hlZWxGbGluZ1BhcmFtZXRlcnMmKTsKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdlIHNob3Vs
ZCBhYm9ydCB0aGlzIGZyYW1lIGR1ZSB0byBpbml0aWFsaXphdGlvbiBmYWlsdXJlLgogICAgIGJv
b2wgdXBkYXRlTGF5ZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAKaW5kZXggZGQyZDQyYTQ3MTdhYWEwZWZhNWJhY2M4YTNjMjlmMjZiMDI0ZGI4OC4uYmUzMGMy
OTcyOTY1YmQ1ZTIyZWVjNjViMjM3ZWMwMGNmMGRhNjhlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTE4Niw2ICsxODYsMTIgQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpzY2hlZHVsZUFuaW1hdGlvbigpCiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVk
cmF3T25JbXBsVGhyZWFkKCk7CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6dHJhbnNm
ZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQoreworCisgICAgbV9jbGllbnQtPnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlv
blRvTWFpblRocmVhZE9uSW1wbFRocmVhZChwYXJhbWV0ZXJzKTsKK30KKwogdm9pZCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjp0cmFja0RhbWFnZUZvckFsbFN1cmZhY2VzKENDTGF5ZXJJbXBsKiByb290
RHJhd0xheWVyLCBjb25zdCBDQ0xheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKIHsK
ICAgICAvLyBGb3Igbm93LCB3ZSB1c2UgZGFtYWdlIHRyYWNraW5nIHRvIGNvbXB1dGUgYSBnbG9i
YWwgc2Npc3Nvci4gVG8gZG8gdGhpcywgd2UgbXVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oCmluZGV4IDBkYWU2MDQ2ODI0MmU5YjE0MjY2N2Q3MDdjYTFlNWI5NDAyZGJlMjEu
LjUwNTg2MjkxZmQ4ZGYzMTQ0YTU4ZDc2OTdiYjA2NmI1ZDEzZGU5ODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitzdHJ1Y3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM7CiBjbGFzcyBDQ0Fj
dGl2ZUdlc3R1cmVBbmltYXRpb247CiBjbGFzcyBDQ0NvbXBsZXRpb25FdmVudDsKIGNsYXNzIEND
UGFnZVNjYWxlQW5pbWF0aW9uOwpAQCAtNTUsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9z
dEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5p
bWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFkT25JbXBsVGhy
ZWFkKGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikgPSAwOwogfTsKIAogLy8gQ0NM
YXllclRyZWVIb3N0SW1wbCBvd25zIHRoZSBDQ0xheWVySW1wbCB0cmVlIGFzIHdlbGwgYXMgYXNz
b2NpYXRlZCByZW5kZXJpbmcgc3RhdGUKQEAgLTc2LDYgKzc4LDcgQEAgcHVibGljOgogICAgIC8v
IFRvIGNsZWFyIGFuIGFjdGl2ZSBhbmltYXRpb24sIHBhc3MgbnVsbHB0ci4KICAgICB2aXJ0dWFs
IHZvaWQgc2V0QWN0aXZlR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPENDQWN0aXZlR2VzdHVy
ZUFuaW1hdGlvbj4pOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpOworICAg
IHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnMmKTsKIAogICAgIC8vIFZpcnR1YWwgZm9yIHRlc3RpbmcuCiAgICAg
dmlydHVhbCB2b2lkIGJlZ2luQ29tbWl0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmgKaW5kZXggZWJiZDk2ZTJjMzg4MjIxODlkMmI5MGIyMWU2ZDk3NmEzNjdjMGU5Yy4uZjgz
MGE4ZjcyOGI4MmVlYWZlNTFkYjY2N2I0NjMzZjA0OTA5ZDhjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgeyBtX2xheWVyVHJlZUhvc3QtPnNl
dE5lZWRzQ29tbWl0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxU
aHJlYWQoKSB7IG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXQoKTsgfQogICAgIHZpcnR1
YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NP
d25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSk7Cisg
ICAgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb25Ub01haW5UaHJlYWRPbkltcGxUaHJl
YWQoY29uc3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CiAKICAgICAvLyBDYWxsZWQgYnkgdGhlIGxlZ2FjeSBwYXRoIHdoZXJlIFJlbmRlcldp
ZGdldCBkb2VzIHRoZSBzY2hlZHVsaW5nLgogICAgIHZvaWQgY29tcG9zaXRlSW1tZWRpYXRlbHko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggZTE2NzUyMjNjNTQ4MDc3YmY0MGNi
YmFiM2RmZWJkOWY2YjJiODI4NS4uODNkNWI5ZmIwOWNiY2ExYTdiNWE2YTk2ODI5OGFlYmNmZTkz
Nzk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAog
I2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKIAorI2luY2x1ZGUgIkFjdGl2ZVdoZWVsRmxp
bmdQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRl
ICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oIgpA
QCAtMjk2LDYgKzI5NywxOSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnBvc3RBbmltYXRpb25FdmVu
dHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaQogICAgIG1fbWFpblRo
cmVhZFByb3h5LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJv
eHk6OnNldEFuaW1hdGlvbkV2ZW50cywgZXZlbnRzLCB3YWxsQ2xvY2tUaW1lKSk7CiB9CiAKK3Zv
aWQgQ0NUaHJlYWRQcm94eTo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFk
T25JbXBsVGhyZWFkKGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQoreworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgVFJBQ0VfRVZFTlRfSU5TVEFO
VDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvblRvTWFp
blRocmVhZE9uSW1wbFRocmVhZCIpOworICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhj
cmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnRyYW5zZmVyV2hlZWxGbGlu
Z0FuaW1hdGlvbiwgcGFyYW1ldGVycykpOworfQorCit2b2lkIENDVGhyZWFkUHJveHk6OnRyYW5z
ZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyBwYXJhbWV0
ZXJzKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV9sYXllclRyZWVIb3N0
LT50cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24ocGFyYW1ldGVycyk7Cit9CisKIHZvaWQgQ0NU
aHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXcoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CkBAIC0zOTQsNyArNDA4LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rp
b25CZWdpbkZyYW1lKCkKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnNj
aGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUiKTsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0JlZ2luRnJh
bWVSZXF1ZXN0KTsKICAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdCA9IGFkb3B0UHRyKG5l
dyBCZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGUoKSk7Ci0gICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJl
cXVlc3QtPmZyYW1lQmVnaW5UaW1lID0gMDsKKyAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVz
dC0+ZnJhbWVCZWdpblRpbWUgPSBjdXJyZW50VGltZSgpOwogICAgIG1fcGVuZGluZ0JlZ2luRnJh
bWVSZXF1ZXN0LT5zY3JvbGxJbmZvID0gbV9sYXllclRyZWVIb3N0SW1wbC0+cHJvY2Vzc1Njcm9s
bERlbHRhcygpOwogCiAgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhy
ZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oCmluZGV4IDllNTI0YTc2M2UyODUwZmQyMDljMTNlMzUyNjEyZWM1Y2EzMDQ5ZTEu
LmQ5OGE4MGZiZWM5MmRhYzNhNDg1Zjk0NDU5MDNjYmU2ZWIxYmYyNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmgKQEAgLTc2LDYgKzc2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Nv
bW1pdE9uSW1wbFRocmVhZCgpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRz
VG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0
b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSk7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyV2hl
ZWxGbGluZ0FuaW1hdGlvblRvTWFpblRocmVhZE9uSW1wbFRocmVhZChjb25zdCBBY3RpdmVXaGVl
bEZsaW5nUGFyYW1ldGVycyYpOwogCiAgICAgLy8gQ0NTY2hlZHVsZXJDbGllbnQgaW1wbGVtZW50
YXRpb24KICAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpOwpAQCAtMTA1LDYgKzEwNiw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRBbmltYXRpb25FdmVudHMoUGFzc093blB0cjxDQ0FuaW1hdGlv
bkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKICAgICB2b2lkIGJlZ2luQ29u
dGV4dFJlY3JlYXRpb24oKTsKICAgICB2b2lkIHRyeVRvUmVjcmVhdGVDb250ZXh0KCk7CisgICAg
dm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRl
cnMpOwogCiAgICAgLy8gQ2FsbGVkIG9uIGltcGwgdGhyZWFkCiAgICAgc3RydWN0IFJlYWRiYWNr
UmVxdWVzdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKaW5kZXggOTZhNzk4N2YzMzNlNjcxMDdh
NGJmOWM4YzhmYzAwYmRlOGVmYjgzNC4uOGRhMjMxM2FhNmU0YzdiMDI1NjM0OTJmYzA5MDRkYjQ4
Nzk5ZGUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcApAQCAtMjcsNiArMjcsNyBAQAogCiAj
aW5jbHVkZSAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaCIKIAorI2luY2x1ZGUgIkFj
dGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlQ3Vy
dmVUYXJnZXQuaCIKICNpbmNsdWRlICJUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaCIK
ICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCkBAIC02OCw2ICs2OSwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fdGFyZ2V0LT5zY3JvbGxCeShzY3JvbGxEZWx0YSk7CiAgICAgfQogCisgICAgdmlydHVh
bCBJbnRTaXplIGN1bXVsYXRpdmVTY3JvbGwoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fY3VydmUtPmN1bXVsYXRpdmVTY3JvbGwoKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgUGxh
dGZvcm1HZXN0dXJlVG9DQ0dlc3R1cmVBZGFwdGVyKFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJl
Q3VydmU+IGN1cnZlKQogICAgICAgICA6IG1fY3VydmUoY3VydmUpCkBAIC0yNTgsOSArMjY0LDEx
IEBAIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIFdlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoCiAgICAgc3dpdGNoIChzY3JvbGxTdGF0dXMpIHsK
ICAgICBjYXNlIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkOiB7CiAgICAgICAg
IFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bDo6aGFuZGxlR2VzdHVyZUZsaW5nOjpzdGFydGVkIik7Ci0gICAgICAgIE93blB0cjxQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZT4gZmxpbmdDdXJ2ZSA9IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZTo6Y3JlYXRlKEZsb2F0UG9pbnQoLWdlc3R1cmVFdmVudC5kZWx0YVgsIC1nZXN0dXJlRXZlbnQu
ZGVsdGFZKSk7CisgICAgICAgIE93blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gZmxpbmdDdXJ2
ZSA9IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKEZsb2F0UG9pbnQoZ2Vz
dHVyZUV2ZW50LmRlbHRhWCwgZ2VzdHVyZUV2ZW50LmRlbHRhWSkpOwogICAgICAgICBtX3doZWVs
RmxpbmdBbmltYXRpb24gPSBDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZShQbGF0Zm9y
bUdlc3R1cmVUb0NDR2VzdHVyZUFkYXB0ZXI6OmNyZWF0ZShmbGluZ0N1cnZlLnJlbGVhc2UoKSks
IHRoaXMpOwotICAgICAgICBtX3doZWVsRmxpbmdQb2ludCA9IEludFBvaW50KGdlc3R1cmVFdmVu
dC54LCBnZXN0dXJlRXZlbnQueSk7CisgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZGVs
dGEgPSBGbG9hdFNpemUoZ2VzdHVyZUV2ZW50LmRlbHRhWCwgZ2VzdHVyZUV2ZW50LmRlbHRhWSk7
CisgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMucG9pbnQgPSBJbnRQb2ludChnZXN0dXJl
RXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpOworICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJz
Lmdsb2JhbFBvaW50ID0gSW50UG9pbnQoZ2VzdHVyZUV2ZW50Lmdsb2JhbFgsIGdlc3R1cmVFdmVu
dC5nbG9iYWxZKTsKICAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjaGVkdWxlQW5pbWF0
aW9uKCk7CiAgICAgICAgIHJldHVybiBEaWRIYW5kbGU7CiAgICAgfQpAQCAtMzA5LDMwICszMTcs
MzUgQEAgdm9pZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkoY29uc3Qg
SW50UG9pbnQmIGluY3JlbWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVFJBQ0VfRVZFTlQy
KCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkiLCAieCIsIGlu
Y3JlbWVudC54KCksICJ5IiwgaW5jcmVtZW50LnkoKSk7Ci0KLSAgICBXZWJNb3VzZVdoZWVsRXZl
bnQgZXZlbnQ7Ci0gICAgZXZlbnQudHlwZSA9IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWw7Ci0g
ICAgZXZlbnQuZGVsdGFYID0gLWluY3JlbWVudC54KCk7Ci0gICAgZXZlbnQuZGVsdGFZID0gLWlu
Y3JlbWVudC55KCk7Ci0gICAgZXZlbnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IHRydWU7
Ci0gICAgZXZlbnQueCA9IG1fd2hlZWxGbGluZ1BvaW50LngoKTsKLSAgICBldmVudC55ID0gbV93
aGVlbEZsaW5nUG9pbnQueSgpOwotCi0gICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6
OkV2ZW50RGlzcG9zaXRpb24gZGlzcG9zaXRpb24gPSBoYW5kbGVJbnB1dEV2ZW50SW50ZXJuYWwo
ZXZlbnQpOworICAgIFdlYk1vdXNlV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbDsKKyAgICBzeW50
aGV0aWNXaGVlbC50eXBlID0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbDsKKyAgICBzeW50aGV0
aWNXaGVlbC5kZWx0YVggPSBpbmNyZW1lbnQueCgpOworICAgIHN5bnRoZXRpY1doZWVsLmRlbHRh
WSA9IGluY3JlbWVudC55KCk7CisgICAgc3ludGhldGljV2hlZWwuaGFzUHJlY2lzZVNjcm9sbGlu
Z0RlbHRhcyA9IHRydWU7CisgICAgc3ludGhldGljV2hlZWwueCA9IG1fd2hlZWxGbGluZ1BhcmFt
ZXRlcnMucG9pbnQueCgpOworICAgIHN5bnRoZXRpY1doZWVsLnkgPSBtX3doZWVsRmxpbmdQYXJh
bWV0ZXJzLnBvaW50LnkoKTsKKyAgICBzeW50aGV0aWNXaGVlbC5nbG9iYWxYPSBtX3doZWVsRmxp
bmdQYXJhbWV0ZXJzLmdsb2JhbFBvaW50LngoKTsKKyAgICBzeW50aGV0aWNXaGVlbC5nbG9iYWxZ
ID0gbV93aGVlbEZsaW5nUGFyYW1ldGVycy5nbG9iYWxQb2ludC55KCk7CisgICAgc3ludGhldGlj
V2hlZWwubW9kaWZpZXJzID0gbV93aGVlbEZsaW5nUGFyYW1ldGVycy5tb2RpZmllcnM7CisKKyAg
ICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBkaXNwb3Np
dGlvbiA9IGhhbmRsZUlucHV0RXZlbnRJbnRlcm5hbChzeW50aGV0aWNXaGVlbCk7CiAgICAgc3dp
dGNoIChkaXNwb3NpdGlvbikgewogICAgIGNhc2UgRGlkSGFuZGxlOgogICAgIGNhc2UgRHJvcEV2
ZW50OgogICAgICAgICBicmVhazsKICAgICBjYXNlIERpZE5vdEhhbmRsZToKICAgICAgICAgVFJB
Q0VfRVZFTlRfSU5TVEFOVDAoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpz
Y3JvbGxCeTo6QWJvcnRGbGluZyIpOwotICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ290IGEgRGlk
Tm90SGFuZGxlLCB0aGF0IG1lYW5zIHdlIG5lZWQgdG8gZGVsaXZlciB3aGVlbHMgb24gdGhlIG1h
aW4gdGhyZWFkLgorICAgICAgICAvLyBJZiB3ZSBnb3QgYSBEaWROb3RIYW5kbGUsIHRoYXQgbWVh
bnMgd2UgbmVlZCB0byBkZWxpdmVyIHdoZWVscyBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAg
IC8vIEluIHRoaXMgY2FzZSB3ZSBuZWVkIHRvIHNjaGVkdWxlIGEgY29tbWl0IGFuZCB0cmFuc2Zl
ciB0aGUgZmxpbmcgY3VydmUgb3ZlciB0byB0aGUgbWFpbgogICAgICAgICAvLyB0aHJlYWQgYW5k
IHJ1biB0aGUgcmVzdCBvZiB0aGUgd2hlZWxzIGZyb20gdGhlcmUuCiAgICAgICAgIC8vIFRoaXMg
Y2FuIGhhcHBlbiB3aGVuIGZsaW5naW5nIGEgcGFnZSB0aGF0IGNvbnRhaW5zIGEgc2Nyb2xsYWJs
ZSBzdWJhcmVhIHRoYXQgd2UgY2FuJ3QKICAgICAgICAgLy8gc2Nyb2xsIG9uIHRoZSB0aHJlYWQg
aWYgdGhlIGZsaW5nIHN0YXJ0cyBvdXRzaWRlIHRoZSBzdWJhcmVhIGJ1dCB0aGVuIGlzIGZsdW5n
ICJ1bmRlciIgdGhlCiAgICAgICAgIC8vIHBvaW50ZXIuCi0gICAgICAgIC8vIEZvciBub3csIGp1
c3QgYWJvcnQgdGhlIGZsaW5nLgorICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnN0YXJ0
VGltZSA9IG1fd2hlZWxGbGluZ0FuaW1hdGlvbi0+c3RhcnRUaW1lKCk7CisgICAgICAgIG1fd2hl
ZWxGbGluZ1BhcmFtZXRlcnMuY3VtdWxhdGl2ZVNjcm9sbCA9IG1fd2hlZWxGbGluZ0FuaW1hdGlv
bi0+Y3VtdWxhdGl2ZVNjcm9sbCgpOworICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+dHJh
bnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMpOwogICAgICAg
ICBjYW5jZWxDdXJyZW50RmxpbmcoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGwuaAppbmRleCA5ODA5MDI5ZDJiMGI0Njk4YzU3YmZiZTUxMTI2NmFiNzk5NTY2
NWZkLi4xZTM4ZTI0ZTQ2YWJhODc4YzU2ZjY1YWNjZjJmOWU2Y2I2MjQ5MDIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGxfaAogI2RlZmluZSBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbF9oCiAK
LSNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCkBAIC00MSw2ICs0
MSw3IEBAIGNsYXNzIE11dGV4OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbnRQ
b2ludDsKIGNsYXNzIENDR2VzdHVyZUN1cnZlVGFyZ2V0OwogY2xhc3MgQ0NJbnB1dEhhbmRsZXJD
bGllbnQ7CiBjbGFzcyBDQ1RocmVhZDsKQEAgLTg0LDcgKzg1LDggQEAgcHJpdmF0ZToKICAgICBi
b29sIGNhbmNlbEN1cnJlbnRGbGluZygpOwogCiAgICAgT3duUHRyPFdlYkNvcmU6OkNDQWN0aXZl
R2VzdHVyZUFuaW1hdGlvbj4gbV93aGVlbEZsaW5nQW5pbWF0aW9uOwotICAgIFdlYkNvcmU6Oklu
dFBvaW50IG1fd2hlZWxGbGluZ1BvaW50OyAvLyBQb2ludGVyIHBvc2l0aW9uIGZvciB0aGUgY3Vy
cmVudCBmbGluZy4KKyAgICAvLyBQYXJhbWV0ZXJzIGZvciB0aGUgYWN0aXZlIGZsaW5nIGFuaW1h
dGlvbiwgc3RvcmVkIGluIGNhc2Ugd2UgbmVlZCB0byB0cmFuc2ZlciBpdCBvdXQgbGF0ZXIuCisg
ICAgV2ViQ29yZTo6QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMgbV93aGVlbEZsaW5nUGFyYW1l
dGVyczsKIAogICAgIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQqIG1fY2xpZW50Owog
ICAgIGludCBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKaW5kZXggMzM1ODc5YjY2MDUzNGE0YmM3NTdlNTE3
NzRmMzJmZmRjNjdlN2ZlYy4uNmM4ZDZlZDNhOGU3MTBlYjJhMTYyMWIwNGM2ZjE3ZDA2ZDliMjc0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmll
d0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZp
ZXdJbXBsLmNwcApAQCAtMjYsMTYgKzI2LDIwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiV2ViTGF5ZXJUcmVlVmlld0ltcGwuaCIKIAorI2luY2x1ZGUgIkFjdGl2ZVdoZWVsRmxp
bmdQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiQ0NUaHJlYWRJbXBsLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJHcmFwaGlj
c0NvbnRleHQzRC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyLmgiCi0jaW5jbHVkZSAi
cGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmlldy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVy
VHJlZVZpZXdDbGllbnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTaXplLmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViVGhyZWFkLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkFjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KKyNpbmNsdWRlIDxwdWJsaWMv
V2ViTGF5ZXIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oPgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50Lmg+CisjaW5jbHVkZSA8cHVibGljL1dl
YlBvaW50Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTEwNyw2ICsxMTEsMjAgQEAgdm9pZCBXZWJMYXllclRyZWVWaWV3SW1w
bDo6ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpCiAgICAgICAgIG1fY2xpZW50LT5kaWRDb21wbGV0
ZVN3YXBCdWZmZXJzKCk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OnRyYW5zZmVy
V2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYgcGFy
YW1ldGVycykKK3sKKyAgICBpZiAobV9jbGllbnQpIHsKKyAgICAgICAgV2ViQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnMgd2ViUGFyYW1ldGVyczsKKyAgICAgICAgd2ViUGFyYW1ldGVycy5kZWx0
YSA9IFdlYkZsb2F0UG9pbnQocGFyYW1ldGVycy5kZWx0YS53aWR0aCgpLCBwYXJhbWV0ZXJzLmRl
bHRhLmhlaWdodCgpKTsKKyAgICAgICAgd2ViUGFyYW1ldGVycy5wb2ludCA9IHBhcmFtZXRlcnMu
cG9pbnQ7CisgICAgICAgIHdlYlBhcmFtZXRlcnMuZ2xvYmFsUG9pbnQgPSBwYXJhbWV0ZXJzLnBv
aW50OworICAgICAgICB3ZWJQYXJhbWV0ZXJzLm1vZGlmaWVycyA9IHBhcmFtZXRlcnMubW9kaWZp
ZXJzOworICAgICAgICB3ZWJQYXJhbWV0ZXJzLnN0YXJ0VGltZSA9IHBhcmFtZXRlcnMuc3RhcnRU
aW1lOworICAgICAgICB3ZWJQYXJhbWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGwgPSBwYXJhbWV0ZXJz
LmN1bXVsYXRpdmVTY3JvbGw7CisgICAgICAgIG1fY2xpZW50LT50cmFuc2ZlcldoZWVsRmxpbmdB
bmltYXRpb24od2ViUGFyYW1ldGVycyk7CisgICAgfQorfQorCiB2b2lkIFdlYkxheWVyVHJlZVZp
ZXdJbXBsOjpzY2hlZHVsZUNvbXBvc2l0ZSgpCiB7CiAgICAgaWYgKG1fY2xpZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKaW5kZXgg
YjFiMjZkMGZjMzM4NjA0ZmU1Y2YzODA3MWY1MGE4YzM1ODY0NTJmYi4uNmE5NDk0MmYwOTNhMmFm
NDU3ZDkxMWUzNzk0YjM5MzgwNjBhOGM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCkBAIC0zMCw2ICszMCwxMCBAQAogI2luY2x1
ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczsK
K30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJMYXllcjsKIGNsYXNzIFdlYkxheWVy
VHJlZVZpZXdDbGllbnQ7CkBAIC00OCw2ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY3JlYXRlQ29udGV4dChib29sIHN1Y2Nlc3MpOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRDb21taXRBbmREcmF3RnJhbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2Fw
QnVmZmVycygpOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24o
Y29uc3QgV2ViQ29yZTo6QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKTsKIAogICAgIC8vIE9u
bHkgdXNlZCBpbiB0aGUgc2luZ2xlIHRocmVhZGVkIHBhdGguCiAgICAgdmlydHVhbCB2b2lkIHNj
aGVkdWxlQ29tcG9zaXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAKaW5kZXggNGY1OWM5MDA1ZTY5MWZkOTJlNmM4OGFiZjllZWI4MzVlZjBiNTcwMy4uZjg0
NjEwNmM4NmQzNGY1MWMzYzRjMTJjZjhjZTkzMDM1NDA1NDg4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzEsMTEgKzMxLDEwIEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKIAorI2luY2x1ZGUgIkFYT2Jq
ZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uaCIK
ICNpbmNsdWRlICJBdXRvZmlsbFBvcHVwTWVudUNsaWVudC5oIgotI2luY2x1ZGUgIkFYT2JqZWN0
Q2FjaGUuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RDaHJvbWl1bS5oIgotI2luY2x1ZGUg
ImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAi
Q1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgpAQCAtMTE5LDMyICsxMTgs
MzUgQEAKICNpbmNsdWRlICJXZWJDb21wb3NpdG9ySW1wbC5oIgogI2luY2x1ZGUgIldlYkRldlRv
b2xzQWdlbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUuaCIKLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5o
IgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAi
cGxhdGZvcm0vV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNs
dWRlICJXZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudENvbnZlcnNpb24u
aCIKICNpbmNsdWRlICJXZWJLaXQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9y
bVN1cHBvcnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllci5oIgotI2luY2x1ZGUgInBs
YXRmb3JtL1dlYkxheWVyVHJlZVZpZXcuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllckFjdGlv
bi5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJQbHVnaW4uaCIKICNpbmNs
dWRlICJXZWJQbHVnaW5BY3Rpb24uaCIKICNpbmNsdWRlICJXZWJQbHVnaW5Db250YWluZXJJbXBs
LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1l
bnVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViUmFuZ2UuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJS
ZWN0LmgiCiAjaW5jbHVkZSAiV2ViUnVudGltZUZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2ViU2V0
dGluZ3NJbXBsLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAi
cGxhdGZvcm0vV2ViVmVjdG9yLmgiCiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1
ZGUgIldoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVkZSAicGxh
dGZvcm0vV2ViRHJhZ0RhdGEuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJJbWFnZS5oIgorI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlN0cmluZy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oPgorI2luY2x1ZGUgPHB1
YmxpYy9XZWJGbG9hdFBvaW50Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4
dDNELmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+CisjaW5jbHVkZSA8cHVibGljL1dl
YkxheWVyVHJlZVZpZXcuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUG9pbnQuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViUmVjdC5oPgogI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNjMw
LDYgKzYzMiw3IEBAIGJvb2wgV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0
dXJlRXZlbnQmIGV2ZW50KQogewogICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewogICAgIGNhc2Ug
V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ6IHsKKyAgICAgICAgVFJBQ0VfRVZFTlRf
SU5TVEFOVDIoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50OjpHZXN0dXJlRmxp
bmdTdGFydCIsICJkZWx0YVgiLCBldmVudC5kZWx0YVgsICJkZWx0YVkiLCBldmVudC5kZWx0YVkp
OwogICAgICAgICBtX2xhc3RXaGVlbFBvc2l0aW9uID0gV2ViUG9pbnQoZXZlbnQueCwgZXZlbnQu
eSk7CiAgICAgICAgIG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb24gPSBXZWJQb2ludChldmVudC5n
bG9iYWxYLCBldmVudC5nbG9iYWxZKTsKICAgICAgICAgbV9mbGluZ01vZGlmaWVyID0gZXZlbnQu
bW9kaWZpZXJzOwpAQCAtNjM5LDYgKzY0Miw3IEBAIGJvb2wgV2ViVmlld0ltcGw6Omdlc3R1cmVF
dmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw6CisgICAg
ICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJ3ZWJraXQiLCAiV2ViVmlld0ltcGw6Omdlc3R1cmVF
dmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsIik7CiAgICAgICAgIG1fZ2VzdHVyZUFuaW1hdGlvbi5j
bGVhcigpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdl
c3R1cmVTY3JvbGxCZWdpbjoKQEAgLTY1OSw2ICs2NjMsMTggQEAgYm9vbCBXZWJWaWV3SW1wbDo6
Z2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24o
Y29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAg
VFJBQ0VfRVZFTlRfSU5TVEFOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6dHJhbnNmZXJXaGVl
bEZsaW5nQW5pbWF0aW9uIik7CisgICAgQVNTRVJUKCFtX2dlc3R1cmVBbmltYXRpb24pOworICAg
IG1fbGFzdFdoZWVsUG9zaXRpb24gPSBwYXJhbWV0ZXJzLnBvaW50OworICAgIG1fbGFzdFdoZWVs
R2xvYmFsUG9zaXRpb24gPSBwYXJhbWV0ZXJzLmdsb2JhbFBvaW50OworICAgIC8vIEZJWE1FOiBz
dG9yZSBwYXJhbWV0ZXJzLm1vZGlmaWVycworICAgIE93blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZT4gY3VydmUgPSBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShwYXJhbWV0
ZXJzLmRlbHRhLCBwYXJhbWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGwpOworICAgIG1fZ2VzdHVyZUFu
aW1hdGlvbiA9IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKGN1cnZlLnJl
bGVhc2UoKSwgdGhpcywgcGFyYW1ldGVycy5zdGFydFRpbWUpOworICAgIHNjaGVkdWxlQW5pbWF0
aW9uKCk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNv
bnN0IEludFBvaW50JiBzY3JvbGwsIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBuZXdTY2FsZSwgZG91
YmxlIGR1cmF0aW9uU2VjKQogewogICAgIGlmICghbV9sYXllclRyZWVWaWV3LmlzTnVsbCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMjI5MzhhZDZiZDZj
NDk3NWY3NGZlMzdlNDE1NDg3ZmVlY2ExMjE1Yi4uMDYzZDhmNzIwM2MxMDQ4NDgyNDVkM2NiODdk
MzhjNzE2YmZmYmUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
CkBAIC0yNjEsNiArMjYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRB
bmREcmF3RnJhbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygp
OwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgpOworICAgIHZpcnR1YWwgdm9p
ZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1Bh
cmFtZXRlcnMmKTsKIAogICAgIC8vIFdlYlZpZXdJbXBsCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXgg
YTE5MmJhNTU3YmYwZWExNmMyMWU0YzA0MjQyY2IyNWQwOTBhMTc2My4uYTRhZWIwNmIwZDc1YTZl
N2NjMjVkZjNlZTFlZjcxYzBlZjI5MmYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTU0LDYgKzU0
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVh
ZCgpIHsgbV9kaWRSZXF1ZXN0UmVkcmF3ID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpIHsgbV9kaWRSZXF1ZXN0Q29tbWl0ID0gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhy
ZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2Nr
VGltZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvblRv
TWFpblRocmVhZE9uSW1wbFRocmVhZChjb25zdCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYp
IHsgfQogCiAgICAgc3RhdGljIHZvaWQgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2
ZShDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggNzAyYmJmMTYzOWI0M2Ix
NmFlZjNhYmI2NjA2MjkwNDk4YzBkNjYxNS4uZmNmZTFiNjIzYTI5MzljNzFkOWNhNjY3OGE3ZDQ5
YTc1OWM0ODFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0yNTYsNiArMjU2LDggQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGNv
bnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikgeyB9CisKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgTW9ja0xheWVyVHJlZUhvc3RDbGllbnQoVGVzdEhvb2tzKiB0ZXN0SG9va3MpIDogbV90
ZXN0SG9va3ModGVzdEhvb2tzKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaAppbmRleCAzODg3NmQ3Mzdm
YjUyYWE2ZDAzYzcxYmZmZTQxNzI4YzhjY2NmMGI1Li44ZGRiMTBhOGEyNTljYTZkOTBmMGIzYmQy
ZjNlZWJjZmUwYWVhODgyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaApAQCAtNDUsNiArNDUsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dChib29sIHN1Y2Nlc3MpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0
cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRl
cnMmKSB7IH0KIAogICAgIC8vIFVzZWQgb25seSBpbiB0aGUgc2luZ2xlLXRocmVhZGVkIHBhdGgu
CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCkgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsVGVzdC5jcHAKaW5kZXggZmE4MjQ3YjExMGMwN2ViMTU3ZmQ1NDQ5MDI2NDll
MWRiNTBmMGQwNi4uODliYjU3ODNlNGEwZGM4OGQyNmMzOGNjN2I5MDk4M2I5ZmYyN2YwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcApAQCAtNjIsNiArNjIsOCBAQCBwdWJs
aWM6CiAgICAgTU9DS19NRVRIT0QxKHNjcm9sbEJ5LCB2b2lkKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKSk7CiAgICAgTU9DS19NRVRIT0QwKHNjcm9sbEVuZCwgdm9pZCgpKTsKIAorICAgIE1PQ0tf
TUVUSE9EMSh0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24sIHZvaWQoY29uc3QgV2ViQ29yZTo6
QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSk7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRhcmdl
dFBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGFuY2hvclBvaW50LApAQCAtMzM5LDcgKzM0MSwxNSBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdBbmltYXRlcykKICAgICAvLyBPbiB0aGUg
Zmxpbmcgc3RhcnQsIHdlIHNob3VsZCBzY2hlZHVsZSBhbiBhbmltYXRpb24gYnV0IG5vdCBhY3R1
YWxseSBzdGFydAogICAgIC8vIHNjcm9sbGluZy4KICAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6
OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OwotICAgIGdlc3R1cmUuZGVsdGFYID0g
LTEwMDA7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIGZsaW5nRGVsdGEgPSBXZWJDb3JlOjpGbG9h
dFNpemUoMTAwMCwgMCk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgZmxpbmdQb2ludCA9IFdlYkNv
cmU6OkludFBvaW50KDcsIDEzKTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBmbGluZ0dsb2JhbFBv
aW50ID0gV2ViQ29yZTo6SW50UG9pbnQoMTcsIDIzKTsKKyAgICBnZXN0dXJlLmRlbHRhWCA9IGZs
aW5nRGVsdGEud2lkdGgoKTsKKyAgICBnZXN0dXJlLmRlbHRhWSA9IGZsaW5nRGVsdGEuaGVpZ2h0
KCk7CisgICAgZ2VzdHVyZS54ID0gZmxpbmdQb2ludC54KCk7CisgICAgZ2VzdHVyZS55ID0gZmxp
bmdQb2ludC55KCk7CisgICAgZ2VzdHVyZS5nbG9iYWxYID0gZmxpbmdHbG9iYWxQb2ludC54KCk7
CisgICAgZ2VzdHVyZS5nbG9iYWxZID0gZmxpbmdHbG9iYWxQb2ludC55KCk7CiAgICAgRVhQRUNU
X0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwog
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0
ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVy
bihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOwpAQCAtMzU2
LDI0ICszNjYsMzYgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwg
Z2VzdHVyZUZsaW5nQW5pbWF0ZXMpCiAKICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVh
ckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOwogCi0gICAgLy8gVGhl
IHNlY29uZCBjYWxsIHNob3VsZCBzdGFydCBzY3JvbGxpbmcgaW4gdGhlICtYIGRpcmVjdGlvbi4K
KyAgICAvLyBUaGUgc2Vjb25kIGNhbGwgc2hvdWxkIHN0YXJ0IHNjcm9sbGluZyBpbiB0aGUgLVgg
ZGlyZWN0aW9uLgogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBz
Y2hlZHVsZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxl
ckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5X
aWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNj
cm9sbFN0YXJ0ZWQpKTsKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVu
dCwgc2Nyb2xsQnkodGVzdGluZzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6OndpZHRoLCB0
ZXN0aW5nOjpHdCgwKSkpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNs
aWVudCwgc2Nyb2xsQnkodGVzdGluZzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6OndpZHRo
LCB0ZXN0aW5nOjpMdCgwKSkpKTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxl
ckNsaWVudCwgc2Nyb2xsRW5kKCkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwLjEp
OwogCiAgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9j
a0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKIAogICAgIC8vIExldCdzIHNheSBvbiB0aGUgdGhpcmQg
Y2FsbCB3ZSBoaXQgYSBub24tc2Nyb2xsYWJsZSByZWdpb24uIFdlIHNob3VsZCBhYm9ydCB0aGUg
ZmxpbmcgYW5kIG5vdCBzY3JvbGwuCi0gICAgLy8gRklYTUU6IFdlIGFsc28gbmVlZCB0byBkbyBz
b21lIHdvcmsgdG8gdHJhbnNmZXIgdGhlIHJlc3Qgb2YgdGhpcyBmbGluZyB0byB0aGUgbWFpbiB0
aHJlYWQuCi0gICAgLy8gQWRkIHRlc3RzIGZvciB0aGlzIG9uY2UgaXQncyBpbXBsZW1lbnRlZC4K
KyAgICAvLyBXZSBhbHNvIHNob3VsZCBwYXNzIHRoZSBjdXJyZW50IGZsaW5nIHBhcmFtZXRlcnMg
b3V0IHRvIHRoZSBjbGllbnQgc28gdGhlIHJlc3Qgb2YgdGhlIGZsaW5nIGNhbiBiZQorICAgIC8v
IHRyYW5zZmVycmVkIHRvIHRoZSBtYWluIHRocmVhZC4KICAgICBFWFBFQ1RfQ0FMTChtX21vY2tD
Q0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0NB
TEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRl
c3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkND
SW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxGYWlsZWQpKTsKICAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6XykpLlRpbWVzKDApOwog
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSku
VGltZXMoMCk7CisKKyAgICAvLyBFeHBlY3RlZCB3aGVlbCBmbGluZyBhbmltYXRpb24gcGFyYW1l
dGVyczoKKyAgICAvLyAqKSBmbGluZ0RlbHRhIGFuZCBmbGluZ1BvaW50IHNob3VsZCBtYXRjaCB0
aGUgb3JpZ2luYWwgR2VzdHVyZUZsaW5nU3RhcnQgZXZlbnQKKyAgICAvLyAqKSBzdGFydFRpbWUg
c2hvdWxkIGJlIDEwIHRvIG1hdGNoIHRoZSB0aW1lIHBhcmFtZXRlciBvZiB0aGUgZmlyc3QgYW5p
bWF0ZSgpIGNhbGwgYWZ0ZXIgdGhlIEdlc3R1cmVGbGluZ1N0YXJ0CisgICAgLy8gKikgY3VtdWxh
dGl2ZVNjcm9sbCBkZXBlbmRzIG9uIHRoZSBjdXJ2ZSwgYnV0IHNpbmNlIHdlJ3ZlIGFuaW1hdGVk
IGluIHRoZSAtWCBkaXJlY3Rpb24gdGhlIFggdmFsdWUgc2hvdWxkIGJlIDwgMAorICAgIEVYUEVD
VF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCB0cmFuc2ZlcldoZWVsRmxpbmdBbmlt
YXRpb24odGVzdGluZzo6QWxsT2YoCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpB
Y3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6ZGVsdGEsIHRlc3Rpbmc6OkVxKGZsaW5nRGVsdGEp
KSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkNvcmU6OkFjdGl2ZVdoZWVsRmxpbmdQYXJh
bWV0ZXJzOjpwb2ludCwgdGVzdGluZzo6RXEoZmxpbmdQb2ludCkpLAorICAgICAgICB0ZXN0aW5n
OjpGaWVsZCgmV2ViQ29yZTo6QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6Omdsb2JhbFBvaW50
LCB0ZXN0aW5nOjpFcShmbGluZ0dsb2JhbFBvaW50KSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxk
KCZXZWJDb3JlOjpBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6c3RhcnRUaW1lLCB0ZXN0aW5n
OjpFcSgxMCkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6QWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnM6OmN1bXVsYXRpdmVTY3JvbGwsCisgICAgICAgICAgICB0ZXN0aW5nOjpQ
cm9wZXJ0eSgmV2ViQ29yZTo6SW50U2l6ZTo6d2lkdGgsIHRlc3Rpbmc6Okd0KDApKSkpKSk7CiAg
ICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMik7CiAKICAgICB0ZXN0aW5nOjpNb2NrOjpW
ZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOwpA
QCAtMzgzLDYgKzQwNSwxMiBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxU
ZXN0LCBnZXN0dXJlRmxpbmdBbmltYXRlcykKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0
SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSkuVGltZXMoMCk7CiAgICAgRVhQRUNU
X0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8s
IHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKICAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4z
KTsKKworICAgIC8vIFNpbmNlIHdlJ3ZlIHRyYW5zZmVycmVkIHRoZSBmbGluZyB0byB0aGUgbWFp
biB0aHJlYWQsIHdlIG5lZWQgdG8gcGFzcyB0aGUgbmV4dCBHZXN0dXJlRmxpbmdDYW5jZWwgdG8g
dGhlIG1haW4KKyAgICAvLyB0aHJlYWQgYXMgd2VsbC4KKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tD
bGllbnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQodHJ1ZSkpOworICAgIGdlc3R1cmUudHlwZSA9
IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOworICAgIG1faW5wdXRI
YW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132733</attachid>
            <date>2012-03-19 17:35:12 -0700</date>
            <delta_ts>2012-03-20 22:09:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81479-20120319173511.patch</filename>
            <type>text/plain</type>
            <size>55847</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMjc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3YTc2MDgzY2YxOTY2
MWNhZTNiZTlmYTcyYjE5M2M3YmE0NTFmM2U0Li44ZTFhYWUzOGZlODJkNzVkYzA4YmY2ZDI2YzVl
ZDAyYzMzMzllODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wMy0xOSAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gVHJhbnNmZXIgd2hlZWwgZmxpbmdzIHRvIG1haW4gdGhyZWFkIGlmIHdlIGhpdCBhIHJlZ2lv
biB0aGF0IGNhbid0IGJlIHNjcm9sbGVkIGZyb20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQ3OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUElzIGZvciB0
cmFuc2ZlcmluZyBhbiBpbi1wcm9ncmVzcyB3aGVlbCBmbGluZyBmcm9tIGEgV2ViTGF5ZXJUcmVl
VmlldyBvdXQgdG8gaXRzIGNsaWVudC4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6CisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9z
dENsaWVudC5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkFjdGl2ZVdoZWVsRmxp
bmdQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFt
ZXRlcnM6OldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBjaHJvbWl1
bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYkxheWVyVHJlZVZpZXdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXll
clRyZWVWaWV3Q2xpZW50Ojp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24pOgorCiAyMDEyLTAz
LTE5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTExMjA3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZiYjQ5ZDE5
N2ZiMTk0YTE0MjFiMmJkN2QxN2EwMDJiOTNkZjA2NzYuLjEzM2Q5NGExMjg1NWY3NjY2MDA2YmRl
Y2NhMWY5MmIxMjUyODNmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAorMjAxMi0wMy0x
OSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gVHJhbnNmZXIgd2hlZWwgZmxpbmdzIHRvIG1haW4gdGhyZWFkIGlmIHdlIGhpdCBhIHJl
Z2lvbiB0aGF0IGNhbid0IGJlIHNjcm9sbGVkIGZyb20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQ3OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgdGhlIGFi
aWxpdHkgdG8gdHJhbnNmZXIgYSB3aGVlbCBmbGluZyBmcm9tIHRoZSBjb21wb3NpdG9yIHRocmVh
ZCB0byB0aGUgbWFpbiB0aHJlYWQgaWYgd2UgaGl0IGEgbm9uLXdoZWVsCisgICAgICAgIHNjcm9s
bGFibGUgYXJlYS4gVGhpcyBjYW4gaGFwcGVuIGlmIHdlIHNjcm9sbCBhIHNjcm9sbGFibGUgYXJl
YSAidW5kZXIiIHRoZSBtb3VzZSBwb2ludGVyIHBvc2l0aW9uIG9yIGlmIHdlIGdldAorICAgICAg
ICBhIGNvbW1pdCB3aXRoIHVwZGF0ZWQgd2hlZWwgaGFuZGxlciBvciBzY3JvbGxhYmxlIGFyZWEg
ZGF0YSB3aGlsZSB0aGUgZmxpbmcgaXMgaW4gcHJvZ3Jlc3MuIEluIHRoaXMgY2FzZSwgd2UKKyAg
ICAgICAgZ3JhYiB0aGUgY3VycmVudCBhbmltYXRpb24gcGFyYW1ldGVycyBvZmYgb2YgdGhlIGN1
cnZlIGFuZCBwYXNzIHRoZW0gb3V0IHRvIHRoZSBjb21wb3NpdG9yJ3MgY2xpZW50IHRvIHJlc3Vt
ZS4KKworICAgICAgICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QgdXBkYXRlZCB0
byBjb3ZlciB0aGUgdHJhbnNmZXJpbmcgbG9naWMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlUGxhdGZvcm1H
ZXN0dXJlQW5pbWF0aW9uOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5oOgorICAgICAgICAo
QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Dcm9z
c1RocmVhZENvcGllci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0v
UGxhdGZvcm1HZXN0dXJlQ3VydmUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGxh
dGZvcm1HZXN0dXJlQ3VydmUpOgorICAgICAgICAqIHBsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxhdGZvcm1H
ZXN0dXJlQ3VydmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZS5oOgorICAgICAgICAoVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3VtdWxhdGl2
ZVNjcm9sbCk6CisgICAgICAgICogcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZl
OjpjdW11bGF0aXZlU2Nyb2xsKToKKyAgICAgICAgKFdoZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6Y3Vt
dWxhdGl2ZVNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6c3RhcnRUaW1lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oOgorICAgICAg
ICAoQ0NHZXN0dXJlQ3VydmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSW5wdXRIYW5kbGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDTGF5
ZXJUcmVlSG9zdENsaWVudCk6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6dHJhbnNmZXJXaGVlbEZsaW5n
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCk6CisgICAgICAgIChDQ0xheWVy
VHJlZUhvc3RJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFBy
b3h5Ojp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb25Ub01haW5UaHJlYWRPbkltcGxUaHJlYWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dHJhbnNmZXJXaGVlbEZsaW5n
QW5pbWF0aW9uVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJl
Z2luRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTAzLTE5ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdGhlIGNocm9taXVtIHdv
cmxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBjMGMzZmVkYWQ3MGRlY2E3MDNkM2Fl
NTc0MDkyYzM1N2UxZTkxNTQ4Li5mZDBhNWJjOGJiNTI0YmU0ZjNlZWYxN2E2NTNmY2VhM2Q5YTAw
M2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAz
LTE5ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2No
cm9taXVtXSBUcmFuc2ZlciB3aGVlbCBmbGluZ3MgdG8gbWFpbiB0aHJlYWQgaWYgd2UgaGl0IGEg
cmVnaW9uIHRoYXQgY2FuJ3QgYmUgc2Nyb2xsZWQgZnJvbSB0aGUgY29tcG9zaXRvciB0aHJlYWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNDc5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1HZXN0dXJlVG9DQ0dlc3R1cmVBZGFwdGVyOjpjdW11bGF0aXZlU2Nyb2xsKToKKyAgICAgICAg
KFBsYXRmb3JtR2VzdHVyZVRvQ0NHZXN0dXJlQWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkpOgorICAg
ICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlv
bik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1w
bC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3SW1wbCk6
CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6Omdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp0cmFu
c2ZlcldoZWVsRmxpbmdBbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKyAgICAgICAgKiB0ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0Ojp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb25Ub01haW5UaHJlYWRP
bkltcGxUaHJlYWQpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgor
ICAgICAgICAoV1RGOjpNb2NrTGF5ZXJUcmVlSG9zdENsaWVudDo6dHJhbnNmZXJXaGVlbEZsaW5n
QW5pbWF0aW9uKToKKyAgICAgICAgKE1vY2tMYXllclRyZWVIb3N0Q2xpZW50KToKKyAgICAgICAg
KiB0ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpG
YWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50Ojp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24pOgor
ICAgICAgICAqIHRlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHA6CisK
IDIwMTItMDMtMTggIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIEltcGxlbWVudCBmbGluZy1ieS13aGVlbCBvbiBjb21wb3NpdG9yIHRo
cmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2Uv
UGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRleCBhZmExNDcxM2Y1ZDZhYWNiODMxOWQ3NWE2Nzcz
NmE2ZjIzYjEzNDlhLi44ZWNmODgxM2EwNmZhNzYzYTY0MmQ0Zjg2YWNiOWU4NWFiMzBjYzYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxh
dGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAtMzEsNiArMzEsNyBAQAogewogICAgICd2YXJpYWJsZXMn
OiB7CiAgICAgICAgICdwbGF0Zm9ybV9maWxlcyc6IFsKKyAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYkNTdHJpbmcuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYkNhbnZhcy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29sb3IuaCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkFjdGl2ZVdo
ZWVsRmxpbmdQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE0NTk2ZTYyZGUzZDg5
ODc4ODU4ODQwODBkMjI0ZWU4NWUxM2M2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaApAQCAt
MCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
c19oCisjZGVmaW5lIFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzX2gKKworI2luY2x1ZGUg
IldlYkNvbW1vbi5oIgorCisjaW5jbHVkZSAiV2ViRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIldl
YlBvaW50LmgiCisjaW5jbHVkZSAiV2ViU2l6ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
c3RydWN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHsKKyAgICBXZWJGbG9hdFBvaW50
IGRlbHRhOworICAgIFdlYlBvaW50IHBvaW50OworICAgIFdlYlBvaW50IGdsb2JhbFBvaW50Owor
ICAgIGludCBtb2RpZmllcnM7CisgICAgV2ViU2l6ZSBjdW11bGF0aXZlU2Nyb2xsOworICAgIGRv
dWJsZSBzdGFydFRpbWU7CisKKyAgICBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycygpCisg
ICAgICAgIDogbW9kaWZpZXJzKDApCisgICAgICAgICwgc3RhcnRUaW1lKDApCisgICAgeworICAg
IH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCmluZGV4IDVjMGI5ZWY5YTJhMmM2
MTNiMTE5MDBjMTNmODk4ZjIyODM5YjQ2NWIuLjQ4YmQ5ZGNmOTczYTcxN2EyN2I5MTk3NWY1NWJl
ODYwYzMyNDQzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5l
IFdlYkxheWVyVHJlZVZpZXdDbGllbnRfaAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK3N0cnVjdCBX
ZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczsKIGNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNE
Owogc3RydWN0IFdlYlNpemU7CiBjbGFzcyBXZWJUaHJlYWQ7CkBAIC01NSw2ICs1NiwxMSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpID0gMDsKIAorICAgIC8vIFRy
YW5zZmVycyBhbiBpbi1wcm9ncmVzcyB3aGVlbCBmbGluZyBhbmltYXRpb24gdGhhdCB0aGUgV2Vi
TGF5ZXJUcmVlVmlldworICAgIC8vIGNhbiBubyBsb25nZXIgYWR2YW5jZSB0byB0aGUgY2xpZW50
IHRvIGZpbmlzaCBvdXQuCisgICAgLy8gRklYTUU6IFJlbW92ZSBkZWZhdWx0IGltcGwgd2hlbiBj
bGllbnRzIGFyZSBhbGwgdXBkYXRlZAorICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxp
bmdBbmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSB7IH0KKwog
ICAgIC8vIFNjaGVkdWxlcyBhIGNvbXBvc2l0aW5nIHBhc3MsIG1lYW5pbmcgdGhlIGNsaWVudCBz
aG91bGQgY2FsbAogICAgIC8vIFdlYkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0ZSBhdCBhIGxhdGVy
IHRpbWUuIFRoaXMgaXMgb25seSBjYWxsZWQgaWYgdGhlCiAgICAgLy8gY29tcG9zaXRvciB0aHJl
YWQgaXMgZGlzYWJsZWQ7IHdoZW4gZW5hYmxlZCwgdGhlIGNvbXBvc2l0b3Igd2lsbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDM4NmVmYjI4ZDliMjkwZjJiNTljMTg4OTcyZTNlZGNkMjMwZDZlOWIuLmQ5
NDY4ODAxYjcxNDc5N2FiMGZmZWMwYjA2OWU3MzZlYzQ2Yjg2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTMzNTgsNiArMzM1OCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0aENHLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25N
YXRyaXhDRy5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Fj
dGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRp
b24uY3BwCmluZGV4IDE4ZWM3ZWIzNGFlMmU0ZTA3YjU2YzE0YTNlMDJhMzM3OGJhZDlkNTAuLjZh
MDEzYWRmYjQ0NWQ2ZGM5NTNkNDM5NzhmNDk4NTAxMzdjYzBlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9u
LmNwcApAQCAtMzcsNiArMzcsMTEgQEAgUGFzc093blB0cjxBY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb24+IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXQKICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbihjdXJ2ZSwgdGFy
Z2V0KSk7CiB9CiAKK1Bhc3NPd25QdHI8QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uPiBB
Y3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZShQYXNzT3duUHRyPFBsYXRmb3Jt
R2VzdHVyZUN1cnZlPiBjdXJ2ZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqIHRhcmdldCwg
ZG91YmxlIHN0YXJ0VGltZSkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEFjdGl2ZVBsYXRm
b3JtR2VzdHVyZUFuaW1hdGlvbihjdXJ2ZSwgdGFyZ2V0LCBzdGFydFRpbWUpKTsKK30KKwogQWN0
aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjp+QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0
aW9uKCkKIHsKIH0KQEAgLTQ5LDYgKzU0LDE0IEBAIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1h
dGlvbjo6QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8UGxhdGZvCiB7
CiB9CiAKK0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6QWN0aXZlUGxhdGZvcm1HZXN0
dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGN1cnZlLCBQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCogdGFyZ2V0LCBkb3VibGUgc3RhcnRUaW1lKQorICAgIDog
bV9zdGFydFRpbWUoc3RhcnRUaW1lKQorICAgICwgbV93YWl0aW5nRm9yRmlyc3RUaWNrKGZhbHNl
KQorICAgICwgbV9jdXJ2ZShjdXJ2ZSkKKyAgICAsIG1fdGFyZ2V0KHRhcmdldCkKK3sKK30KKwog
Ym9vbCBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OmFuaW1hdGUoZG91YmxlIHRpbWUp
CiB7CiAgICAgaWYgKG1fd2FpdGluZ0ZvckZpcnN0VGljaykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uaAppbmRl
eCA5ZDU2M2U0ODM2NjZkZDJhZGExYjViMDVlODk4NGRmMTViYWM3MDI0Li4yMWYxOTljMDdhMWZj
ZjM0YzU4YzEyNDlmMmI4NGU0YzU3MTFiY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uaApAQCAtNDMsNiAr
NDMsNyBAQCBjbGFzcyBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbik7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uPiBj
cmVhdGUoUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4sIFBsYXRmb3JtR2VzdHVyZUN1
cnZlVGFyZ2V0Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8QWN0aXZlUGxhdGZvcm1HZXN0dXJl
QW5pbWF0aW9uPiBjcmVhdGUoUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4sIFBsYXRm
b3JtR2VzdHVyZUN1cnZlVGFyZ2V0KiwgZG91YmxlIHN0YXJ0VGltZSk7CiAgICAgfkFjdGl2ZVBs
YXRmb3JtR2VzdHVyZUFuaW1hdGlvbigpOwogCiAgICAgYm9vbCBhbmltYXRlKGRvdWJsZSB0aW1l
KTsKQEAgLTUwLDYgKzUxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBBc3N1bWVzIGEg
dmFsaWQgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQgdGhhdCBvdXRsaXZlcyB0aGUgYW5pbWF0
aW9uLgogICAgIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPFBsYXRm
b3JtR2VzdHVyZUN1cnZlPiwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqKTsKKyAgICBBY3Rp
dmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZT4sIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0KiwgZG91YmxlIHN0YXJ0VGltZSk7CiAKICAg
ICBkb3VibGUgbV9zdGFydFRpbWU7CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JGaXJzdFRpY2s7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAppbmRleCAzYjYwNzYx
NDJjZGFhYzIxNGFkMDA5MzZmY2ZiM2M1MDRhM2ZkMTcwLi44OTYyY2VlOTQ0ZjExOGM1ZjNlYTcx
OWI4MzVjOWVmZjk4MjRjOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
cm9zc1RocmVhZENvcGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhy
ZWFkQ29waWVyLmgKQEAgLTQxLDYgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisg
ICAgc3RydWN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOwogICAgIGNsYXNzIEludFJlY3Q7
CiAgICAgY2xhc3MgSW50U2l6ZTsKICAgICBjbGFzcyBLVVJMOwpAQCAtNzAsNiArNzEsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3Bp
ZXJCYXNlPGZhbHNlLCBmYWxzZSwgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM+IDogcHVibGljIENy
b3NzVGhyZWFkQ29waWVyUGFzc1Rocm91Z2g8VGhyZWFkYWJsZUxvYWRlck9wdGlvbnM+IHsKICAg
ICB9OwogCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNl
LCBmYWxzZSwgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM+IDogcHVibGljIENyb3NzVGhyZWFk
Q29waWVyUGFzc1Rocm91Z2g8QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM+IHsKKyAgICB9Owor
CiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxz
ZSwgSW50UmVjdD4gOiBwdWJsaWMgQ3Jvc3NUaHJlYWRDb3BpZXJQYXNzVGhyb3VnaDxJbnRSZWN0
PiB7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1HZXN0dXJlQ3VydmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZUN1cnZlLmgKaW5kZXggOTIyMTk5MTQ3OGVhOWMxODkzZjk2YjNmZjBlZWQ3ZWY2NGM3N2M0Mi4u
ZTBlZDI0Mzk3ZmE4ODQ2ZDdhNGU0Njg4OTIxZjNiNmQzMjI4M2NhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3VydmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFBsYXRmb3Jt
R2VzdHVyZUN1cnZlVGFyZ2V0OwogCiAvLyBBYnN0cmFjdCBpbnRlcmZhY2UgZm9yIGN1cnZlcyB1
c2VkIGJ5IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi4gQQpAQCAtMzksNiArNDAsOCBA
QCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIGN1cnZlIGhhcyBmaW5pc2hlZCBh
bmQgY2FuIG5vIGxvbmdlciBiZSBhcHBsaWVkLgogICAgIHZpcnR1YWwgYm9vbCBhcHBseShkb3Vi
bGUgdGltZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqKSA9IDA7CisKKyAgICB2aXJ0dWFs
IEludFNpemUgY3VtdWxhdGl2ZVNjcm9sbCgpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCmluZGV4IDA2ZWQ1NGFjM2FjMDk2YmM0MGUx
NjVlZTI1NDdjZGE1ZDkzNDYwNWMuLmQ1ZTYzMzZjMTBhMWZmNTRhNjFlNWZlOWI3MjdhOGU1Mjc4
NGIyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hG
bGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcApAQCAtMzUsMTEgKzM1LDE3IEBAIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRvdWNoRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5
KQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlKHZlbG9jaXR5KSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUb3VjaEZsaW5nUGxhdGZv
cm1HZXN0dXJlQ3VydmUodmVsb2NpdHksIEludFNpemUoKSkpOwogfQogCi1Ub3VjaEZsaW5nUGxh
dGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBG
bG9hdFBvaW50JiB2ZWxvY2l0eSkKK1Bhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRv
dWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZl
bG9jaXR5LCBjb25zdCBJbnRTaXplJiBjdW11bGF0aXZlU2Nyb2xsKQoreworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKHZlbG9jaXR5LCBjdW11
bGF0aXZlU2Nyb2xsKSk7Cit9CisKK1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6VG91
Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBj
b25zdCBJbnRTaXplJiBjdW11bGF0aXZlU2Nyb2xsKQogICAgIDogbV92ZWxvY2l0eSh2ZWxvY2l0
eSkKKyAgICAsIG1fY3VtdWxhdGl2ZVNjcm9sbChjdW11bGF0aXZlU2Nyb2xsKQogICAgICwgbV90
aW1lU2NhbGVGYWN0b3IoMTAwMCAvIG1heCgxLmYsIG1heChmYWJzKHZlbG9jaXR5LngoKSksIGZh
YnModmVsb2NpdHkueSgpKSkpKQogewogICAgIEFTU0VSVCh2ZWxvY2l0eSAhPSBGbG9hdFBvaW50
Ojp6ZXJvKCkpOwpAQCAtNzIsNyArNzgsNyBAQCBib29sIFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZTo6YXBwbHkoZG91YmxlIHRpbWUsIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZwogICAg
ICAgICBkaXNwbGFjZW1lbnQgPSAxLjA7CiAKICAgICAvLyBLZWVwIHRyYWNrIG9mIGludGVnZXIg
cG9ydGlvbiBvZiBzY3JvbGwgdGh1cyBmYXIsIGFuZCBwcmVwYXJlIGluY3JlbWVudC4KLSAgICBJ
bnRQb2ludCBzY3JvbGwoZGlzcGxhY2VtZW50ICogbV92ZWxvY2l0eS54KCksIGRpc3BsYWNlbWVu
dCAqIG1fdmVsb2NpdHkueSgpKTsKKyAgICBJbnRTaXplIHNjcm9sbChkaXNwbGFjZW1lbnQgKiBt
X3ZlbG9jaXR5LngoKSwgZGlzcGxhY2VtZW50ICogbV92ZWxvY2l0eS55KCkpOwogICAgIEludFBv
aW50IHNjcm9sbEluY3JlbWVudChzY3JvbGwgLSBtX2N1bXVsYXRpdmVTY3JvbGwpOwogICAgIG1f
Y3VtdWxhdGl2ZVNjcm9sbCA9IHNjcm9sbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaAppbmRleCBmZDUyYmM0
ZWM3NGMwYjUyYjc1ODQ1YjQ2NjlmNjU2ZjA3ZDI1MGVlLi4xNmFlZmUyNTc0ZTUxNzhhZDgzZTUx
ZDE4NzFkMmQzN2IyOGJkMzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
b3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaApAQCAtNDEsMTYgKzQxLDE4IEBA
IGNsYXNzIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0OwogY2xhc3MgVG91Y2hGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlIDogcHVibGljIFBsYXRmb3JtR2VzdHVyZUN1cnZlIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0
IEZsb2F0UG9pbnQmIHZlbG9jaXR5KTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBJbnRT
aXplJiBjdW11bGF0aXZlU2Nyb2xsKTsKICAgICB2aXJ0dWFsIH5Ub3VjaEZsaW5nUGxhdGZvcm1H
ZXN0dXJlQ3VydmUoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBhcHBseShkb3VibGUgdGltZSwgUGxh
dGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqKTsKKyAgICB2aXJ0dWFsIEludFNpemUgY3VtdWxhdGl2
ZVNjcm9sbCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VtdWxhdGl2ZVNjcm9sbDsgfQogCiBwcml2YXRl
OgotICAgIGV4cGxpY2l0IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9h
dFBvaW50JiB2ZWxvY2l0eSk7CisgICAgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNv
bnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBJbnRTaXplJiBjdW11bGF0aXZlU2Nyb2xs
KTsKIAogICAgIEZsb2F0UG9pbnQgbV92ZWxvY2l0eTsKKyAgICBJbnRTaXplIG1fY3VtdWxhdGl2
ZVNjcm9sbDsKICAgICBmbG9hdCBtX3RpbWVTY2FsZUZhY3RvcjsKLSAgICBJbnRQb2ludCBtX2N1
bXVsYXRpdmVTY3JvbGw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlLmNwcAppbmRleCBjOWYxNzMyODk3OWNiN2M3MmZmMzlmN2VjYzIxMTEwZjQzM2JjMzk5Li5l
YmQ3ODhmZTQ1OWE2YzgxN2JhYWVhMDhiMWE5ZWMyMzQ5MmViZjhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBXaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmU6OmFwcGx5KGRvdWJsZSB0aW1lLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmcKICAgICAvLyBG
SVhNRTogY29uc2lkZXIgbWFraW5nIHRoZSB2YWx1ZSBvZiBzaWdtYSBzZXR0YWJsZSBpbiB0aGUg
Y29uc3RydWN0b3IuCiAgICAgc3RhdGljIGRvdWJsZSB0d29TaWdtYVNxdWFyZWRJbnZlcnNlID0g
MTY7IC8vIHNpZ21hID0gMC4yNQogICAgIGZsb2F0IGNkZiA9IDEgLSBleHAoLXRpbWUgKiB0aW1l
ICogdHdvU2lnbWFTcXVhcmVkSW52ZXJzZSk7Ci0gICAgSW50UG9pbnQgc2Nyb2xsKGNkZiAqIG1f
dmVsb2NpdHkueCgpLCBjZGYgKiBtX3ZlbG9jaXR5LnkoKSk7CisgICAgSW50U2l6ZSBzY3JvbGwo
Y2RmICogbV92ZWxvY2l0eS54KCksIGNkZiAqIG1fdmVsb2NpdHkueSgpKTsKICAgICBJbnRQb2lu
dCBzY3JvbGxJbmNyZW1lbnQoc2Nyb2xsIC0gbV9jdW11bGF0aXZlU2Nyb2xsKTsKICAgICBtX2N1
bXVsYXRpdmVTY3JvbGwgPSBzY3JvbGw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKaW5kZXggYjcyMTQ2MTY1
MzMzZjIzYzhjOWJiZjZjMDFkZGJmMDY3YWVlMWFjMi4uMjlmMTUxZmMxYjJmMDhhNTkxMmJlNTBm
Zjc5Y2M2OTViZDljNWFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hl
ZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKQEAgLTQ0LDEyICs0NCwxMyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+V2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKCk7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoZG91YmxlIHRpbWUsIFBsYXRmb3JtR2VzdHVyZUN1cnZl
VGFyZ2V0Kik7CisgICAgdmlydHVhbCBJbnRTaXplIGN1bXVsYXRpdmVTY3JvbGwoKSBjb25zdCB7
IHJldHVybiBtX2N1bXVsYXRpdmVTY3JvbGw7IH0KIAogcHJpdmF0ZToKICAgICBXaGVlbEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHkpOwogCiAgICAg
RmxvYXRQb2ludCBtX3ZlbG9jaXR5OwotICAgIEludFBvaW50IG1fY3VtdWxhdGl2ZVNjcm9sbDsK
KyAgICBJbnRTaXplIG1fY3VtdWxhdGl2ZVNjcm9sbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9BY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU2OGNhYTc5NjNhZjI3NjI0NGU1NmJkOTNmMWE4MWQ3NzU1NzUyNjIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BY3RpdmVX
aGVlbEZsaW5nUGFyYW1ldGVycy5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFj
dGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzX2gKKyNkZWZpbmUgQWN0aXZlV2hlZWxGbGluZ1BhcmFt
ZXRlcnNfaAorCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiSW50UG9pbnQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRl
cnMgeworICAgIEZsb2F0U2l6ZSBkZWx0YTsKKyAgICBJbnRQb2ludCBwb2ludDsKKyAgICBJbnRQ
b2ludCBnbG9iYWxQb2ludDsKKyAgICBpbnQgbW9kaWZpZXJzOworICAgIEludFNpemUgY3VtdWxh
dGl2ZVNjcm9sbDsKKyAgICBkb3VibGUgc3RhcnRUaW1lOworCisgICAgQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMoKQorICAgICAgICA6IG1vZGlmaWVycygwKQorICAgICAgICAsIHN0YXJ0VGlt
ZSgwKQorICAgIHsKKyAgICB9Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVHZXN0dXJlQW5p
bWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5jcHAKaW5kZXggYTRhZjNlNTliYzU1NzdhODg2ZjAy
OWJlNTkyZmM0OTlhZDQzYmEwMS4uN2U5Y2M2MmEwYzQ4YWIyNDk2MWRmYjBjOGY5ODlmZjJiM2Ix
OTlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJjYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRp
b24uaCIKIAorI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJjYy9DQ0dlc3R1cmVDdXJ2
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw2ICs0OCwxMSBAQCBDQ0FjdGl2ZUdl
c3R1cmVBbmltYXRpb246On5DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24oKQogewogfQogCitJbnRT
aXplIENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6Y3VtdWxhdGl2ZVNjcm9sbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fZ2VzdHVyZUN1cnZlLT5jdW11bGF0aXZlU2Nyb2xsKCk7Cit9CisKIGJv
b2wgQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOjphbmltYXRlKGRvdWJsZSB0aW1lKQogewogICAg
IGlmIChtX3dhaXRpbmdGb3JGaXJzdFRpY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVH
ZXN0dXJlQW5pbWF0aW9uLmgKaW5kZXggOWJjZDc1MzcwNGMzNTk0ZTIzYmVkMzZiNmI2NTQ5NDBh
ODU0ZDcwZC4uM2Q1MDc1OTRiMzgyMWFlNzE3ZWIwOTE5NGVjNzMwZDQ2NTUxZjYzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3Rp
dmVHZXN0dXJlQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgKQEAgLTMzLDE3ICszMywy
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDR2VzdHVyZUN1cnZlOwogY2xhc3Mg
Q0NHZXN0dXJlQ3VydmVUYXJnZXQ7CitjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBDQ0FjdGl2ZUdl
c3R1cmVBbmltYXRpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDQWN0aXZlR2VzdHVy
ZUFuaW1hdGlvbik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NBY3RpdmVHZXN0
dXJlQW5pbWF0aW9uPiBjcmVhdGUoUGFzc093blB0cjxDQ0dlc3R1cmVDdXJ2ZT4sIENDR2VzdHVy
ZUN1cnZlVGFyZ2V0Kik7CisKICAgICB+Q0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKCk7CiAKICAg
ICBib29sIGFuaW1hdGUoZG91YmxlIHRpbWUpOwogCisgICAgZG91YmxlIHN0YXJ0VGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhcnRUaW1lOyB9CisgICAgSW50U2l6ZSBjdW11bGF0aXZlU2Nyb2xs
KCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKFBhc3NP
d25QdHI8Q0NHZXN0dXJlQ3VydmU+LCBDQ0dlc3R1cmVDdXJ2ZVRhcmdldCopOworICAgIENDQWN0
aXZlR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPENDR2VzdHVyZUN1cnZlPiwgQ0NHZXN0dXJl
Q3VydmVUYXJnZXQqLCBkb3VibGUgc3RhcnRUaW1lKTsKIAogICAgIGRvdWJsZSBtX3N0YXJ0VGlt
ZTsKICAgICBkb3VibGUgbV93YWl0aW5nRm9yRmlyc3RUaWNrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHZXN0dXJlQ3VydmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR2VzdHVyZUN1
cnZlLmgKaW5kZXggNGJjMWMwZGQ4MDZkZjc2NWUzZjI0NzJkMmI2NjM2NDVkMjg5YzZhNS4uY2M3
OWY3MTgwMWU0MjJmNjI4OTIyYWI2MWU2NGU0YzgzNWI0MWM4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHZXN0dXJlQ3VydmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1
cmVDdXJ2ZS5oCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ0dlc3R1
cmVDdXJ2ZSgpIHsgfQogCiAgICAgdmlydHVhbCBib29sIGFwcGx5KGRvdWJsZSB0aW1lLCBDQ0dl
c3R1cmVDdXJ2ZVRhcmdldCopID0gMDsKKworICAgIHZpcnR1YWwgSW50U2l6ZSBjdW11bGF0aXZl
U2Nyb2xsKCkgY29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1
dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDSW5wdXRIYW5kbGVyLmgKaW5kZXggNzY2MDhkOWZjMWQwZGExMzlhNDkzMGJjNTA0N2MwOGFl
YjhiMmRmNC4uZGNkMGVlZDBlZTA2NjRkNDZkNzUxM2FmNDgwMGQyMzI1ZGZiMmIxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1
dEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0lucHV0SGFuZGxlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorc3RydWN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOwogY2xhc3MgQ0NBY3Rp
dmVHZXN0dXJlQW5pbWF0aW9uOwogY2xhc3MgQ0NHZXN0dXJlQ3VydmVUYXJnZXQ7CiBjbGFzcyBJ
bnRQb2ludDsKQEAgLTgxLDYgKzgyLDggQEAgcHVibGljOgogICAgIC8vIFJlcXVlc3QgYW5vdGhl
ciBjYWxsYmFjayB0byBDQ0lucHV0SGFuZGxlcjo6YW5pbWF0ZSgpLgogICAgIHZpcnR1YWwgdm9p
ZCBzY2hlZHVsZUFuaW1hdGlvbigpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zlcldo
ZWVsRmxpbmdBbmltYXRpb24oY29uc3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSA9IDA7
CisKIHByb3RlY3RlZDoKICAgICBDQ0lucHV0SGFuZGxlckNsaWVudCgpIHsgfQogICAgIHZpcnR1
YWwgfkNDSW5wdXRIYW5kbGVyQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcAppbmRleCAwMTc4MjBhN2M3MGUxYjkzZmM2MmE0ZGY0NzY2NDUyODY5NzAzNWExLi5iMGZm
YTUwNGI5NjY3MTc0MDYyNDkyMGI5ZDJiMmY4ZTc2NzYzYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNjL0NDTGF5ZXJU
cmVlSG9zdC5oIgogCisjaW5jbHVkZSAiQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCIKICNp
bmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0u
aCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKQEAgLTQxNCw2ICs0MTUsMTUg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbXBvc2l0ZSgpCiAgICAgc3RhdGljX2Nhc3Q8Q0NT
aW5nbGVUaHJlYWRQcm94eSo+KG1fcHJveHkuZ2V0KCkpLT5jb21wb3NpdGVJbW1lZGlhdGVseSgp
OwogfQogCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9u
KGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIC8v
IFdlIHRpY2sgYW5pbWF0aW9ucyBpbiBDQ0xheWVyVHJlZUhvc3QgdXNpbmcgY3VycmVudFRpbWUo
KSwgYnV0IHRoZSBpbXBsIHRocmVhZCB1c2VzIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
LiBSZWJhc2UgaGVyZSBiZWZvcmUgcGFzc2luZyB0aW1lcyBvdXQgdG8gdGhlIGNsaWVudC4KKyAg
ICBkb3VibGUgdGltZVNoaWZ0ID0gY3VycmVudFRpbWUoKSAtIG1vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZSgpOworICAgIEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHBhcmFtZXRlcnNXaXRo
U2hpZnRlZFRpbWUgPSBwYXJhbWV0ZXJzOworICAgIHBhcmFtZXRlcnNXaXRoU2hpZnRlZFRpbWUu
c3RhcnRUaW1lICs9IHRpbWVTaGlmdDsKKyAgICBtX2NsaWVudC0+dHJhbnNmZXJXaGVlbEZsaW5n
QW5pbWF0aW9uKHBhcmFtZXRlcnNXaXRoU2hpZnRlZFRpbWUpOworfQorCiBib29sIENDTGF5ZXJU
cmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKIHsKICAgICBpZiAoIW1fbGF5ZXJSZW5kZXJlckluaXRp
YWxpemVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDg5ZjFiZTMwN2VkZmM5
MTZkNjA5ZTA4NWEzNTUyMjY3NzYyM2VjODcuLjEyYTgzOWUxMDVmMWYyMzBmNDZkOGExZGZmNDIx
M2E5ZDhhNzY1NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC00Miw2ICs0Miw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RydWN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJh
bWV0ZXJzOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIGNsYXNzIENDVGV4dHVyZVVwZGF0
ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKQEAgLTU5LDYgKzYwLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNzKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdHJh
bnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJz
JikgPSAwOwogCiAgICAgLy8gVXNlZCBvbmx5IGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgcGF0aC4K
ICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKSA9IDA7CkBAIC0xNDMsNiArMTQ1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgeyBtX2NsaWVu
dC0+ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7IH0KICAgICB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1
ZmZlcnMoKSB7IG1fY2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7IH0KICAgICB2b2lk
IGRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciopOwor
ICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgQWN0aXZl
V2hlZWxGbGluZ1BhcmFtZXRlcnMmKTsKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdlIHNob3Vs
ZCBhYm9ydCB0aGlzIGZyYW1lIGR1ZSB0byBpbml0aWFsaXphdGlvbiBmYWlsdXJlLgogICAgIGJv
b2wgdXBkYXRlTGF5ZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAKaW5kZXggZGQyZDQyYTQ3MTdhYWEwZWZhNWJhY2M4YTNjMjlmMjZiMDI0ZGI4OC4uOGVjNWQ0
ZGI0OTFiNjhkMmFkNzE0Njg1MjZlMmY4YTQ5MzBhMjIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTE4Niw2ICsxODYsMTEgQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpzY2hlZHVsZUFuaW1hdGlvbigpCiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVk
cmF3T25JbXBsVGhyZWFkKCk7CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6dHJhbnNm
ZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQoreworICAgIG1fY2xpZW50LT50cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb25U
b01haW5UaHJlYWRPbkltcGxUaHJlYWQocGFyYW1ldGVycyk7Cit9CisKIHZvaWQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6dHJhY2tEYW1hZ2VGb3JBbGxTdXJmYWNlcyhDQ0xheWVySW1wbCogcm9vdERy
YXdMYXllciwgY29uc3QgQ0NMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCiB7CiAg
ICAgLy8gRm9yIG5vdywgd2UgdXNlIGRhbWFnZSB0cmFja2luZyB0byBjb21wdXRlIGEgZ2xvYmFs
IHNjaXNzb3IuIFRvIGRvIHRoaXMsIHdlIG11c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuaAppbmRleCAwZGFlNjA0NjgyNDJlOWIxNDI2NjdkNzA3Y2ExZTViOTQwMmRiZTIxLi41
MDU4NjI5MWZkOGRmMzE0NGE1OGQ3Njk3YmIwNjZiNWQxM2RlOTg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorc3RydWN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOwogY2xhc3MgQ0NBY3Rp
dmVHZXN0dXJlQW5pbWF0aW9uOwogY2xhc3MgQ0NDb21wbGV0aW9uRXZlbnQ7CiBjbGFzcyBDQ1Bh
Z2VTY2FsZUFuaW1hdGlvbjsKQEAgLTU1LDYgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RB
bmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1h
dGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvblRvTWFpblRocmVhZE9uSW1wbFRocmVh
ZChjb25zdCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpID0gMDsKIH07CiAKIC8vIENDTGF5
ZXJUcmVlSG9zdEltcGwgb3ducyB0aGUgQ0NMYXllckltcGwgdHJlZSBhcyB3ZWxsIGFzIGFzc29j
aWF0ZWQgcmVuZGVyaW5nIHN0YXRlCkBAIC03Niw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICAvLyBU
byBjbGVhciBhbiBhY3RpdmUgYW5pbWF0aW9uLCBwYXNzIG51bGxwdHIuCiAgICAgdmlydHVhbCB2
b2lkIHNldEFjdGl2ZUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0cjxDQ0FjdGl2ZUdlc3R1cmVB
bmltYXRpb24+KTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IEFjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzJik7CiAKICAgICAvLyBWaXJ0dWFsIGZvciB0ZXN0aW5nLgogICAgIHZp
cnR1YWwgdm9pZCBiZWdpbkNvbW1pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oCmluZGV4IGViYmQ5NmUyYzM4ODIyMTg5ZDJiOTBiMjFlNmQ5NzZhMzY3YzBlOWMuLmY4MzBh
OGY3MjhiODJlZWFmZTUxZGI2NjdiNDYzM2YwNDkwOWQ4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmgKQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpIHsgbV9sYXllclRyZWVIb3N0LT5zZXRO
ZWVkc0NvbW1pdCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhy
ZWFkKCkgeyBtX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzQ29tbWl0KCk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNzT3du
UHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpOworICAg
IHZvaWQgdHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFkT25JbXBsVGhyZWFk
KGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogCiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBsZWdhY3kgcGF0aCB3aGVyZSBSZW5kZXJXaWRn
ZXQgZG9lcyB0aGUgc2NoZWR1bGluZy4KICAgICB2b2lkIGNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IGUxNjc1MjIzYzU0ODA3N2JmNDBjYmJh
YjNkZmViZDlmNmIyYjgyODUuLjgzZDViOWZiMDljYmNhMWE3YjVhNmE5NjgyOThhZWJjZmU5Mzc5
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNp
bmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCiAKKyNpbmNsdWRlICJBY3RpdmVXaGVlbEZsaW5n
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAi
VHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaCIKQEAg
LTI5Niw2ICsyOTcsMTkgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpwb3N0QW5pbWF0aW9uRXZlbnRz
VG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmkKICAgICBtX21haW5UaHJl
YWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5
OjpzZXRBbmltYXRpb25FdmVudHMsIGV2ZW50cywgd2FsbENsb2NrVGltZSkpOwogfQogCit2b2lk
IENDVGhyZWFkUHJveHk6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvblRvTWFpblRocmVhZE9u
SW1wbFRocmVhZChjb25zdCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
K3sKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQw
KCJjYyIsICJDQ1RocmVhZFByb3h5Ojp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb25Ub01haW5U
aHJlYWRPbkltcGxUaHJlYWQiKTsKKyAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3Jl
YXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojp0cmFuc2ZlcldoZWVsRmxpbmdB
bmltYXRpb24sIHBhcmFtZXRlcnMpKTsKK30KKwordm9pZCBDQ1RocmVhZFByb3h5Ojp0cmFuc2Zl
cldoZWVsRmxpbmdBbmltYXRpb24oQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMgcGFyYW1ldGVy
cykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+
dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKHBhcmFtZXRlcnMpOworfQorCiB2b2lkIENDVGhy
ZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3KCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwpAQCAtMzk0LDcgKzQwOCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9u
QmVnaW5GcmFtZSgpCiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpzY2hl
ZHVsZWRBY3Rpb25CZWdpbkZyYW1lIik7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdCZWdpbkZyYW1l
UmVxdWVzdCk7CiAgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QgPSBhZG9wdFB0cihuZXcg
QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKCkpOwotICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1
ZXN0LT5mcmFtZUJlZ2luVGltZSA9IDA7CisgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3Qt
PmZyYW1lQmVnaW5UaW1lID0gY3VycmVudFRpbWUoKTsKICAgICBtX3BlbmRpbmdCZWdpbkZyYW1l
UmVxdWVzdC0+c2Nyb2xsSW5mbyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByb2Nlc3NTY3JvbGxE
ZWx0YXMoKTsKIAogICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVh
ZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWUpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaAppbmRleCA5ZTUyNGE3NjNlMjg1MGZkMjA5YzEzZTM1MjYxMmVjNWNhMzA0OWUxLi5k
OThhODBmYmVjOTJkYWMzYTQ4NWY5NDQ1OTAzY2JlNmViMWJmMjczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oCkBAIC03Niw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21t
aXRPbkltcGxUaHJlYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1Rv
TWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9y
PiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVs
RmxpbmdBbmltYXRpb25Ub01haW5UaHJlYWRPbkltcGxUaHJlYWQoY29uc3QgQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnMmKTsKIAogICAgIC8vIENDU2NoZWR1bGVyQ2xpZW50IGltcGxlbWVudGF0
aW9uCiAgICAgdmlydHVhbCBib29sIGNhbkRyYXcoKTsKQEAgLTEwNSw2ICsxMDYsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0QW5pbWF0aW9uRXZlbnRzKFBhc3NPd25QdHI8Q0NBbmltYXRpb25F
dmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSk7CiAgICAgdm9pZCBiZWdpbkNvbnRl
eHRSZWNyZWF0aW9uKCk7CiAgICAgdm9pZCB0cnlUb1JlY3JlYXRlQ29udGV4dCgpOworICAgIHZv
aWQgdHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJz
KTsKIAogICAgIC8vIENhbGxlZCBvbiBpbXBsIHRocmVhZAogICAgIHN0cnVjdCBSZWFkYmFja1Jl
cXVlc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCmluZGV4IDk2YTc5ODdmMzMzZTY3MTA3YTRi
ZjljOGM4ZmMwMGJkZThlZmI4MzQuLjhkYTIzMTNhYTZlNGM3YjAyNTYzNDkyZmMwOTA0ZGI0ODc5
OWRlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lu
Y2x1ZGUgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgiCiAKKyNpbmNsdWRlICJBY3Rp
dmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZl
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgiCiAj
aW5jbHVkZSAiVHJhY2VFdmVudC5oIgpAQCAtNjgsNiArNjksMTEgQEAgcHVibGljOgogICAgICAg
ICBtX3RhcmdldC0+c2Nyb2xsQnkoc2Nyb2xsRGVsdGEpOwogICAgIH0KIAorICAgIHZpcnR1YWwg
SW50U2l6ZSBjdW11bGF0aXZlU2Nyb2xsKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2N1cnZlLT5jdW11bGF0aXZlU2Nyb2xsKCk7CisgICAgfQorCiBwcml2YXRlOgogICAgIFBsYXRm
b3JtR2VzdHVyZVRvQ0NHZXN0dXJlQWRhcHRlcihQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1
cnZlPiBjdXJ2ZSkKICAgICAgICAgOiBtX2N1cnZlKGN1cnZlKQpAQCAtMjU4LDkgKzI2NCwxMSBA
QCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAogICAgIHN3aXRjaCAoc2Nyb2xsU3RhdHVzKSB7CiAg
ICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZDogewogICAgICAgICBU
UkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6
OmhhbmRsZUdlc3R1cmVGbGluZzo6c3RhcnRlZCIpOwotICAgICAgICBPd25QdHI8UGxhdGZvcm1H
ZXN0dXJlQ3VydmU+IGZsaW5nQ3VydmUgPSBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6
OmNyZWF0ZShGbG9hdFBvaW50KC1nZXN0dXJlRXZlbnQuZGVsdGFYLCAtZ2VzdHVyZUV2ZW50LmRl
bHRhWSkpOworICAgICAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGZsaW5nQ3VydmUg
PSBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShGbG9hdFBvaW50KGdlc3R1
cmVFdmVudC5kZWx0YVgsIGdlc3R1cmVFdmVudC5kZWx0YVkpKTsKICAgICAgICAgbV93aGVlbEZs
aW5nQW5pbWF0aW9uID0gQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGUoUGxhdGZvcm1H
ZXN0dXJlVG9DQ0dlc3R1cmVBZGFwdGVyOjpjcmVhdGUoZmxpbmdDdXJ2ZS5yZWxlYXNlKCkpLCB0
aGlzKTsKLSAgICAgICAgbV93aGVlbEZsaW5nUG9pbnQgPSBJbnRQb2ludChnZXN0dXJlRXZlbnQu
eCwgZ2VzdHVyZUV2ZW50LnkpOworICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmRlbHRh
ID0gRmxvYXRTaXplKGdlc3R1cmVFdmVudC5kZWx0YVgsIGdlc3R1cmVFdmVudC5kZWx0YVkpOwor
ICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnBvaW50ID0gSW50UG9pbnQoZ2VzdHVyZUV2
ZW50LngsIGdlc3R1cmVFdmVudC55KTsKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5n
bG9iYWxQb2ludCA9IEludFBvaW50KGdlc3R1cmVFdmVudC5nbG9iYWxYLCBnZXN0dXJlRXZlbnQu
Z2xvYmFsWSk7CiAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY2hlZHVsZUFuaW1hdGlv
bigpOwogICAgICAgICByZXR1cm4gRGlkSGFuZGxlOwogICAgIH0KQEAgLTMwOSwzMCArMzE3LDM1
IEBAIHZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5KGNvbnN0IElu
dFBvaW50JiBpbmNyZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRSQUNFX0VWRU5UMigi
Y2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5IiwgIngiLCBpbmNy
ZW1lbnQueCgpLCAieSIsIGluY3JlbWVudC55KCkpOwotCi0gICAgV2ViTW91c2VXaGVlbEV2ZW50
IGV2ZW50OwotICAgIGV2ZW50LnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsOwotICAg
IGV2ZW50LmRlbHRhWCA9IC1pbmNyZW1lbnQueCgpOwotICAgIGV2ZW50LmRlbHRhWSA9IC1pbmNy
ZW1lbnQueSgpOwotICAgIGV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB0cnVlOwot
ICAgIGV2ZW50LnggPSBtX3doZWVsRmxpbmdQb2ludC54KCk7Ci0gICAgZXZlbnQueSA9IG1fd2hl
ZWxGbGluZ1BvaW50LnkoKTsKLQotICAgIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpF
dmVudERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uID0gaGFuZGxlSW5wdXRFdmVudEludGVybmFsKGV2
ZW50KTsKKyAgICBXZWJNb3VzZVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWw7CisgICAgc3ludGhl
dGljV2hlZWwudHlwZSA9IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWw7CisgICAgc3ludGhldGlj
V2hlZWwuZGVsdGFYID0gaW5jcmVtZW50LngoKTsKKyAgICBzeW50aGV0aWNXaGVlbC5kZWx0YVkg
PSBpbmNyZW1lbnQueSgpOworICAgIHN5bnRoZXRpY1doZWVsLmhhc1ByZWNpc2VTY3JvbGxpbmdE
ZWx0YXMgPSB0cnVlOworICAgIHN5bnRoZXRpY1doZWVsLnggPSBtX3doZWVsRmxpbmdQYXJhbWV0
ZXJzLnBvaW50LngoKTsKKyAgICBzeW50aGV0aWNXaGVlbC55ID0gbV93aGVlbEZsaW5nUGFyYW1l
dGVycy5wb2ludC55KCk7CisgICAgc3ludGhldGljV2hlZWwuZ2xvYmFsWD0gbV93aGVlbEZsaW5n
UGFyYW1ldGVycy5nbG9iYWxQb2ludC54KCk7CisgICAgc3ludGhldGljV2hlZWwuZ2xvYmFsWSA9
IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZ2xvYmFsUG9pbnQueSgpOworICAgIHN5bnRoZXRpY1do
ZWVsLm1vZGlmaWVycyA9IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMubW9kaWZpZXJzOworCisgICAg
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gZGlzcG9zaXRp
b24gPSBoYW5kbGVJbnB1dEV2ZW50SW50ZXJuYWwoc3ludGhldGljV2hlZWwpOwogICAgIHN3aXRj
aCAoZGlzcG9zaXRpb24pIHsKICAgICBjYXNlIERpZEhhbmRsZToKICAgICBjYXNlIERyb3BFdmVu
dDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaWROb3RIYW5kbGU6CiAgICAgICAgIFRSQUNF
X0VWRU5UX0lOU1RBTlQwKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Ny
b2xsQnk6OkFib3J0RmxpbmciKTsKLSAgICAgICAgLy8gRklYTUU6IElmIHdlIGdvdCBhIERpZE5v
dEhhbmRsZSwgdGhhdCBtZWFucyB3ZSBuZWVkIHRvIGRlbGl2ZXIgd2hlZWxzIG9uIHRoZSBtYWlu
IHRocmVhZC4KKyAgICAgICAgLy8gSWYgd2UgZ290IGEgRGlkTm90SGFuZGxlLCB0aGF0IG1lYW5z
IHdlIG5lZWQgdG8gZGVsaXZlciB3aGVlbHMgb24gdGhlIG1haW4gdGhyZWFkLgogICAgICAgICAv
LyBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0byBzY2hlZHVsZSBhIGNvbW1pdCBhbmQgdHJhbnNmZXIg
dGhlIGZsaW5nIGN1cnZlIG92ZXIgdG8gdGhlIG1haW4KICAgICAgICAgLy8gdGhyZWFkIGFuZCBy
dW4gdGhlIHJlc3Qgb2YgdGhlIHdoZWVscyBmcm9tIHRoZXJlLgogICAgICAgICAvLyBUaGlzIGNh
biBoYXBwZW4gd2hlbiBmbGluZ2luZyBhIHBhZ2UgdGhhdCBjb250YWlucyBhIHNjcm9sbGFibGUg
c3ViYXJlYSB0aGF0IHdlIGNhbid0CiAgICAgICAgIC8vIHNjcm9sbCBvbiB0aGUgdGhyZWFkIGlm
IHRoZSBmbGluZyBzdGFydHMgb3V0c2lkZSB0aGUgc3ViYXJlYSBidXQgdGhlbiBpcyBmbHVuZyAi
dW5kZXIiIHRoZQogICAgICAgICAvLyBwb2ludGVyLgotICAgICAgICAvLyBGb3Igbm93LCBqdXN0
IGFib3J0IHRoZSBmbGluZy4KKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5zdGFydFRp
bWUgPSBtX3doZWVsRmxpbmdBbmltYXRpb24tPnN0YXJ0VGltZSgpOworICAgICAgICBtX3doZWVs
RmxpbmdQYXJhbWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGwgPSBtX3doZWVsRmxpbmdBbmltYXRpb24t
PmN1bXVsYXRpdmVTY3JvbGwoKTsKKyAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnRyYW5z
ZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihtX3doZWVsRmxpbmdQYXJhbWV0ZXJzKTsKICAgICAgICAg
Y2FuY2VsQ3VycmVudEZsaW5nKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsLmgKaW5kZXggOTgwOTAyOWQyYjBiNDY5OGM1N2JmYmU1MTEyNjZhYjc5OTU2NjVm
ZC4uMWUzOGUyNGU0NmFiYTg3OGM1NmY2NWFjY2YyZjllNmNiNjI0OTAyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsX2gKICNkZWZpbmUgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxfaAogCi0j
aW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgpAQCAtNDEsNiArNDEs
NyBAQCBjbGFzcyBNdXRleDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW50UG9p
bnQ7CiBjbGFzcyBDQ0dlc3R1cmVDdXJ2ZVRhcmdldDsKIGNsYXNzIENDSW5wdXRIYW5kbGVyQ2xp
ZW50OwogY2xhc3MgQ0NUaHJlYWQ7CkBAIC04NCw3ICs4NSw4IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBjYW5jZWxDdXJyZW50RmxpbmcoKTsKIAogICAgIE93blB0cjxXZWJDb3JlOjpDQ0FjdGl2ZUdl
c3R1cmVBbmltYXRpb24+IG1fd2hlZWxGbGluZ0FuaW1hdGlvbjsKLSAgICBXZWJDb3JlOjpJbnRQ
b2ludCBtX3doZWVsRmxpbmdQb2ludDsgLy8gUG9pbnRlciBwb3NpdGlvbiBmb3IgdGhlIGN1cnJl
bnQgZmxpbmcuCisgICAgLy8gUGFyYW1ldGVycyBmb3IgdGhlIGFjdGl2ZSBmbGluZyBhbmltYXRp
b24sIHN0b3JlZCBpbiBjYXNlIHdlIG5lZWQgdG8gdHJhbnNmZXIgaXQgb3V0IGxhdGVyLgorICAg
IFdlYkNvcmU6OkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIG1fd2hlZWxGbGluZ1BhcmFtZXRl
cnM7CiAKICAgICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKICAg
ICBpbnQgbV9pZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCmluZGV4IDMzNTg3OWI2NjA1MzRhNGJjNzU3ZTUxNzc0
ZjMyZmZkYzY3ZTdmZWMuLjZjOGQ2ZWQzYThlNzEwZWIyYTE2MjFiMDRjNmYxN2QwNmQ5YjI3NDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3
SW1wbC5jcHAKQEAgLTI2LDE2ICsyNiwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIldlYkxheWVyVHJlZVZpZXdJbXBsLmgiCiAKKyNpbmNsdWRlICJBY3RpdmVXaGVlbEZsaW5n
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkNDVGhyZWFkSW1wbC5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNs
dWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViR3JhcGhpY3ND
b250ZXh0M0QuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllci5oIgotI2luY2x1ZGUgInBs
YXRmb3JtL1dlYkxheWVyVHJlZVZpZXcuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllclRy
ZWVWaWV3Q2xpZW50LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgogI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlRocmVhZC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVycy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFBvaW50Lmg+CisjaW5j
bHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CisjaW5jbHVkZSA8cHVibGljL1dl
YkxheWVyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJQ
b2ludC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC0xMDcsNiArMTExLDIwIEBAIHZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6
OmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKQogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVT
d2FwQnVmZmVycygpOwogfQogCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjp0cmFuc2Zlcldo
ZWVsRmxpbmdBbmltYXRpb24oY29uc3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCit7CisgICAgaWYgKG1fY2xpZW50KSB7CisgICAgICAgIFdlYkFjdGl2ZVdoZWVsRmxp
bmdQYXJhbWV0ZXJzIHdlYlBhcmFtZXRlcnM7CisgICAgICAgIHdlYlBhcmFtZXRlcnMuZGVsdGEg
PSBXZWJGbG9hdFBvaW50KHBhcmFtZXRlcnMuZGVsdGEud2lkdGgoKSwgcGFyYW1ldGVycy5kZWx0
YS5oZWlnaHQoKSk7CisgICAgICAgIHdlYlBhcmFtZXRlcnMucG9pbnQgPSBwYXJhbWV0ZXJzLnBv
aW50OworICAgICAgICB3ZWJQYXJhbWV0ZXJzLmdsb2JhbFBvaW50ID0gcGFyYW1ldGVycy5wb2lu
dDsKKyAgICAgICAgd2ViUGFyYW1ldGVycy5tb2RpZmllcnMgPSBwYXJhbWV0ZXJzLm1vZGlmaWVy
czsKKyAgICAgICAgd2ViUGFyYW1ldGVycy5zdGFydFRpbWUgPSBwYXJhbWV0ZXJzLnN0YXJ0VGlt
ZTsKKyAgICAgICAgd2ViUGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsID0gcGFyYW1ldGVycy5j
dW11bGF0aXZlU2Nyb2xsOworICAgICAgICBtX2NsaWVudC0+dHJhbnNmZXJXaGVlbEZsaW5nQW5p
bWF0aW9uKHdlYlBhcmFtZXRlcnMpOworICAgIH0KK30KKwogdm9pZCBXZWJMYXllclRyZWVWaWV3
SW1wbDo6c2NoZWR1bGVDb21wb3NpdGUoKQogewogICAgIGlmIChtX2NsaWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCmluZGV4IGIx
YjI2ZDBmYzMzODYwNGZlNWNmMzgwNzFmNTBhOGMzNTg2NDUyZmIuLjZhOTQ5NDJmMDkzYTJhZjQ1
N2Q5MTFlMzc5NGIzOTM4MDYwYThjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaApAQCAtMzAsNiArMzAsMTAgQEAKICNpbmNsdWRl
ICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM7Cit9
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViTGF5ZXI7CiBjbGFzcyBXZWJMYXllclRy
ZWVWaWV3Q2xpZW50OwpAQCAtNDgsNiArNTIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNzKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q29tbWl0QW5kRHJhd0ZyYW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1
ZmZlcnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGNv
bnN0IFdlYkNvcmU6OkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJik7CiAKICAgICAvLyBPbmx5
IHVzZWQgaW4gdGhlIHNpbmdsZSB0aHJlYWRlZCBwYXRoLgogICAgIHZpcnR1YWwgdm9pZCBzY2hl
ZHVsZUNvbXBvc2l0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCmluZGV4IDRmNTljOTAwNWU2OTFmZDkyZTZjODhhYmY5ZWViODM1ZWYwYjU3MDMuLmEyMDI1
ODZjOWQ1MDE0M2I5ZjhkY2RkZWYwNTQ4OTg1NzM5N2ZkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTMxLDExICszMSwxMCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAKKyNpbmNsdWRlICJBWE9iamVj
dENhY2hlLmgiCiAjaW5jbHVkZSAiQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmgiCiAj
aW5jbHVkZSAiQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuaCIKLSNpbmNsdWRlICJBWE9iamVjdENh
Y2hlLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0Q2hyb21pdW0uaCIKLSNpbmNsdWRlICJj
Yy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNT
U1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKQEAgLTExOSwzMiArMTE4LDM1
IEBACiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRvckltcGwuaCIKICNpbmNsdWRlICJXZWJEZXZUb29s
c0FnZW50SW1wbC5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRQcml2YXRlLmgiCi0jaW5j
bHVkZSAicGxhdGZvcm0vV2ViRHJhZ0RhdGEuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIK
LSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgInBs
YXRmb3JtL1dlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnRDb252ZXJzaW9uLmgi
CiAjaW5jbHVkZSAiV2ViS2l0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1T
dXBwb3J0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXIuaCIKLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJMYXllclRyZWVWaWV3LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXJBY3Rpb24u
aCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luLmgiCiAjaW5jbHVk
ZSAiV2ViUGx1Z2luQWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVySW1wbC5o
IgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBvaW50LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51
SW1wbC5oIgogI2luY2x1ZGUgIldlYlJhbmdlLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViUmVj
dC5oIgogI2luY2x1ZGUgIldlYlJ1bnRpbWVGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYlNldHRp
bmdzSW1wbC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgotI2luY2x1ZGUgInBs
YXRmb3JtL1dlYlZlY3Rvci5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRl
ICJXaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYkRyYWdEYXRhLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViSW1hZ2UuaCIKKyNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKKyNpbmNsdWRl
IDxwdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaD4KKyNpbmNsdWRlIDxwdWJs
aWMvV2ViRmxvYXRQb2ludC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQz
RC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJM
YXllclRyZWVWaWV3Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlBvaW50Lmg+CisjaW5jbHVkZSA8
cHVibGljL1dlYlJlY3QuaD4KICNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTYzMCw2
ICs2MzIsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVy
ZUV2ZW50JiBldmVudCkKIHsKICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKICAgICBjYXNlIFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OiB7CisgICAgICAgIFRSQUNFX0VWRU5UX0lO
U1RBTlQyKCJ3ZWJraXQiLCAiV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudDo6R2VzdHVyZUZsaW5n
U3RhcnQiLCAiZGVsdGFYIiwgZXZlbnQuZGVsdGFYLCAiZGVsdGFZIiwgZXZlbnQuZGVsdGFZKTsK
ICAgICAgICAgbV9sYXN0V2hlZWxQb3NpdGlvbiA9IFdlYlBvaW50KGV2ZW50LngsIGV2ZW50Lnkp
OwogICAgICAgICBtX2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9uID0gV2ViUG9pbnQoZXZlbnQuZ2xv
YmFsWCwgZXZlbnQuZ2xvYmFsWSk7CiAgICAgICAgIG1fZmxpbmdNb2RpZmllciA9IGV2ZW50Lm1v
ZGlmaWVyczsKQEAgLTYzOSw2ICs2NDIsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpnZXN0dXJlRXZl
bnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOgorICAgICAg
ICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgid2Via2l0IiwgIldlYlZpZXdJbXBsOjpnZXN0dXJlRXZl
bnQ6Okdlc3R1cmVGbGluZ0NhbmNlbCIpOwogICAgICAgICBtX2dlc3R1cmVBbmltYXRpb24uY2xl
YXIoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlU2Nyb2xsQmVnaW46CkBAIC02NTksNiArNjYzLDE4IEBAIGJvb2wgV2ViVmlld0ltcGw6Omdl
c3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGNv
bnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIFRS
QUNFX0VWRU5UX0lOU1RBTlQwKCJ3ZWJraXQiLCAiV2ViVmlld0ltcGw6OnRyYW5zZmVyV2hlZWxG
bGluZ0FuaW1hdGlvbiIpOworICAgIEFTU0VSVCghbV9nZXN0dXJlQW5pbWF0aW9uKTsKKyAgICBt
X2xhc3RXaGVlbFBvc2l0aW9uID0gcGFyYW1ldGVycy5wb2ludDsKKyAgICBtX2xhc3RXaGVlbEds
b2JhbFBvc2l0aW9uID0gcGFyYW1ldGVycy5nbG9iYWxQb2ludDsKKyAgICBtX2ZsaW5nTW9kaWZp
ZXIgPSBwYXJhbWV0ZXJzLm1vZGlmaWVyczsKKyAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3Vy
dmU+IGN1cnZlID0gVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUocGFyYW1l
dGVycy5kZWx0YSwgcGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsKTsKKyAgICBtX2dlc3R1cmVB
bmltYXRpb24gPSBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZShjdXJ2ZS5y
ZWxlYXNlKCksIHRoaXMsIHBhcmFtZXRlcnMuc3RhcnRUaW1lKTsKKyAgICBzY2hlZHVsZUFuaW1h
dGlvbigpOworfQorCiB2b2lkIFdlYlZpZXdJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihj
b25zdCBJbnRQb2ludCYgc2Nyb2xsLCBib29sIHVzZUFuY2hvciwgZmxvYXQgbmV3U2NhbGUsIGRv
dWJsZSBkdXJhdGlvblNlYykKIHsKICAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDIyOTM4YWQ2YmQ2
YzQ5NzVmNzRmZTM3ZTQxNTQ4N2ZlZWNhMTIxNWIuLjA2M2Q4ZjcyMDNjMTA0ODQ4MjQ1ZDNjYjg3
ZDM4YzcxNmJmZmJlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aApAQCAtMjYxLDYgKzI2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0
QW5kRHJhd0ZyYW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMo
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgdHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQ
YXJhbWV0ZXJzJik7CiAKICAgICAvLyBXZWJWaWV3SW1wbAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4
IGExOTJiYTU1N2JmMGVhMTZjMjFlNGMwNDI0MmNiMjVkMDkwYTE3NjMuLmE0YWViMDZiMGQ3NWE2
ZTdjYzI1ZGYzZWUxZWY3MWMwZWYyOTJmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC01NCw2ICs1
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJl
YWQoKSB7IG1fZGlkUmVxdWVzdFJlZHJhdyA9IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKSB7IG1fZGlkUmVxdWVzdENvbW1pdCA9IHRydWU7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRo
cmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9j
a1RpbWUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb25U
b01haW5UaHJlYWRPbkltcGxUaHJlYWQoY29uc3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMm
KSB7IH0KIAogICAgIHN0YXRpYyB2b2lkIGV4cGVjdENsZWFyZWRTY3JvbGxEZWx0YXNSZWN1cnNp
dmUoQ0NMYXllckltcGwqIGxheWVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDcwMmJiZjE2MzliNDNi
MTZhZWYzYWJiNjYwNjI5MDQ5OGMwZDY2MTUuLmZjZmUxYjYyM2EyOTM5YzcxZDljYTY2NzhhN2Q0
OWE3NTljNDgxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMjU2LDYgKzI1Niw4IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihj
b25zdCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpIHsgfQorCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IE1vY2tMYXllclRyZWVIb3N0Q2xpZW50KFRlc3RIb29rcyogdGVzdEhvb2tzKSA6IG1f
dGVzdEhvb2tzKHRlc3RIb29rcykgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgKaW5kZXggMzg4NzZkNzM3
ZmI1MmFhNmQwM2M3MWJmZmU0MTcyOGM4Y2NjZjBiNS4uOGRkYjEwYThhMjU5Y2E2ZDkwZjBiM2Jk
MmYzZWViY2ZlMGFlYTg4MiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNzKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0
ZXJzJikgeyB9CiAKICAgICAvLyBVc2VkIG9ubHkgaW4gdGhlIHNpbmdsZS10aHJlYWRlZCBwYXRo
LgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbFRlc3QuY3BwCmluZGV4IGZhODI0N2IxMTBjMDdlYjE1N2ZkNTQ0OTAyNjQ5
ZTFkYjUwZjBkMDYuLjg5YmI1NzgzZTRhMGRjODhkMjZjMzhjYzdiOTA5ODNiOWZmMjdmMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAKQEAgLTYyLDYgKzYyLDggQEAgcHVi
bGljOgogICAgIE1PQ0tfTUVUSE9EMShzY3JvbGxCeSwgdm9pZChjb25zdCBXZWJDb3JlOjpJbnRT
aXplJikpOwogICAgIE1PQ0tfTUVUSE9EMChzY3JvbGxFbmQsIHZvaWQoKSk7CiAKKyAgICBNT0NL
X01FVEhPRDEodHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uLCB2b2lkKGNvbnN0IFdlYkNvcmU6
OkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikpOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0YXJn
ZXRQb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBhbmNob3JQb2ludCwKQEAgLTMzOSw3ICszNDEsMTUgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nQW5pbWF0ZXMpCiAgICAgLy8gT24gdGhl
IGZsaW5nIHN0YXJ0LCB3ZSBzaG91bGQgc2NoZWR1bGUgYW4gYW5pbWF0aW9uIGJ1dCBub3QgYWN0
dWFsbHkgc3RhcnQKICAgICAvLyBzY3JvbGxpbmcuCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0
OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKLSAgICBnZXN0dXJlLmRlbHRhWCA9
IC0xMDAwOworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBmbGluZ0RlbHRhID0gV2ViQ29yZTo6Rmxv
YXRTaXplKDEwMDAsIDApOworICAgIFdlYkNvcmU6OkludFBvaW50IGZsaW5nUG9pbnQgPSBXZWJD
b3JlOjpJbnRQb2ludCg3LCAxMyk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgZmxpbmdHbG9iYWxQ
b2ludCA9IFdlYkNvcmU6OkludFBvaW50KDE3LCAyMyk7CisgICAgZ2VzdHVyZS5kZWx0YVggPSBm
bGluZ0RlbHRhLndpZHRoKCk7CisgICAgZ2VzdHVyZS5kZWx0YVkgPSBmbGluZ0RlbHRhLmhlaWdo
dCgpOworICAgIGdlc3R1cmUueCA9IGZsaW5nUG9pbnQueCgpOworICAgIGdlc3R1cmUueSA9IGZs
aW5nUG9pbnQueSgpOworICAgIGdlc3R1cmUuZ2xvYmFsWCA9IGZsaW5nR2xvYmFsUG9pbnQueCgp
OworICAgIGdlc3R1cmUuZ2xvYmFsWSA9IGZsaW5nR2xvYmFsUG9pbnQueSgpOwogICAgIEVYUEVD
VF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsK
ICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4o
dGVzdGluZzo6XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1
cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKQEAgLTM1
NiwyNCArMzY2LDM2IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3Qs
IGdlc3R1cmVGbGluZ0FuaW1hdGVzKQogCiAgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xl
YXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKIAotICAgIC8vIFRo
ZSBzZWNvbmQgY2FsbCBzaG91bGQgc3RhcnQgc2Nyb2xsaW5nIGluIHRoZSArWCBkaXJlY3Rpb24u
CisgICAgLy8gVGhlIHNlY29uZCBjYWxsIHNob3VsZCBzdGFydCBzY3JvbGxpbmcgaW4gdGhlIC1Y
IGRpcmVjdGlvbi4KICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwg
c2NoZWR1bGVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAu
V2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpT
Y3JvbGxTdGFydGVkKSk7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGll
bnQsIHNjcm9sbEJ5KHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjp3aWR0aCwg
dGVzdGluZzo6R3QoMCkpKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJD
bGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjp3aWR0
aCwgdGVzdGluZzo6THQoMCkpKSk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQsIHNjcm9sbEVuZCgpKTsKICAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4x
KTsKIAogICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21v
Y2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CiAKICAgICAvLyBMZXQncyBzYXkgb24gdGhlIHRoaXJk
IGNhbGwgd2UgaGl0IGEgbm9uLXNjcm9sbGFibGUgcmVnaW9uLiBXZSBzaG91bGQgYWJvcnQgdGhl
IGZsaW5nIGFuZCBub3Qgc2Nyb2xsLgotICAgIC8vIEZJWE1FOiBXZSBhbHNvIG5lZWQgdG8gZG8g
c29tZSB3b3JrIHRvIHRyYW5zZmVyIHRoZSByZXN0IG9mIHRoaXMgZmxpbmcgdG8gdGhlIG1haW4g
dGhyZWFkLgotICAgIC8vIEFkZCB0ZXN0cyBmb3IgdGhpcyBvbmNlIGl0J3MgaW1wbGVtZW50ZWQu
CisgICAgLy8gV2UgYWxzbyBzaG91bGQgcGFzcyB0aGUgY3VycmVudCBmbGluZyBwYXJhbWV0ZXJz
IG91dCB0byB0aGUgY2xpZW50IHNvIHRoZSByZXN0IG9mIHRoZSBmbGluZyBjYW4gYmUKKyAgICAv
LyB0cmFuc2ZlcnJlZCB0byB0aGUgbWFpbiB0aHJlYWQuCiAgICAgRVhQRUNUX0NBTEwobV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9D
QUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0
ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpD
Q0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKSk7CiAgICAgRVhQRUNUX0NBTEwobV9t
b2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsK
ICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkp
LlRpbWVzKDApOworCisgICAgLy8gRXhwZWN0ZWQgd2hlZWwgZmxpbmcgYW5pbWF0aW9uIHBhcmFt
ZXRlcnM6CisgICAgLy8gKikgZmxpbmdEZWx0YSBhbmQgZmxpbmdQb2ludCBzaG91bGQgbWF0Y2gg
dGhlIG9yaWdpbmFsIEdlc3R1cmVGbGluZ1N0YXJ0IGV2ZW50CisgICAgLy8gKikgc3RhcnRUaW1l
IHNob3VsZCBiZSAxMCB0byBtYXRjaCB0aGUgdGltZSBwYXJhbWV0ZXIgb2YgdGhlIGZpcnN0IGFu
aW1hdGUoKSBjYWxsIGFmdGVyIHRoZSBHZXN0dXJlRmxpbmdTdGFydAorICAgIC8vICopIGN1bXVs
YXRpdmVTY3JvbGwgZGVwZW5kcyBvbiB0aGUgY3VydmUsIGJ1dCBzaW5jZSB3ZSd2ZSBhbmltYXRl
ZCBpbiB0aGUgLVggZGlyZWN0aW9uIHRoZSBYIHZhbHVlIHNob3VsZCBiZSA8IDAKKyAgICBFWFBF
Q1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgdHJhbnNmZXJXaGVlbEZsaW5nQW5p
bWF0aW9uKHRlc3Rpbmc6OkFsbE9mKAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6
QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmRlbHRhLCB0ZXN0aW5nOjpFcShmbGluZ0RlbHRh
KSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpBY3RpdmVXaGVlbEZsaW5nUGFy
YW1ldGVyczo6cG9pbnQsIHRlc3Rpbmc6OkVxKGZsaW5nUG9pbnQpKSwKKyAgICAgICAgdGVzdGlu
Zzo6RmllbGQoJldlYkNvcmU6OkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpnbG9iYWxQb2lu
dCwgdGVzdGluZzo6RXEoZmxpbmdHbG9iYWxQb2ludCkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVs
ZCgmV2ViQ29yZTo6QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OnN0YXJ0VGltZSwgdGVzdGlu
Zzo6RXEoMTApKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkNvcmU6OkFjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzOjpjdW11bGF0aXZlU2Nyb2xsLAorICAgICAgICAgICAgdGVzdGluZzo6
UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6OndpZHRoLCB0ZXN0aW5nOjpHdCgwKSkpKSkpOwog
ICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwLjIpOwogCiAgICAgdGVzdGluZzo6TW9jazo6
VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsK
QEAgLTM4Myw2ICs0MDUsMTIgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
VGVzdCwgZ2VzdHVyZUZsaW5nQW5pbWF0ZXMpCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1
dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpLlRpbWVzKDApOwogICAgIEVYUEVD
VF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpf
LCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAu
Myk7CisKKyAgICAvLyBTaW5jZSB3ZSd2ZSB0cmFuc2ZlcnJlZCB0aGUgZmxpbmcgdG8gdGhlIG1h
aW4gdGhyZWFkLCB3ZSBuZWVkIHRvIHBhc3MgdGhlIG5leHQgR2VzdHVyZUZsaW5nQ2FuY2VsIHRv
IHRoZSBtYWluCisgICAgLy8gdGhyZWFkIGFzIHdlbGwuCisgICAgRVhQRUNUX0NBTEwobV9tb2Nr
Q2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KHRydWUpKTsKKyAgICBnZXN0dXJlLnR5cGUg
PSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDsKKyAgICBtX2lucHV0
SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132969</attachid>
            <date>2012-03-20 22:09:36 -0700</date>
            <delta_ts>2012-03-24 04:16:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81479-20120320220935.patch</filename>
            <type>text/plain</type>
            <size>72615</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3ZjQyZTQ0ODQwZTQ2
ODQ0ZGE2ZDg0NmI0OTZhODJiMzMzY2I3NzUzLi43MmIwOTg0ZjJlODlkYWRiNGI4Yzg1NGJkNmVm
ZTdhMjAzYTIzMDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wMy0yMCAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gVHJhbnNmZXIgd2hlZWwgZmxpbmdzIHRvIG1haW4gdGhyZWFkIGlmIHdlIGhpdCBhIHJlZ2lv
biB0aGF0IGNhbid0IGJlIHNjcm9sbGVkIGZyb20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQ3OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUElzIGZvciB0
cmFuc2ZlcmluZyBhbiBpbi1wcm9ncmVzcyB3aGVlbCBmbGluZyBmcm9tIGEgV2ViTGF5ZXJUcmVl
VmlldyBvdXQgdG8gaXRzIGNsaWVudC4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6CisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9z
dENsaWVudC5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkFjdGl2ZVdoZWVsRmxp
bmdQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFt
ZXRlcnM6OldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBjaHJvbWl1
bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYkxheWVyVHJlZVZpZXdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXll
clRyZWVWaWV3Q2xpZW50Ojp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24pOgorCiAyMDEyLTAz
LTE5ICBNaWNoYWwgTW9jbnkgIDxtbW9jbnlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21p
dW1dIEFkZGluZyBzdXBwb3J0IGZvciBHTF9FWFRfZGlzY2FyZF9mcmFtZWJ1ZmZlci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA1OTVlYjlkMmIxOTVhODgzNzI0YjRkMTc5NGMyMmU4YThhMjU4YzRlLi41OWRlMjYx
NTYwZGQxMGUwMmZkYzUxYjBlYWNlNTZiNDU5MGMyNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
ODEgQEAKKzIwMTItMDMtMjAgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIFRyYW5zZmVyIHdoZWVsIGZsaW5ncyB0byBtYWluIHRocmVh
ZCBpZiB3ZSBoaXQgYSByZWdpb24gdGhhdCBjYW4ndCBiZSBzY3JvbGxlZCBmcm9tIHRoZSBjb21w
b3NpdG9yIHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODE0NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRzIHRoZSBhYmlsaXR5IHRvIHRyYW5zZmVyIGEgd2hlZWwgZmxpbmcgZnJvbSB0aGUg
Y29tcG9zaXRvciB0aHJlYWQgdG8gdGhlIG1haW4gdGhyZWFkIGlmIHdlIGhpdCBhIG5vbi13aGVl
bAorICAgICAgICBzY3JvbGxhYmxlIGFyZWEuIFRoaXMgY2FuIGhhcHBlbiBpZiB3ZSBzY3JvbGwg
YSBzY3JvbGxhYmxlIGFyZWEgInVuZGVyIiB0aGUgbW91c2UgcG9pbnRlciBwb3NpdGlvbiBvciBp
ZiB3ZSBnZXQKKyAgICAgICAgYSBjb21taXQgd2l0aCB1cGRhdGVkIHdoZWVsIGhhbmRsZXIgb3Ig
c2Nyb2xsYWJsZSBhcmVhIGRhdGEgd2hpbGUgdGhlIGZsaW5nIGlzIGluIHByb2dyZXNzLiBJbiB0
aGlzIGNhc2UsIHdlCisgICAgICAgIGdyYWIgdGhlIGN1cnJlbnQgYW5pbWF0aW9uIHBhcmFtZXRl
cnMgb2ZmIG9mIHRoZSBjdXJ2ZSBhbmQgcGFzcyB0aGVtIG91dCB0byB0aGUgY29tcG9zaXRvcidz
IGNsaWVudCB0byByZXN1bWUuCisKKyAgICAgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGxUZXN0IHVwZGF0ZWQgdG8gY292ZXIgdGhlIHRyYW5zZmVyaW5nIGxvZ2ljLgorCisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVy
ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5p
bWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRp
b24uaDoKKyAgICAgICAgKEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbik6CisgICAgICAg
ICogcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUN1cnZlLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFBsYXRmb3JtR2VzdHVyZUN1cnZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9U
b3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG91
Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNo
RmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmU6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ub3VjaEZs
aW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaDoKKyAgICAgICAgKFRvdWNoRmxpbmdQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJl
Q3VydmU6OmN1bXVsYXRpdmVTY3JvbGwpOgorICAgICAgICAqIHBsYXRmb3JtL1doZWVsRmxpbmdQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEZsaW5nUGxh
dGZvcm1HZXN0dXJlQ3VydmU6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9XaGVlbEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRmxpbmdQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3VtdWxhdGl2ZVNjcm9sbCk6CisgICAgICAgIChXaGVlbEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyk6CisgICAgICAg
IChXZWJDb3JlOjpBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6QWN0aXZlV2hlZWxGbGluZ1Bh
cmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0
aXZlR2VzdHVyZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0FjdGl2ZUdlc3R1
cmVBbmltYXRpb246OmN1bXVsYXRpdmVTY3JvbGwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDQWN0aXZlR2VzdHVyZUFuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb246OnN0YXJ0
VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHZXN0dXJl
Q3VydmUuaDoKKyAgICAgICAgKENDR2VzdHVyZUN1cnZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dHJhbnNmZXJXaGVlbEZs
aW5nQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RDbGllbnQpOgorICAgICAgICAoQ0NMYXllclRyZWVI
b3N0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnRy
YW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQpOgor
ICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTaW5nbGVUaHJlYWRQcm94eTo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhy
ZWFkT25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnRy
YW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvblRvTWFpblRocmVhZE9uSW1wbFRocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnRyYW5zZmVy
V2hlZWxGbGluZ0FuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpz
Y2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKwog
MjAxMi0wMy0yMCAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBUdW5lIGZsaW5nIHBoeXNpY3MgY3VydmUuIFtOb3QgZm9yIHJl
dmlldyB5ZXRdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGJlNGViYmE0Mzc4NDM4ZmQ2
MGE4MjJjMjU1ZjE4ODVhNWU0ODdhNTAuLmYyMWY0M2ZlM2FjNjgxMzFhODA5MDhmNGU2YTFlN2Q0
MmZiYzgzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIw
MTItMDMtMjAgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBbY2hyb21pdW1dIFRyYW5zZmVyIHdoZWVsIGZsaW5ncyB0byBtYWluIHRocmVhZCBpZiB3ZSBo
aXQgYSByZWdpb24gdGhhdCBjYW4ndCBiZSBzY3JvbGxlZCBmcm9tIHRoZSBjb21wb3NpdG9yIHRo
cmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0
NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNy
Yy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUdlc3R1cmVUb0NDR2VzdHVyZUFkYXB0ZXI6OmN1bXVsYXRpdmVTY3JvbGwpOgorICAg
ICAgICAoUGxhdGZvcm1HZXN0dXJlVG9DQ0dlc3R1cmVBZGFwdGVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSk6
CisgICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6dHJhbnNmZXJXaGVlbEZsaW5nQW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZp
ZXdJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkxheWVyVHJlZVZpZXdJ
bXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0ltcGwpOgorICAgICAgICAq
IHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q0NM
YXllclRyZWVIb3N0SW1wbFRlc3Q6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvblRvTWFpblRo
cmVhZE9uSW1wbFRocmVhZCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5j
cHA6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVIb3N0Q2xpZW50Ojp0cmFuc2ZlcldoZWVs
RmxpbmdBbmltYXRpb24pOgorICAgICAgICAoTW9ja0xheWVyVHJlZUhvc3RDbGllbnQpOgorICAg
ICAgICAqIHRlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQ6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlv
bik6CisgICAgICAgICogdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNw
cDoKKwogMjAxMi0wMy0yMCAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBUdW5lIGZsaW5nIHBoeXNpY3MgY3VydmUuIFtOb3Qg
Zm9yIHJldmlldyB5ZXRdCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lw
aSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCmluZGV4IGFmYTE0NzEzZjVkNmFhY2I4
MzE5ZDc1YTY3NzM2YTZmMjNiMTM0OWEuLjhlY2Y4ODEzYTA2ZmE3NjNhNjQyZDRmODZhY2I5ZTg1
YWIzMGNjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBAIC0zMSw2ICszMSw3IEBACiB7CiAgICAg
J3ZhcmlhYmxlcyc6IHsKICAgICAgICAgJ3BsYXRmb3JtX2ZpbGVzJzogWworICAgICAgICAgICAg
J2Nocm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oJywKICAgICAg
ICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ1N0cmluZy5oJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViQ2FudmFzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9X
ZWJDb2xvci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTQ1
OTZlNjJkZTNkODk4Nzg4NTg4NDA4MGQyMjRlZTg1ZTEzYzY5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1l
dGVycy5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkFjdGl2ZVdoZWVsRmxp
bmdQYXJhbWV0ZXJzX2gKKyNkZWZpbmUgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnNfaAor
CisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKKyNpbmNsdWRlICJXZWJGbG9hdFBvaW50LmgiCisj
aW5jbHVkZSAiV2ViUG9pbnQuaCIKKyNpbmNsdWRlICJXZWJTaXplLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdHJ1Y3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMgeworICAgIFdl
YkZsb2F0UG9pbnQgZGVsdGE7CisgICAgV2ViUG9pbnQgcG9pbnQ7CisgICAgV2ViUG9pbnQgZ2xv
YmFsUG9pbnQ7CisgICAgaW50IG1vZGlmaWVyczsKKyAgICBXZWJTaXplIGN1bXVsYXRpdmVTY3Jv
bGw7CisgICAgZG91YmxlIHN0YXJ0VGltZTsKKworICAgIFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJh
bWV0ZXJzKCkKKyAgICAgICAgOiBtb2RpZmllcnMoMCkKKyAgICAgICAgLCBzdGFydFRpbWUoMCkK
KyAgICB7CisgICAgfQorfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmgKaW5kZXggNWMw
YjllZjlhMmEyYzYxM2IxMTkwMGMxM2Y4OThmMjI4MzliNDY1Yi4uNDhiZDlkY2Y5NzNhNzE3YTI3
YjkxOTc1ZjU1YmU4NjBjMzI0NDM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmgKKysrIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmgKQEAgLTI3LDYgKzI3LDcg
QEAKICNkZWZpbmUgV2ViTGF5ZXJUcmVlVmlld0NsaWVudF9oCiAKIG5hbWVzcGFjZSBXZWJLaXQg
eworc3RydWN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOwogY2xhc3MgV2ViR3JhcGhp
Y3NDb250ZXh0M0Q7CiBzdHJ1Y3QgV2ViU2l6ZTsKIGNsYXNzIFdlYlRocmVhZDsKQEAgLTU1LDYg
KzU2LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1l
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgPSAwOwog
CisgICAgLy8gVHJhbnNmZXJzIGFuIGluLXByb2dyZXNzIHdoZWVsIGZsaW5nIGFuaW1hdGlvbiB0
aGF0IHRoZSBXZWJMYXllclRyZWVWaWV3CisgICAgLy8gY2FuIG5vIGxvbmdlciBhZHZhbmNlIHRv
IHRoZSBjbGllbnQgdG8gZmluaXNoIG91dC4KKyAgICAvLyBGSVhNRTogUmVtb3ZlIGRlZmF1bHQg
aW1wbCB3aGVuIGNsaWVudHMgYXJlIGFsbCB1cGRhdGVkCisgICAgdmlydHVhbCB2b2lkIHRyYW5z
ZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
cyYpIHsgfQorCiAgICAgLy8gU2NoZWR1bGVzIGEgY29tcG9zaXRpbmcgcGFzcywgbWVhbmluZyB0
aGUgY2xpZW50IHNob3VsZCBjYWxsCiAgICAgLy8gV2ViTGF5ZXJUcmVlVmlldzo6Y29tcG9zaXRl
IGF0IGEgbGF0ZXIgdGltZS4gVGhpcyBpcyBvbmx5IGNhbGxlZCBpZiB0aGUKICAgICAvLyBjb21w
b3NpdG9yIHRocmVhZCBpcyBkaXNhYmxlZDsgd2hlbiBlbmFibGVkLCB0aGUgY29tcG9zaXRvciB3
aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggM2IzYzU0ZGVjNzNhYjRiMWY1ZmI0NGRkNmM4NjhiZTQx
YzdmZDhjNy4uN2UyMjRkZDkzYzc3ZDMzNjA4NDc3MTU2M2VkYzlhMTY1ZDBmNGU4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtMzM1OCw2ICszMzU4LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXRoQ0cuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QYXR0ZXJuQ0cuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeENHLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJl
QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2Vz
dHVyZUFuaW1hdGlvbi5jcHAKaW5kZXggMThlYzdlYjM0YWUyZTRlMDdiNTZjMTRhM2UwMmEzMzc4
YmFkOWQ1MC4uNmEwMTNhZGZiNDQ1ZDZkYzk1M2Q0Mzk3OGY0OTg1MDEzN2NjMGVmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1
cmVBbmltYXRpb24uY3BwCkBAIC0zNyw2ICszNywxMSBAQCBQYXNzT3duUHRyPEFjdGl2ZVBsYXRm
b3JtR2VzdHVyZUFuaW1hdGlvbj4gQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpjcmVh
dAogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9u
KGN1cnZlLCB0YXJnZXQpKTsKIH0KIAorUGFzc093blB0cjxBY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb24+IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFBhc3NPd25Q
dHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGN1cnZlLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdl
dCogdGFyZ2V0LCBkb3VibGUgc3RhcnRUaW1lKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcg
QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKGN1cnZlLCB0YXJnZXQsIHN0YXJ0VGltZSkp
OworfQorCiBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246On5BY3RpdmVQbGF0Zm9ybUdl
c3R1cmVBbmltYXRpb24oKQogewogfQpAQCAtNDksNiArNTQsMTQgQEAgQWN0aXZlUGxhdGZvcm1H
ZXN0dXJlQW5pbWF0aW9uOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0
cjxQbGF0Zm8KIHsKIH0KIAorQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpBY3RpdmVQ
bGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4g
Y3VydmUsIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0KiB0YXJnZXQsIGRvdWJsZSBzdGFydFRp
bWUpCisgICAgOiBtX3N0YXJ0VGltZShzdGFydFRpbWUpCisgICAgLCBtX3dhaXRpbmdGb3JGaXJz
dFRpY2soZmFsc2UpCisgICAgLCBtX2N1cnZlKGN1cnZlKQorICAgICwgbV90YXJnZXQodGFyZ2V0
KQoreworfQorCiBib29sIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6YW5pbWF0ZShk
b3VibGUgdGltZSkKIHsKICAgICBpZiAobV93YWl0aW5nRm9yRmlyc3RUaWNrKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1h
dGlvbi5oCmluZGV4IDlkNTYzZTQ4MzY2NmRkMmFkYTFiNWIwNWU4OTg0ZGYxNWJhYzcwMjQuLjIx
ZjE5OWMwN2ExZmNmMzRjNThjMTI0OWYyYjg0ZTRjNTcxMWJjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5o
CkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbiB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9u
KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxBY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb24+IGNyZWF0ZShQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiwgUGxhdGZv
cm1HZXN0dXJlQ3VydmVUYXJnZXQqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxBY3RpdmVQbGF0
Zm9ybUdlc3R1cmVBbmltYXRpb24+IGNyZWF0ZShQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1
cnZlPiwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqLCBkb3VibGUgc3RhcnRUaW1lKTsKICAg
ICB+QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKCk7CiAKICAgICBib29sIGFuaW1hdGUo
ZG91YmxlIHRpbWUpOwpAQCAtNTAsNiArNTEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8v
IEFzc3VtZXMgYSB2YWxpZCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCB0aGF0IG91dGxpdmVz
IHRoZSBhbmltYXRpb24uCiAgICAgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKFBhc3NP
d25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+LCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCop
OworICAgIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPFBsYXRmb3Jt
R2VzdHVyZUN1cnZlPiwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqLCBkb3VibGUgc3RhcnRU
aW1lKTsKIAogICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKICAgICBib29sIG1fd2FpdGluZ0ZvckZp
cnN0VGljazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFk
Q29waWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCmlu
ZGV4IDNiNjA3NjE0MmNkYWFjMjE0YWQwMDkzNmZjZmIzYzUwNGEzZmQxNzAuLjg5NjJjZWU5NDRm
MTE4YzVmM2VhNzE5YjgzNWM5ZWZmOTgyNGM4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaApAQCAtNDEsNiArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKKyAgICBzdHJ1Y3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM7CiAgICAgY2xh
c3MgSW50UmVjdDsKICAgICBjbGFzcyBJbnRTaXplOwogICAgIGNsYXNzIEtVUkw7CkBAIC03MCw2
ICs3MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9z
c1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucz4g
OiBwdWJsaWMgQ3Jvc3NUaHJlYWRDb3BpZXJQYXNzVGhyb3VnaDxUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucz4gewogICAgIH07CiAKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGll
ckJhc2U8ZmFsc2UsIGZhbHNlLCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycz4gOiBwdWJsaWMg
Q3Jvc3NUaHJlYWRDb3BpZXJQYXNzVGhyb3VnaDxBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycz4g
eworICAgIH07CisKICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8
ZmFsc2UsIGZhbHNlLCBJbnRSZWN0PiA6IHB1YmxpYyBDcm9zc1RocmVhZENvcGllclBhc3NUaHJv
dWdoPEludFJlY3Q+IHsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcAppbmRleCA0M2RiZjBh
YzZmMWQ5NzEzYTYzYTZmZGYwZWMxNjc2MjE4NTY2YWZlLi4yZTUyMDYyMTEzOTk4OWVlMWMzYjM3
NWVlZTFiNWQ5ZTc1Mzg5M2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
b3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKQEAgLTM1LDExICszNSwx
NyBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1
cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShjb25zdCBGbG9hdFBv
aW50JiB2ZWxvY2l0eSkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRvdWNoRmxpbmdQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZSh2ZWxvY2l0eSkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgVG91
Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKHZlbG9jaXR5LCBJbnRTaXplKCkpKTsKIH0KIAot
VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJl
Q3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHkpCitQYXNzT3duUHRyPFBsYXRmb3JtR2Vz
dHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShjb25zdCBG
bG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgSW50U2l6ZSYgY3VtdWxhdGl2ZVNjcm9sbCkKK3sK
KyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSh2
ZWxvY2l0eSwgY3VtdWxhdGl2ZVNjcm9sbCkpOworfQorCitUb3VjaEZsaW5nUGxhdGZvcm1HZXN0
dXJlQ3VydmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9hdFBvaW50
JiB2ZWxvY2l0eSwgY29uc3QgSW50U2l6ZSYgY3VtdWxhdGl2ZVNjcm9sbCkKICAgICA6IG1fdmVs
b2NpdHkodmVsb2NpdHkpCisgICAgLCBtX2N1bXVsYXRpdmVTY3JvbGwoY3VtdWxhdGl2ZVNjcm9s
bCkKICAgICAsIG1fdGltZVNjYWxlRmFjdG9yKDEwMDAgLyBtYXgoMS5mLCBtYXgoZmFicyh2ZWxv
Y2l0eS54KCkpLCBmYWJzKHZlbG9jaXR5LnkoKSkpKSkKIHsKICAgICBBU1NFUlQodmVsb2NpdHkg
IT0gRmxvYXRQb2ludDo6emVybygpKTsKQEAgLTczLDcgKzc5LDcgQEAgYm9vbCBUb3VjaEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmU6OmFwcGx5KGRvdWJsZSB0aW1lLCBQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZVRhcmcKICAgICAgICAgZGlzcGxhY2VtZW50ID0gKDEgKyAocDEgLSAxKSAqIDEuNSArICgx
IC0gMiAqIHAxKSArICgzICogcDEgLSAxKSAqIDAuMjUpIC8gbV90aW1lU2NhbGVGYWN0b3I7CiAK
ICAgICAvLyBLZWVwIHRyYWNrIG9mIGludGVnZXIgcG9ydGlvbiBvZiBzY3JvbGwgdGh1cyBmYXIs
IGFuZCBwcmVwYXJlIGluY3JlbWVudC4KLSAgICBJbnRQb2ludCBzY3JvbGwoZGlzcGxhY2VtZW50
ICogbV92ZWxvY2l0eS54KCksIGRpc3BsYWNlbWVudCAqIG1fdmVsb2NpdHkueSgpKTsKKyAgICBJ
bnRTaXplIHNjcm9sbChkaXNwbGFjZW1lbnQgKiBtX3ZlbG9jaXR5LngoKSwgZGlzcGxhY2VtZW50
ICogbV92ZWxvY2l0eS55KCkpOwogICAgIEludFBvaW50IHNjcm9sbEluY3JlbWVudChzY3JvbGwg
LSBtX2N1bXVsYXRpdmVTY3JvbGwpOwogICAgIG1fY3VtdWxhdGl2ZVNjcm9sbCA9IHNjcm9sbDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3Jt
R2VzdHVyZUN1cnZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZv
cm1HZXN0dXJlQ3VydmUuaAppbmRleCBhN2UxY2VjMTAxZTAxMmFjZWUyYjFmYzIxZDljNTMwNjBh
MTdjMzRlLi5kZjE4YjU2OWY4N2MxOGMzZTJkNDkyZjNlY2ZhNThlYjhkOGEwNDAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0
dXJlQ3VydmUuaApAQCAtNDEsMTYgKzQxLDE3IEBAIGNsYXNzIFBsYXRmb3JtR2VzdHVyZUN1cnZl
VGFyZ2V0OwogY2xhc3MgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlIDogcHVibGljIFBs
YXRmb3JtR2VzdHVyZUN1cnZlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5KTsKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0IEZs
b2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBJbnRTaXplJiBjdW11bGF0aXZlU2Nyb2xsKTsKICAg
ICB2aXJ0dWFsIH5Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBhcHBseShkb3VibGUgbW9ub3RvbmljVGltZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVU
YXJnZXQqKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0
dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHkpOworICAgIFRvdWNoRmxpbmdQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgSW50U2l6
ZSYgY3VtdWxhdGl2ZVNjcm9sbCk7CiAKICAgICBGbG9hdFBvaW50IG1fdmVsb2NpdHk7CisgICAg
SW50U2l6ZSBtX2N1bXVsYXRpdmVTY3JvbGw7CiAgICAgZmxvYXQgbV90aW1lU2NhbGVGYWN0b3I7
Ci0gICAgSW50UG9pbnQgbV9jdW11bGF0aXZlU2Nyb2xsOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1Bs
YXRmb3JtR2VzdHVyZUN1cnZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKaW5kZXggYzlmMTczMjg5NzljYjdjNzJmZjM5Zjdl
Y2MyMTExMGY0MzNiYzM5OS4uZWJkNzg4ZmU0NTlhNmM4MTdiYWFlYTA4YjFhOWVjMjM0OTJlYmY4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3Jt
R2VzdHVyZUN1cnZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCkBAIC01OSw3ICs1OSw3IEBAIGJvb2wgV2hlZWxGbGlu
Z1BsYXRmb3JtR2VzdHVyZUN1cnZlOjphcHBseShkb3VibGUgdGltZSwgUGxhdGZvcm1HZXN0dXJl
Q3VydmVUYXJnCiAgICAgLy8gRklYTUU6IGNvbnNpZGVyIG1ha2luZyB0aGUgdmFsdWUgb2Ygc2ln
bWEgc2V0dGFibGUgaW4gdGhlIGNvbnN0cnVjdG9yLgogICAgIHN0YXRpYyBkb3VibGUgdHdvU2ln
bWFTcXVhcmVkSW52ZXJzZSA9IDE2OyAvLyBzaWdtYSA9IDAuMjUKICAgICBmbG9hdCBjZGYgPSAx
IC0gZXhwKC10aW1lICogdGltZSAqIHR3b1NpZ21hU3F1YXJlZEludmVyc2UpOwotICAgIEludFBv
aW50IHNjcm9sbChjZGYgKiBtX3ZlbG9jaXR5LngoKSwgY2RmICogbV92ZWxvY2l0eS55KCkpOwor
ICAgIEludFNpemUgc2Nyb2xsKGNkZiAqIG1fdmVsb2NpdHkueCgpLCBjZGYgKiBtX3ZlbG9jaXR5
LnkoKSk7CiAgICAgSW50UG9pbnQgc2Nyb2xsSW5jcmVtZW50KHNjcm9sbCAtIG1fY3VtdWxhdGl2
ZVNjcm9sbCk7CiAgICAgbV9jdW11bGF0aXZlU2Nyb2xsID0gc2Nyb2xsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZS5oCmluZGV4IGI3MjE0NjE2NTMzM2YyM2M4YzliYmY2YzAxZGRiZjA2N2FlZTFhYzIuLmQwOTU1
NjZhOTIxMmVkMzFmNTIwMDYyZTE3MmZkZWM0ODBjM2M2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCkBA
IC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5KTsKIAogICAgIEZsb2F0UG9pbnQgbV92ZWxv
Y2l0eTsKLSAgICBJbnRQb2ludCBtX2N1bXVsYXRpdmVTY3JvbGw7CisgICAgSW50U2l6ZSBtX2N1
bXVsYXRpdmVTY3JvbGw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjhjYWE3OTYzYWYy
NzYyNDRlNTZiZDkzZjFhODFkNzc1NTc1MjYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRl
cnMuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBY3RpdmVXaGVlbEZsaW5nUGFy
YW1ldGVyc19oCisjZGVmaW5lIEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzX2gKKworI2luY2x1
ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RydWN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHsKKyAgICBGbG9hdFNp
emUgZGVsdGE7CisgICAgSW50UG9pbnQgcG9pbnQ7CisgICAgSW50UG9pbnQgZ2xvYmFsUG9pbnQ7
CisgICAgaW50IG1vZGlmaWVyczsKKyAgICBJbnRTaXplIGN1bXVsYXRpdmVTY3JvbGw7CisgICAg
ZG91YmxlIHN0YXJ0VGltZTsKKworICAgIEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKCkKKyAg
ICAgICAgOiBtb2RpZmllcnMoMCkKKyAgICAgICAgLCBzdGFydFRpbWUoMCkKKyAgICB7CisgICAg
fQorfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCmluZGV4IDc2NjA4
ZDlmYzFkMGRhMTM5YTQ5MzBiYzUwNDdjMDhhZWI4YjJkZjQuLmRjZDBlZWQwZWUwNjY0ZDQ2ZDc1
MTNhZjQ4MDBkMjMyNWRmYjJiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaApAQCAtMjks
NiArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0cnVjdCBBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVyczsKIGNsYXNzIENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjsKIGNsYXNzIEND
R2VzdHVyZUN1cnZlVGFyZ2V0OwogY2xhc3MgSW50UG9pbnQ7CkBAIC04MSw2ICs4Miw4IEBAIHB1
YmxpYzoKICAgICAvLyBSZXF1ZXN0IGFub3RoZXIgY2FsbGJhY2sgdG8gQ0NJbnB1dEhhbmRsZXI6
OmFuaW1hdGUoKS4KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKSA9IDA7CiAK
KyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IEFjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAgQ0NJbnB1dEhh
bmRsZXJDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIH5DQ0lucHV0SGFuZGxlckNsaWVudCgpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggZDFmZDg5ZWZlYzRlYWYyNDBk
YmM4ODM4MWE4NTQ4ZWM0Y2Q0MWI3Yi4uZDFiM2Y4OTQ4NTA4NWQzOWU4ODMzNjZmZTZhYzcyZjdj
OWI3M2Y0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKIAorI2luY2x1ZGUgIkFjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmgiCkBAIC00MjMsNiArNDI0LDE1IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21w
b3NpdGUoKQogICAgIHN0YXRpY19jYXN0PENDU2luZ2xlVGhyZWFkUHJveHkqPihtX3Byb3h5Lmdl
dCgpKS0+Y29tcG9zaXRlSW1tZWRpYXRlbHkoKTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKK3sKKyAgICAvLyBXZSB0aWNrIGFuaW1hdGlvbnMgaW4gQ0NMYXll
clRyZWVIb3N0IHVzaW5nIGN1cnJlbnRUaW1lKCksIGJ1dCB0aGUgaW1wbCB0aHJlYWQgdXNlcyBt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKS4gUmViYXNlIGhlcmUgYmVmb3JlIHBhc3Npbmcg
dGltZXMgb3V0IHRvIHRoZSBjbGllbnQuCisgICAgZG91YmxlIHRpbWVTaGlmdCA9IGN1cnJlbnRU
aW1lKCkgLSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVycyBwYXJhbWV0ZXJzV2l0aFNoaWZ0ZWRUaW1lID0gcGFyYW1ldGVyczsKKyAg
ICBwYXJhbWV0ZXJzV2l0aFNoaWZ0ZWRUaW1lLnN0YXJ0VGltZSArPSB0aW1lU2hpZnQ7CisgICAg
bV9jbGllbnQtPnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihwYXJhbWV0ZXJzV2l0aFNoaWZ0
ZWRUaW1lKTsKK30KKwogYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCiB7CiAg
ICAgaWYgKCFtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaAppbmRleCBmNzQ5YTZiMDNkMTdmNDRlZDYxOTg0ZmU5ODAyYWEwMTBkOGU2MWJmLi5h
MjI5NDBiNDAwZjUzZWUwNGY2NDA5N2RjNzllZjdiOTNlOGQzYTgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K3N0cnVjdCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczsKIGNsYXNzIENDTGF5ZXJUcmVlSG9z
dEltcGw7CiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7
CkBAIC01OSw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVD
b250ZXh0KGJvb2wgc3VjY2VzcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmRE
cmF3RnJhbWUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMo
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25z
dCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpID0gMDsKIAogICAgIC8vIFVzZWQgb25seSBp
biB0aGUgc2luZ2xlLXRocmVhZGVkIHBhdGguCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29t
cG9zaXRlKCkgPSAwOwpAQCAtMTQzLDYgKzE0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENv
bW1pdEFuZERyYXdGcmFtZSgpIHsgbV9jbGllbnQtPmRpZENvbW1pdEFuZERyYXdGcmFtZSgpOyB9
CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgeyBtX2NsaWVudC0+ZGlkQ29tcGxl
dGVTd2FwQnVmZmVycygpOyB9CiAgICAgdm9pZCBkZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBs
VGhyZWFkKFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJXaGVl
bEZsaW5nQW5pbWF0aW9uKGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJik7CiAgICAg
Ly8gUmV0dXJucyBmYWxzZSBpZiB3ZSBzaG91bGQgYWJvcnQgdGhpcyBmcmFtZSBkdWUgdG8gaW5p
dGlhbGl6YXRpb24gZmFpbHVyZS4KICAgICBib29sIHVwZGF0ZUxheWVycygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGFkODkyZjI4ZjQ1ZmM3YjlkNDJi
MDY0NmQ5ODRiOGZjNDYxNTk2NmUuLjRiMTExN2QzNTQ3OTZiY2NkYmI1NGEyYzkzMWJlMjU0Njky
M2RkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0xODYs
NiArMTg2LDExIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2NoZWR1bGVBbmltYXRpb24o
KQogICAgIG1fY2xpZW50LT5zZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwogfQogCit2b2lk
IENDTGF5ZXJUcmVlSG9zdEltcGw6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBB
Y3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBtX2NsaWVudC0+
dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKHBhcmFt
ZXRlcnMpOworfQorCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnRyYWNrRGFtYWdlRm9yQWxs
U3VyZmFjZXMoQ0NMYXllckltcGwqIHJvb3REcmF3TGF5ZXIsIGNvbnN0IENDTGF5ZXJMaXN0JiBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQogewogICAgIC8vIEZvciBub3csIHdlIHVzZSBkYW1hZ2Ug
dHJhY2tpbmcgdG8gY29tcHV0ZSBhIGdsb2JhbCBzY2lzc29yLiBUbyBkbyB0aGlzLCB3ZSBtdXN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggMzE0OTQ3NGM0YjU4YTVj
NWQwZWU3MGI2M2E2MTFhZTJlODJjMTJjNi4uNGYzZmQxMzM2OTc3NmUzNTg4ZjAwZDBkNWJiYzU4
ODU4Y2ZjOWFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMzcs
NiArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0cnVjdCBBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVyczsKIGNsYXNzIENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjsKIGNsYXNzIEND
Q29tcGxldGlvbkV2ZW50OwogY2xhc3MgQ0NQYWdlU2NhbGVBbmltYXRpb247CkBAIC01NSw2ICs1
Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJl
YWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25J
bXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2Fs
bENsb2NrVGltZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmlt
YXRpb25Ub01haW5UaHJlYWRPbkltcGxUaHJlYWQoY29uc3QgQWN0aXZlV2hlZWxGbGluZ1BhcmFt
ZXRlcnMmKSA9IDA7CiB9OwogCiAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsIG93bnMgdGhlIENDTGF5
ZXJJbXBsIHRyZWUgYXMgd2VsbCBhcyBhc3NvY2lhdGVkIHJlbmRlcmluZyBzdGF0ZQpAQCAtNzYs
NiArNzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gVG8gY2xlYXIgYW4gYWN0aXZlIGFuaW1hdGlvbiwg
cGFzcyBudWxscHRyLgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmVHZXN0dXJlQW5pbWF0aW9u
KFBhc3NPd25QdHI8Q0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uPik7CiAgICAgdmlydHVhbCB2b2lk
IHNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyV2hlZWxGbGlu
Z0FuaW1hdGlvbihjb25zdCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpOwogCiAgICAgLy8g
VmlydHVhbCBmb3IgdGVzdGluZy4KICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Db21taXQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCBlYmJkOTZlMmMzODgyMjE4OWQy
YjkwYjIxZTZkOTc2YTM2N2MwZTljLi5mODMwYThmNzI4YjgyZWVhZmU1MWRiNjY3YjQ2MzNmMDQ5
MDlkOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC02Nyw2ICs2
Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJl
YWQoKSB7IG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXQoKTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpIHsgbV9sYXllclRyZWVIb3N0LT5zZXRO
ZWVkc0NvbW1pdCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01h
aW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4s
IGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKKyAgICB2b2lkIHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1h
dGlvblRvTWFpblRocmVhZE9uSW1wbFRocmVhZChjb25zdCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1l
dGVycyYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIENhbGxlZCBieSB0aGUg
bGVnYWN5IHBhdGggd2hlcmUgUmVuZGVyV2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxpbmcuCiAgICAg
dm9pZCBjb21wb3NpdGVJbW1lZGlhdGVseSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApp
bmRleCBkNTQ4OGYyYzcxZDljYjUwYTMxNzViMWFkNzdlMGE3ZGM1ZDRkNTIwLi40YzAzMDkwMzgx
YTU5MzkzOWU3MGI2ZjE0NzExMGM5YmE1ZTc2YTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgog
CisjaW5jbHVkZSAiQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9D
Q0RlbGF5QmFzZWRUaW1lU291cmNlLmgiCkBAIC0yOTksNiArMzAwLDE5IEBAIHZvaWQgQ0NUaHJl
YWRQcm94eTo6cG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNz
T3duUHRyPENDQW5pCiAgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhy
ZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6c2V0QW5pbWF0aW9uRXZlbnRzLCBldmVudHMs
IHdhbGxDbG9ja1RpbWUpKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5Ojp0cmFuc2ZlcldoZWVs
RmxpbmdBbmltYXRpb25Ub01haW5UaHJlYWRPbkltcGxUaHJlYWQoY29uc3QgQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgp
KTsKKyAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6dHJhbnNm
ZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkIik7CisgICAgbV9t
YWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJl
YWRQcm94eTo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uLCBwYXJhbWV0ZXJzKSk7Cit9CisK
K3ZvaWQgQ0NUaHJlYWRQcm94eTo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uKEFjdGl2ZVdo
ZWVsRmxpbmdQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihw
YXJhbWV0ZXJzKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhdygpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTM5Nyw3ICs0MTEsNyBAQCB2b2lkIEND
VGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKQogICAgIFRSQUNFX0VWRU5U
MCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIpOwogICAg
IEFTU0VSVCghbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QpOwogICAgIG1fcGVuZGluZ0JlZ2lu
RnJhbWVSZXF1ZXN0ID0gYWRvcHRQdHIobmV3IEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZSgpKTsK
LSAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+ZnJhbWVCZWdpblRpbWUgPSAwOworICAg
IG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5mcmFtZUJlZ2luVGltZSA9IGN1cnJlbnRUaW1l
KCk7CiAgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QtPnNjcm9sbEluZm8gPSBtX2xheWVy
VHJlZUhvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CiAKICAgICBtX21haW5UaHJlYWRQ
cm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojpi
ZWdpbkZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggZTdiYWRhNjQwNmZhZGEz
NTlhM2E4MTljOWRmM2YxZjVkOGYxMGViZC4uNjk4YmI0YWQ3ODg4MmM3N2ZhY2UyZTEzODA4NTM2
ZjQ1NjNjZjQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNzYsNiArNzYsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCk7CiAg
ICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCk7CiAgICAgdmlydHVh
bCB2b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093
blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uVG9NYWluVGhyZWFkT25J
bXBsVGhyZWFkKGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJik7CiAKICAgICAvLyBD
Q1NjaGVkdWxlckNsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3
KCk7CkBAIC0xMDUsNiArMTA2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEFuaW1hdGlvbkV2
ZW50cyhQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9j
a1RpbWUpOwogICAgIHZvaWQgYmVnaW5Db250ZXh0UmVjcmVhdGlvbigpOwogICAgIHZvaWQgdHJ5
VG9SZWNyZWF0ZUNvbnRleHQoKTsKKyAgICB2b2lkIHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlv
bihBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyk7CiAKICAgICAvLyBDYWxsZWQgb24gaW1wbCB0
aHJlYWQKICAgICBzdHJ1Y3QgUmVhZGJhY2tSZXF1ZXN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNw
cAppbmRleCBhNGNjNzE4MmNkYjkyNzEzMGFiZjBhMzBjODY5YTBhNjU0NzIwMGQ4Li43NDVkZTBh
MGMxZGZhODRkYzMyNWY0NTQwNGM1ZWJhYzlmODY1MDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwu
Y3BwCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbC5oIgogCisjaW5jbHVkZSAiQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oIgogI2luY2x1ZGUgIlRvdWNoRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKQEAgLTI1
OSw5ICsyNjAsMTIgQEAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9z
aXRpb24gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmgKICAgICBzd2l0Y2ggKHNjcm9s
bFN0YXR1cykgewogICAgIGNhc2UgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQ6
IHsKICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxpbmc6OnN0YXJ0ZWQiKTsKLSAgICAgICAgT3du
UHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBmbGluZ0N1cnZlID0gVG91Y2hGbGluZ1BsYXRmb3Jt
R2VzdHVyZUN1cnZlOjpjcmVhdGUoRmxvYXRQb2ludCgtZ2VzdHVyZUV2ZW50LmRlbHRhWCwgLWdl
c3R1cmVFdmVudC5kZWx0YVkpKTsKKyAgICAgICAgT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZl
PiBmbGluZ0N1cnZlID0gVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoRmxv
YXRQb2ludChnZXN0dXJlRXZlbnQuZGVsdGFYLCBnZXN0dXJlRXZlbnQuZGVsdGFZKSk7CiAgICAg
ICAgIG1fd2hlZWxGbGluZ0FuaW1hdGlvbiA9IENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6Y3Jl
YXRlKFBsYXRmb3JtR2VzdHVyZVRvQ0NHZXN0dXJlQWRhcHRlcjo6Y3JlYXRlKGZsaW5nQ3VydmUu
cmVsZWFzZSgpKSwgdGhpcyk7Ci0gICAgICAgIG1fd2hlZWxGbGluZ1BvaW50ID0gSW50UG9pbnQo
Z2VzdHVyZUV2ZW50LngsIGdlc3R1cmVFdmVudC55KTsKKyAgICAgICAgbV93aGVlbEZsaW5nUGFy
YW1ldGVycy5kZWx0YSA9IEZsb2F0U2l6ZShnZXN0dXJlRXZlbnQuZGVsdGFYLCBnZXN0dXJlRXZl
bnQuZGVsdGFZKTsKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5wb2ludCA9IEludFBv
aW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQueSk7CisgICAgICAgIG1fd2hlZWxGbGlu
Z1BhcmFtZXRlcnMuZ2xvYmFsUG9pbnQgPSBJbnRQb2ludChnZXN0dXJlRXZlbnQuZ2xvYmFsWCwg
Z2VzdHVyZUV2ZW50Lmdsb2JhbFkpOworICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLm1v
ZGlmaWVycyA9IGdlc3R1cmVFdmVudC5tb2RpZmllcnM7CiAgICAgICAgIG1faW5wdXRIYW5kbGVy
Q2xpZW50LT5zY2hlZHVsZUFuaW1hdGlvbigpOwogICAgICAgICByZXR1cm4gRGlkSGFuZGxlOwog
ICAgIH0KQEAgLTI5MCwxMSArMjk0LDE0IEBAIHZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGw6OmFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUpCiAgICAgaWYgKCFtX3doZWVsRmxp
bmdBbmltYXRpb24pCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICghbV93aGVlbEZsaW5nUGFy
YW1ldGVycy5zdGFydFRpbWUpCisgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuc3RhcnRU
aW1lID0gbW9ub3RvbmljVGltZTsKKwogICAgIGlmIChtX3doZWVsRmxpbmdBbmltYXRpb24tPmFu
aW1hdGUobW9ub3RvbmljVGltZSkpCiAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY2hl
ZHVsZUFuaW1hdGlvbigpOwogICAgIGVsc2UgewogICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5U
MCgiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmFuaW1hdGU6OmZsaW5nT3Zl
ciIpOwotICAgICAgICBtX3doZWVsRmxpbmdBbmltYXRpb24uY2xlYXIoKTsKKyAgICAgICAgY2Fu
Y2VsQ3VycmVudEZsaW5nKCk7CiAgICAgfQogfQogCkBAIC0zMDMsNiArMzEwLDcgQEAgYm9vbCBX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6Y2FuY2VsQ3VycmVudEZsaW5nKCkKICAgICBi
b29sIGhhZEZsaW5nQW5pbWF0aW9uID0gbV93aGVlbEZsaW5nQW5pbWF0aW9uOwogICAgIFRSQUNF
X0VWRU5UX0lOU1RBTlQxKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6Y2Fu
Y2VsQ3VycmVudEZsaW5nIiwgImhhZEZsaW5nQW5pbWF0aW9uIiwgaGFkRmxpbmdBbmltYXRpb24p
OwogICAgIG1fd2hlZWxGbGluZ0FuaW1hdGlvbi5jbGVhcigpOworICAgIG1fd2hlZWxGbGluZ1Bh
cmFtZXRlcnMgPSBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycygpOwogICAgIHJldHVybiBoYWRG
bGluZ0FuaW1hdGlvbjsKIH0KIApAQCAtMzEyLDMwICszMjAsMzQgQEAgdm9pZCBXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkoY29uc3QgSW50UG9pbnQmIGluY3JlbWVudCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgVFJBQ0VfRVZFTlQyKCJjYyIsICJXZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkiLCAieCIsIGluY3JlbWVudC54KCksICJ5IiwgaW5j
cmVtZW50LnkoKSk7Ci0KLSAgICBXZWJNb3VzZVdoZWVsRXZlbnQgZXZlbnQ7Ci0gICAgZXZlbnQu
dHlwZSA9IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWw7Ci0gICAgZXZlbnQuZGVsdGFYID0gLWlu
Y3JlbWVudC54KCk7Ci0gICAgZXZlbnQuZGVsdGFZID0gLWluY3JlbWVudC55KCk7Ci0gICAgZXZl
bnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IHRydWU7Ci0gICAgZXZlbnQueCA9IG1fd2hl
ZWxGbGluZ1BvaW50LngoKTsKLSAgICBldmVudC55ID0gbV93aGVlbEZsaW5nUG9pbnQueSgpOwot
Ci0gICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gZGlz
cG9zaXRpb24gPSBoYW5kbGVJbnB1dEV2ZW50SW50ZXJuYWwoZXZlbnQpOworICAgIFdlYk1vdXNl
V2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbDsKKyAgICBzeW50aGV0aWNXaGVlbC50eXBlID0gV2Vi
SW5wdXRFdmVudDo6TW91c2VXaGVlbDsKKyAgICBzeW50aGV0aWNXaGVlbC5kZWx0YVggPSBpbmNy
ZW1lbnQueCgpOworICAgIHN5bnRoZXRpY1doZWVsLmRlbHRhWSA9IGluY3JlbWVudC55KCk7Cisg
ICAgc3ludGhldGljV2hlZWwuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IHRydWU7CisgICAg
c3ludGhldGljV2hlZWwueCA9IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMucG9pbnQueCgpOworICAg
IHN5bnRoZXRpY1doZWVsLnkgPSBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnBvaW50LnkoKTsKKyAg
ICBzeW50aGV0aWNXaGVlbC5nbG9iYWxYID0gbV93aGVlbEZsaW5nUGFyYW1ldGVycy5nbG9iYWxQ
b2ludC54KCk7CisgICAgc3ludGhldGljV2hlZWwuZ2xvYmFsWSA9IG1fd2hlZWxGbGluZ1BhcmFt
ZXRlcnMuZ2xvYmFsUG9pbnQueSgpOworICAgIHN5bnRoZXRpY1doZWVsLm1vZGlmaWVycyA9IG1f
d2hlZWxGbGluZ1BhcmFtZXRlcnMubW9kaWZpZXJzOworCisgICAgV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gZGlzcG9zaXRpb24gPSBoYW5kbGVJbnB1dEV2
ZW50SW50ZXJuYWwoc3ludGhldGljV2hlZWwpOwogICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsK
ICAgICBjYXNlIERpZEhhbmRsZToKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5jdW11
bGF0aXZlU2Nyb2xsICs9IHRvU2l6ZShpbmNyZW1lbnQpOwogICAgIGNhc2UgRHJvcEV2ZW50Ogog
ICAgICAgICBicmVhazsKICAgICBjYXNlIERpZE5vdEhhbmRsZToKICAgICAgICAgVFJBQ0VfRVZF
TlRfSU5TVEFOVDAoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxC
eTo6QWJvcnRGbGluZyIpOwotICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ290IGEgRGlkTm90SGFu
ZGxlLCB0aGF0IG1lYW5zIHdlIG5lZWQgdG8gZGVsaXZlciB3aGVlbHMgb24gdGhlIG1haW4gdGhy
ZWFkLgorICAgICAgICAvLyBJZiB3ZSBnb3QgYSBEaWROb3RIYW5kbGUsIHRoYXQgbWVhbnMgd2Ug
bmVlZCB0byBkZWxpdmVyIHdoZWVscyBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIC8vIElu
IHRoaXMgY2FzZSB3ZSBuZWVkIHRvIHNjaGVkdWxlIGEgY29tbWl0IGFuZCB0cmFuc2ZlciB0aGUg
ZmxpbmcgY3VydmUgb3ZlciB0byB0aGUgbWFpbgogICAgICAgICAvLyB0aHJlYWQgYW5kIHJ1biB0
aGUgcmVzdCBvZiB0aGUgd2hlZWxzIGZyb20gdGhlcmUuCiAgICAgICAgIC8vIFRoaXMgY2FuIGhh
cHBlbiB3aGVuIGZsaW5naW5nIGEgcGFnZSB0aGF0IGNvbnRhaW5zIGEgc2Nyb2xsYWJsZSBzdWJh
cmVhIHRoYXQgd2UgY2FuJ3QKICAgICAgICAgLy8gc2Nyb2xsIG9uIHRoZSB0aHJlYWQgaWYgdGhl
IGZsaW5nIHN0YXJ0cyBvdXRzaWRlIHRoZSBzdWJhcmVhIGJ1dCB0aGVuIGlzIGZsdW5nICJ1bmRl
ciIgdGhlCiAgICAgICAgIC8vIHBvaW50ZXIuCi0gICAgICAgIC8vIEZvciBub3csIGp1c3QgYWJv
cnQgdGhlIGZsaW5nLgorICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+dHJhbnNmZXJXaGVl
bEZsaW5nQW5pbWF0aW9uKG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMpOwogICAgICAgICBjYW5jZWxD
dXJyZW50RmxpbmcoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwuaAppbmRleCBjOWZmNWUzNTExOTE1NGI3YWFkOGZkMmRhNGFlNmUzZDQ4NzUwZjY0Li4xMTAx
NGE2MzUyYjg4ZWE1NjViNWM2MzUxZTUzZDc1MmYzNGE1OTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGxfaAogI2RlZmluZSBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbF9oCiAKLSNpbmNsdWRl
ICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgiCiAj
aW5jbHVkZSAiV2ViQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXIuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCkBAIC00MSw2ICs0MSw3IEBAIGNs
YXNzIE11dGV4OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbnRQb2ludDsKIGNs
YXNzIENDR2VzdHVyZUN1cnZlVGFyZ2V0OwogY2xhc3MgQ0NJbnB1dEhhbmRsZXJDbGllbnQ7CiBj
bGFzcyBDQ1RocmVhZDsKQEAgLTgzLDcgKzg0LDggQEAgcHJpdmF0ZToKICAgICBib29sIGNhbmNl
bEN1cnJlbnRGbGluZygpOwogCiAgICAgT3duUHRyPFdlYkNvcmU6OkNDQWN0aXZlR2VzdHVyZUFu
aW1hdGlvbj4gbV93aGVlbEZsaW5nQW5pbWF0aW9uOwotICAgIFdlYkNvcmU6OkludFBvaW50IG1f
d2hlZWxGbGluZ1BvaW50OyAvLyBQb2ludGVyIHBvc2l0aW9uIGZvciB0aGUgY3VycmVudCBmbGlu
Zy4KKyAgICAvLyBQYXJhbWV0ZXJzIGZvciB0aGUgYWN0aXZlIGZsaW5nIGFuaW1hdGlvbiwgc3Rv
cmVkIGluIGNhc2Ugd2UgbmVlZCB0byB0cmFuc2ZlciBpdCBvdXQgbGF0ZXIuCisgICAgV2ViQ29y
ZTo6QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMgbV93aGVlbEZsaW5nUGFyYW1ldGVyczsKIAog
ICAgIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQqIG1fY2xpZW50OwogICAgIGludCBt
X2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJM
YXllclRyZWVWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXll
clRyZWVWaWV3SW1wbC5jcHAKaW5kZXggMzM1ODc5YjY2MDUzNGE0YmM3NTdlNTE3NzRmMzJmZmRj
NjdlN2ZlYy4uNmM4ZDZlZDNhOGU3MTBlYjJhMTYyMWIwNGM2ZjE3ZDA2ZDliMjc0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNw
cApAQCAtMjYsMTYgKzI2LDIwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vi
TGF5ZXJUcmVlVmlld0ltcGwuaCIKIAorI2luY2x1ZGUgIkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiQ0NUaHJlYWRJbXBsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgImNj
L0NDVGhyZWFkUHJveHkuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJHcmFwaGljc0NvbnRleHQz
RC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0v
V2ViTGF5ZXJUcmVlVmlldy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyVHJlZVZpZXdD
bGllbnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTaXplLmgiCiAjaW5jbHVkZSAicGxhdGZv
cm0vV2ViVGhyZWFkLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJh
bWV0ZXJzLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KKyNpbmNsdWRlIDxw
dWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXIu
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oPgorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJMYXllclRyZWVWaWV3Q2xpZW50Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlBvaW50Lmg+
CisjaW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKQEAgLTEwNyw2ICsxMTEsMjAgQEAgdm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkQ29t
cGxldGVTd2FwQnVmZmVycygpCiAgICAgICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZm
ZXJzKCk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OnRyYW5zZmVyV2hlZWxGbGlu
Z0FuaW1hdGlvbihjb25zdCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
K3sKKyAgICBpZiAobV9jbGllbnQpIHsKKyAgICAgICAgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFt
ZXRlcnMgd2ViUGFyYW1ldGVyczsKKyAgICAgICAgd2ViUGFyYW1ldGVycy5kZWx0YSA9IFdlYkZs
b2F0UG9pbnQocGFyYW1ldGVycy5kZWx0YS53aWR0aCgpLCBwYXJhbWV0ZXJzLmRlbHRhLmhlaWdo
dCgpKTsKKyAgICAgICAgd2ViUGFyYW1ldGVycy5wb2ludCA9IHBhcmFtZXRlcnMucG9pbnQ7Cisg
ICAgICAgIHdlYlBhcmFtZXRlcnMuZ2xvYmFsUG9pbnQgPSBwYXJhbWV0ZXJzLnBvaW50OworICAg
ICAgICB3ZWJQYXJhbWV0ZXJzLm1vZGlmaWVycyA9IHBhcmFtZXRlcnMubW9kaWZpZXJzOworICAg
ICAgICB3ZWJQYXJhbWV0ZXJzLnN0YXJ0VGltZSA9IHBhcmFtZXRlcnMuc3RhcnRUaW1lOworICAg
ICAgICB3ZWJQYXJhbWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGwgPSBwYXJhbWV0ZXJzLmN1bXVsYXRp
dmVTY3JvbGw7CisgICAgICAgIG1fY2xpZW50LT50cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24o
d2ViUGFyYW1ldGVycyk7CisgICAgfQorfQorCiB2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpz
Y2hlZHVsZUNvbXBvc2l0ZSgpCiB7CiAgICAgaWYgKG1fY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKaW5kZXggYjFiMjZkMGZj
MzM4NjA0ZmU1Y2YzODA3MWY1MGE4YzM1ODY0NTJmYi4uNmE5NDk0MmYwOTNhMmFmNDU3ZDkxMWUz
Nzk0YjM5MzgwNjBhOGM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXJUcmVlVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJMYXllclRyZWVWaWV3SW1wbC5oCkBAIC0zMCw2ICszMCwxMCBAQAogI2luY2x1ZGUgImNjL0ND
TGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK3N0cnVjdCBBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczsKK30KKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJMYXllcjsKIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdD
bGllbnQ7CkBAIC00OCw2ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y3JlYXRlQ29udGV4dChib29sIHN1Y2Nlc3MpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRB
bmREcmF3RnJhbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygp
OworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgV2Vi
Q29yZTo6QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKTsKIAogICAgIC8vIE9ubHkgdXNlZCBp
biB0aGUgc2luZ2xlIHRocmVhZGVkIHBhdGguCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29t
cG9zaXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5k
ZXggMTFhZWViYTc1MTlkN2ExYjlhODZlODI3Y2E3YjZjYWMzYWU1NmY4Ny4uNmQzN2U5YWYyNGI0
YzMzNzM5YWVkM2U1YjZhY2VhZDBmM2JlMmJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzEsMTEgKzMxLDEwIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKIAorI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUu
aCIKICNpbmNsdWRlICJBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uaCIKICNpbmNsdWRl
ICJBdXRvZmlsbFBvcHVwTWVudUNsaWVudC5oIgotI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIK
ICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RDaHJvbWl1bS5oIgotI2luY2x1ZGUgImNjL0NDUHJv
eHkuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVL
ZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgpAQCAtMTE5LDMyICsxMTgsMzUgQEAKICNp
bmNsdWRlICJXZWJDb21wb3NpdG9ySW1wbC5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRJ
bXBsLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUuaCIKLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgotI2luY2x1
ZGUgInBsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAicGxhdGZvcm0v
V2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJJ
bnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaCIKICNpbmNs
dWRlICJXZWJLaXQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQu
aCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllci5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dl
YkxheWVyVHJlZVZpZXcuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllckFjdGlvbi5oIgogI2lu
Y2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJQbHVnaW4uaCIKICNpbmNsdWRlICJXZWJQ
bHVnaW5BY3Rpb24uaCIKICNpbmNsdWRlICJXZWJQbHVnaW5Db250YWluZXJJbXBsLmgiCi0jaW5j
bHVkZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVJbXBsLmgi
CiAjaW5jbHVkZSAiV2ViUmFuZ2UuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCiAj
aW5jbHVkZSAiV2ViUnVudGltZUZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2ViU2V0dGluZ3NJbXBs
LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0v
V2ViVmVjdG9yLmgiCiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUgIldoZWVs
RXZlbnQuaCIKKyNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
RHJhZ0RhdGEuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJJbWFnZS5oIgorI2luY2x1ZGUgInBs
YXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0
cmluZy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJG
bG9hdFBvaW50Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+Cisj
aW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyVHJl
ZVZpZXcuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUG9pbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMv
V2ViUmVjdC5oPgogI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNjMwLDYgKzYzMiw3
IEBAIGJvb2wgV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQm
IGV2ZW50KQogewogICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewogICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ6IHsKKyAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDIo
IndlYmtpdCIsICJXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydCIs
ICJkZWx0YVgiLCBldmVudC5kZWx0YVgsICJkZWx0YVkiLCBldmVudC5kZWx0YVkpOwogICAgICAg
ICBtX2xhc3RXaGVlbFBvc2l0aW9uID0gV2ViUG9pbnQoZXZlbnQueCwgZXZlbnQueSk7CiAgICAg
ICAgIG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb24gPSBXZWJQb2ludChldmVudC5nbG9iYWxYLCBl
dmVudC5nbG9iYWxZKTsKICAgICAgICAgbV9mbGluZ01vZGlmaWVyID0gZXZlbnQubW9kaWZpZXJz
OwpAQCAtNjM4LDEyICs2NDEsMTQgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KGNv
bnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiAgICAgICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdl
c3R1cmVGbGluZ0NhbmNlbDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0Nh
bmNlbDogeworICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgid2Via2l0IiwgIldlYlZpZXdJ
bXBsOjpnZXN0dXJlRXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbCIpOwogICAgICAgICBpZiAobV9n
ZXN0dXJlQW5pbWF0aW9uKSB7CiAgICAgICAgICAgICBtX2dlc3R1cmVBbmltYXRpb24uY2xlYXIo
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46
CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgogICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZToKQEAgLTY2Miw2ICs2NjcsMTggQEAgYm9v
bCBXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjp0cmFuc2ZlcldoZWVs
RmxpbmdBbmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCit7CisgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1w
bDo6dHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0aW9uIik7CisgICAgQVNTRVJUKCFtX2dlc3R1cmVB
bmltYXRpb24pOworICAgIG1fbGFzdFdoZWVsUG9zaXRpb24gPSBwYXJhbWV0ZXJzLnBvaW50Owor
ICAgIG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb24gPSBwYXJhbWV0ZXJzLmdsb2JhbFBvaW50Owor
ICAgIG1fZmxpbmdNb2RpZmllciA9IHBhcmFtZXRlcnMubW9kaWZpZXJzOworICAgIE93blB0cjxQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3VydmUgPSBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmU6OmNyZWF0ZShwYXJhbWV0ZXJzLmRlbHRhLCBwYXJhbWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGwp
OworICAgIG1fZ2VzdHVyZUFuaW1hdGlvbiA9IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlv
bjo6Y3JlYXRlKGN1cnZlLnJlbGVhc2UoKSwgdGhpcywgcGFyYW1ldGVycy5zdGFydFRpbWUpOwor
ICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnN0YXJ0UGFn
ZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGwsIGJvb2wgdXNlQW5jaG9yLCBm
bG9hdCBuZXdTY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKQogewogICAgIGlmICghbV9sYXllclRy
ZWVWaWV3LmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
aW5kZXggMjI5MzhhZDZiZDZjNDk3NWY3NGZlMzdlNDE1NDg3ZmVlY2ExMjE1Yi4uMDYzZDhmNzIw
M2MxMDQ4NDgyNDVkM2NiODdkMzhjNzE2YmZmYmUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0yNjEsNiArMjYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29t
cGxldGVTd2FwQnVmZmVycygpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgp
OworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgV2Vi
QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKTsKIAogICAgIC8vIFdlYlZpZXdJbXBsCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdC5jcHAKaW5kZXggYTE5MmJhNTU3YmYwZWExNmMyMWU0YzA0MjQyY2IyNWQwOTBhMTc2
My4uYTRhZWIwNmIwZDc1YTZlN2NjMjVkZjNlZTFlZjcxYzBlZjI5MmYzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dC5jcHAKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVk
c1JlZHJhd09uSW1wbFRocmVhZCgpIHsgbV9kaWRSZXF1ZXN0UmVkcmF3ID0gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpIHsgbV9kaWRSZXF1ZXN0
Q29tbWl0ID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9N
YWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+
LCBkb3VibGUgd2FsbENsb2NrVGltZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyV2hl
ZWxGbGluZ0FuaW1hdGlvblRvTWFpblRocmVhZE9uSW1wbFRocmVhZChjb25zdCBBY3RpdmVXaGVl
bEZsaW5nUGFyYW1ldGVycyYpIHsgfQogCiAgICAgc3RhdGljIHZvaWQgZXhwZWN0Q2xlYXJlZFNj
cm9sbERlbHRhc1JlY3Vyc2l2ZShDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5k
ZXggM2ZkYTJjOWVlN2FjYWYwYmVlMzY3ZGViNWU2YjFkOTNhOGQxY2I1Ni4uMTcwNzdhYTlhNjFi
MzIzYzAyOGU1ODM2NDA1ZGQ5NDdkZmEwNTVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0yNTUsNiArMjU1LDgg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJXaGVl
bEZsaW5nQW5pbWF0aW9uKGNvbnN0IEFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikgeyB9CisK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgTW9ja0xheWVyVHJlZUhvc3RDbGllbnQoVGVzdEhvb2tz
KiB0ZXN0SG9va3MpIDogbV90ZXN0SG9va3ModGVzdEhvb2tzKSB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQu
aAppbmRleCAzODg3NmQ3MzdmYjUyYWE2ZDAzYzcxYmZmZTQxNzI4YzhjY2NmMGI1Li44ZGRiMTBh
OGEyNTljYTZkOTBmMGIzYmQyZjNlZWJjZmUwYWVhODgyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaApAQCAt
NDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlQ29udGV4
dChib29sIHN1Y2Nlc3MpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJh
bWUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgQWN0aXZl
V2hlZWxGbGluZ1BhcmFtZXRlcnMmKSB7IH0KIAogICAgIC8vIFVzZWQgb25seSBpbiB0aGUgc2lu
Z2xlLXRocmVhZGVkIHBhdGguCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAKaW5kZXggZmE4MjQ3YjExMGMw
N2ViMTU3ZmQ1NDQ5MDI2NDllMWRiNTBmMGQwNi4uODI2MGRhYWI3ZTY0ZGY0MmRmMDMwZDgyM2Jh
ZGI0ZTgyZmFhZTU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcApAQCAt
NjIsNiArNjIsOCBAQCBwdWJsaWM6CiAgICAgTU9DS19NRVRIT0QxKHNjcm9sbEJ5LCB2b2lkKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKSk7CiAgICAgTU9DS19NRVRIT0QwKHNjcm9sbEVuZCwgdm9p
ZCgpKTsKIAorICAgIE1PQ0tfTUVUSE9EMSh0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24sIHZv
aWQoY29uc3QgV2ViQ29yZTo6QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSk7CisKIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHRhcmdldFBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGFuY2hvclBvaW50LApAQCAtMTMwLDMwICsxMzIsMzIgQEAgcHVi
bGljOgogICAgICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CiAgICAgfQog
Ci0gICAgdm9pZCB2ZXJpZnlBbmRSZXNldE1vY2tzKCkKLSAgICB7Ci0gICAgICAgIHRlc3Rpbmc6
Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNs
aWVudCk7Ci0gICAgICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25z
KCZtX21vY2tDbGllbnQpOwotICAgICAgICBzd2l0Y2ggKG1fZXhwZWN0ZWREaXNwb3NpdGlvbikg
ewotICAgICAgICBjYXNlIERpZEhhbmRsZToKLSAgICAgICAgICAgIC8vIElmIHdlIGV4cGVjdCB0
byBoYW5kbGUgZXZlbnRzLCB3ZSBzaG91bGRuJ3QgZ2V0IGFueSBkaWROb3RIYW5kbGVJbnB1dEV2
ZW50KCkgY2FsbHMgd2l0aCBhbnkgcGFyYW1ldGVyLgotICAgICAgICAgICAgRVhQRUNUX0NBTEwo
bV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KDo6dGVzdGluZzo6XykpLlRpbWVz
KDApOwotICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWRIYW5kbGVJbnB1
dEV2ZW50KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGlkTm90SGFuZGxl
OgotICAgICAgICAgICAgLy8gSWYgd2UgYXJlbid0IGV4cGVjdGluZyB0byBoYW5kbGUgZXZlbnRz
LCB3ZSBzaG91bGRuJ3QgY2FsbCBkaWRIYW5kbGVJbnB1dEV2ZW50KCkuCi0gICAgICAgICAgICBF
WFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZEhhbmRsZUlucHV0RXZlbnQoKSkuVGltZXMoMCk7
Ci0gICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZE5vdEhhbmRsZUlucHV0
RXZlbnQoZmFsc2UpKS5UaW1lcygwKTsKLSAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0Ns
aWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudCh0cnVlKSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBEcm9wRXZlbnQ6Ci0gICAgICAgICAgICAvLyBJZiB3ZSdyZSBleHBlY3Rp
bmcgdG8gZHJvcCwgd2Ugc2hvdWxkbid0IGdldCBhbnkgZGlkSGFuZGxlLi4oKSBvciBkaWROb3RI
YW5kbGVJbnB1dEV2ZW50KHRydWUgLyogc2VuZFRvV2lkZ2V0ICovKSBjYWxscy4KLSAgICAgICAg
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkSGFuZGxlSW5wdXRFdmVudCgpKS5UaW1l
cygwKTsKLSAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxl
SW5wdXRFdmVudCh0cnVlKSkuVGltZXMoMCk7Ci0gICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tDbGllbnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQoZmFsc2UpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgfQorICAgIC8vIFRoaXMgaXMgZGVmaW5lZCBhcyBhIG1hY3Jv
IGJlY2F1c2Ugd2hlbiBhbiBleHBlY3RhdGlvbiBpcyBub3Qgc2F0aXNmaWVkIHRoZSBvbmx5IG91
dHB1dCB5b3UgZ2V0CisgICAgLy8gb3V0IG9mIGdtb2NrIGlzIHRoZSBsaW5lIG51bWJlciB0aGF0
IHNldCB0aGUgZXhwZWN0YXRpb24uCisjZGVmaW5lIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKSBk
byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdGVzdGlu
Zzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVy
Q2xpZW50KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDbGll
bnQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBzd2l0Y2ggKG1fZXhwZWN0ZWREaXNwb3NpdGlvbikgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgY2FzZSBEaWRIYW5kbGU6ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAvKiBJZiB3ZSBleHBlY3QgdG8g
aGFuZGxlIGV2ZW50cywgd2Ugc2hvdWxkbid0IGdldCBhbnkgZGlkTm90SGFuZGxlSW5wdXRFdmVu
dCgpIGNhbGxzIHdpdGggYW55IHBhcmFtZXRlci4gKi8gXAorICAgICAgICAgICAgRVhQRUNUX0NB
TEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KDo6dGVzdGluZzo6XykpLlRp
bWVzKDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkSGFuZGxlSW5wdXRFdmVudCgpKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBjYXNlIERpZE5vdEhhbmRsZTogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIC8qIElmIHdlIGFyZW4ndCBleHBlY3Rpbmcg
dG8gaGFuZGxlIGV2ZW50cywgd2Ugc2hvdWxkbid0IGNhbGwgZGlkSGFuZGxlSW5wdXRFdmVudCgp
LiAqLyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tDbGllbnQsIGRpZEhhbmRsZUlucHV0RXZlbnQoKSkuVGltZXMoMCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRVhQRUNU
X0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KGZhbHNlKSkuVGltZXMo
MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudCh0cnVl
KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBjYXNlIERyb3BFdmVudDogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIC8qIElmIHdlJ3JlIGV4cGVjdGluZyB0
byBkcm9wLCB3ZSBzaG91bGRuJ3QgZ2V0IGFueSBkaWRIYW5kbGUuLigpIG9yIGRpZE5vdEhhbmRs
ZUlucHV0RXZlbnQodHJ1ZSkgY2FsbHMuICovICBcCisgICAgICAgICAgICBFWFBFQ1RfQ0FMTCht
X21vY2tDbGllbnQsIGRpZEhhbmRsZUlucHV0RXZlbnQoKSkuVGltZXMoMCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRVhQ
RUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KHRydWUpKS5UaW1l
cygwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudChm
YWxzZSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICB9IHdoaWxlICgwKQogCiBwcm90ZWN0ZWQ6CiAgICAgTW9ja0NDSW5wdXRIYW5k
bGVyQ2xpZW50IG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50OwpAQCAtMTczLDcgKzE3Nyw3IEBA
IFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVTY3JvbGxT
dGFydGVkKQogewogICAgIC8vIFdlIHNob3VsZG4ndCBzZW5kIGFueSBldmVudHMgdG8gdGhlIHdp
ZGdldCBmb3IgdGhpcyBnZXN0dXJlLgogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZEhh
bmRsZTsKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9N
T0NLUygpOwogCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNj
cm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVz
dGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVk
KSk7CkBAIC0xODEsMTQgKzE4NSwxNCBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGxUZXN0LCBnZXN0dXJlU2Nyb2xsU3RhcnRlZCkKICAgICBnZXN0dXJlLnR5cGUgPSBXZWJL
aXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjsKICAgICBtX2lucHV0SGFuZGxl
ci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3Mo
KTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICBnZXN0dXJlLnR5cGUgPSBX
ZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU7CiAgICAgZ2VzdHVyZS5k
ZWx0YVkgPSAtNDA7IC8vIC1ZIG1lYW5zIHNjcm9sbCBkb3duIC0gaS5lLiBpbiB0aGUgK1kgZGly
ZWN0aW9uLgogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3Jv
bGxCeSh0ZXN0aW5nOjpQcm9wZXJ0eSgmV2ViQ29yZTo6SW50U2l6ZTo6aGVpZ2h0LCB0ZXN0aW5n
OjpHdCgwKSkpKTsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJl
KTsKIAotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01P
Q0tTKCk7CiAKICAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1
cmVTY3JvbGxFbmQ7CiAgICAgZ2VzdHVyZS5kZWx0YVkgPSAwOwpAQCAtMjAwLDcgKzIwNCw3IEBA
IFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVTY3JvbGxG
YWlsZWQpCiB7CiAgICAgLy8gV2Ugc2hvdWxkIHNlbmQgYWxsIGV2ZW50cyB0byB0aGUgd2lkZ2V0
IGZvciB0aGlzIGdlc3R1cmUuCiAgICAgbV9leHBlY3RlZERpc3Bvc2l0aW9uID0gRGlkTm90SGFu
ZGxlOwotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01P
Q0tTKCk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Ny
b2xsQmVnaW4oOjp0ZXN0aW5nOjpfLCA6OnRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2Uo
dGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxGYWls
ZWQpKTsKQEAgLTIwOCwxMyArMjEyLDEzIEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbFRlc3QsIGdlc3R1cmVTY3JvbGxGYWlsZWQpCiAgICAgZ2VzdHVyZS50eXBlID0gV2Vi
S2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47CiAgICAgbV9pbnB1dEhhbmRs
ZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tz
KCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgZ2VzdHVyZS50eXBlID0g
V2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOwogICAgIGdlc3R1cmUu
ZGVsdGFZID0gNDA7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVy
ZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9N
T0NLUygpOwogCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlU2Nyb2xsRW5kOwogICAgIGdlc3R1cmUuZGVsdGFZID0gMDsKQEAgLTIyOCw3ICsyMzIsNyBA
QCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlU2Nyb2xs
SWdub3JlZCkKICAgICAvLyBpbmRpY2F0aW5nIHRoYXQgd2UgY291bGQgZGV0ZXJtaW5lIHRoYXQg
dGhlcmUncyBub3RoaW5nIHRoYXQgY291bGQgc2Nyb2xsIG9yIG90aGVyd2lzZQogICAgIC8vIHJl
YWN0IHRvIHRoaXMgZ2VzdHVyZSBzZXF1ZW5jZSBhbmQgdGh1cyB3ZSBzaG91bGQgZHJvcCB0aGUg
d2hvbGUgZ2VzdHVyZSBzZXF1ZW5jZSBvbiB0aGUgZmxvb3IuCiAgICAgbV9leHBlY3RlZERpc3Bv
c2l0aW9uID0gRHJvcEV2ZW50OwotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJ
RllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFu
ZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCiAgICAgICAg
IC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6
OlNjcm9sbElnbm9yZWQpKTsKQEAgLTI0MSwxMyArMjQ1LDEzIEBAIFRFU1RfRihXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVQaW5jaCkKIHsKICAgICAvLyBXZSBzaG91
bGRuJ3Qgc2VuZCBhbnkgZXZlbnRzIHRvIHRoZSB3aWRnZXQgZm9yIHRoaXMgZ2VzdHVyZS4KICAg
ICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEaWRIYW5kbGU7Ci0gICAgdmVyaWZ5QW5kUmVzZXRN
b2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIGdlc3R1cmUudHlw
ZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoQmVnaW47CiAgICAgRVhQRUNU
X0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHBpbmNoR2VzdHVyZUJlZ2luKCkpOwog
ICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCi0gICAgdmVy
aWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAg
IGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoVXBkYXRl
OwogICAgIGdlc3R1cmUuZGVsdGFYID0gMS41OwpAQCAtMjU2LDcgKzI2MCw3IEBAIFRFU1RfRihX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVQaW5jaCkKICAgICBFWFBF
Q1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgcGluY2hHZXN0dXJlVXBkYXRlKDEu
NSwgV2ViQ29yZTo6SW50UG9pbnQoNywgMTMpKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRs
ZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAg
VkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hVcGRhdGU7CiAgICAgZ2VzdHVyZS5kZWx0YVggPSAw
LjU7CkBAIC0yNjUsNyArMjY5LDcgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsVGVzdCwgZ2VzdHVyZVBpbmNoKQogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5k
bGVyQ2xpZW50LCBwaW5jaEdlc3R1cmVVcGRhdGUoLjUsIFdlYkNvcmU6OkludFBvaW50KDksIDYp
KSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKLSAg
ICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwog
CiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hF
bmQ7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHBpbmNoR2Vz
dHVyZUVuZCgpKTsKQEAgLTI3Niw3ICsyODAsNyBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdTdGFydGVkKQogewogICAgIC8vIFdlIHNob3Vs
ZG4ndCBzZW5kIGFueSBldmVudHMgdG8gdGhlIHdpZGdldCBmb3IgdGhpcyBnZXN0dXJlLgogICAg
IG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZEhhbmRsZTsKLSAgICB2ZXJpZnlBbmRSZXNldE1v
Y2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgRVhQRUNUX0NBTEwo
bV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rp
bmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5w
dXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7CkBAIC0yODYsNyArMjkwLDcgQEAgVEVT
VF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nU3RhcnRl
ZCkKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVB
bmltYXRpb24oKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVy
ZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9N
T0NLUygpOwogCiAgICAgLy8gVmVyaWZ5IHRoYXQgYSBHZXN0dXJlRmxpbmdDYW5jZWwgZHVyaW5n
IGFuIGFuaW1hdGlvbiBjYW5jZWxzIGl0LgogICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2Vi
SW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOwpAQCAtMjk3LDcgKzMwMSw3IEBAIFRFU1Rf
RihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ0ZhaWxlZCkK
IHsKICAgICAvLyBXZSBzaG91bGQgc2VuZCBhbGwgZXZlbnRzIHRvIHRoZSB3aWRnZXQgZm9yIHRo
aXMgZ2VzdHVyZS4KICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEaWROb3RIYW5kbGU7Ci0g
ICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsK
IAogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdp
bih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJl
dHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKSk7CkBAIC0z
MDUsNyArMzA5LDcgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwg
Z2VzdHVyZUZsaW5nRmFpbGVkKQogICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRF
dmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0
RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZ
X0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgLy8gRXZlbiBpZiB3ZSBkaWRuJ3Qgc3RhcnQgYSBm
bGluZyBvdXJzZWx2ZXMsIHdlIHN0aWxsIG5lZWQgdG8gc2VuZCB0aGUgY2FuY2VsIGV2ZW50IHRv
IHRoZSB3aWRnZXQuCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlRmxpbmdDYW5jZWw7CkBAIC0zMTUsNyArMzE5LDcgQEAgVEVTVF9GKFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nRmFpbGVkKQogVEVTVF9GKFdlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nSWdub3JlZCkKIHsKICAg
ICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEaWROb3RIYW5kbGU7Ci0gICAgdmVyaWZ5QW5kUmVz
ZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIEVYUEVDVF9D
QUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0
ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpD
Q0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsSWdub3JlZCkpOwpAQCAtMzIzLDcgKzMyNyw3IEBA
IFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ0ln
bm9yZWQpCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
RmxpbmdTdGFydDsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJl
KTsKIAotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01P
Q0tTKCk7CiAKICAgICAvLyBFdmVuIGlmIHdlIGRpZG4ndCBzdGFydCBhIGZsaW5nIG91cnNlbHZl
cywgd2Ugc3RpbGwgbmVlZCB0byBzZW5kIHRoZSBjYW5jZWwgZXZlbnQgdG8gdGhlIHdpZGdldC4K
ICAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0Nh
bmNlbDsKQEAgLTMzNCwxMiArMzM4LDIyIEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ0FuaW1hdGVzKQogewogICAgIC8vIFdlIHNob3VsZG4n
dCBzZW5kIGFueSBldmVudHMgdG8gdGhlIHdpZGdldCBmb3IgdGhpcyBnZXN0dXJlLgogICAgIG1f
ZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZEhhbmRsZTsKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tz
KCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgLy8gT24gdGhlIGZsaW5n
IHN0YXJ0LCB3ZSBzaG91bGQgc2NoZWR1bGUgYW4gYW5pbWF0aW9uIGJ1dCBub3QgYWN0dWFsbHkg
c3RhcnQKICAgICAvLyBzY3JvbGxpbmcuCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJ
bnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKLSAgICBnZXN0dXJlLmRlbHRhWCA9IC0xMDAw
OworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBmbGluZ0RlbHRhID0gV2ViQ29yZTo6RmxvYXRTaXpl
KDEwMDAsIDApOworICAgIFdlYkNvcmU6OkludFBvaW50IGZsaW5nUG9pbnQgPSBXZWJDb3JlOjpJ
bnRQb2ludCg3LCAxMyk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgZmxpbmdHbG9iYWxQb2ludCA9
IFdlYkNvcmU6OkludFBvaW50KDE3LCAyMyk7CisgICAgaW50IG1vZGlmaWVycyA9IDc7CisgICAg
Z2VzdHVyZS5kZWx0YVggPSBmbGluZ0RlbHRhLndpZHRoKCk7CisgICAgZ2VzdHVyZS5kZWx0YVkg
PSBmbGluZ0RlbHRhLmhlaWdodCgpOworICAgIGdlc3R1cmUueCA9IGZsaW5nUG9pbnQueCgpOwor
ICAgIGdlc3R1cmUueSA9IGZsaW5nUG9pbnQueSgpOworICAgIGdlc3R1cmUuZ2xvYmFsWCA9IGZs
aW5nR2xvYmFsUG9pbnQueCgpOworICAgIGdlc3R1cmUuZ2xvYmFsWSA9IGZsaW5nR2xvYmFsUG9p
bnQueSgpOworICAgIGdlc3R1cmUubW9kaWZpZXJzID0gbW9kaWZpZXJzOwogICAgIEVYUEVDVF9D
QUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKICAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVz
dGluZzo6XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4o
V2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKQEAgLTM1Niwy
NCArMzcwLDM3IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdl
c3R1cmVGbGluZ0FuaW1hdGVzKQogCiAgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJF
eHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKIAotICAgIC8vIFRoZSBz
ZWNvbmQgY2FsbCBzaG91bGQgc3RhcnQgc2Nyb2xsaW5nIGluIHRoZSArWCBkaXJlY3Rpb24uCisg
ICAgLy8gVGhlIHNlY29uZCBjYWxsIHNob3VsZCBzdGFydCBzY3JvbGxpbmcgaW4gdGhlIC1YIGRp
cmVjdGlvbi4KICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2No
ZWR1bGVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJD
bGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2ls
bE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3Jv
bGxTdGFydGVkKSk7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQs
IHNjcm9sbEJ5KHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjp3aWR0aCwgdGVz
dGluZzo6R3QoMCkpKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGll
bnQsIHNjcm9sbEJ5KHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjp3aWR0aCwg
dGVzdGluZzo6THQoMCkpKSk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJD
bGllbnQsIHNjcm9sbEVuZCgpKTsKICAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4xKTsK
IAogICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tD
Q0lucHV0SGFuZGxlckNsaWVudCk7CiAKICAgICAvLyBMZXQncyBzYXkgb24gdGhlIHRoaXJkIGNh
bGwgd2UgaGl0IGEgbm9uLXNjcm9sbGFibGUgcmVnaW9uLiBXZSBzaG91bGQgYWJvcnQgdGhlIGZs
aW5nIGFuZCBub3Qgc2Nyb2xsLgotICAgIC8vIEZJWE1FOiBXZSBhbHNvIG5lZWQgdG8gZG8gc29t
ZSB3b3JrIHRvIHRyYW5zZmVyIHRoZSByZXN0IG9mIHRoaXMgZmxpbmcgdG8gdGhlIG1haW4gdGhy
ZWFkLgotICAgIC8vIEFkZCB0ZXN0cyBmb3IgdGhpcyBvbmNlIGl0J3MgaW1wbGVtZW50ZWQuCisg
ICAgLy8gV2UgYWxzbyBzaG91bGQgcGFzcyB0aGUgY3VycmVudCBmbGluZyBwYXJhbWV0ZXJzIG91
dCB0byB0aGUgY2xpZW50IHNvIHRoZSByZXN0IG9mIHRoZSBmbGluZyBjYW4gYmUKKyAgICAvLyB0
cmFuc2ZlcnJlZCB0byB0aGUgbWFpbiB0aHJlYWQuCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJ
bnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9DQUxM
KG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0
aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lu
cHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKSk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKICAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkpLlRp
bWVzKDApOworCisgICAgLy8gRXhwZWN0ZWQgd2hlZWwgZmxpbmcgYW5pbWF0aW9uIHBhcmFtZXRl
cnM6CisgICAgLy8gKikgZmxpbmdEZWx0YSBhbmQgZmxpbmdQb2ludCBzaG91bGQgbWF0Y2ggdGhl
IG9yaWdpbmFsIEdlc3R1cmVGbGluZ1N0YXJ0IGV2ZW50CisgICAgLy8gKikgc3RhcnRUaW1lIHNo
b3VsZCBiZSAxMCB0byBtYXRjaCB0aGUgdGltZSBwYXJhbWV0ZXIgb2YgdGhlIGZpcnN0IGFuaW1h
dGUoKSBjYWxsIGFmdGVyIHRoZSBHZXN0dXJlRmxpbmdTdGFydAorICAgIC8vICopIGN1bXVsYXRp
dmVTY3JvbGwgZGVwZW5kcyBvbiB0aGUgY3VydmUsIGJ1dCBzaW5jZSB3ZSd2ZSBhbmltYXRlZCBp
biB0aGUgLVggZGlyZWN0aW9uIHRoZSBYIHZhbHVlIHNob3VsZCBiZSA8IDAKKyAgICBFWFBFQ1Rf
Q0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgdHJhbnNmZXJXaGVlbEZsaW5nQW5pbWF0
aW9uKHRlc3Rpbmc6OkFsbE9mKAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6QWN0
aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmRlbHRhLCB0ZXN0aW5nOjpFcShmbGluZ0RlbHRhKSks
CisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpBY3RpdmVXaGVlbEZsaW5nUGFyYW1l
dGVyczo6cG9pbnQsIHRlc3Rpbmc6OkVxKGZsaW5nUG9pbnQpKSwKKyAgICAgICAgdGVzdGluZzo6
RmllbGQoJldlYkNvcmU6OkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpnbG9iYWxQb2ludCwg
dGVzdGluZzo6RXEoZmxpbmdHbG9iYWxQb2ludCkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgm
V2ViQ29yZTo6QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6Om1vZGlmaWVycywgdGVzdGluZzo6
RXEobW9kaWZpZXJzKSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpBY3RpdmVX
aGVlbEZsaW5nUGFyYW1ldGVyczo6c3RhcnRUaW1lLCB0ZXN0aW5nOjpFcSgxMCkpLAorICAgICAg
ICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmN1
bXVsYXRpdmVTY3JvbGwsCisgICAgICAgICAgICB0ZXN0aW5nOjpQcm9wZXJ0eSgmV2ViQ29yZTo6
SW50U2l6ZTo6d2lkdGgsIHRlc3Rpbmc6Okd0KDApKSkpKSk7CiAgICAgbV9pbnB1dEhhbmRsZXIt
PmFuaW1hdGUoMTAuMik7CiAKICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVj
dGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOwpAQCAtMzgzLDYgKzQxMCwxNTIg
QEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5n
QW5pbWF0ZXMpCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNj
aGVkdWxlQW5pbWF0aW9uKCkpLlRpbWVzKDApOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5w
dXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGlt
ZXMoMCk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMyk7CisKKyAgICAvLyBTaW5j
ZSB3ZSd2ZSB0cmFuc2ZlcnJlZCB0aGUgZmxpbmcgdG8gdGhlIG1haW4gdGhyZWFkLCB3ZSBuZWVk
IHRvIHBhc3MgdGhlIG5leHQgR2VzdHVyZUZsaW5nQ2FuY2VsIHRvIHRoZSBtYWluCisgICAgLy8g
dGhyZWFkIGFzIHdlbGwuCisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5k
bGVJbnB1dEV2ZW50KHRydWUpKTsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0
RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDsKKyAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5w
dXRFdmVudChnZXN0dXJlKTsKK30KKworVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsVGVzdCwgZ2VzdHVyZUZsaW5nVHJhbnNmZXJSZXNldHMpCit7CisgICAgLy8gV2Ugc2hvdWxk
bid0IHNlbmQgYW55IGV2ZW50cyB0byB0aGUgd2lkZ2V0IGZvciB0aGlzIGdlc3R1cmUuCisgICAg
bV9leHBlY3RlZERpc3Bvc2l0aW9uID0gRGlkSGFuZGxlOworICAgIFZFUklGWV9BTkRfUkVTRVRf
TU9DS1MoKTsKKworICAgIC8vIFN0YXJ0IGEgZ2VzdHVyZSBmbGluZyBpbiB0aGUgLVggZGlyZWN0
aW9uIHdpdGggemVybyBZIG1vdmVtZW50LgorICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2Vi
SW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIGZs
aW5nRGVsdGEgPSBXZWJDb3JlOjpGbG9hdFNpemUoMTAwMCwgMCk7CisgICAgV2ViQ29yZTo6SW50
UG9pbnQgZmxpbmdQb2ludCA9IFdlYkNvcmU6OkludFBvaW50KDcsIDEzKTsKKyAgICBXZWJDb3Jl
OjpJbnRQb2ludCBmbGluZ0dsb2JhbFBvaW50ID0gV2ViQ29yZTo6SW50UG9pbnQoMTcsIDIzKTsK
KyAgICBpbnQgbW9kaWZpZXJzID0gMTsKKyAgICBnZXN0dXJlLmRlbHRhWCA9IGZsaW5nRGVsdGEu
d2lkdGgoKTsKKyAgICBnZXN0dXJlLmRlbHRhWSA9IGZsaW5nRGVsdGEuaGVpZ2h0KCk7CisgICAg
Z2VzdHVyZS54ID0gZmxpbmdQb2ludC54KCk7CisgICAgZ2VzdHVyZS55ID0gZmxpbmdQb2ludC55
KCk7CisgICAgZ2VzdHVyZS5nbG9iYWxYID0gZmxpbmdHbG9iYWxQb2ludC54KCk7CisgICAgZ2Vz
dHVyZS5nbG9iYWxZID0gZmxpbmdHbG9iYWxQb2ludC55KCk7CisgICAgZ2VzdHVyZS5tb2RpZmll
cnMgPSBtb2RpZmllcnM7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGll
bnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRI
YW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAg
ICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVu
dDo6U2Nyb2xsU3RhcnRlZCkpOworICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50
KGdlc3R1cmUpOworCisgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlv
bnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKKworICAgIC8vIFN0YXJ0IHRoZSBmbGlu
ZyBhbmltYXRpb24gYXQgdGltZSAxMC4gVGhpcyBzaG91bGRuJ3QgYWN0dWFsbHkgc2Nyb2xsLCBq
dXN0IGVzdGFibGlzaCBhIHN0YXJ0IHRpbWUuCisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1
dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5n
OjpfKSkuVGltZXMoMCk7CisgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTApOworCisgICAg
dGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRI
YW5kbGVyQ2xpZW50KTsKKworICAgIC8vIFRoZSBzZWNvbmQgY2FsbCBzaG91bGQgc3RhcnQgc2Ny
b2xsaW5nIGluIHRoZSAtWCBkaXJlY3Rpb24uCisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1
dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5n
OjpfKSkKKyAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0
SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0ND
SW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5nOjpQcm9wZXJ0eSgmV2ViQ29yZTo6
SW50U2l6ZTo6d2lkdGgsIHRlc3Rpbmc6Okx0KDApKSkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9j
a0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSk7CisgICAgbV9pbnB1dEhhbmRsZXIt
PmFuaW1hdGUoMTAuMSk7CisKKyAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVj
dGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOworCisgICAgLy8gTGV0J3Mgc2F5
IG9uIHRoZSB0aGlyZCBjYWxsIHdlIGhpdCBhIG5vbi1zY3JvbGxhYmxlIHJlZ2lvbi4gV2Ugc2hv
dWxkIGFib3J0IHRoZSBmbGluZyBhbmQgbm90IHNjcm9sbC4KKyAgICAvLyBXZSBhbHNvIHNob3Vs
ZCBwYXNzIHRoZSBjdXJyZW50IGZsaW5nIHBhcmFtZXRlcnMgb3V0IHRvIHRoZSBjbGllbnQgc28g
dGhlIHJlc3Qgb2YgdGhlIGZsaW5nIGNhbiBiZQorICAgIC8vIHRyYW5zZmVycmVkIHRvIHRoZSBt
YWluIHRocmVhZC4KKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwg
c2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAu
V2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpT
Y3JvbGxGYWlsZWQpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVu
dCwgc2Nyb2xsQnkodGVzdGluZzo6XykpLlRpbWVzKDApOworICAgIEVYUEVDVF9DQUxMKG1fbW9j
a0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSkuVGltZXMoMCk7CisKKyAgICAvLyBF
eHBlY3RlZCB3aGVlbCBmbGluZyBhbmltYXRpb24gcGFyYW1ldGVyczoKKyAgICAvLyAqKSBmbGlu
Z0RlbHRhIGFuZCBmbGluZ1BvaW50IHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwgR2VzdHVyZUZs
aW5nU3RhcnQgZXZlbnQKKyAgICAvLyAqKSBzdGFydFRpbWUgc2hvdWxkIGJlIDEwIHRvIG1hdGNo
IHRoZSB0aW1lIHBhcmFtZXRlciBvZiB0aGUgZmlyc3QgYW5pbWF0ZSgpIGNhbGwgYWZ0ZXIgdGhl
IEdlc3R1cmVGbGluZ1N0YXJ0CisgICAgLy8gKikgY3VtdWxhdGl2ZVNjcm9sbCBkZXBlbmRzIG9u
IHRoZSBjdXJ2ZSwgYnV0IHNpbmNlIHdlJ3ZlIGFuaW1hdGVkIGluIHRoZSAtWCBkaXJlY3Rpb24g
dGhlIFggdmFsdWUgc2hvdWxkIGJlIDwgMAorICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRI
YW5kbGVyQ2xpZW50LCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24odGVzdGluZzo6QWxsT2Yo
CisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpBY3RpdmVXaGVlbEZsaW5nUGFyYW1l
dGVyczo6ZGVsdGEsIHRlc3Rpbmc6OkVxKGZsaW5nRGVsdGEpKSwKKyAgICAgICAgdGVzdGluZzo6
RmllbGQoJldlYkNvcmU6OkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpwb2ludCwgdGVzdGlu
Zzo6RXEoZmxpbmdQb2ludCkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6QWN0
aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6Omdsb2JhbFBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ0ds
b2JhbFBvaW50KSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpBY3RpdmVXaGVl
bEZsaW5nUGFyYW1ldGVyczo6bW9kaWZpZXJzLCB0ZXN0aW5nOjpFcShtb2RpZmllcnMpKSwKKyAg
ICAgICAgdGVzdGluZzo6RmllbGQoJldlYkNvcmU6OkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJz
OjpzdGFydFRpbWUsIHRlc3Rpbmc6OkVxKDEwKSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZX
ZWJDb3JlOjpBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6Y3VtdWxhdGl2ZVNjcm9sbCwKKyAg
ICAgICAgICAgIHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjp3aWR0aCwgdGVz
dGluZzo6R3QoMCkpKSkpKTsKKyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4yKTsKKwor
ICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lu
cHV0SGFuZGxlckNsaWVudCk7CisKKyAgICAvLyBTaW5jZSB3ZSd2ZSBhYm9ydGVkIHRoZSBmbGlu
ZywgdGhlIG5leHQgYW5pbWF0aW9uIHNob3VsZCBiZSBhIG5vLW9wIGFuZCBzaG91bGQgbm90IHJl
c3VsdCBpbiBhbm90aGVyCisgICAgLy8gZnJhbWUgYmVpbmcgcmVxdWVzdGVkLgorICAgIEVYUEVD
VF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKS5U
aW1lcygwKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Ny
b2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDApOworICAgIG1faW5wdXRI
YW5kbGVyLT5hbmltYXRlKDEwLjMpOworCisgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xl
YXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKKworICAgIC8vIFNp
bmNlIHdlJ3ZlIHRyYW5zZmVycmVkIHRoZSBmbGluZyB0byB0aGUgbWFpbiB0aHJlYWQsIHdlIG5l
ZWQgdG8gcGFzcyB0aGUgbmV4dCBHZXN0dXJlRmxpbmdDYW5jZWwgdG8gdGhlIG1haW4KKyAgICAv
LyB0aHJlYWQgYXMgd2VsbC4KKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZE5vdEhh
bmRsZUlucHV0RXZlbnQodHJ1ZSkpOworICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5w
dXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOworICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJ
bnB1dEV2ZW50KGdlc3R1cmUpOworCisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOworCisg
ICAgLy8gU3RhcnQgYSBzZWNvbmQgZ2VzdHVyZSBmbGluZywgdGhpcyB0aW1lIGluIHRoZSArWSBk
aXJlY3Rpb24gd2l0aCBubyBYLgorICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRF
dmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisgICAgZmxpbmdEZWx0YSA9IFdlYkNvcmU6OkZsb2F0
U2l6ZSgwLCAtMTAwMCk7CisgICAgZmxpbmdQb2ludCA9IFdlYkNvcmU6OkludFBvaW50KDk1LCA4
Nyk7CisgICAgZmxpbmdHbG9iYWxQb2ludCA9IFdlYkNvcmU6OkludFBvaW50KDMyLCA3MSk7Cisg
ICAgbW9kaWZpZXJzID0gMjsKKyAgICBnZXN0dXJlLmRlbHRhWCA9IGZsaW5nRGVsdGEud2lkdGgo
KTsKKyAgICBnZXN0dXJlLmRlbHRhWSA9IGZsaW5nRGVsdGEuaGVpZ2h0KCk7CisgICAgZ2VzdHVy
ZS54ID0gZmxpbmdQb2ludC54KCk7CisgICAgZ2VzdHVyZS55ID0gZmxpbmdQb2ludC55KCk7Cisg
ICAgZ2VzdHVyZS5nbG9iYWxYID0gZmxpbmdHbG9iYWxQb2ludC54KCk7CisgICAgZ2VzdHVyZS5n
bG9iYWxZID0gZmxpbmdHbG9iYWxQb2ludC55KCk7CisgICAgZ2VzdHVyZS5tb2RpZmllcnMgPSBt
b2RpZmllcnM7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNj
aGVkdWxlQW5pbWF0aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVy
Q2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldp
bGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Ny
b2xsU3RhcnRlZCkpOworICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1
cmUpOworCisgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1f
bW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKKworICAgIC8vIFN0YXJ0IHRoZSBzZWNvbmQgZmxp
bmcgYW5pbWF0aW9uIGF0IHRpbWUgMzAuCisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhh
bmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9j
a0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpf
KSkuVGltZXMoMCk7CisgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMzApOworCisgICAgdGVz
dGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5k
bGVyQ2xpZW50KTsKKworICAgIC8vIFRpY2sgdGhlIHNlY29uZCBmbGluZyBvbmNlIG5vcm1hbGx5
LgorICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFu
aW1hdGlvbigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwg
c2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCisgICAgICAgIC5XaWxsT25jZSh0
ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0
ZWQpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xs
QnkodGVzdGluZzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6OmhlaWdodCwgdGVzdGluZzo6
R3QoMCkpKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNj
cm9sbEVuZCgpKTsKKyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgzMC4xKTsKKworICAgIHRl
c3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFu
ZGxlckNsaWVudCk7CisKKyAgICAvLyBUaGVuIGFib3J0IHRoZSBzZWNvbmQgZmxpbmcuCisgICAg
RVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9u
KCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxC
ZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6
OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKSk7Cisg
ICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rp
bmc6Ol8pKS5UaW1lcygwKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNs
aWVudCwgc2Nyb2xsRW5kKCkpLlRpbWVzKDApOworCisgICAgLy8gV2Ugc2hvdWxkIGdldCBwYXJh
bWV0ZXJzIGZyb20gdGhlIHNlY29uZCBmbGluZywgbm90aGluZyBmcm9tIHRoZSBmaXJzdCBmbGlu
ZyBzaG91bGQgImxlYWsiLgorICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xp
ZW50LCB0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24odGVzdGluZzo6QWxsT2YoCisgICAgICAg
IHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6ZGVs
dGEsIHRlc3Rpbmc6OkVxKGZsaW5nRGVsdGEpKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldl
YkNvcmU6OkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpwb2ludCwgdGVzdGluZzo6RXEoZmxp
bmdQb2ludCkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6QWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnM6Omdsb2JhbFBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ0dsb2JhbFBvaW50
KSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpBY3RpdmVXaGVlbEZsaW5nUGFy
YW1ldGVyczo6bW9kaWZpZXJzLCB0ZXN0aW5nOjpFcShtb2RpZmllcnMpKSwKKyAgICAgICAgdGVz
dGluZzo6RmllbGQoJldlYkNvcmU6OkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpzdGFydFRp
bWUsIHRlc3Rpbmc6OkVxKDMwKSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpB
Y3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6Y3VtdWxhdGl2ZVNjcm9sbCwKKyAgICAgICAgICAg
IHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjpoZWlnaHQsIHRlc3Rpbmc6Okx0
KDApKSkpKSk7CisgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMzAuMik7CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133630</attachid>
            <date>2012-03-24 04:16:44 -0700</date>
            <delta_ts>2012-03-25 18:31:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81479-20120324041643.patch</filename>
            <type>text/plain</type>
            <size>89720</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAwYzA2ODRkOWUwYWE2
N2NmY2JmN2UxNTUyY2JjMmUwMGYwMzQ3ZjI5Li44Y2IxN2Y4ZDI0NjllYjFlZmI3ZWMzNmFiZWIw
MzNiYzQ0OWQzNzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMy0yNCAg
TmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBUcmFu
c2ZlciB3aGVlbCBmbGluZ3MgdG8gbWFpbiB0aHJlYWQgaWYgd2UgaGl0IGEgcmVnaW9uIHRoYXQg
Y2FuJ3QgYmUgc2Nyb2xsZWQgZnJvbSB0aGUgY29tcG9zaXRvciB0aHJlYWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNDc5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2Vi
TGF5ZXJUcmVlVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkxh
eWVyVHJlZVZpZXdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Q2xp
ZW50Ojp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24pOgorCiAyMDEyLTAzLTIyICBU
b255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4
IGNocm9taXVtIGJ1aWxkIGFmdGVyIHd0ZiBtb3ZlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBhN2I2MzlhMWRj
Mzg0M2M2NGIxZDRhZTc1NGIyOGJmNTAyNDgxNjUuLjg3YzRkODVkNjNhZmExNWNmZTIxNTA2ZmQ0
YjQ4ZGM2OWYxYzM2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MCBAQAorMjAxMi0wMy0yNCAg
TmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBUcmFu
c2ZlciB3aGVlbCBmbGluZ3MgdG8gbWFpbiB0aHJlYWQgaWYgd2UgaGl0IGEgcmVnaW9uIHRoYXQg
Y2FuJ3QgYmUgc2Nyb2xsZWQgZnJvbSB0aGUgY29tcG9zaXRvciB0aHJlYWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNDc5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlUGxhdGZvcm1HZXN0dXJl
QW5pbWF0aW9uOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5oOgorICAgICAgICAoQWN0aXZl
UGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUdl
c3R1cmVDdXJ2ZVRhcmdldC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZVRhcmdldCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JO
b25lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6c2Nyb2xsQnkp
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oOgorICAgICAgICAoU2Ny
b2xsQW5pbWF0b3JOb25lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZv
cm1HZXN0dXJlQ3VydmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hwYWRGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNocGFkRmxpbmdQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaHBhZEZsaW5nUGxh
dGZvcm1HZXN0dXJlQ3VydmU6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ub3VjaHBhZEZs
aW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaDoKKyAgICAgICAgKFRvdWNocGFkRmxpbmdQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZSk6CisgICAgICAgICogcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRmxpbmdQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZS5oOgorICAgICAgICAoV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZVdoZWVsRmxp
bmdQYXJhbWV0ZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
RmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQWN0
aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OkNDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR2VzdHVyZUN1cnZlLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDR2VzdHVyZUN1cnZlVGFyZ2V0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDTGF5
ZXJUcmVlSG9zdENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnRy
YW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbik6CisgICAgICAgIChDQ0xheWVyVHJlZUhv
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0
SW1wbENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjp0cmFu
c2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24pOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0
SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojp0
cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb25PbkltcGxUaHJlYWQpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1NpbmdsZVRo
cmVhZFByb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldE5lZWRz
Q29tbWl0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnBv
c3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUaHJlYWRQcm94eTo6dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uT25J
bXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTAzLTIzICBTYW1pIEt5
b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldXNlIGJ1ZmZlciBh
bGxvY2F0aW9uIGlmIGNhbnZhcyBzaXplIGRvZXMgbm90IGNoYW5nZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCA1NmE1NTlkMDU0YjY5ZjZmMmQ0ZGQwZWQ3ODZmYzg4MzgxMTVlNjQ3Li5i
MDhjOTdmM2UzMzAxYjIwZTY4NzA5NDc5NDVkYmVkZjc5MGQ0NzRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAzLTI0ICBOYXQgRHVjYSAgPG5kdWNh
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFRyYW5zZmVyIHdoZWVsIGZsaW5n
cyB0byBtYWluIHRocmVhZCBpZiB3ZSBoaXQgYSByZWdpb24gdGhhdCBjYW4ndCBiZSBzY3JvbGxl
ZCBmcm9tIHRoZSBjb21wb3NpdG9yIHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
cy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0xheWVy
VHJlZUhvc3RDbGllbnQuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJBY3RpdmVX
aGVlbEZsaW5nUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjdGl2ZVdoZWVsRmxp
bmdQYXJhbWV0ZXJzOjpXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyk6CisgICAgICAgICog
cHVibGljL1dlYlZpZXcuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJWaWV3KToK
KyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRy
ZWVIb3N0Q2xpZW50LmguCisgICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVRvQ0NHZXN0dXJlQWRh
cHRlcjo6c2Nyb2xsQnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVJbnB1dEV2ZW50SW50ZXJuYWwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlR2VzdHVyZUZsaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmFuaW1h
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6Y2Fu
Y2VsQ3VycmVudEZsaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGw6OnNjcm9sbEJ5KToKKyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGwpOgorICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpXZWJMYXllclRyZWVWaWV3
SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjp0cmFuc2ZlckFj
dGl2ZVdoZWVsRmxpbmdBbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBz
cmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYkxheWVyVHJlZVZpZXdJbXBsKToKKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2Nyb2xsQnkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbik6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAg
ICAoV2ViVmlld0ltcGwpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdDo6dHJh
bnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uT25JbXBsVGhyZWFkKToKKyAgICAgICAgKiB0
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6TW9ja0xheWVyVHJl
ZUhvc3RDbGllbnQ6OnRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbik6CisgICAgICAg
IChNb2NrTGF5ZXJUcmVlSG9zdENsaWVudCk6CisgICAgICAgICogdGVzdHMvRmFrZUNDTGF5ZXJU
cmVlSG9zdENsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RmFrZUNDTGF5ZXJUcmVlSG9zdENs
aWVudDo6dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiB0ZXN0
cy9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1dlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHA6CisKIDIwMTItMDMtMjMgIEpvbmF0aGFuIEJh
Y2tlciAgPGJhY2tlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUg
dW51c2VkIHZhcmlhYmxlcyBmcm9tIHVuaXR0ZXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmggYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaAppbmRleCA1YzBi
OWVmOWEyYTJjNjEzYjExOTAwYzEzZjg5OGYyMjgzOWI0NjViLi5iMjQ1NmNlNzFjMWU1OTUzOWI3
OWEzMGZlZDc0NmU3MWQzZjM5MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaApAQCAtMjgsNiArMjgsNyBA
QAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOworY2xh
c3MgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViU2l6ZTsKIGNsYXNz
IFdlYlRocmVhZDsKIApAQCAtNjEsNiArNjIsMTMgQEAgcHVibGljOgogICAgIC8vIGludGVybmFs
bHkgc2NoZWR1bGUgYSBjb21wb3NpdGluZyBwYXNzIHdoZW4gbmVlZGVkLgogICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgpID0gMDsKIAorCisgICAgLy8gVHJhbnNmZXJzIGFuIGlu
LXByb2dyZXNzIHdoZWVsIGZsaW5nIGFuaW1hdGlvbiB0aGF0IHRoZSBXZWJMYXllclRyZWVWaWV3
CisgICAgLy8gY2FuIG5vIGxvbmdlciBhZHZhbmNlIHRvIHRoZSBjbGllbnQgdG8gZmluaXNoIG91
dC4KKyAgICAvLworICAgIC8vIEZJWE1FOiBSZW1vdmUgZGVmYXVsdCBpbXBsIHdoZW4gY2xpZW50
cyBhcmUgYWxsIHVwZGF0ZWQuCisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxG
bGluZ0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYgcGFyYW1z
KSB7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfldlYkxheWVyVHJlZVZpZXdDbGllbnQo
KSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYjc0MWYxMGY1MGNhNTNjYTIxOGMzNmNjMTQ1
N2YyM2VmMjRlYTZlOC4uZTg5Y2UyY2I4YzFhZDUyNWEwYmI4M2VmZjgzMTUxZTY3Y2M5YjMyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzQzOSw2ICszNDM5LDcgQEAKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jZy9QYXR0ZXJuQ0cuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9UcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1H
ZXN0dXJlQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRm
b3JtR2VzdHVyZUFuaW1hdGlvbi5jcHAKaW5kZXggMThlYzdlYjM0YWUyZTRlMDdiNTZjMTRhM2Uw
MmEzMzc4YmFkOWQ1MC4uNmEwMTNhZGZiNDQ1ZDZkYzk1M2Q0Mzk3OGY0OTg1MDEzN2NjMGVmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJl
QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9y
bUdlc3R1cmVBbmltYXRpb24uY3BwCkBAIC0zNyw2ICszNywxMSBAQCBQYXNzT3duUHRyPEFjdGl2
ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbj4gQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9u
OjpjcmVhdAogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5p
bWF0aW9uKGN1cnZlLCB0YXJnZXQpKTsKIH0KIAorUGFzc093blB0cjxBY3RpdmVQbGF0Zm9ybUdl
c3R1cmVBbmltYXRpb24+IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFBh
c3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGN1cnZlLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZVRhcmdldCogdGFyZ2V0LCBkb3VibGUgc3RhcnRUaW1lKQoreworICAgIHJldHVybiBhZG9wdFB0
cihuZXcgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKGN1cnZlLCB0YXJnZXQsIHN0YXJ0
VGltZSkpOworfQorCiBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246On5BY3RpdmVQbGF0
Zm9ybUdlc3R1cmVBbmltYXRpb24oKQogewogfQpAQCAtNDksNiArNTQsMTQgQEAgQWN0aXZlUGxh
dGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oUGFz
c093blB0cjxQbGF0Zm8KIHsKIH0KIAorQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpB
Y3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZT4gY3VydmUsIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0KiB0YXJnZXQsIGRvdWJsZSBz
dGFydFRpbWUpCisgICAgOiBtX3N0YXJ0VGltZShzdGFydFRpbWUpCisgICAgLCBtX3dhaXRpbmdG
b3JGaXJzdFRpY2soZmFsc2UpCisgICAgLCBtX2N1cnZlKGN1cnZlKQorICAgICwgbV90YXJnZXQo
dGFyZ2V0KQoreworfQorCiBib29sIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6YW5p
bWF0ZShkb3VibGUgdGltZSkKIHsKICAgICBpZiAobV93YWl0aW5nRm9yRmlyc3RUaWNrKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVy
ZUFuaW1hdGlvbi5oCmluZGV4IDlkNTYzZTQ4MzY2NmRkMmFkYTFiNWIwNWU4OTg0ZGYxNWJhYzcw
MjQuLjIxZjE5OWMwN2ExZmNmMzRjNThjMTI0OWYyYjg0ZTRjNTcxMWJjYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1h
dGlvbi5oCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1h
dGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5p
bWF0aW9uKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxBY3RpdmVQbGF0Zm9ybUdl
c3R1cmVBbmltYXRpb24+IGNyZWF0ZShQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiwg
UGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxBY3Rp
dmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24+IGNyZWF0ZShQYXNzT3duUHRyPFBsYXRmb3JtR2Vz
dHVyZUN1cnZlPiwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqLCBkb3VibGUgc3RhcnRUaW1l
KTsKICAgICB+QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKCk7CiAKICAgICBib29sIGFu
aW1hdGUoZG91YmxlIHRpbWUpOwpAQCAtNTAsNiArNTEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIC8vIEFzc3VtZXMgYSB2YWxpZCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCB0aGF0IG91
dGxpdmVzIHRoZSBhbmltYXRpb24uCiAgICAgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9u
KFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+LCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRh
cmdldCopOworICAgIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPFBs
YXRmb3JtR2VzdHVyZUN1cnZlPiwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqLCBkb3VibGUg
c3RhcnRUaW1lKTsKIAogICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKICAgICBib29sIG1fd2FpdGlu
Z0ZvckZpcnN0VGljazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bUdlc3R1cmVDdXJ2ZVRhcmdldC5oCmluZGV4IGIyOGIyOTJjMThkZjA0OGUzYzMwYTFkZjQ5NTMw
NDJmYmVjMzA0NDkuLmQ5MGE5ZTE4MzhjZTI0OTg0ZjViNzA0MzU4NzU4YjIyMWI0NzA1OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUN1cnZlVGFy
Z2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3VydmVU
YXJnZXQuaApAQCAtMjcsMTEgKzI3LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgSW50UG9pbnQ7CitjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZVRhcmdldCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFBv
aW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBJbnRTaXplJikgPSAw
OwogICAgIC8vIEZJWE1FOiBhZGQgaW50ZXJmYWNlcyBmb3Igc2Nyb2xsKCksIGV0Yy4KIAogcHJv
dGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3JOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5j
cHAKaW5kZXggZGUzMzBiNDA2ODFmNzE2NzMzNzAzYjhkMTg2MzIzODRhMWMxNTQ3NS4uNjFlNjA2
ZDAxZmM3MTUyMmI0OTIyZDQ5NmI3NGQwYzhkNTJlNzE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCkBAIC01NjIsMTAgKzU2MiwxMCBAQCB2
b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6c3RvcEFuaW1hdGlvblRpbWVySWZOZWVkZWQoKQogICAg
ICAgICBtX2FuaW1hdGlvbkFjdGl2ZSA9IGZhbHNlOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdG9y
Tm9uZTo6c2Nyb2xsQnkoY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQordm9pZCBTY3JvbGxBbmlt
YXRvck5vbmU6OnNjcm9sbEJ5KGNvbnN0IEludFNpemUmIGxvY2F0aW9uKQogewotICAgIG1fY3Vy
cmVudFBvc1ggKz0gbG9jYXRpb24ueCgpOwotICAgIG1fY3VycmVudFBvc1kgKz0gbG9jYXRpb24u
eSgpOworICAgIG1fY3VycmVudFBvc1ggKz0gbG9jYXRpb24ud2lkdGgoKTsKKyAgICBtX2N1cnJl
bnRQb3NZICs9IGxvY2F0aW9uLmhlaWdodCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oCmluZGV4IGM0
N2JjYTk4NjA5YjRmMTc1ZDNlZDE0MTEzNTg2Mzk5M2IwNTJhYjEuLjg5NTdiYWQ1YTVjYmFkOTA5
YWY2MmE4ZGQyNjk5YmNiZDQyZjlmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yTm9uZS5oCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAg
ICAgLy8gUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQgaW1wbGVtZW50YXRpb24uCi0gICAgdmly
dHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHNj
cm9sbEJ5KGNvbnN0IEludFNpemUmKTsKIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyA6
OlNjcm9sbEFuaW1hdG9yTm9uZVRlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcAppbmRleCA2
NmY3YWIwMWYxMDdiOGVkM2ViNzVjYzMzNDkxNDE4Zjg4YWY5YzdhLi43NmY1NjQzNDljMWRmODFh
ZGFhNzBjMzRmM2I0ZjVlYzhkZTc5MzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKQEAg
LTM1LDE4ICszNSwyNCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBQYXNzT3duUHRyPFBsYXRm
b3JtR2VzdHVyZUN1cnZlPiBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0
ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSkKIHsKLSAgICByZXR1cm4gY3JlYXRlKHZlbG9j
aXR5LCAzLCBGbG9hdFBvaW50KDAuMzMzMywgMC42NjY2KSwgRmxvYXRQb2ludCgwLjY2NjYsIDEp
KTsKKyAgICByZXR1cm4gY3JlYXRlKHZlbG9jaXR5LCBJbnRTaXplKCkpOwogfQogCi1QYXNzT3du
UHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmU6OmNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgZmxvYXQgdW5pdFRp
bWVTY2FsZUxvZzEwLCBjb25zdCBGbG9hdFBvaW50JiBiZXppZXJQMSwgY29uc3QgRmxvYXRQb2lu
dCYgYmV6aWVyUDIpCitQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaHBhZEZs
aW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0
eSwgY29uc3QgSW50U2l6ZSYgY3VtdWxhdGl2ZVNjcm9sbCkKIHsKLSAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSh2ZWxvY2l0eSwgdW5pdFRp
bWVTY2FsZUxvZzEwLCBiZXppZXJQMSwgYmV6aWVyUDIpKTsKKyAgICByZXR1cm4gY3JlYXRlKHZl
bG9jaXR5LCAzLCBGbG9hdFBvaW50KDAuMzMzMywgMC42NjY2KSwgRmxvYXRQb2ludCgwLjY2NjYs
IDEpLCBjdW11bGF0aXZlU2Nyb2xsKTsKIH0KIAotVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVy
ZUN1cnZlOjpUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2lu
dCYgdmVsb2NpdHksIGNvbnN0IGZsb2F0IHVuaXRUaW1lU2NhbGVMb2cxMCwgY29uc3QgRmxvYXRQ
b2ludCYgYmV6aWVyUDEsIGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAyKQorUGFzc093blB0cjxQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpj
cmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IGZsb2F0IHVuaXRUaW1lU2Nh
bGVMb2cxMCwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDEsIGNvbnN0IEZsb2F0UG9pbnQmIGJl
emllclAyLCBjb25zdCBJbnRTaXplJiBjdW11bGF0aXZlU2Nyb2xsKQoreworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKHZlbG9jaXR5LCB1
bml0VGltZVNjYWxlTG9nMTAsIGJlemllclAxLCBiZXppZXJQMiwgY3VtdWxhdGl2ZVNjcm9sbCkp
OworfQorCitUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNocGFkRmxpbmdQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgZmxv
YXQgdW5pdFRpbWVTY2FsZUxvZzEwLCBjb25zdCBGbG9hdFBvaW50JiBiZXppZXJQMSwgY29uc3Qg
RmxvYXRQb2ludCYgYmV6aWVyUDIsIGNvbnN0IEludFNpemUmIGN1bXVsYXRpdmVTY3JvbGwpCiAg
ICAgOiBtX3ZlbG9jaXR5KHZlbG9jaXR5KQogICAgICwgbV90aW1lU2NhbGVGYWN0b3IodW5pdFRp
bWVTY2FsZUxvZzEwIC8gbG9nMTAobWF4KDEwLmYsIG1heChmYWJzKHZlbG9jaXR5LngoKSksIGZh
YnModmVsb2NpdHkueSgpKSkpKSkKICAgICAsIG1fZmxpbmdCZXppZXIoYmV6aWVyUDEueCgpLCBi
ZXppZXJQMS55KCksIGJlemllclAyLngoKSwgYmV6aWVyUDIueSgpKQorICAgICwgbV9jdW11bGF0
aXZlU2Nyb2xsKGN1bXVsYXRpdmVTY3JvbGwpCiB7CiAgICAgQVNTRVJUKHZlbG9jaXR5ICE9IEZs
b2F0UG9pbnQ6Onplcm8oKSk7CiB9CkBAIC03MiwxMSArNzgsMTEgQEAgYm9vbCBUb3VjaHBhZEZs
aW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmFwcGx5KGRvdWJsZSB0aW1lLCBQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZVQKICAgICAgICAgZGlzcGxhY2VtZW50ID0gMTsKIAogICAgIC8vIEtlZXAgdHJhY2sg
b2YgaW50ZWdlciBwb3J0aW9uIG9mIHNjcm9sbCB0aHVzIGZhciwgYW5kIHByZXBhcmUgaW5jcmVt
ZW50LgotICAgIEludFBvaW50IHNjcm9sbChkaXNwbGFjZW1lbnQgKiBtX3ZlbG9jaXR5LngoKSwg
ZGlzcGxhY2VtZW50ICogbV92ZWxvY2l0eS55KCkpOwotICAgIEludFBvaW50IHNjcm9sbEluY3Jl
bWVudChzY3JvbGwgLSBtX2N1bXVsYXRpdmVTY3JvbGwpOworICAgIEludFNpemUgc2Nyb2xsKGRp
c3BsYWNlbWVudCAqIG1fdmVsb2NpdHkueCgpLCBkaXNwbGFjZW1lbnQgKiBtX3ZlbG9jaXR5Lnko
KSk7CisgICAgSW50U2l6ZSBzY3JvbGxJbmNyZW1lbnQoc2Nyb2xsIC0gbV9jdW11bGF0aXZlU2Ny
b2xsKTsKICAgICBtX2N1bXVsYXRpdmVTY3JvbGwgPSBzY3JvbGw7CiAKLSAgICBpZiAodGltZSA8
IDEgfHwgc2Nyb2xsSW5jcmVtZW50ICE9IEludFBvaW50Ojp6ZXJvKCkpIHsKKyAgICBpZiAodGlt
ZSA8IDEgfHwgIXNjcm9sbEluY3JlbWVudC5pc1plcm8oKSkgewogICAgICAgICB0YXJnZXQtPnNj
cm9sbEJ5KHNjcm9sbEluY3JlbWVudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlLmgKaW5kZXggNGU1YjE5YmUyODJmM2RjM2UwMmJhODQwMzM5ZGI4YmE2
NTc0ZDlhYy4uNTlhMjY0YzE0ZmE3YTQ1MmNlMGFhZGRmNGJiMWNiM2YyNTFmYjg4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVy
ZUN1cnZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlLmgKQEAgLTQyLDE4ICs0MiwxOCBAQCBjbGFzcyBQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZVRhcmdldDsKIGNsYXNzIFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSA6
IHB1YmxpYyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NP
d25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxv
Y2l0eSk7Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0
ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgZmxvYXQgdW5pdFRpbWVTY2FsZUxv
ZzEwLCBjb25zdCBGbG9hdFBvaW50JiBiZXppZXJQMSwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVy
UDIpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGUo
Y29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IEludFNpemUmIGN1bXVsYXRpdmVTY3Jv
bGwpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGUo
Y29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IGZsb2F0IHVuaXRUaW1lU2NhbGVMb2cx
MCwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDEsIGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAy
LCBjb25zdCBJbnRTaXplJiBjdW11bGF0aXZlU2Nyb2xsKTsKICAgICB2aXJ0dWFsIH5Ub3VjaHBh
ZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBhcHBseShk
b3VibGUgbW9ub3RvbmljVGltZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqKTsKIAogcHJp
dmF0ZToKLSAgICBleHBsaWNpdCBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29u
c3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IGZsb2F0IHVuaXRUaW1lU2NhbGVMb2cxMCwg
Y29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDEsIGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAyKTsK
LQorICAgIGV4cGxpY2l0IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBG
bG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgZmxvYXQgdW5pdFRpbWVTY2FsZUxvZzEwLCBjb25z
dCBGbG9hdFBvaW50JiBiZXppZXJQMSwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDIsIGNvbnN0
IEludFNpemUmIGN1bXVsYXRpdmVTY3JvbGwpOwogICAgIEZsb2F0UG9pbnQgbV92ZWxvY2l0eTsK
ICAgICBmbG9hdCBtX3RpbWVTY2FsZUZhY3RvcjsKLSAgICBJbnRQb2ludCBtX2N1bXVsYXRpdmVT
Y3JvbGw7CiAgICAgVW5pdEJlemllciBtX2ZsaW5nQmV6aWVyOworICAgIEludFNpemUgbV9jdW11
bGF0aXZlU2Nyb2xsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZS5jcHAKaW5kZXggYzlmMTczMjg5NzljYjdjNzJmZjM5ZjdlY2MyMTExMGY0MzNiYzM5OS4uNTE2
ZDEzYzAzYmExNzVkMDNlYjQ0M2NlYmM1MWNiODEwNGIzZTkyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUu
Y3BwCkBAIC01OSwxMSArNTksMTEgQEAgYm9vbCBXaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmU6OmFwcGx5KGRvdWJsZSB0aW1lLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmcKICAgICAvLyBG
SVhNRTogY29uc2lkZXIgbWFraW5nIHRoZSB2YWx1ZSBvZiBzaWdtYSBzZXR0YWJsZSBpbiB0aGUg
Y29uc3RydWN0b3IuCiAgICAgc3RhdGljIGRvdWJsZSB0d29TaWdtYVNxdWFyZWRJbnZlcnNlID0g
MTY7IC8vIHNpZ21hID0gMC4yNQogICAgIGZsb2F0IGNkZiA9IDEgLSBleHAoLXRpbWUgKiB0aW1l
ICogdHdvU2lnbWFTcXVhcmVkSW52ZXJzZSk7Ci0gICAgSW50UG9pbnQgc2Nyb2xsKGNkZiAqIG1f
dmVsb2NpdHkueCgpLCBjZGYgKiBtX3ZlbG9jaXR5LnkoKSk7Ci0gICAgSW50UG9pbnQgc2Nyb2xs
SW5jcmVtZW50KHNjcm9sbCAtIG1fY3VtdWxhdGl2ZVNjcm9sbCk7CisgICAgSW50U2l6ZSBzY3Jv
bGwoY2RmICogbV92ZWxvY2l0eS54KCksIGNkZiAqIG1fdmVsb2NpdHkueSgpKTsKKyAgICBJbnRT
aXplIHNjcm9sbEluY3JlbWVudChzY3JvbGwgLSBtX2N1bXVsYXRpdmVTY3JvbGwpOwogICAgIG1f
Y3VtdWxhdGl2ZVNjcm9sbCA9IHNjcm9sbDsKIAotICAgIGlmIChjZGYgPCAwLjUgfHwgc2Nyb2xs
SW5jcmVtZW50ICE9IEludFBvaW50Ojp6ZXJvKCkpIHsKKyAgICBpZiAoY2RmIDwgMC41IHx8ICFz
Y3JvbGxJbmNyZW1lbnQuaXNaZXJvKCkpIHsKICAgICAgICAgdGFyZ2V0LT5zY3JvbGxCeShzY3Jv
bGxJbmNyZW1lbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5o
CmluZGV4IGI3MjE0NjE2NTMzM2YyM2M4YzliYmY2YzAxZGRiZjA2N2FlZTFhYzIuLmQwOTU1NjZh
OTIxMmVkMzFmNTIwMDYyZTE3MmZkZWM0ODBjM2M2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCkBAIC00
OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZl
KGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5KTsKIAogICAgIEZsb2F0UG9pbnQgbV92ZWxvY2l0
eTsKLSAgICBJbnRQb2ludCBtX2N1bXVsYXRpdmVTY3JvbGw7CisgICAgSW50U2l6ZSBtX2N1bXVs
YXRpdmVTY3JvbGw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWZjOGMx
MTE3ZjAxNDdlYWExYmM2ZTdkMzg3MTg5YzAxYWRkYzY2MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnMuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ0FjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzX2gKKyNkZWZpbmUgQ0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1l
dGVyc19oCisKKyNpbmNsdWRlICJDcm9zc1RocmVhZENvcGllci5oIgorI2luY2x1ZGUgIkZsb2F0
U2l6ZS5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RydWN0IENDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMgeworICAgIEZsb2F0U2l6ZSBkZWx0
YTsKKyAgICBJbnRQb2ludCBwb2ludDsKKyAgICBJbnRQb2ludCBnbG9iYWxQb2ludDsKKyAgICBp
bnQgbW9kaWZpZXJzOworICAgIEludFNpemUgY3VtdWxhdGl2ZVNjcm9sbDsKKyAgICBkb3VibGUg
c3RhcnRUaW1lOworCisgICAgQ0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycygpCisgICAgICAg
IDogbW9kaWZpZXJzKDApCisgICAgICAgICwgc3RhcnRUaW1lKDApCisgICAgeworICAgIH0KK307
CisKKy8vIExldCBmbGluZyBwYXJhbWV0ZXJzIHRocm91Z2ggd2l0aG91dCBhbnkgY2hhbmdlcy4K
K3RlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEND
QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM+IDogcHVibGljIENyb3NzVGhyZWFkQ29waWVyUGFz
c1Rocm91Z2g8Q0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycz4geworfTsKKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDR2VzdHVyZUN1cnZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oCmluZGV4IDVkOThhZjRjNmM5MmIwNzQ4Mjg2MmM2
MzU2NTlhZDNkODJhZWM3M2UuLjQ3ZjIyNzdlNmJlN2ZjZDliMzAwOGU4ZTZkMTRmY2FiODljMzk3
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDR2VzdHVyZUN1cnZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NHZXN0dXJlQ3VydmUuaApAQCAtMjcsMTMgKzI3LDEzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW50UG9pbnQ7CitjbGFzcyBJbnRTaXplOwogCiBj
bGFzcyBDQ0dlc3R1cmVDdXJ2ZVRhcmdldCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0NHZXN0
dXJlQ3VydmVUYXJnZXQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBJ
bnRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYp
ID0gMDsKICAgICAvLyBGSVhNRTogYWRkIGludGVyZmFjZXMgZm9yIHNjcm9sbCgpLCBldGMuCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0lucHV0SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAppbmRleCA3NjYwOGQ5ZmMxZDBkYTEzOWE0OTMw
YmM1MDQ3YzA4YWViOGIyZGY0Li4yZGZjNWQxMDk4ZjlmMzVkYmQxYjRmZTQ5MmRkMGM3YjYyMDRj
NDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0lucHV0SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOworc3RydWN0
IENDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM7CiBjbGFzcyBDQ0dlc3R1cmVDdXJ2ZVRhcmdl
dDsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50U2l6ZTsKQEAgLTc2LDcgKzc3LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZHVy
YXRpb24pID0gMDsKIAogICAgIHZpcnR1YWwgQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKiBhY3Rp
dmVHZXN0dXJlQW5pbWF0aW9uKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmVHZXN0
dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8Q0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uPikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24oY29uc3Qg
Q0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpID0gMDsKIAogICAgIC8vIFJlcXVlc3QgYW5v
dGhlciBjYWxsYmFjayB0byBDQ0lucHV0SGFuZGxlcjo6YW5pbWF0ZSgpLgogICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgK
aW5kZXggNzM5MGVjMzRhOWU3YjhkMDMwNmIzZDY2OTQ2MTFlMDBhNGQ3Mjc2NC4uMWMyNDM4N2Yy
OTBkMDczM2ZjZmI5NzlkOTBhZDM4MTI4NTcwZTc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBD
Q0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsK
IGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKQEAgLTU5
LDYgKzYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQo
Ym9vbCBzdWNjZXNzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFt
ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0
IENDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBhcmFtcykgPSAwOwogCiAgICAgLy8gVXNl
ZCBvbmx5IGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgcGF0aC4KICAgICB2aXJ0dWFsIHZvaWQgc2No
ZWR1bGVDb21wb3NpdGUoKSA9IDA7CkBAIC0xNDcsNiArMTQ5LDggQEAgcHVibGljOgogICAgIHZv
aWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgeyBtX2NsaWVudC0+ZGlkQ29tbWl0QW5kRHJhd0Zy
YW1lKCk7IH0KICAgICB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKSB7IG1fY2xpZW50LT5k
aWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7IH0KICAgICB2b2lkIGRlbGV0ZUNvbnRlbnRzVGV4dHVy
ZXNPbkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZvaWQgdHJhbnNmZXJBY3Rp
dmVXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IENDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMm
IHBhcmFtcykgeyBtX2NsaWVudC0+dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKHBh
cmFtcyk7IH0KKwogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgd2Ugc2hvdWxkIGFib3J0IHRoaXMg
ZnJhbWUgZHVlIHRvIGluaXRpYWxpemF0aW9uIGZhaWx1cmUuCiAgICAgYm9vbCB1cGRhdGVMYXll
cnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IDMzYzllOTE2
NzVlZmEwYjUyNTA1ZjJjODQxYWUzODA5MDUzZTkzNDkuLjAzYTBlMWQ5YmE3ZDMzNzk1Mjc5MjMz
MWQyNGI1MGRmNzRmNGQ4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgK
QEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NBY3RpdmVH
ZXN0dXJlQW5pbWF0aW9uOworY2xhc3MgQ0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczsKIGNs
YXNzIENDQ29tcGxldGlvbkV2ZW50OwogY2xhc3MgQ0NQYWdlU2NhbGVBbmltYXRpb247CiBjbGFz
cyBDQ0xheWVySW1wbDsKQEAgLTU1LDYgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBbmlt
YXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlv
bkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbk9uSW1wbFRocmVhZChjb25zdCBD
Q0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJhbXMpID0gMDsKIH07CiAKIC8vIENDTGF5
ZXJUcmVlSG9zdEltcGwgb3ducyB0aGUgQ0NMYXllckltcGwgdHJlZSBhcyB3ZWxsIGFzIGFzc29j
aWF0ZWQgcmVuZGVyaW5nIHN0YXRlCkBAIC03NSw2ICs3Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcGluY2hHZXN0dXJlRW5kKCk7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNj
YWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIGFuY2hvclBv
aW50LCBmbG9hdCBwYWdlU2NhbGUsIGRvdWJsZSBzdGFydFRpbWUsIGRvdWJsZSBkdXJhdGlvbik7
CiAgICAgdmlydHVhbCBDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24qIGFjdGl2ZUdlc3R1cmVBbmlt
YXRpb24oKSB7IHJldHVybiBtX2FjdGl2ZUdlc3R1cmVBbmltYXRpb24uZ2V0KCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IENDQWN0
aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBhcmFtcykgeyBtX2NsaWVudC0+dHJhbnNmZXJBY3Rp
dmVXaGVlbEZsaW5nQW5pbWF0aW9uT25JbXBsVGhyZWFkKHBhcmFtcyk7IH0KKwogICAgIC8vIFRv
IGNsZWFyIGFuIGFjdGl2ZSBhbmltYXRpb24sIHBhc3MgbnVsbHB0ci4KICAgICB2aXJ0dWFsIHZv
aWQgc2V0QWN0aXZlR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPENDQWN0aXZlR2VzdHVyZUFu
aW1hdGlvbj4pOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCAyZDllMGYzNDFmZTcyNTdkMzQ3
OThmNmNmMWI4ZDRkZjg1OWQyMGIwLi5lZWM2Y2Q5MTk1YTk2ZTc5MDc3MjU4OGQ1NzA0YTNiNDk3
NmZlZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMjY4
LDYgKzI2OCwxMyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnBvc3RBbmltYXRpb25FdmVu
dHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cgogICAgIG1fbGF5ZXJUcmVlSG9z
dC0+c2V0QW5pbWF0aW9uRXZlbnRzKGV2ZW50cywgd2FsbENsb2NrVGltZSk7CiB9CiAKK3ZvaWQg
Q0NTaW5nbGVUaHJlYWRQcm94eTo6dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uT25J
bXBsVGhyZWFkKGNvbnN0IENDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBhcmFtcykKK3sK
KyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIERlYnVnU2NvcGVkU2V0
TWFpblRocmVhZCBtYWluOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+dHJhbnNmZXJBY3RpdmVXaGVl
bEZsaW5nQW5pbWF0aW9uKHBhcmFtcyk7Cit9CisKIC8vIENhbGxlZCBieSB0aGUgbGVnYWN5IHNj
aGVkdWxpbmcgcGF0aCAoZS5nLiB3aGVyZSByZW5kZXJfd2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxp
bmcpCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCBlYmJkOTZlMmMzODgyMjE4
OWQyYjkwYjIxZTZkOTc2YTM2N2MwZTljLi44YTIwZmE3Njc1ODVjNzk4MDNkOTA3ZDdhNjQ2OWM0
ZmZlNjM5NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC0zNCw2
ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ0NBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVyczsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKIAogY2xhc3MgQ0NTaW5nbGVU
aHJlYWRQcm94eSA6IHB1YmxpYyBDQ1Byb3h5LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IHsK
QEAgLTY3LDYgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJh
d09uSW1wbFRocmVhZCgpIHsgbV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgeyBtX2xheWVyVHJl
ZUhvc3QtPnNldE5lZWRzQ29tbWl0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlv
bkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZl
bnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpOworICAgIHZpcnR1YWwgdm9pZCB0cmFu
c2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb25PbkltcGxUaHJlYWQoY29uc3QgQ0NBY3RpdmVX
aGVlbEZsaW5nUGFyYW1ldGVycyYgcGFyYW1zKTsKIAogICAgIC8vIENhbGxlZCBieSB0aGUgbGVn
YWN5IHBhdGggd2hlcmUgUmVuZGVyV2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxpbmcuCiAgICAgdm9p
ZCBjb21wb3NpdGVJbW1lZGlhdGVseSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRl
eCBkY2ZhM2JkMzVlZjg1MTc2ODE2NjkxNGY0M2RlYTMwOGNlZWZiYWE1Li5kNjI2YTg0M2ExNjc1
YWJmNzY3NWFjNGQ2NGFhNGMxZmUzM2MyNjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNp
bmNsdWRlICJUcmFjZUV2ZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NBY3RpdmVXaGVlbEZsaW5nUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgImNjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaCIKICNpbmNs
dWRlICJjYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjYy9DQ0lucHV0SGFu
ZGxlci5oIgpAQCAtMjkwLDE3ICsyOTEsMjQgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpvblN3YXBC
dWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKQogdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVk
c0NvbW1pdE9uSW1wbFRocmVhZCgpCiB7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKLSAg
ICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQi
LCB0aGlzLCAwKTsKKyAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnNldE5l
ZWRzQ29tbWl0T25JbXBsVGhyZWFkIik7CiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNl
dE5lZWRzQ29tbWl0KCk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6cG9zdEFuaW1hdGlvbkV2
ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRz
VmVjdG9yPiBldmVudHMsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogewogICAgIEFTU0VSVChpc0lt
cGxUaHJlYWQoKSk7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnBvc3RBbmltYXRp
b25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBUUkFDRV9F
VkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJl
YWRPbkltcGxUaHJlYWQiKTsKICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRl
Q0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpzZXRBbmltYXRpb25FdmVudHMsIGV2
ZW50cywgd2FsbENsb2NrVGltZSkpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnRyYW5zZmVy
QWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbk9uSW1wbFRocmVhZChjb25zdCBDQ0FjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzJiBwYXJhbXMpCit7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsK
KyAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnRyYW5zZmVyQWN0aXZlV2hl
ZWxGbGluZ0FuaW1hdGlvbk9uSW1wbFRocmVhZCIpOworICAgIG1fbWFpblRocmVhZFByb3h5LT5w
b3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnRyYW5zZmVy
QWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbiwgcGFyYW1zKSk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6c2V0TmVlZHNSZWRyYXcoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBA
IC02NjgsNiArNjc2LDEzIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6dHJ5VG9SZWNyZWF0ZUNvbnRl
eHQoKQogICAgICAgICBtX2NvbnRleHRSZWNyZWF0aW9uVGltZXIuY2xlYXIoKTsKIH0KIAordm9p
ZCBDQ1RocmVhZFByb3h5Ojp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24oY29uc3Qg
Q0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYgcGFyYW1zKQoreworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5Ojp0cmFu
c2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24iKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnRy
YW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihwYXJhbXMpOworfQorCiB2b2lkIENDVGhy
ZWFkUHJveHk6OmluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBj
b21wbGV0aW9uKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXpl
SW1wbE9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4
IDQ4NjFmNzkwOTI2MDFjMDA1YTA1MDUyMGQ1NDdlZDIxY2RmOWQ3YTAuLjMyMTMzNGUxYTE0NDAy
YjA5MzQ4MzdlNTc4NDJjNDlhMmU0YjQ0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAg
LTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDQ0FjdGl2ZVdo
ZWVsRmxpbmdQYXJhbWV0ZXJzOwogY2xhc3MgQ0NJbnB1dEhhbmRsZXI7CiBjbGFzcyBDQ0xheWVy
VHJlZUhvc3Q7CiBjbGFzcyBDQ1NjaGVkdWxlcjsKQEAgLTc2LDYgKzc3LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOwogICAgIHZpcnR1YWwgdm9pZCBw
b3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NB
bmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSk7CisgICAgdmlydHVh
bCB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbk9uSW1wbFRocmVhZChjb25z
dCBDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJik7CiAKICAgICAvLyBDQ1NjaGVkdWxlckNs
aWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCk7CkBAIC0xMDYs
NiArMTA4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEFuaW1hdGlvbkV2ZW50cyhQYXNzT3du
UHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpOwogICAg
IHZvaWQgYmVnaW5Db250ZXh0UmVjcmVhdGlvbigpOwogICAgIHZvaWQgdHJ5VG9SZWNyZWF0ZUNv
bnRleHQoKTsKKyAgICB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25z
dCBDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJhbXMpOwogCiAgICAgLy8gQ2FsbGVk
IG9uIGltcGwgdGhyZWFkCiAgICAgc3RydWN0IFJlYWRiYWNrUmVxdWVzdCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1l
dGVycy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjI3N2Q1ZmQ0YzY3ZGYxYTI0MWZhNmFhMmNiMjVj
YTQ5NjRhYjRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaApAQCAtMCwwICsxLDU0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyc19oCisjZGVmaW5lIFdlYkFj
dGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzX2gKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1v
bi5oIgorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgInBs
YXRmb3JtL1dlYlBvaW50LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHsK
KyAgICBXZWJGbG9hdFBvaW50IGRlbHRhOworICAgIFdlYlBvaW50IHBvaW50OworICAgIFdlYlBv
aW50IGdsb2JhbFBvaW50OworICAgIGludCBtb2RpZmllcnM7CisgICAgV2ViU2l6ZSBjdW11bGF0
aXZlU2Nyb2xsOworICAgIGRvdWJsZSBzdGFydFRpbWU7CisKKyAgICBXZWJBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVycygpCisgICAgICAgIDogbW9kaWZpZXJzKDApCisgICAgICAgICwgc3RhcnRU
aW1lKDApCisgICAgeworICAgIH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggM2M4YWU0NDg0ZGEyNTNhODM0NWQxZDZmNTJiMTIx
Yzk0NjU0ZjEzMy4uNGQ5OTVlMGZmYjUzNjZlYjVmNTZkMTVhZTliN2Y2N2RjOTliNzUxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApAQCAtNTQsNiArNTQsNyBAQCBj
bGFzcyBXZWJTZXR0aW5nczsKIGNsYXNzIFdlYlNwZWxsQ2hlY2tDbGllbnQ7CiBjbGFzcyBXZWJT
dHJpbmc7CiBjbGFzcyBXZWJWaWV3Q2xpZW50Oworc3RydWN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQ
YXJhbWV0ZXJzOwogc3RydWN0IFdlYk1lZGlhUGxheWVyQWN0aW9uOwogc3RydWN0IFdlYlBsdWdp
bkFjdGlvbjsKIHN0cnVjdCBXZWJQb2ludDsKQEAgLTQyOCw2ICs0MjksMTAgQEAgcHVibGljOgog
ICAgIC8vIENhbiBiZSB1c2VkIGZvciBhbGxvY2F0aW5nIHJlc291cmNlcyB0aGF0IHRoZSBjb21w
b3NpdG9yIHdpbGwgbGF0ZXIgYWNjZXNzLgogICAgIHZpcnR1YWwgV2ViR3JhcGhpY3NDb250ZXh0
M0QqIHNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKCkgPSAwOwogCisgICAgLy8gQ2FsbGVkIHRvIGlu
Zm9ybSB0aGUgV2ViVmlldyB0aGF0IGEgd2hlZWwgZmxpbmcgYW5pbWF0aW9uIHdhcyBzdGFydGVk
IGV4dGVybmFsbHkgKGZvciBpbnN0YW5jZQorICAgIC8vIGJ5IHRoZSBjb21wb3NpdG9yKSBidXQg
bXVzdCBiZSBjb21wbGV0ZWQgYnkgdGhlIFdlYlZpZXcuCisgICAgdmlydHVhbCB2b2lkIHRyYW5z
ZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFy
YW1ldGVycyYpID0gMDsKKwogICAgIC8vIFZpc2liaWxpdHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIFNldHMgdGhl
IHZpc2liaWxpdHkgb2YgdGhlIFdlYlZpZXcuCkBAIC00NTIsNyArNDU3LDYgQEAgcHVibGljOgog
ICAgIC8vIFNpbXVsYXRlcyBhIGNvbXBvc2l0b3IgbG9zdCBjb250ZXh0LgogICAgIHZpcnR1YWwg
dm9pZCBsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKSA9IDA7CiAKLQogcHJvdGVj
dGVkOgogICAgIH5XZWJWaWV3KCkge30KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTkxZTVmZDVkZWYwMGMxZDk3MDc5OTQwMjA5YTMz
YWE5ZTA5NTg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaApAQCAtMCwwICsxLDI2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgIi4uL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKaW5kZXggYjRlMjY3NWNkMmE0ZDlkNjUzM2EzNTVlMDc5
NzkxNjkwOTVlYzgyMi4uNGZjNmI0NzRmMjFjMjBhZjk4NTExNzVjZDYyNDRlYjk1MzE4OThjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcApAQCAtMzUsOCArMzUsMTAgQEAKICNpbmNsdWRlICJX
ZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiY2MvQ0NBY3Rp
dmVHZXN0dXJlQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiY2MvQ0NBY3RpdmVXaGVlbEZsaW5nUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKQEAgLTYyLDcgKzY0LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9jdXJ2ZS0+
YXBwbHkodGltZSwgdGhpcyk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNv
bnN0IEludFBvaW50JiBzY3JvbGxEZWx0YSkKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29u
c3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiAgICAgewogICAgICAgICBBU1NFUlQobV90YXJnZXQp
OwogICAgICAgICBtX3RhcmdldC0+c2Nyb2xsQnkoc2Nyb2xsRGVsdGEpOwpAQCAtMTU0LDI0ICsx
NTYsMzQgQEAgdm9pZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRF
dmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBldmVudCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6
aXNJbXBsVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgVFJBQ0VfRVZFTlQw
KCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVudCIp
OwogCiAgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24g
ZGlzcG9zaXRpb24gPSBoYW5kbGVJbnB1dEV2ZW50SW50ZXJuYWwoZXZlbnQpOwogICAgIHN3aXRj
aCAoZGlzcG9zaXRpb24pIHsKLSAgICBjYXNlIERpZEhhbmRsZToKLSAgICAgICAgbV9jbGllbnQt
PmRpZEhhbmRsZUlucHV0RXZlbnQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaWROb3RI
YW5kbGU6CisgICAgY2FzZSBEaWRIYW5kbGU6IHsKKyAgICAgICAgICAgIFRSQUNFX0VWRU5UMCgi
Y2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmRpZEhhbmRsZUlucHV0RXZlbnQi
KTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaWRIYW5kbGVJbnB1dEV2ZW50KCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBEaWROb3RIYW5kbGU6IHsKKyAgICAgICAgVFJB
Q0VfRVZFTlQxKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6ZGlkTm90SGFu
ZGxlIiwgInNlbmRUb1dpZGdldCIsIHRydWUpOwogICAgICAgICBtX2NsaWVudC0+ZGlkTm90SGFu
ZGxlSW5wdXRFdmVudCh0cnVlIC8qIHNlbmRUb1dpZGdldCAqLyk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRHJvcEV2ZW50OgorICAgIH0KKyAgICBjYXNlIERyb3BFdmVudDogeworICAgICAg
ICBUUkFDRV9FVkVOVDEoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpkaWRO
b3RIYW5kbGUiLCAic2VuZFRvV2lkZ2V0IiwgZmFsc2UpOwogICAgICAgICBtX2NsaWVudC0+ZGlk
Tm90SGFuZGxlSW5wdXRFdmVudChmYWxzZSAvKiBzZW5kVG9XaWRnZXQgKi8pOwogICAgICAgICBi
cmVhazsKICAgICB9CisgICAgZGVmYXVsdDogQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQog
fQogCiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVudEludGVybmFsKGNvbnN0
IFdlYklucHV0RXZlbnQmIGV2ZW50KQogeworICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUlucHV0RXZlbnRJbnRlcm5hbCIpOwogICAg
IGlmIChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWwpIHsKKyAgICAgICAg
VFJBQ0VfRVZFTlQwKCJjYyIsICJNb3VzZVdoZWVsIik7CiAgICAgICAgIGNvbnN0IFdlYk1vdXNl
V2hlZWxFdmVudCYgd2hlZWxFdmVudCA9ICpzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZVdoZWVs
RXZlbnQqPigmZXZlbnQpOwogICAgICAgICBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3Rh
dHVzIHNjcm9sbFN0YXR1cyA9IG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCZWdpbihJbnRQ
b2ludCh3aGVlbEV2ZW50LngsIHdoZWVsRXZlbnQueSksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpX
aGVlbCk7CiAgICAgICAgIHN3aXRjaCAoc2Nyb2xsU3RhdHVzKSB7CkBAIC0xODcsNiArMTk5LDcg
QEAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGw6OmgKICAgICAgICAgICAgIHJldHVybiBEaWROb3RIYW5k
bGU7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZVNjcm9sbEJlZ2luKSB7CisgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiU2Ny
b2xsQmVnaW4iKTsKICAgICAgICAgQVNTRVJUKCFtX2dlc3R1cmVTY3JvbGxTdGFydGVkKTsKICAg
ICAgICAgQVNTRVJUKCFtX2V4cGVjdFNjcm9sbFVwZGF0ZUVuZCk7CiAjaWZuZGVmIE5ERUJVRwpA
QCAtMjA0LDYgKzIxNyw3IEBAIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERp
c3Bvc2l0aW9uIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoCiAgICAgICAgICAgICBy
ZXR1cm4gRHJvcEV2ZW50OwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGUpIHsKKyAgICAgICAgVFJBQ0VfRVZF
TlQwKCJjYyIsICJTY3JvbGxVcGRhdGUiKTsKICAgICAgICAgQVNTRVJUKG1fZXhwZWN0U2Nyb2xs
VXBkYXRlRW5kKTsKIAogICAgICAgICBpZiAoIW1fZ2VzdHVyZVNjcm9sbFN0YXJ0ZWQpCkBAIC0y
MTMsNiArMjI3LDcgQEAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9z
aXRpb24gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmgKICAgICAgICAgbV9pbnB1dEhh
bmRsZXJDbGllbnQtPnNjcm9sbEJ5KEludFNpemUoLWdlc3R1cmVFdmVudC5kZWx0YVgsIC1nZXN0
dXJlRXZlbnQuZGVsdGFZKSk7CiAgICAgICAgIHJldHVybiBEaWRIYW5kbGU7CiAgICAgfSBlbHNl
IGlmIChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQpIHsKKyAg
ICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJTY3JvbGxFbmQiKTsKICAgICAgICAgQVNTRVJUKG1f
ZXhwZWN0U2Nyb2xsVXBkYXRlRW5kKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1fZXhwZWN0
U2Nyb2xsVXBkYXRlRW5kID0gZmFsc2U7CkBAIC0yNDMsOSArMjU4LDExIEBAIFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsOjpoCiAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5waW5jaEdlc3R1cmVV
cGRhdGUoZ2VzdHVyZUV2ZW50LmRlbHRhWCwgSW50UG9pbnQoZ2VzdHVyZUV2ZW50LngsIGdlc3R1
cmVFdmVudC55KSk7CiAgICAgICAgIHJldHVybiBEaWRIYW5kbGU7CiAgICAgfSBlbHNlIGlmIChl
dmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0KSB7CisgICAgICAg
IFRSQUNFX0VWRU5UMCgiY2MiLCAiRmxpbmdTdGFydCIpOwogICAgICAgICBjb25zdCBXZWJHZXN0
dXJlRXZlbnQmIGdlc3R1cmVFdmVudCA9ICpzdGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZl
bnQqPigmZXZlbnQpOwogICAgICAgICByZXR1cm4gaGFuZGxlR2VzdHVyZUZsaW5nKGdlc3R1cmVF
dmVudCk7CiAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVGbGluZ0NhbmNlbCkgeworICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkZsaW5nQ2FuY2Vs
Iik7CiAgICAgICAgIGlmIChjYW5jZWxDdXJyZW50RmxpbmcoKSkKICAgICAgICAgICAgIHJldHVy
biBEaWRIYW5kbGU7CiAgICAgfSBlbHNlIGlmIChXZWJJbnB1dEV2ZW50Ojppc0tleWJvYXJkRXZl
bnRUeXBlKGV2ZW50LnR5cGUpKSB7CkBAIC0yNjMsNyArMjgwLDEwIEBAIFdlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsOjpoCiAgICAgICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJjYyIsICJXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlR2VzdHVyZUZsaW5nOjpzdGFydGVkIik7CiAgICAg
ICAgIE93blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gZmxpbmdDdXJ2ZSA9IFRvdWNocGFkRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKEZsb2F0UG9pbnQoLWdlc3R1cmVFdmVudC5k
ZWx0YVgsIC1nZXN0dXJlRXZlbnQuZGVsdGFZKSk7CiAgICAgICAgIG1fd2hlZWxGbGluZ0FuaW1h
dGlvbiA9IENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFBsYXRmb3JtR2VzdHVyZVRv
Q0NHZXN0dXJlQWRhcHRlcjo6Y3JlYXRlKGZsaW5nQ3VydmUucmVsZWFzZSgpKSwgdGhpcyk7Ci0g
ICAgICAgIG1fd2hlZWxGbGluZ1BvaW50ID0gSW50UG9pbnQoZ2VzdHVyZUV2ZW50LngsIGdlc3R1
cmVFdmVudC55KTsKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5kZWx0YSA9IFdlYkZs
b2F0UG9pbnQoZ2VzdHVyZUV2ZW50LmRlbHRhWCwgZ2VzdHVyZUV2ZW50LmRlbHRhWSk7CisgICAg
ICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMucG9pbnQgPSBXZWJQb2ludChnZXN0dXJlRXZlbnQu
eCwgZ2VzdHVyZUV2ZW50LnkpOworICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmdsb2Jh
bFBvaW50ID0gV2ViUG9pbnQoZ2VzdHVyZUV2ZW50Lmdsb2JhbFgsIGdlc3R1cmVFdmVudC5nbG9i
YWxZKTsKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5tb2RpZmllcnMgPSBnZXN0dXJl
RXZlbnQubW9kaWZpZXJzOwogICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+c2NoZWR1bGVB
bmltYXRpb24oKTsKICAgICAgICAgcmV0dXJuIERpZEhhbmRsZTsKICAgICB9CkBAIC0yOTIsMTEg
KzMxMiwxNCBAQCB2b2lkIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjphbmltYXRlKGRv
dWJsZSBtb25vdG9uaWNUaW1lKQogICAgIGlmICghbV93aGVlbEZsaW5nQW5pbWF0aW9uKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBpZiAoIW1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuc3RhcnRUaW1l
KQorICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnN0YXJ0VGltZSA9IG1vbm90b25pY1Rp
bWU7CisKICAgICBpZiAobV93aGVlbEZsaW5nQW5pbWF0aW9uLT5hbmltYXRlKG1vbm90b25pY1Rp
bWUpKQogICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+c2NoZWR1bGVBbmltYXRpb24oKTsK
ICAgICBlbHNlIHsKICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoImNjIiwgIldlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsOjphbmltYXRlOjpmbGluZ092ZXIiKTsKLSAgICAgICAgbV93
aGVlbEZsaW5nQW5pbWF0aW9uLmNsZWFyKCk7CisgICAgICAgIGNhbmNlbEN1cnJlbnRGbGluZygp
OwogICAgIH0KIH0KIApAQCAtMzA1LDM5ICszMjgsNjEgQEAgYm9vbCBXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbDo6Y2FuY2VsQ3VycmVudEZsaW5nKCkKICAgICBib29sIGhhZEZsaW5nQW5p
bWF0aW9uID0gbV93aGVlbEZsaW5nQW5pbWF0aW9uOwogICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQx
KCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6Y2FuY2VsQ3VycmVudEZsaW5n
IiwgImhhZEZsaW5nQW5pbWF0aW9uIiwgaGFkRmxpbmdBbmltYXRpb24pOwogICAgIG1fd2hlZWxG
bGluZ0FuaW1hdGlvbi5jbGVhcigpOworICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMgPSBXZWJB
Y3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycygpOwogICAgIHJldHVybiBoYWRGbGluZ0FuaW1hdGlv
bjsKIH0KIAotdm9pZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkoY29u
c3QgSW50UG9pbnQmIGluY3JlbWVudCkKK3ZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OnNjcm9sbEJ5KGNvbnN0IEludFNpemUmIGluY3JlbWVudCkKIHsKLSAgICBpZiAoaW5jcmVt
ZW50ID09IEludFBvaW50Ojp6ZXJvKCkpCisgICAgaWYgKGluY3JlbWVudC5pc1plcm8oKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgVFJBQ0VfRVZFTlQyKCJjYyIsICJXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkiLCAieCIsIGluY3JlbWVudC54KCksICJ5IiwgaW5jcmVt
ZW50LnkoKSk7Ci0KLSAgICBXZWJNb3VzZVdoZWVsRXZlbnQgZXZlbnQ7Ci0gICAgZXZlbnQudHlw
ZSA9IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWw7Ci0gICAgZXZlbnQuZGVsdGFYID0gLWluY3Jl
bWVudC54KCk7Ci0gICAgZXZlbnQuZGVsdGFZID0gLWluY3JlbWVudC55KCk7Ci0gICAgZXZlbnQu
aGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IHRydWU7Ci0gICAgZXZlbnQueCA9IG1fd2hlZWxG
bGluZ1BvaW50LngoKTsKLSAgICBldmVudC55ID0gbV93aGVlbEZsaW5nUG9pbnQueSgpOwotCi0g
ICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gZGlzcG9z
aXRpb24gPSBoYW5kbGVJbnB1dEV2ZW50SW50ZXJuYWwoZXZlbnQpOworICAgIFRSQUNFX0VWRU5U
MigiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5IiwgIndpZHRo
IiwgaW5jcmVtZW50LndpZHRoKCksICJoZWlnaHQiLCBpbmNyZW1lbnQuaGVpZ2h0KCkpOworICAg
IFdlYk1vdXNlV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbDsKKyAgICBzeW50aGV0aWNXaGVlbC50
eXBlID0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbDsKKyAgICBzeW50aGV0aWNXaGVlbC5kZWx0
YVggPSAtaW5jcmVtZW50LndpZHRoKCk7CisgICAgc3ludGhldGljV2hlZWwuZGVsdGFZID0gLWlu
Y3JlbWVudC5oZWlnaHQoKTsKKyAgICBzeW50aGV0aWNXaGVlbC5oYXNQcmVjaXNlU2Nyb2xsaW5n
RGVsdGFzID0gdHJ1ZTsKKyAgICBzeW50aGV0aWNXaGVlbC54ID0gbV93aGVlbEZsaW5nUGFyYW1l
dGVycy5wb2ludC54OworICAgIHN5bnRoZXRpY1doZWVsLnkgPSBtX3doZWVsRmxpbmdQYXJhbWV0
ZXJzLnBvaW50Lnk7CisgICAgc3ludGhldGljV2hlZWwuZ2xvYmFsWCA9IG1fd2hlZWxGbGluZ1Bh
cmFtZXRlcnMuZ2xvYmFsUG9pbnQueDsKKyAgICBzeW50aGV0aWNXaGVlbC5nbG9iYWxZID0gbV93
aGVlbEZsaW5nUGFyYW1ldGVycy5nbG9iYWxQb2ludC55OworICAgIHN5bnRoZXRpY1doZWVsLm1v
ZGlmaWVycyA9IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMubW9kaWZpZXJzOworCisgICAgV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gZGlzcG9zaXRpb24gPSBo
YW5kbGVJbnB1dEV2ZW50SW50ZXJuYWwoc3ludGhldGljV2hlZWwpOwogICAgIHN3aXRjaCAoZGlz
cG9zaXRpb24pIHsKICAgICBjYXNlIERpZEhhbmRsZToKKyAgICAgICAgbV93aGVlbEZsaW5nUGFy
YW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsLndpZHRoICs9IC1pbmNyZW1lbnQud2lkdGgoKTsKKyAg
ICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsLmhlaWdodCArPSAt
aW5jcmVtZW50LmhlaWdodCgpOwogICAgIGNhc2UgRHJvcEV2ZW50OgogICAgICAgICBicmVhazsK
ICAgICBjYXNlIERpZE5vdEhhbmRsZToKICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoImNj
IiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeTo6QWJvcnRGbGluZyIp
OwotICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ290IGEgRGlkTm90SGFuZGxlLCB0aGF0IG1lYW5z
IHdlIG5lZWQgdG8gZGVsaXZlciB3aGVlbHMgb24gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAv
LyBJZiB3ZSBnb3QgYSBEaWROb3RIYW5kbGUsIHRoYXQgbWVhbnMgd2UgbmVlZCB0byBkZWxpdmVy
IHdoZWVscyBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBu
ZWVkIHRvIHNjaGVkdWxlIGEgY29tbWl0IGFuZCB0cmFuc2ZlciB0aGUgZmxpbmcgY3VydmUgb3Zl
ciB0byB0aGUgbWFpbgogICAgICAgICAvLyB0aHJlYWQgYW5kIHJ1biB0aGUgcmVzdCBvZiB0aGUg
d2hlZWxzIGZyb20gdGhlcmUuCiAgICAgICAgIC8vIFRoaXMgY2FuIGhhcHBlbiB3aGVuIGZsaW5n
aW5nIGEgcGFnZSB0aGF0IGNvbnRhaW5zIGEgc2Nyb2xsYWJsZSBzdWJhcmVhIHRoYXQgd2UgY2Fu
J3QKICAgICAgICAgLy8gc2Nyb2xsIG9uIHRoZSB0aHJlYWQgaWYgdGhlIGZsaW5nIHN0YXJ0cyBv
dXRzaWRlIHRoZSBzdWJhcmVhIGJ1dCB0aGVuIGlzIGZsdW5nICJ1bmRlciIgdGhlCiAgICAgICAg
IC8vIHBvaW50ZXIuCi0gICAgICAgIC8vIEZvciBub3csIGp1c3QgYWJvcnQgdGhlIGZsaW5nLgor
ICAgICAgICBDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHBhcmFtczsKKyAgICAgICAgcGFy
YW1zLmRlbHRhID0gRmxvYXRTaXplKG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZGVsdGEueCwgbV93
aGVlbEZsaW5nUGFyYW1ldGVycy5kZWx0YS55KTsKKyAgICAgICAgcGFyYW1zLnBvaW50ID0gbV93
aGVlbEZsaW5nUGFyYW1ldGVycy5wb2ludDsKKyAgICAgICAgcGFyYW1zLmdsb2JhbFBvaW50ID0g
bV93aGVlbEZsaW5nUGFyYW1ldGVycy5nbG9iYWxQb2ludDsKKyAgICAgICAgcGFyYW1zLm1vZGlm
aWVycyA9IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMubW9kaWZpZXJzOworICAgICAgICBwYXJhbXMu
Y3VtdWxhdGl2ZVNjcm9sbCA9IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuY3VtdWxhdGl2ZVNjcm9s
bDsKKworICAgICAgICAvLyBXZSB0aWNrIGFuaW1hdGlvbnMgaW4gQ0NMYXllclRyZWVIb3N0IHVz
aW5nIGN1cnJlbnRUaW1lKCksIGJ1dCB0aGUgaW1wbAorICAgICAgICAvLyB0aHJlYWQgdXNlcyBt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKS4gUmViYXNlIGhlcmUgYmVmb3JlIHBhc3Npbmcg
dGltZXMKKyAgICAgICAgLy8gb3V0IHRvIHRoZSBjbGllbnQuCisKKyAgICAgICAgLy8gRklYTUU6
IHRpbWVzaGlmdGluZyBicmVha3MgdGhpZSB0cmFuc2ZlciB1bml0IHRlc3QuCisgICAgICAgIC8v
IEphbWVzOiBhbnkgaWRlYXMgaG93IHRvIHRlc3QgdGhpcyByaWdodD8KKyAgICAgICAgZG91Ymxl
IHRpbWVTaGlmdCA9IDA7IC8vIGN1cnJlbnRUaW1lKCkgLSBtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKTsKKworICAgICAgICBwYXJhbXMuc3RhcnRUaW1lID0gbV93aGVlbEZsaW5nUGFyYW1l
dGVycy5zdGFydFRpbWUgKyB0aW1lU2hpZnQ7CisgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50
LT50cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24ocGFyYW1zKTsKICAgICAgICAgY2Fu
Y2VsQ3VycmVudEZsaW5nKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsLmgKaW5kZXggYzlmZjVlMzUxMTkxNTRiN2FhZDhmZDJkYTRhZTZlM2Q0ODc1MGY2NC4u
YmNkNTgwZDBhNWQyOTdkYTRiZGUyN2QyMzdmOWZjN2MyNmQ3NGU5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsX2gKICNkZWZpbmUgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxfaAogCi0jaW5j
bHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgpAQCAtNDEsNiArNDEs
NyBAQCBjbGFzcyBNdXRleDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW50U2l6
ZTsKIGNsYXNzIENDR2VzdHVyZUN1cnZlVGFyZ2V0OwogY2xhc3MgQ0NJbnB1dEhhbmRsZXJDbGll
bnQ7CiBjbGFzcyBDQ1RocmVhZDsKQEAgLTY3LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKIAogICAgIC8vIFdlYkNvcmU6
OkNDR2VzdHVyZUN1cnZlVGFyZ2V0IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxCeShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwoV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGll
bnQqKTsKQEAgLTgzLDcgKzg0LDggQEAgcHJpdmF0ZToKICAgICBib29sIGNhbmNlbEN1cnJlbnRG
bGluZygpOwogCiAgICAgT3duUHRyPFdlYkNvcmU6OkNDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbj4g
bV93aGVlbEZsaW5nQW5pbWF0aW9uOwotICAgIFdlYkNvcmU6OkludFBvaW50IG1fd2hlZWxGbGlu
Z1BvaW50OyAvLyBQb2ludGVyIHBvc2l0aW9uIGZvciB0aGUgY3VycmVudCBmbGluZy4KKyAgICAv
LyBQYXJhbWV0ZXJzIGZvciB0aGUgYWN0aXZlIGZsaW5nIGFuaW1hdGlvbiwgc3RvcmVkIGluIGNh
c2Ugd2UgbmVlZCB0byB0cmFuc2ZlciBpdCBvdXQgbGF0ZXIuCisgICAgV2ViQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnMgbV93aGVlbEZsaW5nUGFyYW1ldGVyczsKIAogICAgIFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJDbGllbnQqIG1fY2xpZW50OwogICAgIGludCBtX2lkZW50aWZpZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5j
cHAKaW5kZXggMzM1ODc5YjY2MDUzNGE0YmM3NTdlNTE3NzRmMzJmZmRjNjdlN2ZlYy4uZTVhNzg1
ZjgzZTUyZWI5YTZlNjU3NzcyNzdmOWJlZGI3NWRkZWNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcApAQCAtMjksNyArMjks
OSBAQAogI2luY2x1ZGUgIkNDVGhyZWFkSW1wbC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJjYy9D
Q0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94
eS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgi
CiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJMYXllci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyVHJlZVZpZXcu
aCIKQEAgLTUwLDcgKzUyLDcgQEAgUGFzc1JlZlB0cjxXZWJMYXllclRyZWVWaWV3SW1wbD4gV2Vi
TGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZShXZWJMYXllclRyZWVWaWV3Q2wKICAgICByZXR1cm4g
aG9zdDsKIH0KIAotV2ViTGF5ZXJUcmVlVmlld0ltcGw6OldlYkxheWVyVHJlZVZpZXdJbXBsKFdl
YkxheWVyVHJlZVZpZXdDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0
dGluZ3MmIHNldHRpbmdzKSAKK1dlYkxheWVyVHJlZVZpZXdJbXBsOjpXZWJMYXllclRyZWVWaWV3
SW1wbChXZWJMYXllclRyZWVWaWV3Q2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkxheWVyVHJlZVZp
ZXc6OlNldHRpbmdzJiBzZXR0aW5ncykKICAgICA6IENDTGF5ZXJUcmVlSG9zdCh0aGlzLCBzZXR0
aW5ncykKICAgICAsIG1fY2xpZW50KGNsaWVudCkKIHsKQEAgLTEwNyw2ICsxMDksMjAgQEAgdm9p
ZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpCiAgICAgICAg
IG1fY2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXJU
cmVlVmlld0ltcGw6OnRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBXZWJD
b3JlOjpDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJhbXMpCit7CisgICAgaWYgKG1f
Y2xpZW50KSB7CisgICAgICAgIFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHdlYlBhcmFt
czsKKyAgICAgICAgd2ViUGFyYW1zLmRlbHRhID0gV2ViRmxvYXRQb2ludChwYXJhbXMuZGVsdGEu
d2lkdGgoKSwgcGFyYW1zLmRlbHRhLmhlaWdodCgpKTsKKyAgICAgICAgd2ViUGFyYW1zLnBvaW50
ID0gcGFyYW1zLnBvaW50OworICAgICAgICB3ZWJQYXJhbXMuZ2xvYmFsUG9pbnQgPSBwYXJhbXMu
Z2xvYmFsUG9pbnQ7CisgICAgICAgIHdlYlBhcmFtcy5tb2RpZmllcnMgPSBwYXJhbXMubW9kaWZp
ZXJzOworICAgICAgICB3ZWJQYXJhbXMuY3VtdWxhdGl2ZVNjcm9sbCA9IHBhcmFtcy5jdW11bGF0
aXZlU2Nyb2xsOworICAgICAgICB3ZWJQYXJhbXMuc3RhcnRUaW1lID0gcGFyYW1zLnN0YXJ0VGlt
ZTsKKyAgICAgICAgbV9jbGllbnQtPnRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbih3
ZWJQYXJhbXMpOworICAgIH0KK30KKwogdm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6c2NoZWR1
bGVDb21wb3NpdGUoKQogewogICAgIGlmIChtX2NsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCmluZGV4IGIxYjI2ZDBmYzMzODYw
NGZlNWNmMzgwNzFmNTBhOGMzNTg2NDUyZmIuLjg5NjNjZGU2YTU0ODBmYmYwODYwYzI1MGQwZTA1
MWFlYzBhZTIzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyVHJlZVZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5
ZXJUcmVlVmlld0ltcGwuaApAQCAtMzAsMTAgKzMwLDE1IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXll
clRyZWVIb3N0LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAorbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgQ0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBXZWJMYXllcjsKIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdDbGll
bnQ7CiAKKy8vIEZJWE1FOiBXZWJMYXllclRyZWVlVmlld0ltcGwgc2hvdWxkIGhhdmUgYSBDQ0xh
eWVyVHJlZUhvc3QsIG5vdCBpbmhlcml0IGZyb20gaXQuCiBjbGFzcyBXZWJMYXllclRyZWVWaWV3
SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3QsIHB1YmxpYyBXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YkxheWVyVHJlZVZpZXdJbXBsPiBjcmVhdGUoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCosIGNvbnN0
IFdlYkxheWVyJiByb290LCBjb25zdCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncyYpOwpAQCAt
NDEsNiArNDYsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkxheWVyVHJlZVZpZXdJbXBs
KFdlYkxheWVyVHJlZVZpZXdDbGllbnQqLCBjb25zdCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5n
cyYpOwogICAgIHZpcnR1YWwgfldlYkxheWVyVHJlZVZpZXdJbXBsKCk7CisKKyAgICAvLyBDQ0xh
eWVyVHJlZUhvc3RDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
QW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpOwogICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNjYWxlKTsKQEAgLTQ4LDYgKzU1LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3Vj
Y2Vzcyk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7CisgICAgdmlydHVhbCB2b2lkIHRy
YW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBXZWJDb3JlOjpDQ0FjdGl2ZVdo
ZWVsRmxpbmdQYXJhbWV0ZXJzJik7CiAKICAgICAvLyBPbmx5IHVzZWQgaW4gdGhlIHNpbmdsZSB0
aHJlYWRlZCBwYXRoLgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGM0N2ZkZGFhZWU2
ZTVmYTUwMjBjYTU5MjAxZWY2ZTlmY2I3ZjQzMTguLmFiYzYzZTU5NGI0MTI4MTY0NTVlMDg5YTA4
MjE4ZjJlNzc3NTYyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAKQEAgLTMxLDExICszMSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYlZpZXdJbXBsLmgiCiAKKyNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAi
QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiQXV0b2ZpbGxQb3B1
cE1lbnVDbGllbnQuaCIKLSNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQmFj
a0ZvcndhcmRMaXN0Q2hyb21pdW0uaCIKLSNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVk
ZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNp
bmNsdWRlICJDaHJvbWUuaCIKQEAgLTExNSwzNiArMTE0LDM5IEBACiAjaW5jbHVkZSAiVHlwaW5n
Q29tbWFuZC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAi
V2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oIgorI2luY2x1ZGUgIldlYkFjdGl2ZVdoZWVsRmxpbmdQ
YXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViQXV0b2ZpbGxDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJDb21wb3NpdG9ySW1wbC5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRJbXBsLmgiCiAj
aW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgotI2luY2x1ZGUgInBsYXRm
b3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViSW1hZ2Uu
aCIKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50
LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJXZWJL
aXQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKLSNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJMYXllci5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyVHJl
ZVZpZXcuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllckFjdGlvbi5oIgogI2luY2x1ZGUgIldl
Yk5vZGUuaCIKICNpbmNsdWRlICJXZWJQbHVnaW4uaCIKICNpbmNsdWRlICJXZWJQbHVnaW5BY3Rp
b24uaCIKICNpbmNsdWRlICJXZWJQbHVnaW5Db250YWluZXJJbXBsLmgiCi0jaW5jbHVkZSAicGxh
dGZvcm0vV2ViUG9pbnQuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVJbXBsLmgiCiAjaW5jbHVk
ZSAiV2ViUmFuZ2UuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCiAjaW5jbHVkZSAi
V2ViUnVudGltZUZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2ViU2V0dGluZ3NJbXBsLmgiCi0jaW5j
bHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9y
LmgiCiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIK
KyNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViRHJhZ0RhdGEu
aCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJJbWFnZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dl
YktpdFBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgor
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9h
dFBvaW50Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CisjaW5j
bHVkZSA8cHVibGljL1dlYkxheWVyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyVHJlZVZp
ZXcuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUG9pbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
UmVjdC5oPgogI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNjA2LDE1ICs2MDgsMTUg
QEAgYm9vbCBXZWJWaWV3SW1wbDo6bW91c2VXaGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQm
IGV2ZW50KQogICAgIHJldHVybiBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxl
cigpLT5oYW5kbGVXaGVlbEV2ZW50KHBsYXRmb3JtRXZlbnQpOwogfQogCi12b2lkIFdlYlZpZXdJ
bXBsOjpzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVsdGEpCit2b2lkIFdlYlZp
ZXdJbXBsOjpzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBkZWx0YSkKIHsKICAgICBX
ZWJNb3VzZVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWw7CiAgICAgY29uc3QgZmxvYXQgdGlja0Rp
dmlzb3IgPSBXZWJDb3JlOjpXaGVlbEV2ZW50Ojp0aWNrTXVsdGlwbGllcjsKIAotICAgIHN5bnRo
ZXRpY1doZWVsLmRlbHRhWCA9IGRlbHRhLngoKTsKLSAgICBzeW50aGV0aWNXaGVlbC5kZWx0YVkg
PSBkZWx0YS55KCk7Ci0gICAgc3ludGhldGljV2hlZWwud2hlZWxUaWNrc1ggPSBkZWx0YS54KCkg
LyB0aWNrRGl2aXNvcjsKLSAgICBzeW50aGV0aWNXaGVlbC53aGVlbFRpY2tzWSA9IGRlbHRhLnko
KSAvIHRpY2tEaXZpc29yOworICAgIHN5bnRoZXRpY1doZWVsLmRlbHRhWCA9IGRlbHRhLndpZHRo
KCk7CisgICAgc3ludGhldGljV2hlZWwuZGVsdGFZID0gZGVsdGEuaGVpZ2h0KCk7CisgICAgc3lu
dGhldGljV2hlZWwud2hlZWxUaWNrc1ggPSBkZWx0YS53aWR0aCgpIC8gdGlja0Rpdmlzb3I7Cisg
ICAgc3ludGhldGljV2hlZWwud2hlZWxUaWNrc1kgPSBkZWx0YS5oZWlnaHQoKSAvIHRpY2tEaXZp
c29yOwogICAgIHN5bnRoZXRpY1doZWVsLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB0cnVl
OwogICAgIHN5bnRoZXRpY1doZWVsLnggPSBtX2xhc3RXaGVlbFBvc2l0aW9uLng7CiAgICAgc3lu
dGhldGljV2hlZWwueSA9IG1fbGFzdFdoZWVsUG9zaXRpb24ueTsKQEAgLTYzMCw2ICs2MzIsNyBA
QCBib29sIFdlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBl
dmVudCkKIHsKICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKICAgICBjYXNlIFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OiB7CisgICAgICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQyKCJ3
ZWJraXQiLCAiV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQiLCAi
ZGVsdGFYIiwgZXZlbnQuZGVsdGFYLCAiZGVsdGFZIiwgZXZlbnQuZGVsdGFZKTsKICAgICAgICAg
bV9sYXN0V2hlZWxQb3NpdGlvbiA9IFdlYlBvaW50KGV2ZW50LngsIGV2ZW50LnkpOwogICAgICAg
ICBtX2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9uID0gV2ViUG9pbnQoZXZlbnQuZ2xvYmFsWCwgZXZl
bnQuZ2xvYmFsWSk7CiAgICAgICAgIG1fZmxpbmdNb2RpZmllciA9IGV2ZW50Lm1vZGlmaWVyczsK
QEAgLTYzOCwxMyArNjQxLDE2IEBAIGJvb2wgV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25z
dCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogICAgICAgICBzY2hlZHVsZUFuaW1hdGlvbigpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlRmxpbmdDYW5jZWw6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5j
ZWw6IHsKKyAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1w
bDo6Z2VzdHVyZUV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWwiKTsKICAgICAgICAgaWYgKG1fZ2Vz
dHVyZUFuaW1hdGlvbikgewogICAgICAgICAgICAgbV9nZXN0dXJlQW5pbWF0aW9uLmNsZWFyKCk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcDogeworICAgICAg
ICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgid2Via2l0IiwgIldlYlZpZXdJbXBsOjpnZXN0dXJlRXZl
bnQ6Okdlc3R1cmVUYXAiKTsKICAgICAgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIHBs
YXRmb3JtRXZlbnQobWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpOwogICAgICAg
ICBSZWZQdHI8V2ViQ29yZTo6UG9wdXBDb250YWluZXI+IHNlbGVjdFBvcHVwOwogICAgICAgICBz
ZWxlY3RQb3B1cCA9IG1fc2VsZWN0UG9wdXA7CkBAIC02NzcsNiArNjgzLDE4IEBAIGJvb2wgV2Vi
Vmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6dHJhbnNmZXJBY3RpdmVXaGVl
bEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQoreworICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJ3ZWJraXQiLCAiV2ViVmlld0lt
cGw6OnRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbiIpOworICAgIEFTU0VSVCghbV9n
ZXN0dXJlQW5pbWF0aW9uKTsKKyAgICBtX2xhc3RXaGVlbFBvc2l0aW9uID0gcGFyYW1ldGVycy5w
b2ludDsKKyAgICBtX2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9uID0gcGFyYW1ldGVycy5nbG9iYWxQ
b2ludDsKKyAgICBtX2ZsaW5nTW9kaWZpZXIgPSBwYXJhbWV0ZXJzLm1vZGlmaWVyczsKKyAgICBP
d25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGN1cnZlID0gVG91Y2hwYWRGbGluZ1BsYXRmb3Jt
R2VzdHVyZUN1cnZlOjpjcmVhdGUocGFyYW1ldGVycy5kZWx0YSwgcGFyYW1ldGVycy5jdW11bGF0
aXZlU2Nyb2xsKTsKKyAgICBtX2dlc3R1cmVBbmltYXRpb24gPSBBY3RpdmVQbGF0Zm9ybUdlc3R1
cmVBbmltYXRpb246OmNyZWF0ZShjdXJ2ZS5yZWxlYXNlKCksIHRoaXMsIHBhcmFtZXRlcnMuc3Rh
cnRUaW1lKTsKKyAgICBzY2hlZHVsZUFuaW1hdGlvbigpOworfQorCiB2b2lkIFdlYlZpZXdJbXBs
OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsLCBib29sIHVz
ZUFuY2hvciwgZmxvYXQgbmV3U2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKIHsKICAgICBpZiAo
IW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oCmluZGV4IDIyOTM4YWQ2YmQ2YzQ5NzVmNzRmZTM3ZTQxNTQ4N2ZlZWNhMTIxNWIu
LjQ1NTk2ODg5YTk4NTJkOGQ3ODdhZTAwMmU2MjUxNjlmYTVmMGRkZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMjYxLDYgKzI2MSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVD
b21wb3NpdGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5p
bWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJik7CiAKICAgICAvLyBX
ZWJWaWV3SW1wbAogCkBAIC0zMzcsNyArMzM4LDcgQEAgcHVibGljOgogICAgIHZvaWQgbnVtYmVy
T2ZUb3VjaEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKTsKIAogICAgIC8vIFBsYXRmb3Jt
R2VzdHVyZUN1cnZlVGFyZ2V0IGltcGxlbWVudGF0aW9uIGZvciB3aGVlbCBmbGluZy4KLSAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogCiAgICAgLy8gSGFu
ZGxlcyBjb250ZXh0IG1lbnUgZXZlbnRzIG9yaWduYXRlZCB2aWEgdGhlIHRoZSBrZXlib2FyZC4g
VGhlc2UKICAgICAvLyBpbmNsdWRlIHRoZSBWS19BUFBTIHZpcnR1YWwga2V5IGFuZCB0aGUgU2hp
ZnQrRjEwIGNvbWJpbmUuIENvZGUgaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggZDRlN2Q5Zjc3YTU1
MjYxYTZkMGQ3NDRkMjFmMGYwZWRmNTZjZjUyYy4uZTlhYjc4NjRiOTY2MjZiMDA4YmQ1M2NjNzEy
MzYzMTg1YmU0ODFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpIHsgbV9kaWRS
ZXF1ZXN0UmVkcmF3ID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9u
SW1wbFRocmVhZCgpIHsgbV9kaWRSZXF1ZXN0Q29tbWl0ID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
dm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25Q
dHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbk9uSW1wbFRo
cmVhZChjb25zdCBDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikgeyB9CiAKICAgICBzdGF0
aWMgdm9pZCBleHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiBs
YXllcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCBjNzIzODM3MDJjMTEzZTIxMGMzNDQyNjc5NzdkOTVh
ODkzMWI0ZWUyLi4yZmE3ODhjYzRhZDJmOGJiMGY0ZmUzZDQ1MjY0ZWZlNTM3NDgzNGQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAKQEAgLTI1OSw2ICsyNTksMTAgQEAgcHVibGljOgogICAgICAgICBtX3Rlc3RIb29rcy0+
ZGlkUmVjcmVhdGVDb250ZXh0KHN1Y2NlZWRlZCk7CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lk
IHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBDQ0FjdGl2ZVdoZWVsRmxp
bmdQYXJhbWV0ZXJzJiBwYXJhbXMpCisgICAgeworICAgIH0KKwogICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZUNvbXBvc2l0ZSgpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgKaW5kZXggMzg4
NzZkNzM3ZmI1MmFhNmQwM2M3MWJmZmU0MTcyOGM4Y2NjZjBiNS4uYzkzZTk3ZWVhY2RjNzg1ZTUx
YWQxYzEzZDUwYWNkZTljNzE2Mzg4MiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgKQEAgLTQ1LDYgKzQ1LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNj
ZXNzKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IENDQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnMmKSB7IH0KIAogICAgIC8vIFVzZWQgb25seSBpbiB0aGUgc2luZ2xl
LXRocmVhZGVkIHBhdGguCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtR2VzdHVy
ZUN1cnZlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtR2Vz
dHVyZUN1cnZlVGVzdC5jcHAKaW5kZXggOGYyMDZkODY2OTE4N2E3ZDg3OGViOWY0NzJhYjliZDU0
ZmYzNGU3Yi4uZmUwNWI0OWQyYTcwZTliYjYwZDU5ZmU0ZmMxZjU4N2ZhZmRiOWUyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUGxhdGZvcm1HZXN0dXJl
Q3VydmVUZXN0LmNwcApAQCAtNDIsMTYgKzQyLDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBjbGFzcyBNb2NrUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQgOiBwdWJsaWMgUGxhdGZv
cm1HZXN0dXJlQ3VydmVUYXJnZXQgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxC
eShjb25zdCBJbnRQb2ludCYgZGVsdGEpCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0
IEludFNpemUmIGRlbHRhKQogICAgIHsKICAgICAgICAgbV9jdW11bGF0aXZlRGVsdGEgPSBtX2N1
bXVsYXRpdmVEZWx0YSArIGRlbHRhOwogICAgIH0KIAotICAgIEludFBvaW50IGN1bXVsYXRpdmVE
ZWx0YSgpIGNvbnN0IHsgcmV0dXJuICBtX2N1bXVsYXRpdmVEZWx0YTsgfQotICAgIHZvaWQgcmVz
ZXRDdW11bGF0aXZlRGVsdGEoKSB7IG1fY3VtdWxhdGl2ZURlbHRhID0gSW50UG9pbnQoKTsgfQor
ICAgIEludFNpemUgY3VtdWxhdGl2ZURlbHRhKCkgY29uc3QgeyByZXR1cm4gIG1fY3VtdWxhdGl2
ZURlbHRhOyB9CisgICAgdm9pZCByZXNldEN1bXVsYXRpdmVEZWx0YSgpIHsgbV9jdW11bGF0aXZl
RGVsdGEgPSBJbnRTaXplKCk7IH0KIAogcHJpdmF0ZToKLSAgICBJbnRQb2ludCBtX2N1bXVsYXRp
dmVEZWx0YTsKKyAgICBJbnRTaXplIG1fY3VtdWxhdGl2ZURlbHRhOwogfTsKIAogVEVTVChQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZSwgZmxpbmdDdXJ2ZSkKQEAgLTY5LDggKzY5LDggQEAgVEVTVChQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZSwgZmxpbmdDdXJ2ZSkKICAgICBFWFBFQ1RfRkFMU0UoYW5pbWF0aW9u
LT5hbmltYXRlKDEwMDEpKTsKICAgICAvLyBTaW5jZSB0aGUgUmF5bGVpZ2ggQ0RGIG1heGVzIG91
dCBhdCAxLCB3ZSBleHBlY3QgdGhlIGN1bXVsYXRpdmUgc2Nyb2xsIGluY3JlbWVudHMgdG8KICAg
ICAvLyBtYXRjaCB0aGUgaW5wdXQgdmVsb2NpdHkgcGFyYW1ldGVyLgotICAgIEVYUEVDVF9ORUFS
KHRhcmdldC5jdW11bGF0aXZlRGVsdGEoKS54KCksIDEwMCwgMSk7Ci0gICAgRVhQRUNUX0VRKHRh
cmdldC5jdW11bGF0aXZlRGVsdGEoKS55KCksIDApOworICAgIEVYUEVDVF9ORUFSKHRhcmdldC5j
dW11bGF0aXZlRGVsdGEoKS53aWR0aCgpLCAxMDAsIDEpOworICAgIEVYUEVDVF9FUSh0YXJnZXQu
Y3VtdWxhdGl2ZURlbHRhKCkuaGVpZ2h0KCksIDApOwogCiAgICAgLy8gVGVzdCBhbmltYXRpb24g
d2hlbiBub3Qgc3RhcnRpbmcgYXQgdCA9IDAuCiAgICAgZG91YmxlIGJhc2VUaW1lID0gNDIuNDI7
CkBAIC04MSw3ICs4MSw3IEBAIFRFU1QoUGxhdGZvcm1HZXN0dXJlQ3VydmUsIGZsaW5nQ3VydmUp
CiAgICAgRVhQRUNUX1RSVUUoYW5pbWF0aW9uLT5hbmltYXRlKGJhc2VUaW1lICsgMS4zNSkpOwog
ICAgIEVYUEVDVF9UUlVFKGFuaW1hdGlvbi0+YW5pbWF0ZShiYXNlVGltZSArIDEwMDApKTsKICAg
ICBFWFBFQ1RfRkFMU0UoYW5pbWF0aW9uLT5hbmltYXRlKGJhc2VUaW1lICsgMTAwMSkpOwotICAg
IEVYUEVDVF9ORUFSKHRhcmdldC5jdW11bGF0aXZlRGVsdGEoKS54KCksIDEwMCwgMSk7CisgICAg
RVhQRUNUX05FQVIodGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgpLndpZHRoKCksIDEwMCwgMSk7CiAK
ICAgICBhbmltYXRpb24gPSBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZShX
aGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShGbG9hdFBvaW50KDUwLCAxNTAp
KSwgJnRhcmdldCk7CiAgICAgdGFyZ2V0LnJlc2V0Q3VtdWxhdGl2ZURlbHRhKCk7CkBAIC05Myw4
ICs5Myw4IEBAIFRFU1QoUGxhdGZvcm1HZXN0dXJlQ3VydmUsIGZsaW5nQ3VydmUpCiAgICAgRVhQ
RUNUX1RSVUUoYW5pbWF0aW9uLT5hbmltYXRlKDAuNzUpKTsKICAgICBFWFBFQ1RfVFJVRShhbmlt
YXRpb24tPmFuaW1hdGUoMTAwMCkpOwogICAgIEVYUEVDVF9GQUxTRShhbmltYXRpb24tPmFuaW1h
dGUoMTAwMSkpOwotICAgIEVYUEVDVF9ORUFSKHRhcmdldC5jdW11bGF0aXZlRGVsdGEoKS54KCks
IDUwLCAxKTsKLSAgICBFWFBFQ1RfTkVBUih0YXJnZXQuY3VtdWxhdGl2ZURlbHRhKCkueSgpLCAx
NTAsIDEpOworICAgIEVYUEVDVF9ORUFSKHRhcmdldC5jdW11bGF0aXZlRGVsdGEoKS53aWR0aCgp
LCA1MCwgMSk7CisgICAgRVhQRUNUX05FQVIodGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgpLmhlaWdo
dCgpLCAxNTAsIDEpOwogfQogCiBURVNUKFBsYXRmb3JtR2VzdHVyZUN1cnZlLCBmbGluZ0N1cnZl
VG91Y2gpCkBAIC0xMTMsOCArMTEzLDggQEAgVEVTVChQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSwgZmxp
bmdDdXJ2ZVRvdWNoKQogICAgIEVYUEVDVF9UUlVFKGFuaW1hdGlvbi0+YW5pbWF0ZSgwLjkpKTsK
ICAgICBFWFBFQ1RfVFJVRShhbmltYXRpb24tPmFuaW1hdGUoMTAwMCkpOwogICAgIEVYUEVDVF9G
QUxTRShhbmltYXRpb24tPmFuaW1hdGUoMTAwMSkpOwotICAgIEVYUEVDVF9ORUFSKHRhcmdldC5j
dW11bGF0aXZlRGVsdGEoKS54KCksIGluaXRpYWxWZWxvY2l0eSAqIHRvdWNoRmxpbmdDdXJ2ZUFy
ZWFGYWN0b3IsIDEpOwotICAgIEVYUEVDVF9FUSh0YXJnZXQuY3VtdWxhdGl2ZURlbHRhKCkueSgp
LCAwKTsKKyAgICBFWFBFQ1RfTkVBUih0YXJnZXQuY3VtdWxhdGl2ZURlbHRhKCkud2lkdGgoKSwg
aW5pdGlhbFZlbG9jaXR5ICogdG91Y2hGbGluZ0N1cnZlQXJlYUZhY3RvciwgMSk7CisgICAgRVhQ
RUNUX0VRKHRhcmdldC5jdW11bGF0aXZlRGVsdGEoKS5oZWlnaHQoKSwgMCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIGFub255bW91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCmlu
ZGV4IGZhODI0N2IxMTBjMDdlYjE1N2ZkNTQ0OTAyNjQ5ZTFkYjUwZjBkMDYuLjk3ZDA3YTNkODhh
NWI0NmJkMWIzMjBiMWQ0MDNiYjYxZTA2OGZlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsVGVzdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUg
ImNjL0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5oIgorI2luY2x1ZGUgImNjL0NDQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgogI2lu
Y2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKIApAQCAtNjIsNiArNjMsOCBAQCBwdWJs
aWM6CiAgICAgTU9DS19NRVRIT0QxKHNjcm9sbEJ5LCB2b2lkKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKSk7CiAgICAgTU9DS19NRVRIT0QwKHNjcm9sbEVuZCwgdm9pZCgpKTsKIAorICAgIE1PQ0tf
TUVUSE9EMSh0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24sIHZvaWQoY29uc3QgV2Vi
Q29yZTo6Q0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpKTsKKwogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgdGFyZ2V0UG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgYW5jaG9yUG9pbnQsCkBAIC0xMzAsMzAgKzEzMywzMiBAQCBwdWJsaWM6CiAgICAg
ICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKICAgICB9CiAKLSAgICB2b2lk
IHZlcmlmeUFuZFJlc2V0TW9ja3MoKQotICAgIHsKLSAgICAgICAgdGVzdGluZzo6TW9jazo6VmVy
aWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKLSAg
ICAgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0Ns
aWVudCk7Ci0gICAgICAgIHN3aXRjaCAobV9leHBlY3RlZERpc3Bvc2l0aW9uKSB7Ci0gICAgICAg
IGNhc2UgRGlkSGFuZGxlOgotICAgICAgICAgICAgLy8gSWYgd2UgZXhwZWN0IHRvIGhhbmRsZSBl
dmVudHMsIHdlIHNob3VsZG4ndCBnZXQgYW55IGRpZE5vdEhhbmRsZUlucHV0RXZlbnQoKSBjYWxs
cyB3aXRoIGFueSBwYXJhbWV0ZXIuCi0gICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGll
bnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQoOjp0ZXN0aW5nOjpfKSkuVGltZXMoMCk7Ci0gICAg
ICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZEhhbmRsZUlucHV0RXZlbnQoKSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEaWROb3RIYW5kbGU6Ci0gICAgICAg
ICAgICAvLyBJZiB3ZSBhcmVuJ3QgZXhwZWN0aW5nIHRvIGhhbmRsZSBldmVudHMsIHdlIHNob3Vs
ZG4ndCBjYWxsIGRpZEhhbmRsZUlucHV0RXZlbnQoKS4KLSAgICAgICAgICAgIEVYUEVDVF9DQUxM
KG1fbW9ja0NsaWVudCwgZGlkSGFuZGxlSW5wdXRFdmVudCgpKS5UaW1lcygwKTsKLSAgICAgICAg
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudChmYWxz
ZSkpLlRpbWVzKDApOwotICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWRO
b3RIYW5kbGVJbnB1dEV2ZW50KHRydWUpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIERyb3BFdmVudDoKLSAgICAgICAgICAgIC8vIElmIHdlJ3JlIGV4cGVjdGluZyB0byBkcm9w
LCB3ZSBzaG91bGRuJ3QgZ2V0IGFueSBkaWRIYW5kbGUuLigpIG9yIGRpZE5vdEhhbmRsZUlucHV0
RXZlbnQodHJ1ZSAvKiBzZW5kVG9XaWRnZXQgKi8pIGNhbGxzLgotICAgICAgICAgICAgRVhQRUNU
X0NBTEwobV9tb2NrQ2xpZW50LCBkaWRIYW5kbGVJbnB1dEV2ZW50KCkpLlRpbWVzKDApOwotICAg
ICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50
KHRydWUpKS5UaW1lcygwKTsKLSAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwg
ZGlkTm90SGFuZGxlSW5wdXRFdmVudChmYWxzZSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICB9CisgICAgLy8gVGhpcyBpcyBkZWZpbmVkIGFzIGEgbWFjcm8gYmVjYXVzZSB3
aGVuIGFuIGV4cGVjdGF0aW9uIGlzIG5vdCBzYXRpc2ZpZWQgdGhlIG9ubHkgb3V0cHV0IHlvdSBn
ZXQKKyAgICAvLyBvdXQgb2YgZ21vY2sgaXMgdGhlIGxpbmUgbnVtYmVyIHRoYXQgc2V0IHRoZSBl
eHBlY3RhdGlvbi4KKyNkZWZpbmUgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpIGRvICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0ZXN0aW5nOjpNb2NrOjpW
ZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdGVzdGlu
Zzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NsaWVudCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIHN3aXRjaCAobV9leHBlY3RlZERpc3Bvc2l0aW9uKSB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBjYXNlIERpZEhhbmRsZTogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIC8qIElmIHdlIGV4cGVjdCB0byBoYW5kbGUgZXZl
bnRzLCB3ZSBzaG91bGRuJ3QgZ2V0IGFueSBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KCkgY2FsbHMg
d2l0aCBhbnkgcGFyYW1ldGVyLiAqLyBcCisgICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tD
bGllbnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQoOjp0ZXN0aW5nOjpfKSkuVGltZXMoMCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRVhQRUNUX0NB
TEwobV9tb2NrQ2xpZW50LCBkaWRIYW5kbGVJbnB1dEV2ZW50KCkpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
IGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIGNhc2UgRGlkTm90SGFuZGxlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgLyogSWYgd2UgYXJlbid0IGV4cGVjdGluZyB0byBoYW5kbGUg
ZXZlbnRzLCB3ZSBzaG91bGRuJ3QgY2FsbCBkaWRIYW5kbGVJbnB1dEV2ZW50KCkuICovICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwg
ZGlkSGFuZGxlSW5wdXRFdmVudCgpKS5UaW1lcygwKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tDbGllbnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQoZmFsc2UpKS5UaW1lcygwKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRVhQRUNU
X0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KHRydWUpKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIGNhc2UgRHJvcEV2ZW50OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgLyogSWYgd2UncmUgZXhwZWN0aW5nIHRvIGRyb3AsIHdl
IHNob3VsZG4ndCBnZXQgYW55IGRpZEhhbmRsZS4uKCkgb3IgZGlkTm90SGFuZGxlSW5wdXRFdmVu
dCh0cnVlKSBjYWxscy4gKi8gIFwKKyAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVu
dCwgZGlkSGFuZGxlSW5wdXRFdmVudCgpKS5UaW1lcygwKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFWFBFQ1RfQ0FMTCht
X21vY2tDbGllbnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQodHJ1ZSkpLlRpbWVzKDApOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRVhQ
RUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KGZhbHNlKSk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IH0gd2hpbGUgKDApCiAKIHByb3RlY3RlZDoKICAgICBNb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQg
bV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQ7CkBAIC0xNzMsNyArMTc4LDcgQEAgVEVTVF9GKFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZVNjcm9sbFN0YXJ0ZWQpCiB7
CiAgICAgLy8gV2Ugc2hvdWxkbid0IHNlbmQgYW55IGV2ZW50cyB0byB0aGUgd2lkZ2V0IGZvciB0
aGlzIGdlc3R1cmUuCiAgICAgbV9leHBlY3RlZERpc3Bvc2l0aW9uID0gRGlkSGFuZGxlOwotICAg
IHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAK
ICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4o
dGVzdGluZzo6XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1
cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKQEAgLTE4
MSwxNCArMTg2LDE0IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3Qs
IGdlc3R1cmVTY3JvbGxTdGFydGVkKQogICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5w
dXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJ
bnB1dEV2ZW50KGdlc3R1cmUpOwogCi0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZF
UklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2Vi
SW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZTsKICAgICBnZXN0dXJlLmRlbHRhWSA9IC00
MDsgLy8gLVkgbWVhbnMgc2Nyb2xsIGRvd24gLSBpLmUuIGluIHRoZSArWSBkaXJlY3Rpb24uCiAg
ICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rp
bmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjpoZWlnaHQsIHRlc3Rpbmc6Okd0KDApKSkp
OwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCi0gICAg
dmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAog
ICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVu
ZDsKICAgICBnZXN0dXJlLmRlbHRhWSA9IDA7CkBAIC0yMDAsNyArMjA1LDcgQEAgVEVTVF9GKFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZVNjcm9sbEZhaWxlZCkKIHsK
ICAgICAvLyBXZSBzaG91bGQgc2VuZCBhbGwgZXZlbnRzIHRvIHRoZSB3aWRnZXQgZm9yIHRoaXMg
Z2VzdHVyZS4KICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEaWROb3RIYW5kbGU7Ci0gICAg
dmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAog
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbig6
OnRlc3Rpbmc6Ol8sIDo6dGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpS
ZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCkpOwpAQCAt
MjA4LDEzICsyMTMsMTMgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVz
dCwgZ2VzdHVyZVNjcm9sbEZhaWxlZCkKICAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklu
cHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxl
SW5wdXRFdmVudChnZXN0dXJlKTsKIAotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBW
RVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6Oldl
YklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU7CiAgICAgZ2VzdHVyZS5kZWx0YVkgPSA0
MDsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAotICAg
IHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAK
ICAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxF
bmQ7CiAgICAgZ2VzdHVyZS5kZWx0YVkgPSAwOwpAQCAtMjI4LDcgKzIzMyw3IEBAIFRFU1RfRihX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVTY3JvbGxJZ25vcmVkKQog
ICAgIC8vIGluZGljYXRpbmcgdGhhdCB3ZSBjb3VsZCBkZXRlcm1pbmUgdGhhdCB0aGVyZSdzIG5v
dGhpbmcgdGhhdCBjb3VsZCBzY3JvbGwgb3Igb3RoZXJ3aXNlCiAgICAgLy8gcmVhY3QgdG8gdGhp
cyBnZXN0dXJlIHNlcXVlbmNlIGFuZCB0aHVzIHdlIHNob3VsZCBkcm9wIHRoZSB3aG9sZSBnZXN0
dXJlIHNlcXVlbmNlIG9uIHRoZSBmbG9vci4KICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBE
cm9wRXZlbnQ7Ci0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVT
RVRfTU9DS1MoKTsKIAogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50
LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNl
KHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsSWdu
b3JlZCkpOwpAQCAtMjQxLDEzICsyNDYsMTMgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsVGVzdCwgZ2VzdHVyZVBpbmNoKQogewogICAgIC8vIFdlIHNob3VsZG4ndCBzZW5k
IGFueSBldmVudHMgdG8gdGhlIHdpZGdldCBmb3IgdGhpcyBnZXN0dXJlLgogICAgIG1fZXhwZWN0
ZWREaXNwb3NpdGlvbiA9IERpZEhhbmRsZTsKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7Cisg
ICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0
OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hCZWdpbjsKICAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tDQ0lucHV0SGFuZGxlckNsaWVudCwgcGluY2hHZXN0dXJlQmVnaW4oKSk7CiAgICAgbV9pbnB1
dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNl
dE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgZ2VzdHVyZS50
eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hVcGRhdGU7CiAgICAgZ2Vz
dHVyZS5kZWx0YVggPSAxLjU7CkBAIC0yNTYsNyArMjYxLDcgQEAgVEVTVF9GKFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZVBpbmNoKQogICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBwaW5jaEdlc3R1cmVVcGRhdGUoMS41LCBXZWJDb3Jl
OjpJbnRQb2ludCg3LCAxMykpKTsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVu
dChnZXN0dXJlKTsKIAotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5E
X1JFU0VUX01PQ0tTKCk7CiAKICAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZl
bnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZTsKICAgICBnZXN0dXJlLmRlbHRhWCA9IDAuNTsKQEAgLTI2
NSw3ICsyNzAsNyBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBn
ZXN0dXJlUGluY2gpCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQs
IHBpbmNoR2VzdHVyZVVwZGF0ZSguNSwgV2ViQ29yZTo6SW50UG9pbnQoOSwgNikpKTsKICAgICBt
X2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAotICAgIHZlcmlmeUFu
ZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICBnZXN0
dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaEVuZDsKICAgICBF
WFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgcGluY2hHZXN0dXJlRW5kKCkp
OwpAQCAtMjc2LDcgKzI4MSw3IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bFRlc3QsIGdlc3R1cmVGbGluZ1N0YXJ0ZWQpCiB7CiAgICAgLy8gV2Ugc2hvdWxkbid0IHNlbmQg
YW55IGV2ZW50cyB0byB0aGUgd2lkZ2V0IGZvciB0aGlzIGdlc3R1cmUuCiAgICAgbV9leHBlY3Rl
ZERpc3Bvc2l0aW9uID0gRGlkSGFuZGxlOwotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAg
ICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lu
cHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCiAg
ICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJD
bGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKQEAgLTI4Niw3ICsyOTEsNyBAQCBURVNUX0YoV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdTdGFydGVkKQogICAgIEVY
UEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigp
KTsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAotICAg
IHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAK
ICAgICAvLyBWZXJpZnkgdGhhdCBhIEdlc3R1cmVGbGluZ0NhbmNlbCBkdXJpbmcgYW4gYW5pbWF0
aW9uIGNhbmNlbHMgaXQuCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlRmxpbmdDYW5jZWw7CkBAIC0yOTcsNyArMzAyLDcgQEAgVEVTVF9GKFdlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nRmFpbGVkKQogewogICAgIC8v
IFdlIHNob3VsZCBzZW5kIGFsbCBldmVudHMgdG8gdGhlIHdpZGdldCBmb3IgdGhpcyBnZXN0dXJl
LgogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZE5vdEhhbmRsZTsKLSAgICB2ZXJpZnlB
bmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgRVhQ
RUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6
Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNv
cmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxGYWlsZWQpKTsKQEAgLTMwNSw3ICszMTAs
NyBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxp
bmdGYWlsZWQpCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlRmxpbmdTdGFydDsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0
dXJlKTsKIAotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VU
X01PQ0tTKCk7CiAKICAgICAvLyBFdmVuIGlmIHdlIGRpZG4ndCBzdGFydCBhIGZsaW5nIG91cnNl
bHZlcywgd2Ugc3RpbGwgbmVlZCB0byBzZW5kIHRoZSBjYW5jZWwgZXZlbnQgdG8gdGhlIHdpZGdl
dC4KICAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGlu
Z0NhbmNlbDsKQEAgLTMxNSw3ICszMjAsNyBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdGYWlsZWQpCiBURVNUX0YoV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdJZ25vcmVkKQogewogICAgIG1fZXhwZWN0
ZWREaXNwb3NpdGlvbiA9IERpZE5vdEhhbmRsZTsKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7
CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgRVhQRUNUX0NBTEwobV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8p
KQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5k
bGVyQ2xpZW50OjpTY3JvbGxJZ25vcmVkKSk7CkBAIC0zMjMsNyArMzI4LDcgQEAgVEVTVF9GKFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nSWdub3JlZCkKICAg
ICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0
OwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCi0gICAg
dmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAog
ICAgIC8vIEV2ZW4gaWYgd2UgZGlkbid0IHN0YXJ0IGEgZmxpbmcgb3Vyc2VsdmVzLCB3ZSBzdGls
bCBuZWVkIHRvIHNlbmQgdGhlIGNhbmNlbCBldmVudCB0byB0aGUgd2lkZ2V0LgogICAgIGdlc3R1
cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOwpAQCAt
MzM0LDEyICszMzksMjIgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVz
dCwgZ2VzdHVyZUZsaW5nQW5pbWF0ZXMpCiB7CiAgICAgLy8gV2Ugc2hvdWxkbid0IHNlbmQgYW55
IGV2ZW50cyB0byB0aGUgd2lkZ2V0IGZvciB0aGlzIGdlc3R1cmUuCiAgICAgbV9leHBlY3RlZERp
c3Bvc2l0aW9uID0gRGlkSGFuZGxlOwotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBW
RVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICAvLyBPbiB0aGUgZmxpbmcgc3RhcnQsIHdl
IHNob3VsZCBzY2hlZHVsZSBhbiBhbmltYXRpb24gYnV0IG5vdCBhY3R1YWxseSBzdGFydAogICAg
IC8vIHNjcm9sbGluZy4KICAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6
Okdlc3R1cmVGbGluZ1N0YXJ0OwotICAgIGdlc3R1cmUuZGVsdGFYID0gLTEwMDA7CisgICAgV2Vi
Q29yZTo6RmxvYXRTaXplIGZsaW5nRGVsdGEgPSBXZWJDb3JlOjpGbG9hdFNpemUoMTAwMCwgMCk7
CisgICAgV2ViQ29yZTo6SW50UG9pbnQgZmxpbmdQb2ludCA9IFdlYkNvcmU6OkludFBvaW50KDcs
IDEzKTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBmbGluZ0dsb2JhbFBvaW50ID0gV2ViQ29yZTo6
SW50UG9pbnQoMTcsIDIzKTsKKyAgICBpbnQgbW9kaWZpZXJzID0gNzsKKyAgICBnZXN0dXJlLmRl
bHRhWCA9IGZsaW5nRGVsdGEud2lkdGgoKTsKKyAgICBnZXN0dXJlLmRlbHRhWSA9IGZsaW5nRGVs
dGEuaGVpZ2h0KCk7CisgICAgZ2VzdHVyZS54ID0gZmxpbmdQb2ludC54KCk7CisgICAgZ2VzdHVy
ZS55ID0gZmxpbmdQb2ludC55KCk7CisgICAgZ2VzdHVyZS5nbG9iYWxYID0gZmxpbmdHbG9iYWxQ
b2ludC54KCk7CisgICAgZ2VzdHVyZS5nbG9iYWxZID0gZmxpbmdHbG9iYWxQb2ludC55KCk7Cisg
ICAgZ2VzdHVyZS5tb2RpZmllcnMgPSBtb2RpZmllcnM7CiAgICAgRVhQRUNUX0NBTEwobV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9D
QUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0
ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpD
Q0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOwpAQCAtMzU2LDI0ICszNzEsMzcg
QEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5n
QW5pbWF0ZXMpCiAKICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9u
cygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOwogCi0gICAgLy8gVGhlIHNlY29uZCBjYWxs
IHNob3VsZCBzdGFydCBzY3JvbGxpbmcgaW4gdGhlICtYIGRpcmVjdGlvbi4KKyAgICAvLyBUaGUg
c2Vjb25kIGNhbGwgc2hvdWxkIHN0YXJ0IHNjcm9sbGluZyBpbiB0aGUgLVggZGlyZWN0aW9uLgog
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1h
dGlvbigpKTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Ny
b2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0
aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQp
KTsKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnko
dGVzdGluZzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6OndpZHRoLCB0ZXN0aW5nOjpHdCgw
KSkpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xs
QnkodGVzdGluZzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6OndpZHRoLCB0ZXN0aW5nOjpM
dCgwKSkpKTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Ny
b2xsRW5kKCkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwLjEpOwogCiAgICAgdGVz
dGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5k
bGVyQ2xpZW50KTsKIAogICAgIC8vIExldCdzIHNheSBvbiB0aGUgdGhpcmQgY2FsbCB3ZSBoaXQg
YSBub24tc2Nyb2xsYWJsZSByZWdpb24uIFdlIHNob3VsZCBhYm9ydCB0aGUgZmxpbmcgYW5kIG5v
dCBzY3JvbGwuCi0gICAgLy8gRklYTUU6IFdlIGFsc28gbmVlZCB0byBkbyBzb21lIHdvcmsgdG8g
dHJhbnNmZXIgdGhlIHJlc3Qgb2YgdGhpcyBmbGluZyB0byB0aGUgbWFpbiB0aHJlYWQuCi0gICAg
Ly8gQWRkIHRlc3RzIGZvciB0aGlzIG9uY2UgaXQncyBpbXBsZW1lbnRlZC4KKyAgICAvLyBXZSBh
bHNvIHNob3VsZCBwYXNzIHRoZSBjdXJyZW50IGZsaW5nIHBhcmFtZXRlcnMgb3V0IHRvIHRoZSBj
bGllbnQgc28gdGhlIHJlc3Qgb2YgdGhlIGZsaW5nIGNhbiBiZQorICAgIC8vIHRyYW5zZmVycmVk
IHRvIHRoZSBtYWluIHRocmVhZC4KICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxl
ckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJ
bnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQog
ICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVy
Q2xpZW50OjpTY3JvbGxGYWlsZWQpKTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFu
ZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6XykpLlRpbWVzKDApOwogICAgIEVYUEVDVF9D
QUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSkuVGltZXMoMCk7CisK
KyAgICAvLyBFeHBlY3RlZCB3aGVlbCBmbGluZyBhbmltYXRpb24gcGFyYW1ldGVyczoKKyAgICAv
LyAqKSBmbGluZ0RlbHRhIGFuZCBmbGluZ1BvaW50IHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwg
R2VzdHVyZUZsaW5nU3RhcnQgZXZlbnQKKyAgICAvLyAqKSBzdGFydFRpbWUgd2lsbCBoYXZlIGNo
YW5nZWQgZnJvbSBtb25vdG9uaWMgMTAgdG8gc29tZXRoaW5nIHN0cmFuZ2UuCisgICAgLy8gKikg
Y3VtdWxhdGl2ZVNjcm9sbCBkZXBlbmRzIG9uIHRoZSBjdXJ2ZSwgYnV0IHNpbmNlIHdlJ3ZlIGFu
aW1hdGVkIGluIHRoZSAtWCBkaXJlY3Rpb24gdGhlIFggdmFsdWUgc2hvdWxkIGJlIDwgMAorICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCB0cmFuc2ZlckFjdGl2ZVdo
ZWVsRmxpbmdBbmltYXRpb24odGVzdGluZzo6QWxsT2YoCisgICAgICAgIHRlc3Rpbmc6OkZpZWxk
KCZXZWJDb3JlOjpDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpkZWx0YSwgdGVzdGluZzo6
RXEoZmxpbmdEZWx0YSkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6Q0NBY3Rp
dmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6cG9pbnQsIHRlc3Rpbmc6OkVxKGZsaW5nUG9pbnQpKSwK
KyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkNvcmU6OkNDQWN0aXZlV2hlZWxGbGluZ1BhcmFt
ZXRlcnM6Omdsb2JhbFBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ0dsb2JhbFBvaW50KSksCisgICAg
ICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJz
Ojptb2RpZmllcnMsIHRlc3Rpbmc6OkVxKG1vZGlmaWVycykpLAorICAgICAgICB0ZXN0aW5nOjpG
aWVsZCgmV2ViQ29yZTo6Q0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6c3RhcnRUaW1lLCB0
ZXN0aW5nOjpFcSgxMCkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6Q0NBY3Rp
dmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6Y3VtdWxhdGl2ZVNjcm9sbCwKKyAgICAgICAgICAgIHRl
c3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjp3aWR0aCwgdGVzdGluZzo6R3QoMCkp
KSkpKTsKICAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4yKTsKIAogICAgIHRlc3Rpbmc6
Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNs
aWVudCk7CkBAIC0zODMsNiArNDExLDE1MiBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdBbmltYXRlcykKICAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSkuVGltZXMoMCk7CiAg
ICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRl
c3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKICAgICBtX2lucHV0SGFuZGxlci0+YW5p
bWF0ZSgxMC4zKTsKKworICAgIC8vIFNpbmNlIHdlJ3ZlIHRyYW5zZmVycmVkIHRoZSBmbGluZyB0
byB0aGUgbWFpbiB0aHJlYWQsIHdlIG5lZWQgdG8gcGFzcyB0aGUgbmV4dCBHZXN0dXJlRmxpbmdD
YW5jZWwgdG8gdGhlIG1haW4KKyAgICAvLyB0aHJlYWQgYXMgd2VsbC4KKyAgICBFWFBFQ1RfQ0FM
TChtX21vY2tDbGllbnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQodHJ1ZSkpOworICAgIGdlc3R1
cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOworICAg
IG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOworfQorCitURVNUX0Yo
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdUcmFuc2ZlclJl
c2V0cykKK3sKKyAgICAvLyBXZSBzaG91bGRuJ3Qgc2VuZCBhbnkgZXZlbnRzIHRvIHRoZSB3aWRn
ZXQgZm9yIHRoaXMgZ2VzdHVyZS4KKyAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEaWRIYW5k
bGU7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOworCisgICAgLy8gU3RhcnQgYSBnZXN0
dXJlIGZsaW5nIGluIHRoZSAtWCBkaXJlY3Rpb24gd2l0aCB6ZXJvIFkgbW92ZW1lbnQuCisgICAg
Z2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsK
KyAgICBXZWJDb3JlOjpGbG9hdFNpemUgZmxpbmdEZWx0YSA9IFdlYkNvcmU6OkZsb2F0U2l6ZSgx
MDAwLCAwKTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBmbGluZ1BvaW50ID0gV2ViQ29yZTo6SW50
UG9pbnQoNywgMTMpOworICAgIFdlYkNvcmU6OkludFBvaW50IGZsaW5nR2xvYmFsUG9pbnQgPSBX
ZWJDb3JlOjpJbnRQb2ludCgxNywgMjMpOworICAgIGludCBtb2RpZmllcnMgPSAxOworICAgIGdl
c3R1cmUuZGVsdGFYID0gZmxpbmdEZWx0YS53aWR0aCgpOworICAgIGdlc3R1cmUuZGVsdGFZID0g
ZmxpbmdEZWx0YS5oZWlnaHQoKTsKKyAgICBnZXN0dXJlLnggPSBmbGluZ1BvaW50LngoKTsKKyAg
ICBnZXN0dXJlLnkgPSBmbGluZ1BvaW50LnkoKTsKKyAgICBnZXN0dXJlLmdsb2JhbFggPSBmbGlu
Z0dsb2JhbFBvaW50LngoKTsKKyAgICBnZXN0dXJlLmdsb2JhbFkgPSBmbGluZ0dsb2JhbFBvaW50
LnkoKTsKKyAgICBnZXN0dXJlLm1vZGlmaWVycyA9IG1vZGlmaWVyczsKKyAgICBFWFBFQ1RfQ0FM
TChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAg
RVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rp
bmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdl
YkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7CisgICAgbV9pbnB1
dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CisKKyAgICB0ZXN0aW5nOjpNb2Nr
OjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQp
OworCisgICAgLy8gU3RhcnQgdGhlIGZsaW5nIGFuaW1hdGlvbiBhdCB0aW1lIDEwLiBUaGlzIHNo
b3VsZG4ndCBhY3R1YWxseSBzY3JvbGwsIGp1c3QgZXN0YWJsaXNoIGEgc3RhcnQgdGltZS4KKyAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRp
b24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9s
bEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKKyAgICBtX2lucHV0SGFu
ZGxlci0+YW5pbWF0ZSgxMCk7CisKKyAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4
cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOworCisgICAgLy8gVGhlIHNl
Y29uZCBjYWxsIHNob3VsZCBzdGFydCBzY3JvbGxpbmcgaW4gdGhlIC1YIGRpcmVjdGlvbi4KKyAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRp
b24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9s
bEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVzdGlu
Zzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7
CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRl
c3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjp3aWR0aCwgdGVzdGluZzo6THQoMCkp
KSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEVu
ZCgpKTsKKyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4xKTsKKworICAgIHRlc3Rpbmc6
Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNs
aWVudCk7CisKKyAgICAvLyBMZXQncyBzYXkgb24gdGhlIHRoaXJkIGNhbGwgd2UgaGl0IGEgbm9u
LXNjcm9sbGFibGUgcmVnaW9uLiBXZSBzaG91bGQgYWJvcnQgdGhlIGZsaW5nIGFuZCBub3Qgc2Ny
b2xsLgorICAgIC8vIFdlIGFsc28gc2hvdWxkIHBhc3MgdGhlIGN1cnJlbnQgZmxpbmcgcGFyYW1l
dGVycyBvdXQgdG8gdGhlIGNsaWVudCBzbyB0aGUgcmVzdCBvZiB0aGUgZmxpbmcgY2FuIGJlCisg
ICAgLy8gdHJhbnNmZXJyZWQgdG8gdGhlIG1haW4gdGhyZWFkLgorICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBFWFBF
Q1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6
XywgdGVzdGluZzo6XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29y
ZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCkpOworICAgIEVYUEVDVF9DQUxM
KG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5nOjpfKSkuVGltZXMo
MCk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEVu
ZCgpKS5UaW1lcygwKTsKKworICAgIC8vIEV4cGVjdGVkIHdoZWVsIGZsaW5nIGFuaW1hdGlvbiBw
YXJhbWV0ZXJzOgorICAgIC8vICopIGZsaW5nRGVsdGEgYW5kIGZsaW5nUG9pbnQgc2hvdWxkIG1h
dGNoIHRoZSBvcmlnaW5hbCBHZXN0dXJlRmxpbmdTdGFydCBldmVudAorICAgIC8vICopIHN0YXJ0
VGltZSBzaG91bGQgYmUgMTAgdG8gbWF0Y2ggdGhlIHRpbWUgcGFyYW1ldGVyIG9mIHRoZSBmaXJz
dCBhbmltYXRlKCkgY2FsbCBhZnRlciB0aGUgR2VzdHVyZUZsaW5nU3RhcnQKKyAgICAvLyAqKSBj
dW11bGF0aXZlU2Nyb2xsIGRlcGVuZHMgb24gdGhlIGN1cnZlLCBidXQgc2luY2Ugd2UndmUgYW5p
bWF0ZWQgaW4gdGhlIC1YIGRpcmVjdGlvbiB0aGUgWCB2YWx1ZSBzaG91bGQgYmUgPCAwCisgICAg
RVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHRyYW5zZmVyQWN0aXZlV2hl
ZWxGbGluZ0FuaW1hdGlvbih0ZXN0aW5nOjpBbGxPZigKKyAgICAgICAgdGVzdGluZzo6RmllbGQo
JldlYkNvcmU6OkNDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmRlbHRhLCB0ZXN0aW5nOjpF
cShmbGluZ0RlbHRhKSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpDQ0FjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpwb2ludCwgdGVzdGluZzo6RXEoZmxpbmdQb2ludCkpLAor
ICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6Q0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1l
dGVyczo6Z2xvYmFsUG9pbnQsIHRlc3Rpbmc6OkVxKGZsaW5nR2xvYmFsUG9pbnQpKSwKKyAgICAg
ICAgdGVzdGluZzo6RmllbGQoJldlYkNvcmU6OkNDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6
Om1vZGlmaWVycywgdGVzdGluZzo6RXEobW9kaWZpZXJzKSksCisgICAgICAgIHRlc3Rpbmc6OkZp
ZWxkKCZXZWJDb3JlOjpDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpzdGFydFRpbWUsIHRl
c3Rpbmc6OkVxKDEwKSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpDQ0FjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpjdW11bGF0aXZlU2Nyb2xsLAorICAgICAgICAgICAgdGVz
dGluZzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6OndpZHRoLCB0ZXN0aW5nOjpHdCgwKSkp
KSkpOworICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwLjIpOworCisgICAgdGVzdGluZzo6
TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xp
ZW50KTsKKworICAgIC8vIFNpbmNlIHdlJ3ZlIGFib3J0ZWQgdGhlIGZsaW5nLCB0aGUgbmV4dCBh
bmltYXRpb24gc2hvdWxkIGJlIGEgbm8tb3AgYW5kIHNob3VsZCBub3QgcmVzdWx0IGluIGFub3Ro
ZXIKKyAgICAvLyBmcmFtZSBiZWluZyByZXF1ZXN0ZWQuCisgICAgRVhQRUNUX0NBTEwobV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpLlRpbWVzKDApOworICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0
aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CisgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1h
dGUoMTAuMyk7CisKKyAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9u
cygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOworCisgICAgLy8gU2luY2Ugd2UndmUgdHJh
bnNmZXJyZWQgdGhlIGZsaW5nIHRvIHRoZSBtYWluIHRocmVhZCwgd2UgbmVlZCB0byBwYXNzIHRo
ZSBuZXh0IEdlc3R1cmVGbGluZ0NhbmNlbCB0byB0aGUgbWFpbgorICAgIC8vIHRocmVhZCBhcyB3
ZWxsLgorICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVu
dCh0cnVlKSk7CisgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlRmxpbmdDYW5jZWw7CisgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2Vz
dHVyZSk7CisKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CisKKyAgICAvLyBTdGFydCBh
IHNlY29uZCBnZXN0dXJlIGZsaW5nLCB0aGlzIHRpbWUgaW4gdGhlICtZIGRpcmVjdGlvbiB3aXRo
IG5vIFguCisgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
RmxpbmdTdGFydDsKKyAgICBmbGluZ0RlbHRhID0gV2ViQ29yZTo6RmxvYXRTaXplKDAsIC0xMDAw
KTsKKyAgICBmbGluZ1BvaW50ID0gV2ViQ29yZTo6SW50UG9pbnQoOTUsIDg3KTsKKyAgICBmbGlu
Z0dsb2JhbFBvaW50ID0gV2ViQ29yZTo6SW50UG9pbnQoMzIsIDcxKTsKKyAgICBtb2RpZmllcnMg
PSAyOworICAgIGdlc3R1cmUuZGVsdGFYID0gZmxpbmdEZWx0YS53aWR0aCgpOworICAgIGdlc3R1
cmUuZGVsdGFZID0gZmxpbmdEZWx0YS5oZWlnaHQoKTsKKyAgICBnZXN0dXJlLnggPSBmbGluZ1Bv
aW50LngoKTsKKyAgICBnZXN0dXJlLnkgPSBmbGluZ1BvaW50LnkoKTsKKyAgICBnZXN0dXJlLmds
b2JhbFggPSBmbGluZ0dsb2JhbFBvaW50LngoKTsKKyAgICBnZXN0dXJlLmdsb2JhbFkgPSBmbGlu
Z0dsb2JhbFBvaW50LnkoKTsKKyAgICBnZXN0dXJlLm1vZGlmaWVycyA9IG1vZGlmaWVyczsKKyAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRp
b24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9s
bEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVzdGlu
Zzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7
CisgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CisKKyAgICB0
ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhh
bmRsZXJDbGllbnQpOworCisgICAgLy8gU3RhcnQgdGhlIHNlY29uZCBmbGluZyBhbmltYXRpb24g
YXQgdGltZSAzMC4KKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwg
c2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsK
KyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgzMCk7CisKKyAgICB0ZXN0aW5nOjpNb2NrOjpW
ZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOwor
CisgICAgLy8gVGljayB0aGUgc2Vjb25kIGZsaW5nIG9uY2Ugbm9ybWFsbHkuCisgICAgRVhQRUNU
X0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwor
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0
ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVy
bihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOworICAgIEVY
UEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5nOjpQ
cm9wZXJ0eSgmV2ViQ29yZTo6SW50U2l6ZTo6aGVpZ2h0LCB0ZXN0aW5nOjpHdCgwKSkpKTsKKyAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkpOwor
ICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDMwLjEpOworCisgICAgdGVzdGluZzo6TW9jazo6
VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsK
KworICAgIC8vIFRoZW4gYWJvcnQgdGhlIHNlY29uZCBmbGluZy4KKyAgICBFWFBFQ1RfQ0FMTCht
X21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQ
RUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6
Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNv
cmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxGYWlsZWQpKTsKKyAgICBFWFBFQ1RfQ0FM
TChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6XykpLlRpbWVz
KDApOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxF
bmQoKSkuVGltZXMoMCk7CisKKyAgICAvLyBXZSBzaG91bGQgZ2V0IHBhcmFtZXRlcnMgZnJvbSB0
aGUgc2Vjb25kIGZsaW5nLCBub3RoaW5nIGZyb20gdGhlIGZpcnN0IGZsaW5nIHNob3VsZCAibGVh
ayIuCisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHRyYW5zZmVy
QWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbih0ZXN0aW5nOjpBbGxPZigKKyAgICAgICAgdGVzdGlu
Zzo6RmllbGQoJldlYkNvcmU6OkNDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmRlbHRhLCB0
ZXN0aW5nOjpFcShmbGluZ0RlbHRhKSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3Jl
OjpDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpwb2ludCwgdGVzdGluZzo6RXEoZmxpbmdQ
b2ludCkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6Q0NBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVyczo6Z2xvYmFsUG9pbnQsIHRlc3Rpbmc6OkVxKGZsaW5nR2xvYmFsUG9pbnQp
KSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkNvcmU6OkNDQWN0aXZlV2hlZWxGbGluZ1Bh
cmFtZXRlcnM6Om1vZGlmaWVycywgdGVzdGluZzo6RXEobW9kaWZpZXJzKSksCisgICAgICAgIHRl
c3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpzdGFy
dFRpbWUsIHRlc3Rpbmc6OkVxKDMwKSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3Jl
OjpDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpjdW11bGF0aXZlU2Nyb2xsLAorICAgICAg
ICAgICAgdGVzdGluZzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6OmhlaWdodCwgdGVzdGlu
Zzo6THQoMCkpKSkpKTsKKyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgzMC4yKTsKIH0KIAog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133710</attachid>
            <date>2012-03-25 18:31:13 -0700</date>
            <delta_ts>2012-03-25 18:31:13 -0700</delta_ts>
            <desc>Rebase on top of 82154</desc>
            <filename>bug-81479-20120325183112.patch</filename>
            <type>text/plain</type>
            <size>113659</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExOTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAwMzRkYTRhYTU1MzA5
MmFlNTdkOTIzZWI3YjQyYTA0NjQ4ZjNiYTc0Li5hYTMyM2NkMDVhZjFjOWE5ZDYzNzgyNWNhZDEy
MGRiNzM1NDFlNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wMy0yNSAg
TmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBUcmFu
c2ZlciB3aGVlbCBmbGluZ3MgdG8gbWFpbiB0aHJlYWQgaWYgd2UgaGl0IGEgcmVnaW9uIHRoYXQg
Y2FuJ3QgYmUgc2Nyb2xsZWQgZnJvbSB0aGUgY29tcG9zaXRvciB0aHJlYWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNDc5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2Vi
TGF5ZXJUcmVlVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkxh
eWVyVHJlZVZpZXdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Q2xp
ZW50Ojp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24pOgorCisyMDEyLTAzLTI1ICBO
YXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJvdXRl
IG1vbm90b25pYyBjbG9jayBhbmQgd2lsbEJlZ2luRnJhbWUgbm90aWZpY2F0aW9uIHVwIGZyb20g
Y29tcG9zaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODIxNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlldyk6CisgICAgICAgICogY2hyb21pdW0vcHVibGlj
L1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYkxheWVyVHJlZVZpZXdDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Q2xpZW50Ojp3aWxsQmVnaW5G
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdDbGllbnQ6OnVwZGF0ZUFu
aW1hdGlvbnMpOgorCiAyMDEyLTAzLTIzICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW2Nocm9taXVtXSByZW5hbWUgbmV3d3RmIHRhcmdldCBiYWNrIHRvIHd0Zgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDc0OGNhYzhlNGMzMmM1Y2YwYzQ4ZWE4N2IzMDEwNjkxNTkwYjM1MjAuLjk1
YzFkYzgyNTJlZmJlOTNiYjFjMzcyOTQzNDBmOTI2Y2RlNDRjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MSBAQAorMjAxMi0wMy0yNSAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgW2Nocm9taXVtXSBUcmFuc2ZlciB3aGVlbCBmbGluZ3MgdG8gbWFpbiB0aHJlYWQg
aWYgd2UgaGl0IGEgcmVnaW9uIHRoYXQgY2FuJ3QgYmUgc2Nyb2xsZWQgZnJvbSB0aGUgY29tcG9z
aXRvciB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgxNDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0
dXJlQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZVBsYXRmb3JtR2VzdHVy
ZUFuaW1hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1h
dGlvbi5oOgorICAgICAgICAoQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCk6CisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yTm9uZTo6c2Nyb2xsQnkpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yTm9uZS5oOgorICAgICAgICAoU2Nyb2xsQW5pbWF0b3JOb25lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0
dXJlQ3VydmU6OlRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmFwcGx5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaDoKKyAgICAg
ICAgKFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSk6CisgICAgICAgICogcGxhdGZv
cm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldoZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRm
b3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oOgorICAgICAgICAoV2hlZWxGbGlu
Z1BsYXRmb3JtR2VzdHVyZUN1cnZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OkNDQWN0aXZl
V2hlZWxGbGluZ1BhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDR2VzdHVyZUN1cnZlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEND
R2VzdHVyZUN1cnZlVGFyZ2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0lucHV0SGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdENsaWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbik6
CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24pOgor
ICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1NpbmdsZVRocmVhZFByb3h5Ojp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb25P
bkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChDQ1NpbmdsZVRocmVhZFByb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHk6OnBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbklt
cGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dHJhbnNmZXJBY3Rp
dmVXaGVlbEZsaW5nQW5pbWF0aW9uT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5n
QW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDVGhyZWFkUHJveHkp
OgorCisyMDEyLTAzLTI1ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBbY2hyb21pdW1dIFJvdXRlIG1vbm90b25pYyBjbG9jayBhbmQgd2lsbEJlZ2luRnJhbWUgbm90
aWZpY2F0aW9uIHVwIGZyb20gY29tcG9zaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIxNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OndpbGxC
ZWdpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0Ojp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9z
dENsaWVudCk6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpCZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGU6OkJlZ2luRnJhbWVBbmRDb21t
aXRTdGF0ZSk6CisgICAgICAgIChCZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGUpOgorCiAyMDEyLTAz
LTI0ICBKZXN1cyBTYW5jaGV6LVBhbGVuY2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXggc2luY2Ugd2UgdXNlICItV2Vycm9y
PXVudXNlZC1idXQtc2V0LXZhcmlhYmxlIi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
MGM3MGQzY2U5MDZlYmMzMTU4MTJiNTE5NzMxZjVhNzIwOWRlZGUzMS4uNDVlY2Y2NzgyNTNjYmM3
Mzk0YTE5YjU3NGVmMzVjODRkODM0YmU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMTkgQEAKKzIwMTItMDMtMjUgIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtjaHJvbWl1bV0gVHJhbnNmZXIgd2hlZWwgZmxpbmdzIHRvIG1haW4gdGhy
ZWFkIGlmIHdlIGhpdCBhIHJlZ2lvbiB0aGF0IGNhbid0IGJlIHNjcm9sbGVkIGZyb20gdGhlIGNv
bXBvc2l0b3IgdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MTQ3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcHVibGljL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVu
dC5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJh
bWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6
OldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwdWJsaWMvV2ViVmll
dy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlZpZXcpOgorICAgICAgICAqIHB1
YmxpYy9wbGF0Zm9ybS9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQu
aC4KKyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlVG9DQ0dlc3R1cmVBZGFwdGVyOjpzY3JvbGxC
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5k
bGVJbnB1dEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGw6OmhhbmRsZUlucHV0RXZlbnRJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6YW5pbWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpjYW5jZWxDdXJyZW50Rmxp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Ny
b2xsQnkpOgorICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bCk6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OldlYkxheWVyVHJlZVZpZXdJbXBsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OnRyYW5zZmVyQWN0aXZlV2hlZWxGbGlu
Z0FuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJMYXllclRy
ZWVWaWV3SW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViTGF5ZXJUcmVlVmlld0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzY3JvbGxCeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1w
bCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAg
ICAoV2ViS2l0VGVzdHM6OkNDTGF5ZXJUcmVlSG9zdEltcGxUZXN0Ojp0cmFuc2ZlckFjdGl2ZVdo
ZWVsRmxpbmdBbmltYXRpb25PbkltcGxUaHJlYWQpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJU
cmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJUcmVlSG9zdENsaWVudDo6
dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKE1vY2tMYXllclRy
ZWVIb3N0Q2xpZW50KToKKyAgICAgICAgKiB0ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50Ojp0cmFuc2Zl
ckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24pOgorICAgICAgICAqIHRlc3RzL1BsYXRmb3JtR2Vz
dHVyZUN1cnZlVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGxUZXN0LmNwcDoKKworMjAxMi0wMy0yNSAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBSb3V0ZSBtb25vdG9uaWMgY2xvY2sgYW5kIHdp
bGxCZWdpbkZyYW1lIG5vdGlmaWNhdGlvbiB1cCBmcm9tIGNvbXBvc2l0b3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMTU0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViV2lkZ2V0Q2xp
ZW50Lmg6CisgICAgICAgIChXZWJXaWRnZXRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJX
aWRnZXRDbGllbnQ6OndpbGxCZWdpbkZyYW1lKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVl
Vmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OnVwZGF0ZUFuaW1h
dGlvbnMpOgorICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHA6CisgICAgICAg
IChDQ0xheWVyVHJlZUhvc3RDbGllbnRUb1dlYkxheWVyVHJlZVZpZXdDbGllbnRBZGFwdGVyKToK
KyAgICAgICAgKFdlYktpdDo6Q0NMYXllclRyZWVIb3N0Q2xpZW50VG9XZWJMYXllclRyZWVWaWV3
Q2xpZW50QWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6Q0NMYXllclRyZWVIb3N0
Q2xpZW50VG9XZWJMYXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcjo6d2lsbEJlZ2luRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpDQ0xheWVyVHJlZUhvc3RDbGllbnRUb1dlYkxheWVyVHJlZVZpZXdD
bGllbnRBZGFwdGVyOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6Q0NMYXll
clRyZWVIb3N0Q2xpZW50VG9XZWJMYXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcjo6bGF5b3V0KToK
KyAgICAgICAgKFdlYktpdDo6Q0NMYXllclRyZWVIb3N0Q2xpZW50VG9XZWJMYXllclRyZWVWaWV3
Q2xpZW50QWRhcHRlcjo6YXBwbHlTY3JvbGxBbmRTY2FsZSk6CisgICAgICAgIChXZWJLaXQ6OkND
TGF5ZXJUcmVlSG9zdENsaWVudFRvV2ViTGF5ZXJUcmVlVmlld0NsaWVudEFkYXB0ZXI6OmNyZWF0
ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpDQ0xheWVyVHJlZUhvc3RDbGllbnRUb1dlYkxh
eWVyVHJlZVZpZXdDbGllbnRBZGFwdGVyOjpkaWRSZWNyZWF0ZUNvbnRleHQpOgorICAgICAgICAo
V2ViS2l0OjpDQ0xheWVyVHJlZUhvc3RDbGllbnRUb1dlYkxheWVyVHJlZVZpZXdDbGllbnRBZGFw
dGVyOjpkaWRDb21taXRBbmREcmF3RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpDQ0xheWVyVHJl
ZUhvc3RDbGllbnRUb1dlYkxheWVyVHJlZVZpZXdDbGllbnRBZGFwdGVyOjpkaWRDb21wbGV0ZVN3
YXBCdWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6Q0NMYXllclRyZWVIb3N0Q2xpZW50VG9XZWJM
YXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcjo6c2NoZWR1bGVDb21wb3NpdGUpOgorICAgICAgICAo
V2ViS2l0OjpDQ0xheWVyVHJlZUhvc3RDbGllbnRUb1dlYkxheWVyVHJlZVZpZXdDbGllbnRBZGFw
dGVyOjpDQ0xheWVyVHJlZUhvc3RDbGllbnRUb1dlYkxheWVyVHJlZVZpZXdDbGllbnRBZGFwdGVy
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJ
bXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6V2Vi
TGF5ZXJUcmVlVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1w
bDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpz
ZXRSb290TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6Y29t
cG9zaXRvcklkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1w
bDo6c2V0Vmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0lt
cGw6OnZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBs
OjpzZXRWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNl
dFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJl
ZVZpZXdJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxheWVyVHJlZVZpZXdJbXBsOjpzZXROZWVkc0NvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxheWVyVHJlZVZpZXdJbXBsOjpzZXROZWVkc0FuaW1hdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0TmVlZHNSZWRyYXcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllclRyZWVWaWV3SW1wbDo6Y29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJUcmVlVmlld0ltcGw6OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
YXllclRyZWVWaWV3SW1wbDo6Y29tcG9zaXRlQW5kUmVhZGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6ZmluaXNoQWxsUmVuZGVyaW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllclRyZWVWaWV3SW1wbDo6bG9zZUNvbnRleHQpOgorICAgICAgICAqIHNyYy9XZWJMYXll
clRyZWVWaWV3SW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkxheWVyVHJl
ZVZpZXdJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6d2lsbEJlZ2luRnJhbWUpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFuaW1hdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBs
Lmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVI
b3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRlc3RIb29rczo6dXBkYXRlQW5pbWF0aW9ucyk6
CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVIb3N0Q2xpZW50Ojp3aWxsQmVnaW5GcmFtZSk6
CisgICAgICAgIChNb2NrTGF5ZXJUcmVlSG9zdENsaWVudCk6CisgICAgICAgIChXVEY6Ok1vY2tM
YXllclRyZWVIb3N0Q2xpZW50Ojp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKFdURjo6Q0NM
YXllclRyZWVIb3N0VGVzdFNldE5lZWRzQW5pbWF0ZUluc2lkZUFuaW1hdGlvbkNhbGxiYWNrOjp1
cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKiB0ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xp
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpGYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50Ojp3aWxs
QmVnaW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50
Ojp1cGRhdGVBbmltYXRpb25zKToKKwogMjAxMi0wMy0yMyAgU2hhd24gU2luZ2ggIDxzaGF3bnNp
bmdoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEluY29ycmVjdCByZXBsaWNh
IG9yaWdpblRyYW5zZm9ybSB1c2VkIGluIENDRGFtYWdlVHJhY2tlcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCAzZWYyOTVk
OTQ1NTk4MzE5NzNjY2FiNWVjMjUwYzI3MDE4OGQ0MDRlLi4yMTliZmMyNjM4ZGUwNGQ5NGUwYjgz
MjBkZThjZjFhNDgzZGZlZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIldl
YlByaXZhdGVQdHIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ0NMYXllclRyZWVI
b3N0Owogc3RydWN0IENDU2V0dGluZ3M7CiB9CiAKQEAgLTM4LDYgKzM3LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFdlYkxheWVyOwog
Y2xhc3MgV2ViTGF5ZXJUcmVlVmlld0NsaWVudDsKK2NsYXNzIFdlYkxheWVyVHJlZVZpZXdJbXBs
Owogc3RydWN0IFdlYlBvaW50Owogc3RydWN0IFdlYlJlY3Q7CiBzdHJ1Y3QgV2ViU2l6ZTsKQEAg
LTE0MSw3ICsxNDEsOSBAQCBwdWJsaWM6CiAgICAgLy8gSW1tZWRpYXRlbHkgdXBkYXRlIGFuaW1h
dGlvbnMuIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGZyYW1lIHNjaGVkdWxpbmcgaXMg
aGFuZGxlZCBieQogICAgIC8vIHRoZSBXZWJMYXllclRyZWVWaWV3IHVzZXIgYW5kIG5vdCBpbnRl
cm5hbGx5IGJ5IHRoZSBjb21wb3NpdG9yLCBtZWFuaW5nIG9ubHkgaW4gc2luZ2xlLXRocmVhZGVk
CiAgICAgLy8gbW9kZS4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhk
b3VibGUgZnJhbWVCZWdpblRpbWUpOworICAgIC8vCisgICAgLy8gRklYTUU6IHJlbW92ZSBkZWZh
dWx0IGFydWdtZW50IG9uIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lIHdoZW4gdXBzdHJlYW0gZGVw
ZW5kZW5jaWVzIGFyZSByZXNvbHZlZC4KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgdXBkYXRlQW5p
bWF0aW9ucyhkb3VibGUgd2FsbENsb2NrRnJhbWVCZWdpblRpbWUsIGRvdWJsZSBtb25vdG9uaWNG
cmFtZUJlZ2luVGltZSA9IDApOwogCiAgICAgLy8gQ29tcG9zaXRlcyBhbmQgYXR0ZW1wdHMgdG8g
cmVhZCBiYWNrIHRoZSByZXN1bHQgaW50byB0aGUgcHJvdmlkZWQKICAgICAvLyBidWZmZXIuIElm
IGl0IHdhc24ndCBwb3NzaWJsZSwgZS5nLiBkdWUgdG8gY29udGV4dCBsb3N0LCB3aWxsIHJldHVy
bgpAQCAtMTY2LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgbG9z
ZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1lcyk7CiAKIHByb3RlY3RlZDoKLSAgICBXZWJQ
cml2YXRlUHRyPFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdD4gbV9wcml2YXRlOworICAgIFdlYlBy
aXZhdGVQdHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+IG1fcHJpdmF0ZTsKIH07CiAKIGlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgV2ViTGF5ZXJUcmVlVmlldyYgYSwgY29uc3QgV2ViTGF5ZXJU
cmVlVmlldyYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmgKaW5kZXggNWMwYjllZjlhMmEyYzYxM2IxMTkwMGMx
M2Y4OThmMjI4MzliNDY1Yi4uMDVjYTZmZGIxYjBhNDljY2U1ODJiMTQwYWYwZGRmOTQ1YTY1ZmNh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRy
ZWVWaWV3Q2xpZW50LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJM
YXllclRyZWVWaWV3Q2xpZW50LmgKQEAgLTI4LDE0ICsyOCwyNSBAQAogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOworY2xhc3MgV2ViQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViU2l6ZTsKIGNsYXNzIFdlYlRocmVhZDsKIAogY2xh
c3MgV2ViTGF5ZXJUcmVlVmlld0NsaWVudCB7CiBwdWJsaWM6Ci0gICAgLy8gVXBkYXRlcyBhbmlt
YXRpb24gYW5kIGxheW91dC4gVGhlc2UgYXJlIGNhbGxlZCBiZWZvcmUgdGhlIGNvbXBvc2l0aW5n
CisgICAgLy8gSW5kaWNhdGVzIHRvIHRoZSBlbWJlZGRlciB0aGF0IHRoZSBjb21wb3NpdG9yIGlz
IGFib3V0IHRvIGJlZ2luIGEKKyAgICAvLyBmcmFtZS4gVGhpcyBpcyBpcyBhIHNpZ25hbCB0byBm
bG93IGNvbnRyb2wgbWVjaGFuaXNtcyB0aGF0IGEgZnJhbWUgaXMKKyAgICAvLyBiZWdpbm5pbmcu
IFRoaXMgY2FsbCB3aWxsIGJlIGZvbGxvd2VkIGJ5IHVwZGF0ZUFuaW1hdGlvbnMgYW5kIHRoZW4g
bGF5b3V0LCB3aGljaCBzaG91bGQKKyAgICAvLyBiZSB1c2VkIGZvciBhY3R1YWwgYW5pbWF0aW9u
IG9yIHRyZWUgbWFuaXB1bGF0aW9uIHRhc2tzLgorICAgIC8vIEZJWE1FOiBtYWtlIHB1cmUgdmly
dHVhbCBvbmNlIHVwc3RyZWFtIGRlcHMgYXJlIHNhdGlzZmllZC4KKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbEJlZ2luRnJhbWUoKSB7IH0KKworICAgIC8vIFVwZGF0ZXMgYW5pbWF0aW9uIGFuZCBsYXlv
dXQuIEJvdGggZmxhdm9ycyBhcmUgY2FsbGVkIGJlZm9yZSB0aGUgY29tcG9zaXRpbmcKICAgICAv
LyBwYXNzIHNvIHRoYXQgbGF5ZXJzIGNhbiBiZSB1cGRhdGVkIGF0IHRoZSBnaXZlbiBmcmFtZSB0
aW1lLgotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2lu
VGltZSkgPSAwOworICAgIC8vIFRoZSBvbmUgYXJndW1lbnQgdmVyc2lvbiBpcyBERVBSRUNBVEVE
LiBVc2UgdGhlIHR3by1hcmd1bWVudCB2ZXJzaW9uLgorICAgIC8vIEZJWE1FOiByZW1vdmUgdGhl
IG9uZSBhcmd1bWVudCB2ZXJzaW9uLgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25z
KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1h
dGlvbnMoZG91YmxlIHdhbGxDbG9ja0ZyYW1lQmVnaW5UaW1lLCBkb3VibGUgbW9ub3RvbmljRnJh
bWVCZWdpblRpbWUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSA9IDA7CiAKICAgICAv
LyBBcHBsaWVzIGEgc2Nyb2xsIGRlbHRhIHRvIHRoZSByb290IGxheWVyLCB3aGljaCBpcyBidW5k
bGVkIHdpdGggYSBwYWdlCkBAIC02MSw2ICs3MiwxMyBAQCBwdWJsaWM6CiAgICAgLy8gaW50ZXJu
YWxseSBzY2hlZHVsZSBhIGNvbXBvc2l0aW5nIHBhc3Mgd2hlbiBuZWVkZWQuCiAgICAgdmlydHVh
bCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCkgPSAwOwogCisKKyAgICAvLyBUcmFuc2ZlcnMgYW4g
aW4tcHJvZ3Jlc3Mgd2hlZWwgZmxpbmcgYW5pbWF0aW9uIHRoYXQgdGhlIFdlYkxheWVyVHJlZVZp
ZXcKKyAgICAvLyBjYW4gbm8gbG9uZ2VyIGFkdmFuY2UgdG8gdGhlIGNsaWVudCB0byBmaW5pc2gg
b3V0LgorICAgIC8vCisgICAgLy8gRklYTUU6IFJlbW92ZSBkZWZhdWx0IGltcGwgd2hlbiBjbGll
bnRzIGFyZSBhbGwgdXBkYXRlZC4KKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVl
bEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJh
bXMpIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+V2ViTGF5ZXJUcmVlVmlld0NsaWVu
dCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA2ODg0ZjIxYmNhMGQxMjg2MDM2YmU2YmJj
ODcxMDdjYTZiYjRlNTE5Li5lNWM0Yzc0YThlYmE5ODliZmQ0YzA3NzdhODVkOWIzM2MxMDgxMDBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNDQ4LDYgKzM0NDgsNyBAQAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9BY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9y
bUdlc3R1cmVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxh
dGZvcm1HZXN0dXJlQW5pbWF0aW9uLmNwcAppbmRleCAxOGVjN2ViMzRhZTJlNGUwN2I1NmMxNGEz
ZTAyYTMzNzhiYWQ5ZDUwLi42YTAxM2FkZmI0NDVkNmRjOTUzZDQzOTc4ZjQ5ODUwMTM3Y2MwZWZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1
cmVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRm
b3JtR2VzdHVyZUFuaW1hdGlvbi5jcHAKQEAgLTM3LDYgKzM3LDExIEBAIFBhc3NPd25QdHI8QWN0
aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uPiBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRp
b246OmNyZWF0CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb24oY3VydmUsIHRhcmdldCkpOwogfQogCitQYXNzT3duUHRyPEFjdGl2ZVBsYXRmb3Jt
R2VzdHVyZUFuaW1hdGlvbj4gQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGUo
UGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3VydmUsIFBsYXRmb3JtR2VzdHVyZUN1
cnZlVGFyZ2V0KiB0YXJnZXQsIGRvdWJsZSBzdGFydFRpbWUpCit7CisgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oY3VydmUsIHRhcmdldCwgc3Rh
cnRUaW1lKSk7Cit9CisKIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6fkFjdGl2ZVBs
YXRmb3JtR2VzdHVyZUFuaW1hdGlvbigpCiB7CiB9CkBAIC00OSw2ICs1NCwxNCBAQCBBY3RpdmVQ
bGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbihQ
YXNzT3duUHRyPFBsYXRmbwogewogfQogCitBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246
OkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVy
ZUN1cnZlPiBjdXJ2ZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqIHRhcmdldCwgZG91Ymxl
IHN0YXJ0VGltZSkKKyAgICA6IG1fc3RhcnRUaW1lKHN0YXJ0VGltZSkKKyAgICAsIG1fd2FpdGlu
Z0ZvckZpcnN0VGljayhmYWxzZSkKKyAgICAsIG1fY3VydmUoY3VydmUpCisgICAgLCBtX3Rhcmdl
dCh0YXJnZXQpCit7Cit9CisKIGJvb2wgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjph
bmltYXRlKGRvdWJsZSB0aW1lKQogewogICAgIGlmIChtX3dhaXRpbmdGb3JGaXJzdFRpY2spIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVy
ZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0
dXJlQW5pbWF0aW9uLmgKaW5kZXggOWQ1NjNlNDgzNjY2ZGQyYWRhMWI1YjA1ZTg5ODRkZjE1YmFj
NzAyNC4uMjFmMTk5YzA3YTFmY2YzNGM1OGMxMjQ5ZjJiODRlNGM1NzExYmNhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5p
bWF0aW9uLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5p
bWF0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb24pOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEFjdGl2ZVBsYXRmb3Jt
R2VzdHVyZUFuaW1hdGlvbj4gY3JlYXRlKFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+
LCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPEFj
dGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbj4gY3JlYXRlKFBhc3NPd25QdHI8UGxhdGZvcm1H
ZXN0dXJlQ3VydmU+LCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCosIGRvdWJsZSBzdGFydFRp
bWUpOwogICAgIH5BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oKTsKIAogICAgIGJvb2wg
YW5pbWF0ZShkb3VibGUgdGltZSk7CkBAIC01MCw2ICs1MSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgLy8gQXNzdW1lcyBhIHZhbGlkIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0IHRoYXQg
b3V0bGl2ZXMgdGhlIGFuaW1hdGlvbi4KICAgICBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRp
b24oUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4sIFBsYXRmb3JtR2VzdHVyZUN1cnZl
VGFyZ2V0Kik7CisgICAgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8
UGxhdGZvcm1HZXN0dXJlQ3VydmU+LCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCosIGRvdWJs
ZSBzdGFydFRpbWUpOwogCiAgICAgZG91YmxlIG1fc3RhcnRUaW1lOwogICAgIGJvb2wgbV93YWl0
aW5nRm9yRmlyc3RUaWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmgKaW5kZXggYjI4YjI5MmMxOGRmMDQ4ZTNjMzBhMWRmNDk1
MzA0MmZiZWMzMDQ0OS4uZDkwYTllMTgzOGNlMjQ5ODRmNWI3MDQzNTg3NThiMjIxYjQ3MDU5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3VydmVU
YXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVDdXJ2
ZVRhcmdldC5oCkBAIC0yNywxMSArMjcsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBJbnRQb2ludDsKK2NsYXNzIEludFNpemU7CiAKIGNsYXNzIFBsYXRmb3JtR2VzdHVyZUN1
cnZlVGFyZ2V0IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50
UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFNpemUmKSA9
IDA7CiAgICAgLy8gRklYTUU6IGFkZCBpbnRlcmZhY2VzIGZvciBzY3JvbGwoKSwgZXRjLgogCiBw
cm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvck5vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25l
LmNwcAppbmRleCBkZTMzMGI0MDY4MWY3MTY3MzM3MDNiOGQxODYzMjM4NGExYzE1NDc1Li42MWU2
MDZkMDFmYzcxNTIyYjQ5MjJkNDk2Yjc0ZDBjOGQ1MmU3MTZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAKQEAgLTU2MiwxMCArNTYyLDEwIEBA
IHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzdG9wQW5pbWF0aW9uVGltZXJJZk5lZWRlZCgpCiAg
ICAgICAgIG1fYW5pbWF0aW9uQWN0aXZlID0gZmFsc2U7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0
b3JOb25lOjpzY3JvbGxCeShjb25zdCBJbnRQb2ludCYgbG9jYXRpb24pCit2b2lkIFNjcm9sbEFu
aW1hdG9yTm9uZTo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgbG9jYXRpb24pCiB7Ci0gICAgbV9j
dXJyZW50UG9zWCArPSBsb2NhdGlvbi54KCk7Ci0gICAgbV9jdXJyZW50UG9zWSArPSBsb2NhdGlv
bi55KCk7CisgICAgbV9jdXJyZW50UG9zWCArPSBsb2NhdGlvbi53aWR0aCgpOworICAgIG1fY3Vy
cmVudFBvc1kgKz0gbG9jYXRpb24uaGVpZ2h0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9u
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgKaW5kZXgg
YzQ3YmNhOTg2MDliNGYxNzVkM2VkMTQxMTM1ODYzOTkzYjA1MmFiMS4uODk1N2JhZDVhNWNiYWQ5
MDlhZjYyYThkZDI2OTliY2JkNDJmOWZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3JOb25lLmgKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogICAgIH07CiAK
ICAgICAvLyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCBpbXBsZW1lbnRhdGlvbi4KLSAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNz
IDo6U2Nyb2xsQW5pbWF0b3JOb25lVGVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCmluZGV4
IDY2ZjdhYjAxZjEwN2I4ZWQzZWI3NWNjMzM0OTE0MThmODhhZjljN2EuLjc2ZjU2NDM0OWMxZGY4
MWFkYWE3MGMzNGYzYjRmNWVjOGRlNzkzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcApA
QCAtMzUsMTggKzM1LDI0IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIFBhc3NPd25QdHI8UGxh
dGZvcm1HZXN0dXJlQ3VydmU+IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3Jl
YXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5KQogewotICAgIHJldHVybiBjcmVhdGUodmVs
b2NpdHksIDMsIEZsb2F0UG9pbnQoMC4zMzMzLCAwLjY2NjYpLCBGbG9hdFBvaW50KDAuNjY2Niwg
MSkpOworICAgIHJldHVybiBjcmVhdGUodmVsb2NpdHksIEludFNpemUoKSk7CiB9CiAKLVBhc3NP
d25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBmbG9hdCB1bml0
VGltZVNjYWxlTG9nMTAsIGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAxLCBjb25zdCBGbG9hdFBv
aW50JiBiZXppZXJQMikKK1Bhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRvdWNocGFk
RmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9j
aXR5LCBjb25zdCBJbnRTaXplJiBjdW11bGF0aXZlU2Nyb2xsKQogewotICAgIHJldHVybiBhZG9w
dFB0cihuZXcgVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKHZlbG9jaXR5LCB1bml0
VGltZVNjYWxlTG9nMTAsIGJlemllclAxLCBiZXppZXJQMikpOworICAgIHJldHVybiBjcmVhdGUo
dmVsb2NpdHksIDMsIEZsb2F0UG9pbnQoMC4zMzMzLCAwLjY2NjYpLCBGbG9hdFBvaW50KDAuNjY2
NiwgMSksIGN1bXVsYXRpdmVTY3JvbGwpOwogfQogCi1Ub3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0
dXJlQ3VydmU6OlRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9hdFBv
aW50JiB2ZWxvY2l0eSwgY29uc3QgZmxvYXQgdW5pdFRpbWVTY2FsZUxvZzEwLCBjb25zdCBGbG9h
dFBvaW50JiBiZXppZXJQMSwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDIpCitQYXNzT3duUHRy
PFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6
OmNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgZmxvYXQgdW5pdFRpbWVT
Y2FsZUxvZzEwLCBjb25zdCBGbG9hdFBvaW50JiBiZXppZXJQMSwgY29uc3QgRmxvYXRQb2ludCYg
YmV6aWVyUDIsIGNvbnN0IEludFNpemUmIGN1bXVsYXRpdmVTY3JvbGwpCit7CisgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUodmVsb2NpdHks
IHVuaXRUaW1lU2NhbGVMb2cxMCwgYmV6aWVyUDEsIGJlemllclAyLCBjdW11bGF0aXZlU2Nyb2xs
KSk7Cit9CisKK1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6VG91Y2hwYWRGbGlu
Z1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBm
bG9hdCB1bml0VGltZVNjYWxlTG9nMTAsIGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAxLCBjb25z
dCBGbG9hdFBvaW50JiBiZXppZXJQMiwgY29uc3QgSW50U2l6ZSYgY3VtdWxhdGl2ZVNjcm9sbCkK
ICAgICA6IG1fdmVsb2NpdHkodmVsb2NpdHkpCiAgICAgLCBtX3RpbWVTY2FsZUZhY3Rvcih1bml0
VGltZVNjYWxlTG9nMTAgLyBsb2cxMChtYXgoMTAuZiwgbWF4KGZhYnModmVsb2NpdHkueCgpKSwg
ZmFicyh2ZWxvY2l0eS55KCkpKSkpKQogICAgICwgbV9mbGluZ0JlemllcihiZXppZXJQMS54KCks
IGJlemllclAxLnkoKSwgYmV6aWVyUDIueCgpLCBiZXppZXJQMi55KCkpCisgICAgLCBtX2N1bXVs
YXRpdmVTY3JvbGwoY3VtdWxhdGl2ZVNjcm9sbCkKIHsKICAgICBBU1NFUlQodmVsb2NpdHkgIT0g
RmxvYXRQb2ludDo6emVybygpKTsKIH0KQEAgLTcyLDExICs3OCwxMSBAQCBib29sIFRvdWNocGFk
RmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6YXBwbHkoZG91YmxlIHRpbWUsIFBsYXRmb3JtR2Vz
dHVyZUN1cnZlVAogICAgICAgICBkaXNwbGFjZW1lbnQgPSAxOwogCiAgICAgLy8gS2VlcCB0cmFj
ayBvZiBpbnRlZ2VyIHBvcnRpb24gb2Ygc2Nyb2xsIHRodXMgZmFyLCBhbmQgcHJlcGFyZSBpbmNy
ZW1lbnQuCi0gICAgSW50UG9pbnQgc2Nyb2xsKGRpc3BsYWNlbWVudCAqIG1fdmVsb2NpdHkueCgp
LCBkaXNwbGFjZW1lbnQgKiBtX3ZlbG9jaXR5LnkoKSk7Ci0gICAgSW50UG9pbnQgc2Nyb2xsSW5j
cmVtZW50KHNjcm9sbCAtIG1fY3VtdWxhdGl2ZVNjcm9sbCk7CisgICAgSW50U2l6ZSBzY3JvbGwo
ZGlzcGxhY2VtZW50ICogbV92ZWxvY2l0eS54KCksIGRpc3BsYWNlbWVudCAqIG1fdmVsb2NpdHku
eSgpKTsKKyAgICBJbnRTaXplIHNjcm9sbEluY3JlbWVudChzY3JvbGwgLSBtX2N1bXVsYXRpdmVT
Y3JvbGwpOwogICAgIG1fY3VtdWxhdGl2ZVNjcm9sbCA9IHNjcm9sbDsKIAotICAgIGlmICh0aW1l
IDwgMSB8fCBzY3JvbGxJbmNyZW1lbnQgIT0gSW50UG9pbnQ6Onplcm8oKSkgeworICAgIGlmICh0
aW1lIDwgMSB8fCAhc2Nyb2xsSW5jcmVtZW50LmlzWmVybygpKSB7CiAgICAgICAgIHRhcmdldC0+
c2Nyb2xsQnkoc2Nyb2xsSW5jcmVtZW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRmb3Jt
R2VzdHVyZUN1cnZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxh
dGZvcm1HZXN0dXJlQ3VydmUuaAppbmRleCA0ZTViMTliZTI4MmYzZGMzZTAyYmE4NDAzMzlkYjhi
YTY1NzRkOWFjLi44NGRiMmJiZDJhODBkNjQwOGNjNThkOGYwN2I2ODZkYjNlOGYyMWE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0
dXJlQ3VydmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxh
dGZvcm1HZXN0dXJlQ3VydmUuaApAQCAtNDIsMTggKzQyLDE5IEBAIGNsYXNzIFBsYXRmb3JtR2Vz
dHVyZUN1cnZlVGFyZ2V0OwogY2xhc3MgVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZl
IDogcHVibGljIFBsYXRmb3JtR2VzdHVyZUN1cnZlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZl
bG9jaXR5KTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3Jl
YXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBmbG9hdCB1bml0VGltZVNjYWxl
TG9nMTAsIGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAxLCBjb25zdCBGbG9hdFBvaW50JiBiZXpp
ZXJQMik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0
ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgSW50U2l6ZSYgY3VtdWxhdGl2ZVNj
cm9sbCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0
ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgZmxvYXQgdW5pdFRpbWVTY2FsZUxv
ZzEwLCBjb25zdCBGbG9hdFBvaW50JiBiZXppZXJQMSwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVy
UDIsIGNvbnN0IEludFNpemUmIGN1bXVsYXRpdmVTY3JvbGwpOwogICAgIHZpcnR1YWwgflRvdWNo
cGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSgpOwogCiAgICAgdmlydHVhbCBib29sIGFwcGx5
KGRvdWJsZSBtb25vdG9uaWNUaW1lLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCopOwogCiBw
cml2YXRlOgotICAgIGV4cGxpY2l0IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZShj
b25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgZmxvYXQgdW5pdFRpbWVTY2FsZUxvZzEw
LCBjb25zdCBGbG9hdFBvaW50JiBiZXppZXJQMSwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDIp
OworICAgIFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9hdFBvaW50
JiB2ZWxvY2l0eSwgY29uc3QgZmxvYXQgdW5pdFRpbWVTY2FsZUxvZzEwLCBjb25zdCBGbG9hdFBv
aW50JiBiZXppZXJQMSwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDIsIGNvbnN0IEludFNpemUm
IGN1bXVsYXRpdmVTY3JvbGwpOwogCiAgICAgRmxvYXRQb2ludCBtX3ZlbG9jaXR5OwogICAgIGZs
b2F0IG1fdGltZVNjYWxlRmFjdG9yOwotICAgIEludFBvaW50IG1fY3VtdWxhdGl2ZVNjcm9sbDsK
ICAgICBVbml0QmV6aWVyIG1fZmxpbmdCZXppZXI7CisgICAgSW50U2l6ZSBtX2N1bXVsYXRpdmVT
Y3JvbGw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcApp
bmRleCBjOWYxNzMyODk3OWNiN2M3MmZmMzlmN2VjYzIxMTEwZjQzM2JjMzk5Li41MTZkMTNjMDNi
YTE3NWQwM2ViNDQzY2ViYzUxY2I4MTA0YjNlOTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKQEAg
LTU5LDExICs1OSwxMSBAQCBib29sIFdoZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6YXBw
bHkoZG91YmxlIHRpbWUsIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZwogICAgIC8vIEZJWE1FOiBj
b25zaWRlciBtYWtpbmcgdGhlIHZhbHVlIG9mIHNpZ21hIHNldHRhYmxlIGluIHRoZSBjb25zdHJ1
Y3Rvci4KICAgICBzdGF0aWMgZG91YmxlIHR3b1NpZ21hU3F1YXJlZEludmVyc2UgPSAxNjsgLy8g
c2lnbWEgPSAwLjI1CiAgICAgZmxvYXQgY2RmID0gMSAtIGV4cCgtdGltZSAqIHRpbWUgKiB0d29T
aWdtYVNxdWFyZWRJbnZlcnNlKTsKLSAgICBJbnRQb2ludCBzY3JvbGwoY2RmICogbV92ZWxvY2l0
eS54KCksIGNkZiAqIG1fdmVsb2NpdHkueSgpKTsKLSAgICBJbnRQb2ludCBzY3JvbGxJbmNyZW1l
bnQoc2Nyb2xsIC0gbV9jdW11bGF0aXZlU2Nyb2xsKTsKKyAgICBJbnRTaXplIHNjcm9sbChjZGYg
KiBtX3ZlbG9jaXR5LngoKSwgY2RmICogbV92ZWxvY2l0eS55KCkpOworICAgIEludFNpemUgc2Ny
b2xsSW5jcmVtZW50KHNjcm9sbCAtIG1fY3VtdWxhdGl2ZVNjcm9sbCk7CiAgICAgbV9jdW11bGF0
aXZlU2Nyb2xsID0gc2Nyb2xsOwogCi0gICAgaWYgKGNkZiA8IDAuNSB8fCBzY3JvbGxJbmNyZW1l
bnQgIT0gSW50UG9pbnQ6Onplcm8oKSkgeworICAgIGlmIChjZGYgPCAwLjUgfHwgIXNjcm9sbElu
Y3JlbWVudC5pc1plcm8oKSkgewogICAgICAgICB0YXJnZXQtPnNjcm9sbEJ5KHNjcm9sbEluY3Jl
bWVudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKaW5kZXgg
YjcyMTQ2MTY1MzMzZjIzYzhjOWJiZjZjMDFkZGJmMDY3YWVlMWFjMi4uZDA5NTU2NmE5MjEyZWQz
MWY1MjAwNjJlMTcyZmRlYzQ4MGMzYzZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKQEAgLTQ5LDcgKzQ5
LDcgQEAgcHJpdmF0ZToKICAgICBXaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3Qg
RmxvYXRQb2ludCYgdmVsb2NpdHkpOwogCiAgICAgRmxvYXRQb2ludCBtX3ZlbG9jaXR5OwotICAg
IEludFBvaW50IG1fY3VtdWxhdGl2ZVNjcm9sbDsKKyAgICBJbnRTaXplIG1fY3VtdWxhdGl2ZVNj
cm9sbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlV2hlZWxGbGluZ1Bh
cmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZmM4YzExMTdmMDE0
N2VhYTFiYzZlN2QzODcxODljMDFhZGRjNjYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVXaGVlbEZsaW5nUGFy
YW1ldGVycy5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnNfaAorI2RlZmluZSBDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzX2gK
KworI2luY2x1ZGUgIkNyb3NzVGhyZWFkQ29waWVyLmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgi
CisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3Qg
Q0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyB7CisgICAgRmxvYXRTaXplIGRlbHRhOworICAg
IEludFBvaW50IHBvaW50OworICAgIEludFBvaW50IGdsb2JhbFBvaW50OworICAgIGludCBtb2Rp
ZmllcnM7CisgICAgSW50U2l6ZSBjdW11bGF0aXZlU2Nyb2xsOworICAgIGRvdWJsZSBzdGFydFRp
bWU7CisKKyAgICBDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKCkKKyAgICAgICAgOiBtb2Rp
ZmllcnMoMCkKKyAgICAgICAgLCBzdGFydFRpbWUoMCkKKyAgICB7CisgICAgfQorfTsKKworLy8g
TGV0IGZsaW5nIHBhcmFtZXRlcnMgdGhyb3VnaCB3aXRob3V0IGFueSBjaGFuZ2VzLgordGVtcGxh
dGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgQ0NBY3RpdmVX
aGVlbEZsaW5nUGFyYW1ldGVycz4gOiBwdWJsaWMgQ3Jvc3NUaHJlYWRDb3BpZXJQYXNzVGhyb3Vn
aDxDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzPiB7Cit9OworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NH
ZXN0dXJlQ3VydmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDR2VzdHVyZUN1cnZlLmgKaW5kZXggNWQ5OGFmNGM2YzkyYjA3NDgyODYyYzYzNTY1OWFk
M2Q4MmFlYzczZS4uNDdmMjI3N2U2YmU3ZmNkOWIzMDA4ZThlNmQxNGZjYWI4OWMzOTdkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NH
ZXN0dXJlQ3VydmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oCkBAIC0yNywxMyArMjcsMTMgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBJbnRQb2ludDsKK2NsYXNzIEludFNpemU7CiAKIGNsYXNzIEND
R2VzdHVyZUN1cnZlVGFyZ2V0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ0dlc3R1cmVDdXJ2
ZVRhcmdldCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFBvaW50
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBJbnRTaXplJikgPSAwOwog
ICAgIC8vIEZJWE1FOiBhZGQgaW50ZXJmYWNlcyBmb3Igc2Nyb2xsKCksIGV0Yy4KIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
SW5wdXRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0lucHV0SGFuZGxlci5oCmluZGV4IDc2NjA4ZDlmYzFkMGRhMTM5YTQ5MzBiYzUwNDdj
MDhhZWI4YjJkZjQuLjJkZmM1ZDEwOThmOWYzNWRiZDFiNGZlNDkyZGQwYzdiNjIwNGM0MDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
SW5wdXRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaApAQCAtMzAsNiArMzAsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb247CitzdHJ1Y3QgQ0NBY3Rp
dmVXaGVlbEZsaW5nUGFyYW1ldGVyczsKIGNsYXNzIENDR2VzdHVyZUN1cnZlVGFyZ2V0OwogY2xh
c3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRTaXplOwpAQCAtNzYsNyArNzcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkdXJhdGlvbikg
PSAwOwogCiAgICAgdmlydHVhbCBDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24qIGFjdGl2ZUdlc3R1
cmVBbmltYXRpb24oKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZUdlc3R1cmVBbmlt
YXRpb24oUGFzc093blB0cjxDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24+KSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBDQ0FjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikgPSAwOwogCiAgICAgLy8gUmVxdWVzdCBhbm90aGVyIGNh
bGxiYWNrIHRvIENDSW5wdXRIYW5kbGVyOjphbmltYXRlKCkuCiAgICAgdmlydHVhbCB2b2lkIHNj
aGVkdWxlQW5pbWF0aW9uKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5k
ZXggMDI5MGE3NTM5NGU2NjUyODc4N2EzYmNkNDljOGU2ZmY3OTZhNGY4Yy4uODMzZDE2NjVkMWYy
M2JkNzgwZmUwNWQxMjJhMDFhOGFlZDg5YmNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwCkBAIC0xNzksMTEgKzE3OSwxNiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGVsZXRl
Q29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChUZXh0dXJlQWxsb2NhdG9yKiBhbGxvYwogICAg
ICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmV2aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMo
YWxsb2NhdG9yKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUFuaW1hdGlvbnMo
ZG91YmxlIHdhbGxDbG9ja1RpbWUpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6d2lsbEJlZ2luRnJh
bWUoKQoreworICAgIG1fY2xpZW50LT53aWxsQmVnaW5GcmFtZSgpOworfQorCit2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6dXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgd2FsbENsb2NrRnJhbWVCZWdpblRp
bWUsIGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkKIHsKICAgICBtX2FuaW1hdGluZyA9
IHRydWU7Ci0gICAgbV9jbGllbnQtPnVwZGF0ZUFuaW1hdGlvbnMod2FsbENsb2NrVGltZSk7Ci0g
ICAgYW5pbWF0ZUxheWVycyhtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7CisgICAgbV9j
bGllbnQtPnVwZGF0ZUFuaW1hdGlvbnMod2FsbENsb2NrRnJhbWVCZWdpblRpbWUsIG1vbm90b25p
Y0ZyYW1lQmVnaW5UaW1lKTsKKyAgICBhbmltYXRlTGF5ZXJzKG1vbm90b25pY0ZyYW1lQmVnaW5U
aW1lKTsKICAgICBtX2FuaW1hdGluZyA9IGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oCmluZGV4IDczOTBlYzM0YTllN2I4ZDAzMDZiM2Q2Njk0NjExZTAwYTRkNzI3NjQuLmY0
ZDM3ZTZhZjRmNzE2ODRlMDUxYjQ1OTFjMzEzYmMwMmE3MmMyODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5oCkBAIC00Miw2ICs0Miw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgQ0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczsKIGNsYXNzIENDTGF5ZXJUcmVlSG9z
dEltcGw7CiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7
CkBAIC01MiwxMyArNTMsMTcgQEAgY2xhc3MgVGV4dHVyZU1hbmFnZXI7CiAKIGNsYXNzIENDTGF5
ZXJUcmVlSG9zdENsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1h
dGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSA9IDA7CisgICAgLy8gQ2FsbGVkIG9ubHkgaW4g
dGhyZWFkZWQgbW9kZS4KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlZ2luRnJhbWUoKSA9IDA7CisK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgd2FsbENsb2NrRnJhbWVC
ZWdpblRpbWUsIGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBsYXlvdXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2Nh
bGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkgPSAwOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dCgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3VjY2VzcykgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBDQ0FjdGl2ZVdoZWVsRmxp
bmdQYXJhbWV0ZXJzJiBwYXJhbXMpID0gMDsKIAogICAgIC8vIFVzZWQgb25seSBpbiB0aGUgc2lu
Z2xlLXRocmVhZGVkIHBhdGguCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCkg
PSAwOwpAQCAtMTI5LDcgKzEzNCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBhbnlMYXll
clRyZWVIb3N0SW5zdGFuY2VFeGlzdHMoKTsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdCBpbnRl
cmZhY2UgdG8gQ0NQcm94eS4KLSAgICB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIHdhbGxD
bG9ja1RpbWUpOworICAgIHZvaWQgd2lsbEJlZ2luRnJhbWUoKTsKKyAgICB2b2lkIHVwZGF0ZUFu
aW1hdGlvbnMoZG91YmxlIHdhbGxDbG9ja0ZyYW1lQmVnaW5UaW1lLCBkb3VibGUgbW9ub3Rvbmlj
RnJhbWVCZWdpblRpbWUpOwogICAgIHZvaWQgbGF5b3V0KCk7CiAgICAgdm9pZCBiZWdpbkNvbW1p
dE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKik7CiAgICAgdm9pZCBmaW5pc2hDb21t
aXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopOwpAQCAtMTQ3LDYgKzE1Myw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIHsgbV9jbGllbnQtPmRp
ZENvbW1pdEFuZERyYXdGcmFtZSgpOyB9CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJz
KCkgeyBtX2NsaWVudC0+ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOyB9CiAgICAgdm9pZCBkZWxl
dGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2
b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBDQ0FjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzJiBwYXJhbXMpIHsgbV9jbGllbnQtPnRyYW5zZmVyQWN0aXZlV2hlZWxG
bGluZ0FuaW1hdGlvbihwYXJhbXMpOyB9CisKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdlIHNo
b3VsZCBhYm9ydCB0aGlzIGZyYW1lIGR1ZSB0byBpbml0aWFsaXphdGlvbiBmYWlsdXJlLgogICAg
IGJvb2wgdXBkYXRlTGF5ZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aAppbmRleCAzM2M5ZTkxNjc1ZWZhMGI1MjUwNWYyYzg0MWFlMzgwOTA1M2U5MzQ5Li4wM2EwZTFk
OWJhN2QzMzc5NTI3OTIzMzFkMjRiNTBkZjc0ZjRkOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjsKK2NsYXNzIENDQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnM7CiBjbGFzcyBDQ0NvbXBsZXRpb25FdmVudDsKIGNsYXNzIENDUGFnZVNjYWxl
QW5pbWF0aW9uOwogY2xhc3MgQ0NMYXllckltcGw7CkBAIC01NSw2ICs1Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NP
d25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb25Pbklt
cGxUaHJlYWQoY29uc3QgQ0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYgcGFyYW1zKSA9IDA7
CiB9OwogCiAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsIG93bnMgdGhlIENDTGF5ZXJJbXBsIHRyZWUg
YXMgd2VsbCBhcyBhc3NvY2lhdGVkIHJlbmRlcmluZyBzdGF0ZQpAQCAtNzUsNiArNzcsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZUVuZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlv
biwgYm9vbCBhbmNob3JQb2ludCwgZmxvYXQgcGFnZVNjYWxlLCBkb3VibGUgc3RhcnRUaW1lLCBk
b3VibGUgZHVyYXRpb24pOwogICAgIHZpcnR1YWwgQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKiBh
Y3RpdmVHZXN0dXJlQW5pbWF0aW9uKCkgeyByZXR1cm4gbV9hY3RpdmVHZXN0dXJlQW5pbWF0aW9u
LmdldCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1h
dGlvbihjb25zdCBDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJhbXMpIHsgbV9jbGll
bnQtPnRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbk9uSW1wbFRocmVhZChwYXJhbXMp
OyB9CisKICAgICAvLyBUbyBjbGVhciBhbiBhY3RpdmUgYW5pbWF0aW9uLCBwYXNzIG51bGxwdHIu
CiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0cjxD
Q0FjdGl2ZUdlc3R1cmVBbmltYXRpb24+KTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmlt
YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggMmQ5
ZTBmMzQxZmU3MjU3ZDM0Nzk4ZjZjZjFiOGQ0ZGY4NTlkMjBiMC4uZWVjNmNkOTE5NWE5NmU3OTA3
NzI1ODhkNTcwNGEzYjQ5NzZmZWVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5jcHAKQEAgLTI2OCw2ICsyNjgsMTMgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpw
b3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHIKICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldEFuaW1hdGlvbkV2ZW50cyhldmVudHMsIHdhbGxDbG9ja1Rp
bWUpOwogfQogCit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnRyYW5zZmVyQWN0aXZlV2hlZWxG
bGluZ0FuaW1hdGlvbk9uSW1wbFRocmVhZChjb25zdCBDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0
ZXJzJiBwYXJhbXMpCit7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKyAg
ICBEZWJ1Z1Njb3BlZFNldE1haW5UaHJlYWQgbWFpbjsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnRy
YW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihwYXJhbXMpOworfQorCiAvLyBDYWxsZWQg
YnkgdGhlIGxlZ2FjeSBzY2hlZHVsaW5nIHBhdGggKGUuZy4gd2hlcmUgcmVuZGVyX3dpZGdldCBk
b2VzIHRoZSBzY2hlZHVsaW5nKQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVJ
bW1lZGlhdGVseSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXgg
ZWJiZDk2ZTJjMzg4MjIxODlkMmI5MGIyMWU2ZDk3NmEzNjdjMGU5Yy4uOGEyMGZhNzY3NTg1Yzc5
ODAzZDkwN2Q3YTY0NjljNGZmZTYzOTZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuaApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IENDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CiAK
IGNsYXNzIENDU2luZ2xlVGhyZWFkUHJveHkgOiBwdWJsaWMgQ0NQcm94eSwgQ0NMYXllclRyZWVI
b3N0SW1wbENsaWVudCB7CkBAIC02Nyw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSB7IG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVl
ZHNDb21taXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVh
ZCgpIHsgbV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOyB9CiAgICAgdmlydHVhbCB2
b2lkIHBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0
cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uT25JbXBsVGhyZWFk
KGNvbnN0IENDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBhcmFtcyk7CiAKICAgICAvLyBD
YWxsZWQgYnkgdGhlIGxlZ2FjeSBwYXRoIHdoZXJlIFJlbmRlcldpZGdldCBkb2VzIHRoZSBzY2hl
ZHVsaW5nLgogICAgIHZvaWQgY29tcG9zaXRlSW1tZWRpYXRlbHkoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHAKaW5kZXggZGNmYTNiZDM1ZWY4NTE3NjgxNjY5MTRmNDNkZWEzMDhjZWVmYmFh
NS4uOTllZTNjNjk4YTg0ZTg5Njc4OTVkNDY1MTk4NWM5MTI2NTIwOTNlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2luY2x1ZGUgImNjL0NDQWN0
aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJjYy9DQ0RlbGF5QmFzZWRUaW1l
U291cmNlLmgiCiAjaW5jbHVkZSAiY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKQEAgLTI5MCwxNyArMjkxLDI0IEBAIHZvaWQgQ0NUaHJl
YWRQcm94eTo6b25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCkKIHZvaWQgQ0NUaHJl
YWRQcm94eTo6c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKQogewogICAgIEFTU0VSVChpc0lt
cGxUaHJlYWQoKSk7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29t
bWl0T25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CisgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1Ro
cmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCIpOwogICAgIG1fc2NoZWR1bGVy
T25JbXBsVGhyZWFkLT5zZXROZWVkc0NvbW1pdCgpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6
OnBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxD
Q0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnRzLCBkb3VibGUgd2FsbENsb2NrVGltZSkKIHsK
ICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFBy
b3h5Ojpwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkIiwgdGhpcywg
MCk7CisgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5Ojpwb3N0QW5pbWF0aW9u
RXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkIik7CiAgICAgbV9tYWluVGhyZWFkUHJveHkt
PnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6c2V0QW5p
bWF0aW9uRXZlbnRzLCBldmVudHMsIHdhbGxDbG9ja1RpbWUpKTsKIH0KIAordm9pZCBDQ1RocmVh
ZFByb3h5Ojp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb25PbkltcGxUaHJlYWQoY29u
c3QgQ0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYgcGFyYW1zKQoreworICAgIEFTU0VSVChp
c0ltcGxUaHJlYWQoKSk7CisgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5Ojp0
cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb25PbkltcGxUaHJlYWQiKTsKKyAgICBtX21h
aW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVh
ZFByb3h5Ojp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24sIHBhcmFtcykpOworfQor
CiB2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3KCkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwpAQCAtMzk5LDcgKzQwNyw4IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2No
ZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpCiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVh
ZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIik7CiAgICAgQVNTRVJUKCFtX3BlbmRp
bmdCZWdpbkZyYW1lUmVxdWVzdCk7CiAgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QgPSBh
ZG9wdFB0cihuZXcgQmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKCkpOwotICAgIG1fcGVuZGluZ0Jl
Z2luRnJhbWVSZXF1ZXN0LT5mcmFtZUJlZ2luVGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgbV9w
ZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QtPndhbGxDbG9ja0ZyYW1lQmVnaW5UaW1lID0gY3VycmVu
dFRpbWUoKTsKKyAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+bW9ub3RvbmljRnJhbWVC
ZWdpblRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICBtX3BlbmRpbmdC
ZWdpbkZyYW1lUmVxdWVzdC0+c2Nyb2xsSW5mbyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByb2Nl
c3NTY3JvbGxEZWx0YXMoKTsKIAogICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVh
dGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWUpKTsKQEAgLTQ0
MCw4ICs0NDksMTAgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKCkKICAgICAvLyBS
ZS1kbyB0aGUgY29tbWl0IGZsb3cgc28gdGhhdCB3ZSBkb24ndCBzZW5kIHRoZSBzY3JvbGxJbmZv
IG9uIHRoZSBCRkFDIG1lc3NhZ2UuCiAgICAgbV9sYXllclRyZWVIb3N0LT5hcHBseVNjcm9sbEFu
ZFNjYWxlKCpyZXF1ZXN0LT5zY3JvbGxJbmZvKTsKIAorICAgIG1fbGF5ZXJUcmVlSG9zdC0+d2ls
bEJlZ2luRnJhbWUoKTsKKwogICAgIC8vIEZJWE1FOiByZWNyZWF0ZSB0aGUgY29udGV4dCBpZiBp
dCB3YXMgcmVxdWVzdGVkIGJ5IHRoZSBpbXBsIHRocmVhZC4KLSAgICBtX2xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUFuaW1hdGlvbnMocmVxdWVzdC0+ZnJhbWVCZWdpblRpbWUpOworICAgIG1fbGF5ZXJU
cmVlSG9zdC0+dXBkYXRlQW5pbWF0aW9ucyhyZXF1ZXN0LT53YWxsQ2xvY2tGcmFtZUJlZ2luVGlt
ZSwgcmVxdWVzdC0+bW9ub3RvbmljRnJhbWVCZWdpblRpbWUpOwogICAgIG1fbGF5ZXJUcmVlSG9z
dC0+bGF5b3V0KCk7CiAKICAgICAvLyBDbGVhciB0aGUgY29tbWl0IGZsYWcgYWZ0ZXIgdXBkYXRp
bmcgYW5pbWF0aW9ucyBhbmQgbGF5b3V0IGhlcmUgLS0tIG9iamVjdHMgdGhhdCBvbmx5CkBAIC02
NjgsNiArNjc5LDEzIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6dHJ5VG9SZWNyZWF0ZUNvbnRleHQo
KQogICAgICAgICBtX2NvbnRleHRSZWNyZWF0aW9uVGltZXIuY2xlYXIoKTsKIH0KIAordm9pZCBD
Q1RocmVhZFByb3h5Ojp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgQ0NB
Y3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYgcGFyYW1zKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5Ojp0cmFuc2Zl
ckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24iKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnRyYW5z
ZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihwYXJhbXMpOworfQorCiB2b2lkIENDVGhyZWFk
UHJveHk6OmluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21w
bGV0aW9uKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1w
bE9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDQ4
NjFmNzkwOTI2MDFjMDA1YTA1MDUyMGQ1NDdlZDIxY2RmOWQ3YTAuLjcyMTE4NWVjYmMxMjE5MjI0
YWY2ZmE5M2ExNTk2ZGI2Y2M0OGMzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTM2
LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDQ0FjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzOwogY2xhc3MgQ0NJbnB1dEhhbmRsZXI7CiBjbGFzcyBDQ0xheWVyVHJl
ZUhvc3Q7CiBjbGFzcyBDQ1NjaGVkdWxlcjsKQEAgLTc2LDYgKzc3LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0
QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmlt
YXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSk7CisgICAgdmlydHVhbCB2
b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbk9uSW1wbFRocmVhZChjb25zdCBD
Q0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJik7CiAKICAgICAvLyBDQ1NjaGVkdWxlckNsaWVu
dCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCk7CkBAIC05Myw4ICs5
NSw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBTZXQgb24gaW1wbCB0aHJlYWQsIHJlYWQgb24gbWFp
biB0aHJlYWQuCiAgICAgc3RydWN0IEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZSB7Ci0gICAgICAg
IEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZSgpIDogZnJhbWVCZWdpblRpbWUoKSB7IH0KLSAgICAg
ICAgZG91YmxlIGZyYW1lQmVnaW5UaW1lOworICAgICAgICBCZWdpbkZyYW1lQW5kQ29tbWl0U3Rh
dGUoKSA6IHdhbGxDbG9ja0ZyYW1lQmVnaW5UaW1lKDApLCBtb25vdG9uaWNGcmFtZUJlZ2luVGlt
ZSgwKSB7IH0KKyAgICAgICAgZG91YmxlIHdhbGxDbG9ja0ZyYW1lQmVnaW5UaW1lOworICAgICAg
ICBkb3VibGUgbW9ub3RvbmljRnJhbWVCZWdpblRpbWU7CiAgICAgICAgIE93blB0cjxDQ1Njcm9s
bEFuZFNjYWxlU2V0PiBzY3JvbGxJbmZvOwogICAgIH07CiAgICAgT3duUHRyPEJlZ2luRnJhbWVB
bmRDb21taXRTdGF0ZT4gbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3Q7CkBAIC0xMDYsNiArMTA5
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEFuaW1hdGlvbkV2ZW50cyhQYXNzT3duUHRyPEND
QW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpOwogICAgIHZvaWQg
YmVnaW5Db250ZXh0UmVjcmVhdGlvbigpOwogICAgIHZvaWQgdHJ5VG9SZWNyZWF0ZUNvbnRleHQo
KTsKKyAgICB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBDQ0Fj
dGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJhbXMpOwogCiAgICAgLy8gQ2FsbGVkIG9uIGlt
cGwgdGhyZWFkCiAgICAgc3RydWN0IFJlYWRiYWNrUmVxdWVzdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFt
ZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZjI3N2Q1ZmQ0YzY3ZGYxYTI0MWZhNmFhMmNiMjVjYTQ5NjRh
YjRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyc19oCisjZGVmaW5lIFdlYkFjdGl2ZVdo
ZWVsRmxpbmdQYXJhbWV0ZXJzX2gKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgor
CisjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlBvaW50LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworc3RydWN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHsKKyAgICBX
ZWJGbG9hdFBvaW50IGRlbHRhOworICAgIFdlYlBvaW50IHBvaW50OworICAgIFdlYlBvaW50IGds
b2JhbFBvaW50OworICAgIGludCBtb2RpZmllcnM7CisgICAgV2ViU2l6ZSBjdW11bGF0aXZlU2Ny
b2xsOworICAgIGRvdWJsZSBzdGFydFRpbWU7CisKKyAgICBXZWJBY3RpdmVXaGVlbEZsaW5nUGFy
YW1ldGVycygpCisgICAgICAgIDogbW9kaWZpZXJzKDApCisgICAgICAgICwgc3RhcnRUaW1lKDAp
CisgICAgeworICAgIH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJWaWV3LmgKaW5kZXggM2M4YWU0NDg0ZGEyNTNhODM0NWQxZDZmNTJiMTIxYzk0NjU0
ZjEzMy4uNGQ5OTVlMGZmYjUzNjZlYjVmNTZkMTVhZTliN2Y2N2RjOTliNzUxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApAQCAtNTQsNiArNTQsNyBAQCBjbGFzcyBX
ZWJTZXR0aW5nczsKIGNsYXNzIFdlYlNwZWxsQ2hlY2tDbGllbnQ7CiBjbGFzcyBXZWJTdHJpbmc7
CiBjbGFzcyBXZWJWaWV3Q2xpZW50Oworc3RydWN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0
ZXJzOwogc3RydWN0IFdlYk1lZGlhUGxheWVyQWN0aW9uOwogc3RydWN0IFdlYlBsdWdpbkFjdGlv
bjsKIHN0cnVjdCBXZWJQb2ludDsKQEAgLTQyOCw2ICs0MjksMTAgQEAgcHVibGljOgogICAgIC8v
IENhbiBiZSB1c2VkIGZvciBhbGxvY2F0aW5nIHJlc291cmNlcyB0aGF0IHRoZSBjb21wb3NpdG9y
IHdpbGwgbGF0ZXIgYWNjZXNzLgogICAgIHZpcnR1YWwgV2ViR3JhcGhpY3NDb250ZXh0M0QqIHNo
YXJlZEdyYXBoaWNzQ29udGV4dDNEKCkgPSAwOwogCisgICAgLy8gQ2FsbGVkIHRvIGluZm9ybSB0
aGUgV2ViVmlldyB0aGF0IGEgd2hlZWwgZmxpbmcgYW5pbWF0aW9uIHdhcyBzdGFydGVkIGV4dGVy
bmFsbHkgKGZvciBpbnN0YW5jZQorICAgIC8vIGJ5IHRoZSBjb21wb3NpdG9yKSBidXQgbXVzdCBi
ZSBjb21wbGV0ZWQgYnkgdGhlIFdlYlZpZXcuCisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQWN0
aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
cyYpID0gMDsKKwogICAgIC8vIFZpc2liaWxpdHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIFNldHMgdGhlIHZpc2li
aWxpdHkgb2YgdGhlIFdlYlZpZXcuCkBAIC00NTIsNyArNDU3LDYgQEAgcHVibGljOgogICAgIC8v
IFNpbXVsYXRlcyBhIGNvbXBvc2l0b3IgbG9zdCBjb250ZXh0LgogICAgIHZpcnR1YWwgdm9pZCBs
b3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKSA9IDA7CiAKLQogcHJvdGVjdGVkOgog
ICAgIH5XZWJWaWV3KCkge30KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYldpZGdldENsaWVudC5oCmluZGV4IDQ2YjVkOWUyYmE0Mjc3YjhkZjk1N2FhZTYwZDRiYmVl
NDA3NjJlMjMuLmI4ZmJjNDk5NmY2OWQ5YjUzM2FjNGUwNGRmZTk2NzM4ZWQxMGRhOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oCkBAIC00
NSw2ICs0NSwxMCBAQCBzdHJ1Y3QgV2ViU2l6ZTsKIAogY2xhc3MgV2ViV2lkZ2V0Q2xpZW50IHsK
IHB1YmxpYzoKKyAgICAvLyBDYWxsZWQgd2hlbiB0aGUgV2ViV2lkZ2V0IHdpbGwgYmVnaW4gdXBk
YXRpbmcgdGhlIHNjcmVlbi4gT25seSBjYWxsZWQKKyAgICAvLyB3aGVuIHRoZSBXZWJXaWRnZXQg
aXMgc2VsZi1zY2hlZHVsZWQgKHRocmVhZGVkIG1vZGUsIGJ1dCBtb3JlIHNvb24pLgorICAgIHZp
cnR1YWwgdm9pZCB3aWxsQmVnaW5GcmFtZSgpIHsgfQorCiAgICAgLy8gQ2FsbGVkIHdoZW4gYSBy
ZWdpb24gb2YgdGhlIFdlYldpZGdldCBuZWVkcyB0byBiZSByZS1wYWludGVkLgogICAgIHZpcnR1
YWwgdm9pZCBkaWRJbnZhbGlkYXRlUmVjdChjb25zdCBXZWJSZWN0JikgeyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkFjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5OTFlNWZkNWRl
ZjAwYzFkOTcwNzk5NDAyMDlhMzNhYTllMDk1ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1l
dGVycy5oCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiLi4vV2ViQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAppbmRleCBiNGUyNjc1
Y2QyYTRkOWQ2NTMzYTM1NWUwNzk3OTE2OTA5NWVjODIyLi43ZGEzOGQ4ZDRiNDBmMWIzOTc1YzM5
NzUyYzc5N2Y1OWQ4M2Q2ZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCkBAIC0zNSw4ICsz
NSwxMCBAQAogI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIK
ICNpbmNsdWRlICJjYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uaCIKKyNpbmNsdWRlICJjYy9D
Q0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgog
I2luY2x1ZGUgInBsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNjIsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX2N1cnZlLT5hcHBseSh0aW1lLCB0aGlzKTsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50UG9pbnQmIHNjcm9sbERlbHRhKQorICAgIHZpcnR1
YWwgdm9pZCBzY3JvbGxCeShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChtX3RhcmdldCk7CiAgICAgICAgIG1fdGFyZ2V0LT5zY3JvbGxCeShzY3JvbGxE
ZWx0YSk7CkBAIC0xNTQsMjQgKzE1NiwzNCBAQCB2b2lkIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGV2ZW50KQogewog
ICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fY2xpZW50
KTsKKyAgICBUUkFDRV9FVkVOVDAoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
OjpoYW5kbGVJbnB1dEV2ZW50Iik7CiAKICAgICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bDo6RXZlbnREaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiA9IGhhbmRsZUlucHV0RXZlbnRJbnRlcm5h
bChldmVudCk7CiAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewotICAgIGNhc2UgRGlkSGFuZGxl
OgotICAgICAgICBtX2NsaWVudC0+ZGlkSGFuZGxlSW5wdXRFdmVudCgpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIERpZE5vdEhhbmRsZToKKyAgICBjYXNlIERpZEhhbmRsZTogeworICAgICAg
ICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6
ZGlkSGFuZGxlSW5wdXRFdmVudCIpOworICAgICAgICAgICAgbV9jbGllbnQtPmRpZEhhbmRsZUlu
cHV0RXZlbnQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIERpZE5vdEhh
bmRsZTogeworICAgICAgICBUUkFDRV9FVkVOVDEoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsOjpkaWROb3RIYW5kbGUiLCAic2VuZFRvV2lkZ2V0IiwgdHJ1ZSk7CiAgICAgICAg
IG1fY2xpZW50LT5kaWROb3RIYW5kbGVJbnB1dEV2ZW50KHRydWUgLyogc2VuZFRvV2lkZ2V0ICov
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEcm9wRXZlbnQ6CisgICAgfQorICAgIGNhc2Ug
RHJvcEV2ZW50OiB7CisgICAgICAgIFRSQUNFX0VWRU5UMSgiY2MiLCAiV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGw6OmRpZE5vdEhhbmRsZSIsICJzZW5kVG9XaWRnZXQiLCBmYWxzZSk7CiAg
ICAgICAgIG1fY2xpZW50LT5kaWROb3RIYW5kbGVJbnB1dEV2ZW50KGZhbHNlIC8qIHNlbmRUb1dp
ZGdldCAqLyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBkZWZhdWx0OiBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CiB9CiAKIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpF
dmVudERpc3Bvc2l0aW9uIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVJbnB1
dEV2ZW50SW50ZXJuYWwoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCiB7CisgICAgVFJBQ0Vf
RVZFTlQwKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRF
dmVudEludGVybmFsIik7CiAgICAgaWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6TW91
c2VXaGVlbCkgeworICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIk1vdXNlV2hlZWwiKTsKICAg
ICAgICAgY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50JiB3aGVlbEV2ZW50ID0gKnN0YXRpY19jYXN0
PGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCo+KCZldmVudCk7CiAgICAgICAgIENDSW5wdXRIYW5k
bGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsU3RhdHVzID0gbV9pbnB1dEhhbmRsZXJDbGll
bnQtPnNjcm9sbEJlZ2luKEludFBvaW50KHdoZWVsRXZlbnQueCwgd2hlZWxFdmVudC55KSwgQ0NJ
bnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKTsKICAgICAgICAgc3dpdGNoIChzY3JvbGxTdGF0dXMp
IHsKQEAgLTE4Nyw2ICsxOTksNyBAQCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZl
bnREaXNwb3NpdGlvbiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAogICAgICAgICAg
ICAgcmV0dXJuIERpZE5vdEhhbmRsZTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXZlbnQu
dHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW4pIHsKKyAgICAgICAgVFJB
Q0VfRVZFTlQwKCJjYyIsICJTY3JvbGxCZWdpbiIpOwogICAgICAgICBBU1NFUlQoIW1fZ2VzdHVy
ZVNjcm9sbFN0YXJ0ZWQpOwogICAgICAgICBBU1NFUlQoIW1fZXhwZWN0U2Nyb2xsVXBkYXRlRW5k
KTsKICNpZm5kZWYgTkRFQlVHCkBAIC0yMDQsNiArMjE3LDcgQEAgV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OmgKICAgICAgICAgICAgIHJldHVybiBEcm9wRXZlbnQ7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgaWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZSkg
eworICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIlNjcm9sbFVwZGF0ZSIpOwogICAgICAgICBB
U1NFUlQobV9leHBlY3RTY3JvbGxVcGRhdGVFbmQpOwogCiAgICAgICAgIGlmICghbV9nZXN0dXJl
U2Nyb2xsU3RhcnRlZCkKQEAgLTIxMyw2ICsyMjcsNyBAQCBXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6
aAogICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQnkoSW50U2l6ZSgtZ2VzdHVy
ZUV2ZW50LmRlbHRhWCwgLWdlc3R1cmVFdmVudC5kZWx0YVkpKTsKICAgICAgICAgcmV0dXJuIERp
ZEhhbmRsZTsKICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZVNjcm9sbEVuZCkgeworICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIlNjcm9sbEVuZCIp
OwogICAgICAgICBBU1NFUlQobV9leHBlY3RTY3JvbGxVcGRhdGVFbmQpOwogI2lmbmRlZiBOREVC
VUcKICAgICAgICAgbV9leHBlY3RTY3JvbGxVcGRhdGVFbmQgPSBmYWxzZTsKQEAgLTI0Myw5ICsy
NTgsMTEgQEAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24g
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmgKICAgICAgICAgbV9pbnB1dEhhbmRsZXJD
bGllbnQtPnBpbmNoR2VzdHVyZVVwZGF0ZShnZXN0dXJlRXZlbnQuZGVsdGFYLCBJbnRQb2ludChn
ZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpKTsKICAgICAgICAgcmV0dXJuIERpZEhhbmRs
ZTsKICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZs
aW5nU3RhcnQpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJGbGluZ1N0YXJ0Iik7CiAg
ICAgICAgIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50ID0gKnN0YXRpY19jYXN0
PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZldmVudCk7CiAgICAgICAgIHJldHVybiBoYW5kbGVH
ZXN0dXJlRmxpbmcoZ2VzdHVyZUV2ZW50KTsKICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0g
V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsKSB7CisgICAgICAgIFRSQUNFX0VWRU5U
MCgiY2MiLCAiRmxpbmdDYW5jZWwiKTsKICAgICAgICAgaWYgKGNhbmNlbEN1cnJlbnRGbGluZygp
KQogICAgICAgICAgICAgcmV0dXJuIERpZEhhbmRsZTsKICAgICB9IGVsc2UgaWYgKFdlYklucHV0
RXZlbnQ6OmlzS2V5Ym9hcmRFdmVudFR5cGUoZXZlbnQudHlwZSkpIHsKQEAgLTI2Myw3ICsyODAs
MTAgQEAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmgKICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFO
VDAoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxp
bmc6OnN0YXJ0ZWQiKTsKICAgICAgICAgT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBmbGlu
Z0N1cnZlID0gVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoRmxvYXRQ
b2ludCgtZ2VzdHVyZUV2ZW50LmRlbHRhWCwgLWdlc3R1cmVFdmVudC5kZWx0YVkpKTsKICAgICAg
ICAgbV93aGVlbEZsaW5nQW5pbWF0aW9uID0gQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOjpjcmVh
dGUoUGxhdGZvcm1HZXN0dXJlVG9DQ0dlc3R1cmVBZGFwdGVyOjpjcmVhdGUoZmxpbmdDdXJ2ZS5y
ZWxlYXNlKCkpLCB0aGlzKTsKLSAgICAgICAgbV93aGVlbEZsaW5nUG9pbnQgPSBJbnRQb2ludChn
ZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpOworICAgICAgICBtX3doZWVsRmxpbmdQYXJh
bWV0ZXJzLmRlbHRhID0gV2ViRmxvYXRQb2ludChnZXN0dXJlRXZlbnQuZGVsdGFYLCBnZXN0dXJl
RXZlbnQuZGVsdGFZKTsKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5wb2ludCA9IFdl
YlBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQueSk7CisgICAgICAgIG1fd2hlZWxG
bGluZ1BhcmFtZXRlcnMuZ2xvYmFsUG9pbnQgPSBXZWJQb2ludChnZXN0dXJlRXZlbnQuZ2xvYmFs
WCwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFkpOworICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJz
Lm1vZGlmaWVycyA9IGdlc3R1cmVFdmVudC5tb2RpZmllcnM7CiAgICAgICAgIG1faW5wdXRIYW5k
bGVyQ2xpZW50LT5zY2hlZHVsZUFuaW1hdGlvbigpOwogICAgICAgICByZXR1cm4gRGlkSGFuZGxl
OwogICAgIH0KQEAgLTI5MiwxMSArMzEyLDE0IEBAIHZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGw6OmFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUpCiAgICAgaWYgKCFtX3doZWVs
RmxpbmdBbmltYXRpb24pCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICghbV93aGVlbEZsaW5n
UGFyYW1ldGVycy5zdGFydFRpbWUpCisgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuc3Rh
cnRUaW1lID0gbW9ub3RvbmljVGltZTsKKwogICAgIGlmIChtX3doZWVsRmxpbmdBbmltYXRpb24t
PmFuaW1hdGUobW9ub3RvbmljVGltZSkpCiAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5z
Y2hlZHVsZUFuaW1hdGlvbigpOwogICAgIGVsc2UgewogICAgICAgICBUUkFDRV9FVkVOVF9JTlNU
QU5UMCgiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmFuaW1hdGU6OmZsaW5n
T3ZlciIpOwotICAgICAgICBtX3doZWVsRmxpbmdBbmltYXRpb24uY2xlYXIoKTsKKyAgICAgICAg
Y2FuY2VsQ3VycmVudEZsaW5nKCk7CiAgICAgfQogfQogCkBAIC0zMDUsMzkgKzMyOCw1MiBAQCBi
b29sIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpjYW5jZWxDdXJyZW50RmxpbmcoKQog
ICAgIGJvb2wgaGFkRmxpbmdBbmltYXRpb24gPSBtX3doZWVsRmxpbmdBbmltYXRpb247CiAgICAg
VFJBQ0VfRVZFTlRfSU5TVEFOVDEoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
OjpjYW5jZWxDdXJyZW50RmxpbmciLCAiaGFkRmxpbmdBbmltYXRpb24iLCBoYWRGbGluZ0FuaW1h
dGlvbik7CiAgICAgbV93aGVlbEZsaW5nQW5pbWF0aW9uLmNsZWFyKCk7CisgICAgbV93aGVlbEZs
aW5nUGFyYW1ldGVycyA9IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKCk7CiAgICAgcmV0
dXJuIGhhZEZsaW5nQW5pbWF0aW9uOwogfQogCi12b2lkIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsOjpzY3JvbGxCeShjb25zdCBJbnRQb2ludCYgaW5jcmVtZW50KQordm9pZCBXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgaW5jcmVtZW50
KQogewotICAgIGlmIChpbmNyZW1lbnQgPT0gSW50UG9pbnQ6Onplcm8oKSkKKyAgICBpZiAoaW5j
cmVtZW50LmlzWmVybygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBUUkFDRV9FVkVOVDIoImNj
IiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSIsICJ4IiwgaW5jcmVt
ZW50LngoKSwgInkiLCBpbmNyZW1lbnQueSgpKTsKLQotICAgIFdlYk1vdXNlV2hlZWxFdmVudCBl
dmVudDsKLSAgICBldmVudC50eXBlID0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbDsKLSAgICBl
dmVudC5kZWx0YVggPSAtaW5jcmVtZW50LngoKTsKLSAgICBldmVudC5kZWx0YVkgPSAtaW5jcmVt
ZW50LnkoKTsKLSAgICBldmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gdHJ1ZTsKLSAg
ICBldmVudC54ID0gbV93aGVlbEZsaW5nUG9pbnQueCgpOwotICAgIGV2ZW50LnkgPSBtX3doZWVs
RmxpbmdQb2ludC55KCk7Ci0KLSAgICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZl
bnREaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiA9IGhhbmRsZUlucHV0RXZlbnRJbnRlcm5hbChldmVu
dCk7CisgICAgVFJBQ0VfRVZFTlQyKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bDo6c2Nyb2xsQnkiLCAid2lkdGgiLCBpbmNyZW1lbnQud2lkdGgoKSwgImhlaWdodCIsIGluY3Jl
bWVudC5oZWlnaHQoKSk7CisgICAgV2ViTW91c2VXaGVlbEV2ZW50IHN5bnRoZXRpY1doZWVsOwor
ICAgIHN5bnRoZXRpY1doZWVsLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsOworICAg
IHN5bnRoZXRpY1doZWVsLmRlbHRhWCA9IC1pbmNyZW1lbnQud2lkdGgoKTsKKyAgICBzeW50aGV0
aWNXaGVlbC5kZWx0YVkgPSAtaW5jcmVtZW50LmhlaWdodCgpOworICAgIHN5bnRoZXRpY1doZWVs
Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB0cnVlOworICAgIHN5bnRoZXRpY1doZWVsLngg
PSBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnBvaW50Lng7CisgICAgc3ludGhldGljV2hlZWwueSA9
IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMucG9pbnQueTsKKyAgICBzeW50aGV0aWNXaGVlbC5nbG9i
YWxYID0gbV93aGVlbEZsaW5nUGFyYW1ldGVycy5nbG9iYWxQb2ludC54OworICAgIHN5bnRoZXRp
Y1doZWVsLmdsb2JhbFkgPSBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmdsb2JhbFBvaW50Lnk7Cisg
ICAgc3ludGhldGljV2hlZWwubW9kaWZpZXJzID0gbV93aGVlbEZsaW5nUGFyYW1ldGVycy5tb2Rp
ZmllcnM7CisKKyAgICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3Np
dGlvbiBkaXNwb3NpdGlvbiA9IGhhbmRsZUlucHV0RXZlbnRJbnRlcm5hbChzeW50aGV0aWNXaGVl
bCk7CiAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewogICAgIGNhc2UgRGlkSGFuZGxlOgorICAg
ICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGwud2lkdGggKz0gLWlu
Y3JlbWVudC53aWR0aCgpOworICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmN1bXVsYXRp
dmVTY3JvbGwuaGVpZ2h0ICs9IC1pbmNyZW1lbnQuaGVpZ2h0KCk7CiAgICAgY2FzZSBEcm9wRXZl
bnQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGlkTm90SGFuZGxlOgogICAgICAgICBUUkFD
RV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNj
cm9sbEJ5OjpBYm9ydEZsaW5nIik7Ci0gICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBnb3QgYSBEaWRO
b3RIYW5kbGUsIHRoYXQgbWVhbnMgd2UgbmVlZCB0byBkZWxpdmVyIHdoZWVscyBvbiB0aGUgbWFp
biB0aHJlYWQuCisgICAgICAgIC8vIElmIHdlIGdvdCBhIERpZE5vdEhhbmRsZSwgdGhhdCBtZWFu
cyB3ZSBuZWVkIHRvIGRlbGl2ZXIgd2hlZWxzIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAg
Ly8gSW4gdGhpcyBjYXNlIHdlIG5lZWQgdG8gc2NoZWR1bGUgYSBjb21taXQgYW5kIHRyYW5zZmVy
IHRoZSBmbGluZyBjdXJ2ZSBvdmVyIHRvIHRoZSBtYWluCiAgICAgICAgIC8vIHRocmVhZCBhbmQg
cnVuIHRoZSByZXN0IG9mIHRoZSB3aGVlbHMgZnJvbSB0aGVyZS4KICAgICAgICAgLy8gVGhpcyBj
YW4gaGFwcGVuIHdoZW4gZmxpbmdpbmcgYSBwYWdlIHRoYXQgY29udGFpbnMgYSBzY3JvbGxhYmxl
IHN1YmFyZWEgdGhhdCB3ZSBjYW4ndAogICAgICAgICAvLyBzY3JvbGwgb24gdGhlIHRocmVhZCBp
ZiB0aGUgZmxpbmcgc3RhcnRzIG91dHNpZGUgdGhlIHN1YmFyZWEgYnV0IHRoZW4gaXMgZmx1bmcg
InVuZGVyIiB0aGUKICAgICAgICAgLy8gcG9pbnRlci4KLSAgICAgICAgLy8gRm9yIG5vdywganVz
dCBhYm9ydCB0aGUgZmxpbmcuCisgICAgICAgIENDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMg
cGFyYW1zOworICAgICAgICBwYXJhbXMuZGVsdGEgPSBGbG9hdFNpemUobV93aGVlbEZsaW5nUGFy
YW1ldGVycy5kZWx0YS54LCBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmRlbHRhLnkpOworICAgICAg
ICBwYXJhbXMucG9pbnQgPSBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnBvaW50OworICAgICAgICBw
YXJhbXMuZ2xvYmFsUG9pbnQgPSBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmdsb2JhbFBvaW50Owor
ICAgICAgICBwYXJhbXMubW9kaWZpZXJzID0gbV93aGVlbEZsaW5nUGFyYW1ldGVycy5tb2RpZmll
cnM7CisgICAgICAgIHBhcmFtcy5jdW11bGF0aXZlU2Nyb2xsID0gbV93aGVlbEZsaW5nUGFyYW1l
dGVycy5jdW11bGF0aXZlU2Nyb2xsOworICAgICAgICBwYXJhbXMuc3RhcnRUaW1lID0gbV93aGVl
bEZsaW5nUGFyYW1ldGVycy5zdGFydFRpbWU7CisgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50
LT50cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24ocGFyYW1zKTsKICAgICAgICAgY2Fu
Y2VsQ3VycmVudEZsaW5nKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsLmgKaW5kZXggYzlmZjVlMzUxMTkxNTRiN2FhZDhmZDJkYTRhZTZlM2Q0ODc1MGY2NC4u
YmNkNTgwZDBhNWQyOTdkYTRiZGUyN2QyMzdmOWZjN2MyNmQ3NGU5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsX2gKICNkZWZpbmUgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxfaAogCi0jaW5j
bHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgpAQCAtNDEsNiArNDEs
NyBAQCBjbGFzcyBNdXRleDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW50U2l6
ZTsKIGNsYXNzIENDR2VzdHVyZUN1cnZlVGFyZ2V0OwogY2xhc3MgQ0NJbnB1dEhhbmRsZXJDbGll
bnQ7CiBjbGFzcyBDQ1RocmVhZDsKQEAgLTY3LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKIAogICAgIC8vIFdlYkNvcmU6
OkNDR2VzdHVyZUN1cnZlVGFyZ2V0IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxCeShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwoV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGll
bnQqKTsKQEAgLTgzLDcgKzg0LDggQEAgcHJpdmF0ZToKICAgICBib29sIGNhbmNlbEN1cnJlbnRG
bGluZygpOwogCiAgICAgT3duUHRyPFdlYkNvcmU6OkNDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbj4g
bV93aGVlbEZsaW5nQW5pbWF0aW9uOwotICAgIFdlYkNvcmU6OkludFBvaW50IG1fd2hlZWxGbGlu
Z1BvaW50OyAvLyBQb2ludGVyIHBvc2l0aW9uIGZvciB0aGUgY3VycmVudCBmbGluZy4KKyAgICAv
LyBQYXJhbWV0ZXJzIGZvciB0aGUgYWN0aXZlIGZsaW5nIGFuaW1hdGlvbiwgc3RvcmVkIGluIGNh
c2Ugd2UgbmVlZCB0byB0cmFuc2ZlciBpdCBvdXQgbGF0ZXIuCisgICAgV2ViQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnMgbV93aGVlbEZsaW5nUGFyYW1ldGVyczsKIAogICAgIFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJDbGllbnQqIG1fY2xpZW50OwogICAgIGludCBtX2lkZW50aWZpZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4
IDMzMTRkYzJmNTQ0YzFjYThjNTljNDcyYmMwMjVlOGMwMDdmNzAxZjAuLmI5OWRhNmU4ZjUzZGZh
ZjM2N2E2N2VmMmE5YmEwNWY1Y2Q4NDE5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0xMzAsOSArMTMwLDkgQEAgdm9pZCBXZWJM
YXllclRyZWVWaWV3Ojpjb21wb3NpdGUoKQogICAgICAgICBtX3ByaXZhdGUtPmNvbXBvc2l0ZSgp
OwogfQogCi12b2lkIFdlYkxheWVyVHJlZVZpZXc6OnVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZy
YW1lQmVnaW5UaW1lKQordm9pZCBXZWJMYXllclRyZWVWaWV3Ojp1cGRhdGVBbmltYXRpb25zKGRv
dWJsZSB3YWxsQ2xvY2tGcmFtZUJlZ2luVGltZSwgZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5U
aW1lKQogewotICAgIG1fcHJpdmF0ZS0+dXBkYXRlQW5pbWF0aW9ucyhmcmFtZUJlZ2luVGltZSk7
CisgICAgbV9wcml2YXRlLT51cGRhdGVBbmltYXRpb25zKHdhbGxDbG9ja0ZyYW1lQmVnaW5UaW1l
LCBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7CiB9CiAKIGJvb2wgV2ViTGF5ZXJUcmVlVmlldzo6
Y29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBXZWJSZWN0JiByZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0lt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwu
Y3BwCmluZGV4IDMzNTg3OWI2NjA1MzRhNGJjNzU3ZTUxNzc0ZjMyZmZkYzY3ZTdmZWMuLjg3OWRj
OWRkOTRhNmEyOGUwNTM0ODBhNzQ4ODUyN2NiYWYxOTQ5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKQEAgLTI5LDg4ICsy
OSwyMDggQEAKICNpbmNsdWRlICJDQ1RocmVhZEltcGwuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAi
Y2MvQ0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFk
UHJveHkuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViTGF5ZXIuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllclRyZWVW
aWV3LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oIgogI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJUaHJlYWQu
aCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Cit1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3Mg
Q0NMYXllclRyZWVIb3N0Q2xpZW50VG9XZWJMYXllclRyZWVWaWV3Q2xpZW50QWRhcHRlciA6IHB1
YmxpYyBDQ0xheWVyVHJlZUhvc3RDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPENDTGF5ZXJUcmVlSG9zdENsaWVudFRvV2ViTGF5ZXJUcmVlVmlld0NsaWVudEFkYXB0ZXI+
IGNyZWF0ZShXZWJMYXllclRyZWVWaWV3Q2xpZW50KiBjbGllbnQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJUcmVlSG9zdENsaWVudFRvV2ViTGF5ZXJUcmVlVmll
d0NsaWVudEFkYXB0ZXIoY2xpZW50KSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHdpbGxC
ZWdpbkZyYW1lKCkKKyAgICB7CisgICAgICAgIG1fY2xpZW50LT53aWxsQmVnaW5GcmFtZSgpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSB3YWxsQ2xv
Y2tGcmFtZUJlZ2luVGltZSwgZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKQorICAgIHsK
KyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUFuaW1hdGlvbnMod2FsbENsb2NrRnJhbWVCZWdpblRp
bWUpOworICAgICAgICBtX2NsaWVudC0+dXBkYXRlQW5pbWF0aW9ucyh3YWxsQ2xvY2tGcmFtZUJl
Z2luVGltZSwgbW9ub3RvbmljRnJhbWVCZWdpblRpbWUpOworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKQorICAgIHsKKyAgICAgICAgbV9jbGllbnQtPmxheW91dCgpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUpCisgICAgeworICAgICAgICBtX2Ns
aWVudC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKHNjcm9sbERlbHRhKSwgcGFnZVNjYWxl
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNy
ZWF0ZUNvbnRleHQoKQorICAgIHsKKyAgICAgICAgT3duUHRyPFdlYkdyYXBoaWNzQ29udGV4dDNE
PiB3ZWJDb250ZXh0ID0gYWRvcHRQdHIobV9jbGllbnQtPmNyZWF0ZUNvbnRleHQzRCgpKTsKKyAg
ICAgICAgaWYgKCF3ZWJDb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAg
cmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJv
bVdlYkNvbnRleHQod2ViQ29udGV4dC5yZWxlYXNlKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5k
ZXJEaXJlY3RseVRvSG9zdFdpbmRvdywgZmFsc2UgLyogcHJlc2VydmVEcmF3aW5nQnVmZmVyICov
ICk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dChib29sIHN1
Y2Nlc3MpCisgICAgeworICAgICAgICBtX2NsaWVudC0+ZGlkUmViaW5kR3JhcGhpY3NDb250ZXh0
KHN1Y2Nlc3MpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJh
bWUoKQorICAgIHsKKyAgICAgICAgbV9jbGllbnQtPmRpZENvbW1pdEFuZERyYXdGcmFtZSgpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkKKyAgICB7
CisgICAgICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCkKKyAgICB7CisgICAgICAgIG1fY2xp
ZW50LT5zY2hlZHVsZUNvbXBvc2l0ZSgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB0cmFu
c2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgQ0NBY3RpdmVXaGVlbEZsaW5nUGFy
YW1ldGVycyYgcGFyYW1zKQorICAgIHsKKyAgICAgICAgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFt
ZXRlcnMgd2ViUGFyYW1zOworICAgICAgICB3ZWJQYXJhbXMuZGVsdGEgPSBXZWJGbG9hdFBvaW50
KHBhcmFtcy5kZWx0YS53aWR0aCgpLCBwYXJhbXMuZGVsdGEuaGVpZ2h0KCkpOworICAgICAgICB3
ZWJQYXJhbXMucG9pbnQgPSBwYXJhbXMucG9pbnQ7CisgICAgICAgIHdlYlBhcmFtcy5nbG9iYWxQ
b2ludCA9IHBhcmFtcy5nbG9iYWxQb2ludDsKKyAgICAgICAgd2ViUGFyYW1zLm1vZGlmaWVycyA9
IHBhcmFtcy5tb2RpZmllcnM7CisgICAgICAgIHdlYlBhcmFtcy5jdW11bGF0aXZlU2Nyb2xsID0g
cGFyYW1zLmN1bXVsYXRpdmVTY3JvbGw7CisgICAgICAgIHdlYlBhcmFtcy5zdGFydFRpbWUgPSBw
YXJhbXMuc3RhcnRUaW1lOworICAgICAgICBtX2NsaWVudC0+dHJhbnNmZXJBY3RpdmVXaGVlbEZs
aW5nQW5pbWF0aW9uKHdlYlBhcmFtcyk7CisgICAgfQorCitwcml2YXRlOgorICAgIENDTGF5ZXJU
cmVlSG9zdENsaWVudFRvV2ViTGF5ZXJUcmVlVmlld0NsaWVudEFkYXB0ZXIoV2ViTGF5ZXJUcmVl
Vmlld0NsaWVudCogY2xpZW50KQorICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgfQorCisgICAgV2ViTGF5ZXJUcmVlVmlld0Ns
aWVudCogbV9jbGllbnQ7Cit9OworCiBQYXNzUmVmUHRyPFdlYkxheWVyVHJlZVZpZXdJbXBsPiBX
ZWJMYXllclRyZWVWaWV3SW1wbDo6Y3JlYXRlKFdlYkxheWVyVHJlZVZpZXdDbGllbnQqIGNsaWVu
dCwgY29uc3QgV2ViTGF5ZXImIHJvb3QsIGNvbnN0IFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdz
JiBzZXR0aW5ncykKIHsKLSAgICBSZWZQdHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+IGhvc3QgPSBh
ZG9wdFJlZihuZXcgV2ViTGF5ZXJUcmVlVmlld0ltcGwoY2xpZW50LCBzZXR0aW5ncykpOwotICAg
IGlmICghaG9zdC0+aW5pdGlhbGl6ZSgpKQorICAgIFJlZlB0cjxXZWJMYXllclRyZWVWaWV3SW1w
bD4gaW1wbCA9IGFkb3B0UmVmKG5ldyBXZWJMYXllclRyZWVWaWV3SW1wbChjbGllbnQpKTsKKyAg
ICBpZiAoIWltcGwtPmluaXRpYWxpemUocm9vdCwgc2V0dGluZ3MpKQogICAgICAgICByZXR1cm4g
MDsKLSAgICBob3N0LT5zZXRSb290TGF5ZXIocm9vdCk7Ci0gICAgcmV0dXJuIGhvc3Q7CisgICAg
cmV0dXJuIGltcGw7Cit9CisKK1dlYkxheWVyVHJlZVZpZXdJbXBsOjpXZWJMYXllclRyZWVWaWV3
SW1wbChXZWJMYXllclRyZWVWaWV3Q2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudEFkYXB0
ZXIoQ0NMYXllclRyZWVIb3N0Q2xpZW50VG9XZWJMYXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcjo6
Y3JlYXRlKGNsaWVudCkpCit7CiB9CiAKLVdlYkxheWVyVHJlZVZpZXdJbXBsOjpXZWJMYXllclRy
ZWVWaWV3SW1wbChXZWJMYXllclRyZWVWaWV3Q2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkxheWVy
VHJlZVZpZXc6OlNldHRpbmdzJiBzZXR0aW5ncykgCi0gICAgOiBDQ0xheWVyVHJlZUhvc3QodGhp
cywgc2V0dGluZ3MpCi0gICAgLCBtX2NsaWVudChjbGllbnQpCitib29sIFdlYkxheWVyVHJlZVZp
ZXdJbXBsOjppbml0aWFsaXplKGNvbnN0IFdlYkxheWVyJiByb290LCBjb25zdCBXZWJMYXllclRy
ZWVWaWV3OjpTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CisgICAgbV9ob3N0ID0gQ0NMYXllclRyZWVI
b3N0OjpjcmVhdGUobV9jbGllbnRBZGFwdGVyLmdldCgpLCBzZXR0aW5ncyk7CisgICAgaWYgKCFt
X2hvc3QpCisgICAgICAgIHJldHVybiAwOworICAgIG1faG9zdC0+c2V0Um9vdExheWVyKHJvb3Qp
OworICAgIHJldHVybiBtX2hvc3Q7CiB9CiAKIFdlYkxheWVyVHJlZVZpZXdJbXBsOjp+V2ViTGF5
ZXJUcmVlVmlld0ltcGwoKQogewogfQogCi12b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjp1cGRh
dGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKK3ZvaWQgV2ViTGF5ZXJUcmVlVmll
d0ltcGw6OnNldFJvb3RMYXllcihQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVyKQogewot
ICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUFuaW1hdGlvbnMoZnJh
bWVCZWdpblRpbWUpOworICAgIG1faG9zdC0+c2V0Um9vdExheWVyKGxheWVyKTsKIH0KIAotdm9p
ZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6bGF5b3V0KCkKK2ludCBXZWJMYXllclRyZWVWaWV3SW1w
bDo6Y29tcG9zaXRvcklkZW50aWZpZXIoKQogewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAg
bV9jbGllbnQtPmxheW91dCgpOworICAgIHJldHVybiBtX2hvc3QtPmNvbXBvc2l0b3JJZGVudGlm
aWVyKCk7CiB9CiAKLXZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2Nh
bGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkK
K3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXpl
JiBzaXplKQogewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmFwcGx5U2Ny
b2xsQW5kU2NhbGUoV2ViU2l6ZShzY3JvbGxEZWx0YSksIHBhZ2VTY2FsZSk7CisgICAgbV9ob3N0
LT5zZXRWaWV3cG9ydFNpemUoc2l6ZSk7CiB9CiAKLVBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IFdlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGVDb250ZXh0KCkKK0ludFNpemUgV2ViTGF5
ZXJUcmVlVmlld0ltcGw6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2NsaWVu
dCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgT3duUHRyPFdlYkdyYXBoaWNzQ29udGV4dDNEPiB3
ZWJDb250ZXh0ID0gYWRvcHRQdHIobV9jbGllbnQtPmNyZWF0ZUNvbnRleHQzRCgpKTsKLSAgICBp
ZiAoIXdlYkNvbnRleHQpCi0gICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2hvc3QtPnZp
ZXdwb3J0U2l6ZSgpOworfQogCi0gICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQod2ViQ29udGV4dC5yZWxlYXNlKCks
IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdywgZmFsc2UgLyog
cHJlc2VydmVEcmF3aW5nQnVmZmVyICovICk7Cit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpz
ZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKK3sKKyAgICBtX2hvc3QtPnNldFZpc2libGUodmlzaWJs
ZSk7CiB9CiAKLXZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmRpZFJlY3JlYXRlQ29udGV4dChi
b29sIHN1Y2Nlc3MpCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0
b3JBbmRMaW1pdHMoZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBmbG9hdCBtaW5pbXVtLCBmbG9hdCBt
YXhpbXVtKQogewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlYmlu
ZEdyYXBoaWNzQ29udGV4dChzdWNjZXNzKTsKKyAgICBtX2hvc3QtPnNldFBhZ2VTY2FsZUZhY3Rv
ckFuZExpbWl0cyhwYWdlU2NhbGVGYWN0b3IsIG1pbmltdW0sIG1heGltdW0pOwogfQogCi12b2lk
IFdlYkxheWVyVHJlZVZpZXdJbXBsOjpkaWRDb21taXRBbmREcmF3RnJhbWUoKQordm9pZCBXZWJM
YXllclRyZWVWaWV3SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYg
dGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0
aW9uU2VjKQogewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZENvbW1p
dEFuZERyYXdGcmFtZSgpOworICAgIG1faG9zdC0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24odGFy
Z2V0UG9zaXRpb24sIHVzZUFuY2hvciwgc2NhbGUsIGR1cmF0aW9uU2VjKTsKIH0KIAotdm9pZCBX
ZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpCit2b2lkIFdlYkxh
eWVyVHJlZVZpZXdJbXBsOjpzZXROZWVkc0NvbW1pdCgpCiB7Ci0gICAgaWYgKG1fY2xpZW50KQot
ICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOworICAgIG1faG9zdC0+
c2V0TmVlZHNDb21taXQoKTsKIH0KIAotdm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6c2NoZWR1
bGVDb21wb3NpdGUoKQordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6c2V0TmVlZHNBbmltYXRl
KCkKIHsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZUNvbXBv
c2l0ZSgpOworICAgIG1faG9zdC0+c2V0TmVlZHNBbmltYXRlKCk7Cit9CisKK3ZvaWQgV2ViTGF5
ZXJUcmVlVmlld0ltcGw6OnNldE5lZWRzUmVkcmF3KCkKK3sKKyAgICBtX2hvc3QtPnNldE5lZWRz
UmVkcmF3KCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNvbXBvc2l0ZSgpCit7
CisgICAgbV9ob3N0LT5jb21wb3NpdGUoKTsKK30KKwordm9pZCBXZWJMYXllclRyZWVWaWV3SW1w
bDo6dXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgd2FsbENsb2NrRnJhbWVCZWdpblRpbWUsIGRvdWJs
ZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkKK3sKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
b25jZSB1cHN0cmVhbSBlbWJlZGRlcnMgcGFzcyBtb25vdG9uaWNGcmFtZUJlZ2luVGltZQorICAg
IGlmICghbW9ub3RvbmljRnJhbWVCZWdpblRpbWUpCisgICAgICAgIG1vbm90b25pY0ZyYW1lQmVn
aW5UaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgbV9ob3N0LT51cGRh
dGVBbmltYXRpb25zKHdhbGxDbG9ja0ZyYW1lQmVnaW5UaW1lLCBtb25vdG9uaWNGcmFtZUJlZ2lu
VGltZSk7Cit9CisKK2Jvb2wgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNvbXBvc2l0ZUFuZFJlYWRi
YWNrKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gbV9o
b3N0LT5jb21wb3NpdGVBbmRSZWFkYmFjayhwaXhlbHMsIHJlY3QpOworfQorCit2b2lkIFdlYkxh
eWVyVHJlZVZpZXdJbXBsOjpmaW5pc2hBbGxSZW5kZXJpbmcoKQoreworICAgIG1faG9zdC0+Zmlu
aXNoQWxsUmVuZGVyaW5nKCk7Cit9CisKK0dyYXBoaWNzQ29udGV4dDNEKiBXZWJMYXllclRyZWVW
aWV3SW1wbDo6Y29udGV4dCgpCit7CisgICAgcmV0dXJuIG1faG9zdC0+Y29udGV4dCgpOworfQor
Cit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpsb3NlQ29udGV4dChpbnQgbnVtVGltZXMpCit7
CisgICAgbV9ob3N0LT5sb3NlQ29udGV4dChudW1UaW1lcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZp
ZXdJbXBsLmgKaW5kZXggYjFiMjZkMGZjMzM4NjA0ZmU1Y2YzODA3MWY1MGE4YzM1ODY0NTJmYi4u
OWNmNGQ1ZDkxOTU5OWE1MGI3ZWQ1MGRmOTQ2ZjI2MDllOWQwODY4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCkBAIC0zNCwyNSAr
MzQsMzUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJMYXllcjsKIGNsYXNzIFdlYkxh
eWVyVHJlZVZpZXdDbGllbnQ7CiAKLWNsYXNzIFdlYkxheWVyVHJlZVZpZXdJbXBsIDogcHVibGlj
IFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdCwgcHVibGljIFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dENsaWVudCB7CitjbGFzcyBDQ0xheWVyVHJlZUhvc3RDbGllbnRUb1dlYkxheWVyVHJlZVZpZXdD
bGllbnRBZGFwdGVyOworY2xhc3MgV2ViTGF5ZXJUcmVlVmlld0ltcGwgOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJMYXllclRyZWVWaWV3SW1wbD4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYkxheWVyVHJlZVZpZXdJbXBsPiBjcmVhdGUoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCos
IGNvbnN0IFdlYkxheWVyJiByb290LCBjb25zdCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncyYp
OworICAgIHZpcnR1YWwgfldlYkxheWVyVHJlZVZpZXdJbXBsKCk7CisKKyAgICBib29sIGluaXRp
YWxpemUoY29uc3QgV2ViTGF5ZXImIHJvb3QsIGNvbnN0IFdlYkxheWVyVHJlZVZpZXc6OlNldHRp
bmdzJik7CisgICAgdm9pZCBzZXRSb290TGF5ZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpMYXllckNo
cm9taXVtPik7CisgICAgaW50IGNvbXBvc2l0b3JJZGVudGlmaWVyKCk7CisgICAgdm9pZCBzZXRW
aWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOworICAgIFdlYkNvcmU6OkludFNp
emUgdmlld3BvcnRTaXplKCkgY29uc3Q7CisgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOworICAg
IHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKGZsb2F0IHBhZ2VTY2FsZUZhY3Rvciwg
ZmxvYXQgbWluaW11bSwgZmxvYXQgbWF4aW11bSk7CisgICAgdm9pZCBzdGFydFBhZ2VTY2FsZUFu
aW1hdGlvbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VB
bmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpOworICAgIHZvaWQgc2V0TmVl
ZHNDb21taXQoKTsKKyAgICB2b2lkIHNldE5lZWRzQW5pbWF0ZSgpOworICAgIHZvaWQgc2V0TmVl
ZHNSZWRyYXcoKTsKKyAgICB2b2lkIGNvbXBvc2l0ZSgpOworICAgIHZvaWQgdXBkYXRlQW5pbWF0
aW9ucyhkb3VibGUgd2FsbENsb2NrRnJhbWVCZWdpblRpbWUsIGRvdWJsZSBtb25vdG9uaWNGcmFt
ZUJlZ2luVGltZSk7CisgICAgYm9vbCBjb21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygp
OworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CisgICAgdm9pZCBs
b3NlQ29udGV4dChpbnQgbnVtVGltZXMpOwogCiBwcml2YXRlOgotICAgIFdlYkxheWVyVHJlZVZp
ZXdJbXBsKFdlYkxheWVyVHJlZVZpZXdDbGllbnQqLCBjb25zdCBXZWJMYXllclRyZWVWaWV3OjpT
ZXR0aW5ncyYpOwotICAgIHZpcnR1YWwgfldlYkxheWVyVHJlZVZpZXdJbXBsKCk7Ci0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKTsKLSAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2Nh
bGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSk7
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEPiBjcmVh
dGVDb250ZXh0KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dChib29sIHN1
Y2Nlc3MpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOwotCi0gICAgLy8gT25seSB1c2Vk
IGluIHRoZSBzaW5nbGUgdGhyZWFkZWQgcGF0aC4KLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVD
b21wb3NpdGUoKTsKLQotICAgIFdlYkxheWVyVHJlZVZpZXdDbGllbnQqIG1fY2xpZW50OworICAg
IFdlYkxheWVyVHJlZVZpZXdJbXBsKFdlYkxheWVyVHJlZVZpZXdDbGllbnQqKTsKKworICAgIE93
blB0cjxDQ0xheWVyVHJlZUhvc3RDbGllbnRUb1dlYkxheWVyVHJlZVZpZXdDbGllbnRBZGFwdGVy
PiBtX2NsaWVudEFkYXB0ZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdD4g
bV9ob3N0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYzQ3ZmRkYWFlZTZlNWZhNTAyMGNhNTkyMDFl
ZjZlOWZjYjdmNDMxOC4uYjg0NzZhMTJmNmFhNDQxN2YwMjBhZDBkNWNmN2E2OGM5Mzg3MGM5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzEsMTEg
KzMxLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIK
IAorI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBY3RpdmVQbGF0Zm9ybUdl
c3R1cmVBbmltYXRpb24uaCIKICNpbmNsdWRlICJBdXRvZmlsbFBvcHVwTWVudUNsaWVudC5oIgot
I2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RDaHJv
bWl1bS5oIgotI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVj
dG9yLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNocm9tZS5o
IgpAQCAtMTE1LDM2ICsxMTQsMzkgQEAKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCiAjaW5j
bHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCIKICNp
bmNsdWRlICJXZWJBdXRvZmlsbENsaWVudC5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JJbXBs
LmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudEltcGwuaCIKICNpbmNsdWRlICJXZWJEZXZU
b29sc0FnZW50UHJpdmF0ZS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkRyYWdEYXRhLmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViR3JhcGhpY3ND
b250ZXh0M0QuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJJbWFnZS5oIgogI2luY2x1ZGUgIldl
YklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKICNpbmNsdWRlICJX
ZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIldlYktpdC5oIgotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dl
YkxheWVyLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmlldy5oIgogI2luY2x1
ZGUgIldlYk1lZGlhUGxheWVyQWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5oIgogI2luY2x1
ZGUgIldlYlBsdWdpbi5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkFjdGlvbi5oIgogI2luY2x1ZGUg
IldlYlBsdWdpbkNvbnRhaW5lckltcGwuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQb2ludC5o
IgogI2luY2x1ZGUgIldlYlBvcHVwTWVudUltcGwuaCIKICNpbmNsdWRlICJXZWJSYW5nZS5oIgot
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlJlY3QuaCIKICNpbmNsdWRlICJXZWJSdW50aW1lRmVhdHVy
ZXMuaCIKICNpbmNsdWRlICJXZWJTZXR0aW5nc0ltcGwuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKICNpbmNsdWRlICJX
ZWJWaWV3Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgImNjL0ND
UHJveHkuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJEcmFnRGF0YS5oIgorI2luY2x1ZGUgInBs
YXRmb3JtL1dlYkltYWdlLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBw
b3J0LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViVmVjdG9yLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KKyNpbmNs
dWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
TGF5ZXIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oPgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJQb2ludC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+CiAjaW5jbHVk
ZSA8d3RmL0J5dGVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC02MDYsMTUgKzYwOCwxNSBAQCBib29sIFdlYlZpZXdJ
bXBsOjptb3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYgZXZlbnQpCiAgICAgcmV0
dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVdoZWVs
RXZlbnQocGxhdGZvcm1FdmVudCk7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNjcm9sbEJ5KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBkZWx0YSkKK3ZvaWQgV2ViVmlld0ltcGw6OnNjcm9sbEJ5
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGRlbHRhKQogewogICAgIFdlYk1vdXNlV2hlZWxFdmVu
dCBzeW50aGV0aWNXaGVlbDsKICAgICBjb25zdCBmbG9hdCB0aWNrRGl2aXNvciA9IFdlYkNvcmU6
OldoZWVsRXZlbnQ6OnRpY2tNdWx0aXBsaWVyOwogCi0gICAgc3ludGhldGljV2hlZWwuZGVsdGFY
ID0gZGVsdGEueCgpOwotICAgIHN5bnRoZXRpY1doZWVsLmRlbHRhWSA9IGRlbHRhLnkoKTsKLSAg
ICBzeW50aGV0aWNXaGVlbC53aGVlbFRpY2tzWCA9IGRlbHRhLngoKSAvIHRpY2tEaXZpc29yOwot
ICAgIHN5bnRoZXRpY1doZWVsLndoZWVsVGlja3NZID0gZGVsdGEueSgpIC8gdGlja0Rpdmlzb3I7
CisgICAgc3ludGhldGljV2hlZWwuZGVsdGFYID0gZGVsdGEud2lkdGgoKTsKKyAgICBzeW50aGV0
aWNXaGVlbC5kZWx0YVkgPSBkZWx0YS5oZWlnaHQoKTsKKyAgICBzeW50aGV0aWNXaGVlbC53aGVl
bFRpY2tzWCA9IGRlbHRhLndpZHRoKCkgLyB0aWNrRGl2aXNvcjsKKyAgICBzeW50aGV0aWNXaGVl
bC53aGVlbFRpY2tzWSA9IGRlbHRhLmhlaWdodCgpIC8gdGlja0Rpdmlzb3I7CiAgICAgc3ludGhl
dGljV2hlZWwuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IHRydWU7CiAgICAgc3ludGhldGlj
V2hlZWwueCA9IG1fbGFzdFdoZWVsUG9zaXRpb24ueDsKICAgICBzeW50aGV0aWNXaGVlbC55ID0g
bV9sYXN0V2hlZWxQb3NpdGlvbi55OwpAQCAtNjMwLDYgKzYzMiw3IEBAIGJvb2wgV2ViVmlld0lt
cGw6Omdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogewogICAgIHN3
aXRjaCAoZXZlbnQudHlwZSkgewogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5n
U3RhcnQ6IHsKKyAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDIoIndlYmtpdCIsICJXZWJWaWV3
SW1wbDo6Z2VzdHVyZUV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydCIsICJkZWx0YVgiLCBldmVudC5k
ZWx0YVgsICJkZWx0YVkiLCBldmVudC5kZWx0YVkpOwogICAgICAgICBtX2xhc3RXaGVlbFBvc2l0
aW9uID0gV2ViUG9pbnQoZXZlbnQueCwgZXZlbnQueSk7CiAgICAgICAgIG1fbGFzdFdoZWVsR2xv
YmFsUG9zaXRpb24gPSBXZWJQb2ludChldmVudC5nbG9iYWxYLCBldmVudC5nbG9iYWxZKTsKICAg
ICAgICAgbV9mbGluZ01vZGlmaWVyID0gZXZlbnQubW9kaWZpZXJzOwpAQCAtNjM4LDEzICs2NDEs
MTYgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVu
dCYgZXZlbnQpCiAgICAgICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDoK
KyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDogeworICAgICAgICBU
UkFDRV9FVkVOVF9JTlNUQU5UMCgid2Via2l0IiwgIldlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQ6
Okdlc3R1cmVGbGluZ0NhbmNlbCIpOwogICAgICAgICBpZiAobV9nZXN0dXJlQW5pbWF0aW9uKSB7
CiAgICAgICAgICAgICBtX2dlc3R1cmVBbmltYXRpb24uY2xlYXIoKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwOiB7CisgICAgICAgIFRSQUNFX0VWRU5UX0lO
U1RBTlQwKCJ3ZWJraXQiLCAiV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudDo6R2VzdHVyZVRhcCIp
OwogICAgICAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIgcGxhdGZvcm1FdmVudChtYWlu
RnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBldmVudCk7CiAgICAgICAgIFJlZlB0cjxXZWJDb3Jl
OjpQb3B1cENvbnRhaW5lcj4gc2VsZWN0UG9wdXA7CiAgICAgICAgIHNlbGVjdFBvcHVwID0gbV9z
ZWxlY3RQb3B1cDsKQEAgLTY3Nyw2ICs2ODMsMTggQEAgYm9vbCBXZWJWaWV3SW1wbDo6Z2VzdHVy
ZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCit2b2lkIFdlYlZpZXdJbXBsOjp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24o
Y29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAg
VFJBQ0VfRVZFTlRfSU5TVEFOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6dHJhbnNmZXJBY3Rp
dmVXaGVlbEZsaW5nQW5pbWF0aW9uIik7CisgICAgQVNTRVJUKCFtX2dlc3R1cmVBbmltYXRpb24p
OworICAgIG1fbGFzdFdoZWVsUG9zaXRpb24gPSBwYXJhbWV0ZXJzLnBvaW50OworICAgIG1fbGFz
dFdoZWVsR2xvYmFsUG9zaXRpb24gPSBwYXJhbWV0ZXJzLmdsb2JhbFBvaW50OworICAgIG1fZmxp
bmdNb2RpZmllciA9IHBhcmFtZXRlcnMubW9kaWZpZXJzOworICAgIE93blB0cjxQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZT4gY3VydmUgPSBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNy
ZWF0ZShwYXJhbWV0ZXJzLmRlbHRhLCBwYXJhbWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGwpOworICAg
IG1fZ2VzdHVyZUFuaW1hdGlvbiA9IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3Jl
YXRlKGN1cnZlLnJlbGVhc2UoKSwgdGhpcywgcGFyYW1ldGVycy5zdGFydFRpbWUpOworICAgIHNj
aGVkdWxlQW5pbWF0aW9uKCk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnN0YXJ0UGFnZVNjYWxl
QW5pbWF0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGwsIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBu
ZXdTY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKQogewogICAgIGlmICghbV9sYXllclRyZWVWaWV3
LmlzTnVsbCgpKQpAQCAtMTMzMCw2ICsxMzQ4LDExIEBAIHZvaWQgV2ViVmlld0ltcGw6Omluc3Ry
dW1lbnRDYW5jZWxGcmFtZSgpCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYW5j
ZWxGcmFtZShtX3BhZ2UuZ2V0KCkpOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjp3aWxsQmVnaW5G
cmFtZSgpCit7CisgICAgbV9jbGllbnQtPndpbGxCZWdpbkZyYW1lKCk7Cit9CisKIHZvaWQgV2Vi
Vmlld0ltcGw6OmFuaW1hdGUoZG91YmxlIGZyYW1lQmVnaW5UaW1lKQogewogI2lmIEVOQUJMRShS
RVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKQEAgLTEzMzcsMTkgKzEzNjAsMjAgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6YW5pbWF0ZShkb3VibGUgZnJhbWVCZWdpblRpbWUpCiAgICAgLy8gcGFzcyBpbiBh
IGZyYW1lQmVnaW5UaW1lLgogICAgIGlmICghZnJhbWVCZWdpblRpbWUpCiAgICAgICAgIGZyYW1l
QmVnaW5UaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBkb3VibGUgbW9ub3RvbmljRnJhbWVCZWdp
blRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKICAgICAvLyBJbiBjb21wb3NpdGVkIG1vZGUsIHdlIGFsd2F5cyBn
byB0aHJvdWdoIHRoZSBjb21wb3NpdG9yIHNvIGl0IGNhbiBhcHBseQogICAgIC8vIGFwcHJvcHJp
YXRlIGZsb3ctY29udHJvbCBtZWNoYW5pc21zLgogICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdBY3RpdmUoKSkKLSAgICAgICAgbV9sYXllclRyZWVWaWV3LnVwZGF0ZUFuaW1hdGlvbnMo
ZnJhbWVCZWdpblRpbWUpOworICAgICAgICBtX2xheWVyVHJlZVZpZXcudXBkYXRlQW5pbWF0aW9u
cyhmcmFtZUJlZ2luVGltZSwgbW9ub3RvbmljRnJhbWVCZWdpblRpbWUpOwogICAgIGVsc2UKICNl
bmRpZgotICAgICAgICB1cGRhdGVBbmltYXRpb25zKGZyYW1lQmVnaW5UaW1lKTsKKyAgICAgICAg
dXBkYXRlQW5pbWF0aW9ucyhmcmFtZUJlZ2luVGltZSwgbW9ub3RvbmljRnJhbWVCZWdpblRpbWUp
OwogI2VuZGlmCiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZUFuaW1hdGlvbnMoZG91Ymxl
IGZyYW1lQmVnaW5UaW1lKQordm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlQW5pbWF0aW9ucyhkb3Vi
bGUgd2FsbENsb2NrRnJhbWVCZWdpblRpbWUsIGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGlt
ZSkKIHsKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAgICAgVFJBQ0VfRVZF
TlQoIldlYlZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zIiwgdGhpcywgMCk7CkBAIC0xMzYzLDEz
ICsxMzg3LDEzIEBAIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZy
YW1lQmVnaW5UaW1lKQogCiAgICAgLy8gQ3JlYXRlIHN5bnRoZXRpYyB3aGVlbCBldmVudHMgYXMg
bmVjZXNzYXJ5IGZvciBmbGluZy4KICAgICBpZiAobV9nZXN0dXJlQW5pbWF0aW9uKSB7Ci0gICAg
ICAgIGlmIChtX2dlc3R1cmVBbmltYXRpb24tPmFuaW1hdGUoZnJhbWVCZWdpblRpbWUpKQorICAg
ICAgICBpZiAobV9nZXN0dXJlQW5pbWF0aW9uLT5hbmltYXRlKG1vbm90b25pY0ZyYW1lQmVnaW5U
aW1lKSkKICAgICAgICAgICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1fZ2VzdHVyZUFuaW1hdGlvbi5jbGVhcigpOwogICAgIH0KIAotICAgIHZpZXct
PnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoY29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChm
cmFtZUJlZ2luVGltZSkpOworICAgIHZpZXctPnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoY29u
dmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcCh3YWxsQ2xvY2tGcmFtZUJlZ2luVGltZSkpOwogI2Vu
ZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDIy
OTM4YWQ2YmQ2YzQ5NzVmNzRmZTM3ZTQxNTQ4N2ZlZWNhMTIxNWIuLmE4MTczMzJlOTFjYTJiYmEw
N2JhODI4MTNiNzc1Y2E0YzVjMDA2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaApAQCAtMjU0LDEzICsyNTQsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVQYWdlT3ZlcmxheShXZWJQYWdlT3ZlcmxheSopOwogCiAgICAgLy8gV2ViTGF5ZXJU
cmVlVmlld0NsaWVudAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBm
cmFtZUJlZ2luVGltZSk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZyYW1lKCk7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIHdhbGxDbG9ja0ZyYW1lQmVnaW5U
aW1lLCBkb3VibGUgbW9ub3RvbmljRnJhbWVCZWdpblRpbWUpOwogICAgIHZpcnR1YWwgdm9pZCBh
cHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYlNpemUmLCBmbG9hdCk7CiAgICAgdmlydHVhbCBX
ZWJHcmFwaGljc0NvbnRleHQzRCogY3JlYXRlQ29udGV4dDNEKCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlYmluZEdyYXBoaWNzQ29udGV4dChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29t
bWl0QW5kRHJhd0ZyYW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZl
cnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdo
ZWVsRmxpbmdQYXJhbWV0ZXJzJik7CiAKICAgICAvLyBXZWJWaWV3SW1wbAogCkBAIC0zMzcsNyAr
MzM5LDcgQEAgcHVibGljOgogICAgIHZvaWQgbnVtYmVyT2ZUb3VjaEV2ZW50SGFuZGxlcnNDaGFu
Z2VkKHVuc2lnbmVkKTsKIAogICAgIC8vIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0IGltcGxl
bWVudGF0aW9uIGZvciB3aGVlbCBmbGluZy4KLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYpOwogCiAgICAgLy8gSGFuZGxlcyBjb250ZXh0IG1lbnUgZXZlbnRz
IG9yaWduYXRlZCB2aWEgdGhlIHRoZSBrZXlib2FyZC4gVGhlc2UKICAgICAvLyBpbmNsdWRlIHRo
ZSBWS19BUFBTIHZpcnR1YWwga2V5IGFuZCB0aGUgU2hpZnQrRjEwIGNvbWJpbmUuIENvZGUgaXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHAKaW5kZXggMDkyYjg3NzFhZjgxZTdkOTI3ZWNhMjg3MzNiZTRmN2Y3Mzhi
NmIzYi4uMGIzMzhhNmY3NWYwNThmNWU3M2YyMDc1OWY2Njk2NWM1ZTQ5MGEyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpIHsgbV9kaWRSZXF1ZXN0UmVkcmF3ID0gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpIHsgbV9kaWRSZXF1
ZXN0Q29tbWl0ID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBwb3N0QW5pbWF0aW9uRXZlbnRz
VG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0
b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVy
QWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbk9uSW1wbFRocmVhZChjb25zdCBDQ0FjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzJikgeyB9CiAKICAgICBzdGF0aWMgdm9pZCBleHBlY3RDbGVhcmVkU2Ny
b2xsRGVsdGFzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRl
eCBjNzIzODM3MDJjMTEzZTIxMGMzNDQyNjc5NzdkOTVhODkzMWI0ZWUyLi40YTFjNjkzYzQ4ZjA5
NGEzZDMxMDZjMDZjODg1MDhkYTYxN2Y1MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJl
ZUhvc3RJbXBsKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVMYXllcnMoQ0NMYXllclRy
ZWVIb3N0SW1wbCosIGRvdWJsZSBtb25vdG9uaWNUaW1lKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiwgZmxvYXQpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgd2FsbENsb2NrRnJhbWVCZWdpblRp
bWUsIGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGxheW91dCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBz
dWNjZWRlZCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIHsg
fQpAQCAtMjIwLDkgKzIyMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgTW9ja0xheWVyVHJlZUhvc3RDbGllbnQodGVzdEhvb2tzKSk7CiAgICAgfQogCi0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpCisgICAgdmly
dHVhbCB2b2lkIHdpbGxCZWdpbkZyYW1lKCkKICAgICB7Ci0gICAgICAgIG1fdGVzdEhvb2tzLT51
cGRhdGVBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSB3YWxsQ2xvY2tGcmFtZUJlZ2luVGltZSwgZG91Ymxl
IG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKQorICAgIHsKKyAgICAgICAgbV90ZXN0SG9va3MtPnVw
ZGF0ZUFuaW1hdGlvbnMod2FsbENsb2NrRnJhbWVCZWdpblRpbWUsIG1vbm90b25pY0ZyYW1lQmVn
aW5UaW1lKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkKQEAgLTI1OSw2ICsy
NjMsMTAgQEAgcHVibGljOgogICAgICAgICBtX3Rlc3RIb29rcy0+ZGlkUmVjcmVhdGVDb250ZXh0
KHN1Y2NlZWRlZCk7CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQWN0aXZlV2hl
ZWxGbGluZ0FuaW1hdGlvbihjb25zdCBDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJh
bXMpCisgICAgeworICAgIH0KKwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgp
CiAgICAgewogICAgIH0KQEAgLTg2OSw3ICs4NzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHBvc3RT
ZXROZWVkc0FuaW1hdGVUb01haW5UaHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQW5pbWF0aW9ucyhkb3VibGUpCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlv
bnMoZG91YmxlLCBkb3VibGUpCiAgICAgewogICAgICAgICBpZiAoIW1fbnVtQW5pbWF0ZXMpIHsK
ICAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNBbmltYXRlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENs
aWVudC5oCmluZGV4IDM4ODc2ZDczN2ZiNTJhYTZkMDNjNzFiZmZlNDE3MjhjOGNjY2YwYjUuLjFi
YTBhOGM1YjZmZDhkMmY2MjYyNDZmZTZjN2I5Y2M4YTczN2M2YmQgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5o
CkBAIC0zNCw3ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmFrZUNDTGF5
ZXJUcmVlSG9zdENsaWVudCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RDbGllbnQgewogcHVibGlj
OgotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGlt
ZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZyYW1lKCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIHdhbGxDbG9ja0ZyYW1lQmVnaW5UaW1lLCBk
b3VibGUgbW9ub3RvbmljRnJhbWVCZWdpblRpbWUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRT
aXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNjYWxlKSB7IH0KICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQoKQpAQCAtNDUsNiArNDYsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dChib29sIHN1Y2Nl
c3MpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCB0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgQ0NBY3RpdmVXaGVl
bEZsaW5nUGFyYW1ldGVycyYpIHsgfQogCiAgICAgLy8gVXNlZCBvbmx5IGluIHRoZSBzaW5nbGUt
dGhyZWFkZWQgcGF0aC4KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUGxhdGZvcm1HZXN0dXJl
Q3VydmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUGxhdGZvcm1HZXN0
dXJlQ3VydmVUZXN0LmNwcAppbmRleCA4ZjIwNmQ4NjY5MTg3YTdkODc4ZWI5ZjQ3MmFiOWJkNTRm
ZjM0ZTdiLi5mZTA1YjQ5ZDJhNzBlOWJiNjBkNTlmZTRmYzFmNTg3ZmFmZGI5ZTJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtR2VzdHVyZUN1cnZlVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUdlc3R1cmVD
dXJ2ZVRlc3QuY3BwCkBAIC00MiwxNiArNDIsMTYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIGNsYXNzIE1vY2tQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCA6IHB1YmxpYyBQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZVRhcmdldCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5
KGNvbnN0IEludFBvaW50JiBkZWx0YSkKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3Qg
SW50U2l6ZSYgZGVsdGEpCiAgICAgewogICAgICAgICBtX2N1bXVsYXRpdmVEZWx0YSA9IG1fY3Vt
dWxhdGl2ZURlbHRhICsgZGVsdGE7CiAgICAgfQogCi0gICAgSW50UG9pbnQgY3VtdWxhdGl2ZURl
bHRhKCkgY29uc3QgeyByZXR1cm4gIG1fY3VtdWxhdGl2ZURlbHRhOyB9Ci0gICAgdm9pZCByZXNl
dEN1bXVsYXRpdmVEZWx0YSgpIHsgbV9jdW11bGF0aXZlRGVsdGEgPSBJbnRQb2ludCgpOyB9Cisg
ICAgSW50U2l6ZSBjdW11bGF0aXZlRGVsdGEoKSBjb25zdCB7IHJldHVybiAgbV9jdW11bGF0aXZl
RGVsdGE7IH0KKyAgICB2b2lkIHJlc2V0Q3VtdWxhdGl2ZURlbHRhKCkgeyBtX2N1bXVsYXRpdmVE
ZWx0YSA9IEludFNpemUoKTsgfQogCiBwcml2YXRlOgotICAgIEludFBvaW50IG1fY3VtdWxhdGl2
ZURlbHRhOworICAgIEludFNpemUgbV9jdW11bGF0aXZlRGVsdGE7CiB9OwogCiBURVNUKFBsYXRm
b3JtR2VzdHVyZUN1cnZlLCBmbGluZ0N1cnZlKQpAQCAtNjksOCArNjksOCBAQCBURVNUKFBsYXRm
b3JtR2VzdHVyZUN1cnZlLCBmbGluZ0N1cnZlKQogICAgIEVYUEVDVF9GQUxTRShhbmltYXRpb24t
PmFuaW1hdGUoMTAwMSkpOwogICAgIC8vIFNpbmNlIHRoZSBSYXlsZWlnaCBDREYgbWF4ZXMgb3V0
IGF0IDEsIHdlIGV4cGVjdCB0aGUgY3VtdWxhdGl2ZSBzY3JvbGwgaW5jcmVtZW50cyB0bwogICAg
IC8vIG1hdGNoIHRoZSBpbnB1dCB2ZWxvY2l0eSBwYXJhbWV0ZXIuCi0gICAgRVhQRUNUX05FQVIo
dGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgpLngoKSwgMTAwLCAxKTsKLSAgICBFWFBFQ1RfRVEodGFy
Z2V0LmN1bXVsYXRpdmVEZWx0YSgpLnkoKSwgMCk7CisgICAgRVhQRUNUX05FQVIodGFyZ2V0LmN1
bXVsYXRpdmVEZWx0YSgpLndpZHRoKCksIDEwMCwgMSk7CisgICAgRVhQRUNUX0VRKHRhcmdldC5j
dW11bGF0aXZlRGVsdGEoKS5oZWlnaHQoKSwgMCk7CiAKICAgICAvLyBUZXN0IGFuaW1hdGlvbiB3
aGVuIG5vdCBzdGFydGluZyBhdCB0ID0gMC4KICAgICBkb3VibGUgYmFzZVRpbWUgPSA0Mi40MjsK
QEAgLTgxLDcgKzgxLDcgQEAgVEVTVChQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSwgZmxpbmdDdXJ2ZSkK
ICAgICBFWFBFQ1RfVFJVRShhbmltYXRpb24tPmFuaW1hdGUoYmFzZVRpbWUgKyAxLjM1KSk7CiAg
ICAgRVhQRUNUX1RSVUUoYW5pbWF0aW9uLT5hbmltYXRlKGJhc2VUaW1lICsgMTAwMCkpOwogICAg
IEVYUEVDVF9GQUxTRShhbmltYXRpb24tPmFuaW1hdGUoYmFzZVRpbWUgKyAxMDAxKSk7Ci0gICAg
RVhQRUNUX05FQVIodGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgpLngoKSwgMTAwLCAxKTsKKyAgICBF
WFBFQ1RfTkVBUih0YXJnZXQuY3VtdWxhdGl2ZURlbHRhKCkud2lkdGgoKSwgMTAwLCAxKTsKIAog
ICAgIGFuaW1hdGlvbiA9IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFdo
ZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKEZsb2F0UG9pbnQoNTAsIDE1MCkp
LCAmdGFyZ2V0KTsKICAgICB0YXJnZXQucmVzZXRDdW11bGF0aXZlRGVsdGEoKTsKQEAgLTkzLDgg
KzkzLDggQEAgVEVTVChQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSwgZmxpbmdDdXJ2ZSkKICAgICBFWFBF
Q1RfVFJVRShhbmltYXRpb24tPmFuaW1hdGUoMC43NSkpOwogICAgIEVYUEVDVF9UUlVFKGFuaW1h
dGlvbi0+YW5pbWF0ZSgxMDAwKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGFuaW1hdGlvbi0+YW5pbWF0
ZSgxMDAxKSk7Ci0gICAgRVhQRUNUX05FQVIodGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgpLngoKSwg
NTAsIDEpOwotICAgIEVYUEVDVF9ORUFSKHRhcmdldC5jdW11bGF0aXZlRGVsdGEoKS55KCksIDE1
MCwgMSk7CisgICAgRVhQRUNUX05FQVIodGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgpLndpZHRoKCks
IDUwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUih0YXJnZXQuY3VtdWxhdGl2ZURlbHRhKCkuaGVpZ2h0
KCksIDE1MCwgMSk7CiB9CiAKIFRFU1QoUGxhdGZvcm1HZXN0dXJlQ3VydmUsIGZsaW5nQ3VydmVU
b3VjaCkKQEAgLTExMyw4ICsxMTMsOCBAQCBURVNUKFBsYXRmb3JtR2VzdHVyZUN1cnZlLCBmbGlu
Z0N1cnZlVG91Y2gpCiAgICAgRVhQRUNUX1RSVUUoYW5pbWF0aW9uLT5hbmltYXRlKDAuOSkpOwog
ICAgIEVYUEVDVF9UUlVFKGFuaW1hdGlvbi0+YW5pbWF0ZSgxMDAwKSk7CiAgICAgRVhQRUNUX0ZB
TFNFKGFuaW1hdGlvbi0+YW5pbWF0ZSgxMDAxKSk7Ci0gICAgRVhQRUNUX05FQVIodGFyZ2V0LmN1
bXVsYXRpdmVEZWx0YSgpLngoKSwgaW5pdGlhbFZlbG9jaXR5ICogdG91Y2hGbGluZ0N1cnZlQXJl
YUZhY3RvciwgMSk7Ci0gICAgRVhQRUNUX0VRKHRhcmdldC5jdW11bGF0aXZlRGVsdGEoKS55KCks
IDApOworICAgIEVYUEVDVF9ORUFSKHRhcmdldC5jdW11bGF0aXZlRGVsdGEoKS53aWR0aCgpLCBp
bml0aWFsVmVsb2NpdHkgKiB0b3VjaEZsaW5nQ3VydmVBcmVhRmFjdG9yLCAxKTsKKyAgICBFWFBF
Q1RfRVEodGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgpLmhlaWdodCgpLCAwKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgYW5vbnltb3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAKaW5k
ZXggZmE4MjQ3YjExMGMwN2ViMTU3ZmQ1NDQ5MDI2NDllMWRiNTBmMGQwNi4uOTdkMDdhM2Q4OGE1
YjQ2YmQxYjMyMGIxZDQwM2JiNjFlMDY4ZmVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGxUZXN0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAi
Y2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiY2MvQ0NBY3RpdmVXaGVl
bEZsaW5nUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgImNjL0NDSW5wdXRIYW5kbGVyLmgiCiAjaW5j
bHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogCkBAIC02Miw2ICs2Myw4IEBAIHB1Ymxp
YzoKICAgICBNT0NLX01FVEhPRDEoc2Nyb2xsQnksIHZvaWQoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpKTsKICAgICBNT0NLX01FVEhPRDAoc2Nyb2xsRW5kLCB2b2lkKCkpOwogCisgICAgTU9DS19N
RVRIT0QxKHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbiwgdm9pZChjb25zdCBXZWJD
b3JlOjpDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikpOworCiBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiB0YXJnZXRQb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBhbmNob3JQb2ludCwKQEAgLTEzMCwzMCArMTMzLDMyIEBAIHB1YmxpYzoKICAgICAg
ICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0KIAotICAgIHZvaWQg
dmVyaWZ5QW5kUmVzZXRNb2NrcygpCi0gICAgewotICAgICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJp
ZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOwotICAg
ICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ2xp
ZW50KTsKLSAgICAgICAgc3dpdGNoIChtX2V4cGVjdGVkRGlzcG9zaXRpb24pIHsKLSAgICAgICAg
Y2FzZSBEaWRIYW5kbGU6Ci0gICAgICAgICAgICAvLyBJZiB3ZSBleHBlY3QgdG8gaGFuZGxlIGV2
ZW50cywgd2Ugc2hvdWxkbid0IGdldCBhbnkgZGlkTm90SGFuZGxlSW5wdXRFdmVudCgpIGNhbGxz
IHdpdGggYW55IHBhcmFtZXRlci4KLSAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVu
dCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudCg6OnRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKLSAgICAg
ICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkSGFuZGxlSW5wdXRFdmVudCgpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERpZE5vdEhhbmRsZToKLSAgICAgICAg
ICAgIC8vIElmIHdlIGFyZW4ndCBleHBlY3RpbmcgdG8gaGFuZGxlIGV2ZW50cywgd2Ugc2hvdWxk
bid0IGNhbGwgZGlkSGFuZGxlSW5wdXRFdmVudCgpLgotICAgICAgICAgICAgRVhQRUNUX0NBTEwo
bV9tb2NrQ2xpZW50LCBkaWRIYW5kbGVJbnB1dEV2ZW50KCkpLlRpbWVzKDApOwotICAgICAgICAg
ICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KGZhbHNl
KSkuVGltZXMoMCk7Ci0gICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZE5v
dEhhbmRsZUlucHV0RXZlbnQodHJ1ZSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgRHJvcEV2ZW50OgotICAgICAgICAgICAgLy8gSWYgd2UncmUgZXhwZWN0aW5nIHRvIGRyb3As
IHdlIHNob3VsZG4ndCBnZXQgYW55IGRpZEhhbmRsZS4uKCkgb3IgZGlkTm90SGFuZGxlSW5wdXRF
dmVudCh0cnVlIC8qIHNlbmRUb1dpZGdldCAqLykgY2FsbHMuCi0gICAgICAgICAgICBFWFBFQ1Rf
Q0FMTChtX21vY2tDbGllbnQsIGRpZEhhbmRsZUlucHV0RXZlbnQoKSkuVGltZXMoMCk7Ci0gICAg
ICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQo
dHJ1ZSkpLlRpbWVzKDApOwotICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBk
aWROb3RIYW5kbGVJbnB1dEV2ZW50KGZhbHNlKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgIH0KKyAgICAvLyBUaGlzIGlzIGRlZmluZWQgYXMgYSBtYWNybyBiZWNhdXNlIHdo
ZW4gYW4gZXhwZWN0YXRpb24gaXMgbm90IHNhdGlzZmllZCB0aGUgb25seSBvdXRwdXQgeW91IGdl
dAorICAgIC8vIG91dCBvZiBnbW9jayBpcyB0aGUgbGluZSBudW1iZXIgdGhhdCBzZXQgdGhlIGV4
cGVjdGF0aW9uLgorI2RlZmluZSBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCkgZG8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHRlc3Rpbmc6Ok1vY2s6OlZl
cmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0ZXN0aW5n
OjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ2xpZW50KTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgc3dpdGNoIChtX2V4cGVjdGVkRGlzcG9zaXRpb24pIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIGNhc2UgRGlkSGFuZGxlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgLyogSWYgd2UgZXhwZWN0IHRvIGhhbmRsZSBldmVu
dHMsIHdlIHNob3VsZG4ndCBnZXQgYW55IGRpZE5vdEhhbmRsZUlucHV0RXZlbnQoKSBjYWxscyB3
aXRoIGFueSBwYXJhbWV0ZXIuICovIFwKKyAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0Ns
aWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudCg6OnRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFWFBFQ1RfQ0FM
TChtX21vY2tDbGllbnQsIGRpZEhhbmRsZUlucHV0RXZlbnQoKSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
YnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgY2FzZSBEaWROb3RIYW5kbGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICAvKiBJZiB3ZSBhcmVuJ3QgZXhwZWN0aW5nIHRvIGhhbmRsZSBl
dmVudHMsIHdlIHNob3VsZG4ndCBjYWxsIGRpZEhhbmRsZUlucHV0RXZlbnQoKS4gKi8gICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBk
aWRIYW5kbGVJbnB1dEV2ZW50KCkpLlRpbWVzKDApOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9j
a0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudChmYWxzZSkpLlRpbWVzKDApOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFWFBFQ1Rf
Q0FMTChtX21vY2tDbGllbnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQodHJ1ZSkpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgY2FzZSBEcm9wRXZlbnQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICAvKiBJZiB3ZSdyZSBleHBlY3RpbmcgdG8gZHJvcCwgd2Ug
c2hvdWxkbid0IGdldCBhbnkgZGlkSGFuZGxlLi4oKSBvciBkaWROb3RIYW5kbGVJbnB1dEV2ZW50
KHRydWUpIGNhbGxzLiAqLyAgXAorICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50
LCBkaWRIYW5kbGVJbnB1dEV2ZW50KCkpLlRpbWVzKDApOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudCh0cnVlKSkuVGltZXMoMCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFWFBF
Q1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQoZmFsc2UpKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
fSB3aGlsZSAoMCkKIAogcHJvdGVjdGVkOgogICAgIE1vY2tDQ0lucHV0SGFuZGxlckNsaWVudCBt
X21vY2tDQ0lucHV0SGFuZGxlckNsaWVudDsKQEAgLTE3Myw3ICsxNzgsNyBAQCBURVNUX0YoV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlU2Nyb2xsU3RhcnRlZCkKIHsK
ICAgICAvLyBXZSBzaG91bGRuJ3Qgc2VuZCBhbnkgZXZlbnRzIHRvIHRoZSB3aWRnZXQgZm9yIHRo
aXMgZ2VzdHVyZS4KICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEaWRIYW5kbGU7Ci0gICAg
dmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAog
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0
ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVy
bihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOwpAQCAtMTgx
LDE0ICsxODYsMTQgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwg
Z2VzdHVyZVNjcm9sbFN0YXJ0ZWQpCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlu
cHV0RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVS
SUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJ
bnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOwogICAgIGdlc3R1cmUuZGVsdGFZID0gLTQw
OyAvLyAtWSBtZWFucyBzY3JvbGwgZG93biAtIGkuZS4gaW4gdGhlICtZIGRpcmVjdGlvbi4KICAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGlu
Zzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6OmhlaWdodCwgdGVzdGluZzo6R3QoMCkpKSk7
CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2
ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAg
ICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5k
OwogICAgIGdlc3R1cmUuZGVsdGFZID0gMDsKQEAgLTIwMCw3ICsyMDUsNyBAQCBURVNUX0YoV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlU2Nyb2xsRmFpbGVkKQogewog
ICAgIC8vIFdlIHNob3VsZCBzZW5kIGFsbCBldmVudHMgdG8gdGhlIHdpZGdldCBmb3IgdGhpcyBn
ZXN0dXJlLgogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZE5vdEhhbmRsZTsKLSAgICB2
ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAg
ICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKDo6
dGVzdGluZzo6XywgOjp0ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJl
dHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKSk7CkBAIC0y
MDgsMTMgKzIxMywxMyBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0
LCBnZXN0dXJlU2Nyb2xsRmFpbGVkKQogICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5w
dXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJ
bnB1dEV2ZW50KGdlc3R1cmUpOwogCi0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZF
UklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2Vi
SW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZTsKICAgICBnZXN0dXJlLmRlbHRhWSA9IDQw
OwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCi0gICAg
dmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAog
ICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVu
ZDsKICAgICBnZXN0dXJlLmRlbHRhWSA9IDA7CkBAIC0yMjgsNyArMjMzLDcgQEAgVEVTVF9GKFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZVNjcm9sbElnbm9yZWQpCiAg
ICAgLy8gaW5kaWNhdGluZyB0aGF0IHdlIGNvdWxkIGRldGVybWluZSB0aGF0IHRoZXJlJ3Mgbm90
aGluZyB0aGF0IGNvdWxkIHNjcm9sbCBvciBvdGhlcndpc2UKICAgICAvLyByZWFjdCB0byB0aGlz
IGdlc3R1cmUgc2VxdWVuY2UgYW5kIHRodXMgd2Ugc2hvdWxkIGRyb3AgdGhlIHdob2xlIGdlc3R1
cmUgc2VxdWVuY2Ugb24gdGhlIGZsb29yLgogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERy
b3BFdmVudDsKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNF
VF9NT0NLUygpOwogCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQs
IHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2Uo
dGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJZ25v
cmVkKSk7CkBAIC0yNDEsMTMgKzI0NiwxMyBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGxUZXN0LCBnZXN0dXJlUGluY2gpCiB7CiAgICAgLy8gV2Ugc2hvdWxkbid0IHNlbmQg
YW55IGV2ZW50cyB0byB0aGUgd2lkZ2V0IGZvciB0aGlzIGdlc3R1cmUuCiAgICAgbV9leHBlY3Rl
ZERpc3Bvc2l0aW9uID0gRGlkSGFuZGxlOwotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAg
ICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6
OldlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaEJlZ2luOwogICAgIEVYUEVDVF9DQUxMKG1fbW9j
a0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBwaW5jaEdlc3R1cmVCZWdpbigpKTsKICAgICBtX2lucHV0
SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAotICAgIHZlcmlmeUFuZFJlc2V0
TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICBnZXN0dXJlLnR5
cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZTsKICAgICBnZXN0
dXJlLmRlbHRhWCA9IDEuNTsKQEAgLTI1Niw3ICsyNjEsNyBAQCBURVNUX0YoV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlUGluY2gpCiAgICAgRVhQRUNUX0NBTEwobV9t
b2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHBpbmNoR2VzdHVyZVVwZGF0ZSgxLjUsIFdlYkNvcmU6
OkludFBvaW50KDcsIDEzKSkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50
KGdlc3R1cmUpOwogCi0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRf
UkVTRVRfTU9DS1MoKTsKIAogICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVu
dDo6R2VzdHVyZVBpbmNoVXBkYXRlOwogICAgIGdlc3R1cmUuZGVsdGFYID0gMC41OwpAQCAtMjY1
LDcgKzI3MCw3IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdl
c3R1cmVQaW5jaCkKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwg
cGluY2hHZXN0dXJlVXBkYXRlKC41LCBXZWJDb3JlOjpJbnRQb2ludCg5LCA2KSkpOwogICAgIG1f
aW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCi0gICAgdmVyaWZ5QW5k
UmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIGdlc3R1
cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoRW5kOwogICAgIEVY
UEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBwaW5jaEdlc3R1cmVFbmQoKSk7
CkBAIC0yNzYsNyArMjgxLDcgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
VGVzdCwgZ2VzdHVyZUZsaW5nU3RhcnRlZCkKIHsKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2VuZCBh
bnkgZXZlbnRzIHRvIHRoZSB3aWRnZXQgZm9yIHRoaXMgZ2VzdHVyZS4KICAgICBtX2V4cGVjdGVk
RGlzcG9zaXRpb24gPSBEaWRIYW5kbGU7Ci0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAg
IFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5w
dXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAg
ICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNs
aWVudDo6U2Nyb2xsU3RhcnRlZCkpOwpAQCAtMjg2LDcgKzI5MSw3IEBAIFRFU1RfRihXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ1N0YXJ0ZWQpCiAgICAgRVhQ
RUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkp
OwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCi0gICAg
dmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAog
ICAgIC8vIFZlcmlmeSB0aGF0IGEgR2VzdHVyZUZsaW5nQ2FuY2VsIGR1cmluZyBhbiBhbmltYXRp
b24gY2FuY2VscyBpdC4KICAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6
Okdlc3R1cmVGbGluZ0NhbmNlbDsKQEAgLTI5Nyw3ICszMDIsNyBAQCBURVNUX0YoV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdGYWlsZWQpCiB7CiAgICAgLy8g
V2Ugc2hvdWxkIHNlbmQgYWxsIGV2ZW50cyB0byB0aGUgd2lkZ2V0IGZvciB0aGlzIGdlc3R1cmUu
CiAgICAgbV9leHBlY3RlZERpc3Bvc2l0aW9uID0gRGlkTm90SGFuZGxlOwotICAgIHZlcmlmeUFu
ZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICBFWFBF
Q1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6
XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29y
ZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCkpOwpAQCAtMzA1LDcgKzMxMCw3
IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGlu
Z0ZhaWxlZCkKICAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1
cmVGbGluZ1N0YXJ0OwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1
cmUpOwogCi0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRf
TU9DS1MoKTsKIAogICAgIC8vIEV2ZW4gaWYgd2UgZGlkbid0IHN0YXJ0IGEgZmxpbmcgb3Vyc2Vs
dmVzLCB3ZSBzdGlsbCBuZWVkIHRvIHNlbmQgdGhlIGNhbmNlbCBldmVudCB0byB0aGUgd2lkZ2V0
LgogICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5n
Q2FuY2VsOwpAQCAtMzE1LDcgKzMyMCw3IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ0ZhaWxlZCkKIFRFU1RfRihXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ0lnbm9yZWQpCiB7CiAgICAgbV9leHBlY3Rl
ZERpc3Bvc2l0aW9uID0gRGlkTm90SGFuZGxlOwotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsK
KyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tD
Q0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6Xykp
CiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OlNjcm9sbElnbm9yZWQpKTsKQEAgLTMyMyw3ICszMjgsNyBAQCBURVNUX0YoV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdJZ25vcmVkKQogICAg
IGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7
CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2
ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAg
ICAgLy8gRXZlbiBpZiB3ZSBkaWRuJ3Qgc3RhcnQgYSBmbGluZyBvdXJzZWx2ZXMsIHdlIHN0aWxs
IG5lZWQgdG8gc2VuZCB0aGUgY2FuY2VsIGV2ZW50IHRvIHRoZSB3aWRnZXQuCiAgICAgZ2VzdHVy
ZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw7CkBAIC0z
MzQsMTIgKzMzOSwyMiBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0
LCBnZXN0dXJlRmxpbmdBbmltYXRlcykKIHsKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2VuZCBhbnkg
ZXZlbnRzIHRvIHRoZSB3aWRnZXQgZm9yIHRoaXMgZ2VzdHVyZS4KICAgICBtX2V4cGVjdGVkRGlz
cG9zaXRpb24gPSBEaWRIYW5kbGU7Ci0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZF
UklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIC8vIE9uIHRoZSBmbGluZyBzdGFydCwgd2Ug
c2hvdWxkIHNjaGVkdWxlIGFuIGFuaW1hdGlvbiBidXQgbm90IGFjdHVhbGx5IHN0YXJ0CiAgICAg
Ly8gc2Nyb2xsaW5nLgogICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6
R2VzdHVyZUZsaW5nU3RhcnQ7Ci0gICAgZ2VzdHVyZS5kZWx0YVggPSAtMTAwMDsKKyAgICBXZWJD
b3JlOjpGbG9hdFNpemUgZmxpbmdEZWx0YSA9IFdlYkNvcmU6OkZsb2F0U2l6ZSgxMDAwLCAwKTsK
KyAgICBXZWJDb3JlOjpJbnRQb2ludCBmbGluZ1BvaW50ID0gV2ViQ29yZTo6SW50UG9pbnQoNywg
MTMpOworICAgIFdlYkNvcmU6OkludFBvaW50IGZsaW5nR2xvYmFsUG9pbnQgPSBXZWJDb3JlOjpJ
bnRQb2ludCgxNywgMjMpOworICAgIGludCBtb2RpZmllcnMgPSA3OworICAgIGdlc3R1cmUuZGVs
dGFYID0gZmxpbmdEZWx0YS53aWR0aCgpOworICAgIGdlc3R1cmUuZGVsdGFZID0gZmxpbmdEZWx0
YS5oZWlnaHQoKTsKKyAgICBnZXN0dXJlLnggPSBmbGluZ1BvaW50LngoKTsKKyAgICBnZXN0dXJl
LnkgPSBmbGluZ1BvaW50LnkoKTsKKyAgICBnZXN0dXJlLmdsb2JhbFggPSBmbGluZ0dsb2JhbFBv
aW50LngoKTsKKyAgICBnZXN0dXJlLmdsb2JhbFkgPSBmbGluZ0dsb2JhbFBvaW50LnkoKTsKKyAg
ICBnZXN0dXJlLm1vZGlmaWVycyA9IG1vZGlmaWVyczsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tD
Q0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0NB
TEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRl
c3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkND
SW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7CkBAIC0zNTYsMjQgKzM3MSwzNyBA
QCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdB
bmltYXRlcykKIAogICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25z
KCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CiAKLSAgICAvLyBUaGUgc2Vjb25kIGNhbGwg
c2hvdWxkIHN0YXJ0IHNjcm9sbGluZyBpbiB0aGUgK1ggZGlyZWN0aW9uLgorICAgIC8vIFRoZSBz
ZWNvbmQgY2FsbCBzaG91bGQgc3RhcnQgc2Nyb2xsaW5nIGluIHRoZSAtWCBkaXJlY3Rpb24uCiAg
ICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0
aW9uKCkpOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3Jv
bGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rp
bmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkp
OwotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0
ZXN0aW5nOjpQcm9wZXJ0eSgmV2ViQ29yZTo6SW50U2l6ZTo6d2lkdGgsIHRlc3Rpbmc6Okd0KDAp
KSkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxC
eSh0ZXN0aW5nOjpQcm9wZXJ0eSgmV2ViQ29yZTo6SW50U2l6ZTo6d2lkdGgsIHRlc3Rpbmc6Okx0
KDApKSkpOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3Jv
bGxFbmQoKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMSk7CiAKICAgICB0ZXN0
aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQpOwogCiAgICAgLy8gTGV0J3Mgc2F5IG9uIHRoZSB0aGlyZCBjYWxsIHdlIGhpdCBh
IG5vbi1zY3JvbGxhYmxlIHJlZ2lvbi4gV2Ugc2hvdWxkIGFib3J0IHRoZSBmbGluZyBhbmQgbm90
IHNjcm9sbC4KLSAgICAvLyBGSVhNRTogV2UgYWxzbyBuZWVkIHRvIGRvIHNvbWUgd29yayB0byB0
cmFuc2ZlciB0aGUgcmVzdCBvZiB0aGlzIGZsaW5nIHRvIHRoZSBtYWluIHRocmVhZC4KLSAgICAv
LyBBZGQgdGVzdHMgZm9yIHRoaXMgb25jZSBpdCdzIGltcGxlbWVudGVkLgorICAgIC8vIFdlIGFs
c28gc2hvdWxkIHBhc3MgdGhlIGN1cnJlbnQgZmxpbmcgcGFyYW1ldGVycyBvdXQgdG8gdGhlIGNs
aWVudCBzbyB0aGUgcmVzdCBvZiB0aGUgZmxpbmcgY2FuIGJlCisgICAgLy8gdHJhbnNmZXJyZWQg
dG8gdGhlIG1haW4gdGhyZWFkLgogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVy
Q2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lu
cHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCiAg
ICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJD
bGllbnQ6OlNjcm9sbEZhaWxlZCkpOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5k
bGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CiAgICAgRVhQRUNUX0NB
TEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEVuZCgpKS5UaW1lcygwKTsKKwor
ICAgIC8vIEV4cGVjdGVkIHdoZWVsIGZsaW5nIGFuaW1hdGlvbiBwYXJhbWV0ZXJzOgorICAgIC8v
ICopIGZsaW5nRGVsdGEgYW5kIGZsaW5nUG9pbnQgc2hvdWxkIG1hdGNoIHRoZSBvcmlnaW5hbCBH
ZXN0dXJlRmxpbmdTdGFydCBldmVudAorICAgIC8vICopIHN0YXJ0VGltZSB3aWxsIGhhdmUgY2hh
bmdlZCBmcm9tIG1vbm90b25pYyAxMCB0byBzb21ldGhpbmcgc3RyYW5nZS4KKyAgICAvLyAqKSBj
dW11bGF0aXZlU2Nyb2xsIGRlcGVuZHMgb24gdGhlIGN1cnZlLCBidXQgc2luY2Ugd2UndmUgYW5p
bWF0ZWQgaW4gdGhlIC1YIGRpcmVjdGlvbiB0aGUgWCB2YWx1ZSBzaG91bGQgYmUgPCAwCisgICAg
RVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHRyYW5zZmVyQWN0aXZlV2hl
ZWxGbGluZ0FuaW1hdGlvbih0ZXN0aW5nOjpBbGxPZigKKyAgICAgICAgdGVzdGluZzo6RmllbGQo
JldlYkNvcmU6OkNDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmRlbHRhLCB0ZXN0aW5nOjpF
cShmbGluZ0RlbHRhKSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpDQ0FjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpwb2ludCwgdGVzdGluZzo6RXEoZmxpbmdQb2ludCkpLAor
ICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6Q0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1l
dGVyczo6Z2xvYmFsUG9pbnQsIHRlc3Rpbmc6OkVxKGZsaW5nR2xvYmFsUG9pbnQpKSwKKyAgICAg
ICAgdGVzdGluZzo6RmllbGQoJldlYkNvcmU6OkNDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6
Om1vZGlmaWVycywgdGVzdGluZzo6RXEobW9kaWZpZXJzKSksCisgICAgICAgIHRlc3Rpbmc6OkZp
ZWxkKCZXZWJDb3JlOjpDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpzdGFydFRpbWUsIHRl
c3Rpbmc6OkVxKDEwKSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpDQ0FjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpjdW11bGF0aXZlU2Nyb2xsLAorICAgICAgICAgICAgdGVz
dGluZzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6OndpZHRoLCB0ZXN0aW5nOjpHdCgwKSkp
KSkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwLjIpOwogCiAgICAgdGVzdGluZzo6
TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xp
ZW50KTsKQEAgLTM4Myw2ICs0MTEsMTUyIEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ0FuaW1hdGVzKQogICAgIEVYUEVDVF9DQUxMKG1fbW9j
a0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKS5UaW1lcygwKTsKICAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVz
dGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDApOwogICAgIG1faW5wdXRIYW5kbGVyLT5hbmlt
YXRlKDEwLjMpOworCisgICAgLy8gU2luY2Ugd2UndmUgdHJhbnNmZXJyZWQgdGhlIGZsaW5nIHRv
IHRoZSBtYWluIHRocmVhZCwgd2UgbmVlZCB0byBwYXNzIHRoZSBuZXh0IEdlc3R1cmVGbGluZ0Nh
bmNlbCB0byB0aGUgbWFpbgorICAgIC8vIHRocmVhZCBhcyB3ZWxsLgorICAgIEVYUEVDVF9DQUxM
KG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudCh0cnVlKSk7CisgICAgZ2VzdHVy
ZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw7CisgICAg
bV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7Cit9CisKK1RFU1RfRihX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ1RyYW5zZmVyUmVz
ZXRzKQoreworICAgIC8vIFdlIHNob3VsZG4ndCBzZW5kIGFueSBldmVudHMgdG8gdGhlIHdpZGdl
dCBmb3IgdGhpcyBnZXN0dXJlLgorICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZEhhbmRs
ZTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CisKKyAgICAvLyBTdGFydCBhIGdlc3R1
cmUgZmxpbmcgaW4gdGhlIC1YIGRpcmVjdGlvbiB3aXRoIHplcm8gWSBtb3ZlbWVudC4KKyAgICBn
ZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0Owor
ICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBmbGluZ0RlbHRhID0gV2ViQ29yZTo6RmxvYXRTaXplKDEw
MDAsIDApOworICAgIFdlYkNvcmU6OkludFBvaW50IGZsaW5nUG9pbnQgPSBXZWJDb3JlOjpJbnRQ
b2ludCg3LCAxMyk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgZmxpbmdHbG9iYWxQb2ludCA9IFdl
YkNvcmU6OkludFBvaW50KDE3LCAyMyk7CisgICAgaW50IG1vZGlmaWVycyA9IDE7CisgICAgZ2Vz
dHVyZS5kZWx0YVggPSBmbGluZ0RlbHRhLndpZHRoKCk7CisgICAgZ2VzdHVyZS5kZWx0YVkgPSBm
bGluZ0RlbHRhLmhlaWdodCgpOworICAgIGdlc3R1cmUueCA9IGZsaW5nUG9pbnQueCgpOworICAg
IGdlc3R1cmUueSA9IGZsaW5nUG9pbnQueSgpOworICAgIGdlc3R1cmUuZ2xvYmFsWCA9IGZsaW5n
R2xvYmFsUG9pbnQueCgpOworICAgIGdlc3R1cmUuZ2xvYmFsWSA9IGZsaW5nR2xvYmFsUG9pbnQu
eSgpOworICAgIGdlc3R1cmUubW9kaWZpZXJzID0gbW9kaWZpZXJzOworICAgIEVYUEVDVF9DQUxM
KG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBF
WFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGlu
Zzo6XywgdGVzdGluZzo6XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2Vi
Q29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKKyAgICBtX2lucHV0
SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKKworICAgIHRlc3Rpbmc6Ok1vY2s6
OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7
CisKKyAgICAvLyBTdGFydCB0aGUgZmxpbmcgYW5pbWF0aW9uIGF0IHRpbWUgMTAuIFRoaXMgc2hv
dWxkbid0IGFjdHVhbGx5IHNjcm9sbCwganVzdCBlc3RhYmxpc2ggYSBzdGFydCB0aW1lLgorICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlv
bigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xs
QmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDApOworICAgIG1faW5wdXRIYW5k
bGVyLT5hbmltYXRlKDEwKTsKKworICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhw
ZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisKKyAgICAvLyBUaGUgc2Vj
b25kIGNhbGwgc2hvdWxkIHN0YXJ0IHNjcm9sbGluZyBpbiB0aGUgLVggZGlyZWN0aW9uLgorICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlv
bigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xs
QmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5n
OjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsK
KyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVz
dGluZzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6OndpZHRoLCB0ZXN0aW5nOjpMdCgwKSkp
KTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5k
KCkpOworICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwLjEpOworCisgICAgdGVzdGluZzo6
TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xp
ZW50KTsKKworICAgIC8vIExldCdzIHNheSBvbiB0aGUgdGhpcmQgY2FsbCB3ZSBoaXQgYSBub24t
c2Nyb2xsYWJsZSByZWdpb24uIFdlIHNob3VsZCBhYm9ydCB0aGUgZmxpbmcgYW5kIG5vdCBzY3Jv
bGwuCisgICAgLy8gV2UgYWxzbyBzaG91bGQgcGFzcyB0aGUgY3VycmVudCBmbGluZyBwYXJhbWV0
ZXJzIG91dCB0byB0aGUgY2xpZW50IHNvIHRoZSByZXN0IG9mIHRoZSBmbGluZyBjYW4gYmUKKyAg
ICAvLyB0cmFuc2ZlcnJlZCB0byB0aGUgbWFpbiB0aHJlYWQuCisgICAgRVhQRUNUX0NBTEwobV9t
b2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOworICAgIEVYUEVD
VF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpf
LCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3Jl
OjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKSk7CisgICAgRVhQRUNUX0NBTEwo
bV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6Ol8pKS5UaW1lcygw
KTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5k
KCkpLlRpbWVzKDApOworCisgICAgLy8gRXhwZWN0ZWQgd2hlZWwgZmxpbmcgYW5pbWF0aW9uIHBh
cmFtZXRlcnM6CisgICAgLy8gKikgZmxpbmdEZWx0YSBhbmQgZmxpbmdQb2ludCBzaG91bGQgbWF0
Y2ggdGhlIG9yaWdpbmFsIEdlc3R1cmVGbGluZ1N0YXJ0IGV2ZW50CisgICAgLy8gKikgc3RhcnRU
aW1lIHNob3VsZCBiZSAxMCB0byBtYXRjaCB0aGUgdGltZSBwYXJhbWV0ZXIgb2YgdGhlIGZpcnN0
IGFuaW1hdGUoKSBjYWxsIGFmdGVyIHRoZSBHZXN0dXJlRmxpbmdTdGFydAorICAgIC8vICopIGN1
bXVsYXRpdmVTY3JvbGwgZGVwZW5kcyBvbiB0aGUgY3VydmUsIGJ1dCBzaW5jZSB3ZSd2ZSBhbmlt
YXRlZCBpbiB0aGUgLVggZGlyZWN0aW9uIHRoZSBYIHZhbHVlIHNob3VsZCBiZSA8IDAKKyAgICBF
WFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgdHJhbnNmZXJBY3RpdmVXaGVl
bEZsaW5nQW5pbWF0aW9uKHRlc3Rpbmc6OkFsbE9mKAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgm
V2ViQ29yZTo6Q0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6ZGVsdGEsIHRlc3Rpbmc6OkVx
KGZsaW5nRGVsdGEpKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkNvcmU6OkNDQWN0aXZl
V2hlZWxGbGluZ1BhcmFtZXRlcnM6OnBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ1BvaW50KSksCisg
ICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0
ZXJzOjpnbG9iYWxQb2ludCwgdGVzdGluZzo6RXEoZmxpbmdHbG9iYWxQb2ludCkpLAorICAgICAg
ICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6Q0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6
bW9kaWZpZXJzLCB0ZXN0aW5nOjpFcShtb2RpZmllcnMpKSwKKyAgICAgICAgdGVzdGluZzo6Rmll
bGQoJldlYkNvcmU6OkNDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OnN0YXJ0VGltZSwgdGVz
dGluZzo6RXEoMTApKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkNvcmU6OkNDQWN0aXZl
V2hlZWxGbGluZ1BhcmFtZXRlcnM6OmN1bXVsYXRpdmVTY3JvbGwsCisgICAgICAgICAgICB0ZXN0
aW5nOjpQcm9wZXJ0eSgmV2ViQ29yZTo6SW50U2l6ZTo6d2lkdGgsIHRlc3Rpbmc6Okd0KDApKSkp
KSk7CisgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMik7CisKKyAgICB0ZXN0aW5nOjpN
b2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGll
bnQpOworCisgICAgLy8gU2luY2Ugd2UndmUgYWJvcnRlZCB0aGUgZmxpbmcsIHRoZSBuZXh0IGFu
aW1hdGlvbiBzaG91bGQgYmUgYSBuby1vcCBhbmQgc2hvdWxkIG5vdCByZXN1bHQgaW4gYW5vdGhl
cgorICAgIC8vIGZyYW1lIGJlaW5nIHJlcXVlc3RlZC4KKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tD
Q0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSkuVGltZXMoMCk7CisgICAg
RVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rp
bmc6Ol8sIHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKKyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0
ZSgxMC4zKTsKKworICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25z
KCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisKKyAgICAvLyBTaW5jZSB3ZSd2ZSB0cmFu
c2ZlcnJlZCB0aGUgZmxpbmcgdG8gdGhlIG1haW4gdGhyZWFkLCB3ZSBuZWVkIHRvIHBhc3MgdGhl
IG5leHQgR2VzdHVyZUZsaW5nQ2FuY2VsIHRvIHRoZSBtYWluCisgICAgLy8gdGhyZWFkIGFzIHdl
bGwuCisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50
KHRydWUpKTsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1
cmVGbGluZ0NhbmNlbDsKKyAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0
dXJlKTsKKworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKKworICAgIC8vIFN0YXJ0IGEg
c2Vjb25kIGdlc3R1cmUgZmxpbmcsIHRoaXMgdGltZSBpbiB0aGUgK1kgZGlyZWN0aW9uIHdpdGgg
bm8gWC4KKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVG
bGluZ1N0YXJ0OworICAgIGZsaW5nRGVsdGEgPSBXZWJDb3JlOjpGbG9hdFNpemUoMCwgLTEwMDAp
OworICAgIGZsaW5nUG9pbnQgPSBXZWJDb3JlOjpJbnRQb2ludCg5NSwgODcpOworICAgIGZsaW5n
R2xvYmFsUG9pbnQgPSBXZWJDb3JlOjpJbnRQb2ludCgzMiwgNzEpOworICAgIG1vZGlmaWVycyA9
IDI7CisgICAgZ2VzdHVyZS5kZWx0YVggPSBmbGluZ0RlbHRhLndpZHRoKCk7CisgICAgZ2VzdHVy
ZS5kZWx0YVkgPSBmbGluZ0RlbHRhLmhlaWdodCgpOworICAgIGdlc3R1cmUueCA9IGZsaW5nUG9p
bnQueCgpOworICAgIGdlc3R1cmUueSA9IGZsaW5nUG9pbnQueSgpOworICAgIGdlc3R1cmUuZ2xv
YmFsWCA9IGZsaW5nR2xvYmFsUG9pbnQueCgpOworICAgIGdlc3R1cmUuZ2xvYmFsWSA9IGZsaW5n
R2xvYmFsUG9pbnQueSgpOworICAgIGdlc3R1cmUubW9kaWZpZXJzID0gbW9kaWZpZXJzOworICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlv
bigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xs
QmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5n
OjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsK
KyAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKKworICAgIHRl
c3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFu
ZGxlckNsaWVudCk7CisKKyAgICAvLyBTdGFydCB0aGUgc2Vjb25kIGZsaW5nIGFuaW1hdGlvbiBh
dCB0aW1lIDMwLgorICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBz
Y2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxl
ckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDApOwor
ICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDMwKTsKKworICAgIHRlc3Rpbmc6Ok1vY2s6OlZl
cmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisK
KyAgICAvLyBUaWNrIHRoZSBzZWNvbmQgZmxpbmcgb25jZSBub3JtYWxseS4KKyAgICBFWFBFQ1Rf
Q0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7Cisg
ICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRl
c3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJu
KFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7CisgICAgRVhQ
RUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6OlBy
b3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjpoZWlnaHQsIHRlc3Rpbmc6Okd0KDApKSkpOworICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSk7Cisg
ICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMzAuMSk7CisKKyAgICB0ZXN0aW5nOjpNb2NrOjpW
ZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOwor
CisgICAgLy8gVGhlbiBhYm9ydCB0aGUgc2Vjb25kIGZsaW5nLgorICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBFWFBF
Q1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6
XywgdGVzdGluZzo6XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29y
ZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCkpOworICAgIEVYUEVDVF9DQUxM
KG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5nOjpfKSkuVGltZXMo
MCk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEVu
ZCgpKS5UaW1lcygwKTsKKworICAgIC8vIFdlIHNob3VsZCBnZXQgcGFyYW1ldGVycyBmcm9tIHRo
ZSBzZWNvbmQgZmxpbmcsIG5vdGhpbmcgZnJvbSB0aGUgZmlyc3QgZmxpbmcgc2hvdWxkICJsZWFr
Ii4KKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgdHJhbnNmZXJB
Y3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKHRlc3Rpbmc6OkFsbE9mKAorICAgICAgICB0ZXN0aW5n
OjpGaWVsZCgmV2ViQ29yZTo6Q0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6ZGVsdGEsIHRl
c3Rpbmc6OkVxKGZsaW5nRGVsdGEpKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkNvcmU6
OkNDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OnBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ1Bv
aW50KSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpDQ0FjdGl2ZVdoZWVsRmxp
bmdQYXJhbWV0ZXJzOjpnbG9iYWxQb2ludCwgdGVzdGluZzo6RXEoZmxpbmdHbG9iYWxQb2ludCkp
LAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6Q0NBY3RpdmVXaGVlbEZsaW5nUGFy
YW1ldGVyczo6bW9kaWZpZXJzLCB0ZXN0aW5nOjpFcShtb2RpZmllcnMpKSwKKyAgICAgICAgdGVz
dGluZzo6RmllbGQoJldlYkNvcmU6OkNDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OnN0YXJ0
VGltZSwgdGVzdGluZzo6RXEoMzApKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkNvcmU6
OkNDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmN1bXVsYXRpdmVTY3JvbGwsCisgICAgICAg
ICAgICB0ZXN0aW5nOjpQcm9wZXJ0eSgmV2ViQ29yZTo6SW50U2l6ZTo6aGVpZ2h0LCB0ZXN0aW5n
OjpMdCgwKSkpKSkpOworICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDMwLjIpOwogfQogCiB9
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>