<?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>81740</bug_id>
          
          <creation_ts>2012-03-20 22:13:24 -0700</creation_ts>
          <short_desc>[chromium] Transfer wheel fling via WebCompositorInputHandlerClient</short_desc>
          <delta_ts>2012-03-27 23:08:40 -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>82154</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</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>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>583810</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-20 22:13:24 -0700</bug_when>
    <thetext>[chromium] Transfer wheel fling via WebCompositorInputHandlerClient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583812</commentid>
    <comment_count>1</comment_count>
      <attachid>132970</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-20 22:14:27 -0700</bug_when>
    <thetext>Created attachment 132970
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583823</commentid>
    <comment_count>2</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-20 22:31:30 -0700</bug_when>
    <thetext>Did the cc input handler changes not make it into this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583850</commentid>
    <comment_count>3</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-20 23:43:53 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Did the cc input handler changes not make it into this patch?

Oh, I&apos;m retarded. Just saw the notes on the previous bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583882</commentid>
    <comment_count>4</comment_count>
      <attachid>132986</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-21 01:10:51 -0700</bug_when>
    <thetext>Created attachment 132986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583884</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 01:14:35 -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>583903</commentid>
    <comment_count>6</comment_count>
      <attachid>132986</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 01:53:05 -0700</bug_when>
    <thetext>Comment on attachment 132986
Patch

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

New failing tests:
fast/dom/error-to-string-stack-overflow.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584367</commentid>
    <comment_count>7</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-21 11:07:23 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 132986 [details])
&gt; Attachment 132986 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/12070273
&gt; 
&gt; New failing tests:
&gt; fast/dom/error-to-string-stack-overflow.html

That looks like flake.

This all looks fine to me.  jamesr, do you have any feedback on Nat&apos;s modification of your original patch? Otherwise, I&apos;m inclined to R+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584370</commentid>
    <comment_count>8</comment_count>
      <attachid>132986</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-21 11:08:57 -0700</bug_when>
    <thetext>Comment on attachment 132986
Patch

I think everything looks fine.  I expect this will have more merge conflicts on landing, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584374</commentid>
    <comment_count>9</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-21 11:10:24 -0700</bug_when>
    <thetext>*** Bug 81479 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584375</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-21 11:12:12 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; *** Bug 81479 has been marked as a duplicate of this bug. ***

They aren&apos;t strictly speaking dupes. https://bugs.webkit.org/show_bug.cgi?id=81479 is a hookup path that works purely in WebKit land, so it&apos;s a one-patch fix.  This patch depends on chromium-side changes that aren&apos;t fully baked yet.  So if we want something that works quickly then I think https://bugs.webkit.org/show_bug.cgi?id=81479 is the way to go, despite being uglier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585069</commentid>
    <comment_count>11</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-22 01:56:37 -0700</bug_when>
    <thetext>Yeah, I actually will probably go back to the original patch or a slight variation on it. This patch relies on compositor ids being == routing ids, which isn&apos;t the case. We could make it that case but that itself is clunky. I think its fine to go through the proxy. Maybe if this becomes more commonplace, we can figure out the right magic to make this less pipey.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587074</commentid>
    <comment_count>12</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-24 04:13:29 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587075</commentid>
    <comment_count>13</comment_count>
      <attachid>133629</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-24 04:13:31 -0700</bug_when>
    <thetext>Created attachment 133629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587076</commentid>
    <comment_count>14</comment_count>
      <attachid>133629</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-24 04:14:21 -0700</bug_when>
    <thetext>Comment on attachment 133629
Patch

Darnit, wrong bug #</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588228</commentid>
    <comment_count>15</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-26 15:50:59 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588229</commentid>
    <comment_count>16</comment_count>
      <attachid>133913</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-26 15:51:02 -0700</bug_when>
    <thetext>Created attachment 133913
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588234</commentid>
    <comment_count>17</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-26 15:53:52 -0700</bug_when>
    <thetext>Depends on http://codereview.chromium.org/9802006/.

I think this hookup is fairly clean. It does depend on https://bugs.webkit.org/show_bug.cgi?id=82154 to get the right clock on the main thread (since the start time passed through is monotonic).

Nat pointed out that it might be useful to have a generic &quot;run this task on the main thread&quot; interface from the WebCompositorInputHandler or similar. I think we should consider adding it as soon as we have a 2nd caller that would use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588311</commentid>
    <comment_count>18</comment_count>
      <attachid>133913</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-26 16:45:41 -0700</bug_when>
    <thetext>Comment on attachment 133913
Patch

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

The WebKit side looks good to me.  A few minor comments:

&gt; Source/WebCore/platform/ActivePlatformGestureAnimation.cpp:73
&gt; +{
&gt; +}

Can you put a trace event here, like the other constructor?

&gt; Source/WebKit/chromium/tests/WebCompositorInputHandlerImplTest.cpp:397
&gt; +    // *) cumulativeScroll depends on the curve, but since we&apos;ve animated in the -X direction the X value should be &lt; 0

These sign flips are all really hard to follow.  The delta being positive means animating in the negative direction, and the X value being &lt; 0 means the cumulative scroll is &gt; 0.  Is there any way to make these comments or variable names more readable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588322</commentid>
    <comment_count>19</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-26 16:51:56 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 133913 [details])
I&apos;m fine with this approach in the interests of getting this landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588465</commentid>
    <comment_count>20</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-26 19:01:09 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 133913 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133913&amp;action=review
&gt; 
&gt; The WebKit side looks good to me.  A few minor comments:
&gt; 
&gt; &gt; Source/WebCore/platform/ActivePlatformGestureAnimation.cpp:73
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; Can you put a trace event here, like the other constructor?

Done

&gt; 
&gt; &gt; Source/WebKit/chromium/tests/WebCompositorInputHandlerImplTest.cpp:397
&gt; &gt; +    // *) cumulativeScroll depends on the curve, but since we&apos;ve animated in the -X direction the X value should be &lt; 0
&gt; 
&gt; These sign flips are all really hard to follow.  The delta being positive means animating in the negative direction, and the X value being &lt; 0 means the cumulative scroll is &gt; 0.  Is there any way to make these comments or variable names more readable?

I agree - at least now the WebCompositorInputHandlerImpl code is consistent with what WebViewImpl does. I can&apos;t think of much else really brilliant to do, tho.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588474</commentid>
    <comment_count>21</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-26 19:09:58 -0700</bug_when>
    <thetext>Depends on https://bugs.webkit.org/show_bug.cgi?id=82154 to pass the monotonic clock into m_gestureAnimations-&gt;animate in WebViewImpl::updateAnimations(). This patch will still compile, but the transferred animations will have a bad timebase before https://bugs.webkit.org/show_bug.cgi?id=82154 lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589646</commentid>
    <comment_count>22</comment_count>
      <attachid>134213</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-27 21:32:59 -0700</bug_when>
    <thetext>Created attachment 134213
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589674</commentid>
    <comment_count>23</comment_count>
      <attachid>134213</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-27 23:08:33 -0700</bug_when>
    <thetext>Comment on attachment 134213
Patch for landing

Clearing flags on attachment: 134213

Committed r112364: &lt;http://trac.webkit.org/changeset/112364&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589675</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-27 23:08:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132970</attachid>
            <date>2012-03-20 22:14:27 -0700</date>
            <delta_ts>2012-03-21 01:10:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81740-20120320221426.patch</filename>
            <type>text/plain</type>
            <size>62397</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk1ZWI5ZDJiMTk1YTg4
MzcyNGI0ZDE3OTRjMjJlOGE4YTI1OGM0ZS4uNDhkNmM5NjdhMDczZTMwODY3MDk0Mzc2MjRlZDhh
NWM1YTZkODM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTIwICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBU
cmFuc2ZlciB3aGVlbCBmbGluZyB2aWEgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE3NDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVQbGF0
Zm9ybUdlc3R1cmVBbmltYXRpb246OkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbik6Cisg
ICAgICAgICogcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmg6CisgICAg
ICAgIChBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L1BsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ub3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hG
bGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxh
dGZvcm1HZXN0dXJlQ3VydmU6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ub3VjaEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmUuaDoKKyAgICAgICAgKFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZSk6CisgICAgICAgICogcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZS5oOgorICAgICAgICAoV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0dlc3R1cmVDdXJ2ZVRhcmdldCk6CisKIDIwMTIt
MDMtMjAgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gVHVuZSBmbGluZyBwaHlzaWNzIGN1cnZlLiBbTm90IGZvciByZXZpZXcg
eWV0XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiZTRlYmJhNDM3ODQzOGZkNjBhODIy
YzI1NWYxODg1YTVlNDg3YTUwLi43Mzk4MTQ4YWE0OGJkZTVjOTI3NmZjYzhhNmFhMzRhNGJhZGMw
NDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTAz
LTIwICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2No
cm9taXVtXSBUcmFuc2ZlciB3aGVlbCBmbGluZyB2aWEgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODE3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHB1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50
LmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFt
ZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6
V2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMpOgorICAgICAgICAqIHB1YmxpYy9XZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQ6OnRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1h
dGlvbik6CisgICAgICAgICogcHVibGljL1dlYlZpZXcuaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJWaWV3KToKKyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlVG9DQ0dlc3R1cmVB
ZGFwdGVyOjpzY3JvbGxCeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpjYW5jZWxDdXJyZW50RmxpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkpOgorICAgICAg
ICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbCk6CisgICAgICAgICog
c3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNjcm9s
bEJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24pOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAg
KFdlYlZpZXdJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRlc3Qu
Y3BwOgorICAgICAgICAqIHRlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50
OjpNb2NrV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudCk6CisgICAgICAgIChNb2NrV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlRFU1QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3Q6OldlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdDo6fldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
VGVzdCk6CisgICAgICAgIChXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpURVNUX0YpOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wMy0yMCAg
Vy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBUdW5lIGZsaW5nIHBoeXNpY3MgY3VydmUuIFtOb3QgZm9yIHJldmlldyB5ZXRdCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggM2IzYzU0ZGVjNzNhYjRiMWY1ZmI0NGRkNmM4NjhiZTQxYzdmZDhj
Ny4uN2UyMjRkZDkzYzc3ZDMzNjA4NDc3MTU2M2VkYzlhMTY1ZDBmNGU4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtMzM1OCw2ICszMzU4LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXRoQ0cuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1h
dGlvbk1hdHJpeENHLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFu
aW1hdGlvbi5jcHAKaW5kZXggMThlYzdlYjM0YWUyZTRlMDdiNTZjMTRhM2UwMmEzMzc4YmFkOWQ1
MC4uNmEwMTNhZGZiNDQ1ZDZkYzk1M2Q0Mzk3OGY0OTg1MDEzN2NjMGVmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmlt
YXRpb24uY3BwCkBAIC0zNyw2ICszNywxMSBAQCBQYXNzT3duUHRyPEFjdGl2ZVBsYXRmb3JtR2Vz
dHVyZUFuaW1hdGlvbj4gQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpjcmVhdAogICAg
IHJldHVybiBhZG9wdFB0cihuZXcgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKGN1cnZl
LCB0YXJnZXQpKTsKIH0KIAorUGFzc093blB0cjxBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRp
b24+IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFBhc3NPd25QdHI8UGxh
dGZvcm1HZXN0dXJlQ3VydmU+IGN1cnZlLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCogdGFy
Z2V0LCBkb3VibGUgc3RhcnRUaW1lKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQWN0aXZl
UGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKGN1cnZlLCB0YXJnZXQsIHN0YXJ0VGltZSkpOworfQor
CiBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246On5BY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb24oKQogewogfQpAQCAtNDksNiArNTQsMTQgQEAgQWN0aXZlUGxhdGZvcm1HZXN0dXJl
QW5pbWF0aW9uOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0cjxQbGF0
Zm8KIHsKIH0KIAorQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpBY3RpdmVQbGF0Zm9y
bUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3VydmUs
IFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0KiB0YXJnZXQsIGRvdWJsZSBzdGFydFRpbWUpCisg
ICAgOiBtX3N0YXJ0VGltZShzdGFydFRpbWUpCisgICAgLCBtX3dhaXRpbmdGb3JGaXJzdFRpY2so
ZmFsc2UpCisgICAgLCBtX2N1cnZlKGN1cnZlKQorICAgICwgbV90YXJnZXQodGFyZ2V0KQorewor
fQorCiBib29sIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6YW5pbWF0ZShkb3VibGUg
dGltZSkKIHsKICAgICBpZiAobV93YWl0aW5nRm9yRmlyc3RUaWNrKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5o
CmluZGV4IDlkNTYzZTQ4MzY2NmRkMmFkYTFiNWIwNWU4OTg0ZGYxNWJhYzcwMjQuLjIxZjE5OWMw
N2ExZmNmMzRjNThjMTI0OWYyYjg0ZTRjNTcxMWJjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5oCkBAIC00
Myw2ICs0Myw3IEBAIGNsYXNzIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbiB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKTsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRp
b24+IGNyZWF0ZShQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiwgUGxhdGZvcm1HZXN0
dXJlQ3VydmVUYXJnZXQqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxBY3RpdmVQbGF0Zm9ybUdl
c3R1cmVBbmltYXRpb24+IGNyZWF0ZShQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiwg
UGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqLCBkb3VibGUgc3RhcnRUaW1lKTsKICAgICB+QWN0
aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKCk7CiAKICAgICBib29sIGFuaW1hdGUoZG91Ymxl
IHRpbWUpOwpAQCAtNTAsNiArNTEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIEFzc3Vt
ZXMgYSB2YWxpZCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCB0aGF0IG91dGxpdmVzIHRoZSBh
bmltYXRpb24uCiAgICAgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8
UGxhdGZvcm1HZXN0dXJlQ3VydmU+LCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCopOworICAg
IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVy
ZUN1cnZlPiwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqLCBkb3VibGUgc3RhcnRUaW1lKTsK
IAogICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKICAgICBib29sIG1fd2FpdGluZ0ZvckZpcnN0VGlj
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUN1
cnZlVGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVDdXJ2
ZVRhcmdldC5oCmluZGV4IGIyOGIyOTJjMThkZjA0OGUzYzMwYTFkZjQ5NTMwNDJmYmVjMzA0NDku
LmQ5MGE5ZTE4MzhjZTI0OTg0ZjViNzA0MzU4NzU4YjIyMWI0NzA1OWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaApAQCAt
MjcsMTEgKzI3LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW50UG9pbnQ7
CitjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCB7CiBw
dWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFBvaW50JikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBJbnRTaXplJikgPSAwOwogICAgIC8vIEZJ
WE1FOiBhZGQgaW50ZXJmYWNlcyBmb3Igc2Nyb2xsKCksIGV0Yy4KIAogcHJvdGVjdGVkOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVy
ZUN1cnZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZS5jcHAKaW5kZXggNDNkYmYwYWM2ZjFkOTcxM2E2M2E2ZmRmMGVjMTY3NjIxODU2
NmFmZS4uZWE0MTk5YzVlMjhmYmE1MzlkOWMxYTU2ZDIwOGZkNDU3YmJiMjU3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0
dXJlQ3VydmUuY3BwCkBAIC0zNSwxMSArMzUsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAog
UGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVy
ZUN1cnZlOjpjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHkpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUodmVsb2NpdHkpKTsK
KyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSh2
ZWxvY2l0eSwgSW50U2l6ZSgpKSk7CiB9CiAKLVRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9j
aXR5KQorUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hGbGluZ1BsYXRmb3Jt
R2VzdHVyZUN1cnZlOjpjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IElu
dFNpemUmIGN1bXVsYXRpdmVTY3JvbGwpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUb3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUodmVsb2NpdHksIGN1bXVsYXRpdmVTY3JvbGwpKTsK
K30KKworVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpUb3VjaEZsaW5nUGxhdGZvcm1H
ZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IEludFNpemUmIGN1
bXVsYXRpdmVTY3JvbGwpCiAgICAgOiBtX3ZlbG9jaXR5KHZlbG9jaXR5KQorICAgICwgbV9jdW11
bGF0aXZlU2Nyb2xsKGN1bXVsYXRpdmVTY3JvbGwpCiAgICAgLCBtX3RpbWVTY2FsZUZhY3Rvcigx
MDAwIC8gbWF4KDEuZiwgbWF4KGZhYnModmVsb2NpdHkueCgpKSwgZmFicyh2ZWxvY2l0eS55KCkp
KSkpCiB7CiAgICAgQVNTRVJUKHZlbG9jaXR5ICE9IEZsb2F0UG9pbnQ6Onplcm8oKSk7CkBAIC03
MywxMSArNzksMTEgQEAgYm9vbCBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmFwcGx5
KGRvdWJsZSB0aW1lLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmcKICAgICAgICAgZGlzcGxhY2Vt
ZW50ID0gKDEgKyAocDEgLSAxKSAqIDEuNSArICgxIC0gMiAqIHAxKSArICgzICogcDEgLSAxKSAq
IDAuMjUpIC8gbV90aW1lU2NhbGVGYWN0b3I7CiAKICAgICAvLyBLZWVwIHRyYWNrIG9mIGludGVn
ZXIgcG9ydGlvbiBvZiBzY3JvbGwgdGh1cyBmYXIsIGFuZCBwcmVwYXJlIGluY3JlbWVudC4KLSAg
ICBJbnRQb2ludCBzY3JvbGwoZGlzcGxhY2VtZW50ICogbV92ZWxvY2l0eS54KCksIGRpc3BsYWNl
bWVudCAqIG1fdmVsb2NpdHkueSgpKTsKLSAgICBJbnRQb2ludCBzY3JvbGxJbmNyZW1lbnQoc2Ny
b2xsIC0gbV9jdW11bGF0aXZlU2Nyb2xsKTsKKyAgICBJbnRTaXplIHNjcm9sbChkaXNwbGFjZW1l
bnQgKiBtX3ZlbG9jaXR5LngoKSwgZGlzcGxhY2VtZW50ICogbV92ZWxvY2l0eS55KCkpOworICAg
IEludFNpemUgc2Nyb2xsSW5jcmVtZW50KHNjcm9sbCAtIG1fY3VtdWxhdGl2ZVNjcm9sbCk7CiAg
ICAgbV9jdW11bGF0aXZlU2Nyb2xsID0gc2Nyb2xsOwogCi0gICAgaWYgKHRpbWUgPCAxIHx8IHNj
cm9sbEluY3JlbWVudCAhPSBJbnRQb2ludDo6emVybygpKSB7CisgICAgaWYgKHRpbWUgPCAxIHx8
ICFzY3JvbGxJbmNyZW1lbnQuaXNaZXJvKCkpIHsKICAgICAgICAgdGFyZ2V0LT5zY3JvbGxCeShz
Y3JvbGxJbmNyZW1lbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZS5oCmluZGV4IGE3ZTFjZWMxMDFlMDEyYWNlZTJiMWZjMjFkOWM1MzA2MGExN2MzNGUuLmRmMThi
NTY5Zjg3YzE4YzNlMmQ0OTJmM2VjZmE1OGViOGQ4YTA0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCkBA
IC00MSwxNiArNDEsMTcgQEAgY2xhc3MgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQ7CiBjbGFz
cyBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUgOiBwdWJsaWMgUGxhdGZvcm1HZXN0dXJl
Q3VydmUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1
cnZlPiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHkpOworICAgIHN0YXRpYyBQYXNz
T3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVs
b2NpdHksIGNvbnN0IEludFNpemUmIGN1bXVsYXRpdmVTY3JvbGwpOwogICAgIHZpcnR1YWwgflRv
dWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSgpOwogCiAgICAgdmlydHVhbCBib29sIGFwcGx5
KGRvdWJsZSBtb25vdG9uaWNUaW1lLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCopOwogCiBw
cml2YXRlOgotICAgIGV4cGxpY2l0IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZShjb25z
dCBGbG9hdFBvaW50JiB2ZWxvY2l0eSk7CisgICAgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBJbnRTaXplJiBjdW11bGF0aXZl
U2Nyb2xsKTsKIAogICAgIEZsb2F0UG9pbnQgbV92ZWxvY2l0eTsKKyAgICBJbnRTaXplIG1fY3Vt
dWxhdGl2ZVNjcm9sbDsKICAgICBmbG9hdCBtX3RpbWVTY2FsZUZhY3RvcjsKLSAgICBJbnRQb2lu
dCBtX2N1bXVsYXRpdmVTY3JvbGw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJl
Q3VydmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlLmNwcAppbmRleCBjOWYxNzMyODk3OWNiN2M3MmZmMzlmN2VjYzIxMTEwZjQzM2Jj
Mzk5Li41MTZkMTNjMDNiYTE3NWQwM2ViNDQzY2ViYzUxY2I4MTA0YjNlOTIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZS5jcHAKQEAgLTU5LDExICs1OSwxMSBAQCBib29sIFdoZWVsRmxpbmdQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZTo6YXBwbHkoZG91YmxlIHRpbWUsIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZwog
ICAgIC8vIEZJWE1FOiBjb25zaWRlciBtYWtpbmcgdGhlIHZhbHVlIG9mIHNpZ21hIHNldHRhYmxl
IGluIHRoZSBjb25zdHJ1Y3Rvci4KICAgICBzdGF0aWMgZG91YmxlIHR3b1NpZ21hU3F1YXJlZElu
dmVyc2UgPSAxNjsgLy8gc2lnbWEgPSAwLjI1CiAgICAgZmxvYXQgY2RmID0gMSAtIGV4cCgtdGlt
ZSAqIHRpbWUgKiB0d29TaWdtYVNxdWFyZWRJbnZlcnNlKTsKLSAgICBJbnRQb2ludCBzY3JvbGwo
Y2RmICogbV92ZWxvY2l0eS54KCksIGNkZiAqIG1fdmVsb2NpdHkueSgpKTsKLSAgICBJbnRQb2lu
dCBzY3JvbGxJbmNyZW1lbnQoc2Nyb2xsIC0gbV9jdW11bGF0aXZlU2Nyb2xsKTsKKyAgICBJbnRT
aXplIHNjcm9sbChjZGYgKiBtX3ZlbG9jaXR5LngoKSwgY2RmICogbV92ZWxvY2l0eS55KCkpOwor
ICAgIEludFNpemUgc2Nyb2xsSW5jcmVtZW50KHNjcm9sbCAtIG1fY3VtdWxhdGl2ZVNjcm9sbCk7
CiAgICAgbV9jdW11bGF0aXZlU2Nyb2xsID0gc2Nyb2xsOwogCi0gICAgaWYgKGNkZiA8IDAuNSB8
fCBzY3JvbGxJbmNyZW1lbnQgIT0gSW50UG9pbnQ6Onplcm8oKSkgeworICAgIGlmIChjZGYgPCAw
LjUgfHwgIXNjcm9sbEluY3JlbWVudC5pc1plcm8oKSkgewogICAgICAgICB0YXJnZXQtPnNjcm9s
bEJ5KHNjcm9sbEluY3JlbWVudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVy
ZUN1cnZlLmgKaW5kZXggYjcyMTQ2MTY1MzMzZjIzYzhjOWJiZjZjMDFkZGJmMDY3YWVlMWFjMi4u
ZDA5NTU2NmE5MjEyZWQzMWY1MjAwNjJlMTcyZmRlYzQ4MGMzYzZjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZl
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICBXaGVlbEZsaW5nUGxhdGZvcm1HZXN0
dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHkpOwogCiAgICAgRmxvYXRQb2ludCBt
X3ZlbG9jaXR5OwotICAgIEludFBvaW50IG1fY3VtdWxhdGl2ZVNjcm9sbDsKKyAgICBJbnRTaXpl
IG1fY3VtdWxhdGl2ZVNjcm9sbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR2Vz
dHVyZUN1cnZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0dlc3R1cmVDdXJ2ZS5oCmluZGV4IDVkOThhZjRjNmM5MmIwNzQ4Mjg2MmM2MzU2NTlhZDNk
ODJhZWM3M2UuLjQ3ZjIyNzdlNmJlN2ZjZDliMzAwOGU4ZTZkMTRmY2FiODljMzk3ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR2Vz
dHVyZUN1cnZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NHZXN0dXJlQ3VydmUuaApAQCAtMjcsMTMgKzI3LDEzIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgSW50UG9pbnQ7CitjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBDQ0dl
c3R1cmVDdXJ2ZVRhcmdldCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0NHZXN0dXJlQ3VydmVU
YXJnZXQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBJbnRQb2ludCYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYpID0gMDsKICAg
ICAvLyBGSVhNRTogYWRkIGludGVyZmFjZXMgZm9yIHNjcm9sbCgpLCBldGMuCiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5n
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjI3N2Q1ZmQ0YzY3ZGYxYTI0MWZhNmFh
MmNiMjVjYTQ5NjRhYjRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaApAQCAtMCwwICsxLDU0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyc19oCisjZGVmaW5l
IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzX2gKKworI2luY2x1ZGUgInBsYXRmb3JtL1dl
YkNvbW1vbi5oIgorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmxvYXRQb2ludC5oIgorI2luY2x1
ZGUgInBsYXRmb3JtL1dlYlBvaW50LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0
ZXJzIHsKKyAgICBXZWJGbG9hdFBvaW50IGRlbHRhOworICAgIFdlYlBvaW50IHBvaW50OworICAg
IFdlYlBvaW50IGdsb2JhbFBvaW50OworICAgIGludCBtb2RpZmllcnM7CisgICAgV2ViU2l6ZSBj
dW11bGF0aXZlU2Nyb2xsOworICAgIGRvdWJsZSBzdGFydFRpbWU7CisKKyAgICBXZWJBY3RpdmVX
aGVlbEZsaW5nUGFyYW1ldGVycygpCisgICAgICAgIDogbW9kaWZpZXJzKDApCisgICAgICAgICwg
c3RhcnRUaW1lKDApCisgICAgeworICAgIH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVyQ2xpZW50LmgKaW5kZXggZThiYjU1NTk4MzRkZDE4M2EyNTg0OTg1MTdlMjJlNjA1
YTQ2ZmUwMS4uN2M5MTFkOGY4ZWMwMzAxZDZlMWVhYTUyNjQ3Mjg3NWMyNGQ4OWIzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJDbGllbnQuaApAQCAtMjgsNiArMjgsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAorc3RydWN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOworCiBjbGFz
cyBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICAvLyBDYWxs
YmFja3MgaW52b2tlZCBmcm9tIHRoZSBjb21wb3NpdG9yIHRocmVhZC4KQEAgLTQyLDYgKzQ0LDEw
IEBAIHB1YmxpYzoKICAgICAvLyBzaG91bGQgYmUgZm9yd2FyZGVkIHRvIHRoZSBXZWJXaWRnZXQg
YXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcG9zaXRvciBmb3IgZnVydGhlciBwcm9jZXNzaW5nLgog
ICAgIHZpcnR1YWwgdm9pZCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KGJvb2wgc2VuZFRvV2lkZ2V0
KSA9IDA7CiAKKyAgICAvLyBUcmFuc2ZlcnMgYW4gYWN0aXZlIHdoZWVsIGZsaW5nIGFuaW1hdGlv
biBpbml0aWF0ZWQgYnkgYSBwcmV2aW91c2x5IGhhbmRsZWQgaW5wdXQgZXZlbnQgb3V0IHRvIHRo
ZSBjbGllbnQuCisgICAgLy8gRklYTUU6IE1ha2UgcHVyZSB2aXJ0dWFsIG9uY2UgaW1wbGVtZW50
YXRpb24gbGFuZHMgb24gQ2hyb21pdW0gc2lkZS4KKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJB
Y3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0
ZXJzJikgeyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5XZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVyQ2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmll
dy5oCmluZGV4IDNjOGFlNDQ4NGRhMjUzYTgzNDVkMWQ2ZjUyYjEyMWM5NDY1NGYxMzMuLmE1ZWJk
NzJlMTExY2Y0ZWE2NzQzMjE4ZWI1NDRhMjU1ODE4YzAyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTU0LDYgKzU0LDcgQEAgY2xhc3MgV2ViU2V0dGluZ3M7
CiBjbGFzcyBXZWJTcGVsbENoZWNrQ2xpZW50OwogY2xhc3MgV2ViU3RyaW5nOwogY2xhc3MgV2Vi
Vmlld0NsaWVudDsKK3N0cnVjdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczsKIHN0cnVj
dCBXZWJNZWRpYVBsYXllckFjdGlvbjsKIHN0cnVjdCBXZWJQbHVnaW5BY3Rpb247CiBzdHJ1Y3Qg
V2ViUG9pbnQ7CkBAIC00MjgsNiArNDI5LDEwIEBAIHB1YmxpYzoKICAgICAvLyBDYW4gYmUgdXNl
ZCBmb3IgYWxsb2NhdGluZyByZXNvdXJjZXMgdGhhdCB0aGUgY29tcG9zaXRvciB3aWxsIGxhdGVy
IGFjY2Vzcy4KICAgICB2aXJ0dWFsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBzaGFyZWRHcmFwaGlj
c0NvbnRleHQzRCgpID0gMDsKIAorICAgIC8vIENhbGxlZCB0byBpbmZvcm0gdGhlIFdlYlZpZXcg
dGhhdCBhIHdoZWVsIGZsaW5nIGFuaW1hdGlvbiB3YXMgc3RhcnRlZCBleHRlcm5hbGx5IChmb3Ig
aW5zdGFuY2UKKyAgICAvLyBieSB0aGUgY29tcG9zaXRvcikgYnV0IG11c3QgYmUgY29tcGxldGVk
IGJ5IHRoZSBXZWJWaWV3LgorICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlcldoZWVsRmxpbmdBbmlt
YXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSA9IDA7CisKICAgICAv
LyBWaXNpYmlsaXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKICAgICAvLyBTZXRzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBXZWJW
aWV3LgpAQCAtNDUyLDcgKzQ1Nyw2IEBAIHB1YmxpYzoKICAgICAvLyBTaW11bGF0ZXMgYSBjb21w
b3NpdG9yIGxvc3QgY29udGV4dC4KICAgICB2aXJ0dWFsIHZvaWQgbG9zZUNvbXBvc2l0b3JDb250
ZXh0KGludCBudW1UaW1lcykgPSAwOwogCi0KIHByb3RlY3RlZDoKICAgICB+V2ViVmlldygpIHt9
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCmluZGV4IGE0Y2M3MTgyY2RiOTI3MTMwYWJmMGEz
MGM4NjlhMGE2NTQ3MjAwZDguLjgxNjM2NGY0NWU3MjQ3YzY2MzViN2FkMjMzMTczODEzYTc0OGM2
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbV9jdXJ2ZS0+YXBwbHkodGltZSwgdGhpcyk7CiAgICAgfQogCi0gICAg
dmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFBvaW50JiBzY3JvbGxEZWx0YSkKKyAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiAgICAgewog
ICAgICAgICBBU1NFUlQobV90YXJnZXQpOwogICAgICAgICBtX3RhcmdldC0+c2Nyb2xsQnkoc2Ny
b2xsRGVsdGEpOwpAQCAtMjU5LDkgKzI1OSwxMiBAQCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbDo6RXZlbnREaXNwb3NpdGlvbiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAog
ICAgIHN3aXRjaCAoc2Nyb2xsU3RhdHVzKSB7CiAgICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVu
dDo6U2Nyb2xsU3RhcnRlZDogewogICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAi
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZzo6c3RhcnRl
ZCIpOwotICAgICAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGZsaW5nQ3VydmUgPSBU
b3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShGbG9hdFBvaW50KC1nZXN0dXJl
RXZlbnQuZGVsdGFYLCAtZ2VzdHVyZUV2ZW50LmRlbHRhWSkpOworICAgICAgICBPd25QdHI8UGxh
dGZvcm1HZXN0dXJlQ3VydmU+IGZsaW5nQ3VydmUgPSBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJl
Q3VydmU6OmNyZWF0ZShGbG9hdFBvaW50KGdlc3R1cmVFdmVudC5kZWx0YVgsIGdlc3R1cmVFdmVu
dC5kZWx0YVkpKTsKICAgICAgICAgbV93aGVlbEZsaW5nQW5pbWF0aW9uID0gQ0NBY3RpdmVHZXN0
dXJlQW5pbWF0aW9uOjpjcmVhdGUoUGxhdGZvcm1HZXN0dXJlVG9DQ0dlc3R1cmVBZGFwdGVyOjpj
cmVhdGUoZmxpbmdDdXJ2ZS5yZWxlYXNlKCkpLCB0aGlzKTsKLSAgICAgICAgbV93aGVlbEZsaW5n
UG9pbnQgPSBJbnRQb2ludChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpOworICAgICAg
ICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmRlbHRhID0gV2ViRmxvYXRQb2ludChnZXN0dXJlRXZl
bnQuZGVsdGFYLCBnZXN0dXJlRXZlbnQuZGVsdGFZKTsKKyAgICAgICAgbV93aGVlbEZsaW5nUGFy
YW1ldGVycy5wb2ludCA9IFdlYlBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQueSk7
CisgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZ2xvYmFsUG9pbnQgPSBXZWJQb2ludChn
ZXN0dXJlRXZlbnQuZ2xvYmFsWCwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFkpOworICAgICAgICBtX3do
ZWVsRmxpbmdQYXJhbWV0ZXJzLm1vZGlmaWVycyA9IGdlc3R1cmVFdmVudC5tb2RpZmllcnM7CiAg
ICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY2hlZHVsZUFuaW1hdGlvbigpOwogICAgICAg
ICByZXR1cm4gRGlkSGFuZGxlOwogICAgIH0KQEAgLTI5MCwxMSArMjkzLDE0IEBAIHZvaWQgV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUp
CiAgICAgaWYgKCFtX3doZWVsRmxpbmdBbmltYXRpb24pCiAgICAgICAgIHJldHVybjsKIAorICAg
IGlmICghbV93aGVlbEZsaW5nUGFyYW1ldGVycy5zdGFydFRpbWUpCisgICAgICAgIG1fd2hlZWxG
bGluZ1BhcmFtZXRlcnMuc3RhcnRUaW1lID0gbW9ub3RvbmljVGltZTsKKwogICAgIGlmIChtX3do
ZWVsRmxpbmdBbmltYXRpb24tPmFuaW1hdGUobW9ub3RvbmljVGltZSkpCiAgICAgICAgIG1faW5w
dXRIYW5kbGVyQ2xpZW50LT5zY2hlZHVsZUFuaW1hdGlvbigpOwogICAgIGVsc2UgewogICAgICAg
ICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OmFuaW1hdGU6OmZsaW5nT3ZlciIpOwotICAgICAgICBtX3doZWVsRmxpbmdBbmltYXRpb24u
Y2xlYXIoKTsKKyAgICAgICAgY2FuY2VsQ3VycmVudEZsaW5nKCk7CiAgICAgfQogfQogCkBAIC0z
MDMsMzkgKzMwOSw0NSBAQCBib29sIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpjYW5j
ZWxDdXJyZW50RmxpbmcoKQogICAgIGJvb2wgaGFkRmxpbmdBbmltYXRpb24gPSBtX3doZWVsRmxp
bmdBbmltYXRpb247CiAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDEoImNjIiwgIldlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsOjpjYW5jZWxDdXJyZW50RmxpbmciLCAiaGFkRmxpbmdBbmltYXRp
b24iLCBoYWRGbGluZ0FuaW1hdGlvbik7CiAgICAgbV93aGVlbEZsaW5nQW5pbWF0aW9uLmNsZWFy
KCk7CisgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycyA9IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJh
bWV0ZXJzKCk7CiAgICAgcmV0dXJuIGhhZEZsaW5nQW5pbWF0aW9uOwogfQogCi12b2lkIFdlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeShjb25zdCBJbnRQb2ludCYgaW5jcmVt
ZW50KQordm9pZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkoY29uc3Qg
SW50U2l6ZSYgaW5jcmVtZW50KQogewotICAgIGlmIChpbmNyZW1lbnQgPT0gSW50UG9pbnQ6Onpl
cm8oKSkKKyAgICBpZiAoaW5jcmVtZW50LmlzWmVybygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBUUkFDRV9FVkVOVDIoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3Jv
bGxCeSIsICJ4IiwgaW5jcmVtZW50LngoKSwgInkiLCBpbmNyZW1lbnQueSgpKTsKLQotICAgIFdl
Yk1vdXNlV2hlZWxFdmVudCBldmVudDsKLSAgICBldmVudC50eXBlID0gV2ViSW5wdXRFdmVudDo6
TW91c2VXaGVlbDsKLSAgICBldmVudC5kZWx0YVggPSAtaW5jcmVtZW50LngoKTsKLSAgICBldmVu
dC5kZWx0YVkgPSAtaW5jcmVtZW50LnkoKTsKLSAgICBldmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5n
RGVsdGFzID0gdHJ1ZTsKLSAgICBldmVudC54ID0gbV93aGVlbEZsaW5nUG9pbnQueCgpOwotICAg
IGV2ZW50LnkgPSBtX3doZWVsRmxpbmdQb2ludC55KCk7Ci0KLSAgICBXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiA9IGhhbmRsZUlucHV0
RXZlbnRJbnRlcm5hbChldmVudCk7CisgICAgVFJBQ0VfRVZFTlQyKCJjYyIsICJXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkiLCAid2lkdGgiLCBpbmNyZW1lbnQud2lkdGgo
KSwgImhlaWdodCIsIGluY3JlbWVudC5oZWlnaHQoKSk7CisgICAgV2ViTW91c2VXaGVlbEV2ZW50
IHN5bnRoZXRpY1doZWVsOworICAgIHN5bnRoZXRpY1doZWVsLnR5cGUgPSBXZWJJbnB1dEV2ZW50
OjpNb3VzZVdoZWVsOworICAgIHN5bnRoZXRpY1doZWVsLmRlbHRhWCA9IGluY3JlbWVudC53aWR0
aCgpOworICAgIHN5bnRoZXRpY1doZWVsLmRlbHRhWSA9IGluY3JlbWVudC5oZWlnaHQoKTsKKyAg
ICBzeW50aGV0aWNXaGVlbC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gdHJ1ZTsKKyAgICBz
eW50aGV0aWNXaGVlbC54ID0gbV93aGVlbEZsaW5nUGFyYW1ldGVycy5wb2ludC54OworICAgIHN5
bnRoZXRpY1doZWVsLnkgPSBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnBvaW50Lnk7CisgICAgc3lu
dGhldGljV2hlZWwuZ2xvYmFsWCA9IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZ2xvYmFsUG9pbnQu
eDsKKyAgICBzeW50aGV0aWNXaGVlbC5nbG9iYWxZID0gbV93aGVlbEZsaW5nUGFyYW1ldGVycy5n
bG9iYWxQb2ludC55OworICAgIHN5bnRoZXRpY1doZWVsLm1vZGlmaWVycyA9IG1fd2hlZWxGbGlu
Z1BhcmFtZXRlcnMubW9kaWZpZXJzOworCisgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OkV2ZW50RGlzcG9zaXRpb24gZGlzcG9zaXRpb24gPSBoYW5kbGVJbnB1dEV2ZW50SW50ZXJu
YWwoc3ludGhldGljV2hlZWwpOwogICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKICAgICBjYXNl
IERpZEhhbmRsZToKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5jdW11bGF0aXZlU2Ny
b2xsLndpZHRoICs9IGluY3JlbWVudC53aWR0aCgpOworICAgICAgICBtX3doZWVsRmxpbmdQYXJh
bWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGwuaGVpZ2h0ICs9IGluY3JlbWVudC5oZWlnaHQoKTsKICAg
ICBjYXNlIERyb3BFdmVudDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaWROb3RIYW5kbGU6
CiAgICAgICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbDo6c2Nyb2xsQnk6OkFib3J0RmxpbmciKTsKLSAgICAgICAgLy8gRklYTUU6IElm
IHdlIGdvdCBhIERpZE5vdEhhbmRsZSwgdGhhdCBtZWFucyB3ZSBuZWVkIHRvIGRlbGl2ZXIgd2hl
ZWxzIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgLy8gSWYgd2UgZ290IGEgRGlkTm90SGFu
ZGxlLCB0aGF0IG1lYW5zIHdlIG5lZWQgdG8gZGVsaXZlciB3aGVlbHMgb24gdGhlIG1haW4gdGhy
ZWFkLgogICAgICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0byBzY2hlZHVsZSBhIGNvbW1p
dCBhbmQgdHJhbnNmZXIgdGhlIGZsaW5nIGN1cnZlIG92ZXIgdG8gdGhlIG1haW4KICAgICAgICAg
Ly8gdGhyZWFkIGFuZCBydW4gdGhlIHJlc3Qgb2YgdGhlIHdoZWVscyBmcm9tIHRoZXJlLgogICAg
ICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gd2hlbiBmbGluZ2luZyBhIHBhZ2UgdGhhdCBjb250YWlu
cyBhIHNjcm9sbGFibGUgc3ViYXJlYSB0aGF0IHdlIGNhbid0CiAgICAgICAgIC8vIHNjcm9sbCBv
biB0aGUgdGhyZWFkIGlmIHRoZSBmbGluZyBzdGFydHMgb3V0c2lkZSB0aGUgc3ViYXJlYSBidXQg
dGhlbiBpcyBmbHVuZyAidW5kZXIiIHRoZQogICAgICAgICAvLyBwb2ludGVyLgotICAgICAgICAv
LyBGb3Igbm93LCBqdXN0IGFib3J0IHRoZSBmbGluZy4KKyAgICAgICAgbV9jbGllbnQtPnRyYW5z
ZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihtX3doZWVsRmxpbmdQYXJhbWV0ZXJzKTsKICAg
ICAgICAgY2FuY2VsQ3VycmVudEZsaW5nKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsLmgKaW5kZXggYzlmZjVlMzUxMTkxNTRiN2FhZDhmZDJkYTRhZTZlM2Q0
ODc1MGY2NC4uYmNkNTgwZDBhNWQyOTdkYTRiZGUyN2QyMzdmOWZjN2MyNmQ3NGU5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFdlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsX2gKICNkZWZpbmUgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxf
aAogCi0jaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJXZWJBY3RpdmVXaGVlbEZsaW5n
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgpAQCAt
NDEsNiArNDEsNyBAQCBjbGFzcyBNdXRleDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgSW50U2l6ZTsKIGNsYXNzIENDR2VzdHVyZUN1cnZlVGFyZ2V0OwogY2xhc3MgQ0NJbnB1dEhh
bmRsZXJDbGllbnQ7CiBjbGFzcyBDQ1RocmVhZDsKQEAgLTY3LDcgKzY4LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKIAogICAgIC8v
IFdlYkNvcmU6OkNDR2VzdHVyZUN1cnZlVGFyZ2V0IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1
YWwgdm9pZCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwoV2ViQ29yZTo6Q0NJbnB1dEhh
bmRsZXJDbGllbnQqKTsKQEAgLTgzLDcgKzg0LDggQEAgcHJpdmF0ZToKICAgICBib29sIGNhbmNl
bEN1cnJlbnRGbGluZygpOwogCiAgICAgT3duUHRyPFdlYkNvcmU6OkNDQWN0aXZlR2VzdHVyZUFu
aW1hdGlvbj4gbV93aGVlbEZsaW5nQW5pbWF0aW9uOwotICAgIFdlYkNvcmU6OkludFBvaW50IG1f
d2hlZWxGbGluZ1BvaW50OyAvLyBQb2ludGVyIHBvc2l0aW9uIGZvciB0aGUgY3VycmVudCBmbGlu
Zy4KKyAgICAvLyBQYXJhbWV0ZXJzIGZvciB0aGUgYWN0aXZlIGZsaW5nIGFuaW1hdGlvbiwgc3Rv
cmVkIGluIGNhc2Ugd2UgbmVlZCB0byB0cmFuc2ZlciBpdCBvdXQgbGF0ZXIuCisgICAgV2ViQWN0
aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMgbV93aGVlbEZsaW5nUGFyYW1ldGVyczsKIAogICAgIFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQqIG1fY2xpZW50OwogICAgIGludCBtX2lkZW50
aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXgg
MTFhZWViYTc1MTlkN2ExYjlhODZlODI3Y2E3YjZjYWMzYWU1NmY4Ny4uNDg0NTg0MGQwZjkxMDQ4
OWVmNWM5MmZkNjVjMDRjMjZhY2E5YzU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcApAQCAtMzEsMTEgKzMxLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKIAorI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIK
ICNpbmNsdWRlICJBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uaCIKICNpbmNsdWRlICJB
dXRvZmlsbFBvcHVwTWVudUNsaWVudC5oIgotI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNp
bmNsdWRlICJCYWNrRm9yd2FyZExpc3RDaHJvbWl1bS5oIgotI2luY2x1ZGUgImNjL0NDUHJveHku
aCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3
b3Jkcy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgpAQCAtMTE5LDMyICsxMTgsMzUgQEAKICNpbmNs
dWRlICJXZWJDb21wb3NpdG9ySW1wbC5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRJbXBs
LmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUuaCIKLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2Vi
SW1hZ2UuaCIKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJJbnB1
dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaCIKICNpbmNsdWRl
ICJXZWJLaXQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIK
LSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllci5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxh
eWVyVHJlZVZpZXcuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllckFjdGlvbi5oIgogI2luY2x1
ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJQbHVnaW4uaCIKICNpbmNsdWRlICJXZWJQbHVn
aW5BY3Rpb24uaCIKICNpbmNsdWRlICJXZWJQbHVnaW5Db250YWluZXJJbXBsLmgiCi0jaW5jbHVk
ZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVJbXBsLmgiCiAj
aW5jbHVkZSAiV2ViUmFuZ2UuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCiAjaW5j
bHVkZSAiV2ViUnVudGltZUZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2ViU2V0dGluZ3NJbXBsLmgi
Ci0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2Vi
VmVjdG9yLmgiCiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZl
bnQuaCIKKyNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViRHJh
Z0RhdGEuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJJbWFnZS5oIgorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmlu
Zy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9h
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
QEAgLTYzOCwxMiArNjQxLDE0IEBAIGJvb2wgV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25z
dCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogICAgICAgICBzY2hlZHVsZUFuaW1hdGlvbigpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlRmxpbmdDYW5jZWw6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5j
ZWw6IHsKKyAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1w
bDo6Z2VzdHVyZUV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWwiKTsKICAgICAgICAgaWYgKG1fZ2Vz
dHVyZUFuaW1hdGlvbikgewogICAgICAgICAgICAgbV9nZXN0dXJlQW5pbWF0aW9uLmNsZWFyKCk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgog
ICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKICAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU6CkBAIC02NjIsNiArNjY3LDE4IEBAIGJvb2wg
V2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6dHJhbnNmZXJXaGVlbEZs
aW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQoreworICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJ3ZWJraXQiLCAiV2ViVmlld0ltcGw6
OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbiIpOworICAgIEFTU0VSVCghbV9nZXN0dXJlQW5p
bWF0aW9uKTsKKyAgICBtX2xhc3RXaGVlbFBvc2l0aW9uID0gcGFyYW1ldGVycy5wb2ludDsKKyAg
ICBtX2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9uID0gcGFyYW1ldGVycy5nbG9iYWxQb2ludDsKKyAg
ICBtX2ZsaW5nTW9kaWZpZXIgPSBwYXJhbWV0ZXJzLm1vZGlmaWVyczsKKyAgICBPd25QdHI8UGxh
dGZvcm1HZXN0dXJlQ3VydmU+IGN1cnZlID0gVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZl
OjpjcmVhdGUocGFyYW1ldGVycy5kZWx0YSwgcGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsKTsK
KyAgICBtX2dlc3R1cmVBbmltYXRpb24gPSBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246
OmNyZWF0ZShjdXJ2ZS5yZWxlYXNlKCksIHRoaXMsIHBhcmFtZXRlcnMuc3RhcnRUaW1lKTsKKyAg
ICBzY2hlZHVsZUFuaW1hdGlvbigpOworfQorCiB2b2lkIFdlYlZpZXdJbXBsOjpzdGFydFBhZ2VT
Y2FsZUFuaW1hdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsLCBib29sIHVzZUFuY2hvciwgZmxv
YXQgbmV3U2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKIHsKICAgICBpZiAoIW1fbGF5ZXJUcmVl
Vmlldy5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmlu
ZGV4IDIyOTM4YWQ2YmQ2YzQ5NzVmNzRmZTM3ZTQxNTQ4N2ZlZWNhMTIxNWIuLjdiNDY4ODc4NWVm
ZTEwY2UzZmU1ZDE2MjIzODE4NDdhOGM0MTRmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaApAQCAtMjUyLDYgKzI1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcGVyZm9ybUN1c3RvbUNvbnRleHRNZW51QWN0aW9uKHVuc2lnbmVkIGFjdGlvbik7CiAg
ICAgdmlydHVhbCB2b2lkIGFkZFBhZ2VPdmVybGF5KFdlYlBhZ2VPdmVybGF5KiwgaW50IC8qIHpP
cmRlciAqLyk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVBhZ2VPdmVybGF5KFdlYlBhZ2VPdmVy
bGF5Kik7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbihjb25z
dCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpOwogCiAgICAgLy8gV2ViTGF5ZXJUcmVl
Vmlld0NsaWVudAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFt
ZUJlZ2luVGltZSk7CkBAIC0zMzcsNyArMzM4LDcgQEAgcHVibGljOgogICAgIHZvaWQgbnVtYmVy
T2ZUb3VjaEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKTsKIAogICAgIC8vIFBsYXRmb3Jt
R2VzdHVyZUN1cnZlVGFyZ2V0IGltcGxlbWVudGF0aW9uIGZvciB3aGVlbCBmbGluZy4KLSAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogCiAgICAgLy8gSGFu
ZGxlcyBjb250ZXh0IG1lbnUgZXZlbnRzIG9yaWduYXRlZCB2aWEgdGhlIHRoZSBrZXlib2FyZC4g
VGhlc2UKICAgICAvLyBpbmNsdWRlIHRoZSBWS19BUFBTIHZpcnR1YWwga2V5IGFuZCB0aGUgU2hp
ZnQrRjEwIGNvbWJpbmUuIENvZGUgaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvUGxhdGZvcm1HZXN0dXJlQ3VydmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvUGxhdGZvcm1HZXN0dXJlQ3VydmVUZXN0LmNwcAppbmRleCA3MTZmNzBlMDI3
NjZhMTA5YWU4MjRkZTAyYzRkYzZmMjVhZWJjMTI5Li44YThhNzNlZDk3NWI4YTdjYjY3NDM3N2M2
MzJmNWVlOTA2YzUyNjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1BsYXRmb3JtR2VzdHVyZUN1cnZlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRlc3QuY3BwCkBAIC00MiwxNiArNDIsMTYgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIE1vY2tQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZVRhcmdldCA6IHB1YmxpYyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCB7CiBwdWJsaWM6Ci0g
ICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFBvaW50JiBkZWx0YSkKKyAgICB2aXJ0
dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgZGVsdGEpCiAgICAgewogICAgICAgICBt
X2N1bXVsYXRpdmVEZWx0YSA9IG1fY3VtdWxhdGl2ZURlbHRhICsgZGVsdGE7CiAgICAgfQogCi0g
ICAgSW50UG9pbnQgY3VtdWxhdGl2ZURlbHRhKCkgY29uc3QgeyByZXR1cm4gIG1fY3VtdWxhdGl2
ZURlbHRhOyB9Ci0gICAgdm9pZCByZXNldEN1bXVsYXRpdmVEZWx0YSgpIHsgbV9jdW11bGF0aXZl
RGVsdGEgPSBJbnRQb2ludCgpOyB9CisgICAgSW50U2l6ZSBjdW11bGF0aXZlRGVsdGEoKSBjb25z
dCB7IHJldHVybiAgbV9jdW11bGF0aXZlRGVsdGE7IH0KKyAgICB2b2lkIHJlc2V0Q3VtdWxhdGl2
ZURlbHRhKCkgeyBtX2N1bXVsYXRpdmVEZWx0YSA9IEludFNpemUoKTsgfQogCiBwcml2YXRlOgot
ICAgIEludFBvaW50IG1fY3VtdWxhdGl2ZURlbHRhOworICAgIEludFNpemUgbV9jdW11bGF0aXZl
RGVsdGE7CiB9OwogCiBURVNUKFBsYXRmb3JtR2VzdHVyZUN1cnZlLCBmbGluZ0N1cnZlKQpAQCAt
NjksOCArNjksOCBAQCBURVNUKFBsYXRmb3JtR2VzdHVyZUN1cnZlLCBmbGluZ0N1cnZlKQogICAg
IEVYUEVDVF9GQUxTRShhbmltYXRpb24tPmFuaW1hdGUoMTAwMSkpOwogICAgIC8vIFNpbmNlIHRo
ZSBSYXlsZWlnaCBDREYgbWF4ZXMgb3V0IGF0IDEsIHdlIGV4cGVjdCB0aGUgY3VtdWxhdGl2ZSBz
Y3JvbGwgaW5jcmVtZW50cyB0bwogICAgIC8vIG1hdGNoIHRoZSBpbnB1dCB2ZWxvY2l0eSBwYXJh
bWV0ZXIuCi0gICAgRVhQRUNUX05FQVIodGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgpLngoKSwgMTAw
LCAxKTsKLSAgICBFWFBFQ1RfRVEodGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgpLnkoKSwgMCk7Cisg
ICAgRVhQRUNUX05FQVIodGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgpLndpZHRoKCksIDEwMCwgMSk7
CisgICAgRVhQRUNUX0VRKHRhcmdldC5jdW11bGF0aXZlRGVsdGEoKS5oZWlnaHQoKSwgMCk7CiAK
ICAgICAvLyBUZXN0IGFuaW1hdGlvbiB3aGVuIG5vdCBzdGFydGluZyBhdCB0ID0gMC4KICAgICBk
b3VibGUgYmFzZVRpbWUgPSA0Mi40MjsKQEAgLTgxLDcgKzgxLDcgQEAgVEVTVChQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZSwgZmxpbmdDdXJ2ZSkKICAgICBFWFBFQ1RfVFJVRShhbmltYXRpb24tPmFuaW1h
dGUoYmFzZVRpbWUgKyAxLjM1KSk7CiAgICAgRVhQRUNUX1RSVUUoYW5pbWF0aW9uLT5hbmltYXRl
KGJhc2VUaW1lICsgMTAwMCkpOwogICAgIEVYUEVDVF9GQUxTRShhbmltYXRpb24tPmFuaW1hdGUo
YmFzZVRpbWUgKyAxMDAxKSk7Ci0gICAgRVhQRUNUX05FQVIodGFyZ2V0LmN1bXVsYXRpdmVEZWx0
YSgpLngoKSwgMTAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUih0YXJnZXQuY3VtdWxhdGl2ZURlbHRh
KCkud2lkdGgoKSwgMTAwLCAxKTsKIAogICAgIGFuaW1hdGlvbiA9IEFjdGl2ZVBsYXRmb3JtR2Vz
dHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFdoZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3Jl
YXRlKEZsb2F0UG9pbnQoNTAsIDE1MCkpLCAmdGFyZ2V0KTsKICAgICB0YXJnZXQucmVzZXRDdW11
bGF0aXZlRGVsdGEoKTsKQEAgLTkzLDggKzkzLDggQEAgVEVTVChQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZSwgZmxpbmdDdXJ2ZSkKICAgICBFWFBFQ1RfVFJVRShhbmltYXRpb24tPmFuaW1hdGUoMC43NSkp
OwogICAgIEVYUEVDVF9UUlVFKGFuaW1hdGlvbi0+YW5pbWF0ZSgxMDAwKSk7CiAgICAgRVhQRUNU
X0ZBTFNFKGFuaW1hdGlvbi0+YW5pbWF0ZSgxMDAxKSk7Ci0gICAgRVhQRUNUX05FQVIodGFyZ2V0
LmN1bXVsYXRpdmVEZWx0YSgpLngoKSwgNTAsIDEpOwotICAgIEVYUEVDVF9ORUFSKHRhcmdldC5j
dW11bGF0aXZlRGVsdGEoKS55KCksIDE1MCwgMSk7CisgICAgRVhQRUNUX05FQVIodGFyZ2V0LmN1
bXVsYXRpdmVEZWx0YSgpLndpZHRoKCksIDUwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUih0YXJnZXQu
Y3VtdWxhdGl2ZURlbHRhKCkuaGVpZ2h0KCksIDE1MCwgMSk7CiB9CiAKIFRFU1QoUGxhdGZvcm1H
ZXN0dXJlQ3VydmUsIGZsaW5nQ3VydmVUb3VjaCkKQEAgLTExMyw4ICsxMTMsOCBAQCBURVNUKFBs
YXRmb3JtR2VzdHVyZUN1cnZlLCBmbGluZ0N1cnZlVG91Y2gpCiAgICAgRVhQRUNUX1RSVUUoYW5p
bWF0aW9uLT5hbmltYXRlKDAuOSkpOwogICAgIEVYUEVDVF9UUlVFKGFuaW1hdGlvbi0+YW5pbWF0
ZSgxMDAwKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGFuaW1hdGlvbi0+YW5pbWF0ZSgxMDAxKSk7Ci0g
ICAgRVhQRUNUX05FQVIodGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgpLngoKSwgaW5pdGlhbFZlbG9j
aXR5ICogdG91Y2hGbGluZ0N1cnZlQXJlYUZhY3RvciwgMSk7Ci0gICAgRVhQRUNUX0VRKHRhcmdl
dC5jdW11bGF0aXZlRGVsdGEoKS55KCksIDApOworICAgIEVYUEVDVF9ORUFSKHRhcmdldC5jdW11
bGF0aXZlRGVsdGEoKS53aWR0aCgpLCBpbml0aWFsVmVsb2NpdHkgKiB0b3VjaEZsaW5nQ3VydmVB
cmVhRmFjdG9yLCAxKTsKKyAgICBFWFBFQ1RfRVEodGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgpLmhl
aWdodCgpLCAwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgYW5vbnltb3VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsVGVzdC5jcHAKaW5kZXggZmE4MjQ3YjExMGMwN2ViMTU3ZmQ1NDQ5MDI2NDll
MWRiNTBmMGQwNi4uOTJmMDA2MTg0MTQ3OTU2ZTEwMTlmYzY5MDE1ZjYzOWU0ODk0ZjMzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcApAQCAtMzMsMTMgKzMzLDE0IEBACiAj
aW5jbHVkZSAiY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NJ
bnB1dEhhbmRsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCisjaW5j
bHVkZSAicGxhdGZvcm0vV2ViRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBv
aW50LmgiCiAKICNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCi11c2luZyBXZWJLaXQ6OldlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXI7Ci11c2luZyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIHsKIApAQCAtNzMsMTEg
Kzc0LDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZUdlc3R1cmVBbmlt
YXRpb24oUGFzc093blB0cjxXZWJDb3JlOjpDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24+KSBPVkVS
UklERSB7IH0KIH07CiAKLWNsYXNzIE1vY2tXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50
IDogcHVibGljIFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudCB7CitjbGFz
cyBNb2NrV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudCA6IHB1YmxpYyBXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNb2NrV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudCk7CiBwdWJsaWM6CiAgICAgTW9ja1dlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJDbGllbnQoKQotICAgICAgICA6IFdlYktpdDo6V2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckNsaWVudCgpCisgICAgICAgIDogV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckNsaWVudCgpCiAgICAgewogICAgIH0KICAgICB2aXJ0dWFsIH5Nb2NrV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckNsaWVudCgpIHsgfQpAQCAtODUsMTEgKzg2LDE0IEBAIHB1YmxpYzoKICAgICBN
T0NLX01FVEhPRDAod2lsbFNodXRkb3duLCB2b2lkKCkpOwogICAgIE1PQ0tfTUVUSE9EMChkaWRI
YW5kbGVJbnB1dEV2ZW50LCB2b2lkKCkpOwogICAgIE1PQ0tfTUVUSE9EMShkaWROb3RIYW5kbGVJ
bnB1dEV2ZW50LCB2b2lkKGJvb2wgc2VuZFRvV2lkZ2V0KSk7CisKKyAgICBNT0NLX01FVEhPRDEo
dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uLCB2b2lkKGNvbnN0IFdlYkFjdGl2ZVdo
ZWVsRmxpbmdQYXJhbWV0ZXJzJikpOworCiB9OwogCiBURVNUKFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsLCBmcm9tSWRlbnRpZmllcikKIHsKLSAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6
OmluaXRpYWxpemUoMCk7CisgICAgV2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKICAgICBX
ZWJDb3JlOjpEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgYWx3YXlzSW1wbFRocmVhZDsKIAogICAg
IC8vIEJlZm9yZSBjcmVhdGluZyBhbnkgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcnMsIGxvb2t1
cHMgZm9yIGFueSB2YWx1ZSBzaG91bGQgZmFpbCBhbmQgbm90IGNyYXNoLgpAQCAtMTEwLDcgKzEx
NCw3IEBAIFRFU1QoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwsIGZyb21JZGVudGlmaWVy
KQogCiAgICAgLy8gQWZ0ZXIgdGhlIGNvbXBvc2l0b3IgaXMgZGVzdHJveWVkLCBpdHMgZW50cnkg
c2hvdWxkIGJlIHJlbW92ZWQgZnJvbSB0aGUgbWFwLgogICAgIEVYUEVDVF9FUSgwLCBXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVyOjpmcm9tSWRlbnRpZmllcihjb21wb3NpdG9ySWRlbnRpZmllcikp
OwotICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKKyAgICBXZWJDb21wb3Np
dG9yOjpzaHV0ZG93bigpOwogfQogCiBjbGFzcyBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CkBAIC0xMTgsNyArMTIyLDcgQEAgcHVibGlj
OgogICAgIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCgpCiAgICAgICAgIDogbV9l
eHBlY3RlZERpc3Bvc2l0aW9uKERpZEhhbmRsZSkKICAgICB7Ci0gICAgICAgIFdlYktpdDo6V2Vi
Q29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKKyAgICAgICAgV2ViQ29tcG9zaXRvcjo6aW5pdGlh
bGl6ZSgwKTsKICAgICAgICAgbV9pbnB1dEhhbmRsZXIgPSBXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbDo6Y3JlYXRlKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CiAgICAgICAgIG1f
aW5wdXRIYW5kbGVyLT5zZXRDbGllbnQoJm1fbW9ja0NsaWVudCk7CiAgICAgfQpAQCAtMTI3LDM5
ICsxMzEsNDEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9pbnB1dEhhbmRsZXItPnNldENs
aWVudCgwKTsKICAgICAgICAgbV9pbnB1dEhhbmRsZXIuY2xlYXIoKTsKLSAgICAgICAgV2ViS2l0
OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOworICAgICAgICBXZWJDb21wb3NpdG9yOjpzaHV0
ZG93bigpOwogICAgIH0KIAotICAgIHZvaWQgdmVyaWZ5QW5kUmVzZXRNb2NrcygpCi0gICAgewot
ICAgICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQpOwotICAgICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRD
bGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ2xpZW50KTsKLSAgICAgICAgc3dpdGNoIChtX2V4cGVj
dGVkRGlzcG9zaXRpb24pIHsKLSAgICAgICAgY2FzZSBEaWRIYW5kbGU6Ci0gICAgICAgICAgICAv
LyBJZiB3ZSBleHBlY3QgdG8gaGFuZGxlIGV2ZW50cywgd2Ugc2hvdWxkbid0IGdldCBhbnkgZGlk
Tm90SGFuZGxlSW5wdXRFdmVudCgpIGNhbGxzIHdpdGggYW55IHBhcmFtZXRlci4KLSAgICAgICAg
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudCg6OnRl
c3Rpbmc6Ol8pKS5UaW1lcygwKTsKLSAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVu
dCwgZGlkSGFuZGxlSW5wdXRFdmVudCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIERpZE5vdEhhbmRsZToKLSAgICAgICAgICAgIC8vIElmIHdlIGFyZW4ndCBleHBlY3Rpbmcg
dG8gaGFuZGxlIGV2ZW50cywgd2Ugc2hvdWxkbid0IGNhbGwgZGlkSGFuZGxlSW5wdXRFdmVudCgp
LgotICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWRIYW5kbGVJbnB1dEV2
ZW50KCkpLlRpbWVzKDApOwotICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBk
aWROb3RIYW5kbGVJbnB1dEV2ZW50KGZhbHNlKSkuVGltZXMoMCk7Ci0gICAgICAgICAgICBFWFBF
Q1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQodHJ1ZSkpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRHJvcEV2ZW50OgotICAgICAgICAgICAgLy8g
SWYgd2UncmUgZXhwZWN0aW5nIHRvIGRyb3AsIHdlIHNob3VsZG4ndCBnZXQgYW55IGRpZEhhbmRs
ZS4uKCkgb3IgZGlkTm90SGFuZGxlSW5wdXRFdmVudCh0cnVlIC8qIHNlbmRUb1dpZGdldCAqLykg
Y2FsbHMuCi0gICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZEhhbmRsZUlu
cHV0RXZlbnQoKSkuVGltZXMoMCk7Ci0gICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGll
bnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQodHJ1ZSkpLlRpbWVzKDApOwotICAgICAgICAgICAg
RVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KGZhbHNlKSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICAvLyBUaGlzIGlzIGRl
ZmluZWQgYXMgYSBtYWNybyBiZWNhdXNlIHdoZW4gYW4gZXhwZWN0YXRpb24gaXMgbm90IHNhdGlz
ZmllZCB0aGUgb25seSBvdXRwdXQgeW91IGdldAorICAgIC8vIG91dCBvZiBnbW9jayBpcyB0aGUg
bGluZSBudW1iZXIgdGhhdCBzZXQgdGhlIGV4cGVjdGF0aW9uLgorI2RlZmluZSBWRVJJRllfQU5E
X1JFU0VUX01PQ0tTKCkgZG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21v
Y2tDQ0lucHV0SGFuZGxlckNsaWVudCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0
aW9ucygmbV9tb2NrQ2xpZW50KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3dpdGNoIChtX2V4cGVjdGVkRGlzcG9zaXRp
b24pIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNhc2UgRGlkSGFuZGxlOiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgLyog
SWYgd2UgZXhwZWN0IHRvIGhhbmRsZSBldmVudHMsIHdlIHNob3VsZG4ndCBnZXQgYW55IGRpZE5v
dEhhbmRsZUlucHV0RXZlbnQoKSBjYWxscyB3aXRoIGFueSBwYXJhbWV0ZXIuICovIFwKKyAgICAg
ICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudCg6
OnRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZEhhbmRsZUlucHV0
RXZlbnQoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2FzZSBEaWROb3RIYW5kbGU6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAvKiBJZiB3ZSBh
cmVuJ3QgZXhwZWN0aW5nIHRvIGhhbmRsZSBldmVudHMsIHdlIHNob3VsZG4ndCBjYWxsIGRpZEhh
bmRsZUlucHV0RXZlbnQoKS4gKi8gICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
RVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWRIYW5kbGVJbnB1dEV2ZW50KCkpLlRpbWVzKDAp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVu
dChmYWxzZSkpLlRpbWVzKDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZE5vdEhhbmRs
ZUlucHV0RXZlbnQodHJ1ZSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2FzZSBEcm9wRXZlbnQ6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAvKiBJZiB3
ZSdyZSBleHBlY3RpbmcgdG8gZHJvcCwgd2Ugc2hvdWxkbid0IGdldCBhbnkgZGlkSGFuZGxlLi4o
KSBvciBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KHRydWUpIGNhbGxzLiAqLyAgXAorICAgICAgICAg
ICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWRIYW5kbGVJbnB1dEV2ZW50KCkpLlRpbWVz
KDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRF
dmVudCh0cnVlKSkuVGltZXMoMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZE5vdEhh
bmRsZUlucHV0RXZlbnQoZmFsc2UpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKIAogcHJvdGVjdGVkOgogICAg
IE1vY2tDQ0lucHV0SGFuZGxlckNsaWVudCBtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudDsKICAg
ICBPd25QdHI8V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw+IG1faW5wdXRIYW5kbGVyOwog
ICAgIE1vY2tXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50IG1fbW9ja0NsaWVudDsKLSAg
ICBXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCBnZXN0dXJlOworICAgIFdlYkdlc3R1cmVFdmVudCBn
ZXN0dXJlOwogCiAgICAgZW51bSBFeHBlY3RlZERpc3Bvc2l0aW9uIHsgRGlkSGFuZGxlLCBEaWRO
b3RIYW5kbGUsIERyb3BFdmVudCB9OwogICAgIEV4cGVjdGVkRGlzcG9zaXRpb24gbV9leHBlY3Rl
ZERpc3Bvc2l0aW9uOwpAQCAtMTczLDI0ICsxNzksMjQgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZVNjcm9sbFN0YXJ0ZWQpCiB7CiAgICAgLy8gV2Ug
c2hvdWxkbid0IHNlbmQgYW55IGV2ZW50cyB0byB0aGUgd2lkZ2V0IGZvciB0aGlzIGdlc3R1cmUu
CiAgICAgbV9leHBlY3RlZERpc3Bvc2l0aW9uID0gRGlkSGFuZGxlOwotICAgIHZlcmlmeUFuZFJl
c2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICBFWFBFQ1Rf
Q0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6Xywg
dGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6
Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKIAotICAgIGdlc3R1cmUudHlw
ZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOworICAgIGdlc3R1
cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjsKICAgICBtX2lucHV0
SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAotICAgIHZlcmlmeUFuZFJlc2V0
TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKLSAgICBnZXN0dXJlLnR5
cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU7CisgICAgZ2Vz
dHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZTsKICAgICBnZXN0
dXJlLmRlbHRhWSA9IC00MDsgLy8gLVkgbWVhbnMgc2Nyb2xsIGRvd24gLSBpLmUuIGluIHRoZSAr
WSBkaXJlY3Rpb24uCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQs
IHNjcm9sbEJ5KHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjpoZWlnaHQsIHRl
c3Rpbmc6Okd0KDApKSkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdl
c3R1cmUpOwogCi0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVT
RVRfTU9DS1MoKTsKIAotICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6
R2VzdHVyZVNjcm9sbEVuZDsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlU2Nyb2xsRW5kOwogICAgIGdlc3R1cmUuZGVsdGFZID0gMDsKICAgICBFWFBFQ1RfQ0FMTCht
X21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkpOwogICAgIG1faW5wdXRIYW5k
bGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwpAQCAtMjAwLDIzICsyMDYsMjMgQEAgVEVT
VF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZVNjcm9sbEZhaWxl
ZCkKIHsKICAgICAvLyBXZSBzaG91bGQgc2VuZCBhbGwgZXZlbnRzIHRvIHRoZSB3aWRnZXQgZm9y
IHRoaXMgZ2VzdHVyZS4KICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEaWROb3RIYW5kbGU7
Ci0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1Mo
KTsKIAogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxC
ZWdpbig6OnRlc3Rpbmc6Ol8sIDo6dGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0
aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCkp
OwogCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Ny
b2xsQmVnaW47CisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9s
bEJlZ2luOwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwog
Ci0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1Mo
KTsKIAotICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZVNj
cm9sbFVwZGF0ZTsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Ny
b2xsVXBkYXRlOwogICAgIGdlc3R1cmUuZGVsdGFZID0gNDA7CiAgICAgbV9pbnB1dEhhbmRsZXIt
PmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7
CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCi0gICAgZ2VzdHVyZS50eXBlID0gV2Vi
S2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOworICAgIGdlc3R1cmUudHlwZSA9
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7CiAgICAgZ2VzdHVyZS5kZWx0YVkgPSAw
OwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogfQpAQCAt
MjI4LDEyICsyMzQsMTIgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVz
dCwgZ2VzdHVyZVNjcm9sbElnbm9yZWQpCiAgICAgLy8gaW5kaWNhdGluZyB0aGF0IHdlIGNvdWxk
IGRldGVybWluZSB0aGF0IHRoZXJlJ3Mgbm90aGluZyB0aGF0IGNvdWxkIHNjcm9sbCBvciBvdGhl
cndpc2UKICAgICAvLyByZWFjdCB0byB0aGlzIGdlc3R1cmUgc2VxdWVuY2UgYW5kIHRodXMgd2Ug
c2hvdWxkIGRyb3AgdGhlIHdob2xlIGdlc3R1cmUgc2VxdWVuY2Ugb24gdGhlIGZsb29yLgogICAg
IG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERyb3BFdmVudDsKLSAgICB2ZXJpZnlBbmRSZXNldE1v
Y2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgRVhQRUNUX0NBTEwo
bV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rp
bmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5w
dXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJZ25vcmVkKSk7CiAKLSAgICBnZXN0dXJlLnR5cGUgPSBX
ZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjsKKyAgICBnZXN0dXJlLnR5
cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47CiAgICAgbV9pbnB1dEhhbmRs
ZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiB9CiAKQEAgLTI0MSwzMyArMjQ3LDMzIEBA
IFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVQaW5jaCkK
IHsKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2VuZCBhbnkgZXZlbnRzIHRvIHRoZSB3aWRnZXQgZm9y
IHRoaXMgZ2VzdHVyZS4KICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEaWRIYW5kbGU7Ci0g
ICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsK
IAotICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNo
QmVnaW47CisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoQmVn
aW47CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHBpbmNoR2Vz
dHVyZUJlZ2luKCkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1
cmUpOwogCi0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRf
TU9DS1MoKTsKIAotICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2Vz
dHVyZVBpbmNoVXBkYXRlOworICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVQaW5jaFVwZGF0ZTsKICAgICBnZXN0dXJlLmRlbHRhWCA9IDEuNTsKICAgICBnZXN0dXJlLngg
PSA3OwogICAgIGdlc3R1cmUueSA9IDEzOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRI
YW5kbGVyQ2xpZW50LCBwaW5jaEdlc3R1cmVVcGRhdGUoMS41LCBXZWJDb3JlOjpJbnRQb2ludCg3
LCAxMykpKTsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsK
IAotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tT
KCk7CiAKLSAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVQ
aW5jaFVwZGF0ZTsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGlu
Y2hVcGRhdGU7CiAgICAgZ2VzdHVyZS5kZWx0YVggPSAwLjU7CiAgICAgZ2VzdHVyZS54ID0gOTsK
ICAgICBnZXN0dXJlLnkgPSA2OwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVy
Q2xpZW50LCBwaW5jaEdlc3R1cmVVcGRhdGUoLjUsIFdlYkNvcmU6OkludFBvaW50KDksIDYpKSk7
CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2
ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCi0g
ICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hFbmQ7
CisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoRW5kOwogICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBwaW5jaEdlc3R1cmVFbmQo
KSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiB9CkBA
IC0yNzYsMjAgKzI4MiwyMCBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxU
ZXN0LCBnZXN0dXJlRmxpbmdTdGFydGVkKQogewogICAgIC8vIFdlIHNob3VsZG4ndCBzZW5kIGFu
eSBldmVudHMgdG8gdGhlIHdpZGdldCBmb3IgdGhpcyBnZXN0dXJlLgogICAgIG1fZXhwZWN0ZWRE
aXNwb3NpdGlvbiA9IERpZEhhbmRsZTsKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAg
VkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1
dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAg
ICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xp
ZW50OjpTY3JvbGxTdGFydGVkKSk7CiAKLSAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklu
cHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OworICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OwogICAgIGdlc3R1cmUuZGVsdGFYID0gMTA7CiAgICAg
RVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9u
KCkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCi0g
ICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsK
IAogICAgIC8vIFZlcmlmeSB0aGF0IGEgR2VzdHVyZUZsaW5nQ2FuY2VsIGR1cmluZyBhbiBhbmlt
YXRpb24gY2FuY2VscyBpdC4KLSAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZl
bnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlRmxpbmdDYW5jZWw7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZl
bnQoZ2VzdHVyZSk7CiB9CiAKQEAgLTI5NywzNiArMzAzLDM2IEBAIFRFU1RfRihXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ0ZhaWxlZCkKIHsKICAgICAvLyBX
ZSBzaG91bGQgc2VuZCBhbGwgZXZlbnRzIHRvIHRoZSB3aWRnZXQgZm9yIHRoaXMgZ2VzdHVyZS4K
ICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEaWROb3RIYW5kbGU7Ci0gICAgdmVyaWZ5QW5k
UmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIEVYUEVD
VF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpf
LCB0ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3Jl
OjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKSk7CiAKLSAgICBnZXN0dXJlLnR5
cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OworICAgIGdlc3R1
cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OwogICAgIG1faW5wdXRI
YW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCi0gICAgdmVyaWZ5QW5kUmVzZXRN
b2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIC8vIEV2ZW4gaWYg
d2UgZGlkbid0IHN0YXJ0IGEgZmxpbmcgb3Vyc2VsdmVzLCB3ZSBzdGlsbCBuZWVkIHRvIHNlbmQg
dGhlIGNhbmNlbCBldmVudCB0byB0aGUgd2lkZ2V0LgotICAgIGdlc3R1cmUudHlwZSA9IFdlYktp
dDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOworICAgIGdlc3R1cmUudHlwZSA9
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDsKICAgICBtX2lucHV0SGFuZGxlci0+
aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIH0KIAogVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nSWdub3JlZCkKIHsKICAgICBtX2V4cGVjdGVk
RGlzcG9zaXRpb24gPSBEaWROb3RIYW5kbGU7Ci0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOwor
ICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0ND
SW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkK
ICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxl
ckNsaWVudDo6U2Nyb2xsSWdub3JlZCkpOwogCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJ
bnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxl
SW5wdXRFdmVudChnZXN0dXJlKTsKIAotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBW
RVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICAvLyBFdmVuIGlmIHdlIGRpZG4ndCBzdGFy
dCBhIGZsaW5nIG91cnNlbHZlcywgd2Ugc3RpbGwgbmVlZCB0byBzZW5kIHRoZSBjYW5jZWwgZXZl
bnQgdG8gdGhlIHdpZGdldC4KLSAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZl
bnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlRmxpbmdDYW5jZWw7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZl
bnQoZ2VzdHVyZSk7CiB9CiAKQEAgLTMzNCwxMiArMzQwLDIyIEBAIFRFU1RfRihXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ0FuaW1hdGVzKQogewogICAgIC8v
IFdlIHNob3VsZG4ndCBzZW5kIGFueSBldmVudHMgdG8gdGhlIHdpZGdldCBmb3IgdGhpcyBnZXN0
dXJlLgogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZEhhbmRsZTsKLSAgICB2ZXJpZnlB
bmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgLy8g
T24gdGhlIGZsaW5nIHN0YXJ0LCB3ZSBzaG91bGQgc2NoZWR1bGUgYW4gYW5pbWF0aW9uIGJ1dCBu
b3QgYWN0dWFsbHkgc3RhcnQKICAgICAvLyBzY3JvbGxpbmcuCi0gICAgZ2VzdHVyZS50eXBlID0g
V2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKLSAgICBnZXN0dXJlLmRl
bHRhWCA9IC0xMDAwOworICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVG
bGluZ1N0YXJ0OworICAgIFdlYkZsb2F0UG9pbnQgZmxpbmdEZWx0YSA9IFdlYkZsb2F0UG9pbnQo
MTAwMCwgMCk7CisgICAgV2ViUG9pbnQgZmxpbmdQb2ludCA9IFdlYlBvaW50KDcsIDEzKTsKKyAg
ICBXZWJQb2ludCBmbGluZ0dsb2JhbFBvaW50ID0gV2ViUG9pbnQoMTcsIDIzKTsKKyAgICBpbnQg
bW9kaWZpZXJzID0gNzsKKyAgICBnZXN0dXJlLmRlbHRhWCA9IGZsaW5nRGVsdGEueDsKKyAgICBn
ZXN0dXJlLmRlbHRhWSA9IGZsaW5nRGVsdGEueTsKKyAgICBnZXN0dXJlLnggPSBmbGluZ1BvaW50
Lng7CisgICAgZ2VzdHVyZS55ID0gZmxpbmdQb2ludC55OworICAgIGdlc3R1cmUuZ2xvYmFsWCA9
IGZsaW5nR2xvYmFsUG9pbnQueDsKKyAgICBnZXN0dXJlLmdsb2JhbFkgPSBmbGluZ0dsb2JhbFBv
aW50Lnk7CisgICAgZ2VzdHVyZS5tb2RpZmllcnMgPSBtb2RpZmllcnM7CiAgICAgRVhQRUNUX0NB
TEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwogICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0
aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihX
ZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOwpAQCAtMzU2LDMz
ICszNzIsMTk0IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdl
c3R1cmVGbGluZ0FuaW1hdGVzKQogCiAgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJF
eHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKIAotICAgIC8vIFRoZSBz
ZWNvbmQgY2FsbCBzaG91bGQgc3RhcnQgc2Nyb2xsaW5nIGluIHRoZSArWCBkaXJlY3Rpb24uCisg
ICAgLy8gVGhlIHNlY29uZCBjYWxsIHNob3VsZCBzdGFydCBzY3JvbGxpbmcgaW4gdGhlIC1YIGRp
cmVjdGlvbi4KKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2No
ZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJD
bGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2ls
bE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3Jv
bGxTdGFydGVkKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQs
IHNjcm9sbEJ5KHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjp3aWR0aCwgdGVz
dGluZzo6THQoMCkpKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGll
bnQsIHNjcm9sbEVuZCgpKTsKKyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4xKTsKKwor
ICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lu
cHV0SGFuZGxlckNsaWVudCk7CisKKyAgICAvLyBMZXQncyBzYXkgb24gdGhlIHRoaXJkIGNhbGwg
d2UgaGl0IGEgbm9uLXNjcm9sbGFibGUgcmVnaW9uLiBXZSBzaG91bGQgYWJvcnQgdGhlIGZsaW5n
IGFuZCBub3Qgc2Nyb2xsLgorICAgIC8vIFdlIGFsc28gc2hvdWxkIHBhc3MgdGhlIGN1cnJlbnQg
ZmxpbmcgcGFyYW1ldGVycyBvdXQgdG8gdGhlIGNsaWVudCBzbyB0aGUgcmVzdCBvZiB0aGUgZmxp
bmcgY2FuIGJlCisgICAgLy8gdHJhbnNmZXJyZWQgdG8gdGhlIG1haW4gdGhyZWFkLgorICAgIEVY
UEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigp
KTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVn
aW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpS
ZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCkpOworICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5n
OjpfKSkuVGltZXMoMCk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGll
bnQsIHNjcm9sbEVuZCgpKS5UaW1lcygwKTsKKworICAgIC8vIEV4cGVjdGVkIHdoZWVsIGZsaW5n
IGFuaW1hdGlvbiBwYXJhbWV0ZXJzOgorICAgIC8vICopIGZsaW5nRGVsdGEgYW5kIGZsaW5nUG9p
bnQgc2hvdWxkIG1hdGNoIHRoZSBvcmlnaW5hbCBHZXN0dXJlRmxpbmdTdGFydCBldmVudAorICAg
IC8vICopIHN0YXJ0VGltZSBzaG91bGQgYmUgMTAgdG8gbWF0Y2ggdGhlIHRpbWUgcGFyYW1ldGVy
IG9mIHRoZSBmaXJzdCBhbmltYXRlKCkgY2FsbCBhZnRlciB0aGUgR2VzdHVyZUZsaW5nU3RhcnQK
KyAgICAvLyAqKSBjdW11bGF0aXZlU2Nyb2xsIGRlcGVuZHMgb24gdGhlIGN1cnZlLCBidXQgc2lu
Y2Ugd2UndmUgYW5pbWF0ZWQgaW4gdGhlIC1YIGRpcmVjdGlvbiB0aGUgWCB2YWx1ZSBzaG91bGQg
YmUgPCAwCisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCB0cmFuc2ZlckFjdGl2ZVdoZWVs
RmxpbmdBbmltYXRpb24odGVzdGluZzo6QWxsT2YoCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZX
ZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6ZGVsdGEsIHRlc3Rpbmc6OkVxKGZsaW5nRGVs
dGEpKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0
ZXJzOjpwb2ludCwgdGVzdGluZzo6RXEoZmxpbmdQb2ludCkpLAorICAgICAgICB0ZXN0aW5nOjpG
aWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6Omdsb2JhbFBvaW50LCB0ZXN0aW5n
OjpFcShmbGluZ0dsb2JhbFBvaW50KSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3Rp
dmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6bW9kaWZpZXJzLCB0ZXN0aW5nOjpFcShtb2RpZmllcnMp
KSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJz
OjpzdGFydFRpbWUsIHRlc3Rpbmc6OkVxKDEwKSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZX
ZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6Y3VtdWxhdGl2ZVNjcm9sbCwKKyAgICAgICAg
ICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJTaXplOjp3aWR0aCwgdGVzdGluZzo6R3QoMCkpKSkpKTsK
KyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4yKTsKKworICAgIHRlc3Rpbmc6Ok1vY2s6
OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7
CisgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0Ns
aWVudCk7CisKKyAgICAvLyBTaW5jZSB3ZSd2ZSBhYm9ydGVkIHRoZSBmbGluZywgdGhlIG5leHQg
YW5pbWF0aW9uIHNob3VsZCBiZSBhIG5vLW9wIGFuZCBzaG91bGQgbm90IHJlc3VsdCBpbiBhbm90
aGVyCisgICAgLy8gZnJhbWUgYmVpbmcgcmVxdWVzdGVkLgorICAgIEVYUEVDVF9DQUxMKG1fbW9j
a0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKS5UaW1lcygwKTsKKyAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVz
dGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDApOworICAgIG1faW5wdXRIYW5kbGVyLT5hbmlt
YXRlKDEwLjMpOworCisgICAgLy8gU2luY2Ugd2UndmUgdHJhbnNmZXJyZWQgdGhlIGZsaW5nIHRv
IHRoZSBtYWluIHRocmVhZCwgd2UgbmVlZCB0byBwYXNzIHRoZSBuZXh0IEdlc3R1cmVGbGluZ0Nh
bmNlbCB0byB0aGUgbWFpbgorICAgIC8vIHRocmVhZCBhcyB3ZWxsLgorICAgIEVYUEVDVF9DQUxM
KG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudCh0cnVlKSk7CisgICAgZ2VzdHVy
ZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOworICAgIG1faW5wdXRI
YW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOworfQorCitURVNUX0YoV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdUcmFuc2ZlclJlc2V0cykKK3sK
KyAgICAvLyBXZSBzaG91bGRuJ3Qgc2VuZCBhbnkgZXZlbnRzIHRvIHRoZSB3aWRnZXQgZm9yIHRo
aXMgZ2VzdHVyZS4KKyAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEaWRIYW5kbGU7CisgICAg
VkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOworCisgICAgLy8gU3RhcnQgYSBnZXN0dXJlIGZsaW5n
IGluIHRoZSAtWCBkaXJlY3Rpb24gd2l0aCB6ZXJvIFkgbW92ZW1lbnQuCisgICAgZ2VzdHVyZS50
eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisgICAgV2ViRmxvYXRQb2lu
dCBmbGluZ0RlbHRhID0gV2ViRmxvYXRQb2ludCgxMDAwLCAwKTsKKyAgICBXZWJQb2ludCBmbGlu
Z1BvaW50ID0gV2ViUG9pbnQoNywgMTMpOworICAgIFdlYlBvaW50IGZsaW5nR2xvYmFsUG9pbnQg
PSBXZWJQb2ludCgxNywgMjMpOworICAgIGludCBtb2RpZmllcnMgPSAxOworICAgIGdlc3R1cmUu
ZGVsdGFYID0gZmxpbmdEZWx0YS54OworICAgIGdlc3R1cmUuZGVsdGFZID0gZmxpbmdEZWx0YS55
OworICAgIGdlc3R1cmUueCA9IGZsaW5nUG9pbnQueDsKKyAgICBnZXN0dXJlLnkgPSBmbGluZ1Bv
aW50Lnk7CisgICAgZ2VzdHVyZS5nbG9iYWxYID0gZmxpbmdHbG9iYWxQb2ludC54OworICAgIGdl
c3R1cmUuZ2xvYmFsWSA9IGZsaW5nR2xvYmFsUG9pbnQueTsKKyAgICBnZXN0dXJlLm1vZGlmaWVy
cyA9IG1vZGlmaWVyczsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVu
dCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhh
bmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAg
ICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50
OjpTY3JvbGxTdGFydGVkKSk7CisgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQo
Z2VzdHVyZSk7CisKKyAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9u
cygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOworCisgICAgLy8gU3RhcnQgdGhlIGZsaW5n
IGFuaW1hdGlvbiBhdCB0aW1lIDEwLiBUaGlzIHNob3VsZG4ndCBhY3R1YWxseSBzY3JvbGwsIGp1
c3QgZXN0YWJsaXNoIGEgc3RhcnQgdGltZS4KKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0
SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9t
b2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6
Ol8pKS5UaW1lcygwKTsKKyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMCk7CisKKyAgICB0
ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhh
bmRsZXJDbGllbnQpOworCisgICAgLy8gVGhlIHNlY29uZCBjYWxsIHNob3VsZCBzdGFydCBzY3Jv
bGxpbmcgaW4gdGhlIC1YIGRpcmVjdGlvbi4KICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0
SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0NBTEwobV9t
b2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6
Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRI
YW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJ
bnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJ
bnRTaXplOjp3aWR0aCwgdGVzdGluZzo6R3QoMCkpKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3Jl
OjpJbnRTaXplOjp3aWR0aCwgdGVzdGluZzo6THQoMCkpKSk7CiAgICAgRVhQRUNUX0NBTEwobV9t
b2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEVuZCgpKTsKICAgICBtX2lucHV0SGFuZGxl
ci0+YW5pbWF0ZSgxMC4xKTsKIAogICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhw
ZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CiAKICAgICAvLyBMZXQncyBz
YXkgb24gdGhlIHRoaXJkIGNhbGwgd2UgaGl0IGEgbm9uLXNjcm9sbGFibGUgcmVnaW9uLiBXZSBz
aG91bGQgYWJvcnQgdGhlIGZsaW5nIGFuZCBub3Qgc2Nyb2xsLgotICAgIC8vIEZJWE1FOiBXZSBh
bHNvIG5lZWQgdG8gZG8gc29tZSB3b3JrIHRvIHRyYW5zZmVyIHRoZSByZXN0IG9mIHRoaXMgZmxp
bmcgdG8gdGhlIG1haW4gdGhyZWFkLgotICAgIC8vIEFkZCB0ZXN0cyBmb3IgdGhpcyBvbmNlIGl0
J3MgaW1wbGVtZW50ZWQuCisgICAgLy8gV2UgYWxzbyBzaG91bGQgcGFzcyB0aGUgY3VycmVudCBm
bGluZyBwYXJhbWV0ZXJzIG91dCB0byB0aGUgY2xpZW50IHNvIHRoZSByZXN0IG9mIHRoZSBmbGlu
ZyBjYW4gYmUKKyAgICAvLyB0cmFuc2ZlcnJlZCB0byB0aGUgbWFpbiB0aHJlYWQuCiAgICAgRVhQ
RUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkp
OwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdp
bih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJl
dHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKSk7CiAgICAg
RVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6
Ol8pKS5UaW1lcygwKTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVu
dCwgc2Nyb2xsRW5kKCkpLlRpbWVzKDApOworCisgICAgLy8gRXhwZWN0ZWQgd2hlZWwgZmxpbmcg
YW5pbWF0aW9uIHBhcmFtZXRlcnM6CisgICAgLy8gKikgZmxpbmdEZWx0YSBhbmQgZmxpbmdQb2lu
dCBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsIEdlc3R1cmVGbGluZ1N0YXJ0IGV2ZW50CisgICAg
Ly8gKikgc3RhcnRUaW1lIHNob3VsZCBiZSAxMCB0byBtYXRjaCB0aGUgdGltZSBwYXJhbWV0ZXIg
b2YgdGhlIGZpcnN0IGFuaW1hdGUoKSBjYWxsIGFmdGVyIHRoZSBHZXN0dXJlRmxpbmdTdGFydAor
ICAgIC8vICopIGN1bXVsYXRpdmVTY3JvbGwgZGVwZW5kcyBvbiB0aGUgY3VydmUsIGJ1dCBzaW5j
ZSB3ZSd2ZSBhbmltYXRlZCBpbiB0aGUgLVggZGlyZWN0aW9uIHRoZSBYIHZhbHVlIHNob3VsZCBi
ZSA8IDAKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIHRyYW5zZmVyQWN0aXZlV2hlZWxG
bGluZ0FuaW1hdGlvbih0ZXN0aW5nOjpBbGxPZigKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldl
YkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpkZWx0YSwgdGVzdGluZzo6RXEoZmxpbmdEZWx0
YSkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRl
cnM6OnBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ1BvaW50KSksCisgICAgICAgIHRlc3Rpbmc6OkZp
ZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6Z2xvYmFsUG9pbnQsIHRlc3Rpbmc6
OkVxKGZsaW5nR2xvYmFsUG9pbnQpKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkFjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjptb2RpZmllcnMsIHRlc3Rpbmc6OkVxKG1vZGlmaWVycykp
LAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6
OnN0YXJ0VGltZSwgdGVzdGluZzo6RXEoMTApKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldl
YkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpjdW11bGF0aXZlU2Nyb2xsLAorICAgICAgICAg
ICAgdGVzdGluZzo6RmllbGQoJldlYlNpemU6OndpZHRoLCB0ZXN0aW5nOjpHdCgwKSkpKSkpOwog
ICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwLjIpOwogCiAgICAgdGVzdGluZzo6TW9jazo6
VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsK
KyAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ2xp
ZW50KTsKIAogICAgIC8vIFNpbmNlIHdlJ3ZlIGFib3J0ZWQgdGhlIGZsaW5nLCB0aGUgbmV4dCBh
bmltYXRpb24gc2hvdWxkIGJlIGEgbm8tb3AgYW5kIHNob3VsZCBub3QgcmVzdWx0IGluIGFub3Ro
ZXIKICAgICAvLyBmcmFtZSBiZWluZyByZXF1ZXN0ZWQuCiAgICAgRVhQRUNUX0NBTEwobV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpLlRpbWVzKDApOwogICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0
aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1h
dGUoMTAuMyk7CisKKyAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9u
cygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOworCisgICAgLy8gU2luY2Ugd2UndmUgdHJh
bnNmZXJyZWQgdGhlIGZsaW5nIHRvIHRoZSBtYWluIHRocmVhZCwgd2UgbmVlZCB0byBwYXNzIHRo
ZSBuZXh0IEdlc3R1cmVGbGluZ0NhbmNlbCB0byB0aGUgbWFpbgorICAgIC8vIHRocmVhZCBhcyB3
ZWxsLgorICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVu
dCh0cnVlKSk7CisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5n
Q2FuY2VsOworICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwor
CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOworCisgICAgLy8gU3RhcnQgYSBzZWNvbmQg
Z2VzdHVyZSBmbGluZywgdGhpcyB0aW1lIGluIHRoZSArWSBkaXJlY3Rpb24gd2l0aCBubyBYLgor
ICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OworICAg
IGZsaW5nRGVsdGEgPSBXZWJGbG9hdFBvaW50KDAsIC0xMDAwKTsKKyAgICBmbGluZ1BvaW50ID0g
V2ViUG9pbnQoOTUsIDg3KTsKKyAgICBmbGluZ0dsb2JhbFBvaW50ID0gV2ViUG9pbnQoMzIsIDcx
KTsKKyAgICBtb2RpZmllcnMgPSAyOworICAgIGdlc3R1cmUuZGVsdGFYID0gZmxpbmdEZWx0YS54
OworICAgIGdlc3R1cmUuZGVsdGFZID0gZmxpbmdEZWx0YS55OworICAgIGdlc3R1cmUueCA9IGZs
aW5nUG9pbnQueDsKKyAgICBnZXN0dXJlLnkgPSBmbGluZ1BvaW50Lnk7CisgICAgZ2VzdHVyZS5n
bG9iYWxYID0gZmxpbmdHbG9iYWxQb2ludC54OworICAgIGdlc3R1cmUuZ2xvYmFsWSA9IGZsaW5n
R2xvYmFsUG9pbnQueTsKKyAgICBnZXN0dXJlLm1vZGlmaWVycyA9IG1vZGlmaWVyczsKKyAgICBF
WFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24o
KSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJl
Z2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6
UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7Cisg
ICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CisKKyAgICB0ZXN0
aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQpOworCisgICAgLy8gU3RhcnQgdGhlIHNlY29uZCBmbGluZyBhbmltYXRpb24gYXQg
dGltZSAzMC4KKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2No
ZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJD
bGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKKyAg
ICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgzMCk7CisKKyAgICB0ZXN0aW5nOjpNb2NrOjpWZXJp
ZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOworCisg
ICAgLy8gVGljayB0aGUgc2Vjb25kIGZsaW5nIG9uY2Ugbm9ybWFsbHkuCisgICAgRVhQRUNUX0NB
TEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOworICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0
aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihX
ZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOworICAgIEVYUEVD
VF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5nOjpQcm9w
ZXJ0eSgmV2ViQ29yZTo6SW50U2l6ZTo6aGVpZ2h0LCB0ZXN0aW5nOjpHdCgwKSkpKTsKKyAgICBF
WFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkpOworICAg
IG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDMwLjEpOworCisgICAgdGVzdGluZzo6TW9jazo6VmVy
aWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKKwor
ICAgIC8vIFRoZW4gYWJvcnQgdGhlIHNlY29uZCBmbGluZy4KKyAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNU
X0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8s
IHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6
OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxGYWlsZWQpKTsKKyAgICBFWFBFQ1RfQ0FMTCht
X21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6XykpLlRpbWVzKDAp
OworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQo
KSkuVGltZXMoMCk7CisKKyAgICAvLyBXZSBzaG91bGQgZ2V0IHBhcmFtZXRlcnMgZnJvbSB0aGUg
c2Vjb25kIGZsaW5nLCBub3RoaW5nIGZyb20gdGhlIGZpcnN0IGZsaW5nIHNob3VsZCAibGVhayIu
CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCB0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdB
bmltYXRpb24odGVzdGluZzo6QWxsT2YoCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3Rp
dmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6ZGVsdGEsIHRlc3Rpbmc6OkVxKGZsaW5nRGVsdGEpKSwK
KyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpw
b2ludCwgdGVzdGluZzo6RXEoZmxpbmdQb2ludCkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgm
V2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6Omdsb2JhbFBvaW50LCB0ZXN0aW5nOjpFcShm
bGluZ0dsb2JhbFBvaW50KSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVl
bEZsaW5nUGFyYW1ldGVyczo6bW9kaWZpZXJzLCB0ZXN0aW5nOjpFcShtb2RpZmllcnMpKSwKKyAg
ICAgICAgdGVzdGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpzdGFy
dFRpbWUsIHRlc3Rpbmc6OkVxKDMwKSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3Rp
dmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6Y3VtdWxhdGl2ZVNjcm9sbCwKKyAgICAgICAgICAgIHRl
c3Rpbmc6OkZpZWxkKCZXZWJTaXplOjpoZWlnaHQsIHRlc3Rpbmc6Okx0KDApKSkpKSk7CisgICAg
bV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMzAuMik7CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132986</attachid>
            <date>2012-03-21 01:10:51 -0700</date>
            <delta_ts>2012-03-24 04:13:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81740-20120321011050.patch</filename>
            <type>text/plain</type>
            <size>63779</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmIwODFhNTc5OTFhZTRm
OTBlNjI5NmQyMTY1ODJjMDgwYTc3MDY1Ny4uNWEzNjA4Mzk2MWI4ZWIxYTM1M2FiZjMzMjAxMzIy
ZDM2ZDg3NTNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTIxICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBU
cmFuc2ZlciB3aGVlbCBmbGluZyB2aWEgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE3NDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVQbGF0
Zm9ybUdlc3R1cmVBbmltYXRpb246OkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbik6Cisg
ICAgICAgICogcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmg6CisgICAg
ICAgIChBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L1BsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ub3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hG
bGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxh
dGZvcm1HZXN0dXJlQ3VydmU6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ub3VjaEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmUuaDoKKyAgICAgICAgKFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZSk6CisgICAgICAgICogcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZS5oOgorICAgICAgICAoV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0dlc3R1cmVDdXJ2ZVRhcmdldCk6CisKIDIwMTIt
MDMtMjAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgd3Rm
L1BsYXRmb3JtLmggZnJvbSBKYXZhU2NyaXB0Q29yZSB0byBTb3VyY2UvV1RGL3d0ZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCA2Y2VkY2E2MGViZGY2ZTgyYjEzYmI4OWUwMTU0NWQzMGU5
MWNkODVmLi4wZmFmODc1NzE3MjIxMWI4YzUzNzEzMzk1NDAwMTc1NDE3ZGQ3NzliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTAzLTIxICBKYW1lcyBS
b2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBUcmFu
c2ZlciB3aGVlbCBmbGluZyB2aWEgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE3NDAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJB
Y3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50LmguCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6V2ViQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnMpOgorICAgICAgICAqIHB1YmxpYy9XZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJDbGllbnQ6OnRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbik6CisgICAg
ICAgICogcHVibGljL1dlYlZpZXcuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJW
aWV3KToKKyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlVG9DQ0dlc3R1cmVBZGFwdGVyOjpzY3Jv
bGxCeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpo
YW5kbGVHZXN0dXJlRmxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbDo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsOjpjYW5jZWxDdXJyZW50RmxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkpOgorICAgICAgICAqIHNyYy9XZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNjcm9sbEJ5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjp0cmFuc2ZlcldoZWVsRmxpbmdBbmltYXRpb24pOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBs
KToKKyAgICAgICAgKiB0ZXN0cy9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRlc3QuY3BwOgorICAgICAg
ICAqIHRlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok1vY2tXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50OjpNb2NrV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckNsaWVudCk6CisgICAgICAgIChNb2NrV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlRFU1QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3Q6OldlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsVGVzdDo6fldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCk6CisgICAg
ICAgIChXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QpOgorICAgICAgICAoV2ViS2l0
OjpURVNUX0YpOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wMy0yMCAgRGFuYSBKYW5zZW5z
ICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFVzZSBvcmlnaW4g
dHJhbnNmb3JtIHRvIHRyYW5zZm9ybSBvY2NsdXNpb24gZnJvbSBzdXJmYWNlIGNvbnRlbnQgc3Bh
Y2UgdG8gaXRzIHRhcmdldCBjb250ZW50IHNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMGRlMTYy
MDJiOTU5MWExYzFjNjNhY2MwODVjYTViMmMzZDVhMjE3Ny4uYjc1YTZlOTYyYTVjYWVkYTRmNjUy
YTQ4Y2YyZmE2OWJkNmU2OTczOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzQzNSw2ICszNDM1LDcg
QEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQWN0aXZlV2hlZWxGbGluZ1BhcmFt
ZXRlcnMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5jcHAKaW5kZXggMThlYzdl
YjM0YWUyZTRlMDdiNTZjMTRhM2UwMmEzMzc4YmFkOWQ1MC4uNmEwMTNhZGZiNDQ1ZDZkYzk1M2Q0
Mzk3OGY0OTg1MDEzN2NjMGVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uY3BwCkBAIC0zNyw2ICszNywx
MSBAQCBQYXNzT3duUHRyPEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbj4gQWN0aXZlUGxh
dGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpjcmVhdAogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQWN0
aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKGN1cnZlLCB0YXJnZXQpKTsKIH0KIAorUGFzc093
blB0cjxBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24+IEFjdGl2ZVBsYXRmb3JtR2VzdHVy
ZUFuaW1hdGlvbjo6Y3JlYXRlKFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGN1cnZl
LCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCogdGFyZ2V0LCBkb3VibGUgc3RhcnRUaW1lKQor
eworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9u
KGN1cnZlLCB0YXJnZXQsIHN0YXJ0VGltZSkpOworfQorCiBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb246On5BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oKQogewogfQpAQCAtNDks
NiArNTQsMTQgQEAgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpBY3RpdmVQbGF0Zm9y
bUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0cjxQbGF0Zm8KIHsKIH0KIAorQWN0aXZlUGxhdGZv
cm1HZXN0dXJlQW5pbWF0aW9uOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oUGFzc093
blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3VydmUsIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFy
Z2V0KiB0YXJnZXQsIGRvdWJsZSBzdGFydFRpbWUpCisgICAgOiBtX3N0YXJ0VGltZShzdGFydFRp
bWUpCisgICAgLCBtX3dhaXRpbmdGb3JGaXJzdFRpY2soZmFsc2UpCisgICAgLCBtX2N1cnZlKGN1
cnZlKQorICAgICwgbV90YXJnZXQodGFyZ2V0KQoreworfQorCiBib29sIEFjdGl2ZVBsYXRmb3Jt
R2VzdHVyZUFuaW1hdGlvbjo6YW5pbWF0ZShkb3VibGUgdGltZSkKIHsKICAgICBpZiAobV93YWl0
aW5nRm9yRmlyc3RUaWNrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9B
Y3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5oCmluZGV4IDlkNTYzZTQ4MzY2NmRkMmFk
YTFiNWIwNWU4OTg0ZGYxNWJhYzcwMjQuLjIxZjE5OWMwN2ExZmNmMzRjNThjMTI0OWYyYjg0ZTRj
NTcxMWJjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRm
b3JtR2VzdHVyZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2
ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5oCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIEFjdGl2
ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWN0
aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093
blB0cjxBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24+IGNyZWF0ZShQYXNzT3duUHRyPFBs
YXRmb3JtR2VzdHVyZUN1cnZlPiwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqKTsKKyAgICBz
dGF0aWMgUGFzc093blB0cjxBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24+IGNyZWF0ZShQ
YXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJn
ZXQqLCBkb3VibGUgc3RhcnRUaW1lKTsKICAgICB+QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0
aW9uKCk7CiAKICAgICBib29sIGFuaW1hdGUoZG91YmxlIHRpbWUpOwpAQCAtNTAsNiArNTEsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIEFzc3VtZXMgYSB2YWxpZCBQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZVRhcmdldCB0aGF0IG91dGxpdmVzIHRoZSBhbmltYXRpb24uCiAgICAgQWN0aXZlUGxh
dGZvcm1HZXN0dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+LCBQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCopOworICAgIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFu
aW1hdGlvbihQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiwgUGxhdGZvcm1HZXN0dXJl
Q3VydmVUYXJnZXQqLCBkb3VibGUgc3RhcnRUaW1lKTsKIAogICAgIGRvdWJsZSBtX3N0YXJ0VGlt
ZTsKICAgICBib29sIG1fd2FpdGluZ0ZvckZpcnN0VGljazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oCmluZGV4IGIyOGIyOTJj
MThkZjA0OGUzYzMwYTFkZjQ5NTMwNDJmYmVjMzA0NDkuLmQ5MGE5ZTE4MzhjZTI0OTg0ZjViNzA0
MzU4NzU4YjIyMWI0NzA1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaApAQCAtMjcsMTEgKzI3LDExIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW50UG9pbnQ7CitjbGFzcyBJbnRTaXplOwogCiBjbGFz
cyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lk
IHNjcm9sbEJ5KGNvbnN0IEludFBvaW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxC
eShjb25zdCBJbnRTaXplJikgPSAwOwogICAgIC8vIEZJWE1FOiBhZGQgaW50ZXJmYWNlcyBmb3Ig
c2Nyb2xsKCksIGV0Yy4KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAKaW5kZXggNmZjMWJkN2U2OGRmODY3MDE3NGVjZWZiNGJl
ZDVhODg0MGRhZGEyMS4uNTBlNGNiZjg5Mzk0MWY5NGI4ZmEwNTcwMWM5ZTM4ZmU3MWQ3OGE0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCkBA
IC01NjIsMTAgKzU2MiwxMCBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6c3RvcEFuaW1hdGlv
blRpbWVySWZOZWVkZWQoKQogICAgICAgICBtX2FuaW1hdGlvbkFjdGl2ZSA9IGZhbHNlOwogfQog
Ci12b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6c2Nyb2xsQnkoY29uc3QgSW50UG9pbnQmIGxvY2F0
aW9uKQordm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbEJ5KGNvbnN0IEludFNpemUmIGxv
Y2F0aW9uKQogewotICAgIG1fY3VycmVudFBvc1ggKz0gbG9jYXRpb24ueCgpOwotICAgIG1fY3Vy
cmVudFBvc1kgKz0gbG9jYXRpb24ueSgpOworICAgIG1fY3VycmVudFBvc1ggKz0gbG9jYXRpb24u
d2lkdGgoKTsKKyAgICBtX2N1cnJlbnRQb3NZICs9IGxvY2F0aW9uLmhlaWdodCgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRvck5vbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yTm9uZS5oCmluZGV4IGM0N2JjYTk4NjA5YjRmMTc1ZDNlZDE0MTEzNTg2Mzk5M2IwNTJh
YjEuLjg5NTdiYWQ1YTVjYmFkOTA5YWY2MmE4ZGQyNjk5YmNiZDQyZjlmZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oCkBAIC05Niw3ICs5Niw3IEBA
IHB1YmxpYzoKICAgICB9OwogCiAgICAgLy8gUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQgaW1w
bGVtZW50YXRpb24uCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFBvaW50Jik7
CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFNpemUmKTsKIAogcHJvdGVjdGVk
OgogICAgIGZyaWVuZCBjbGFzcyA6OlNjcm9sbEFuaW1hdG9yTm9uZVRlc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlLmNwcAppbmRleCA4YTg5YTJiMjYxYTQwMGI4YTM0Y2M0YWJhMzAwNDIyODc3MjM5YmIyLi41
MzNkMGZjYjg0ZWI5MTgzNGUzOWYzZDAyOThlNmEyZTg0NDkwODNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZS5jcHAKQEAgLTM2LDExICszNiwxNyBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBQYXNzT3du
UHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6
OmNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSkKIHsKLSAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSh2ZWxvY2l0eSkpOworICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKHZlbG9jaXR5
LCBJbnRTaXplKCkpKTsKIH0KIAotVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpUb3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHkpCitQ
YXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJl
Q3VydmU6OmNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgSW50U2l6ZSYg
Y3VtdWxhdGl2ZVNjcm9sbCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRvdWNoRmxpbmdQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZSh2ZWxvY2l0eSwgY3VtdWxhdGl2ZVNjcm9sbCkpOworfQorCitU
b3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgSW50U2l6ZSYgY3VtdWxhdGl2
ZVNjcm9sbCkKICAgICA6IG1fdmVsb2NpdHkodmVsb2NpdHkpCisgICAgLCBtX2N1bXVsYXRpdmVT
Y3JvbGwoY3VtdWxhdGl2ZVNjcm9sbCkKICAgICAsIG1fdGltZVNjYWxlRmFjdG9yKDMgLyBsb2cx
MChtYXgoMTAuZiwgbWF4KGZhYnModmVsb2NpdHkueCgpKSwgZmFicyh2ZWxvY2l0eS55KCkpKSkp
KQogewogICAgIEFTU0VSVCh2ZWxvY2l0eSAhPSBGbG9hdFBvaW50Ojp6ZXJvKCkpOwpAQCAtNjks
MTEgKzc1LDExIEBAIGJvb2wgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjphcHBseShk
b3VibGUgdGltZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnCiAgICAgICAgIGRpc3BsYWNlbWVu
dCA9IDE7CiAKICAgICAvLyBLZWVwIHRyYWNrIG9mIGludGVnZXIgcG9ydGlvbiBvZiBzY3JvbGwg
dGh1cyBmYXIsIGFuZCBwcmVwYXJlIGluY3JlbWVudC4KLSAgICBJbnRQb2ludCBzY3JvbGwoZGlz
cGxhY2VtZW50ICogbV92ZWxvY2l0eS54KCksIGRpc3BsYWNlbWVudCAqIG1fdmVsb2NpdHkueSgp
KTsKLSAgICBJbnRQb2ludCBzY3JvbGxJbmNyZW1lbnQoc2Nyb2xsIC0gbV9jdW11bGF0aXZlU2Ny
b2xsKTsKKyAgICBJbnRTaXplIHNjcm9sbChkaXNwbGFjZW1lbnQgKiBtX3ZlbG9jaXR5LngoKSwg
ZGlzcGxhY2VtZW50ICogbV92ZWxvY2l0eS55KCkpOworICAgIEludFNpemUgc2Nyb2xsSW5jcmVt
ZW50KHNjcm9sbCAtIG1fY3VtdWxhdGl2ZVNjcm9sbCk7CiAgICAgbV9jdW11bGF0aXZlU2Nyb2xs
ID0gc2Nyb2xsOwogCi0gICAgaWYgKHRpbWUgPCAxIHx8IHNjcm9sbEluY3JlbWVudCAhPSBJbnRQ
b2ludDo6emVybygpKSB7CisgICAgaWYgKHRpbWUgPCAxIHx8ICFzY3JvbGxJbmNyZW1lbnQuaXNa
ZXJvKCkpIHsKICAgICAgICAgdGFyZ2V0LT5zY3JvbGxCeShzY3JvbGxJbmNyZW1lbnQpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCmluZGV4IGE3ZTFjZWMxMDFl
MDEyYWNlZTJiMWZjMjFkOWM1MzA2MGExN2MzNGUuLmRmMThiNTY5Zjg3YzE4YzNlMmQ0OTJmM2Vj
ZmE1OGViOGQ4YTA0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNo
RmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCkBAIC00MSwxNiArNDEsMTcgQEAgY2xh
c3MgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQ7CiBjbGFzcyBUb3VjaEZsaW5nUGxhdGZvcm1H
ZXN0dXJlQ3VydmUgOiBwdWJsaWMgUGxhdGZvcm1HZXN0dXJlQ3VydmUgewogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGUoY29uc3QgRmxv
YXRQb2ludCYgdmVsb2NpdHkpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVy
ZUN1cnZlPiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IEludFNpemUm
IGN1bXVsYXRpdmVTY3JvbGwpOwogICAgIHZpcnR1YWwgflRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZSgpOwogCiAgICAgdmlydHVhbCBib29sIGFwcGx5KGRvdWJsZSBtb25vdG9uaWNUaW1l
LCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCopOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0
IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0
eSk7CisgICAgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNvbnN0IEZsb2F0UG9pbnQm
IHZlbG9jaXR5LCBjb25zdCBJbnRTaXplJiBjdW11bGF0aXZlU2Nyb2xsKTsKIAogICAgIEZsb2F0
UG9pbnQgbV92ZWxvY2l0eTsKKyAgICBJbnRTaXplIG1fY3VtdWxhdGl2ZVNjcm9sbDsKICAgICBm
bG9hdCBtX3RpbWVTY2FsZUZhY3RvcjsKLSAgICBJbnRQb2ludCBtX2N1bXVsYXRpdmVTY3JvbGw7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcAppbmRleCBj
OWYxNzMyODk3OWNiN2M3MmZmMzlmN2VjYzIxMTEwZjQzM2JjMzk5Li41MTZkMTNjMDNiYTE3NWQw
M2ViNDQzY2ViYzUxY2I4MTA0YjNlOTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKQEAgLTU5LDEx
ICs1OSwxMSBAQCBib29sIFdoZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6YXBwbHkoZG91
YmxlIHRpbWUsIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZwogICAgIC8vIEZJWE1FOiBjb25zaWRl
ciBtYWtpbmcgdGhlIHZhbHVlIG9mIHNpZ21hIHNldHRhYmxlIGluIHRoZSBjb25zdHJ1Y3Rvci4K
ICAgICBzdGF0aWMgZG91YmxlIHR3b1NpZ21hU3F1YXJlZEludmVyc2UgPSAxNjsgLy8gc2lnbWEg
PSAwLjI1CiAgICAgZmxvYXQgY2RmID0gMSAtIGV4cCgtdGltZSAqIHRpbWUgKiB0d29TaWdtYVNx
dWFyZWRJbnZlcnNlKTsKLSAgICBJbnRQb2ludCBzY3JvbGwoY2RmICogbV92ZWxvY2l0eS54KCks
IGNkZiAqIG1fdmVsb2NpdHkueSgpKTsKLSAgICBJbnRQb2ludCBzY3JvbGxJbmNyZW1lbnQoc2Ny
b2xsIC0gbV9jdW11bGF0aXZlU2Nyb2xsKTsKKyAgICBJbnRTaXplIHNjcm9sbChjZGYgKiBtX3Zl
bG9jaXR5LngoKSwgY2RmICogbV92ZWxvY2l0eS55KCkpOworICAgIEludFNpemUgc2Nyb2xsSW5j
cmVtZW50KHNjcm9sbCAtIG1fY3VtdWxhdGl2ZVNjcm9sbCk7CiAgICAgbV9jdW11bGF0aXZlU2Ny
b2xsID0gc2Nyb2xsOwogCi0gICAgaWYgKGNkZiA8IDAuNSB8fCBzY3JvbGxJbmNyZW1lbnQgIT0g
SW50UG9pbnQ6Onplcm8oKSkgeworICAgIGlmIChjZGYgPCAwLjUgfHwgIXNjcm9sbEluY3JlbWVu
dC5pc1plcm8oKSkgewogICAgICAgICB0YXJnZXQtPnNjcm9sbEJ5KHNjcm9sbEluY3JlbWVudCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKaW5kZXggYjcyMTQ2
MTY1MzMzZjIzYzhjOWJiZjZjMDFkZGJmMDY3YWVlMWFjMi4uZDA5NTU2NmE5MjEyZWQzMWY1MjAw
NjJlMTcyZmRlYzQ4MGMzYzZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
V2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAg
cHJpdmF0ZToKICAgICBXaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQ
b2ludCYgdmVsb2NpdHkpOwogCiAgICAgRmxvYXRQb2ludCBtX3ZlbG9jaXR5OwotICAgIEludFBv
aW50IG1fY3VtdWxhdGl2ZVNjcm9sbDsKKyAgICBJbnRTaXplIG1fY3VtdWxhdGl2ZVNjcm9sbDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR2VzdHVyZUN1cnZlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oCmlu
ZGV4IDVkOThhZjRjNmM5MmIwNzQ4Mjg2MmM2MzU2NTlhZDNkODJhZWM3M2UuLjQ3ZjIyNzdlNmJl
N2ZjZDliMzAwOGU4ZTZkMTRmY2FiODljMzk3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR2VzdHVyZUN1cnZlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHZXN0dXJlQ3VydmUu
aApAQCAtMjcsMTMgKzI3LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW50
UG9pbnQ7CitjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBDQ0dlc3R1cmVDdXJ2ZVRhcmdldCB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+Q0NHZXN0dXJlQ3VydmVUYXJnZXQoKSB7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBJbnRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYpID0gMDsKICAgICAvLyBGSVhNRTogYWRkIGludGVy
ZmFjZXMgZm9yIHNjcm9sbCgpLCBldGMuCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lZjI3N2Q1ZmQ0YzY3ZGYxYTI0MWZhNmFhMmNiMjVjYTQ5NjRhYjRjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnMuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJB
Y3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyc19oCisjZGVmaW5lIFdlYkFjdGl2ZVdoZWVsRmxpbmdQ
YXJhbWV0ZXJzX2gKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorCisjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBvaW50
LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
Kworc3RydWN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHsKKyAgICBXZWJGbG9hdFBv
aW50IGRlbHRhOworICAgIFdlYlBvaW50IHBvaW50OworICAgIFdlYlBvaW50IGdsb2JhbFBvaW50
OworICAgIGludCBtb2RpZmllcnM7CisgICAgV2ViU2l6ZSBjdW11bGF0aXZlU2Nyb2xsOworICAg
IGRvdWJsZSBzdGFydFRpbWU7CisKKyAgICBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycygp
CisgICAgICAgIDogbW9kaWZpZXJzKDApCisgICAgICAgICwgc3RhcnRUaW1lKDApCisgICAgewor
ICAgIH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50LmgKaW5k
ZXggZThiYjU1NTk4MzRkZDE4M2EyNTg0OTg1MTdlMjJlNjA1YTQ2ZmUwMS4uN2M5MTFkOGY4ZWMw
MzAxZDZlMWVhYTUyNjQ3Mjg3NWMyNGQ4OWIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGll
bnQuaApAQCAtMjgsNiArMjgsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RydWN0IFdl
YkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOworCiBjbGFzcyBXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICAvLyBDYWxsYmFja3MgaW52b2tlZCBmcm9tIHRo
ZSBjb21wb3NpdG9yIHRocmVhZC4KQEAgLTQyLDYgKzQ0LDEwIEBAIHB1YmxpYzoKICAgICAvLyBz
aG91bGQgYmUgZm9yd2FyZGVkIHRvIHRoZSBXZWJXaWRnZXQgYXNzb2NpYXRlZCB3aXRoIHRoaXMg
Y29tcG9zaXRvciBmb3IgZnVydGhlciBwcm9jZXNzaW5nLgogICAgIHZpcnR1YWwgdm9pZCBkaWRO
b3RIYW5kbGVJbnB1dEV2ZW50KGJvb2wgc2VuZFRvV2lkZ2V0KSA9IDA7CiAKKyAgICAvLyBUcmFu
c2ZlcnMgYW4gYWN0aXZlIHdoZWVsIGZsaW5nIGFuaW1hdGlvbiBpbml0aWF0ZWQgYnkgYSBwcmV2
aW91c2x5IGhhbmRsZWQgaW5wdXQgZXZlbnQgb3V0IHRvIHRoZSBjbGllbnQuCisgICAgLy8gRklY
TUU6IE1ha2UgcHVyZSB2aXJ0dWFsIG9uY2UgaW1wbGVtZW50YXRpb24gbGFuZHMgb24gQ2hyb21p
dW0gc2lkZS4KKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0
aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikgeyB9CisKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIH5XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KCkgeyB9CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCmluZGV4IDNjOGFlNDQ4NGRh
MjUzYTgzNDVkMWQ2ZjUyYjEyMWM5NDY1NGYxMzMuLjRkOTk1ZTBmZmI1MzY2ZWI1ZjU2ZDE1YWU5
YjdmNjdkYzk5Yjc1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgK
QEAgLTU0LDYgKzU0LDcgQEAgY2xhc3MgV2ViU2V0dGluZ3M7CiBjbGFzcyBXZWJTcGVsbENoZWNr
Q2xpZW50OwogY2xhc3MgV2ViU3RyaW5nOwogY2xhc3MgV2ViVmlld0NsaWVudDsKK3N0cnVjdCBX
ZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJNZWRpYVBsYXllckFjdGlv
bjsKIHN0cnVjdCBXZWJQbHVnaW5BY3Rpb247CiBzdHJ1Y3QgV2ViUG9pbnQ7CkBAIC00MjgsNiAr
NDI5LDEwIEBAIHB1YmxpYzoKICAgICAvLyBDYW4gYmUgdXNlZCBmb3IgYWxsb2NhdGluZyByZXNv
dXJjZXMgdGhhdCB0aGUgY29tcG9zaXRvciB3aWxsIGxhdGVyIGFjY2Vzcy4KICAgICB2aXJ0dWFs
IFdlYkdyYXBoaWNzQ29udGV4dDNEKiBzaGFyZWRHcmFwaGljc0NvbnRleHQzRCgpID0gMDsKIAor
ICAgIC8vIENhbGxlZCB0byBpbmZvcm0gdGhlIFdlYlZpZXcgdGhhdCBhIHdoZWVsIGZsaW5nIGFu
aW1hdGlvbiB3YXMgc3RhcnRlZCBleHRlcm5hbGx5IChmb3IgaW5zdGFuY2UKKyAgICAvLyBieSB0
aGUgY29tcG9zaXRvcikgYnV0IG11c3QgYmUgY29tcGxldGVkIGJ5IHRoZSBXZWJWaWV3LgorICAg
IHZpcnR1YWwgdm9pZCB0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgV2Vi
QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSA9IDA7CisKICAgICAvLyBWaXNpYmlsaXR5IC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKICAgICAvLyBTZXRzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBXZWJWaWV3LgpAQCAtNDUyLDcg
KzQ1Nyw2IEBAIHB1YmxpYzoKICAgICAvLyBTaW11bGF0ZXMgYSBjb21wb3NpdG9yIGxvc3QgY29u
dGV4dC4KICAgICB2aXJ0dWFsIHZvaWQgbG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1l
cykgPSAwOwogCi0KIHByb3RlY3RlZDoKICAgICB+V2ViVmlldygpIHt9CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGwuY3BwCmluZGV4IGE0Y2M3MTgyY2RiOTI3MTMwYWJmMGEzMGM4NjlhMGE2NTQ3MjAw
ZDguLjgxNjM2NGY0NWU3MjQ3YzY2MzViN2FkMjMzMTczODEzYTc0OGM2NzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV9jdXJ2ZS0+YXBwbHkodGltZSwgdGhpcyk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHNj
cm9sbEJ5KGNvbnN0IEludFBvaW50JiBzY3JvbGxEZWx0YSkKKyAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsQnkoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiAgICAgewogICAgICAgICBBU1NFUlQo
bV90YXJnZXQpOwogICAgICAgICBtX3RhcmdldC0+c2Nyb2xsQnkoc2Nyb2xsRGVsdGEpOwpAQCAt
MjU5LDkgKzI1OSwxMiBAQCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNw
b3NpdGlvbiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAogICAgIHN3aXRjaCAoc2Ny
b2xsU3RhdHVzKSB7CiAgICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRl
ZDogewogICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZzo6c3RhcnRlZCIpOwotICAgICAgICBP
d25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGZsaW5nQ3VydmUgPSBUb3VjaEZsaW5nUGxhdGZv
cm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShGbG9hdFBvaW50KC1nZXN0dXJlRXZlbnQuZGVsdGFYLCAt
Z2VzdHVyZUV2ZW50LmRlbHRhWSkpOworICAgICAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3Vy
dmU+IGZsaW5nQ3VydmUgPSBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShG
bG9hdFBvaW50KGdlc3R1cmVFdmVudC5kZWx0YVgsIGdlc3R1cmVFdmVudC5kZWx0YVkpKTsKICAg
ICAgICAgbV93aGVlbEZsaW5nQW5pbWF0aW9uID0gQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOjpj
cmVhdGUoUGxhdGZvcm1HZXN0dXJlVG9DQ0dlc3R1cmVBZGFwdGVyOjpjcmVhdGUoZmxpbmdDdXJ2
ZS5yZWxlYXNlKCkpLCB0aGlzKTsKLSAgICAgICAgbV93aGVlbEZsaW5nUG9pbnQgPSBJbnRQb2lu
dChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpOworICAgICAgICBtX3doZWVsRmxpbmdQ
YXJhbWV0ZXJzLmRlbHRhID0gV2ViRmxvYXRQb2ludChnZXN0dXJlRXZlbnQuZGVsdGFYLCBnZXN0
dXJlRXZlbnQuZGVsdGFZKTsKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5wb2ludCA9
IFdlYlBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQueSk7CisgICAgICAgIG1fd2hl
ZWxGbGluZ1BhcmFtZXRlcnMuZ2xvYmFsUG9pbnQgPSBXZWJQb2ludChnZXN0dXJlRXZlbnQuZ2xv
YmFsWCwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFkpOworICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0
ZXJzLm1vZGlmaWVycyA9IGdlc3R1cmVFdmVudC5tb2RpZmllcnM7CiAgICAgICAgIG1faW5wdXRI
YW5kbGVyQ2xpZW50LT5zY2hlZHVsZUFuaW1hdGlvbigpOwogICAgICAgICByZXR1cm4gRGlkSGFu
ZGxlOwogICAgIH0KQEAgLTI5MCwxMSArMjkzLDE0IEBAIHZvaWQgV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGw6OmFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUpCiAgICAgaWYgKCFtX3do
ZWVsRmxpbmdBbmltYXRpb24pCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICghbV93aGVlbEZs
aW5nUGFyYW1ldGVycy5zdGFydFRpbWUpCisgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMu
c3RhcnRUaW1lID0gbW9ub3RvbmljVGltZTsKKwogICAgIGlmIChtX3doZWVsRmxpbmdBbmltYXRp
b24tPmFuaW1hdGUobW9ub3RvbmljVGltZSkpCiAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50
LT5zY2hlZHVsZUFuaW1hdGlvbigpOwogICAgIGVsc2UgewogICAgICAgICBUUkFDRV9FVkVOVF9J
TlNUQU5UMCgiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmFuaW1hdGU6OmZs
aW5nT3ZlciIpOwotICAgICAgICBtX3doZWVsRmxpbmdBbmltYXRpb24uY2xlYXIoKTsKKyAgICAg
ICAgY2FuY2VsQ3VycmVudEZsaW5nKCk7CiAgICAgfQogfQogCkBAIC0zMDMsMzkgKzMwOSw0NSBA
QCBib29sIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpjYW5jZWxDdXJyZW50Rmxpbmco
KQogICAgIGJvb2wgaGFkRmxpbmdBbmltYXRpb24gPSBtX3doZWVsRmxpbmdBbmltYXRpb247CiAg
ICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDEoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsOjpjYW5jZWxDdXJyZW50RmxpbmciLCAiaGFkRmxpbmdBbmltYXRpb24iLCBoYWRGbGluZ0Fu
aW1hdGlvbik7CiAgICAgbV93aGVlbEZsaW5nQW5pbWF0aW9uLmNsZWFyKCk7CisgICAgbV93aGVl
bEZsaW5nUGFyYW1ldGVycyA9IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKCk7CiAgICAg
cmV0dXJuIGhhZEZsaW5nQW5pbWF0aW9uOwogfQogCi12b2lkIFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsOjpzY3JvbGxCeShjb25zdCBJbnRQb2ludCYgaW5jcmVtZW50KQordm9pZCBXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgaW5jcmVt
ZW50KQogewotICAgIGlmIChpbmNyZW1lbnQgPT0gSW50UG9pbnQ6Onplcm8oKSkKKyAgICBpZiAo
aW5jcmVtZW50LmlzWmVybygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBUUkFDRV9FVkVOVDIo
ImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSIsICJ4IiwgaW5j
cmVtZW50LngoKSwgInkiLCBpbmNyZW1lbnQueSgpKTsKLQotICAgIFdlYk1vdXNlV2hlZWxFdmVu
dCBldmVudDsKLSAgICBldmVudC50eXBlID0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbDsKLSAg
ICBldmVudC5kZWx0YVggPSAtaW5jcmVtZW50LngoKTsKLSAgICBldmVudC5kZWx0YVkgPSAtaW5j
cmVtZW50LnkoKTsKLSAgICBldmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gdHJ1ZTsK
LSAgICBldmVudC54ID0gbV93aGVlbEZsaW5nUG9pbnQueCgpOwotICAgIGV2ZW50LnkgPSBtX3do
ZWVsRmxpbmdQb2ludC55KCk7Ci0KLSAgICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6
RXZlbnREaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiA9IGhhbmRsZUlucHV0RXZlbnRJbnRlcm5hbChl
dmVudCk7CisgICAgVFJBQ0VfRVZFTlQyKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbDo6c2Nyb2xsQnkiLCAid2lkdGgiLCBpbmNyZW1lbnQud2lkdGgoKSwgImhlaWdodCIsIGlu
Y3JlbWVudC5oZWlnaHQoKSk7CisgICAgV2ViTW91c2VXaGVlbEV2ZW50IHN5bnRoZXRpY1doZWVs
OworICAgIHN5bnRoZXRpY1doZWVsLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsOwor
ICAgIHN5bnRoZXRpY1doZWVsLmRlbHRhWCA9IGluY3JlbWVudC53aWR0aCgpOworICAgIHN5bnRo
ZXRpY1doZWVsLmRlbHRhWSA9IGluY3JlbWVudC5oZWlnaHQoKTsKKyAgICBzeW50aGV0aWNXaGVl
bC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gdHJ1ZTsKKyAgICBzeW50aGV0aWNXaGVlbC54
ID0gbV93aGVlbEZsaW5nUGFyYW1ldGVycy5wb2ludC54OworICAgIHN5bnRoZXRpY1doZWVsLnkg
PSBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnBvaW50Lnk7CisgICAgc3ludGhldGljV2hlZWwuZ2xv
YmFsWCA9IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZ2xvYmFsUG9pbnQueDsKKyAgICBzeW50aGV0
aWNXaGVlbC5nbG9iYWxZID0gbV93aGVlbEZsaW5nUGFyYW1ldGVycy5nbG9iYWxQb2ludC55Owor
ICAgIHN5bnRoZXRpY1doZWVsLm1vZGlmaWVycyA9IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMubW9k
aWZpZXJzOworCisgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9z
aXRpb24gZGlzcG9zaXRpb24gPSBoYW5kbGVJbnB1dEV2ZW50SW50ZXJuYWwoc3ludGhldGljV2hl
ZWwpOwogICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKICAgICBjYXNlIERpZEhhbmRsZToKKyAg
ICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsLndpZHRoICs9IGlu
Y3JlbWVudC53aWR0aCgpOworICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmN1bXVsYXRp
dmVTY3JvbGwuaGVpZ2h0ICs9IGluY3JlbWVudC5oZWlnaHQoKTsKICAgICBjYXNlIERyb3BFdmVu
dDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaWROb3RIYW5kbGU6CiAgICAgICAgIFRSQUNF
X0VWRU5UX0lOU1RBTlQwKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Ny
b2xsQnk6OkFib3J0RmxpbmciKTsKLSAgICAgICAgLy8gRklYTUU6IElmIHdlIGdvdCBhIERpZE5v
dEhhbmRsZSwgdGhhdCBtZWFucyB3ZSBuZWVkIHRvIGRlbGl2ZXIgd2hlZWxzIG9uIHRoZSBtYWlu
IHRocmVhZC4KKyAgICAgICAgLy8gSWYgd2UgZ290IGEgRGlkTm90SGFuZGxlLCB0aGF0IG1lYW5z
IHdlIG5lZWQgdG8gZGVsaXZlciB3aGVlbHMgb24gdGhlIG1haW4gdGhyZWFkLgogICAgICAgICAv
LyBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0byBzY2hlZHVsZSBhIGNvbW1pdCBhbmQgdHJhbnNmZXIg
dGhlIGZsaW5nIGN1cnZlIG92ZXIgdG8gdGhlIG1haW4KICAgICAgICAgLy8gdGhyZWFkIGFuZCBy
dW4gdGhlIHJlc3Qgb2YgdGhlIHdoZWVscyBmcm9tIHRoZXJlLgogICAgICAgICAvLyBUaGlzIGNh
biBoYXBwZW4gd2hlbiBmbGluZ2luZyBhIHBhZ2UgdGhhdCBjb250YWlucyBhIHNjcm9sbGFibGUg
c3ViYXJlYSB0aGF0IHdlIGNhbid0CiAgICAgICAgIC8vIHNjcm9sbCBvbiB0aGUgdGhyZWFkIGlm
IHRoZSBmbGluZyBzdGFydHMgb3V0c2lkZSB0aGUgc3ViYXJlYSBidXQgdGhlbiBpcyBmbHVuZyAi
dW5kZXIiIHRoZQogICAgICAgICAvLyBwb2ludGVyLgotICAgICAgICAvLyBGb3Igbm93LCBqdXN0
IGFib3J0IHRoZSBmbGluZy4KKyAgICAgICAgbV9jbGllbnQtPnRyYW5zZmVyQWN0aXZlV2hlZWxG
bGluZ0FuaW1hdGlvbihtX3doZWVsRmxpbmdQYXJhbWV0ZXJzKTsKICAgICAgICAgY2FuY2VsQ3Vy
cmVudEZsaW5nKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
LmgKaW5kZXggYzlmZjVlMzUxMTkxNTRiN2FhZDhmZDJkYTRhZTZlM2Q0ODc1MGY2NC4uYmNkNTgw
ZDBhNWQyOTdkYTRiZGUyN2QyMzdmOWZjN2MyNmQ3NGU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5o
CkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
X2gKICNkZWZpbmUgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxfaAogCi0jaW5jbHVkZSAi
SW50UG9pbnQuaCIKKyNpbmNsdWRlICJXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVyLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgpAQCAtNDEsNiArNDEsNyBAQCBj
bGFzcyBNdXRleDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW50U2l6ZTsKIGNs
YXNzIENDR2VzdHVyZUN1cnZlVGFyZ2V0OwogY2xhc3MgQ0NJbnB1dEhhbmRsZXJDbGllbnQ7CiBj
bGFzcyBDQ1RocmVhZDsKQEAgLTY3LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBhbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKIAogICAgIC8vIFdlYkNvcmU6OkNDR2Vz
dHVyZUN1cnZlVGFyZ2V0IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxC
eShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGwoV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQqKTsK
QEAgLTgzLDcgKzg0LDggQEAgcHJpdmF0ZToKICAgICBib29sIGNhbmNlbEN1cnJlbnRGbGluZygp
OwogCiAgICAgT3duUHRyPFdlYkNvcmU6OkNDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbj4gbV93aGVl
bEZsaW5nQW5pbWF0aW9uOwotICAgIFdlYkNvcmU6OkludFBvaW50IG1fd2hlZWxGbGluZ1BvaW50
OyAvLyBQb2ludGVyIHBvc2l0aW9uIGZvciB0aGUgY3VycmVudCBmbGluZy4KKyAgICAvLyBQYXJh
bWV0ZXJzIGZvciB0aGUgYWN0aXZlIGZsaW5nIGFuaW1hdGlvbiwgc3RvcmVkIGluIGNhc2Ugd2Ug
bmVlZCB0byB0cmFuc2ZlciBpdCBvdXQgbGF0ZXIuCisgICAgV2ViQWN0aXZlV2hlZWxGbGluZ1Bh
cmFtZXRlcnMgbV93aGVlbEZsaW5nUGFyYW1ldGVyczsKIAogICAgIFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJDbGllbnQqIG1fY2xpZW50OwogICAgIGludCBtX2lkZW50aWZpZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMTFhZWViYTc1MTlkN2Ex
YjlhODZlODI3Y2E3YjZjYWMzYWU1NmY4Ny4uNmI4MjhjMWM3N2ViMzM1ZDIxZDViNDEyOTc0OWIw
YjczMDk3MjU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cApAQCAtMzEsMTEgKzMxLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vi
Vmlld0ltcGwuaCIKIAorI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBY3Rp
dmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uaCIKICNpbmNsdWRlICJBdXRvZmlsbFBvcHVwTWVu
dUNsaWVudC5oIgotI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJCYWNrRm9y
d2FyZExpc3RDaHJvbWl1bS5oIgotI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJD
U1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1
ZGUgIkNocm9tZS5oIgpAQCAtMTE1LDM2ICsxMTQsMzkgQEAKICNpbmNsdWRlICJUeXBpbmdDb21t
YW5kLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJXZWJBdXRvZmlsbENsaWVudC5oIgogI2luY2x1ZGUgIldlYkNv
bXBvc2l0b3JJbXBsLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudEltcGwuaCIKICNpbmNs
dWRlICJXZWJEZXZUb29sc0FnZW50UHJpdmF0ZS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkRy
YWdEYXRhLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0v
V2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJJbWFnZS5oIgog
I2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIK
ICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIldlYktpdC5o
IgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkxheWVyLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmll
dy5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyQWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViTm9k
ZS5oIgogI2luY2x1ZGUgIldlYlBsdWdpbi5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkFjdGlvbi5o
IgogI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5lckltcGwuaCIKLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJQb2ludC5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudUltcGwuaCIKICNpbmNsdWRlICJX
ZWJSYW5nZS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlJlY3QuaCIKICNpbmNsdWRlICJXZWJS
dW50aW1lRmVhdHVyZXMuaCIKICNpbmNsdWRlICJXZWJTZXR0aW5nc0ltcGwuaCIKLSNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIK
ICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgorI2lu
Y2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJEcmFnRGF0YS5oIgor
I2luY2x1ZGUgInBsYXRmb3JtL1dlYkltYWdlLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0
UGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5j
bHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UG9p
bnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViTGF5ZXIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJQb2ludC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0
Lmg+CiAjaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC02MDYsMTUgKzYwOCwxNSBAQCBi
b29sIFdlYlZpZXdJbXBsOjptb3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYgZXZl
bnQpCiAgICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkt
PmhhbmRsZVdoZWVsRXZlbnQocGxhdGZvcm1FdmVudCk7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6
OnNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZWx0YSkKK3ZvaWQgV2ViVmlld0lt
cGw6OnNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGRlbHRhKQogewogICAgIFdlYk1v
dXNlV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbDsKICAgICBjb25zdCBmbG9hdCB0aWNrRGl2aXNv
ciA9IFdlYkNvcmU6OldoZWVsRXZlbnQ6OnRpY2tNdWx0aXBsaWVyOwogCi0gICAgc3ludGhldGlj
V2hlZWwuZGVsdGFYID0gZGVsdGEueCgpOwotICAgIHN5bnRoZXRpY1doZWVsLmRlbHRhWSA9IGRl
bHRhLnkoKTsKLSAgICBzeW50aGV0aWNXaGVlbC53aGVlbFRpY2tzWCA9IGRlbHRhLngoKSAvIHRp
Y2tEaXZpc29yOwotICAgIHN5bnRoZXRpY1doZWVsLndoZWVsVGlja3NZID0gZGVsdGEueSgpIC8g
dGlja0Rpdmlzb3I7CisgICAgc3ludGhldGljV2hlZWwuZGVsdGFYID0gZGVsdGEud2lkdGgoKTsK
KyAgICBzeW50aGV0aWNXaGVlbC5kZWx0YVkgPSBkZWx0YS5oZWlnaHQoKTsKKyAgICBzeW50aGV0
aWNXaGVlbC53aGVlbFRpY2tzWCA9IGRlbHRhLndpZHRoKCkgLyB0aWNrRGl2aXNvcjsKKyAgICBz
eW50aGV0aWNXaGVlbC53aGVlbFRpY2tzWSA9IGRlbHRhLmhlaWdodCgpIC8gdGlja0Rpdmlzb3I7
CiAgICAgc3ludGhldGljV2hlZWwuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IHRydWU7CiAg
ICAgc3ludGhldGljV2hlZWwueCA9IG1fbGFzdFdoZWVsUG9zaXRpb24ueDsKICAgICBzeW50aGV0
aWNXaGVlbC55ID0gbV9sYXN0V2hlZWxQb3NpdGlvbi55OwpAQCAtNjMwLDYgKzYzMiw3IEBAIGJv
b2wgV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50
KQogewogICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6
R2VzdHVyZUZsaW5nU3RhcnQ6IHsKKyAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDIoIndlYmtp
dCIsICJXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydCIsICJkZWx0
YVgiLCBldmVudC5kZWx0YVgsICJkZWx0YVkiLCBldmVudC5kZWx0YVkpOwogICAgICAgICBtX2xh
c3RXaGVlbFBvc2l0aW9uID0gV2ViUG9pbnQoZXZlbnQueCwgZXZlbnQueSk7CiAgICAgICAgIG1f
bGFzdFdoZWVsR2xvYmFsUG9zaXRpb24gPSBXZWJQb2ludChldmVudC5nbG9iYWxYLCBldmVudC5n
bG9iYWxZKTsKICAgICAgICAgbV9mbGluZ01vZGlmaWVyID0gZXZlbnQubW9kaWZpZXJzOwpAQCAt
NjM4LDEyICs2NDEsMTQgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KGNvbnN0IFdl
Ykdlc3R1cmVFdmVudCYgZXZlbnQpCiAgICAgICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVG
bGluZ0NhbmNlbDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDog
eworICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgid2Via2l0IiwgIldlYlZpZXdJbXBsOjpn
ZXN0dXJlRXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbCIpOwogICAgICAgICBpZiAobV9nZXN0dXJl
QW5pbWF0aW9uKSB7CiAgICAgICAgICAgICBtX2dlc3R1cmVBbmltYXRpb24uY2xlYXIoKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46CiAgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgogICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZToKQEAgLTY2Miw2ICs2NjcsMTggQEAgYm9vbCBXZWJW
aWV3SW1wbDo6Z2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjp0cmFuc2ZlckFjdGl2ZVdoZWVs
RmxpbmdBbmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCit7CisgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1w
bDo6dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uIik7CisgICAgQVNTRVJUKCFtX2dl
c3R1cmVBbmltYXRpb24pOworICAgIG1fbGFzdFdoZWVsUG9zaXRpb24gPSBwYXJhbWV0ZXJzLnBv
aW50OworICAgIG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb24gPSBwYXJhbWV0ZXJzLmdsb2JhbFBv
aW50OworICAgIG1fZmxpbmdNb2RpZmllciA9IHBhcmFtZXRlcnMubW9kaWZpZXJzOworICAgIE93
blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3VydmUgPSBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0
dXJlQ3VydmU6OmNyZWF0ZShwYXJhbWV0ZXJzLmRlbHRhLCBwYXJhbWV0ZXJzLmN1bXVsYXRpdmVT
Y3JvbGwpOworICAgIG1fZ2VzdHVyZUFuaW1hdGlvbiA9IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFu
aW1hdGlvbjo6Y3JlYXRlKGN1cnZlLnJlbGVhc2UoKSwgdGhpcywgcGFyYW1ldGVycy5zdGFydFRp
bWUpOworICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnN0
YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGwsIGJvb2wgdXNlQW5j
aG9yLCBmbG9hdCBuZXdTY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKQogewogICAgIGlmICghbV9s
YXllclRyZWVWaWV3LmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKaW5kZXggMjI5MzhhZDZiZDZjNDk3NWY3NGZlMzdlNDE1NDg3ZmVlY2ExMjE1Yi4uMTk4
OWI5MjU1NDNjMjc5OWNlZmIxZDc5NWUyNjI2ZjViZDg3ZmU0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0yNTIsNiArMjUyLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBwZXJmb3JtQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24odW5zaWduZWQgYWN0
aW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkUGFnZU92ZXJsYXkoV2ViUGFnZU92ZXJsYXkqLCBp
bnQgLyogek9yZGVyICovKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUGFnZU92ZXJsYXkoV2Vi
UGFnZU92ZXJsYXkqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5n
QW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJik7CiAKICAgICAv
LyBXZWJMYXllclRyZWVWaWV3Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlv
bnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKTsKQEAgLTMzNyw3ICszMzgsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBudW1iZXJPZlRvdWNoRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQpOwogCiAg
ICAgLy8gUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQgaW1wbGVtZW50YXRpb24gZm9yIHdoZWVs
IGZsaW5nLgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYpOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7
CiAKICAgICAvLyBIYW5kbGVzIGNvbnRleHQgbWVudSBldmVudHMgb3JpZ25hdGVkIHZpYSB0aGUg
dGhlIGtleWJvYXJkLiBUaGVzZQogICAgIC8vIGluY2x1ZGUgdGhlIFZLX0FQUFMgdmlydHVhbCBr
ZXkgYW5kIHRoZSBTaGlmdCtGMTAgY29tYmluZS4gQ29kZSBpcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRlc3QuY3BwCmlu
ZGV4IDI5ODU3OTFkYjRkODM1YjU1ODk0ODA1MTViNmFhNzc1MzliYjFhY2QuLjE1ZjAxZGVmYmYw
ZTQ0OGM2ZmNmNTc3YTEyZTJmMzA4MmQ1YTY4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvUGxhdGZvcm1HZXN0dXJlQ3VydmVUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtR2VzdHVyZUN1cnZlVGVzdC5jcHAKQEAgLTQy
LDE2ICs0MiwxNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgTW9ja1BsYXRm
b3JtR2VzdHVyZUN1cnZlVGFyZ2V0IDogcHVibGljIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0
IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50UG9pbnQmIGRl
bHRhKQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBJbnRTaXplJiBkZWx0YSkKICAg
ICB7CiAgICAgICAgIG1fY3VtdWxhdGl2ZURlbHRhID0gbV9jdW11bGF0aXZlRGVsdGEgKyBkZWx0
YTsKICAgICB9CiAKLSAgICBJbnRQb2ludCBjdW11bGF0aXZlRGVsdGEoKSBjb25zdCB7IHJldHVy
biAgbV9jdW11bGF0aXZlRGVsdGE7IH0KLSAgICB2b2lkIHJlc2V0Q3VtdWxhdGl2ZURlbHRhKCkg
eyBtX2N1bXVsYXRpdmVEZWx0YSA9IEludFBvaW50KCk7IH0KKyAgICBJbnRTaXplIGN1bXVsYXRp
dmVEZWx0YSgpIGNvbnN0IHsgcmV0dXJuICBtX2N1bXVsYXRpdmVEZWx0YTsgfQorICAgIHZvaWQg
cmVzZXRDdW11bGF0aXZlRGVsdGEoKSB7IG1fY3VtdWxhdGl2ZURlbHRhID0gSW50U2l6ZSgpOyB9
CiAKIHByaXZhdGU6Ci0gICAgSW50UG9pbnQgbV9jdW11bGF0aXZlRGVsdGE7CisgICAgSW50U2l6
ZSBtX2N1bXVsYXRpdmVEZWx0YTsKIH07CiAKIFRFU1QoUGxhdGZvcm1HZXN0dXJlQ3VydmUsIGZs
aW5nQ3VydmUpCkBAIC02OSw4ICs2OSw4IEBAIFRFU1QoUGxhdGZvcm1HZXN0dXJlQ3VydmUsIGZs
aW5nQ3VydmUpCiAgICAgRVhQRUNUX0ZBTFNFKGFuaW1hdGlvbi0+YW5pbWF0ZSgxMDAxKSk7CiAg
ICAgLy8gU2luY2UgdGhlIFJheWxlaWdoIENERiBtYXhlcyBvdXQgYXQgMSwgd2UgZXhwZWN0IHRo
ZSBjdW11bGF0aXZlIHNjcm9sbCBpbmNyZW1lbnRzIHRvCiAgICAgLy8gbWF0Y2ggdGhlIGlucHV0
IHZlbG9jaXR5IHBhcmFtZXRlci4KLSAgICBFWFBFQ1RfTkVBUih0YXJnZXQuY3VtdWxhdGl2ZURl
bHRhKCkueCgpLCAxMDAsIDEpOwotICAgIEVYUEVDVF9FUSh0YXJnZXQuY3VtdWxhdGl2ZURlbHRh
KCkueSgpLCAwKTsKKyAgICBFWFBFQ1RfTkVBUih0YXJnZXQuY3VtdWxhdGl2ZURlbHRhKCkud2lk
dGgoKSwgMTAwLCAxKTsKKyAgICBFWFBFQ1RfRVEodGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgpLmhl
aWdodCgpLCAwKTsKIAogICAgIC8vIFRlc3QgYW5pbWF0aW9uIHdoZW4gbm90IHN0YXJ0aW5nIGF0
IHQgPSAwLgogICAgIGRvdWJsZSBiYXNlVGltZSA9IDQyLjQyOwpAQCAtODEsNyArODEsNyBAQCBU
RVNUKFBsYXRmb3JtR2VzdHVyZUN1cnZlLCBmbGluZ0N1cnZlKQogICAgIEVYUEVDVF9UUlVFKGFu
aW1hdGlvbi0+YW5pbWF0ZShiYXNlVGltZSArIDEuMzUpKTsKICAgICBFWFBFQ1RfVFJVRShhbmlt
YXRpb24tPmFuaW1hdGUoYmFzZVRpbWUgKyAxMDAwKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGFuaW1h
dGlvbi0+YW5pbWF0ZShiYXNlVGltZSArIDEwMDEpKTsKLSAgICBFWFBFQ1RfTkVBUih0YXJnZXQu
Y3VtdWxhdGl2ZURlbHRhKCkueCgpLCAxMDAsIDEpOworICAgIEVYUEVDVF9ORUFSKHRhcmdldC5j
dW11bGF0aXZlRGVsdGEoKS53aWR0aCgpLCAxMDAsIDEpOwogCiAgICAgYW5pbWF0aW9uID0gQWN0
aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGUoV2hlZWxGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlOjpjcmVhdGUoRmxvYXRQb2ludCg1MCwgMTUwKSksICZ0YXJnZXQpOwogICAgIHRh
cmdldC5yZXNldEN1bXVsYXRpdmVEZWx0YSgpOwpAQCAtOTMsOCArOTMsOCBAQCBURVNUKFBsYXRm
b3JtR2VzdHVyZUN1cnZlLCBmbGluZ0N1cnZlKQogICAgIEVYUEVDVF9UUlVFKGFuaW1hdGlvbi0+
YW5pbWF0ZSgwLjc1KSk7CiAgICAgRVhQRUNUX1RSVUUoYW5pbWF0aW9uLT5hbmltYXRlKDEwMDAp
KTsKICAgICBFWFBFQ1RfRkFMU0UoYW5pbWF0aW9uLT5hbmltYXRlKDEwMDEpKTsKLSAgICBFWFBF
Q1RfTkVBUih0YXJnZXQuY3VtdWxhdGl2ZURlbHRhKCkueCgpLCA1MCwgMSk7Ci0gICAgRVhQRUNU
X05FQVIodGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgpLnkoKSwgMTUwLCAxKTsKKyAgICBFWFBFQ1Rf
TkVBUih0YXJnZXQuY3VtdWxhdGl2ZURlbHRhKCkud2lkdGgoKSwgNTAsIDEpOworICAgIEVYUEVD
VF9ORUFSKHRhcmdldC5jdW11bGF0aXZlRGVsdGEoKS5oZWlnaHQoKSwgMTUwLCAxKTsKIH0KIAog
VEVTVChQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSwgZmxpbmdDdXJ2ZVRvdWNoKQpAQCAtMTEzLDggKzEx
Myw4IEBAIFRFU1QoUGxhdGZvcm1HZXN0dXJlQ3VydmUsIGZsaW5nQ3VydmVUb3VjaCkKICAgICBF
WFBFQ1RfVFJVRShhbmltYXRpb24tPmFuaW1hdGUoMC45KSk7CiAgICAgRVhQRUNUX1RSVUUoYW5p
bWF0aW9uLT5hbmltYXRlKDEwMDApKTsKICAgICBFWFBFQ1RfRkFMU0UoYW5pbWF0aW9uLT5hbmlt
YXRlKDEwMDEpKTsKLSAgICBFWFBFQ1RfTkVBUih0YXJnZXQuY3VtdWxhdGl2ZURlbHRhKCkueCgp
LCBpbml0aWFsVmVsb2NpdHkgKiB0b3VjaEZsaW5nQ3VydmVBcmVhRmFjdG9yLCAxKTsKLSAgICBF
WFBFQ1RfRVEodGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgpLnkoKSwgMCk7CisgICAgRVhQRUNUX05F
QVIodGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgpLndpZHRoKCksIGluaXRpYWxWZWxvY2l0eSAqIHRv
dWNoRmxpbmdDdXJ2ZUFyZWFGYWN0b3IsIDEpOworICAgIEVYUEVDVF9FUSh0YXJnZXQuY3VtdWxh
dGl2ZURlbHRhKCkuaGVpZ2h0KCksIDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBhbm9ueW1vdXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcAppbmRleCBmYTgyNDdiMTEwYzA3ZWIx
NTdmZDU0NDkwMjY0OWUxZGI1MGYwZDA2Li45MmYwMDYxODQxNDc5NTZlMTAxOWZjNjkwMTVmNjM5
ZTQ4OTRmMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCkBAIC0zMywx
MyArMzMsMTQgQEAKICNpbmNsdWRlICJjYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uaCIKICNp
bmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFk
UHJveHkuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViUG9pbnQuaCIKIAogI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CiAjaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKLXVzaW5nIFdlYktp
dDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcjsKLXVzaW5nIFdlYktpdDo6V2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGw7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBuYW1lc3BhY2Ug
ewogCkBAIC03MywxMSArNzQsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0
aXZlR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPFdlYkNvcmU6OkNDQWN0aXZlR2VzdHVyZUFu
aW1hdGlvbj4pIE9WRVJSSURFIHsgfQogfTsKIAotY2xhc3MgTW9ja1dlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJDbGllbnQgOiBwdWJsaWMgV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
Q2xpZW50IHsKK2NsYXNzIE1vY2tXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50IDogcHVi
bGljIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKE1vY2tXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KTsKIHB1YmxpYzoKICAg
ICBNb2NrV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudCgpCi0gICAgICAgIDogV2ViS2l0
OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KCkKKyAgICAgICAgOiBXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVyQ2xpZW50KCkKICAgICB7CiAgICAgfQogICAgIHZpcnR1YWwgfk1vY2tX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KCkgeyB9CkBAIC04NSwxMSArODYsMTQgQEAg
cHVibGljOgogICAgIE1PQ0tfTUVUSE9EMCh3aWxsU2h1dGRvd24sIHZvaWQoKSk7CiAgICAgTU9D
S19NRVRIT0QwKGRpZEhhbmRsZUlucHV0RXZlbnQsIHZvaWQoKSk7CiAgICAgTU9DS19NRVRIT0Qx
KGRpZE5vdEhhbmRsZUlucHV0RXZlbnQsIHZvaWQoYm9vbCBzZW5kVG9XaWRnZXQpKTsKKworICAg
IE1PQ0tfTUVUSE9EMSh0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24sIHZvaWQoY29u
c3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSk7CisKIH07CiAKIFRFU1QoV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGwsIGZyb21JZGVudGlmaWVyKQogewotICAgIFdlYktpdDo6
V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKKyAgICBXZWJDb21wb3NpdG9yOjppbml0aWFs
aXplKDApOwogICAgIFdlYkNvcmU6OkRlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBhbHdheXNJbXBs
VGhyZWFkOwogCiAgICAgLy8gQmVmb3JlIGNyZWF0aW5nIGFueSBXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVycywgbG9va3VwcyBmb3IgYW55IHZhbHVlIHNob3VsZCBmYWlsIGFuZCBub3QgY3Jhc2gu
CkBAIC0xMTAsNyArMTE0LDcgQEAgVEVTVChXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbCwg
ZnJvbUlkZW50aWZpZXIpCiAKICAgICAvLyBBZnRlciB0aGUgY29tcG9zaXRvciBpcyBkZXN0cm95
ZWQsIGl0cyBlbnRyeSBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBtYXAuCiAgICAgRVhQRUNU
X0VRKDAsIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXI6OmZyb21JZGVudGlmaWVyKGNvbXBvc2l0
b3JJZGVudGlmaWVyKSk7Ci0gICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwor
ICAgIFdlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CiB9CiAKIGNsYXNzIFdlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKQEAgLTExOCw3ICsx
MjIsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0KCkK
ICAgICAgICAgOiBtX2V4cGVjdGVkRGlzcG9zaXRpb24oRGlkSGFuZGxlKQogICAgIHsKLSAgICAg
ICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOworICAgICAgICBXZWJDb21w
b3NpdG9yOjppbml0aWFsaXplKDApOwogICAgICAgICBtX2lucHV0SGFuZGxlciA9IFdlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpjcmVhdGUoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50
KTsKICAgICAgICAgbV9pbnB1dEhhbmRsZXItPnNldENsaWVudCgmbV9tb2NrQ2xpZW50KTsKICAg
ICB9CkBAIC0xMjcsMzkgKzEzMSw0MSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2lucHV0
SGFuZGxlci0+c2V0Q2xpZW50KDApOwogICAgICAgICBtX2lucHV0SGFuZGxlci5jbGVhcigpOwot
ICAgICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CisgICAgICAgIFdlYkNv
bXBvc2l0b3I6OnNodXRkb3duKCk7CiAgICAgfQogCi0gICAgdm9pZCB2ZXJpZnlBbmRSZXNldE1v
Y2tzKCkKLSAgICB7Ci0gICAgICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0
YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7Ci0gICAgICAgIHRlc3Rpbmc6Ok1v
Y2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDbGllbnQpOwotICAgICAgICBz
d2l0Y2ggKG1fZXhwZWN0ZWREaXNwb3NpdGlvbikgewotICAgICAgICBjYXNlIERpZEhhbmRsZToK
LSAgICAgICAgICAgIC8vIElmIHdlIGV4cGVjdCB0byBoYW5kbGUgZXZlbnRzLCB3ZSBzaG91bGRu
J3QgZ2V0IGFueSBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KCkgY2FsbHMgd2l0aCBhbnkgcGFyYW1l
dGVyLgotICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJ
bnB1dEV2ZW50KDo6dGVzdGluZzo6XykpLlRpbWVzKDApOwotICAgICAgICAgICAgRVhQRUNUX0NB
TEwobV9tb2NrQ2xpZW50LCBkaWRIYW5kbGVJbnB1dEV2ZW50KCkpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgRGlkTm90SGFuZGxlOgotICAgICAgICAgICAgLy8gSWYgd2UgYXJl
bid0IGV4cGVjdGluZyB0byBoYW5kbGUgZXZlbnRzLCB3ZSBzaG91bGRuJ3QgY2FsbCBkaWRIYW5k
bGVJbnB1dEV2ZW50KCkuCi0gICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRp
ZEhhbmRsZUlucHV0RXZlbnQoKSkuVGltZXMoMCk7Ci0gICAgICAgICAgICBFWFBFQ1RfQ0FMTCht
X21vY2tDbGllbnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQoZmFsc2UpKS5UaW1lcygwKTsKLSAg
ICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVu
dCh0cnVlKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEcm9wRXZlbnQ6Ci0g
ICAgICAgICAgICAvLyBJZiB3ZSdyZSBleHBlY3RpbmcgdG8gZHJvcCwgd2Ugc2hvdWxkbid0IGdl
dCBhbnkgZGlkSGFuZGxlLi4oKSBvciBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KHRydWUgLyogc2Vu
ZFRvV2lkZ2V0ICovKSBjYWxscy4KLSAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVu
dCwgZGlkSGFuZGxlSW5wdXRFdmVudCgpKS5UaW1lcygwKTsKLSAgICAgICAgICAgIEVYUEVDVF9D
QUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudCh0cnVlKSkuVGltZXMoMCk7
Ci0gICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZE5vdEhhbmRsZUlucHV0
RXZlbnQoZmFsc2UpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQorICAg
IC8vIFRoaXMgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIGJlY2F1c2Ugd2hlbiBhbiBleHBlY3RhdGlv
biBpcyBub3Qgc2F0aXNmaWVkIHRoZSBvbmx5IG91dHB1dCB5b3UgZ2V0CisgICAgLy8gb3V0IG9m
IGdtb2NrIGlzIHRoZSBsaW5lIG51bWJlciB0aGF0IHNldCB0aGUgZXhwZWN0YXRpb24uCisjZGVm
aW5lIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKSBkbyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBl
Y3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFu
ZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDbGllbnQpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzd2l0Y2ggKG1fZXhw
ZWN0ZWREaXNwb3NpdGlvbikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2Fz
ZSBEaWRIYW5kbGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICAvKiBJZiB3ZSBleHBlY3QgdG8gaGFuZGxlIGV2ZW50cywgd2Ugc2hvdWxkbid0
IGdldCBhbnkgZGlkTm90SGFuZGxlSW5wdXRFdmVudCgpIGNhbGxzIHdpdGggYW55IHBhcmFtZXRl
ci4gKi8gXAorICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5k
bGVJbnB1dEV2ZW50KDo6dGVzdGluZzo6XykpLlRpbWVzKDApOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwg
ZGlkSGFuZGxlSW5wdXRFdmVudCgpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBicmVhazsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjYXNlIERpZE5v
dEhhbmRsZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgIC8qIElmIHdlIGFyZW4ndCBleHBlY3RpbmcgdG8gaGFuZGxlIGV2ZW50cywgd2Ugc2hvdWxk
bid0IGNhbGwgZGlkSGFuZGxlSW5wdXRFdmVudCgpLiAqLyAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZEhhbmRsZUlucHV0RXZl
bnQoKSkuVGltZXMoMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RI
YW5kbGVJbnB1dEV2ZW50KGZhbHNlKSkuVGltZXMoMCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVu
dCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudCh0cnVlKSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBicmVhazsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjYXNlIERy
b3BFdmVudDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIC8qIElmIHdlJ3JlIGV4cGVjdGluZyB0byBkcm9wLCB3ZSBzaG91bGRuJ3QgZ2V0IGFu
eSBkaWRIYW5kbGUuLigpIG9yIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQodHJ1ZSkgY2FsbHMuICov
ICBcCisgICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZEhhbmRsZUlucHV0
RXZlbnQoKSkuVGltZXMoMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWRO
b3RIYW5kbGVJbnB1dEV2ZW50KHRydWUpKS5UaW1lcygwKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0Ns
aWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudChmYWxzZSkpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBicmVhazsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQogCiBw
cm90ZWN0ZWQ6CiAgICAgTW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50IG1fbW9ja0NDSW5wdXRIYW5k
bGVyQ2xpZW50OwogICAgIE93blB0cjxXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbD4gbV9p
bnB1dEhhbmRsZXI7CiAgICAgTW9ja1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQgbV9t
b2NrQ2xpZW50OwotICAgIFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50IGdlc3R1cmU7CisgICAgV2Vi
R2VzdHVyZUV2ZW50IGdlc3R1cmU7CiAKICAgICBlbnVtIEV4cGVjdGVkRGlzcG9zaXRpb24geyBE
aWRIYW5kbGUsIERpZE5vdEhhbmRsZSwgRHJvcEV2ZW50IH07CiAgICAgRXhwZWN0ZWREaXNwb3Np
dGlvbiBtX2V4cGVjdGVkRGlzcG9zaXRpb247CkBAIC0xNzMsMjQgKzE3OSwyNCBAQCBURVNUX0Yo
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlU2Nyb2xsU3RhcnRlZCkK
IHsKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2VuZCBhbnkgZXZlbnRzIHRvIHRoZSB3aWRnZXQgZm9y
IHRoaXMgZ2VzdHVyZS4KICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEaWRIYW5kbGU7Ci0g
ICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsK
IAogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdp
bih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJl
dHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOwogCi0g
ICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVn
aW47CisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2lu
OwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCi0gICAg
dmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAot
ICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVw
ZGF0ZTsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBk
YXRlOwogICAgIGdlc3R1cmUuZGVsdGFZID0gLTQwOyAvLyAtWSBtZWFucyBzY3JvbGwgZG93biAt
IGkuZS4gaW4gdGhlICtZIGRpcmVjdGlvbi4KICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0
SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNp
emU6OmhlaWdodCwgdGVzdGluZzo6R3QoMCkpKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRs
ZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAg
VkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOworICAgIGdlc3R1cmUudHlwZSA9IFdlYklu
cHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7CiAgICAgZ2VzdHVyZS5kZWx0YVkgPSAwOwogICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSk7CiAg
ICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CkBAIC0yMDAsMjMg
KzIwNiwyMyBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0
dXJlU2Nyb2xsRmFpbGVkKQogewogICAgIC8vIFdlIHNob3VsZCBzZW5kIGFsbCBldmVudHMgdG8g
dGhlIHdpZGdldCBmb3IgdGhpcyBnZXN0dXJlLgogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9
IERpZE5vdEhhbmRsZTsKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FO
RF9SRVNFVF9NT0NLUygpOwogCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJD
bGllbnQsIHNjcm9sbEJlZ2luKDo6dGVzdGluZzo6XywgOjp0ZXN0aW5nOjpfKSkKICAgICAgICAg
LldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6
U2Nyb2xsRmFpbGVkKSk7CiAKLSAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZl
bnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlU2Nyb2xsQmVnaW47CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZl
bnQoZ2VzdHVyZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FO
RF9SRVNFVF9NT0NLUygpOwogCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2
ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOworICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU7CiAgICAgZ2VzdHVyZS5kZWx0YVkgPSA0MDsKICAgICBt
X2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAotICAgIHZlcmlmeUFu
ZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKLSAgICBnZXN0
dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7CisgICAg
Z2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDsKICAgICBnZXN0
dXJlLmRlbHRhWSA9IDA7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2Vz
dHVyZSk7CiB9CkBAIC0yMjgsMTIgKzIzNCwxMiBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlU2Nyb2xsSWdub3JlZCkKICAgICAvLyBpbmRpY2F0aW5n
IHRoYXQgd2UgY291bGQgZGV0ZXJtaW5lIHRoYXQgdGhlcmUncyBub3RoaW5nIHRoYXQgY291bGQg
c2Nyb2xsIG9yIG90aGVyd2lzZQogICAgIC8vIHJlYWN0IHRvIHRoaXMgZ2VzdHVyZSBzZXF1ZW5j
ZSBhbmQgdGh1cyB3ZSBzaG91bGQgZHJvcCB0aGUgd2hvbGUgZ2VzdHVyZSBzZXF1ZW5jZSBvbiB0
aGUgZmxvb3IuCiAgICAgbV9leHBlY3RlZERpc3Bvc2l0aW9uID0gRHJvcEV2ZW50OwotICAgIHZl
cmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVz
dGluZzo6XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4o
V2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElnbm9yZWQpKTsKIAotICAgIGdl
c3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOwor
ICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjsKICAg
ICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIH0KIApAQCAtMjQx
LDMzICsyNDcsMzMgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwg
Z2VzdHVyZVBpbmNoKQogewogICAgIC8vIFdlIHNob3VsZG4ndCBzZW5kIGFueSBldmVudHMgdG8g
dGhlIHdpZGdldCBmb3IgdGhpcyBnZXN0dXJlLgogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9
IERpZEhhbmRsZTsKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9S
RVNFVF9NT0NLUygpOwogCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlUGluY2hCZWdpbjsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlUGluY2hCZWdpbjsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNs
aWVudCwgcGluY2hHZXN0dXJlQmVnaW4oKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlu
cHV0RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVS
SUZZX0FORF9SRVNFVF9NT0NLUygpOwogCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJ
bnB1dEV2ZW50OjpHZXN0dXJlUGluY2hVcGRhdGU7CisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5w
dXRFdmVudDo6R2VzdHVyZVBpbmNoVXBkYXRlOwogICAgIGdlc3R1cmUuZGVsdGFYID0gMS41Owog
ICAgIGdlc3R1cmUueCA9IDc7CiAgICAgZ2VzdHVyZS55ID0gMTM7CiAgICAgRVhQRUNUX0NBTEwo
bV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHBpbmNoR2VzdHVyZVVwZGF0ZSgxLjUsIFdlYkNv
cmU6OkludFBvaW50KDcsIDEzKSkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2
ZW50KGdlc3R1cmUpOwogCi0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9B
TkRfUkVTRVRfTU9DS1MoKTsKIAotICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRF
dmVudDo6R2VzdHVyZVBpbmNoVXBkYXRlOworICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZTsKICAgICBnZXN0dXJlLmRlbHRhWCA9IDAuNTsKICAgICBn
ZXN0dXJlLnggPSA5OwogICAgIGdlc3R1cmUueSA9IDY7CiAgICAgRVhQRUNUX0NBTEwobV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQsIHBpbmNoR2VzdHVyZVVwZGF0ZSguNSwgV2ViQ29yZTo6SW50
UG9pbnQoOSwgNikpKTsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0
dXJlKTsKIAotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VU
X01PQ0tTKCk7CiAKLSAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdl
c3R1cmVQaW5jaEVuZDsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
UGluY2hFbmQ7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHBp
bmNoR2VzdHVyZUVuZCgpKTsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChn
ZXN0dXJlKTsKIH0KQEAgLTI3NiwyMCArMjgyLDIwIEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ1N0YXJ0ZWQpCiB7CiAgICAgLy8gV2Ugc2hv
dWxkbid0IHNlbmQgYW55IGV2ZW50cyB0byB0aGUgd2lkZ2V0IGZvciB0aGlzIGdlc3R1cmUuCiAg
ICAgbV9leHBlY3RlZERpc3Bvc2l0aW9uID0gRGlkSGFuZGxlOwotICAgIHZlcmlmeUFuZFJlc2V0
TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICBFWFBFQ1RfQ0FM
TChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVz
dGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJ
bnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKIAotICAgIGdlc3R1cmUudHlwZSA9
IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisgICAgZ2VzdHVyZS50
eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CiAgICAgZ2VzdHVyZS5kZWx0
YVggPSAxMDsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2No
ZWR1bGVBbmltYXRpb24oKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQo
Z2VzdHVyZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9S
RVNFVF9NT0NLUygpOwogCiAgICAgLy8gVmVyaWZ5IHRoYXQgYSBHZXN0dXJlRmxpbmdDYW5jZWwg
ZHVyaW5nIGFuIGFuaW1hdGlvbiBjYW5jZWxzIGl0LgotICAgIGdlc3R1cmUudHlwZSA9IFdlYktp
dDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOworICAgIGdlc3R1cmUudHlwZSA9
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDsKICAgICBtX2lucHV0SGFuZGxlci0+
aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIH0KIApAQCAtMjk3LDM2ICszMDMsMzYgQEAgVEVT
VF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nRmFpbGVk
KQogewogICAgIC8vIFdlIHNob3VsZCBzZW5kIGFsbCBldmVudHMgdG8gdGhlIHdpZGdldCBmb3Ig
dGhpcyBnZXN0dXJlLgogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZE5vdEhhbmRsZTsK
LSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygp
OwogCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJl
Z2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6
UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxGYWlsZWQpKTsKIAot
ICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3Rh
cnQ7CisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7
CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2
ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAg
ICAgLy8gRXZlbiBpZiB3ZSBkaWRuJ3Qgc3RhcnQgYSBmbGluZyBvdXJzZWx2ZXMsIHdlIHN0aWxs
IG5lZWQgdG8gc2VuZCB0aGUgY2FuY2VsIGV2ZW50IHRvIHRoZSB3aWRnZXQuCi0gICAgZ2VzdHVy
ZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw7CisgICAg
Z2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOwogICAgIG1f
aW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogfQogCiBURVNUX0YoV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdJZ25vcmVkKQogewog
ICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZE5vdEhhbmRsZTsKLSAgICB2ZXJpZnlBbmRS
ZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgRVhQRUNU
X0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8s
IHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6
OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJZ25vcmVkKSk7CiAKLSAgICBnZXN0dXJlLnR5
cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OworICAgIGdlc3R1
cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OwogICAgIG1faW5wdXRI
YW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCi0gICAgdmVyaWZ5QW5kUmVzZXRN
b2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIC8vIEV2ZW4gaWYg
d2UgZGlkbid0IHN0YXJ0IGEgZmxpbmcgb3Vyc2VsdmVzLCB3ZSBzdGlsbCBuZWVkIHRvIHNlbmQg
dGhlIGNhbmNlbCBldmVudCB0byB0aGUgd2lkZ2V0LgotICAgIGdlc3R1cmUudHlwZSA9IFdlYktp
dDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOworICAgIGdlc3R1cmUudHlwZSA9
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDsKICAgICBtX2lucHV0SGFuZGxlci0+
aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIH0KIApAQCAtMzM0LDEyICszNDAsMjIgQEAgVEVT
VF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nQW5pbWF0
ZXMpCiB7CiAgICAgLy8gV2Ugc2hvdWxkbid0IHNlbmQgYW55IGV2ZW50cyB0byB0aGUgd2lkZ2V0
IGZvciB0aGlzIGdlc3R1cmUuCiAgICAgbV9leHBlY3RlZERpc3Bvc2l0aW9uID0gRGlkSGFuZGxl
OwotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tT
KCk7CiAKICAgICAvLyBPbiB0aGUgZmxpbmcgc3RhcnQsIHdlIHNob3VsZCBzY2hlZHVsZSBhbiBh
bmltYXRpb24gYnV0IG5vdCBhY3R1YWxseSBzdGFydAogICAgIC8vIHNjcm9sbGluZy4KLSAgICBn
ZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0Owot
ICAgIGdlc3R1cmUuZGVsdGFYID0gLTEwMDA7CisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRF
dmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisgICAgV2ViRmxvYXRQb2ludCBmbGluZ0RlbHRhID0g
V2ViRmxvYXRQb2ludCgxMDAwLCAwKTsKKyAgICBXZWJQb2ludCBmbGluZ1BvaW50ID0gV2ViUG9p
bnQoNywgMTMpOworICAgIFdlYlBvaW50IGZsaW5nR2xvYmFsUG9pbnQgPSBXZWJQb2ludCgxNywg
MjMpOworICAgIGludCBtb2RpZmllcnMgPSA3OworICAgIGdlc3R1cmUuZGVsdGFYID0gZmxpbmdE
ZWx0YS54OworICAgIGdlc3R1cmUuZGVsdGFZID0gZmxpbmdEZWx0YS55OworICAgIGdlc3R1cmUu
eCA9IGZsaW5nUG9pbnQueDsKKyAgICBnZXN0dXJlLnkgPSBmbGluZ1BvaW50Lnk7CisgICAgZ2Vz
dHVyZS5nbG9iYWxYID0gZmxpbmdHbG9iYWxQb2ludC54OworICAgIGdlc3R1cmUuZ2xvYmFsWSA9
IGZsaW5nR2xvYmFsUG9pbnQueTsKKyAgICBnZXN0dXJlLm1vZGlmaWVycyA9IG1vZGlmaWVyczsK
ICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmlt
YXRpb24oKSk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNj
cm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVz
dGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVk
KSk7CkBAIC0zNTYsMzMgKzM3MiwxOTQgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nQW5pbWF0ZXMpCiAKICAgICB0ZXN0aW5nOjpNb2NrOjpW
ZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOwog
Ci0gICAgLy8gVGhlIHNlY29uZCBjYWxsIHNob3VsZCBzdGFydCBzY3JvbGxpbmcgaW4gdGhlICtY
IGRpcmVjdGlvbi4KKyAgICAvLyBUaGUgc2Vjb25kIGNhbGwgc2hvdWxkIHN0YXJ0IHNjcm9sbGlu
ZyBpbiB0aGUgLVggZGlyZWN0aW9uLgorICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5k
bGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tD
Q0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6Xykp
CisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0
SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNp
emU6OndpZHRoLCB0ZXN0aW5nOjpMdCgwKSkpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lu
cHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkpOworICAgIG1faW5wdXRIYW5kbGVyLT5hbmlt
YXRlKDEwLjEpOworCisgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlv
bnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKKworICAgIC8vIExldCdzIHNheSBvbiB0
aGUgdGhpcmQgY2FsbCB3ZSBoaXQgYSBub24tc2Nyb2xsYWJsZSByZWdpb24uIFdlIHNob3VsZCBh
Ym9ydCB0aGUgZmxpbmcgYW5kIG5vdCBzY3JvbGwuCisgICAgLy8gV2UgYWxzbyBzaG91bGQgcGFz
cyB0aGUgY3VycmVudCBmbGluZyBwYXJhbWV0ZXJzIG91dCB0byB0aGUgY2xpZW50IHNvIHRoZSBy
ZXN0IG9mIHRoZSBmbGluZyBjYW4gYmUKKyAgICAvLyB0cmFuc2ZlcnJlZCB0byB0aGUgbWFpbiB0
aHJlYWQuCisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVk
dWxlQW5pbWF0aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xp
ZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldpbGxP
bmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xs
RmFpbGVkKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNj
cm9sbEJ5KHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lu
cHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkpLlRpbWVzKDApOworCisgICAgLy8gRXhwZWN0
ZWQgd2hlZWwgZmxpbmcgYW5pbWF0aW9uIHBhcmFtZXRlcnM6CisgICAgLy8gKikgZmxpbmdEZWx0
YSBhbmQgZmxpbmdQb2ludCBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsIEdlc3R1cmVGbGluZ1N0
YXJ0IGV2ZW50CisgICAgLy8gKikgc3RhcnRUaW1lIHNob3VsZCBiZSAxMCB0byBtYXRjaCB0aGUg
dGltZSBwYXJhbWV0ZXIgb2YgdGhlIGZpcnN0IGFuaW1hdGUoKSBjYWxsIGFmdGVyIHRoZSBHZXN0
dXJlRmxpbmdTdGFydAorICAgIC8vICopIGN1bXVsYXRpdmVTY3JvbGwgZGVwZW5kcyBvbiB0aGUg
Y3VydmUsIGJ1dCBzaW5jZSB3ZSd2ZSBhbmltYXRlZCBpbiB0aGUgLVggZGlyZWN0aW9uIHRoZSBY
IHZhbHVlIHNob3VsZCBiZSA8IDAKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIHRyYW5z
ZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbih0ZXN0aW5nOjpBbGxPZigKKyAgICAgICAgdGVz
dGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpkZWx0YSwgdGVzdGlu
Zzo6RXEoZmxpbmdEZWx0YSkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnM6OnBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ1BvaW50KSksCisgICAg
ICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6Z2xvYmFs
UG9pbnQsIHRlc3Rpbmc6OkVxKGZsaW5nR2xvYmFsUG9pbnQpKSwKKyAgICAgICAgdGVzdGluZzo6
RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjptb2RpZmllcnMsIHRlc3Rpbmc6
OkVxKG1vZGlmaWVycykpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnM6OnN0YXJ0VGltZSwgdGVzdGluZzo6RXEoMTApKSwKKyAgICAgICAgdGVz
dGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpjdW11bGF0aXZlU2Ny
b2xsLAorICAgICAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYlNpemU6OndpZHRoLCB0ZXN0aW5n
OjpHdCgwKSkpKSkpOworICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwLjIpOworCisgICAg
dGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRI
YW5kbGVyQ2xpZW50KTsKKyAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0
aW9ucygmbV9tb2NrQ2xpZW50KTsKKworICAgIC8vIFNpbmNlIHdlJ3ZlIGFib3J0ZWQgdGhlIGZs
aW5nLCB0aGUgbmV4dCBhbmltYXRpb24gc2hvdWxkIGJlIGEgbm8tb3AgYW5kIHNob3VsZCBub3Qg
cmVzdWx0IGluIGFub3RoZXIKKyAgICAvLyBmcmFtZSBiZWluZyByZXF1ZXN0ZWQuCisgICAgRVhQ
RUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkp
LlRpbWVzKDApOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBz
Y3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CisgICAgbV9pbnB1
dEhhbmRsZXItPmFuaW1hdGUoMTAuMyk7CisKKyAgICAvLyBTaW5jZSB3ZSd2ZSB0cmFuc2ZlcnJl
ZCB0aGUgZmxpbmcgdG8gdGhlIG1haW4gdGhyZWFkLCB3ZSBuZWVkIHRvIHBhc3MgdGhlIG5leHQg
R2VzdHVyZUZsaW5nQ2FuY2VsIHRvIHRoZSBtYWluCisgICAgLy8gdGhyZWFkIGFzIHdlbGwuCisg
ICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KHRydWUp
KTsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw7
CisgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7Cit9CisKK1RF
U1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ1RyYW5z
ZmVyUmVzZXRzKQoreworICAgIC8vIFdlIHNob3VsZG4ndCBzZW5kIGFueSBldmVudHMgdG8gdGhl
IHdpZGdldCBmb3IgdGhpcyBnZXN0dXJlLgorICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERp
ZEhhbmRsZTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CisKKyAgICAvLyBTdGFydCBh
IGdlc3R1cmUgZmxpbmcgaW4gdGhlIC1YIGRpcmVjdGlvbiB3aXRoIHplcm8gWSBtb3ZlbWVudC4K
KyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKKyAg
ICBXZWJGbG9hdFBvaW50IGZsaW5nRGVsdGEgPSBXZWJGbG9hdFBvaW50KDEwMDAsIDApOworICAg
IFdlYlBvaW50IGZsaW5nUG9pbnQgPSBXZWJQb2ludCg3LCAxMyk7CisgICAgV2ViUG9pbnQgZmxp
bmdHbG9iYWxQb2ludCA9IFdlYlBvaW50KDE3LCAyMyk7CisgICAgaW50IG1vZGlmaWVycyA9IDE7
CisgICAgZ2VzdHVyZS5kZWx0YVggPSBmbGluZ0RlbHRhLng7CisgICAgZ2VzdHVyZS5kZWx0YVkg
PSBmbGluZ0RlbHRhLnk7CisgICAgZ2VzdHVyZS54ID0gZmxpbmdQb2ludC54OworICAgIGdlc3R1
cmUueSA9IGZsaW5nUG9pbnQueTsKKyAgICBnZXN0dXJlLmdsb2JhbFggPSBmbGluZ0dsb2JhbFBv
aW50Lng7CisgICAgZ2VzdHVyZS5nbG9iYWxZID0gZmxpbmdHbG9iYWxQb2ludC55OworICAgIGdl
c3R1cmUubW9kaWZpZXJzID0gbW9kaWZpZXJzOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5w
dXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBFWFBFQ1RfQ0FMTCht
X21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGlu
Zzo6XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1
dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKKyAgICBtX2lucHV0SGFuZGxlci0+aGFu
ZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKKworICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENs
ZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisKKyAgICAvLyBT
dGFydCB0aGUgZmxpbmcgYW5pbWF0aW9uIGF0IHRpbWUgMTAuIFRoaXMgc2hvdWxkbid0IGFjdHVh
bGx5IHNjcm9sbCwganVzdCBlc3RhYmxpc2ggYSBzdGFydCB0aW1lLgorICAgIEVYUEVDVF9DQUxM
KG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBF
WFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGlu
Zzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDApOworICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRl
KDEwKTsKKworICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZt
X21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisKKyAgICAvLyBUaGUgc2Vjb25kIGNhbGwgc2hv
dWxkIHN0YXJ0IHNjcm9sbGluZyBpbiB0aGUgLVggZGlyZWN0aW9uLgogICAgIEVYUEVDVF9DQUxM
KG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKICAgICBF
WFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGlu
Zzo6XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2Vi
Q29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKLSAgICBFWFBFQ1Rf
Q0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6UHJvcGVy
dHkoJldlYkNvcmU6OkludFNpemU6OndpZHRoLCB0ZXN0aW5nOjpHdCgwKSkpKTsKKyAgICBFWFBF
Q1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6UHJv
cGVydHkoJldlYkNvcmU6OkludFNpemU6OndpZHRoLCB0ZXN0aW5nOjpMdCgwKSkpKTsKICAgICBF
WFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkpOwogICAg
IG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwLjEpOwogCiAgICAgdGVzdGluZzo6TW9jazo6VmVy
aWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKIAog
ICAgIC8vIExldCdzIHNheSBvbiB0aGUgdGhpcmQgY2FsbCB3ZSBoaXQgYSBub24tc2Nyb2xsYWJs
ZSByZWdpb24uIFdlIHNob3VsZCBhYm9ydCB0aGUgZmxpbmcgYW5kIG5vdCBzY3JvbGwuCi0gICAg
Ly8gRklYTUU6IFdlIGFsc28gbmVlZCB0byBkbyBzb21lIHdvcmsgdG8gdHJhbnNmZXIgdGhlIHJl
c3Qgb2YgdGhpcyBmbGluZyB0byB0aGUgbWFpbiB0aHJlYWQuCi0gICAgLy8gQWRkIHRlc3RzIGZv
ciB0aGlzIG9uY2UgaXQncyBpbXBsZW1lbnRlZC4KKyAgICAvLyBXZSBhbHNvIHNob3VsZCBwYXNz
IHRoZSBjdXJyZW50IGZsaW5nIHBhcmFtZXRlcnMgb3V0IHRvIHRoZSBjbGllbnQgc28gdGhlIHJl
c3Qgb2YgdGhlIGZsaW5nIGNhbiBiZQorICAgIC8vIHRyYW5zZmVycmVkIHRvIHRoZSBtYWluIHRo
cmVhZC4KICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1
bGVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGll
bnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9u
Y2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxG
YWlsZWQpKTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Ny
b2xsQnkodGVzdGluZzo6XykpLlRpbWVzKDApOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5w
dXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSkuVGltZXMoMCk7CisKKyAgICAvLyBFeHBlY3Rl
ZCB3aGVlbCBmbGluZyBhbmltYXRpb24gcGFyYW1ldGVyczoKKyAgICAvLyAqKSBmbGluZ0RlbHRh
IGFuZCBmbGluZ1BvaW50IHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwgR2VzdHVyZUZsaW5nU3Rh
cnQgZXZlbnQKKyAgICAvLyAqKSBzdGFydFRpbWUgc2hvdWxkIGJlIDEwIHRvIG1hdGNoIHRoZSB0
aW1lIHBhcmFtZXRlciBvZiB0aGUgZmlyc3QgYW5pbWF0ZSgpIGNhbGwgYWZ0ZXIgdGhlIEdlc3R1
cmVGbGluZ1N0YXJ0CisgICAgLy8gKikgY3VtdWxhdGl2ZVNjcm9sbCBkZXBlbmRzIG9uIHRoZSBj
dXJ2ZSwgYnV0IHNpbmNlIHdlJ3ZlIGFuaW1hdGVkIGluIHRoZSAtWCBkaXJlY3Rpb24gdGhlIFgg
dmFsdWUgc2hvdWxkIGJlIDwgMAorICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgdHJhbnNm
ZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKHRlc3Rpbmc6OkFsbE9mKAorICAgICAgICB0ZXN0
aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmRlbHRhLCB0ZXN0aW5n
OjpFcShmbGluZ0RlbHRhKSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVl
bEZsaW5nUGFyYW1ldGVyczo6cG9pbnQsIHRlc3Rpbmc6OkVxKGZsaW5nUG9pbnQpKSwKKyAgICAg
ICAgdGVzdGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpnbG9iYWxQ
b2ludCwgdGVzdGluZzo6RXEoZmxpbmdHbG9iYWxQb2ludCkpLAorICAgICAgICB0ZXN0aW5nOjpG
aWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6Om1vZGlmaWVycywgdGVzdGluZzo6
RXEobW9kaWZpZXJzKSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVyczo6c3RhcnRUaW1lLCB0ZXN0aW5nOjpFcSgxMCkpLAorICAgICAgICB0ZXN0
aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmN1bXVsYXRpdmVTY3Jv
bGwsCisgICAgICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViU2l6ZTo6d2lkdGgsIHRlc3Rpbmc6
Okd0KDApKSkpKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMik7CiAKICAgICB0
ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhh
bmRsZXJDbGllbnQpOworICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRp
b25zKCZtX21vY2tDbGllbnQpOwogCiAgICAgLy8gU2luY2Ugd2UndmUgYWJvcnRlZCB0aGUgZmxp
bmcsIHRoZSBuZXh0IGFuaW1hdGlvbiBzaG91bGQgYmUgYSBuby1vcCBhbmQgc2hvdWxkIG5vdCBy
ZXN1bHQgaW4gYW5vdGhlcgogICAgIC8vIGZyYW1lIGJlaW5nIHJlcXVlc3RlZC4KICAgICBFWFBF
Q1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSku
VGltZXMoMCk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNj
cm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKICAgICBtX2lucHV0
SGFuZGxlci0+YW5pbWF0ZSgxMC4zKTsKKworICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENs
ZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisKKyAgICAvLyBT
aW5jZSB3ZSd2ZSB0cmFuc2ZlcnJlZCB0aGUgZmxpbmcgdG8gdGhlIG1haW4gdGhyZWFkLCB3ZSBu
ZWVkIHRvIHBhc3MgdGhlIG5leHQgR2VzdHVyZUZsaW5nQ2FuY2VsIHRvIHRoZSBtYWluCisgICAg
Ly8gdGhyZWFkIGFzIHdlbGwuCisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RI
YW5kbGVJbnB1dEV2ZW50KHRydWUpKTsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlRmxpbmdDYW5jZWw7CisgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZl
bnQoZ2VzdHVyZSk7CisKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CisKKyAgICAvLyBT
dGFydCBhIHNlY29uZCBnZXN0dXJlIGZsaW5nLCB0aGlzIHRpbWUgaW4gdGhlICtZIGRpcmVjdGlv
biB3aXRoIG5vIFguCisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZs
aW5nU3RhcnQ7CisgICAgZmxpbmdEZWx0YSA9IFdlYkZsb2F0UG9pbnQoMCwgLTEwMDApOworICAg
IGZsaW5nUG9pbnQgPSBXZWJQb2ludCg5NSwgODcpOworICAgIGZsaW5nR2xvYmFsUG9pbnQgPSBX
ZWJQb2ludCgzMiwgNzEpOworICAgIG1vZGlmaWVycyA9IDI7CisgICAgZ2VzdHVyZS5kZWx0YVgg
PSBmbGluZ0RlbHRhLng7CisgICAgZ2VzdHVyZS5kZWx0YVkgPSBmbGluZ0RlbHRhLnk7CisgICAg
Z2VzdHVyZS54ID0gZmxpbmdQb2ludC54OworICAgIGdlc3R1cmUueSA9IGZsaW5nUG9pbnQueTsK
KyAgICBnZXN0dXJlLmdsb2JhbFggPSBmbGluZ0dsb2JhbFBvaW50Lng7CisgICAgZ2VzdHVyZS5n
bG9iYWxZID0gZmxpbmdHbG9iYWxQb2ludC55OworICAgIGdlc3R1cmUubW9kaWZpZXJzID0gbW9k
aWZpZXJzOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hl
ZHVsZUFuaW1hdGlvbigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNs
aWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCisgICAgICAgIC5XaWxs
T25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9s
bFN0YXJ0ZWQpKTsKKyAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJl
KTsKKworICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21v
Y2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisKKyAgICAvLyBTdGFydCB0aGUgc2Vjb25kIGZsaW5n
IGFuaW1hdGlvbiBhdCB0aW1lIDMwLgorICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5k
bGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tD
Q0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6Xykp
LlRpbWVzKDApOworICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDMwKTsKKworICAgIHRlc3Rp
bmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxl
ckNsaWVudCk7CisKKyAgICAvLyBUaWNrIHRoZSBzZWNvbmQgZmxpbmcgb25jZSBub3JtYWxseS4K
KyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmlt
YXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNj
cm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVz
dGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVk
KSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5
KHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjpoZWlnaHQsIHRlc3Rpbmc6Okd0
KDApKSkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3Jv
bGxFbmQoKSk7CisgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMzAuMSk7CisKKyAgICB0ZXN0
aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQpOworCisgICAgLy8gVGhlbiBhYm9ydCB0aGUgc2Vjb25kIGZsaW5nLgorICAgIEVY
UEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigp
KTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVn
aW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpS
ZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCkpOworICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5n
OjpfKSkuVGltZXMoMCk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGll
bnQsIHNjcm9sbEVuZCgpKS5UaW1lcygwKTsKKworICAgIC8vIFdlIHNob3VsZCBnZXQgcGFyYW1l
dGVycyBmcm9tIHRoZSBzZWNvbmQgZmxpbmcsIG5vdGhpbmcgZnJvbSB0aGUgZmlyc3QgZmxpbmcg
c2hvdWxkICJsZWFrIi4KKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIHRyYW5zZmVyQWN0
aXZlV2hlZWxGbGluZ0FuaW1hdGlvbih0ZXN0aW5nOjpBbGxPZigKKyAgICAgICAgdGVzdGluZzo6
RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpkZWx0YSwgdGVzdGluZzo6RXEo
ZmxpbmdEZWx0YSkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnM6OnBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ1BvaW50KSksCisgICAgICAgIHRl
c3Rpbmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6Z2xvYmFsUG9pbnQs
IHRlc3Rpbmc6OkVxKGZsaW5nR2xvYmFsUG9pbnQpKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQo
JldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjptb2RpZmllcnMsIHRlc3Rpbmc6OkVxKG1v
ZGlmaWVycykpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1Bh
cmFtZXRlcnM6OnN0YXJ0VGltZSwgdGVzdGluZzo6RXEoMzApKSwKKyAgICAgICAgdGVzdGluZzo6
RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpjdW11bGF0aXZlU2Nyb2xsLAor
ICAgICAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYlNpemU6OmhlaWdodCwgdGVzdGluZzo6THQo
MCkpKSkpKTsKKyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgzMC4yKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133629</attachid>
            <date>2012-03-24 04:13:31 -0700</date>
            <delta_ts>2012-03-26 15:50:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81740-20120324041330.patch</filename>
            <type>text/plain</type>
            <size>86703</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGE3YjYzOWExZGMzODQz
YzY0YjFkNGFlNzU0YjI4YmY1MDI0ODE2NS4uODJhM2RmNGM5MjRiN2ZlOGIxYTlkMGMxMDhmNDNh
YjdlYTc0NWVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTIxICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBU
cmFuc2ZlciB3aGVlbCBmbGluZyB2aWEgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE3NDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVQbGF0
Zm9ybUdlc3R1cmVBbmltYXRpb246OkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbik6Cisg
ICAgICAgICogcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmg6CisgICAg
ICAgIChBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L1BsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ub3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hG
bGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxh
dGZvcm1HZXN0dXJlQ3VydmU6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ub3VjaEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmUuaDoKKyAgICAgICAgKFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZSk6CisgICAgICAgICogcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZS5oOgorICAgICAgICAoV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0dlc3R1cmVDdXJ2ZVRhcmdldCk6CisKIDIwMTIt
MDMtMjMgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV1c2UgYnVmZmVyIGFsbG9jYXRpb24gaWYgY2FudmFzIHNpemUgZG9lcyBub3QgY2hhbmdlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDU2YTU1OWQwNTRiNjlmNmYyZDRkZDBlZDc4NmZj
ODgzODExNWU2NDcuLmFmYjViN2JhMzdhNzRhZmJhODQ1NGM3MTE3MGRmYWEwYWVkOTQwNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTItMDMtMjEgIEph
bWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IFRyYW5zZmVyIHdoZWVsIGZsaW5nIHZpYSBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTc0MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGlj
L1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQuaC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpXZWJBY3Rp
dmVXaGVlbEZsaW5nUGFyYW1ldGVycyk6CisgICAgICAgICogcHVibGljL1dlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckNsaWVudDo6dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKToK
KyAgICAgICAgKiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYlZpZXcpOgorICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVUb0NDR2VzdHVyZUFkYXB0ZXI6
OnNjcm9sbEJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OmhhbmRsZUdlc3R1cmVGbGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsOjphbmltYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGw6OmNhbmNlbEN1cnJlbnRGbGluZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSk6CisgICAgICAgICogc3Jj
L1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2Nyb2xsQnkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OnRyYW5zZmVyV2hlZWxGbGluZ0FuaW1hdGlvbik6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmll
d0ltcGwpOgorICAgICAgICAqIHRlc3RzL1BsYXRmb3JtR2VzdHVyZUN1cnZlVGVzdC5jcHA6Cisg
ICAgICAgICogdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TW9ja1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQ6Ok1vY2tX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KToKKyAgICAgICAgKE1vY2tXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6VEVTVCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdDo6V2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGxUZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGxUZXN0Ojp+V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0KToK
KyAgICAgICAgKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCk6CisgICAgICAgIChX
ZWJLaXQ6OlRFU1RfRik6CisgICAgICAgIChXZWJLaXQpOgorCiAyMDEyLTAzLTIzICBKb25hdGhh
biBCYWNrZXIgIDxiYWNrZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVt
b3ZlIHVudXNlZCB2YXJpYWJsZXMgZnJvbSB1bml0dGVzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmgKaW5kZXgg
NWMwYjllZjlhMmEyYzYxM2IxMTkwMGMxM2Y4OThmMjI4MzliNDY1Yi4uYjI0NTZjZTcxYzFlNTk1
MzliNzlhMzBmZWQ3NDZlNzFkM2YzOTBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmgKKysrIGIvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmgKQEAgLTI4LDYgKzI4
LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsK
K2NsYXNzIFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOwogc3RydWN0IFdlYlNpemU7CiBj
bGFzcyBXZWJUaHJlYWQ7CiAKQEAgLTYxLDYgKzYyLDEzIEBAIHB1YmxpYzoKICAgICAvLyBpbnRl
cm5hbGx5IHNjaGVkdWxlIGEgY29tcG9zaXRpbmcgcGFzcyB3aGVuIG5lZWRlZC4KICAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKSA9IDA7CiAKKworICAgIC8vIFRyYW5zZmVycyBh
biBpbi1wcm9ncmVzcyB3aGVlbCBmbGluZyBhbmltYXRpb24gdGhhdCB0aGUgV2ViTGF5ZXJUcmVl
VmlldworICAgIC8vIGNhbiBubyBsb25nZXIgYWR2YW5jZSB0byB0aGUgY2xpZW50IHRvIGZpbmlz
aCBvdXQuCisgICAgLy8KKyAgICAvLyBGSVhNRTogUmVtb3ZlIGRlZmF1bHQgaW1wbCB3aGVuIGNs
aWVudHMgYXJlIGFsbCB1cGRhdGVkLgorICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlckFjdGl2ZVdo
ZWVsRmxpbmdBbmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBh
cmFtcykgeyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5XZWJMYXllclRyZWVWaWV3Q2xp
ZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGI3NDFmMTBmNTBjYTUzY2EyMThjMzZj
YzE0NTdmMjNlZjI0ZWE2ZTguLmU4OWNlMmNiOGMxYWQ1MjVhMGJiODNlZmY4MzE1MWU2N2NjOWIz
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM0MzksNiArMzQzOSw3IEBACiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRm
b3JtR2VzdHVyZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQ
bGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uY3BwCmluZGV4IDE4ZWM3ZWIzNGFlMmU0ZTA3YjU2YzE0
YTNlMDJhMzM3OGJhZDlkNTAuLjZhMDEzYWRmYjQ0NWQ2ZGM5NTNkNDM5NzhmNDk4NTAxMzdjYzBl
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2Vz
dHVyZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxh
dGZvcm1HZXN0dXJlQW5pbWF0aW9uLmNwcApAQCAtMzcsNiArMzcsMTEgQEAgUGFzc093blB0cjxB
Y3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24+IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1h
dGlvbjo6Y3JlYXQKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEFjdGl2ZVBsYXRmb3JtR2VzdHVy
ZUFuaW1hdGlvbihjdXJ2ZSwgdGFyZ2V0KSk7CiB9CiAKK1Bhc3NPd25QdHI8QWN0aXZlUGxhdGZv
cm1HZXN0dXJlQW5pbWF0aW9uPiBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OmNyZWF0
ZShQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjdXJ2ZSwgUGxhdGZvcm1HZXN0dXJl
Q3VydmVUYXJnZXQqIHRhcmdldCwgZG91YmxlIHN0YXJ0VGltZSkKK3sKKyAgICByZXR1cm4gYWRv
cHRQdHIobmV3IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbihjdXJ2ZSwgdGFyZ2V0LCBz
dGFydFRpbWUpKTsKK30KKwogQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjp+QWN0aXZl
UGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKCkKIHsKIH0KQEAgLTQ5LDYgKzU0LDE0IEBAIEFjdGl2
ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9u
KFBhc3NPd25QdHI8UGxhdGZvCiB7CiB9CiAKK0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlv
bjo6QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0
dXJlQ3VydmU+IGN1cnZlLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCogdGFyZ2V0LCBkb3Vi
bGUgc3RhcnRUaW1lKQorICAgIDogbV9zdGFydFRpbWUoc3RhcnRUaW1lKQorICAgICwgbV93YWl0
aW5nRm9yRmlyc3RUaWNrKGZhbHNlKQorICAgICwgbV9jdXJ2ZShjdXJ2ZSkKKyAgICAsIG1fdGFy
Z2V0KHRhcmdldCkKK3sKK30KKwogYm9vbCBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246
OmFuaW1hdGUoZG91YmxlIHRpbWUpCiB7CiAgICAgaWYgKG1fd2FpdGluZ0ZvckZpcnN0VGljaykg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0
dXJlQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdl
c3R1cmVBbmltYXRpb24uaAppbmRleCA5ZDU2M2U0ODM2NjZkZDJhZGExYjViMDVlODk4NGRmMTVi
YWM3MDI0Li4yMWYxOTljMDdhMWZjZjM0YzU4YzEyNDlmMmI4NGU0YzU3MTFiY2E0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb24uaApAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjdGl2ZVBsYXRmb3JtR2VzdHVy
ZUFuaW1hdGlvbik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8QWN0aXZlUGxhdGZv
cm1HZXN0dXJlQW5pbWF0aW9uPiBjcmVhdGUoUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZT4sIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8
QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uPiBjcmVhdGUoUGFzc093blB0cjxQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZT4sIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0KiwgZG91YmxlIHN0YXJ0
VGltZSk7CiAgICAgfkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbigpOwogCiAgICAgYm9v
bCBhbmltYXRlKGRvdWJsZSB0aW1lKTsKQEAgLTUwLDYgKzUxLDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICAvLyBBc3N1bWVzIGEgdmFsaWQgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQgdGhh
dCBvdXRsaXZlcyB0aGUgYW5pbWF0aW9uLgogICAgIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1h
dGlvbihQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiwgUGxhdGZvcm1HZXN0dXJlQ3Vy
dmVUYXJnZXQqKTsKKyAgICBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0
cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4sIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0KiwgZG91
YmxlIHN0YXJ0VGltZSk7CiAKICAgICBkb3VibGUgbV9zdGFydFRpbWU7CiAgICAgYm9vbCBtX3dh
aXRpbmdGb3JGaXJzdFRpY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaAppbmRleCBiMjhiMjkyYzE4ZGYwNDhlM2MzMGExZGY0
OTUzMDQyZmJlYzMwNDQ5Li5kOTBhOWUxODM4Y2UyNDk4NGY1YjcwNDM1ODc1OGIyMjFiNDcwNTlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVDdXJ2
ZVRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUN1
cnZlVGFyZ2V0LmgKQEAgLTI3LDExICsyNywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIEludFBvaW50OworY2xhc3MgSW50U2l6ZTsKIAogY2xhc3MgUGxhdGZvcm1HZXN0dXJl
Q3VydmVUYXJnZXQgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBJ
bnRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYp
ID0gMDsKICAgICAvLyBGSVhNRTogYWRkIGludGVyZmFjZXMgZm9yIHNjcm9sbCgpLCBldGMuCiAK
IHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yTm9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5v
bmUuY3BwCmluZGV4IGRlMzMwYjQwNjgxZjcxNjczMzcwM2I4ZDE4NjMyMzg0YTFjMTU0NzUuLjYx
ZTYwNmQwMWZjNzE1MjJiNDkyMmQ0OTZiNzRkMGM4ZDUyZTcxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcApAQCAtNTYyLDEwICs1NjIsMTAg
QEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OnN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVkKCkK
ICAgICAgICAgbV9hbmltYXRpb25BY3RpdmUgPSBmYWxzZTsKIH0KIAotdm9pZCBTY3JvbGxBbmlt
YXRvck5vbmU6OnNjcm9sbEJ5KGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikKK3ZvaWQgU2Nyb2xs
QW5pbWF0b3JOb25lOjpzY3JvbGxCeShjb25zdCBJbnRTaXplJiBsb2NhdGlvbikKIHsKLSAgICBt
X2N1cnJlbnRQb3NYICs9IGxvY2F0aW9uLngoKTsKLSAgICBtX2N1cnJlbnRQb3NZICs9IGxvY2F0
aW9uLnkoKTsKKyAgICBtX2N1cnJlbnRQb3NYICs9IGxvY2F0aW9uLndpZHRoKCk7CisgICAgbV9j
dXJyZW50UG9zWSArPSBsb2NhdGlvbi5oZWlnaHQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JO
b25lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaAppbmRl
eCBjNDdiY2E5ODYwOWI0ZjE3NWQzZWQxNDExMzU4NjM5OTNiMDUyYWIxLi44OTU3YmFkNWE1Y2Jh
ZDkwOWFmNjJhOGRkMjY5OWJjYmQ0MmY5ZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRvck5vbmUuaApAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgfTsK
IAogICAgIC8vIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0IGltcGxlbWVudGF0aW9uLgotICAg
IHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBJbnRQb2ludCYpOworICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxCeShjb25zdCBJbnRTaXplJik7CiAKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xh
c3MgOjpTY3JvbGxBbmltYXRvck5vbmVUZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKaW5k
ZXggNjZmN2FiMDFmMTA3YjhlZDNlYjc1Y2MzMzQ5MTQxOGY4OGFmOWM3YS4uNzZmNTY0MzQ5YzFk
ZjgxYWRhYTcwYzM0ZjNiNGY1ZWM4ZGU3OTM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3Bw
CkBAIC0zNSwxOCArMzUsMjQgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogUGFzc093blB0cjxQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpj
cmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHkpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZSh2
ZWxvY2l0eSwgMywgRmxvYXRQb2ludCgwLjMzMzMsIDAuNjY2NiksIEZsb2F0UG9pbnQoMC42NjY2
LCAxKSk7CisgICAgcmV0dXJuIGNyZWF0ZSh2ZWxvY2l0eSwgSW50U2l6ZSgpKTsKIH0KIAotUGFz
c093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVy
ZUN1cnZlOjpjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IGZsb2F0IHVu
aXRUaW1lU2NhbGVMb2cxMCwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDEsIGNvbnN0IEZsb2F0
UG9pbnQmIGJlemllclAyKQorUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hw
YWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVs
b2NpdHksIGNvbnN0IEludFNpemUmIGN1bXVsYXRpdmVTY3JvbGwpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUodmVsb2NpdHksIHVu
aXRUaW1lU2NhbGVMb2cxMCwgYmV6aWVyUDEsIGJlemllclAyKSk7CisgICAgcmV0dXJuIGNyZWF0
ZSh2ZWxvY2l0eSwgMywgRmxvYXRQb2ludCgwLjMzMzMsIDAuNjY2NiksIEZsb2F0UG9pbnQoMC42
NjY2LCAxKSwgY3VtdWxhdGl2ZVNjcm9sbCk7CiB9CiAKLVRvdWNocGFkRmxpbmdQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZTo6VG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNvbnN0IEZsb2F0
UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBmbG9hdCB1bml0VGltZVNjYWxlTG9nMTAsIGNvbnN0IEZs
b2F0UG9pbnQmIGJlemllclAxLCBjb25zdCBGbG9hdFBvaW50JiBiZXppZXJQMikKK1Bhc3NPd25Q
dHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBmbG9hdCB1bml0VGlt
ZVNjYWxlTG9nMTAsIGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAxLCBjb25zdCBGbG9hdFBvaW50
JiBiZXppZXJQMiwgY29uc3QgSW50U2l6ZSYgY3VtdWxhdGl2ZVNjcm9sbCkKK3sKKyAgICByZXR1
cm4gYWRvcHRQdHIobmV3IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSh2ZWxvY2l0
eSwgdW5pdFRpbWVTY2FsZUxvZzEwLCBiZXppZXJQMSwgYmV6aWVyUDIsIGN1bXVsYXRpdmVTY3Jv
bGwpKTsKK30KKworVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpUb3VjaHBhZEZs
aW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0
IGZsb2F0IHVuaXRUaW1lU2NhbGVMb2cxMCwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDEsIGNv
bnN0IEZsb2F0UG9pbnQmIGJlemllclAyLCBjb25zdCBJbnRTaXplJiBjdW11bGF0aXZlU2Nyb2xs
KQogICAgIDogbV92ZWxvY2l0eSh2ZWxvY2l0eSkKICAgICAsIG1fdGltZVNjYWxlRmFjdG9yKHVu
aXRUaW1lU2NhbGVMb2cxMCAvIGxvZzEwKG1heCgxMC5mLCBtYXgoZmFicyh2ZWxvY2l0eS54KCkp
LCBmYWJzKHZlbG9jaXR5LnkoKSkpKSkpCiAgICAgLCBtX2ZsaW5nQmV6aWVyKGJlemllclAxLngo
KSwgYmV6aWVyUDEueSgpLCBiZXppZXJQMi54KCksIGJlemllclAyLnkoKSkKKyAgICAsIG1fY3Vt
dWxhdGl2ZVNjcm9sbChjdW11bGF0aXZlU2Nyb2xsKQogewogICAgIEFTU0VSVCh2ZWxvY2l0eSAh
PSBGbG9hdFBvaW50Ojp6ZXJvKCkpOwogfQpAQCAtNzIsMTEgKzc4LDExIEBAIGJvb2wgVG91Y2hw
YWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjphcHBseShkb3VibGUgdGltZSwgUGxhdGZvcm1H
ZXN0dXJlQ3VydmVUCiAgICAgICAgIGRpc3BsYWNlbWVudCA9IDE7CiAKICAgICAvLyBLZWVwIHRy
YWNrIG9mIGludGVnZXIgcG9ydGlvbiBvZiBzY3JvbGwgdGh1cyBmYXIsIGFuZCBwcmVwYXJlIGlu
Y3JlbWVudC4KLSAgICBJbnRQb2ludCBzY3JvbGwoZGlzcGxhY2VtZW50ICogbV92ZWxvY2l0eS54
KCksIGRpc3BsYWNlbWVudCAqIG1fdmVsb2NpdHkueSgpKTsKLSAgICBJbnRQb2ludCBzY3JvbGxJ
bmNyZW1lbnQoc2Nyb2xsIC0gbV9jdW11bGF0aXZlU2Nyb2xsKTsKKyAgICBJbnRTaXplIHNjcm9s
bChkaXNwbGFjZW1lbnQgKiBtX3ZlbG9jaXR5LngoKSwgZGlzcGxhY2VtZW50ICogbV92ZWxvY2l0
eS55KCkpOworICAgIEludFNpemUgc2Nyb2xsSW5jcmVtZW50KHNjcm9sbCAtIG1fY3VtdWxhdGl2
ZVNjcm9sbCk7CiAgICAgbV9jdW11bGF0aXZlU2Nyb2xsID0gc2Nyb2xsOwogCi0gICAgaWYgKHRp
bWUgPCAxIHx8IHNjcm9sbEluY3JlbWVudCAhPSBJbnRQb2ludDo6emVybygpKSB7CisgICAgaWYg
KHRpbWUgPCAxIHx8ICFzY3JvbGxJbmNyZW1lbnQuaXNaZXJvKCkpIHsKICAgICAgICAgdGFyZ2V0
LT5zY3JvbGxCeShzY3JvbGxJbmNyZW1lbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZv
cm1HZXN0dXJlQ3VydmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNocGFkRmxpbmdQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCmluZGV4IDRlNWIxOWJlMjgyZjNkYzNlMDJiYTg0MDMzOWRi
OGJhNjU3NGQ5YWMuLjU5YTI2NGMxNGZhN2E0NTJjZTBhYWRkZjRiYjFjYjNmMjUxZmI4OGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNocGFkRmxpbmdQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCkBAIC00MiwxOCArNDIsMTggQEAgY2xhc3MgUGxhdGZvcm1H
ZXN0dXJlQ3VydmVUYXJnZXQ7CiBjbGFzcyBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmUgOiBwdWJsaWMgUGxhdGZvcm1HZXN0dXJlQ3VydmUgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYg
dmVsb2NpdHkpOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBj
cmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IGZsb2F0IHVuaXRUaW1lU2Nh
bGVMb2cxMCwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDEsIGNvbnN0IEZsb2F0UG9pbnQmIGJl
emllclAyKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3Jl
YXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBJbnRTaXplJiBjdW11bGF0aXZl
U2Nyb2xsKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3Jl
YXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBmbG9hdCB1bml0VGltZVNjYWxl
TG9nMTAsIGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAxLCBjb25zdCBGbG9hdFBvaW50JiBiZXpp
ZXJQMiwgY29uc3QgSW50U2l6ZSYgY3VtdWxhdGl2ZVNjcm9sbCk7CiAgICAgdmlydHVhbCB+VG91
Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgYXBw
bHkoZG91YmxlIG1vbm90b25pY1RpbWUsIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0Kik7CiAK
IHByaXZhdGU6Ci0gICAgZXhwbGljaXQgVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZl
KGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBmbG9hdCB1bml0VGltZVNjYWxlTG9n
MTAsIGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAxLCBjb25zdCBGbG9hdFBvaW50JiBiZXppZXJQ
Mik7Ci0KKyAgICBleHBsaWNpdCBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29u
c3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IGZsb2F0IHVuaXRUaW1lU2NhbGVMb2cxMCwg
Y29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDEsIGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAyLCBj
b25zdCBJbnRTaXplJiBjdW11bGF0aXZlU2Nyb2xsKTsKICAgICBGbG9hdFBvaW50IG1fdmVsb2Np
dHk7CiAgICAgZmxvYXQgbV90aW1lU2NhbGVGYWN0b3I7Ci0gICAgSW50UG9pbnQgbV9jdW11bGF0
aXZlU2Nyb2xsOwogICAgIFVuaXRCZXppZXIgbV9mbGluZ0JlemllcjsKKyAgICBJbnRTaXplIG1f
Y3VtdWxhdGl2ZVNjcm9sbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJl
Q3VydmUuY3BwCmluZGV4IGM5ZjE3MzI4OTc5Y2I3YzcyZmYzOWY3ZWNjMjExMTBmNDMzYmMzOTku
LjUxNmQxM2MwM2JhMTc1ZDAzZWI0NDNjZWJjNTFjYjgxMDRiM2U5MjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1doZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlLmNwcApAQCAtNTksMTEgKzU5LDExIEBAIGJvb2wgV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVy
ZUN1cnZlOjphcHBseShkb3VibGUgdGltZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnCiAgICAg
Ly8gRklYTUU6IGNvbnNpZGVyIG1ha2luZyB0aGUgdmFsdWUgb2Ygc2lnbWEgc2V0dGFibGUgaW4g
dGhlIGNvbnN0cnVjdG9yLgogICAgIHN0YXRpYyBkb3VibGUgdHdvU2lnbWFTcXVhcmVkSW52ZXJz
ZSA9IDE2OyAvLyBzaWdtYSA9IDAuMjUKICAgICBmbG9hdCBjZGYgPSAxIC0gZXhwKC10aW1lICog
dGltZSAqIHR3b1NpZ21hU3F1YXJlZEludmVyc2UpOwotICAgIEludFBvaW50IHNjcm9sbChjZGYg
KiBtX3ZlbG9jaXR5LngoKSwgY2RmICogbV92ZWxvY2l0eS55KCkpOwotICAgIEludFBvaW50IHNj
cm9sbEluY3JlbWVudChzY3JvbGwgLSBtX2N1bXVsYXRpdmVTY3JvbGwpOworICAgIEludFNpemUg
c2Nyb2xsKGNkZiAqIG1fdmVsb2NpdHkueCgpLCBjZGYgKiBtX3ZlbG9jaXR5LnkoKSk7CisgICAg
SW50U2l6ZSBzY3JvbGxJbmNyZW1lbnQoc2Nyb2xsIC0gbV9jdW11bGF0aXZlU2Nyb2xsKTsKICAg
ICBtX2N1bXVsYXRpdmVTY3JvbGwgPSBzY3JvbGw7CiAKLSAgICBpZiAoY2RmIDwgMC41IHx8IHNj
cm9sbEluY3JlbWVudCAhPSBJbnRQb2ludDo6emVybygpKSB7CisgICAgaWYgKGNkZiA8IDAuNSB8
fCAhc2Nyb2xsSW5jcmVtZW50LmlzWmVybygpKSB7CiAgICAgICAgIHRhcmdldC0+c2Nyb2xsQnko
c2Nyb2xsSW5jcmVtZW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmUuaAppbmRleCBiNzIxNDYxNjUzMzNmMjNjOGM5YmJmNmMwMWRkYmYwNjdhZWUxYWMyLi5kMDk1
NTY2YTkyMTJlZDMxZjUyMDA2MmUxNzJmZGVjNDgwYzNjNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaGVlbEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaApA
QCAtNDksNyArNDksNyBAQCBwcml2YXRlOgogICAgIFdoZWVsRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSk7CiAKICAgICBGbG9hdFBvaW50IG1fdmVs
b2NpdHk7Ci0gICAgSW50UG9pbnQgbV9jdW11bGF0aXZlU2Nyb2xsOworICAgIEludFNpemUgbV9j
dW11bGF0aXZlU2Nyb2xsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVX
aGVlbEZsaW5nUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlm
YzhjMTExN2YwMTQ3ZWFhMWJjNmU3ZDM4NzE4OWMwMWFkZGM2NjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZVdo
ZWVsRmxpbmdQYXJhbWV0ZXJzLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NB
Y3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyc19oCisjZGVmaW5lIENDQWN0aXZlV2hlZWxGbGluZ1Bh
cmFtZXRlcnNfaAorCisjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRDb3BpZXIuaCIKKyNpbmNsdWRlICJG
bG9hdFNpemUuaCIKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0cnVjdCBDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHsKKyAgICBGbG9hdFNpemUg
ZGVsdGE7CisgICAgSW50UG9pbnQgcG9pbnQ7CisgICAgSW50UG9pbnQgZ2xvYmFsUG9pbnQ7Cisg
ICAgaW50IG1vZGlmaWVyczsKKyAgICBJbnRTaXplIGN1bXVsYXRpdmVTY3JvbGw7CisgICAgZG91
YmxlIHN0YXJ0VGltZTsKKworICAgIENDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMoKQorICAg
ICAgICA6IG1vZGlmaWVycygwKQorICAgICAgICAsIHN0YXJ0VGltZSgwKQorICAgIHsKKyAgICB9
Cit9OworCisvLyBMZXQgZmxpbmcgcGFyYW1ldGVycyB0aHJvdWdoIHdpdGhvdXQgYW55IGNoYW5n
ZXMuCit0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNl
LCBDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzPiA6IHB1YmxpYyBDcm9zc1RocmVhZENvcGll
clBhc3NUaHJvdWdoPENDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM+IHsKK307CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NHZXN0dXJlQ3VydmUuaAppbmRleCA1ZDk4YWY0YzZjOTJiMDc0ODI4
NjJjNjM1NjU5YWQzZDgyYWVjNzNlLi40N2YyMjc3ZTZiZTdmY2Q5YjMwMDhlOGU2ZDE0ZmNhYjg5
YzM5N2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDR2VzdHVyZUN1cnZlLmgKQEAgLTI3LDEzICsyNywxMyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEludFBvaW50OworY2xhc3MgSW50U2l6ZTsK
IAogY2xhc3MgQ0NHZXN0dXJlQ3VydmVUYXJnZXQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkND
R2VzdHVyZUN1cnZlVGFyZ2V0KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29u
c3QgSW50UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFNp
emUmKSA9IDA7CiAgICAgLy8gRklYTUU6IGFkZCBpbnRlcmZhY2VzIGZvciBzY3JvbGwoKSwgZXRj
LgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKaW5kZXggNzY2MDhkOWZjMWQwZGExMzlh
NDkzMGJjNTA0N2MwOGFlYjhiMmRmNC4uMmRmYzVkMTA5OGY5ZjM1ZGJkMWI0ZmU0OTJkZDBjN2I2
MjA0YzQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCkBAIC0zMCw2ICszMCw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjsKK3N0
cnVjdCBDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOwogY2xhc3MgQ0NHZXN0dXJlQ3VydmVU
YXJnZXQ7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFNpemU7CkBAIC03Niw3ICs3Nyw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91Ymxl
IGR1cmF0aW9uKSA9IDA7CiAKICAgICB2aXJ0dWFsIENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbiog
YWN0aXZlR2VzdHVyZUFuaW1hdGlvbigpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZl
R2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbj4pID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKGNv
bnN0IENDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSA9IDA7CiAKICAgICAvLyBSZXF1ZXN0
IGFub3RoZXIgY2FsbGJhY2sgdG8gQ0NJbnB1dEhhbmRsZXI6OmFuaW1hdGUoKS4KICAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oCmluZGV4IDczOTBlYzM0YTllN2I4ZDAzMDZiM2Q2Njk0NjExZTAwYTRkNzI3NjQuLjFjMjQz
ODdmMjkwZDA3MzNmY2ZiOTc5ZDkwYWQzODEyODU3MGU3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oCkBAIC00Miw2ICs0Miw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgQ0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdElt
cGw7CiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CkBA
IC01OSw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250
ZXh0KGJvb2wgc3VjY2VzcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3
RnJhbWUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihj
b25zdCBDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJhbXMpID0gMDsKIAogICAgIC8v
IFVzZWQgb25seSBpbiB0aGUgc2luZ2xlLXRocmVhZGVkIHBhdGguCiAgICAgdmlydHVhbCB2b2lk
IHNjaGVkdWxlQ29tcG9zaXRlKCkgPSAwOwpAQCAtMTQ3LDYgKzE0OSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIHsgbV9jbGllbnQtPmRpZENvbW1pdEFuZERy
YXdGcmFtZSgpOyB9CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgeyBtX2NsaWVu
dC0+ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOyB9CiAgICAgdm9pZCBkZWxldGVDb250ZW50c1Rl
eHR1cmVzT25JbXBsVGhyZWFkKFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2b2lkIHRyYW5zZmVy
QWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0
ZXJzJiBwYXJhbXMpIHsgbV9jbGllbnQtPnRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlv
bihwYXJhbXMpOyB9CisKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdlIHNob3VsZCBhYm9ydCB0
aGlzIGZyYW1lIGR1ZSB0byBpbml0aWFsaXphdGlvbiBmYWlsdXJlLgogICAgIGJvb2wgdXBkYXRl
TGF5ZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCAzM2M5
ZTkxNjc1ZWZhMGI1MjUwNWYyYzg0MWFlMzgwOTA1M2U5MzQ5Li4wM2EwZTFkOWJhN2QzMzc5NTI3
OTIzMzFkMjRiNTBkZjc0ZjRkOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5oCkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDQWN0
aXZlR2VzdHVyZUFuaW1hdGlvbjsKK2NsYXNzIENDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM7
CiBjbGFzcyBDQ0NvbXBsZXRpb25FdmVudDsKIGNsYXNzIENDUGFnZVNjYWxlQW5pbWF0aW9uOwog
Y2xhc3MgQ0NMYXllckltcGw7CkBAIC01NSw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0
QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmlt
YXRpb25FdmVudHNWZWN0b3I+LCBkb3VibGUgd2FsbENsb2NrVGltZSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb25PbkltcGxUaHJlYWQoY29u
c3QgQ0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYgcGFyYW1zKSA9IDA7CiB9OwogCiAvLyBD
Q0xheWVyVHJlZUhvc3RJbXBsIG93bnMgdGhlIENDTGF5ZXJJbXBsIHRyZWUgYXMgd2VsbCBhcyBh
c3NvY2lhdGVkIHJlbmRlcmluZyBzdGF0ZQpAQCAtNzUsNiArNzcsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZUVuZCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydFBh
Z2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCBhbmNo
b3JQb2ludCwgZmxvYXQgcGFnZVNjYWxlLCBkb3VibGUgc3RhcnRUaW1lLCBkb3VibGUgZHVyYXRp
b24pOwogICAgIHZpcnR1YWwgQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKiBhY3RpdmVHZXN0dXJl
QW5pbWF0aW9uKCkgeyByZXR1cm4gbV9hY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmdldCgpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBD
Q0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJhbXMpIHsgbV9jbGllbnQtPnRyYW5zZmVy
QWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbk9uSW1wbFRocmVhZChwYXJhbXMpOyB9CisKICAgICAv
LyBUbyBjbGVhciBhbiBhY3RpdmUgYW5pbWF0aW9uLCBwYXNzIG51bGxwdHIuCiAgICAgdmlydHVh
bCB2b2lkIHNldEFjdGl2ZUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0cjxDQ0FjdGl2ZUdlc3R1
cmVBbmltYXRpb24+KTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggMmQ5ZTBmMzQxZmU3MjU3
ZDM0Nzk4ZjZjZjFiOGQ0ZGY4NTlkMjBiMC4uZWVjNmNkOTE5NWE5NmU3OTA3NzI1ODhkNTcwNGEz
YjQ5NzZmZWVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAg
LTI2OCw2ICsyNjgsMTMgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpwb3N0QW5pbWF0aW9u
RXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHIKICAgICBtX2xheWVyVHJl
ZUhvc3QtPnNldEFuaW1hdGlvbkV2ZW50cyhldmVudHMsIHdhbGxDbG9ja1RpbWUpOwogfQogCit2
b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlv
bk9uSW1wbFRocmVhZChjb25zdCBDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJhbXMp
Cit7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKyAgICBEZWJ1Z1Njb3Bl
ZFNldE1haW5UaHJlYWQgbWFpbjsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnRyYW5zZmVyQWN0aXZl
V2hlZWxGbGluZ0FuaW1hdGlvbihwYXJhbXMpOworfQorCiAvLyBDYWxsZWQgYnkgdGhlIGxlZ2Fj
eSBzY2hlZHVsaW5nIHBhdGggKGUuZy4gd2hlcmUgcmVuZGVyX3dpZGdldCBkb2VzIHRoZSBzY2hl
ZHVsaW5nKQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVJbW1lZGlhdGVseSgp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggZWJiZDk2ZTJjMzg4
MjIxODlkMmI5MGIyMWU2ZDk3NmEzNjdjMGU5Yy4uOGEyMGZhNzY3NTg1Yzc5ODAzZDkwN2Q3YTY0
NjljNGZmZTYzOTZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAt
MzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENDQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnM7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CiAKIGNsYXNzIENDU2lu
Z2xlVGhyZWFkUHJveHkgOiBwdWJsaWMgQ0NQcm94eSwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVu
dCB7CkBAIC02Nyw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNS
ZWRyYXdPbkltcGxUaHJlYWQoKSB7IG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXQoKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpIHsgbV9sYXll
clRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBbmlt
YXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlv
bkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uT25JbXBsVGhyZWFkKGNvbnN0IENDQWN0
aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBhcmFtcyk7CiAKICAgICAvLyBDYWxsZWQgYnkgdGhl
IGxlZ2FjeSBwYXRoIHdoZXJlIFJlbmRlcldpZGdldCBkb2VzIHRoZSBzY2hlZHVsaW5nLgogICAg
IHZvaWQgY29tcG9zaXRlSW1tZWRpYXRlbHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAK
aW5kZXggZGNmYTNiZDM1ZWY4NTE3NjgxNjY5MTRmNDNkZWEzMDhjZWVmYmFhNS4uZDYyNmE4NDNh
MTY3NWFiZjc2NzVhYzRkNjRhYTRjMWZlMzNjMjY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgi
CiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2luY2x1ZGUgImNjL0NDQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJjYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmgiCiAj
aW5jbHVkZSAiY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NJbnB1
dEhhbmRsZXIuaCIKQEAgLTI5MCwxNyArMjkxLDI0IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6b25T
d2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCkKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0
TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKQogewogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7
Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0T25JbXBsVGhy
ZWFkIiwgdGhpcywgMCk7CisgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5Ojpz
ZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCIpOwogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFk
LT5zZXROZWVkc0NvbW1pdCgpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnBvc3RBbmltYXRp
b25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2
ZW50c1ZlY3Rvcj4gZXZlbnRzLCBkb3VibGUgd2FsbENsb2NrVGltZSkKIHsKICAgICBBU1NFUlQo
aXNJbXBsVGhyZWFkKCkpOwotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojpwb3N0QW5p
bWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CisgICAgVFJB
Q0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5Ojpwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWlu
VGhyZWFkT25JbXBsVGhyZWFkIik7CiAgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNy
ZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6c2V0QW5pbWF0aW9uRXZlbnRz
LCBldmVudHMsIHdhbGxDbG9ja1RpbWUpKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5Ojp0cmFu
c2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb25PbkltcGxUaHJlYWQoY29uc3QgQ0NBY3RpdmVX
aGVlbEZsaW5nUGFyYW1ldGVycyYgcGFyYW1zKQoreworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQo
KSk7CisgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5Ojp0cmFuc2ZlckFjdGl2
ZVdoZWVsRmxpbmdBbmltYXRpb25PbkltcGxUaHJlYWQiKTsKKyAgICBtX21haW5UaHJlYWRQcm94
eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojp0cmFu
c2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24sIHBhcmFtcykpOworfQorCiB2b2lkIENDVGhy
ZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3KCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwpAQCAtNjY4LDYgKzY3NiwxMyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnRyeVRvUmVjcmVhdGVD
b250ZXh0KCkKICAgICAgICAgbV9jb250ZXh0UmVjcmVhdGlvblRpbWVyLmNsZWFyKCk7CiB9CiAK
K3ZvaWQgQ0NUaHJlYWRQcm94eTo6dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKGNv
bnN0IENDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBhcmFtcykKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6
dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uIik7CisgICAgbV9sYXllclRyZWVIb3N0
LT50cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24ocGFyYW1zKTsKK30KKwogdm9pZCBD
Q1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVu
dCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlh
bGl6ZUltcGxPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApp
bmRleCA0ODYxZjc5MDkyNjAxYzAwNWEwNTA1MjBkNTQ3ZWQyMWNkZjlkN2EwLi4zMjEzMzRlMWEx
NDQwMmIwOTM0ODM3ZTU3ODQyYzQ5YTJlNGI0NDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
CkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ0NBY3Rp
dmVXaGVlbEZsaW5nUGFyYW1ldGVyczsKIGNsYXNzIENDSW5wdXRIYW5kbGVyOwogY2xhc3MgQ0NM
YXllclRyZWVIb3N0OwogY2xhc3MgQ0NTY2hlZHVsZXI7CkBAIC03Niw2ICs3Nyw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNzT3duUHRy
PENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpOworICAgIHZp
cnR1YWwgdm9pZCB0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb25PbkltcGxUaHJlYWQo
Y29uc3QgQ0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpOwogCiAgICAgLy8gQ0NTY2hlZHVs
ZXJDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpOwpAQCAt
MTA2LDYgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRBbmltYXRpb25FdmVudHMoUGFz
c093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsK
ICAgICB2b2lkIGJlZ2luQ29udGV4dFJlY3JlYXRpb24oKTsKICAgICB2b2lkIHRyeVRvUmVjcmVh
dGVDb250ZXh0KCk7CisgICAgdm9pZCB0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24o
Y29uc3QgQ0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYgcGFyYW1zKTsKIAogICAgIC8vIENh
bGxlZCBvbiBpbXBsIHRocmVhZAogICAgIHN0cnVjdCBSZWFkYmFja1JlcXVlc3QgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1Bh
cmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWYyNzdkNWZkNGM2N2RmMWEyNDFmYTZhYTJj
YjI1Y2E0OTY0YWI0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgKQEAgLTAsMCArMSw1NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnNfaAorI2RlZmluZSBX
ZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyc19oCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJD
b21tb24uaCIKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJQb2ludC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
cyB7CisgICAgV2ViRmxvYXRQb2ludCBkZWx0YTsKKyAgICBXZWJQb2ludCBwb2ludDsKKyAgICBX
ZWJQb2ludCBnbG9iYWxQb2ludDsKKyAgICBpbnQgbW9kaWZpZXJzOworICAgIFdlYlNpemUgY3Vt
dWxhdGl2ZVNjcm9sbDsKKyAgICBkb3VibGUgc3RhcnRUaW1lOworCisgICAgV2ViQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnMoKQorICAgICAgICA6IG1vZGlmaWVycygwKQorICAgICAgICAsIHN0
YXJ0VGltZSgwKQorICAgIHsKKyAgICB9Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCmluZGV4IDNjOGFlNDQ4NGRhMjUzYTgzNDVkMWQ2ZjUy
YjEyMWM5NDY1NGYxMzMuLjRkOTk1ZTBmZmI1MzY2ZWI1ZjU2ZDE1YWU5YjdmNjdkYzk5Yjc1MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTU0LDYgKzU0LDcg
QEAgY2xhc3MgV2ViU2V0dGluZ3M7CiBjbGFzcyBXZWJTcGVsbENoZWNrQ2xpZW50OwogY2xhc3Mg
V2ViU3RyaW5nOwogY2xhc3MgV2ViVmlld0NsaWVudDsKK3N0cnVjdCBXZWJBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJNZWRpYVBsYXllckFjdGlvbjsKIHN0cnVjdCBXZWJQ
bHVnaW5BY3Rpb247CiBzdHJ1Y3QgV2ViUG9pbnQ7CkBAIC00MjgsNiArNDI5LDEwIEBAIHB1Ymxp
YzoKICAgICAvLyBDYW4gYmUgdXNlZCBmb3IgYWxsb2NhdGluZyByZXNvdXJjZXMgdGhhdCB0aGUg
Y29tcG9zaXRvciB3aWxsIGxhdGVyIGFjY2Vzcy4KICAgICB2aXJ0dWFsIFdlYkdyYXBoaWNzQ29u
dGV4dDNEKiBzaGFyZWRHcmFwaGljc0NvbnRleHQzRCgpID0gMDsKIAorICAgIC8vIENhbGxlZCB0
byBpbmZvcm0gdGhlIFdlYlZpZXcgdGhhdCBhIHdoZWVsIGZsaW5nIGFuaW1hdGlvbiB3YXMgc3Rh
cnRlZCBleHRlcm5hbGx5IChmb3IgaW5zdGFuY2UKKyAgICAvLyBieSB0aGUgY29tcG9zaXRvcikg
YnV0IG11c3QgYmUgY29tcGxldGVkIGJ5IHRoZSBXZWJWaWV3LgorICAgIHZpcnR1YWwgdm9pZCB0
cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMmKSA9IDA7CisKICAgICAvLyBWaXNpYmlsaXR5IC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICAvLyBTZXRz
IHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBXZWJWaWV3LgpAQCAtNDUyLDcgKzQ1Nyw2IEBAIHB1Ymxp
YzoKICAgICAvLyBTaW11bGF0ZXMgYSBjb21wb3NpdG9yIGxvc3QgY29udGV4dC4KICAgICB2aXJ0
dWFsIHZvaWQgbG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1lcykgPSAwOwogCi0KIHBy
b3RlY3RlZDoKICAgICB+V2ViVmlldygpIHt9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkFjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk5MWU1ZmQ1ZGVmMDBjMWQ5NzA3OTk0MDIw
OWEzM2FhOWUwOTU4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgKQEAgLTAsMCAr
MSwyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICIuLi9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCmluZGV4IGI0ZTI2NzVjZDJhNGQ5ZDY1MzNhMzU1
ZTA3OTc5MTY5MDk1ZWM4MjIuLjRmYzZiNDc0ZjIxYzIwYWY5ODUxMTc1Y2Q2MjQ0ZWI5NTMxODk4
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKQEAgLTM1LDggKzM1LDEwIEBACiAjaW5jbHVk
ZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgImNjL0ND
QWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5oIgorI2luY2x1ZGUgImNjL0NDQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAicGxhdGZv
cm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CkBAIC02Miw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY3Vy
dmUtPmFwcGx5KHRpbWUsIHRoaXMpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxC
eShjb25zdCBJbnRQb2ludCYgc2Nyb2xsRGVsdGEpCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5
KGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdGFy
Z2V0KTsKICAgICAgICAgbV90YXJnZXQtPnNjcm9sbEJ5KHNjcm9sbERlbHRhKTsKQEAgLTE1NCwy
NCArMTU2LDM0IEBAIHZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUlu
cHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCiB7CiAgICAgQVNTRVJUKENDUHJv
eHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQobV9jbGllbnQpOworICAgIFRSQUNFX0VW
RU5UMCgiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUlucHV0RXZl
bnQiKTsKIAogICAgIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0
aW9uIGRpc3Bvc2l0aW9uID0gaGFuZGxlSW5wdXRFdmVudEludGVybmFsKGV2ZW50KTsKICAgICBz
d2l0Y2ggKGRpc3Bvc2l0aW9uKSB7Ci0gICAgY2FzZSBEaWRIYW5kbGU6Ci0gICAgICAgIG1fY2xp
ZW50LT5kaWRIYW5kbGVJbnB1dEV2ZW50KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGlk
Tm90SGFuZGxlOgorICAgIGNhc2UgRGlkSGFuZGxlOiB7CisgICAgICAgICAgICBUUkFDRV9FVkVO
VDAoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpkaWRIYW5kbGVJbnB1dEV2
ZW50Iik7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkSGFuZGxlSW5wdXRFdmVudCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRGlkTm90SGFuZGxlOiB7CisgICAgICAg
IFRSQUNFX0VWRU5UMSgiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmRpZE5v
dEhhbmRsZSIsICJzZW5kVG9XaWRnZXQiLCB0cnVlKTsKICAgICAgICAgbV9jbGllbnQtPmRpZE5v
dEhhbmRsZUlucHV0RXZlbnQodHJ1ZSAvKiBzZW5kVG9XaWRnZXQgKi8pOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIERyb3BFdmVudDoKKyAgICB9CisgICAgY2FzZSBEcm9wRXZlbnQ6IHsKKyAg
ICAgICAgVFJBQ0VfRVZFTlQxKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6
ZGlkTm90SGFuZGxlIiwgInNlbmRUb1dpZGdldCIsIGZhbHNlKTsKICAgICAgICAgbV9jbGllbnQt
PmRpZE5vdEhhbmRsZUlucHV0RXZlbnQoZmFsc2UgLyogc2VuZFRvV2lkZ2V0ICovKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGRlZmF1bHQ6IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KIH0KIAogV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24g
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUlucHV0RXZlbnRJbnRlcm5hbChj
b25zdCBXZWJJbnB1dEV2ZW50JiBldmVudCkKIHsKKyAgICBUUkFDRV9FVkVOVDAoImNjIiwgIldl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVJbnB1dEV2ZW50SW50ZXJuYWwiKTsK
ICAgICBpZiAoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsKSB7CisgICAg
ICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTW91c2VXaGVlbCIpOwogICAgICAgICBjb25zdCBXZWJN
b3VzZVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VX
aGVlbEV2ZW50Kj4oJmV2ZW50KTsKICAgICAgICAgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9s
bFN0YXR1cyBzY3JvbGxTdGF0dXMgPSBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQmVnaW4o
SW50UG9pbnQod2hlZWxFdmVudC54LCB3aGVlbEV2ZW50LnkpLCBDQ0lucHV0SGFuZGxlckNsaWVu
dDo6V2hlZWwpOwogICAgICAgICBzd2l0Y2ggKHNjcm9sbFN0YXR1cykgewpAQCAtMTg3LDYgKzE5
OSw3IEBAIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoCiAgICAgICAgICAgICByZXR1cm4gRGlkTm90
SGFuZGxlOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09IFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbikgeworICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwg
IlNjcm9sbEJlZ2luIik7CiAgICAgICAgIEFTU0VSVCghbV9nZXN0dXJlU2Nyb2xsU3RhcnRlZCk7
CiAgICAgICAgIEFTU0VSVCghbV9leHBlY3RTY3JvbGxVcGRhdGVFbmQpOwogI2lmbmRlZiBOREVC
VUcKQEAgLTIwNCw2ICsyMTcsNyBAQCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZl
bnREaXNwb3NpdGlvbiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAogICAgICAgICAg
ICAgcmV0dXJuIERyb3BFdmVudDsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXZlbnQudHlw
ZSA9PSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlKSB7CisgICAgICAgIFRSQUNF
X0VWRU5UMCgiY2MiLCAiU2Nyb2xsVXBkYXRlIik7CiAgICAgICAgIEFTU0VSVChtX2V4cGVjdFNj
cm9sbFVwZGF0ZUVuZCk7CiAKICAgICAgICAgaWYgKCFtX2dlc3R1cmVTY3JvbGxTdGFydGVkKQpA
QCAtMjEzLDYgKzIyNyw3IEBAIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERp
c3Bvc2l0aW9uIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoCiAgICAgICAgIG1faW5w
dXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCeShJbnRTaXplKC1nZXN0dXJlRXZlbnQuZGVsdGFYLCAt
Z2VzdHVyZUV2ZW50LmRlbHRhWSkpOwogICAgICAgICByZXR1cm4gRGlkSGFuZGxlOwogICAgIH0g
ZWxzZSBpZiAoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kKSB7
CisgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiU2Nyb2xsRW5kIik7CiAgICAgICAgIEFTU0VS
VChtX2V4cGVjdFNjcm9sbFVwZGF0ZUVuZCk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBtX2V4
cGVjdFNjcm9sbFVwZGF0ZUVuZCA9IGZhbHNlOwpAQCAtMjQzLDkgKzI1OCwxMSBAQCBXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbDo6aAogICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+cGluY2hHZXN0
dXJlVXBkYXRlKGdlc3R1cmVFdmVudC5kZWx0YVgsIEludFBvaW50KGdlc3R1cmVFdmVudC54LCBn
ZXN0dXJlRXZlbnQueSkpOwogICAgICAgICByZXR1cm4gRGlkSGFuZGxlOwogICAgIH0gZWxzZSBp
ZiAoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydCkgeworICAg
ICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkZsaW5nU3RhcnQiKTsKICAgICAgICAgY29uc3QgV2Vi
R2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVy
ZUV2ZW50Kj4oJmV2ZW50KTsKICAgICAgICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVGbGluZyhnZXN0
dXJlRXZlbnQpOwogICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlRmxpbmdDYW5jZWwpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJGbGluZ0Nh
bmNlbCIpOwogICAgICAgICBpZiAoY2FuY2VsQ3VycmVudEZsaW5nKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gRGlkSGFuZGxlOwogICAgIH0gZWxzZSBpZiAoV2ViSW5wdXRFdmVudDo6aXNLZXlib2Fy
ZEV2ZW50VHlwZShldmVudC50eXBlKSkgewpAQCAtMjYzLDcgKzI4MCwxMCBAQCBXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbDo6aAogICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZzo6c3RhcnRlZCIpOwog
ICAgICAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGZsaW5nQ3VydmUgPSBUb3VjaHBh
ZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShGbG9hdFBvaW50KC1nZXN0dXJlRXZl
bnQuZGVsdGFYLCAtZ2VzdHVyZUV2ZW50LmRlbHRhWSkpOwogICAgICAgICBtX3doZWVsRmxpbmdB
bmltYXRpb24gPSBDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZShQbGF0Zm9ybUdlc3R1
cmVUb0NDR2VzdHVyZUFkYXB0ZXI6OmNyZWF0ZShmbGluZ0N1cnZlLnJlbGVhc2UoKSksIHRoaXMp
OwotICAgICAgICBtX3doZWVsRmxpbmdQb2ludCA9IEludFBvaW50KGdlc3R1cmVFdmVudC54LCBn
ZXN0dXJlRXZlbnQueSk7CisgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZGVsdGEgPSBX
ZWJGbG9hdFBvaW50KGdlc3R1cmVFdmVudC5kZWx0YVgsIGdlc3R1cmVFdmVudC5kZWx0YVkpOwor
ICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnBvaW50ID0gV2ViUG9pbnQoZ2VzdHVyZUV2
ZW50LngsIGdlc3R1cmVFdmVudC55KTsKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5n
bG9iYWxQb2ludCA9IFdlYlBvaW50KGdlc3R1cmVFdmVudC5nbG9iYWxYLCBnZXN0dXJlRXZlbnQu
Z2xvYmFsWSk7CisgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMubW9kaWZpZXJzID0gZ2Vz
dHVyZUV2ZW50Lm1vZGlmaWVyczsKICAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjaGVk
dWxlQW5pbWF0aW9uKCk7CiAgICAgICAgIHJldHVybiBEaWRIYW5kbGU7CiAgICAgfQpAQCAtMjky
LDExICszMTIsMTQgQEAgdm9pZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6YW5pbWF0
ZShkb3VibGUgbW9ub3RvbmljVGltZSkKICAgICBpZiAoIW1fd2hlZWxGbGluZ0FuaW1hdGlvbikK
ICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKCFtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnN0YXJ0
VGltZSkKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5zdGFydFRpbWUgPSBtb25vdG9u
aWNUaW1lOworCiAgICAgaWYgKG1fd2hlZWxGbGluZ0FuaW1hdGlvbi0+YW5pbWF0ZShtb25vdG9u
aWNUaW1lKSkKICAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjaGVkdWxlQW5pbWF0aW9u
KCk7CiAgICAgZWxzZSB7CiAgICAgICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJjYyIsICJXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6YW5pbWF0ZTo6ZmxpbmdPdmVyIik7Ci0gICAgICAg
IG1fd2hlZWxGbGluZ0FuaW1hdGlvbi5jbGVhcigpOworICAgICAgICBjYW5jZWxDdXJyZW50Rmxp
bmcoKTsKICAgICB9CiB9CiAKQEAgLTMwNSwzOSArMzI4LDYxIEBAIGJvb2wgV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGw6OmNhbmNlbEN1cnJlbnRGbGluZygpCiAgICAgYm9vbCBoYWRGbGlu
Z0FuaW1hdGlvbiA9IG1fd2hlZWxGbGluZ0FuaW1hdGlvbjsKICAgICBUUkFDRV9FVkVOVF9JTlNU
QU5UMSgiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmNhbmNlbEN1cnJlbnRG
bGluZyIsICJoYWRGbGluZ0FuaW1hdGlvbiIsIGhhZEZsaW5nQW5pbWF0aW9uKTsKICAgICBtX3do
ZWVsRmxpbmdBbmltYXRpb24uY2xlYXIoKTsKKyAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzID0g
V2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMoKTsKICAgICByZXR1cm4gaGFkRmxpbmdBbmlt
YXRpb247CiB9CiAKLXZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5
KGNvbnN0IEludFBvaW50JiBpbmNyZW1lbnQpCit2b2lkIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsOjpzY3JvbGxCeShjb25zdCBJbnRTaXplJiBpbmNyZW1lbnQpCiB7Ci0gICAgaWYgKGlu
Y3JlbWVudCA9PSBJbnRQb2ludDo6emVybygpKQorICAgIGlmIChpbmNyZW1lbnQuaXNaZXJvKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFRSQUNFX0VWRU5UMigiY2MiLCAiV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5IiwgIngiLCBpbmNyZW1lbnQueCgpLCAieSIsIGlu
Y3JlbWVudC55KCkpOwotCi0gICAgV2ViTW91c2VXaGVlbEV2ZW50IGV2ZW50OwotICAgIGV2ZW50
LnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsOwotICAgIGV2ZW50LmRlbHRhWCA9IC1p
bmNyZW1lbnQueCgpOwotICAgIGV2ZW50LmRlbHRhWSA9IC1pbmNyZW1lbnQueSgpOwotICAgIGV2
ZW50Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB0cnVlOwotICAgIGV2ZW50LnggPSBtX3do
ZWVsRmxpbmdQb2ludC54KCk7Ci0gICAgZXZlbnQueSA9IG1fd2hlZWxGbGluZ1BvaW50LnkoKTsK
LQotICAgIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIGRp
c3Bvc2l0aW9uID0gaGFuZGxlSW5wdXRFdmVudEludGVybmFsKGV2ZW50KTsKKyAgICBUUkFDRV9F
VkVOVDIoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSIsICJ3
aWR0aCIsIGluY3JlbWVudC53aWR0aCgpLCAiaGVpZ2h0IiwgaW5jcmVtZW50LmhlaWdodCgpKTsK
KyAgICBXZWJNb3VzZVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWw7CisgICAgc3ludGhldGljV2hl
ZWwudHlwZSA9IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWw7CisgICAgc3ludGhldGljV2hlZWwu
ZGVsdGFYID0gLWluY3JlbWVudC53aWR0aCgpOworICAgIHN5bnRoZXRpY1doZWVsLmRlbHRhWSA9
IC1pbmNyZW1lbnQuaGVpZ2h0KCk7CisgICAgc3ludGhldGljV2hlZWwuaGFzUHJlY2lzZVNjcm9s
bGluZ0RlbHRhcyA9IHRydWU7CisgICAgc3ludGhldGljV2hlZWwueCA9IG1fd2hlZWxGbGluZ1Bh
cmFtZXRlcnMucG9pbnQueDsKKyAgICBzeW50aGV0aWNXaGVlbC55ID0gbV93aGVlbEZsaW5nUGFy
YW1ldGVycy5wb2ludC55OworICAgIHN5bnRoZXRpY1doZWVsLmdsb2JhbFggPSBtX3doZWVsRmxp
bmdQYXJhbWV0ZXJzLmdsb2JhbFBvaW50Lng7CisgICAgc3ludGhldGljV2hlZWwuZ2xvYmFsWSA9
IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZ2xvYmFsUG9pbnQueTsKKyAgICBzeW50aGV0aWNXaGVl
bC5tb2RpZmllcnMgPSBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLm1vZGlmaWVyczsKKworICAgIFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9u
ID0gaGFuZGxlSW5wdXRFdmVudEludGVybmFsKHN5bnRoZXRpY1doZWVsKTsKICAgICBzd2l0Y2gg
KGRpc3Bvc2l0aW9uKSB7CiAgICAgY2FzZSBEaWRIYW5kbGU6CisgICAgICAgIG1fd2hlZWxGbGlu
Z1BhcmFtZXRlcnMuY3VtdWxhdGl2ZVNjcm9sbC53aWR0aCArPSAtaW5jcmVtZW50LndpZHRoKCk7
CisgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuY3VtdWxhdGl2ZVNjcm9sbC5oZWlnaHQg
Kz0gLWluY3JlbWVudC5oZWlnaHQoKTsKICAgICBjYXNlIERyb3BFdmVudDoKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBEaWROb3RIYW5kbGU6CiAgICAgICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQw
KCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnk6OkFib3J0Rmxp
bmciKTsKLSAgICAgICAgLy8gRklYTUU6IElmIHdlIGdvdCBhIERpZE5vdEhhbmRsZSwgdGhhdCBt
ZWFucyB3ZSBuZWVkIHRvIGRlbGl2ZXIgd2hlZWxzIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAg
ICAgLy8gSWYgd2UgZ290IGEgRGlkTm90SGFuZGxlLCB0aGF0IG1lYW5zIHdlIG5lZWQgdG8gZGVs
aXZlciB3aGVlbHMgb24gdGhlIG1haW4gdGhyZWFkLgogICAgICAgICAvLyBJbiB0aGlzIGNhc2Ug
d2UgbmVlZCB0byBzY2hlZHVsZSBhIGNvbW1pdCBhbmQgdHJhbnNmZXIgdGhlIGZsaW5nIGN1cnZl
IG92ZXIgdG8gdGhlIG1haW4KICAgICAgICAgLy8gdGhyZWFkIGFuZCBydW4gdGhlIHJlc3Qgb2Yg
dGhlIHdoZWVscyBmcm9tIHRoZXJlLgogICAgICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gd2hlbiBm
bGluZ2luZyBhIHBhZ2UgdGhhdCBjb250YWlucyBhIHNjcm9sbGFibGUgc3ViYXJlYSB0aGF0IHdl
IGNhbid0CiAgICAgICAgIC8vIHNjcm9sbCBvbiB0aGUgdGhyZWFkIGlmIHRoZSBmbGluZyBzdGFy
dHMgb3V0c2lkZSB0aGUgc3ViYXJlYSBidXQgdGhlbiBpcyBmbHVuZyAidW5kZXIiIHRoZQogICAg
ICAgICAvLyBwb2ludGVyLgotICAgICAgICAvLyBGb3Igbm93LCBqdXN0IGFib3J0IHRoZSBmbGlu
Zy4KKyAgICAgICAgQ0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyBwYXJhbXM7CisgICAgICAg
IHBhcmFtcy5kZWx0YSA9IEZsb2F0U2l6ZShtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmRlbHRhLngs
IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZGVsdGEueSk7CisgICAgICAgIHBhcmFtcy5wb2ludCA9
IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMucG9pbnQ7CisgICAgICAgIHBhcmFtcy5nbG9iYWxQb2lu
dCA9IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZ2xvYmFsUG9pbnQ7CisgICAgICAgIHBhcmFtcy5t
b2RpZmllcnMgPSBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLm1vZGlmaWVyczsKKyAgICAgICAgcGFy
YW1zLmN1bXVsYXRpdmVTY3JvbGwgPSBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmN1bXVsYXRpdmVT
Y3JvbGw7CisKKyAgICAgICAgLy8gV2UgdGljayBhbmltYXRpb25zIGluIENDTGF5ZXJUcmVlSG9z
dCB1c2luZyBjdXJyZW50VGltZSgpLCBidXQgdGhlIGltcGwKKyAgICAgICAgLy8gdGhyZWFkIHVz
ZXMgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkuIFJlYmFzZSBoZXJlIGJlZm9yZSBwYXNz
aW5nIHRpbWVzCisgICAgICAgIC8vIG91dCB0byB0aGUgY2xpZW50LgorCisgICAgICAgIC8vIEZJ
WE1FOiB0aW1lc2hpZnRpbmcgYnJlYWtzIHRoaWUgdHJhbnNmZXIgdW5pdCB0ZXN0LgorICAgICAg
ICAvLyBKYW1lczogYW55IGlkZWFzIGhvdyB0byB0ZXN0IHRoaXMgcmlnaHQ/CisgICAgICAgIGRv
dWJsZSB0aW1lU2hpZnQgPSAwOyAvLyBjdXJyZW50VGltZSgpIC0gbW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCk7CisKKyAgICAgICAgcGFyYW1zLnN0YXJ0VGltZSA9IG1fd2hlZWxGbGluZ1Bh
cmFtZXRlcnMuc3RhcnRUaW1lICsgdGltZVNoaWZ0OworICAgICAgICBtX2lucHV0SGFuZGxlckNs
aWVudC0+dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKHBhcmFtcyk7CiAgICAgICAg
IGNhbmNlbEN1cnJlbnRGbGluZygpOworICAgICAgICBicmVhazsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbC5oCmluZGV4IGM5ZmY1ZTM1MTE5MTU0YjdhYWQ4ZmQyZGE0YWU2ZTNkNDg3NTBm
NjQuLmJjZDU4MGQwYTVkMjk3ZGE0YmRlMjdkMjM3ZjlmYzdjMjZkNzRlOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGwuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbF9oCiAjZGVmaW5lIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsX2gKIAot
I2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAiV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKQEAgLTQxLDYg
KzQxLDcgQEAgY2xhc3MgTXV0ZXg7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIElu
dFNpemU7CiBjbGFzcyBDQ0dlc3R1cmVDdXJ2ZVRhcmdldDsKIGNsYXNzIENDSW5wdXRIYW5kbGVy
Q2xpZW50OwogY2xhc3MgQ0NUaHJlYWQ7CkBAIC02Nyw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3VibGUgbW9ub3RvbmljVGltZSk7CiAKICAgICAvLyBXZWJD
b3JlOjpDQ0dlc3R1cmVDdXJ2ZVRhcmdldCBpbXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0dWFsIHZv
aWQgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVy
Q2xpZW50Kik7CkBAIC04Myw3ICs4NCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5jZWxDdXJy
ZW50RmxpbmcoKTsKIAogICAgIE93blB0cjxXZWJDb3JlOjpDQ0FjdGl2ZUdlc3R1cmVBbmltYXRp
b24+IG1fd2hlZWxGbGluZ0FuaW1hdGlvbjsKLSAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3doZWVs
RmxpbmdQb2ludDsgLy8gUG9pbnRlciBwb3NpdGlvbiBmb3IgdGhlIGN1cnJlbnQgZmxpbmcuCisg
ICAgLy8gUGFyYW1ldGVycyBmb3IgdGhlIGFjdGl2ZSBmbGluZyBhbmltYXRpb24sIHN0b3JlZCBp
biBjYXNlIHdlIG5lZWQgdG8gdHJhbnNmZXIgaXQgb3V0IGxhdGVyLgorICAgIFdlYkFjdGl2ZVdo
ZWVsRmxpbmdQYXJhbWV0ZXJzIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnM7CiAKICAgICBXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKICAgICBpbnQgbV9pZGVudGlmaWVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmll
d0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0lt
cGwuY3BwCmluZGV4IDMzNTg3OWI2NjA1MzRhNGJjNzU3ZTUxNzc0ZjMyZmZkYzY3ZTdmZWMuLmU1
YTc4NWY4M2U1MmViOWE2ZTY1Nzc3Mjc3ZjliZWRiNzVkZGVjYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKQEAgLTI5LDcg
KzI5LDkgQEAKICNpbmNsdWRlICJDQ1RocmVhZEltcGwuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAi
Y2MvQ0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFk
UHJveHkuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViTGF5ZXIuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllclRyZWVW
aWV3LmgiCkBAIC01MCw3ICs1Miw3IEBAIFBhc3NSZWZQdHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+
IFdlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGUoV2ViTGF5ZXJUcmVlVmlld0NsCiAgICAgcmV0
dXJuIGhvc3Q7CiB9CiAKLVdlYkxheWVyVHJlZVZpZXdJbXBsOjpXZWJMYXllclRyZWVWaWV3SW1w
bChXZWJMYXllclRyZWVWaWV3Q2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkxheWVyVHJlZVZpZXc6
OlNldHRpbmdzJiBzZXR0aW5ncykgCitXZWJMYXllclRyZWVWaWV3SW1wbDo6V2ViTGF5ZXJUcmVl
Vmlld0ltcGwoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCogY2xpZW50LCBjb25zdCBXZWJMYXllclRy
ZWVWaWV3OjpTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgOiBDQ0xheWVyVHJlZUhvc3QodGhpcywg
c2V0dGluZ3MpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiB7CkBAIC0xMDcsNiArMTA5LDIwIEBA
IHZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKQogICAg
ICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOwogfQogCit2b2lkIFdlYkxh
eWVyVHJlZVZpZXdJbXBsOjp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24oY29uc3Qg
V2ViQ29yZTo6Q0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYgcGFyYW1zKQoreworICAgIGlm
IChtX2NsaWVudCkgeworICAgICAgICBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyB3ZWJQ
YXJhbXM7CisgICAgICAgIHdlYlBhcmFtcy5kZWx0YSA9IFdlYkZsb2F0UG9pbnQocGFyYW1zLmRl
bHRhLndpZHRoKCksIHBhcmFtcy5kZWx0YS5oZWlnaHQoKSk7CisgICAgICAgIHdlYlBhcmFtcy5w
b2ludCA9IHBhcmFtcy5wb2ludDsKKyAgICAgICAgd2ViUGFyYW1zLmdsb2JhbFBvaW50ID0gcGFy
YW1zLmdsb2JhbFBvaW50OworICAgICAgICB3ZWJQYXJhbXMubW9kaWZpZXJzID0gcGFyYW1zLm1v
ZGlmaWVyczsKKyAgICAgICAgd2ViUGFyYW1zLmN1bXVsYXRpdmVTY3JvbGwgPSBwYXJhbXMuY3Vt
dWxhdGl2ZVNjcm9sbDsKKyAgICAgICAgd2ViUGFyYW1zLnN0YXJ0VGltZSA9IHBhcmFtcy5zdGFy
dFRpbWU7CisgICAgICAgIG1fY2xpZW50LT50cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRp
b24od2ViUGFyYW1zKTsKKyAgICB9Cit9CisKIHZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNj
aGVkdWxlQ29tcG9zaXRlKCkKIHsKICAgICBpZiAobV9jbGllbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaAppbmRleCBiMWIyNmQwZmMz
Mzg2MDRmZTVjZjM4MDcxZjUwYThjMzU4NjQ1MmZiLi44OTYzY2RlNmE1NDgwZmJmMDg2MGMyNTBk
MGUwNTFhZWMwYWUyM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJMYXllclRyZWVWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkxheWVyVHJlZVZpZXdJbXBsLmgKQEAgLTMwLDEwICszMCwxNSBAQAogI2luY2x1ZGUgImNjL0ND
TGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIENDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM7Cit9CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViTGF5ZXI7CiBjbGFzcyBXZWJMYXllclRyZWVWaWV3
Q2xpZW50OwogCisvLyBGSVhNRTogV2ViTGF5ZXJUcmVlZVZpZXdJbXBsIHNob3VsZCBoYXZlIGEg
Q0NMYXllclRyZWVIb3N0LCBub3QgaW5oZXJpdCBmcm9tIGl0LgogY2xhc3MgV2ViTGF5ZXJUcmVl
Vmlld0ltcGwgOiBwdWJsaWMgV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0LCBwdWJsaWMgV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0Q2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJMYXllclRyZWVWaWV3SW1wbD4gY3JlYXRlKFdlYkxheWVyVHJlZVZpZXdDbGllbnQqLCBj
b25zdCBXZWJMYXllciYgcm9vdCwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MmKTsK
QEAgLTQxLDYgKzQ2LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJMYXllclRyZWVWaWV3
SW1wbChXZWJMYXllclRyZWVWaWV3Q2xpZW50KiwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0
dGluZ3MmKTsKICAgICB2aXJ0dWFsIH5XZWJMYXllclRyZWVWaWV3SW1wbCgpOworCisgICAgLy8g
Q0NMYXllclRyZWVIb3N0Q2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKTsKICAgICB2aXJ0dWFsIHZvaWQg
bGF5b3V0KCk7CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSk7CkBAIC00OCw2ICs1
NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dChib29s
IHN1Y2Nlc3MpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOworICAgIHZpcnR1YWwgdm9p
ZCB0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgV2ViQ29yZTo6Q0NBY3Rp
dmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpOwogCiAgICAgLy8gT25seSB1c2VkIGluIHRoZSBzaW5n
bGUgdGhyZWFkZWQgcGF0aC4KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBjNDdmZGRh
YWVlNmU1ZmE1MDIwY2E1OTIwMWVmNmU5ZmNiN2Y0MzE4Li5hYmM2M2U1OTRiNDEyODE2NDU1ZTA4
OWEwODIxOGYyZTc3NzU2Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCkBAIC0zMSwxMSArMzEsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJWaWV3SW1wbC5oIgogCisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1
ZGUgIkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkF1dG9maWxs
UG9wdXBNZW51Q2xpZW50LmgiCi0jaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUg
IkJhY2tGb3J3YXJkTGlzdENocm9taXVtLmgiCi0jaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2lu
Y2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgi
CiAjaW5jbHVkZSAiQ2hyb21lLmgiCkBAIC0xMTUsMzYgKzExNCwzOSBAQAogI2luY2x1ZGUgIlR5
cGluZ0NvbW1hbmQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1
ZGUgIldlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYkF1dG9maWxsQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2ViQ29tcG9zaXRvckltcGwuaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50SW1wbC5o
IgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRQcml2YXRlLmgiCi0jaW5jbHVkZSAicGxhdGZv
cm0vV2ViRHJhZ0RhdGEuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYklt
YWdlLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRF
dmVudC5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAi
V2ViS2l0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCi0j
aW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXIuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXll
clRyZWVWaWV3LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXJBY3Rpb24uaCIKICNpbmNsdWRl
ICJXZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2lu
QWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIgotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlBvaW50LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51SW1wbC5oIgogI2lu
Y2x1ZGUgIldlYlJhbmdlLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgogI2luY2x1
ZGUgIldlYlJ1bnRpbWVGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYlNldHRpbmdzSW1wbC5oIgot
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZl
Y3Rvci5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50
LmgiCisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkRyYWdE
YXRhLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViSW1hZ2UuaCIKKyNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcu
aCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
RmxvYXRQb2ludC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllclRy
ZWVWaWV3Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlBvaW50Lmg+CisjaW5jbHVkZSA8cHVibGlj
L1dlYlJlY3QuaD4KICNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTYwNiwxNSArNjA4
LDE1IEBAIGJvb2wgV2ViVmlld0ltcGw6Om1vdXNlV2hlZWwoY29uc3QgV2ViTW91c2VXaGVlbEV2
ZW50JiBldmVudCkKICAgICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhh
bmRsZXIoKS0+aGFuZGxlV2hlZWxFdmVudChwbGF0Zm9ybUV2ZW50KTsKIH0KIAotdm9pZCBXZWJW
aWV3SW1wbDo6c2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlbHRhKQordm9pZCBX
ZWJWaWV3SW1wbDo6c2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgZGVsdGEpCiB7CiAg
ICAgV2ViTW91c2VXaGVlbEV2ZW50IHN5bnRoZXRpY1doZWVsOwogICAgIGNvbnN0IGZsb2F0IHRp
Y2tEaXZpc29yID0gV2ViQ29yZTo6V2hlZWxFdmVudDo6dGlja011bHRpcGxpZXI7CiAKLSAgICBz
eW50aGV0aWNXaGVlbC5kZWx0YVggPSBkZWx0YS54KCk7Ci0gICAgc3ludGhldGljV2hlZWwuZGVs
dGFZID0gZGVsdGEueSgpOwotICAgIHN5bnRoZXRpY1doZWVsLndoZWVsVGlja3NYID0gZGVsdGEu
eCgpIC8gdGlja0Rpdmlzb3I7Ci0gICAgc3ludGhldGljV2hlZWwud2hlZWxUaWNrc1kgPSBkZWx0
YS55KCkgLyB0aWNrRGl2aXNvcjsKKyAgICBzeW50aGV0aWNXaGVlbC5kZWx0YVggPSBkZWx0YS53
aWR0aCgpOworICAgIHN5bnRoZXRpY1doZWVsLmRlbHRhWSA9IGRlbHRhLmhlaWdodCgpOworICAg
IHN5bnRoZXRpY1doZWVsLndoZWVsVGlja3NYID0gZGVsdGEud2lkdGgoKSAvIHRpY2tEaXZpc29y
OworICAgIHN5bnRoZXRpY1doZWVsLndoZWVsVGlja3NZID0gZGVsdGEuaGVpZ2h0KCkgLyB0aWNr
RGl2aXNvcjsKICAgICBzeW50aGV0aWNXaGVlbC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0g
dHJ1ZTsKICAgICBzeW50aGV0aWNXaGVlbC54ID0gbV9sYXN0V2hlZWxQb3NpdGlvbi54OwogICAg
IHN5bnRoZXRpY1doZWVsLnkgPSBtX2xhc3RXaGVlbFBvc2l0aW9uLnk7CkBAIC02MzAsNiArNjMy
LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVu
dCYgZXZlbnQpCiB7CiAgICAgc3dpdGNoIChldmVudC50eXBlKSB7CiAgICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDogeworICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5U
Migid2Via2l0IiwgIldlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0
IiwgImRlbHRhWCIsIGV2ZW50LmRlbHRhWCwgImRlbHRhWSIsIGV2ZW50LmRlbHRhWSk7CiAgICAg
ICAgIG1fbGFzdFdoZWVsUG9zaXRpb24gPSBXZWJQb2ludChldmVudC54LCBldmVudC55KTsKICAg
ICAgICAgbV9sYXN0V2hlZWxHbG9iYWxQb3NpdGlvbiA9IFdlYlBvaW50KGV2ZW50Lmdsb2JhbFgs
IGV2ZW50Lmdsb2JhbFkpOwogICAgICAgICBtX2ZsaW5nTW9kaWZpZXIgPSBldmVudC5tb2RpZmll
cnM7CkBAIC02MzgsMTMgKzY0MSwxNiBAQCBib29sIFdlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQo
Y29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKICAgICAgICAgc2NoZWR1bGVBbmltYXRpb24o
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6
R2VzdHVyZUZsaW5nQ2FuY2VsOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5n
Q2FuY2VsOiB7CisgICAgICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJ3ZWJraXQiLCAiV2ViVmll
d0ltcGw6Omdlc3R1cmVFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsIik7CiAgICAgICAgIGlmICht
X2dlc3R1cmVBbmltYXRpb24pIHsKICAgICAgICAgICAgIG1fZ2VzdHVyZUFuaW1hdGlvbi5jbGVh
cigpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXA6IHsKKyAg
ICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6Z2VzdHVy
ZUV2ZW50OjpHZXN0dXJlVGFwIik7CiAgICAgICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRl
ciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KTsKICAg
ICAgICAgUmVmUHRyPFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyPiBzZWxlY3RQb3B1cDsKICAgICAg
ICAgc2VsZWN0UG9wdXAgPSBtX3NlbGVjdFBvcHVwOwpAQCAtNjc3LDYgKzY4MywxOCBAQCBib29s
IFdlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnRyYW5zZmVyQWN0aXZl
V2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYg
cGFyYW1ldGVycykKK3sKKyAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgid2Via2l0IiwgIldlYlZp
ZXdJbXBsOjp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24iKTsKKyAgICBBU1NFUlQo
IW1fZ2VzdHVyZUFuaW1hdGlvbik7CisgICAgbV9sYXN0V2hlZWxQb3NpdGlvbiA9IHBhcmFtZXRl
cnMucG9pbnQ7CisgICAgbV9sYXN0V2hlZWxHbG9iYWxQb3NpdGlvbiA9IHBhcmFtZXRlcnMuZ2xv
YmFsUG9pbnQ7CisgICAgbV9mbGluZ01vZGlmaWVyID0gcGFyYW1ldGVycy5tb2RpZmllcnM7Cisg
ICAgT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjdXJ2ZSA9IFRvdWNocGFkRmxpbmdQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKHBhcmFtZXRlcnMuZGVsdGEsIHBhcmFtZXRlcnMuY3Vt
dWxhdGl2ZVNjcm9sbCk7CisgICAgbV9nZXN0dXJlQW5pbWF0aW9uID0gQWN0aXZlUGxhdGZvcm1H
ZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGUoY3VydmUucmVsZWFzZSgpLCB0aGlzLCBwYXJhbWV0ZXJz
LnN0YXJ0VGltZSk7CisgICAgc2NoZWR1bGVBbmltYXRpb24oKTsKK30KKwogdm9pZCBXZWJWaWV3
SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbCwgYm9v
bCB1c2VBbmNob3IsIGZsb2F0IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCiB7CiAgICAg
aWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaAppbmRleCAyMjkzOGFkNmJkNmM0OTc1Zjc0ZmUzN2U0MTU0ODdmZWVjYTEy
MTViLi40NTU5Njg4OWE5ODUyZDhkNzg3YWUwMDJlNjI1MTY5ZmE1ZjBkZGZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTI2MSw2ICsyNjEsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVk
dWxlQ29tcG9zaXRlKCk7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGlu
Z0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpOwogCiAgICAg
Ly8gV2ViVmlld0ltcGwKIApAQCAtMzM3LDcgKzMzOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG51
bWJlck9mVG91Y2hFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCk7CiAKICAgICAvLyBQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCBpbXBsZW1lbnRhdGlvbiBmb3Igd2hlZWwgZmxpbmcuCi0g
ICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAg
dmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKIAogICAgIC8v
IEhhbmRsZXMgY29udGV4dCBtZW51IGV2ZW50cyBvcmlnbmF0ZWQgdmlhIHRoZSB0aGUga2V5Ym9h
cmQuIFRoZXNlCiAgICAgLy8gaW5jbHVkZSB0aGUgVktfQVBQUyB2aXJ0dWFsIGtleSBhbmQgdGhl
IFNoaWZ0K0YxMCBjb21iaW5lLiBDb2RlIGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IGQ0ZTdkOWY3
N2E1NTI2MWE2ZDBkNzQ0ZDIxZjBmMGVkZjU2Y2Y1MmMuLmU5YWI3ODY0Yjk2NjI2YjAwOGJkNTNj
YzcxMjM2MzE4NWJlNDgxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC01OCw2ICs1OCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSB7IG1f
ZGlkUmVxdWVzdFJlZHJhdyA9IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21t
aXRPbkltcGxUaHJlYWQoKSB7IG1fZGlkUmVxdWVzdENvbW1pdCA9IHRydWU7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNz
T3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb25Pbklt
cGxUaHJlYWQoY29uc3QgQ0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpIHsgfQogCiAgICAg
c3RhdGljIHZvaWQgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShDQ0xheWVySW1w
bCogbGF5ZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggYzcyMzgzNzAyYzExM2UyMTBjMzQ0MjY3OTc3
ZDk1YTg5MzFiNGVlMi4uMmZhNzg4Y2M0YWQyZjhiYjBmNGZlM2Q0NTI2NGVmZTUzNzQ4MzRkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwCkBAIC0yNTksNiArMjU5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgbV90ZXN0SG9v
a3MtPmRpZFJlY3JlYXRlQ29udGV4dChzdWNjZWVkZWQpOwogICAgIH0KIAorICAgIHZpcnR1YWwg
dm9pZCB0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgQ0NBY3RpdmVXaGVl
bEZsaW5nUGFyYW1ldGVycyYgcGFyYW1zKQorICAgIHsKKyAgICB9CisKICAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVDb21wb3NpdGUoKQogICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oCmluZGV4
IDM4ODc2ZDczN2ZiNTJhYTZkMDNjNzFiZmZlNDE3MjhjOGNjY2YwYjUuLmM5M2U5N2VlYWNkYzc4
NWU1MWFkMWMxM2Q1MGFjZGU5YzcxNjM4ODIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oCkBAIC00NSw2ICs0
NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wg
c3VjY2VzcykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgeyB9CisgICAgdmly
dHVhbCB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBDQ0FjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikgeyB9CiAKICAgICAvLyBVc2VkIG9ubHkgaW4gdGhlIHNp
bmdsZS10aHJlYWRlZCBwYXRoLgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUdl
c3R1cmVDdXJ2ZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9y
bUdlc3R1cmVDdXJ2ZVRlc3QuY3BwCmluZGV4IDhmMjA2ZDg2NjkxODdhN2Q4NzhlYjlmNDcyYWI5
YmQ1NGZmMzRlN2IuLmZlMDViNDlkMmE3MGU5YmI2MGQ1OWZlNGZjMWY1ODdmYWZkYjllMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUGxhdGZvcm1HZXN0dXJlQ3Vy
dmVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtR2Vz
dHVyZUN1cnZlVGVzdC5jcHAKQEAgLTQyLDE2ICs0MiwxNiBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogY2xhc3MgTW9ja1BsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0IDogcHVibGljIFBs
YXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsQnkoY29uc3QgSW50UG9pbnQmIGRlbHRhKQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShj
b25zdCBJbnRTaXplJiBkZWx0YSkKICAgICB7CiAgICAgICAgIG1fY3VtdWxhdGl2ZURlbHRhID0g
bV9jdW11bGF0aXZlRGVsdGEgKyBkZWx0YTsKICAgICB9CiAKLSAgICBJbnRQb2ludCBjdW11bGF0
aXZlRGVsdGEoKSBjb25zdCB7IHJldHVybiAgbV9jdW11bGF0aXZlRGVsdGE7IH0KLSAgICB2b2lk
IHJlc2V0Q3VtdWxhdGl2ZURlbHRhKCkgeyBtX2N1bXVsYXRpdmVEZWx0YSA9IEludFBvaW50KCk7
IH0KKyAgICBJbnRTaXplIGN1bXVsYXRpdmVEZWx0YSgpIGNvbnN0IHsgcmV0dXJuICBtX2N1bXVs
YXRpdmVEZWx0YTsgfQorICAgIHZvaWQgcmVzZXRDdW11bGF0aXZlRGVsdGEoKSB7IG1fY3VtdWxh
dGl2ZURlbHRhID0gSW50U2l6ZSgpOyB9CiAKIHByaXZhdGU6Ci0gICAgSW50UG9pbnQgbV9jdW11
bGF0aXZlRGVsdGE7CisgICAgSW50U2l6ZSBtX2N1bXVsYXRpdmVEZWx0YTsKIH07CiAKIFRFU1Qo
UGxhdGZvcm1HZXN0dXJlQ3VydmUsIGZsaW5nQ3VydmUpCkBAIC02OSw4ICs2OSw4IEBAIFRFU1Qo
UGxhdGZvcm1HZXN0dXJlQ3VydmUsIGZsaW5nQ3VydmUpCiAgICAgRVhQRUNUX0ZBTFNFKGFuaW1h
dGlvbi0+YW5pbWF0ZSgxMDAxKSk7CiAgICAgLy8gU2luY2UgdGhlIFJheWxlaWdoIENERiBtYXhl
cyBvdXQgYXQgMSwgd2UgZXhwZWN0IHRoZSBjdW11bGF0aXZlIHNjcm9sbCBpbmNyZW1lbnRzIHRv
CiAgICAgLy8gbWF0Y2ggdGhlIGlucHV0IHZlbG9jaXR5IHBhcmFtZXRlci4KLSAgICBFWFBFQ1Rf
TkVBUih0YXJnZXQuY3VtdWxhdGl2ZURlbHRhKCkueCgpLCAxMDAsIDEpOwotICAgIEVYUEVDVF9F
USh0YXJnZXQuY3VtdWxhdGl2ZURlbHRhKCkueSgpLCAwKTsKKyAgICBFWFBFQ1RfTkVBUih0YXJn
ZXQuY3VtdWxhdGl2ZURlbHRhKCkud2lkdGgoKSwgMTAwLCAxKTsKKyAgICBFWFBFQ1RfRVEodGFy
Z2V0LmN1bXVsYXRpdmVEZWx0YSgpLmhlaWdodCgpLCAwKTsKIAogICAgIC8vIFRlc3QgYW5pbWF0
aW9uIHdoZW4gbm90IHN0YXJ0aW5nIGF0IHQgPSAwLgogICAgIGRvdWJsZSBiYXNlVGltZSA9IDQy
LjQyOwpAQCAtODEsNyArODEsNyBAQCBURVNUKFBsYXRmb3JtR2VzdHVyZUN1cnZlLCBmbGluZ0N1
cnZlKQogICAgIEVYUEVDVF9UUlVFKGFuaW1hdGlvbi0+YW5pbWF0ZShiYXNlVGltZSArIDEuMzUp
KTsKICAgICBFWFBFQ1RfVFJVRShhbmltYXRpb24tPmFuaW1hdGUoYmFzZVRpbWUgKyAxMDAwKSk7
CiAgICAgRVhQRUNUX0ZBTFNFKGFuaW1hdGlvbi0+YW5pbWF0ZShiYXNlVGltZSArIDEwMDEpKTsK
LSAgICBFWFBFQ1RfTkVBUih0YXJnZXQuY3VtdWxhdGl2ZURlbHRhKCkueCgpLCAxMDAsIDEpOwor
ICAgIEVYUEVDVF9ORUFSKHRhcmdldC5jdW11bGF0aXZlRGVsdGEoKS53aWR0aCgpLCAxMDAsIDEp
OwogCiAgICAgYW5pbWF0aW9uID0gQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpjcmVh
dGUoV2hlZWxGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoRmxvYXRQb2ludCg1MCwg
MTUwKSksICZ0YXJnZXQpOwogICAgIHRhcmdldC5yZXNldEN1bXVsYXRpdmVEZWx0YSgpOwpAQCAt
OTMsOCArOTMsOCBAQCBURVNUKFBsYXRmb3JtR2VzdHVyZUN1cnZlLCBmbGluZ0N1cnZlKQogICAg
IEVYUEVDVF9UUlVFKGFuaW1hdGlvbi0+YW5pbWF0ZSgwLjc1KSk7CiAgICAgRVhQRUNUX1RSVUUo
YW5pbWF0aW9uLT5hbmltYXRlKDEwMDApKTsKICAgICBFWFBFQ1RfRkFMU0UoYW5pbWF0aW9uLT5h
bmltYXRlKDEwMDEpKTsKLSAgICBFWFBFQ1RfTkVBUih0YXJnZXQuY3VtdWxhdGl2ZURlbHRhKCku
eCgpLCA1MCwgMSk7Ci0gICAgRVhQRUNUX05FQVIodGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgpLnko
KSwgMTUwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUih0YXJnZXQuY3VtdWxhdGl2ZURlbHRhKCkud2lk
dGgoKSwgNTAsIDEpOworICAgIEVYUEVDVF9ORUFSKHRhcmdldC5jdW11bGF0aXZlRGVsdGEoKS5o
ZWlnaHQoKSwgMTUwLCAxKTsKIH0KIAogVEVTVChQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSwgZmxpbmdD
dXJ2ZVRvdWNoKQpAQCAtMTEzLDggKzExMyw4IEBAIFRFU1QoUGxhdGZvcm1HZXN0dXJlQ3VydmUs
IGZsaW5nQ3VydmVUb3VjaCkKICAgICBFWFBFQ1RfVFJVRShhbmltYXRpb24tPmFuaW1hdGUoMC45
KSk7CiAgICAgRVhQRUNUX1RSVUUoYW5pbWF0aW9uLT5hbmltYXRlKDEwMDApKTsKICAgICBFWFBF
Q1RfRkFMU0UoYW5pbWF0aW9uLT5hbmltYXRlKDEwMDEpKTsKLSAgICBFWFBFQ1RfTkVBUih0YXJn
ZXQuY3VtdWxhdGl2ZURlbHRhKCkueCgpLCBpbml0aWFsVmVsb2NpdHkgKiB0b3VjaEZsaW5nQ3Vy
dmVBcmVhRmFjdG9yLCAxKTsKLSAgICBFWFBFQ1RfRVEodGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgp
LnkoKSwgMCk7CisgICAgRVhQRUNUX05FQVIodGFyZ2V0LmN1bXVsYXRpdmVEZWx0YSgpLndpZHRo
KCksIGluaXRpYWxWZWxvY2l0eSAqIHRvdWNoRmxpbmdDdXJ2ZUFyZWFGYWN0b3IsIDEpOworICAg
IEVYUEVDVF9FUSh0YXJnZXQuY3VtdWxhdGl2ZURlbHRhKCkuaGVpZ2h0KCksIDApOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBhbm9ueW1vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNw
cAppbmRleCBmYTgyNDdiMTEwYzA3ZWIxNTdmZDU0NDkwMjY0OWUxZGI1MGYwZDA2Li45N2QwN2Ez
ZDg4YTViNDZiZDFiMzIwYjFkNDAzYmI2MWUwNjhmZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbFRlc3QuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKICNpbmNs
dWRlICJjYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uaCIKKyNpbmNsdWRlICJjYy9DQ0FjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIK
ICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAKQEAgLTYyLDYgKzYzLDggQEAg
cHVibGljOgogICAgIE1PQ0tfTUVUSE9EMShzY3JvbGxCeSwgdm9pZChjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJikpOwogICAgIE1PQ0tfTUVUSE9EMChzY3JvbGxFbmQsIHZvaWQoKSk7CiAKKyAgICBN
T0NLX01FVEhPRDEodHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uLCB2b2lkKGNvbnN0
IFdlYkNvcmU6OkNDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSk7CisKIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHRhcmdldFBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGFuY2hvclBvaW50LApAQCAtMTMwLDMwICsxMzMsMzIgQEAgcHVibGljOgog
ICAgICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CiAgICAgfQogCi0gICAg
dm9pZCB2ZXJpZnlBbmRSZXNldE1vY2tzKCkKLSAgICB7Ci0gICAgICAgIHRlc3Rpbmc6Ok1vY2s6
OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7
Ci0gICAgICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21v
Y2tDbGllbnQpOwotICAgICAgICBzd2l0Y2ggKG1fZXhwZWN0ZWREaXNwb3NpdGlvbikgewotICAg
ICAgICBjYXNlIERpZEhhbmRsZToKLSAgICAgICAgICAgIC8vIElmIHdlIGV4cGVjdCB0byBoYW5k
bGUgZXZlbnRzLCB3ZSBzaG91bGRuJ3QgZ2V0IGFueSBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KCkg
Y2FsbHMgd2l0aCBhbnkgcGFyYW1ldGVyLgotICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2Nr
Q2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KDo6dGVzdGluZzo6XykpLlRpbWVzKDApOwot
ICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWRIYW5kbGVJbnB1dEV2ZW50
KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGlkTm90SGFuZGxlOgotICAg
ICAgICAgICAgLy8gSWYgd2UgYXJlbid0IGV4cGVjdGluZyB0byBoYW5kbGUgZXZlbnRzLCB3ZSBz
aG91bGRuJ3QgY2FsbCBkaWRIYW5kbGVJbnB1dEV2ZW50KCkuCi0gICAgICAgICAgICBFWFBFQ1Rf
Q0FMTChtX21vY2tDbGllbnQsIGRpZEhhbmRsZUlucHV0RXZlbnQoKSkuVGltZXMoMCk7Ci0gICAg
ICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQo
ZmFsc2UpKS5UaW1lcygwKTsKLSAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwg
ZGlkTm90SGFuZGxlSW5wdXRFdmVudCh0cnVlKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBEcm9wRXZlbnQ6Ci0gICAgICAgICAgICAvLyBJZiB3ZSdyZSBleHBlY3RpbmcgdG8g
ZHJvcCwgd2Ugc2hvdWxkbid0IGdldCBhbnkgZGlkSGFuZGxlLi4oKSBvciBkaWROb3RIYW5kbGVJ
bnB1dEV2ZW50KHRydWUgLyogc2VuZFRvV2lkZ2V0ICovKSBjYWxscy4KLSAgICAgICAgICAgIEVY
UEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkSGFuZGxlSW5wdXRFdmVudCgpKS5UaW1lcygwKTsK
LSAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRF
dmVudCh0cnVlKSkuVGltZXMoMCk7Ci0gICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGll
bnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQoZmFsc2UpKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgfQorICAgIC8vIFRoaXMgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIGJlY2F1
c2Ugd2hlbiBhbiBleHBlY3RhdGlvbiBpcyBub3Qgc2F0aXNmaWVkIHRoZSBvbmx5IG91dHB1dCB5
b3UgZ2V0CisgICAgLy8gb3V0IG9mIGdtb2NrIGlzIHRoZSBsaW5lIG51bWJlciB0aGF0IHNldCB0
aGUgZXhwZWN0YXRpb24uCisjZGVmaW5lIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKSBkbyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdGVzdGluZzo6TW9j
azo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHRl
c3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDbGllbnQpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBzd2l0Y2ggKG1fZXhwZWN0ZWREaXNwb3NpdGlvbikgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgY2FzZSBEaWRIYW5kbGU6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAvKiBJZiB3ZSBleHBlY3QgdG8gaGFuZGxl
IGV2ZW50cywgd2Ugc2hvdWxkbid0IGdldCBhbnkgZGlkTm90SGFuZGxlSW5wdXRFdmVudCgpIGNh
bGxzIHdpdGggYW55IHBhcmFtZXRlci4gKi8gXAorICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9t
b2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KDo6dGVzdGluZzo6XykpLlRpbWVzKDAp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEVYUEVD
VF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkSGFuZGxlSW5wdXRFdmVudCgpKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBjYXNlIERpZE5vdEhhbmRsZTogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgIC8qIElmIHdlIGFyZW4ndCBleHBlY3RpbmcgdG8gaGFu
ZGxlIGV2ZW50cywgd2Ugc2hvdWxkbid0IGNhbGwgZGlkSGFuZGxlSW5wdXRFdmVudCgpLiAqLyAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGll
bnQsIGRpZEhhbmRsZUlucHV0RXZlbnQoKSkuVGltZXMoMCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRVhQRUNUX0NBTEwo
bV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KGZhbHNlKSkuVGltZXMoMCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEVY
UEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudCh0cnVlKSk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBjYXNlIERyb3BFdmVudDogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIC8qIElmIHdlJ3JlIGV4cGVjdGluZyB0byBkcm9w
LCB3ZSBzaG91bGRuJ3QgZ2V0IGFueSBkaWRIYW5kbGUuLigpIG9yIGRpZE5vdEhhbmRsZUlucHV0
RXZlbnQodHJ1ZSkgY2FsbHMuICovICBcCisgICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tD
bGllbnQsIGRpZEhhbmRsZUlucHV0RXZlbnQoKSkuVGltZXMoMCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRVhQRUNUX0NB
TEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KHRydWUpKS5UaW1lcygwKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudChmYWxzZSkp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB9IHdoaWxlICgwKQogCiBwcm90ZWN0ZWQ6CiAgICAgTW9ja0NDSW5wdXRIYW5kbGVyQ2xp
ZW50IG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50OwpAQCAtMTczLDcgKzE3OCw3IEBAIFRFU1Rf
RihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVTY3JvbGxTdGFydGVk
KQogewogICAgIC8vIFdlIHNob3VsZG4ndCBzZW5kIGFueSBldmVudHMgdG8gdGhlIHdpZGdldCBm
b3IgdGhpcyBnZXN0dXJlLgogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZEhhbmRsZTsK
LSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygp
OwogCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJl
Z2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6
UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7CkBA
IC0xODEsMTQgKzE4NiwxNCBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxU
ZXN0LCBnZXN0dXJlU2Nyb2xsU3RhcnRlZCkKICAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6Oldl
YklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjsKICAgICBtX2lucHV0SGFuZGxlci0+aGFu
ZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAg
ICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6
OldlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU7CiAgICAgZ2VzdHVyZS5kZWx0YVkg
PSAtNDA7IC8vIC1ZIG1lYW5zIHNjcm9sbCBkb3duIC0gaS5lLiBpbiB0aGUgK1kgZGlyZWN0aW9u
LgogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0
ZXN0aW5nOjpQcm9wZXJ0eSgmV2ViQ29yZTo6SW50U2l6ZTo6aGVpZ2h0LCB0ZXN0aW5nOjpHdCgw
KSkpKTsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAot
ICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7
CiAKICAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3Jv
bGxFbmQ7CiAgICAgZ2VzdHVyZS5kZWx0YVkgPSAwOwpAQCAtMjAwLDcgKzIwNSw3IEBAIFRFU1Rf
RihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVTY3JvbGxGYWlsZWQp
CiB7CiAgICAgLy8gV2Ugc2hvdWxkIHNlbmQgYWxsIGV2ZW50cyB0byB0aGUgd2lkZ2V0IGZvciB0
aGlzIGdlc3R1cmUuCiAgICAgbV9leHBlY3RlZERpc3Bvc2l0aW9uID0gRGlkTm90SGFuZGxlOwot
ICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7
CiAKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVn
aW4oOjp0ZXN0aW5nOjpfLCA6OnRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGlu
Zzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxGYWlsZWQpKTsK
QEAgLTIwOCwxMyArMjEzLDEzIEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bFRlc3QsIGdlc3R1cmVTY3JvbGxGYWlsZWQpCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47CiAgICAgbV9pbnB1dEhhbmRsZXItPmhh
bmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7Cisg
ICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0
OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOwogICAgIGdlc3R1cmUuZGVsdGFZ
ID0gNDA7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAK
LSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygp
OwogCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Ny
b2xsRW5kOwogICAgIGdlc3R1cmUuZGVsdGFZID0gMDsKQEAgLTIyOCw3ICsyMzMsNyBAQCBURVNU
X0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlU2Nyb2xsSWdub3Jl
ZCkKICAgICAvLyBpbmRpY2F0aW5nIHRoYXQgd2UgY291bGQgZGV0ZXJtaW5lIHRoYXQgdGhlcmUn
cyBub3RoaW5nIHRoYXQgY291bGQgc2Nyb2xsIG9yIG90aGVyd2lzZQogICAgIC8vIHJlYWN0IHRv
IHRoaXMgZ2VzdHVyZSBzZXF1ZW5jZSBhbmQgdGh1cyB3ZSBzaG91bGQgZHJvcCB0aGUgd2hvbGUg
Z2VzdHVyZSBzZXF1ZW5jZSBvbiB0aGUgZmxvb3IuCiAgICAgbV9leHBlY3RlZERpc3Bvc2l0aW9u
ID0gRHJvcEV2ZW50OwotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5E
X1JFU0VUX01PQ0tTKCk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNs
aWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxs
T25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9s
bElnbm9yZWQpKTsKQEAgLTI0MSwxMyArMjQ2LDEzIEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVQaW5jaCkKIHsKICAgICAvLyBXZSBzaG91bGRuJ3Qg
c2VuZCBhbnkgZXZlbnRzIHRvIHRoZSB3aWRnZXQgZm9yIHRoaXMgZ2VzdHVyZS4KICAgICBtX2V4
cGVjdGVkRGlzcG9zaXRpb24gPSBEaWRIYW5kbGU7Ci0gICAgdmVyaWZ5QW5kUmVzZXRNb2Nrcygp
OworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIGdlc3R1cmUudHlwZSA9IFdl
YktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoQmVnaW47CiAgICAgRVhQRUNUX0NBTEwo
bV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHBpbmNoR2VzdHVyZUJlZ2luKCkpOwogICAgIG1f
aW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCi0gICAgdmVyaWZ5QW5k
UmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIGdlc3R1
cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoVXBkYXRlOwogICAg
IGdlc3R1cmUuZGVsdGFYID0gMS41OwpAQCAtMjU2LDcgKzI2MSw3IEBAIFRFU1RfRihXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVQaW5jaCkKICAgICBFWFBFQ1RfQ0FM
TChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgcGluY2hHZXN0dXJlVXBkYXRlKDEuNSwgV2Vi
Q29yZTo6SW50UG9pbnQoNywgMTMpKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0
RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZ
X0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlUGluY2hVcGRhdGU7CiAgICAgZ2VzdHVyZS5kZWx0YVggPSAwLjU7CkBA
IC0yNjUsNyArMjcwLDcgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVz
dCwgZ2VzdHVyZVBpbmNoKQogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xp
ZW50LCBwaW5jaEdlc3R1cmVVcGRhdGUoLjUsIFdlYkNvcmU6OkludFBvaW50KDksIDYpKSk7CiAg
ICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2ZXJp
ZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAg
Z2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hFbmQ7CiAg
ICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHBpbmNoR2VzdHVyZUVu
ZCgpKTsKQEAgLTI3Niw3ICsyODEsNyBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGxUZXN0LCBnZXN0dXJlRmxpbmdTdGFydGVkKQogewogICAgIC8vIFdlIHNob3VsZG4ndCBz
ZW5kIGFueSBldmVudHMgdG8gdGhlIHdpZGdldCBmb3IgdGhpcyBnZXN0dXJlLgogICAgIG1fZXhw
ZWN0ZWREaXNwb3NpdGlvbiA9IERpZEhhbmRsZTsKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7
CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgRVhQRUNUX0NBTEwobV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8p
KQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5k
bGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7CkBAIC0yODYsNyArMjkxLDcgQEAgVEVTVF9GKFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nU3RhcnRlZCkKICAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRp
b24oKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAK
LSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygp
OwogCiAgICAgLy8gVmVyaWZ5IHRoYXQgYSBHZXN0dXJlRmxpbmdDYW5jZWwgZHVyaW5nIGFuIGFu
aW1hdGlvbiBjYW5jZWxzIGl0LgogICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRF
dmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOwpAQCAtMjk3LDcgKzMwMiw3IEBAIFRFU1RfRihXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ0ZhaWxlZCkKIHsKICAg
ICAvLyBXZSBzaG91bGQgc2VuZCBhbGwgZXZlbnRzIHRvIHRoZSB3aWRnZXQgZm9yIHRoaXMgZ2Vz
dHVyZS4KICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEaWROb3RIYW5kbGU7Ci0gICAgdmVy
aWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0
aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihX
ZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKSk7CkBAIC0zMDUsNyAr
MzEwLDcgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVy
ZUZsaW5nRmFpbGVkKQogICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6
R2VzdHVyZUZsaW5nU3RhcnQ7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQo
Z2VzdHVyZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9S
RVNFVF9NT0NLUygpOwogCiAgICAgLy8gRXZlbiBpZiB3ZSBkaWRuJ3Qgc3RhcnQgYSBmbGluZyBv
dXJzZWx2ZXMsIHdlIHN0aWxsIG5lZWQgdG8gc2VuZCB0aGUgY2FuY2VsIGV2ZW50IHRvIHRoZSB3
aWRnZXQuCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
RmxpbmdDYW5jZWw7CkBAIC0zMTUsNyArMzIwLDcgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nRmFpbGVkKQogVEVTVF9GKFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nSWdub3JlZCkKIHsKICAgICBtX2V4
cGVjdGVkRGlzcG9zaXRpb24gPSBEaWROb3RIYW5kbGU7Ci0gICAgdmVyaWZ5QW5kUmVzZXRNb2Nr
cygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5n
OjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0
SGFuZGxlckNsaWVudDo6U2Nyb2xsSWdub3JlZCkpOwpAQCAtMzIzLDcgKzMyOCw3IEBAIFRFU1Rf
RihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ0lnbm9yZWQp
CiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdT
dGFydDsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAot
ICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7
CiAKICAgICAvLyBFdmVuIGlmIHdlIGRpZG4ndCBzdGFydCBhIGZsaW5nIG91cnNlbHZlcywgd2Ug
c3RpbGwgbmVlZCB0byBzZW5kIHRoZSBjYW5jZWwgZXZlbnQgdG8gdGhlIHdpZGdldC4KICAgICBn
ZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDsK
QEAgLTMzNCwxMiArMzM5LDIyIEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bFRlc3QsIGdlc3R1cmVGbGluZ0FuaW1hdGVzKQogewogICAgIC8vIFdlIHNob3VsZG4ndCBzZW5k
IGFueSBldmVudHMgdG8gdGhlIHdpZGdldCBmb3IgdGhpcyBnZXN0dXJlLgogICAgIG1fZXhwZWN0
ZWREaXNwb3NpdGlvbiA9IERpZEhhbmRsZTsKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7Cisg
ICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgLy8gT24gdGhlIGZsaW5nIHN0YXJ0
LCB3ZSBzaG91bGQgc2NoZWR1bGUgYW4gYW5pbWF0aW9uIGJ1dCBub3QgYWN0dWFsbHkgc3RhcnQK
ICAgICAvLyBzY3JvbGxpbmcuCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2
ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKLSAgICBnZXN0dXJlLmRlbHRhWCA9IC0xMDAwOworICAg
IFdlYkNvcmU6OkZsb2F0U2l6ZSBmbGluZ0RlbHRhID0gV2ViQ29yZTo6RmxvYXRTaXplKDEwMDAs
IDApOworICAgIFdlYkNvcmU6OkludFBvaW50IGZsaW5nUG9pbnQgPSBXZWJDb3JlOjpJbnRQb2lu
dCg3LCAxMyk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgZmxpbmdHbG9iYWxQb2ludCA9IFdlYkNv
cmU6OkludFBvaW50KDE3LCAyMyk7CisgICAgaW50IG1vZGlmaWVycyA9IDc7CisgICAgZ2VzdHVy
ZS5kZWx0YVggPSBmbGluZ0RlbHRhLndpZHRoKCk7CisgICAgZ2VzdHVyZS5kZWx0YVkgPSBmbGlu
Z0RlbHRhLmhlaWdodCgpOworICAgIGdlc3R1cmUueCA9IGZsaW5nUG9pbnQueCgpOworICAgIGdl
c3R1cmUueSA9IGZsaW5nUG9pbnQueSgpOworICAgIGdlc3R1cmUuZ2xvYmFsWCA9IGZsaW5nR2xv
YmFsUG9pbnQueCgpOworICAgIGdlc3R1cmUuZ2xvYmFsWSA9IGZsaW5nR2xvYmFsUG9pbnQueSgp
OworICAgIGdlc3R1cmUubW9kaWZpZXJzID0gbW9kaWZpZXJzOwogICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKICAgICBFWFBF
Q1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6
XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29y
ZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKQEAgLTM1NiwyNCArMzcx
LDM3IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVG
bGluZ0FuaW1hdGVzKQogCiAgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3Rh
dGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKIAotICAgIC8vIFRoZSBzZWNvbmQg
Y2FsbCBzaG91bGQgc3RhcnQgc2Nyb2xsaW5nIGluIHRoZSArWCBkaXJlY3Rpb24uCisgICAgLy8g
VGhlIHNlY29uZCBjYWxsIHNob3VsZCBzdGFydCBzY3JvbGxpbmcgaW4gdGhlIC1YIGRpcmVjdGlv
bi4KICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVB
bmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQs
IHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2Uo
dGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFy
dGVkKSk7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9s
bEJ5KHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjp3aWR0aCwgdGVzdGluZzo6
R3QoMCkpKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNj
cm9sbEJ5KHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjp3aWR0aCwgdGVzdGlu
Zzo6THQoMCkpKSk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQs
IHNjcm9sbEVuZCgpKTsKICAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4xKTsKIAogICAg
IHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0
SGFuZGxlckNsaWVudCk7CiAKICAgICAvLyBMZXQncyBzYXkgb24gdGhlIHRoaXJkIGNhbGwgd2Ug
aGl0IGEgbm9uLXNjcm9sbGFibGUgcmVnaW9uLiBXZSBzaG91bGQgYWJvcnQgdGhlIGZsaW5nIGFu
ZCBub3Qgc2Nyb2xsLgotICAgIC8vIEZJWE1FOiBXZSBhbHNvIG5lZWQgdG8gZG8gc29tZSB3b3Jr
IHRvIHRyYW5zZmVyIHRoZSByZXN0IG9mIHRoaXMgZmxpbmcgdG8gdGhlIG1haW4gdGhyZWFkLgot
ICAgIC8vIEFkZCB0ZXN0cyBmb3IgdGhpcyBvbmNlIGl0J3MgaW1wbGVtZW50ZWQuCisgICAgLy8g
V2UgYWxzbyBzaG91bGQgcGFzcyB0aGUgY3VycmVudCBmbGluZyBwYXJhbWV0ZXJzIG91dCB0byB0
aGUgY2xpZW50IHNvIHRoZSByZXN0IG9mIHRoZSBmbGluZyBjYW4gYmUKKyAgICAvLyB0cmFuc2Zl
cnJlZCB0byB0aGUgbWFpbiB0aHJlYWQuCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhh
bmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9DQUxMKG1fbW9j
a0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpf
KSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFu
ZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKSk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1
dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKICAgICBFWFBF
Q1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkpLlRpbWVzKDAp
OworCisgICAgLy8gRXhwZWN0ZWQgd2hlZWwgZmxpbmcgYW5pbWF0aW9uIHBhcmFtZXRlcnM6Cisg
ICAgLy8gKikgZmxpbmdEZWx0YSBhbmQgZmxpbmdQb2ludCBzaG91bGQgbWF0Y2ggdGhlIG9yaWdp
bmFsIEdlc3R1cmVGbGluZ1N0YXJ0IGV2ZW50CisgICAgLy8gKikgc3RhcnRUaW1lIHdpbGwgaGF2
ZSBjaGFuZ2VkIGZyb20gbW9ub3RvbmljIDEwIHRvIHNvbWV0aGluZyBzdHJhbmdlLgorICAgIC8v
ICopIGN1bXVsYXRpdmVTY3JvbGwgZGVwZW5kcyBvbiB0aGUgY3VydmUsIGJ1dCBzaW5jZSB3ZSd2
ZSBhbmltYXRlZCBpbiB0aGUgLVggZGlyZWN0aW9uIHRoZSBYIHZhbHVlIHNob3VsZCBiZSA8IDAK
KyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgdHJhbnNmZXJBY3Rp
dmVXaGVlbEZsaW5nQW5pbWF0aW9uKHRlc3Rpbmc6OkFsbE9mKAorICAgICAgICB0ZXN0aW5nOjpG
aWVsZCgmV2ViQ29yZTo6Q0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6ZGVsdGEsIHRlc3Rp
bmc6OkVxKGZsaW5nRGVsdGEpKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkNvcmU6OkND
QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OnBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ1BvaW50
KSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpDQ0FjdGl2ZVdoZWVsRmxpbmdQ
YXJhbWV0ZXJzOjpnbG9iYWxQb2ludCwgdGVzdGluZzo6RXEoZmxpbmdHbG9iYWxQb2ludCkpLAor
ICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6Q0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1l
dGVyczo6bW9kaWZpZXJzLCB0ZXN0aW5nOjpFcShtb2RpZmllcnMpKSwKKyAgICAgICAgdGVzdGlu
Zzo6RmllbGQoJldlYkNvcmU6OkNDQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OnN0YXJ0VGlt
ZSwgdGVzdGluZzo6RXEoMTApKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkNvcmU6OkND
QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmN1bXVsYXRpdmVTY3JvbGwsCisgICAgICAgICAg
ICB0ZXN0aW5nOjpQcm9wZXJ0eSgmV2ViQ29yZTo6SW50U2l6ZTo6d2lkdGgsIHRlc3Rpbmc6Okd0
KDApKSkpKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMik7CiAKICAgICB0ZXN0
aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQpOwpAQCAtMzgzLDYgKzQxMSwxNTIgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nQW5pbWF0ZXMpCiAgICAgRVhQRUNUX0NBTEwo
bV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpLlRpbWVzKDAp
OwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdp
bih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CiAgICAgbV9pbnB1dEhhbmRsZXIt
PmFuaW1hdGUoMTAuMyk7CisKKyAgICAvLyBTaW5jZSB3ZSd2ZSB0cmFuc2ZlcnJlZCB0aGUgZmxp
bmcgdG8gdGhlIG1haW4gdGhyZWFkLCB3ZSBuZWVkIHRvIHBhc3MgdGhlIG5leHQgR2VzdHVyZUZs
aW5nQ2FuY2VsIHRvIHRoZSBtYWluCisgICAgLy8gdGhyZWFkIGFzIHdlbGwuCisgICAgRVhQRUNU
X0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KHRydWUpKTsKKyAgICBn
ZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDsK
KyAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKK30KKworVEVT
VF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nVHJhbnNm
ZXJSZXNldHMpCit7CisgICAgLy8gV2Ugc2hvdWxkbid0IHNlbmQgYW55IGV2ZW50cyB0byB0aGUg
d2lkZ2V0IGZvciB0aGlzIGdlc3R1cmUuCisgICAgbV9leHBlY3RlZERpc3Bvc2l0aW9uID0gRGlk
SGFuZGxlOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKKworICAgIC8vIFN0YXJ0IGEg
Z2VzdHVyZSBmbGluZyBpbiB0aGUgLVggZGlyZWN0aW9uIHdpdGggemVybyBZIG1vdmVtZW50Lgor
ICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3Rh
cnQ7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIGZsaW5nRGVsdGEgPSBXZWJDb3JlOjpGbG9hdFNp
emUoMTAwMCwgMCk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgZmxpbmdQb2ludCA9IFdlYkNvcmU6
OkludFBvaW50KDcsIDEzKTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBmbGluZ0dsb2JhbFBvaW50
ID0gV2ViQ29yZTo6SW50UG9pbnQoMTcsIDIzKTsKKyAgICBpbnQgbW9kaWZpZXJzID0gMTsKKyAg
ICBnZXN0dXJlLmRlbHRhWCA9IGZsaW5nRGVsdGEud2lkdGgoKTsKKyAgICBnZXN0dXJlLmRlbHRh
WSA9IGZsaW5nRGVsdGEuaGVpZ2h0KCk7CisgICAgZ2VzdHVyZS54ID0gZmxpbmdQb2ludC54KCk7
CisgICAgZ2VzdHVyZS55ID0gZmxpbmdQb2ludC55KCk7CisgICAgZ2VzdHVyZS5nbG9iYWxYID0g
ZmxpbmdHbG9iYWxQb2ludC54KCk7CisgICAgZ2VzdHVyZS5nbG9iYWxZID0gZmxpbmdHbG9iYWxQ
b2ludC55KCk7CisgICAgZ2VzdHVyZS5tb2RpZmllcnMgPSBtb2RpZmllcnM7CisgICAgRVhQRUNU
X0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwor
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0
ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVy
bihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOworICAgIG1f
aW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOworCisgICAgdGVzdGluZzo6
TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xp
ZW50KTsKKworICAgIC8vIFN0YXJ0IHRoZSBmbGluZyBhbmltYXRpb24gYXQgdGltZSAxMC4gVGhp
cyBzaG91bGRuJ3QgYWN0dWFsbHkgc2Nyb2xsLCBqdXN0IGVzdGFibGlzaCBhIHN0YXJ0IHRpbWUu
CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5p
bWF0aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBz
Y3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CisgICAgbV9pbnB1
dEhhbmRsZXItPmFuaW1hdGUoMTApOworCisgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xl
YXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKKworICAgIC8vIFRo
ZSBzZWNvbmQgY2FsbCBzaG91bGQgc3RhcnQgc2Nyb2xsaW5nIGluIHRoZSAtWCBkaXJlY3Rpb24u
CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5p
bWF0aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBz
Y3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldpbGxPbmNlKHRl
c3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRl
ZCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxC
eSh0ZXN0aW5nOjpQcm9wZXJ0eSgmV2ViQ29yZTo6SW50U2l6ZTo6d2lkdGgsIHRlc3Rpbmc6Okx0
KDApKSkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3Jv
bGxFbmQoKSk7CisgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMSk7CisKKyAgICB0ZXN0
aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQpOworCisgICAgLy8gTGV0J3Mgc2F5IG9uIHRoZSB0aGlyZCBjYWxsIHdlIGhpdCBh
IG5vbi1zY3JvbGxhYmxlIHJlZ2lvbi4gV2Ugc2hvdWxkIGFib3J0IHRoZSBmbGluZyBhbmQgbm90
IHNjcm9sbC4KKyAgICAvLyBXZSBhbHNvIHNob3VsZCBwYXNzIHRoZSBjdXJyZW50IGZsaW5nIHBh
cmFtZXRlcnMgb3V0IHRvIHRoZSBjbGllbnQgc28gdGhlIHJlc3Qgb2YgdGhlIGZsaW5nIGNhbiBi
ZQorICAgIC8vIHRyYW5zZmVycmVkIHRvIHRoZSBtYWluIHRocmVhZC4KKyAgICBFWFBFQ1RfQ0FM
TChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAg
RVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rp
bmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdl
YkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxGYWlsZWQpKTsKKyAgICBFWFBFQ1Rf
Q0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6XykpLlRp
bWVzKDApOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3Jv
bGxFbmQoKSkuVGltZXMoMCk7CisKKyAgICAvLyBFeHBlY3RlZCB3aGVlbCBmbGluZyBhbmltYXRp
b24gcGFyYW1ldGVyczoKKyAgICAvLyAqKSBmbGluZ0RlbHRhIGFuZCBmbGluZ1BvaW50IHNob3Vs
ZCBtYXRjaCB0aGUgb3JpZ2luYWwgR2VzdHVyZUZsaW5nU3RhcnQgZXZlbnQKKyAgICAvLyAqKSBz
dGFydFRpbWUgc2hvdWxkIGJlIDEwIHRvIG1hdGNoIHRoZSB0aW1lIHBhcmFtZXRlciBvZiB0aGUg
Zmlyc3QgYW5pbWF0ZSgpIGNhbGwgYWZ0ZXIgdGhlIEdlc3R1cmVGbGluZ1N0YXJ0CisgICAgLy8g
KikgY3VtdWxhdGl2ZVNjcm9sbCBkZXBlbmRzIG9uIHRoZSBjdXJ2ZSwgYnV0IHNpbmNlIHdlJ3Zl
IGFuaW1hdGVkIGluIHRoZSAtWCBkaXJlY3Rpb24gdGhlIFggdmFsdWUgc2hvdWxkIGJlIDwgMAor
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCB0cmFuc2ZlckFjdGl2
ZVdoZWVsRmxpbmdBbmltYXRpb24odGVzdGluZzo6QWxsT2YoCisgICAgICAgIHRlc3Rpbmc6OkZp
ZWxkKCZXZWJDb3JlOjpDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpkZWx0YSwgdGVzdGlu
Zzo6RXEoZmxpbmdEZWx0YSkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6Q0NB
Y3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6cG9pbnQsIHRlc3Rpbmc6OkVxKGZsaW5nUG9pbnQp
KSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkNvcmU6OkNDQWN0aXZlV2hlZWxGbGluZ1Bh
cmFtZXRlcnM6Omdsb2JhbFBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ0dsb2JhbFBvaW50KSksCisg
ICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0
ZXJzOjptb2RpZmllcnMsIHRlc3Rpbmc6OkVxKG1vZGlmaWVycykpLAorICAgICAgICB0ZXN0aW5n
OjpGaWVsZCgmV2ViQ29yZTo6Q0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6c3RhcnRUaW1l
LCB0ZXN0aW5nOjpFcSgxMCkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6Q0NB
Y3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6Y3VtdWxhdGl2ZVNjcm9sbCwKKyAgICAgICAgICAg
IHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjp3aWR0aCwgdGVzdGluZzo6R3Qo
MCkpKSkpKTsKKyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4yKTsKKworICAgIHRlc3Rp
bmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxl
ckNsaWVudCk7CisKKyAgICAvLyBTaW5jZSB3ZSd2ZSBhYm9ydGVkIHRoZSBmbGluZywgdGhlIG5l
eHQgYW5pbWF0aW9uIHNob3VsZCBiZSBhIG5vLW9wIGFuZCBzaG91bGQgbm90IHJlc3VsdCBpbiBh
bm90aGVyCisgICAgLy8gZnJhbWUgYmVpbmcgcmVxdWVzdGVkLgorICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKS5UaW1lcygwKTsK
KyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4o
dGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDApOworICAgIG1faW5wdXRIYW5kbGVyLT5h
bmltYXRlKDEwLjMpOworCisgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3Rh
dGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKKworICAgIC8vIFNpbmNlIHdlJ3Zl
IHRyYW5zZmVycmVkIHRoZSBmbGluZyB0byB0aGUgbWFpbiB0aHJlYWQsIHdlIG5lZWQgdG8gcGFz
cyB0aGUgbmV4dCBHZXN0dXJlRmxpbmdDYW5jZWwgdG8gdGhlIG1haW4KKyAgICAvLyB0aHJlYWQg
YXMgd2VsbC4KKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZE5vdEhhbmRsZUlucHV0
RXZlbnQodHJ1ZSkpOworICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6
R2VzdHVyZUZsaW5nQ2FuY2VsOworICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50
KGdlc3R1cmUpOworCisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOworCisgICAgLy8gU3Rh
cnQgYSBzZWNvbmQgZ2VzdHVyZSBmbGluZywgdGhpcyB0aW1lIGluIHRoZSArWSBkaXJlY3Rpb24g
d2l0aCBubyBYLgorICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2Vz
dHVyZUZsaW5nU3RhcnQ7CisgICAgZmxpbmdEZWx0YSA9IFdlYkNvcmU6OkZsb2F0U2l6ZSgwLCAt
MTAwMCk7CisgICAgZmxpbmdQb2ludCA9IFdlYkNvcmU6OkludFBvaW50KDk1LCA4Nyk7CisgICAg
ZmxpbmdHbG9iYWxQb2ludCA9IFdlYkNvcmU6OkludFBvaW50KDMyLCA3MSk7CisgICAgbW9kaWZp
ZXJzID0gMjsKKyAgICBnZXN0dXJlLmRlbHRhWCA9IGZsaW5nRGVsdGEud2lkdGgoKTsKKyAgICBn
ZXN0dXJlLmRlbHRhWSA9IGZsaW5nRGVsdGEuaGVpZ2h0KCk7CisgICAgZ2VzdHVyZS54ID0gZmxp
bmdQb2ludC54KCk7CisgICAgZ2VzdHVyZS55ID0gZmxpbmdQb2ludC55KCk7CisgICAgZ2VzdHVy
ZS5nbG9iYWxYID0gZmxpbmdHbG9iYWxQb2ludC54KCk7CisgICAgZ2VzdHVyZS5nbG9iYWxZID0g
ZmxpbmdHbG9iYWxQb2ludC55KCk7CisgICAgZ2VzdHVyZS5tb2RpZmllcnMgPSBtb2RpZmllcnM7
CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5p
bWF0aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBz
Y3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldpbGxPbmNlKHRl
c3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRl
ZCkpOworICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOworCisg
ICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5w
dXRIYW5kbGVyQ2xpZW50KTsKKworICAgIC8vIFN0YXJ0IHRoZSBzZWNvbmQgZmxpbmcgYW5pbWF0
aW9uIGF0IHRpbWUgMzAuCisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGll
bnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRI
YW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMo
MCk7CisgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMzApOworCisgICAgdGVzdGluZzo6TW9j
azo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50
KTsKKworICAgIC8vIFRpY2sgdGhlIHNlY29uZCBmbGluZyBvbmNlIG5vcm1hbGx5LgorICAgIEVY
UEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigp
KTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVn
aW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpS
ZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKKyAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGlu
Zzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6OmhlaWdodCwgdGVzdGluZzo6R3QoMCkpKSk7
CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEVuZCgp
KTsKKyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgzMC4xKTsKKworICAgIHRlc3Rpbmc6Ok1v
Y2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVu
dCk7CisKKyAgICAvLyBUaGVuIGFib3J0IHRoZSBzZWNvbmQgZmxpbmcuCisgICAgRVhQRUNUX0NB
TEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOworICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0
aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihX
ZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKSk7CisgICAgRVhQRUNU
X0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6Ol8pKS5U
aW1lcygwKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Ny
b2xsRW5kKCkpLlRpbWVzKDApOworCisgICAgLy8gV2Ugc2hvdWxkIGdldCBwYXJhbWV0ZXJzIGZy
b20gdGhlIHNlY29uZCBmbGluZywgbm90aGluZyBmcm9tIHRoZSBmaXJzdCBmbGluZyBzaG91bGQg
ImxlYWsiLgorICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCB0cmFu
c2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24odGVzdGluZzo6QWxsT2YoCisgICAgICAgIHRl
c3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpDQ0FjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpkZWx0
YSwgdGVzdGluZzo6RXEoZmxpbmdEZWx0YSkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2Vi
Q29yZTo6Q0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6cG9pbnQsIHRlc3Rpbmc6OkVxKGZs
aW5nUG9pbnQpKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkNvcmU6OkNDQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnM6Omdsb2JhbFBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ0dsb2JhbFBv
aW50KSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJDb3JlOjpDQ0FjdGl2ZVdoZWVsRmxp
bmdQYXJhbWV0ZXJzOjptb2RpZmllcnMsIHRlc3Rpbmc6OkVxKG1vZGlmaWVycykpLAorICAgICAg
ICB0ZXN0aW5nOjpGaWVsZCgmV2ViQ29yZTo6Q0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6
c3RhcnRUaW1lLCB0ZXN0aW5nOjpFcSgzMCkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2Vi
Q29yZTo6Q0NBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6Y3VtdWxhdGl2ZVNjcm9sbCwKKyAg
ICAgICAgICAgIHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjpoZWlnaHQsIHRl
c3Rpbmc6Okx0KDApKSkpKSk7CisgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMzAuMik7CiB9
CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133913</attachid>
            <date>2012-03-26 15:51:02 -0700</date>
            <delta_ts>2012-03-27 21:32:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81740-20120326155101.patch</filename>
            <type>text/plain</type>
            <size>53061</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU2NDBkYmQ3ZmZiMzRj
MmM2M2U5MGQxZDBlNGRkMDU2YjRmZDI5ZS4uNzY0ODBmZWNhZGQ1MGUyMGFlNzQxYTY4ZTExNDdm
MTYwN2RkYjM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDEyLTAzLTI2ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBU
cmFuc2ZlciB3aGVlbCBmbGluZyB2aWEgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE3NDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHRoZSBh
YmlsaXR5IHRvIGNvbnN0cnVjdCBhbiBpbi1wcm9ncmVzcyBQbGF0Zm9ybUdlc3R1cmVBbmltYXRp
b24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVQbGF0
Zm9ybUdlc3R1cmVBbmltYXRpb246OkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbik6Cisg
ICAgICAgICogcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmg6CisgICAg
ICAgIChBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNocGFkRmxpbmdQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZSk6CisgICAgICAgICogcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1Bs
YXRmb3JtR2VzdHVyZUN1cnZlLmg6CisgICAgICAgIChUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0
dXJlQ3VydmUpOgorCisyMDEyLTAzLTI2ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1
bS5vcmc+CisKICAgICAgICAgU2Nyb2xsYWJsZSBwbHVnaW5zIG5vdCByZWdpc3RlcmVkIHByb3Bl
cmx5IGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9yCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MjE2MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDA3YTljMDQyZTUzZGUwMGNkZWI5YjZiOTliMTZiY2Y4MWIzYTA4NTkuLmFjZjcyZWUyODc2ODEx
Mzc0MDVlMzE3ZDNhNGI2OTEyNTVlOTJmNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDUgKzEsNTIgQEAKIDIwMTItMDMtMjYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KIAorICAgICAgICBbY2hyb21pdW1dIFRyYW5zZmVyIHdoZWVsIGZsaW5nIHZpYSBX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTc0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgYSBwYXRoIGZvciB0cmFuc2ZlcmluZyBhbiBhY3Rp
dmUgd2hlZWwgZmxpbmcgYW5pbWF0aW9uIG91dCB0byB0aGUgZW1iZWRkZXIgZnJvbSB0aGUgY29t
cG9zaXRvciBhbmQgYmFjayBpbgorICAgICAgICB0byBhIFdlYlZpZXdJbXBsIHZpYSB0aGUgZW1i
ZWRkZXIuIFRoaXMgaXMgdXNlZCB3aGVuIHdlIHN0YXJ0IGEgd2hlZWwgZmxpbmcgYW5pbWF0aW9u
IG9uIHRoZSBjb21wb3NpdG9yIHRocmVhZAorICAgICAgICBidXQgdGhlbiBoaXQgYSBjb25kaXRp
b24gdGhhdCB3ZSBjYW4ndCBoYW5kbGUgZnJvbSB0aGUgY29tcG9zaXRvciwgc3VjaCBhcyByZWdp
c3RlcmVkIHdoZWVsIGV2ZW50IGxpc3RlbmVycyBvciBhCisgICAgICAgIHNjcm9sbGFibGUgYXJl
YSB3ZSBjYW4ndCBoYW5kbGUuCisKKyAgICAgICAgTmV3IHRlc3RzIGFkZGVkIHRvIFdlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJUZXN0IGZvciB0aGUgdHJhbnNmZXJpbmcgbG9naWMuCisKKyAgICAg
ICAgKiBwdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNs
aWVudC5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkFjdGl2ZVdoZWVsRmxpbmdQ
YXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRl
cnM6OldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwdWJsaWMvV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50Ojp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdB
bmltYXRpb24pOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Lmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViVmlldyk6CisgICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsOjphbmltYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGw6OmNhbmNlbEN1cnJlbnRGbGluZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSk6CisgICAgICAgICog
c3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6
CisgICAgICAgICogdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQ6Ok1v
Y2tXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KToKKyAgICAgICAgKE1vY2tXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6VEVTVCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdDo6V2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGxUZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGxUZXN0Ojp+V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0
KToKKyAgICAgICAgKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCk6CisgICAgICAg
IChXZWJLaXQ6OlRFU1RfRik6CisgICAgICAgIChXZWJLaXQpOgorCisyMDEyLTAzLTI2ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgU2Nyb2xsYWJsZSBw
bHVnaW5zIG5vdCByZWdpc3RlcmVkIHByb3Blcmx5IGluIFNjcm9sbGluZ0Nvb3JkaW5hdG9yCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjE2MwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0
dXJlQW5pbWF0aW9uLmNwcAppbmRleCA5OWRiYmUwZTc1OGExMmY1ZjRhZDU3NWVhMzA5YTJmYzU4
MmJjYzBkLi5jZTY1ZjAyNTdhYzYzNjMwODY0YmVmYjRkMWZlOWVhNDkwMmVjMzE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVy
ZUFuaW1hdGlvbi5jcHAKQEAgLTQxLDYgKzQxLDExIEBAIFBhc3NPd25QdHI8QWN0aXZlUGxhdGZv
cm1HZXN0dXJlQW5pbWF0aW9uPiBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OmNyZWF0
CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24o
Y3VydmUsIHRhcmdldCkpOwogfQogCitQYXNzT3duUHRyPEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFu
aW1hdGlvbj4gQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGUoUGFzc093blB0
cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3VydmUsIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0
KiB0YXJnZXQsIGRvdWJsZSBzdGFydFRpbWUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBB
Y3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oY3VydmUsIHRhcmdldCwgc3RhcnRUaW1lKSk7
Cit9CisKIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6fkFjdGl2ZVBsYXRmb3JtR2Vz
dHVyZUFuaW1hdGlvbigpCiB7CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCkBAIC01OSw2ICs2NCwx
NCBAQCBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OkFjdGl2ZVBsYXRmb3JtR2VzdHVy
ZUFuaW1hdGlvbihQYXNzT3duUHRyPFBsYXRmbwogI2VuZGlmCiB9CiAKK0FjdGl2ZVBsYXRmb3Jt
R2VzdHVyZUFuaW1hdGlvbjo6QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKFBhc3NPd25Q
dHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGN1cnZlLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdl
dCogdGFyZ2V0LCBkb3VibGUgc3RhcnRUaW1lKQorICAgIDogbV9zdGFydFRpbWUoc3RhcnRUaW1l
KQorICAgICwgbV93YWl0aW5nRm9yRmlyc3RUaWNrKGZhbHNlKQorICAgICwgbV9jdXJ2ZShjdXJ2
ZSkKKyAgICAsIG1fdGFyZ2V0KHRhcmdldCkKK3sKK30KKwogYm9vbCBBY3RpdmVQbGF0Zm9ybUdl
c3R1cmVBbmltYXRpb246OmFuaW1hdGUoZG91YmxlIHRpbWUpCiB7CiAgICAgaWYgKG1fd2FpdGlu
Z0ZvckZpcnN0VGljaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0
aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9B
Y3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uaAppbmRleCA5ZDU2M2U0ODM2NjZkZDJhZGEx
YjViMDVlODk4NGRmMTViYWM3MDI0Li4yMWYxOTljMDdhMWZjZjM0YzU4YzEyNDlmMmI4NGU0YzU3
MTFiY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9y
bUdlc3R1cmVBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQ
bGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uaApAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBBY3RpdmVQ
bGF0Zm9ybUdlc3R1cmVBbmltYXRpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjdGl2
ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uPiBjcmVhdGUoUGFzc093blB0cjxQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZT4sIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0Kik7CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uPiBjcmVhdGUoUGFz
c093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4sIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0
KiwgZG91YmxlIHN0YXJ0VGltZSk7CiAgICAgfkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlv
bigpOwogCiAgICAgYm9vbCBhbmltYXRlKGRvdWJsZSB0aW1lKTsKQEAgLTUwLDYgKzUxLDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICAvLyBBc3N1bWVzIGEgdmFsaWQgUGxhdGZvcm1HZXN0dXJl
Q3VydmVUYXJnZXQgdGhhdCBvdXRsaXZlcyB0aGUgYW5pbWF0aW9uLgogICAgIEFjdGl2ZVBsYXRm
b3JtR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiwgUGxh
dGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqKTsKKyAgICBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmlt
YXRpb24oUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4sIFBsYXRmb3JtR2VzdHVyZUN1
cnZlVGFyZ2V0KiwgZG91YmxlIHN0YXJ0VGltZSk7CiAKICAgICBkb3VibGUgbV9zdGFydFRpbWU7
CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JGaXJzdFRpY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNw
cAppbmRleCA2NmY3YWIwMWYxMDdiOGVkM2ViNzVjYzMzNDkxNDE4Zjg4YWY5YzdhLi43MTg3NzBk
MTNjNDUwOGYxNjBkNTE0YmQ5YjllMTFkODRhMmYyMWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZS5jcHAKQEAgLTMzLDE5ICszMywyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKLVBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRvdWNocGFk
RmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9j
aXR5KQorUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hwYWRGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIEludFBv
aW50IGN1bXVsYXRpdmVTY3JvbGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZSh2ZWxvY2l0eSwgMywg
RmxvYXRQb2ludCgwLjMzMzMsIDAuNjY2NiksIEZsb2F0UG9pbnQoMC42NjY2LCAxKSk7CisgICAg
cmV0dXJuIGNyZWF0ZSh2ZWxvY2l0eSwgMywgRmxvYXRQb2ludCgwLjMzMzMsIDAuNjY2NiksIEZs
b2F0UG9pbnQoMC42NjY2LCAxKSwgY3VtdWxhdGl2ZVNjcm9sbCk7CiB9CiAKLVBhc3NPd25QdHI8
UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6
Y3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBmbG9hdCB1bml0VGltZVNj
YWxlTG9nMTAsIGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAxLCBjb25zdCBGbG9hdFBvaW50JiBi
ZXppZXJQMikKK1Bhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRvdWNocGFkRmxpbmdQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBj
b25zdCBmbG9hdCB1bml0VGltZVNjYWxlTG9nMTAsIGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAx
LCBjb25zdCBGbG9hdFBvaW50JiBiZXppZXJQMiwgSW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCkK
IHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZSh2ZWxvY2l0eSwgdW5pdFRpbWVTY2FsZUxvZzEwLCBiZXppZXJQMSwgYmV6aWVyUDIpKTsK
KyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZSh2ZWxvY2l0eSwgdW5pdFRpbWVTY2FsZUxvZzEwLCBiZXppZXJQMSwgYmV6aWVyUDIsIGN1bXVs
YXRpdmVTY3JvbGwpKTsKIH0KIAotVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpU
b3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2Np
dHksIGNvbnN0IGZsb2F0IHVuaXRUaW1lU2NhbGVMb2cxMCwgY29uc3QgRmxvYXRQb2ludCYgYmV6
aWVyUDEsIGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAyKQorVG91Y2hwYWRGbGluZ1BsYXRmb3Jt
R2VzdHVyZUN1cnZlOjpUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxv
YXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IGZsb2F0IHVuaXRUaW1lU2NhbGVMb2cxMCwgY29uc3Qg
RmxvYXRQb2ludCYgYmV6aWVyUDEsIGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAyLCBjb25zdCBJ
bnRQb2ludCYgY3VtdWxhdGl2ZVNjcm9sbCkKICAgICA6IG1fdmVsb2NpdHkodmVsb2NpdHkpCiAg
ICAgLCBtX3RpbWVTY2FsZUZhY3Rvcih1bml0VGltZVNjYWxlTG9nMTAgLyBsb2cxMChtYXgoMTAu
ZiwgbWF4KGZhYnModmVsb2NpdHkueCgpKSwgZmFicyh2ZWxvY2l0eS55KCkpKSkpKQorICAgICwg
bV9jdW11bGF0aXZlU2Nyb2xsKGN1bXVsYXRpdmVTY3JvbGwpCiAgICAgLCBtX2ZsaW5nQmV6aWVy
KGJlemllclAxLngoKSwgYmV6aWVyUDEueSgpLCBiZXppZXJQMi54KCksIGJlemllclAyLnkoKSkK
IHsKICAgICBBU1NFUlQodmVsb2NpdHkgIT0gRmxvYXRQb2ludDo6emVybygpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlLmgKaW5kZXggNmJmYTA0ZTkxMWY2OWYzMzQ2Y2U4NmVkNjg2ZWQ4NDlmODQyZWFi
OS4uNGI3ZTQ2NmY0MjE3ZWM1YWJiZjg2YWMyNzgyYmRjYzc3Y2Q4NmRkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlLmgKQEAgLTQxLDE1ICs0MSwxNSBAQCBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZVRhcmdldDsKIC8vIHRoZSBpbml0aWFsIHZlbG9jaXR5LgogY2xhc3MgVG91Y2hwYWRGbGluZ1Bs
YXRmb3JtR2VzdHVyZUN1cnZlIDogcHVibGljIFBsYXRmb3JtR2VzdHVyZUN1cnZlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRlKGNv
bnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5KTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBjb25zdCBm
bG9hdCB1bml0VGltZVNjYWxlTG9nMTAsIGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAxLCBjb25z
dCBGbG9hdFBvaW50JiBiZXppZXJQMik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1H
ZXN0dXJlQ3VydmU+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgSW50UG9pbnQg
Y3VtdWxhdGl2ZVNjcm9sbCA9IEludFBvaW50KCkpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFBs
YXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGNv
bnN0IGZsb2F0IHVuaXRUaW1lU2NhbGVMb2cxMCwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDEs
IGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAyLCBJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsID0g
SW50UG9pbnQoKSk7CiAgICAgdmlydHVhbCB+VG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlKCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGRlYnVnTmFtZSgpIGNvbnN0IHsgcmV0
dXJuICJUb3VjaHBhZEZsaW5nIjsgfQogICAgIHZpcnR1YWwgYm9vbCBhcHBseShkb3VibGUgbW9u
b3RvbmljVGltZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqKTsKIAogcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQ
b2ludCYgdmVsb2NpdHksIGNvbnN0IGZsb2F0IHVuaXRUaW1lU2NhbGVMb2cxMCwgY29uc3QgRmxv
YXRQb2ludCYgYmV6aWVyUDEsIGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAyKTsKKyAgICBUb3Vj
aHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHks
IGNvbnN0IGZsb2F0IHVuaXRUaW1lU2NhbGVMb2cxMCwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVy
UDEsIGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAyLCBjb25zdCBJbnRQb2ludCYgY3VtdWxhdGl2
ZVNjcm9sbCk7CiAKICAgICBGbG9hdFBvaW50IG1fdmVsb2NpdHk7CiAgICAgZmxvYXQgbV90aW1l
U2NhbGVGYWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjI3N2Q1
ZmQ0YzY3ZGYxYTI0MWZhNmFhMmNiMjVjYTQ5NjRhYjRjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMu
aApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBY3RpdmVXaGVlbEZsaW5nUGFy
YW1ldGVyc19oCisjZGVmaW5lIFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzX2gKKworI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmxv
YXRQb2ludC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBvaW50LmgiCisjaW5jbHVkZSAicGxh
dGZvcm0vV2ViU2l6ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYkFjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzIHsKKyAgICBXZWJGbG9hdFBvaW50IGRlbHRhOworICAgIFdl
YlBvaW50IHBvaW50OworICAgIFdlYlBvaW50IGdsb2JhbFBvaW50OworICAgIGludCBtb2RpZmll
cnM7CisgICAgV2ViU2l6ZSBjdW11bGF0aXZlU2Nyb2xsOworICAgIGRvdWJsZSBzdGFydFRpbWU7
CisKKyAgICBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycygpCisgICAgICAgIDogbW9kaWZp
ZXJzKDApCisgICAgICAgICwgc3RhcnRUaW1lKDApCisgICAgeworICAgIH0KK307CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50LmgKaW5kZXggZThiYjU1NTk4MzRkZDE4
M2EyNTg0OTg1MTdlMjJlNjA1YTQ2ZmUwMS4uN2M5MTFkOGY4ZWMwMzAxZDZlMWVhYTUyNjQ3Mjg3
NWMyNGQ4OWIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQuaApAQCAtMjgsNiArMjgs
OCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RydWN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQ
YXJhbWV0ZXJzOworCiBjbGFzcyBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50IHsKIHB1
YmxpYzoKICAgICAvLyBDYWxsYmFja3MgaW52b2tlZCBmcm9tIHRoZSBjb21wb3NpdG9yIHRocmVh
ZC4KQEAgLTQyLDYgKzQ0LDEwIEBAIHB1YmxpYzoKICAgICAvLyBzaG91bGQgYmUgZm9yd2FyZGVk
IHRvIHRoZSBXZWJXaWRnZXQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcG9zaXRvciBmb3IgZnVy
dGhlciBwcm9jZXNzaW5nLgogICAgIHZpcnR1YWwgdm9pZCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50
KGJvb2wgc2VuZFRvV2lkZ2V0KSA9IDA7CiAKKyAgICAvLyBUcmFuc2ZlcnMgYW4gYWN0aXZlIHdo
ZWVsIGZsaW5nIGFuaW1hdGlvbiBpbml0aWF0ZWQgYnkgYSBwcmV2aW91c2x5IGhhbmRsZWQgaW5w
dXQgZXZlbnQgb3V0IHRvIHRoZSBjbGllbnQuCisgICAgLy8gRklYTUU6IE1ha2UgcHVyZSB2aXJ0
dWFsIG9uY2UgaW1wbGVtZW50YXRpb24gbGFuZHMgb24gQ2hyb21pdW0gc2lkZS4KKyAgICB2aXJ0
dWFsIHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikgeyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5X
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVmlldy5oCmluZGV4IDNjOGFlNDQ4NGRhMjUzYTgzNDVkMWQ2ZjUyYjEy
MWM5NDY1NGYxMzMuLjRkOTk1ZTBmZmI1MzY2ZWI1ZjU2ZDE1YWU5YjdmNjdkYzk5Yjc1MTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTU0LDYgKzU0LDcgQEAg
Y2xhc3MgV2ViU2V0dGluZ3M7CiBjbGFzcyBXZWJTcGVsbENoZWNrQ2xpZW50OwogY2xhc3MgV2Vi
U3RyaW5nOwogY2xhc3MgV2ViVmlld0NsaWVudDsKK3N0cnVjdCBXZWJBY3RpdmVXaGVlbEZsaW5n
UGFyYW1ldGVyczsKIHN0cnVjdCBXZWJNZWRpYVBsYXllckFjdGlvbjsKIHN0cnVjdCBXZWJQbHVn
aW5BY3Rpb247CiBzdHJ1Y3QgV2ViUG9pbnQ7CkBAIC00MjgsNiArNDI5LDEwIEBAIHB1YmxpYzoK
ICAgICAvLyBDYW4gYmUgdXNlZCBmb3IgYWxsb2NhdGluZyByZXNvdXJjZXMgdGhhdCB0aGUgY29t
cG9zaXRvciB3aWxsIGxhdGVyIGFjY2Vzcy4KICAgICB2aXJ0dWFsIFdlYkdyYXBoaWNzQ29udGV4
dDNEKiBzaGFyZWRHcmFwaGljc0NvbnRleHQzRCgpID0gMDsKIAorICAgIC8vIENhbGxlZCB0byBp
bmZvcm0gdGhlIFdlYlZpZXcgdGhhdCBhIHdoZWVsIGZsaW5nIGFuaW1hdGlvbiB3YXMgc3RhcnRl
ZCBleHRlcm5hbGx5IChmb3IgaW5zdGFuY2UKKyAgICAvLyBieSB0aGUgY29tcG9zaXRvcikgYnV0
IG11c3QgYmUgY29tcGxldGVkIGJ5IHRoZSBXZWJWaWV3LgorICAgIHZpcnR1YWwgdm9pZCB0cmFu
c2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1Bh
cmFtZXRlcnMmKSA9IDA7CisKICAgICAvLyBWaXNpYmlsaXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICAvLyBTZXRzIHRo
ZSB2aXNpYmlsaXR5IG9mIHRoZSBXZWJWaWV3LgpAQCAtNDUyLDcgKzQ1Nyw2IEBAIHB1YmxpYzoK
ICAgICAvLyBTaW11bGF0ZXMgYSBjb21wb3NpdG9yIGxvc3QgY29udGV4dC4KICAgICB2aXJ0dWFs
IHZvaWQgbG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1lcykgPSAwOwogCi0KIHByb3Rl
Y3RlZDoKICAgICB+V2ViVmlldygpIHt9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCmluZGV4
IDNjOGRiOWMyYjk5OGM1YmZiMWQzNThiYTk3YWZlODgwNTcyNDQzNTEuLjc1ODg0ZGZhOTUzZWU3
ZWNiY2YzNTJiYWVlYjA4YTFjOGM2MjI0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKQEAg
LTI2Niw5ICsyNjYsMTIgQEAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlz
cG9zaXRpb24gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmgKICAgICBzd2l0Y2ggKHNj
cm9sbFN0YXR1cykgewogICAgIGNhc2UgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0
ZWQ6IHsKICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoImNjIiwgIldlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxpbmc6OnN0YXJ0ZWQiKTsKLSAgICAgICAg
T3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBmbGluZ0N1cnZlID0gVG91Y2hwYWRGbGluZ1Bs
YXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoRmxvYXRQb2ludCgtZ2VzdHVyZUV2ZW50LmRlbHRh
WCwgLWdlc3R1cmVFdmVudC5kZWx0YVkpKTsKKyAgICAgICAgT3duUHRyPFBsYXRmb3JtR2VzdHVy
ZUN1cnZlPiBmbGluZ0N1cnZlID0gVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpj
cmVhdGUoRmxvYXRQb2ludChnZXN0dXJlRXZlbnQuZGVsdGFYLCBnZXN0dXJlRXZlbnQuZGVsdGFZ
KSk7CiAgICAgICAgIG1fd2hlZWxGbGluZ0FuaW1hdGlvbiA9IENDQWN0aXZlR2VzdHVyZUFuaW1h
dGlvbjo6Y3JlYXRlKFBsYXRmb3JtR2VzdHVyZVRvQ0NHZXN0dXJlQWRhcHRlcjo6Y3JlYXRlKGZs
aW5nQ3VydmUucmVsZWFzZSgpKSwgdGhpcyk7Ci0gICAgICAgIG1fd2hlZWxGbGluZ1BvaW50ID0g
SW50UG9pbnQoZ2VzdHVyZUV2ZW50LngsIGdlc3R1cmVFdmVudC55KTsKKyAgICAgICAgbV93aGVl
bEZsaW5nUGFyYW1ldGVycy5kZWx0YSA9IFdlYkZsb2F0UG9pbnQoZ2VzdHVyZUV2ZW50LmRlbHRh
WCwgZ2VzdHVyZUV2ZW50LmRlbHRhWSk7CisgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMu
cG9pbnQgPSBXZWJQb2ludChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpOworICAgICAg
ICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmdsb2JhbFBvaW50ID0gV2ViUG9pbnQoZ2VzdHVyZUV2
ZW50Lmdsb2JhbFgsIGdlc3R1cmVFdmVudC5nbG9iYWxZKTsKKyAgICAgICAgbV93aGVlbEZsaW5n
UGFyYW1ldGVycy5tb2RpZmllcnMgPSBnZXN0dXJlRXZlbnQubW9kaWZpZXJzOwogICAgICAgICBt
X2lucHV0SGFuZGxlckNsaWVudC0+c2NoZWR1bGVBbmltYXRpb24oKTsKICAgICAgICAgcmV0dXJu
IERpZEhhbmRsZTsKICAgICB9CkBAIC0yOTcsMTEgKzMwMCwxNCBAQCB2b2lkIFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsOjphbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lKQogICAgIGlm
ICghbV93aGVlbEZsaW5nQW5pbWF0aW9uKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoIW1f
d2hlZWxGbGluZ1BhcmFtZXRlcnMuc3RhcnRUaW1lKQorICAgICAgICBtX3doZWVsRmxpbmdQYXJh
bWV0ZXJzLnN0YXJ0VGltZSA9IG1vbm90b25pY1RpbWU7CisKICAgICBpZiAobV93aGVlbEZsaW5n
QW5pbWF0aW9uLT5hbmltYXRlKG1vbm90b25pY1RpbWUpKQogICAgICAgICBtX2lucHV0SGFuZGxl
ckNsaWVudC0+c2NoZWR1bGVBbmltYXRpb24oKTsKICAgICBlbHNlIHsKICAgICAgICAgVFJBQ0Vf
RVZFTlRfSU5TVEFOVDAoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjphbmlt
YXRlOjpmbGluZ092ZXIiKTsKLSAgICAgICAgbV93aGVlbEZsaW5nQW5pbWF0aW9uLmNsZWFyKCk7
CisgICAgICAgIGNhbmNlbEN1cnJlbnRGbGluZygpOwogICAgIH0KIH0KIApAQCAtMzEwLDYgKzMx
Niw3IEBAIGJvb2wgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmNhbmNlbEN1cnJlbnRG
bGluZygpCiAgICAgYm9vbCBoYWRGbGluZ0FuaW1hdGlvbiA9IG1fd2hlZWxGbGluZ0FuaW1hdGlv
bjsKICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMSgiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGw6OmNhbmNlbEN1cnJlbnRGbGluZyIsICJoYWRGbGluZ0FuaW1hdGlvbiIsIGhhZEZs
aW5nQW5pbWF0aW9uKTsKICAgICBtX3doZWVsRmxpbmdBbmltYXRpb24uY2xlYXIoKTsKKyAgICBt
X3doZWVsRmxpbmdQYXJhbWV0ZXJzID0gV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMoKTsK
ICAgICByZXR1cm4gaGFkRmxpbmdBbmltYXRpb247CiB9CiAKQEAgLTMxOSwzMCArMzI2LDM1IEBA
IHZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5KGNvbnN0IEludFBv
aW50JiBpbmNyZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRSQUNFX0VWRU5UMigiY2Mi
LCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5IiwgIngiLCBpbmNyZW1l
bnQueCgpLCAieSIsIGluY3JlbWVudC55KCkpOwotCi0gICAgV2ViTW91c2VXaGVlbEV2ZW50IGV2
ZW50OwotICAgIGV2ZW50LnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsOwotICAgIGV2
ZW50LmRlbHRhWCA9IC1pbmNyZW1lbnQueCgpOwotICAgIGV2ZW50LmRlbHRhWSA9IC1pbmNyZW1l
bnQueSgpOwotICAgIGV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB0cnVlOwotICAg
IGV2ZW50LnggPSBtX3doZWVsRmxpbmdQb2ludC54KCk7Ci0gICAgZXZlbnQueSA9IG1fd2hlZWxG
bGluZ1BvaW50LnkoKTsKLQotICAgIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVu
dERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uID0gaGFuZGxlSW5wdXRFdmVudEludGVybmFsKGV2ZW50
KTsKKyAgICBXZWJNb3VzZVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWw7CisgICAgc3ludGhldGlj
V2hlZWwudHlwZSA9IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWw7CisgICAgc3ludGhldGljV2hl
ZWwuZGVsdGFYID0gaW5jcmVtZW50LngoKTsKKyAgICBzeW50aGV0aWNXaGVlbC5kZWx0YVkgPSBp
bmNyZW1lbnQueSgpOworICAgIHN5bnRoZXRpY1doZWVsLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0
YXMgPSB0cnVlOworICAgIHN5bnRoZXRpY1doZWVsLnggPSBtX3doZWVsRmxpbmdQYXJhbWV0ZXJz
LnBvaW50Lng7CisgICAgc3ludGhldGljV2hlZWwueSA9IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMu
cG9pbnQueTsKKyAgICBzeW50aGV0aWNXaGVlbC5nbG9iYWxYID0gbV93aGVlbEZsaW5nUGFyYW1l
dGVycy5nbG9iYWxQb2ludC54OworICAgIHN5bnRoZXRpY1doZWVsLmdsb2JhbFkgPSBtX3doZWVs
RmxpbmdQYXJhbWV0ZXJzLmdsb2JhbFBvaW50Lnk7CisgICAgc3ludGhldGljV2hlZWwubW9kaWZp
ZXJzID0gbV93aGVlbEZsaW5nUGFyYW1ldGVycy5tb2RpZmllcnM7CisKKyAgICBXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiA9IGhhbmRs
ZUlucHV0RXZlbnRJbnRlcm5hbChzeW50aGV0aWNXaGVlbCk7CiAgICAgc3dpdGNoIChkaXNwb3Np
dGlvbikgewogICAgIGNhc2UgRGlkSGFuZGxlOgorICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0
ZXJzLmN1bXVsYXRpdmVTY3JvbGwud2lkdGggKz0gaW5jcmVtZW50LngoKTsKKyAgICAgICAgbV93
aGVlbEZsaW5nUGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsLmhlaWdodCArPSBpbmNyZW1lbnQu
eSgpOwogICAgIGNhc2UgRHJvcEV2ZW50OgogICAgICAgICBicmVhazsKICAgICBjYXNlIERpZE5v
dEhhbmRsZToKICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoImNjIiwgIldlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeTo6QWJvcnRGbGluZyIpOwotICAgICAgICAvLyBG
SVhNRTogSWYgd2UgZ290IGEgRGlkTm90SGFuZGxlLCB0aGF0IG1lYW5zIHdlIG5lZWQgdG8gZGVs
aXZlciB3aGVlbHMgb24gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAvLyBJZiB3ZSBnb3QgYSBE
aWROb3RIYW5kbGUsIHRoYXQgbWVhbnMgd2UgbmVlZCB0byBkZWxpdmVyIHdoZWVscyBvbiB0aGUg
bWFpbiB0aHJlYWQuCiAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBuZWVkIHRvIHNjaGVkdWxl
IGEgY29tbWl0IGFuZCB0cmFuc2ZlciB0aGUgZmxpbmcgY3VydmUgb3ZlciB0byB0aGUgbWFpbgog
ICAgICAgICAvLyB0aHJlYWQgYW5kIHJ1biB0aGUgcmVzdCBvZiB0aGUgd2hlZWxzIGZyb20gdGhl
cmUuCiAgICAgICAgIC8vIFRoaXMgY2FuIGhhcHBlbiB3aGVuIGZsaW5naW5nIGEgcGFnZSB0aGF0
IGNvbnRhaW5zIGEgc2Nyb2xsYWJsZSBzdWJhcmVhIHRoYXQgd2UgY2FuJ3QKICAgICAgICAgLy8g
c2Nyb2xsIG9uIHRoZSB0aHJlYWQgaWYgdGhlIGZsaW5nIHN0YXJ0cyBvdXRzaWRlIHRoZSBzdWJh
cmVhIGJ1dCB0aGVuIGlzIGZsdW5nICJ1bmRlciIgdGhlCiAgICAgICAgIC8vIHBvaW50ZXIuCi0g
ICAgICAgIC8vIEZvciBub3csIGp1c3QgYWJvcnQgdGhlIGZsaW5nLgorICAgICAgICBtX2NsaWVu
dC0+dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKG1fd2hlZWxGbGluZ1BhcmFtZXRl
cnMpOwogICAgICAgICBjYW5jZWxDdXJyZW50RmxpbmcoKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGwuaAppbmRleCBjOWZmNWUzNTExOTE1NGI3YWFkOGZkMmRh
NGFlNmUzZDQ4NzUwZjY0Li42NDY0NzEwNWIwM2M3MmRkYzc2Yjk4ZmU5OThlMjhiY2U3ZjI3ZDM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGxfaAogI2RlZmluZSBXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbF9oCiAKLSNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIldlYkFjdGl2ZVdo
ZWVsRmxpbmdQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRvci5oIgogI2luY2x1
ZGUgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50
LmgiCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIE11dGV4OwogfQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBJbnRQb2ludDsKIGNsYXNzIENDR2VzdHVyZUN1cnZlVGFyZ2V0OwogY2xhc3Mg
Q0NJbnB1dEhhbmRsZXJDbGllbnQ7CiBjbGFzcyBDQ1RocmVhZDsKQEAgLTgzLDcgKzg0LDggQEAg
cHJpdmF0ZToKICAgICBib29sIGNhbmNlbEN1cnJlbnRGbGluZygpOwogCiAgICAgT3duUHRyPFdl
YkNvcmU6OkNDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbj4gbV93aGVlbEZsaW5nQW5pbWF0aW9uOwot
ICAgIFdlYkNvcmU6OkludFBvaW50IG1fd2hlZWxGbGluZ1BvaW50OyAvLyBQb2ludGVyIHBvc2l0
aW9uIGZvciB0aGUgY3VycmVudCBmbGluZy4KKyAgICAvLyBQYXJhbWV0ZXJzIGZvciB0aGUgYWN0
aXZlIGZsaW5nIGFuaW1hdGlvbiwgc3RvcmVkIGluIGNhc2Ugd2UgbmVlZCB0byB0cmFuc2ZlciBp
dCBvdXQgbGF0ZXIuCisgICAgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMgbV93aGVlbEZs
aW5nUGFyYW1ldGVyczsKIAogICAgIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQqIG1f
Y2xpZW50OwogICAgIGludCBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNzI5MGE1MGRmNzM5NDk5N2FlYjcwZjNlN2Y2NTkxYmNh
ZWRhNzRjZC4uNWYzNzYxODVlOTJmNDk4ZDUyOTI0YWUwODk5ZjMzNmEwMGU0OWU4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzEsMTEgKzMxLDEw
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKIAorI2lu
Y2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb24uaCIKICNpbmNsdWRlICJBdXRvZmlsbFBvcHVwTWVudUNsaWVudC5oIgotI2luY2x1
ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RDaHJvbWl1bS5o
IgotI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgi
CiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgpAQCAt
MTE1LDM2ICsxMTQsMzkgQEAKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCiAjaW5jbHVkZSAi
VXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
LmgiCisjaW5jbHVkZSAiV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCIKICNpbmNsdWRl
ICJXZWJBdXRvZmlsbENsaWVudC5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JJbXBsLmgiCiAj
aW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudEltcGwuaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0Fn
ZW50UHJpdmF0ZS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkRyYWdEYXRhLmgiCiAjaW5jbHVk
ZSAiV2ViRnJhbWVJbXBsLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViR3JhcGhpY3NDb250ZXh0
M0QuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYklucHV0
RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKICNpbmNsdWRlICJXZWJJbnB1
dEV2ZW50Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIldlYktpdC5oIgotI2luY2x1ZGUgInBsYXRm
b3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVy
LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmlldy5oIgogI2luY2x1ZGUgIldl
Yk1lZGlhUGxheWVyQWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5oIgogI2luY2x1ZGUgIldl
YlBsdWdpbi5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkFjdGlvbi5oIgogI2luY2x1ZGUgIldlYlBs
dWdpbkNvbnRhaW5lckltcGwuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQb2ludC5oIgogI2lu
Y2x1ZGUgIldlYlBvcHVwTWVudUltcGwuaCIKICNpbmNsdWRlICJXZWJSYW5nZS5oIgotI2luY2x1
ZGUgInBsYXRmb3JtL1dlYlJlY3QuaCIKICNpbmNsdWRlICJXZWJSdW50aW1lRmVhdHVyZXMuaCIK
ICNpbmNsdWRlICJXZWJTZXR0aW5nc0ltcGwuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJp
bmcuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKICNpbmNsdWRlICJXZWJWaWV3
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgImNjL0NDUHJveHku
aCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJEcmFnRGF0YS5oIgorI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkltYWdlLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmgi
CisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
VmVjdG9yLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KKyNpbmNsdWRlIDxw
dWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXIu
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oPgorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJQb2ludC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+CiAjaW5jbHVkZSA8d3Rm
L0J5dGVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CkBAIC02NzcsNiArNjc5LDE4IEBAIGJvb2wgV2ViVmlld0ltcGw6Omdl
c3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0
aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorewor
ICAgIFRSQUNFX0VWRU5UMCgid2Via2l0IiwgIldlYlZpZXdJbXBsOjp0cmFuc2ZlckFjdGl2ZVdo
ZWVsRmxpbmdBbmltYXRpb24iKTsKKyAgICBBU1NFUlQoIW1fZ2VzdHVyZUFuaW1hdGlvbik7Cisg
ICAgbV9sYXN0V2hlZWxQb3NpdGlvbiA9IHBhcmFtZXRlcnMucG9pbnQ7CisgICAgbV9sYXN0V2hl
ZWxHbG9iYWxQb3NpdGlvbiA9IHBhcmFtZXRlcnMuZ2xvYmFsUG9pbnQ7CisgICAgbV9mbGluZ01v
ZGlmaWVyID0gcGFyYW1ldGVycy5tb2RpZmllcnM7CisgICAgT3duUHRyPFBsYXRmb3JtR2VzdHVy
ZUN1cnZlPiBjdXJ2ZSA9IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRl
KHBhcmFtZXRlcnMuZGVsdGEsIEludFBvaW50KHBhcmFtZXRlcnMuY3VtdWxhdGl2ZVNjcm9sbCkp
OworICAgIG1fZ2VzdHVyZUFuaW1hdGlvbiA9IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlv
bjo6Y3JlYXRlKGN1cnZlLnJlbGVhc2UoKSwgdGhpcywgcGFyYW1ldGVycy5zdGFydFRpbWUpOwor
ICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnN0YXJ0UGFn
ZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGwsIGJvb2wgdXNlQW5jaG9yLCBm
bG9hdCBuZXdTY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKQogewogICAgIGlmICghbV9sYXllclRy
ZWVWaWV3LmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
aW5kZXggOGFkMTg1YThiOTJmZjMwNzYyNDZlNmNiMDk1NmMyYjI3MmZlNWYwOC4uZmQ3YjRmYmEy
ZTI5YTA5MWE5ZWZlYWFkNmNjMzE3MDFkM2I2N2JkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0yNTIsNiArMjUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24odW5zaWduZWQgYWN0aW9uKTsK
ICAgICB2aXJ0dWFsIHZvaWQgYWRkUGFnZU92ZXJsYXkoV2ViUGFnZU92ZXJsYXkqLCBpbnQgLyog
ek9yZGVyICovKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUGFnZU92ZXJsYXkoV2ViUGFnZU92
ZXJsYXkqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0
aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJik7CiAKICAgICAvLyBXZWJM
YXllclRyZWVWaWV3Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZyYW1lKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAKaW5kZXggZmE4MjQ3YjExMGMwN2ViMTU3
ZmQ1NDQ5MDI2NDllMWRiNTBmMGQwNi4uOTJmMDA2MTg0MTQ3OTU2ZTEwMTlmYzY5MDE1ZjYzOWU0
ODk0ZjMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcApAQCAtMzMsMTMg
KzMzLDE0IEBACiAjaW5jbHVkZSAiY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgiCiAjaW5j
bHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgInBs
YXRmb3JtL1dlYlBvaW50LmgiCiAKICNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgogI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCi11c2luZyBXZWJLaXQ6
OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXI7Ci11c2luZyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIHsK
IApAQCAtNzMsMTEgKzc0LDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2
ZUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0cjxXZWJDb3JlOjpDQ0FjdGl2ZUdlc3R1cmVBbmlt
YXRpb24+KSBPVkVSUklERSB7IH0KIH07CiAKLWNsYXNzIE1vY2tXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVyQ2xpZW50IDogcHVibGljIFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNs
aWVudCB7CitjbGFzcyBNb2NrV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudCA6IHB1Ymxp
YyBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShNb2NrV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudCk7CiBwdWJsaWM6CiAgICAg
TW9ja1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQoKQotICAgICAgICA6IFdlYktpdDo6
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudCgpCisgICAgICAgIDogV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckNsaWVudCgpCiAgICAgewogICAgIH0KICAgICB2aXJ0dWFsIH5Nb2NrV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudCgpIHsgfQpAQCAtODUsMTEgKzg2LDE0IEBAIHB1
YmxpYzoKICAgICBNT0NLX01FVEhPRDAod2lsbFNodXRkb3duLCB2b2lkKCkpOwogICAgIE1PQ0tf
TUVUSE9EMChkaWRIYW5kbGVJbnB1dEV2ZW50LCB2b2lkKCkpOwogICAgIE1PQ0tfTUVUSE9EMShk
aWROb3RIYW5kbGVJbnB1dEV2ZW50LCB2b2lkKGJvb2wgc2VuZFRvV2lkZ2V0KSk7CisKKyAgICBN
T0NLX01FVEhPRDEodHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uLCB2b2lkKGNvbnN0
IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikpOworCiB9OwogCiBURVNUKFdlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsLCBmcm9tSWRlbnRpZmllcikKIHsKLSAgICBXZWJLaXQ6Oldl
YkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7CisgICAgV2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6
ZSgwKTsKICAgICBXZWJDb3JlOjpEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgYWx3YXlzSW1wbFRo
cmVhZDsKIAogICAgIC8vIEJlZm9yZSBjcmVhdGluZyBhbnkgV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlcnMsIGxvb2t1cHMgZm9yIGFueSB2YWx1ZSBzaG91bGQgZmFpbCBhbmQgbm90IGNyYXNoLgpA
QCAtMTEwLDcgKzExNCw3IEBAIFRFU1QoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwsIGZy
b21JZGVudGlmaWVyKQogCiAgICAgLy8gQWZ0ZXIgdGhlIGNvbXBvc2l0b3IgaXMgZGVzdHJveWVk
LCBpdHMgZW50cnkgc2hvdWxkIGJlIHJlbW92ZWQgZnJvbSB0aGUgbWFwLgogICAgIEVYUEVDVF9F
USgwLCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyOjpmcm9tSWRlbnRpZmllcihjb21wb3NpdG9y
SWRlbnRpZmllcikpOwotICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKKyAg
ICBXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogfQogCiBjbGFzcyBXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CkBAIC0xMTgsNyArMTIy
LDcgQEAgcHVibGljOgogICAgIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCgpCiAg
ICAgICAgIDogbV9leHBlY3RlZERpc3Bvc2l0aW9uKERpZEhhbmRsZSkKICAgICB7Ci0gICAgICAg
IFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKKyAgICAgICAgV2ViQ29tcG9z
aXRvcjo6aW5pdGlhbGl6ZSgwKTsKICAgICAgICAgbV9pbnB1dEhhbmRsZXIgPSBXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbDo6Y3JlYXRlKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7
CiAgICAgICAgIG1faW5wdXRIYW5kbGVyLT5zZXRDbGllbnQoJm1fbW9ja0NsaWVudCk7CiAgICAg
fQpAQCAtMTI3LDM5ICsxMzEsNDEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9pbnB1dEhh
bmRsZXItPnNldENsaWVudCgwKTsKICAgICAgICAgbV9pbnB1dEhhbmRsZXIuY2xlYXIoKTsKLSAg
ICAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOworICAgICAgICBXZWJDb21w
b3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0KIAotICAgIHZvaWQgdmVyaWZ5QW5kUmVzZXRNb2Nr
cygpCi0gICAgewotICAgICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0
aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOwotICAgICAgICB0ZXN0aW5nOjpNb2Nr
OjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ2xpZW50KTsKLSAgICAgICAgc3dp
dGNoIChtX2V4cGVjdGVkRGlzcG9zaXRpb24pIHsKLSAgICAgICAgY2FzZSBEaWRIYW5kbGU6Ci0g
ICAgICAgICAgICAvLyBJZiB3ZSBleHBlY3QgdG8gaGFuZGxlIGV2ZW50cywgd2Ugc2hvdWxkbid0
IGdldCBhbnkgZGlkTm90SGFuZGxlSW5wdXRFdmVudCgpIGNhbGxzIHdpdGggYW55IHBhcmFtZXRl
ci4KLSAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5w
dXRFdmVudCg6OnRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKLSAgICAgICAgICAgIEVYUEVDVF9DQUxM
KG1fbW9ja0NsaWVudCwgZGlkSGFuZGxlSW5wdXRFdmVudCgpKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIERpZE5vdEhhbmRsZToKLSAgICAgICAgICAgIC8vIElmIHdlIGFyZW4n
dCBleHBlY3RpbmcgdG8gaGFuZGxlIGV2ZW50cywgd2Ugc2hvdWxkbid0IGNhbGwgZGlkSGFuZGxl
SW5wdXRFdmVudCgpLgotICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWRI
YW5kbGVJbnB1dEV2ZW50KCkpLlRpbWVzKDApOwotICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9t
b2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KGZhbHNlKSkuVGltZXMoMCk7Ci0gICAg
ICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQo
dHJ1ZSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRHJvcEV2ZW50OgotICAg
ICAgICAgICAgLy8gSWYgd2UncmUgZXhwZWN0aW5nIHRvIGRyb3AsIHdlIHNob3VsZG4ndCBnZXQg
YW55IGRpZEhhbmRsZS4uKCkgb3IgZGlkTm90SGFuZGxlSW5wdXRFdmVudCh0cnVlIC8qIHNlbmRU
b1dpZGdldCAqLykgY2FsbHMuCi0gICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQs
IGRpZEhhbmRsZUlucHV0RXZlbnQoKSkuVGltZXMoMCk7Ci0gICAgICAgICAgICBFWFBFQ1RfQ0FM
TChtX21vY2tDbGllbnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQodHJ1ZSkpLlRpbWVzKDApOwot
ICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2
ZW50KGZhbHNlKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICAv
LyBUaGlzIGlzIGRlZmluZWQgYXMgYSBtYWNybyBiZWNhdXNlIHdoZW4gYW4gZXhwZWN0YXRpb24g
aXMgbm90IHNhdGlzZmllZCB0aGUgb25seSBvdXRwdXQgeW91IGdldAorICAgIC8vIG91dCBvZiBn
bW9jayBpcyB0aGUgbGluZSBudW1iZXIgdGhhdCBzZXQgdGhlIGV4cGVjdGF0aW9uLgorI2RlZmlu
ZSBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCkgZG8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0
YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRD
bGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ2xpZW50KTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3dpdGNoIChtX2V4cGVj
dGVkRGlzcG9zaXRpb24pIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNhc2Ug
RGlkSGFuZGxlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgLyogSWYgd2UgZXhwZWN0IHRvIGhhbmRsZSBldmVudHMsIHdlIHNob3VsZG4ndCBn
ZXQgYW55IGRpZE5vdEhhbmRsZUlucHV0RXZlbnQoKSBjYWxscyB3aXRoIGFueSBwYXJhbWV0ZXIu
ICovIFwKKyAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxl
SW5wdXRFdmVudCg6OnRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRp
ZEhhbmRsZUlucHV0RXZlbnQoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2FzZSBEaWROb3RI
YW5kbGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICAvKiBJZiB3ZSBhcmVuJ3QgZXhwZWN0aW5nIHRvIGhhbmRsZSBldmVudHMsIHdlIHNob3VsZG4n
dCBjYWxsIGRpZEhhbmRsZUlucHV0RXZlbnQoKS4gKi8gICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWRIYW5kbGVJbnB1dEV2ZW50
KCkpLlRpbWVzKDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFu
ZGxlSW5wdXRFdmVudChmYWxzZSkpLlRpbWVzKDApOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQs
IGRpZE5vdEhhbmRsZUlucHV0RXZlbnQodHJ1ZSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYnJlYWs7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2FzZSBEcm9w
RXZlbnQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICAvKiBJZiB3ZSdyZSBleHBlY3RpbmcgdG8gZHJvcCwgd2Ugc2hvdWxkbid0IGdldCBhbnkg
ZGlkSGFuZGxlLi4oKSBvciBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KHRydWUpIGNhbGxzLiAqLyAg
XAorICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWRIYW5kbGVJbnB1dEV2
ZW50KCkpLlRpbWVzKDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90
SGFuZGxlSW5wdXRFdmVudCh0cnVlKSkuVGltZXMoMCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGll
bnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQoZmFsc2UpKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYnJlYWs7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKIAogcHJv
dGVjdGVkOgogICAgIE1vY2tDQ0lucHV0SGFuZGxlckNsaWVudCBtX21vY2tDQ0lucHV0SGFuZGxl
ckNsaWVudDsKICAgICBPd25QdHI8V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw+IG1faW5w
dXRIYW5kbGVyOwogICAgIE1vY2tXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50IG1fbW9j
a0NsaWVudDsKLSAgICBXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCBnZXN0dXJlOworICAgIFdlYkdl
c3R1cmVFdmVudCBnZXN0dXJlOwogCiAgICAgZW51bSBFeHBlY3RlZERpc3Bvc2l0aW9uIHsgRGlk
SGFuZGxlLCBEaWROb3RIYW5kbGUsIERyb3BFdmVudCB9OwogICAgIEV4cGVjdGVkRGlzcG9zaXRp
b24gbV9leHBlY3RlZERpc3Bvc2l0aW9uOwpAQCAtMTczLDI0ICsxNzksMjQgQEAgVEVTVF9GKFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZVNjcm9sbFN0YXJ0ZWQpCiB7
CiAgICAgLy8gV2Ugc2hvdWxkbid0IHNlbmQgYW55IGV2ZW50cyB0byB0aGUgd2lkZ2V0IGZvciB0
aGlzIGdlc3R1cmUuCiAgICAgbV9leHBlY3RlZERpc3Bvc2l0aW9uID0gRGlkSGFuZGxlOwotICAg
IHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAK
ICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4o
dGVzdGluZzo6XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1
cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKIAotICAg
IGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2lu
OworICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjsK
ICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAotICAgIHZl
cmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKLSAg
ICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRh
dGU7CisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0
ZTsKICAgICBnZXN0dXJlLmRlbHRhWSA9IC00MDsgLy8gLVkgbWVhbnMgc2Nyb2xsIGRvd24gLSBp
LmUuIGluIHRoZSArWSBkaXJlY3Rpb24uCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhh
bmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXpl
OjpoZWlnaHQsIHRlc3Rpbmc6Okd0KDApKSkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJ
bnB1dEV2ZW50KGdlc3R1cmUpOwogCi0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZF
UklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAotICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2Vi
SW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOwogICAgIGdlc3R1cmUuZGVsdGFZID0gMDsKICAgICBF
WFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkpOwogICAg
IG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwpAQCAtMjAwLDIzICsy
MDYsMjMgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVy
ZVNjcm9sbEZhaWxlZCkKIHsKICAgICAvLyBXZSBzaG91bGQgc2VuZCBhbGwgZXZlbnRzIHRvIHRo
ZSB3aWRnZXQgZm9yIHRoaXMgZ2VzdHVyZS4KICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBE
aWROb3RIYW5kbGU7Ci0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRf
UkVTRVRfTU9DS1MoKTsKIAogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xp
ZW50LCBzY3JvbGxCZWdpbig6OnRlc3Rpbmc6Ol8sIDo6dGVzdGluZzo6XykpCiAgICAgICAgIC5X
aWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNj
cm9sbEZhaWxlZCkpOwogCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlU2Nyb2xsQmVnaW47CisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6
R2VzdHVyZVNjcm9sbEJlZ2luOwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50
KGdlc3R1cmUpOwogCi0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRf
UkVTRVRfTU9DS1MoKTsKIAotICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVu
dDo6R2VzdHVyZVNjcm9sbFVwZGF0ZTsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOwogICAgIGdlc3R1cmUuZGVsdGFZID0gNDA7CiAgICAgbV9p
bnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2ZXJpZnlBbmRS
ZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCi0gICAgZ2VzdHVy
ZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOworICAgIGdl
c3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7CiAgICAgZ2VzdHVy
ZS5kZWx0YVkgPSAwOwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1
cmUpOwogfQpAQCAtMjI4LDEyICsyMzQsMTIgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsVGVzdCwgZ2VzdHVyZVNjcm9sbElnbm9yZWQpCiAgICAgLy8gaW5kaWNhdGluZyB0
aGF0IHdlIGNvdWxkIGRldGVybWluZSB0aGF0IHRoZXJlJ3Mgbm90aGluZyB0aGF0IGNvdWxkIHNj
cm9sbCBvciBvdGhlcndpc2UKICAgICAvLyByZWFjdCB0byB0aGlzIGdlc3R1cmUgc2VxdWVuY2Ug
YW5kIHRodXMgd2Ugc2hvdWxkIGRyb3AgdGhlIHdob2xlIGdlc3R1cmUgc2VxdWVuY2Ugb24gdGhl
IGZsb29yLgogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERyb3BFdmVudDsKLSAgICB2ZXJp
ZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAg
RVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rp
bmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdl
YkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJZ25vcmVkKSk7CiAKLSAgICBnZXN0
dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjsKKyAg
ICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47CiAgICAg
bV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiB9CiAKQEAgLTI0MSwz
MyArMjQ3LDMzIEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdl
c3R1cmVQaW5jaCkKIHsKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2VuZCBhbnkgZXZlbnRzIHRvIHRo
ZSB3aWRnZXQgZm9yIHRoaXMgZ2VzdHVyZS4KICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBE
aWRIYW5kbGU7Ci0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVT
RVRfTU9DS1MoKTsKIAotICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6
R2VzdHVyZVBpbmNoQmVnaW47CisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZVBpbmNoQmVnaW47CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGll
bnQsIHBpbmNoR2VzdHVyZUJlZ2luKCkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1
dEV2ZW50KGdlc3R1cmUpOwogCi0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklG
WV9BTkRfUkVTRVRfTU9DS1MoKTsKIAotICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5w
dXRFdmVudDo6R2VzdHVyZVBpbmNoVXBkYXRlOworICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZTsKICAgICBnZXN0dXJlLmRlbHRhWCA9IDEuNTsKICAg
ICBnZXN0dXJlLnggPSA3OwogICAgIGdlc3R1cmUueSA9IDEzOwogICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBwaW5jaEdlc3R1cmVVcGRhdGUoMS41LCBXZWJDb3Jl
OjpJbnRQb2ludCg3LCAxMykpKTsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVu
dChnZXN0dXJlKTsKIAotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5E
X1JFU0VUX01PQ0tTKCk7CiAKLSAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZl
bnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZTsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlUGluY2hVcGRhdGU7CiAgICAgZ2VzdHVyZS5kZWx0YVggPSAwLjU7CiAgICAgZ2Vz
dHVyZS54ID0gOTsKICAgICBnZXN0dXJlLnkgPSA2OwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0ND
SW5wdXRIYW5kbGVyQ2xpZW50LCBwaW5jaEdlc3R1cmVVcGRhdGUoLjUsIFdlYkNvcmU6OkludFBv
aW50KDksIDYpKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVy
ZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9N
T0NLUygpOwogCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlUGluY2hFbmQ7CisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBp
bmNoRW5kOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBwaW5j
aEdlc3R1cmVFbmQoKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2Vz
dHVyZSk7CiB9CkBAIC0yNzYsMjAgKzI4MiwyMCBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdTdGFydGVkKQogewogICAgIC8vIFdlIHNob3Vs
ZG4ndCBzZW5kIGFueSBldmVudHMgdG8gdGhlIHdpZGdldCBmb3IgdGhpcyBnZXN0dXJlLgogICAg
IG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZEhhbmRsZTsKLSAgICB2ZXJpZnlBbmRSZXNldE1v
Y2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgRVhQRUNUX0NBTEwo
bV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rp
bmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5w
dXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7CiAKLSAgICBnZXN0dXJlLnR5cGUgPSBX
ZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OworICAgIGdlc3R1cmUudHlw
ZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OwogICAgIGdlc3R1cmUuZGVsdGFY
ID0gMTA7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVk
dWxlQW5pbWF0aW9uKCkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdl
c3R1cmUpOwogCi0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVT
RVRfTU9DS1MoKTsKIAogICAgIC8vIFZlcmlmeSB0aGF0IGEgR2VzdHVyZUZsaW5nQ2FuY2VsIGR1
cmluZyBhbiBhbmltYXRpb24gY2FuY2VscyBpdC4KLSAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6
OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDsKKyAgICBnZXN0dXJlLnR5cGUgPSBX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhh
bmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiB9CiAKQEAgLTI5NywzNiArMzAzLDM2IEBAIFRFU1Rf
RihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ0ZhaWxlZCkK
IHsKICAgICAvLyBXZSBzaG91bGQgc2VuZCBhbGwgZXZlbnRzIHRvIHRoZSB3aWRnZXQgZm9yIHRo
aXMgZ2VzdHVyZS4KICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEaWROb3RIYW5kbGU7Ci0g
ICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsK
IAogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdp
bih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJl
dHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKSk7CiAKLSAg
ICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0
OworICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0Owog
ICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCi0gICAgdmVy
aWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAg
IC8vIEV2ZW4gaWYgd2UgZGlkbid0IHN0YXJ0IGEgZmxpbmcgb3Vyc2VsdmVzLCB3ZSBzdGlsbCBu
ZWVkIHRvIHNlbmQgdGhlIGNhbmNlbCBldmVudCB0byB0aGUgd2lkZ2V0LgotICAgIGdlc3R1cmUu
dHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOworICAgIGdl
c3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDsKICAgICBtX2lu
cHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIH0KIAogVEVTVF9GKFdlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nSWdub3JlZCkKIHsKICAg
ICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEaWROb3RIYW5kbGU7Ci0gICAgdmVyaWZ5QW5kUmVz
ZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIEVYUEVDVF9D
QUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0
ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpD
Q0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsSWdub3JlZCkpOwogCi0gICAgZ2VzdHVyZS50eXBl
ID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKKyAgICBnZXN0dXJl
LnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKICAgICBtX2lucHV0SGFu
ZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAotICAgIHZlcmlmeUFuZFJlc2V0TW9j
a3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICAvLyBFdmVuIGlmIHdl
IGRpZG4ndCBzdGFydCBhIGZsaW5nIG91cnNlbHZlcywgd2Ugc3RpbGwgbmVlZCB0byBzZW5kIHRo
ZSBjYW5jZWwgZXZlbnQgdG8gdGhlIHdpZGdldC4KLSAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6
OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDsKKyAgICBnZXN0dXJlLnR5cGUgPSBX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhh
bmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiB9CiAKQEAgLTMzNCwxMiArMzQwLDIyIEBAIFRFU1Rf
RihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ0FuaW1hdGVz
KQogewogICAgIC8vIFdlIHNob3VsZG4ndCBzZW5kIGFueSBldmVudHMgdG8gdGhlIHdpZGdldCBm
b3IgdGhpcyBnZXN0dXJlLgogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZEhhbmRsZTsK
LSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygp
OwogCiAgICAgLy8gT24gdGhlIGZsaW5nIHN0YXJ0LCB3ZSBzaG91bGQgc2NoZWR1bGUgYW4gYW5p
bWF0aW9uIGJ1dCBub3QgYWN0dWFsbHkgc3RhcnQKICAgICAvLyBzY3JvbGxpbmcuCi0gICAgZ2Vz
dHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKLSAg
ICBnZXN0dXJlLmRlbHRhWCA9IC0xMDAwOworICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OworICAgIFdlYkZsb2F0UG9pbnQgZmxpbmdEZWx0YSA9IFdl
YkZsb2F0UG9pbnQoMTAwMCwgMCk7CisgICAgV2ViUG9pbnQgZmxpbmdQb2ludCA9IFdlYlBvaW50
KDcsIDEzKTsKKyAgICBXZWJQb2ludCBmbGluZ0dsb2JhbFBvaW50ID0gV2ViUG9pbnQoMTcsIDIz
KTsKKyAgICBpbnQgbW9kaWZpZXJzID0gNzsKKyAgICBnZXN0dXJlLmRlbHRhWCA9IGZsaW5nRGVs
dGEueDsKKyAgICBnZXN0dXJlLmRlbHRhWSA9IGZsaW5nRGVsdGEueTsKKyAgICBnZXN0dXJlLngg
PSBmbGluZ1BvaW50Lng7CisgICAgZ2VzdHVyZS55ID0gZmxpbmdQb2ludC55OworICAgIGdlc3R1
cmUuZ2xvYmFsWCA9IGZsaW5nR2xvYmFsUG9pbnQueDsKKyAgICBnZXN0dXJlLmdsb2JhbFkgPSBm
bGluZ0dsb2JhbFBvaW50Lnk7CisgICAgZ2VzdHVyZS5tb2RpZmllcnMgPSBtb2RpZmllcnM7CiAg
ICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0
aW9uKCkpOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3Jv
bGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rp
bmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkp
OwpAQCAtMzU2LDMzICszNzIsMTk0IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbFRlc3QsIGdlc3R1cmVGbGluZ0FuaW1hdGVzKQogCiAgICAgdGVzdGluZzo6TW9jazo6VmVy
aWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKIAot
ICAgIC8vIFRoZSBzZWNvbmQgY2FsbCBzaG91bGQgc3RhcnQgc2Nyb2xsaW5nIGluIHRoZSArWCBk
aXJlY3Rpb24uCisgICAgLy8gVGhlIHNlY29uZCBjYWxsIHNob3VsZCBzdGFydCBzY3JvbGxpbmcg
aW4gdGhlIC1YIGRpcmVjdGlvbi4KKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxl
ckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJ
bnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQor
ICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVy
Q2xpZW50OjpTY3JvbGxTdGFydGVkKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhh
bmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXpl
Ojp3aWR0aCwgdGVzdGluZzo6THQoMCkpKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1
dEhhbmRsZXJDbGllbnQsIHNjcm9sbEVuZCgpKTsKKyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0
ZSgxMC4xKTsKKworICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25z
KCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisKKyAgICAvLyBMZXQncyBzYXkgb24gdGhl
IHRoaXJkIGNhbGwgd2UgaGl0IGEgbm9uLXNjcm9sbGFibGUgcmVnaW9uLiBXZSBzaG91bGQgYWJv
cnQgdGhlIGZsaW5nIGFuZCBub3Qgc2Nyb2xsLgorICAgIC8vIFdlIGFsc28gc2hvdWxkIHBhc3Mg
dGhlIGN1cnJlbnQgZmxpbmcgcGFyYW1ldGVycyBvdXQgdG8gdGhlIGNsaWVudCBzbyB0aGUgcmVz
dCBvZiB0aGUgZmxpbmcgY2FuIGJlCisgICAgLy8gdHJhbnNmZXJyZWQgdG8gdGhlIG1haW4gdGhy
ZWFkLgorICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVs
ZUFuaW1hdGlvbigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVu
dCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCisgICAgICAgIC5XaWxsT25j
ZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZh
aWxlZCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3Jv
bGxCeSh0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1
dEhhbmRsZXJDbGllbnQsIHNjcm9sbEVuZCgpKS5UaW1lcygwKTsKKworICAgIC8vIEV4cGVjdGVk
IHdoZWVsIGZsaW5nIGFuaW1hdGlvbiBwYXJhbWV0ZXJzOgorICAgIC8vICopIGZsaW5nRGVsdGEg
YW5kIGZsaW5nUG9pbnQgc2hvdWxkIG1hdGNoIHRoZSBvcmlnaW5hbCBHZXN0dXJlRmxpbmdTdGFy
dCBldmVudAorICAgIC8vICopIHN0YXJ0VGltZSBzaG91bGQgYmUgMTAgdG8gbWF0Y2ggdGhlIHRp
bWUgcGFyYW1ldGVyIG9mIHRoZSBmaXJzdCBhbmltYXRlKCkgY2FsbCBhZnRlciB0aGUgR2VzdHVy
ZUZsaW5nU3RhcnQKKyAgICAvLyAqKSBjdW11bGF0aXZlU2Nyb2xsIGRlcGVuZHMgb24gdGhlIGN1
cnZlLCBidXQgc2luY2Ugd2UndmUgYW5pbWF0ZWQgaW4gdGhlIC1YIGRpcmVjdGlvbiB0aGUgWCB2
YWx1ZSBzaG91bGQgYmUgPCAwCisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCB0cmFuc2Zl
ckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24odGVzdGluZzo6QWxsT2YoCisgICAgICAgIHRlc3Rp
bmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6ZGVsdGEsIHRlc3Rpbmc6
OkVxKGZsaW5nRGVsdGEpKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzOjpwb2ludCwgdGVzdGluZzo6RXEoZmxpbmdQb2ludCkpLAorICAgICAg
ICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6Omdsb2JhbFBv
aW50LCB0ZXN0aW5nOjpFcShmbGluZ0dsb2JhbFBvaW50KSksCisgICAgICAgIHRlc3Rpbmc6OkZp
ZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6bW9kaWZpZXJzLCB0ZXN0aW5nOjpF
cShtb2RpZmllcnMpKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxp
bmdQYXJhbWV0ZXJzOjpzdGFydFRpbWUsIHRlc3Rpbmc6OkVxKDEwKSksCisgICAgICAgIHRlc3Rp
bmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6Y3VtdWxhdGl2ZVNjcm9s
bCwKKyAgICAgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJTaXplOjp3aWR0aCwgdGVzdGluZzo6
R3QoMCkpKSkpKTsKKyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4yKTsKKworICAgIHRl
c3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFu
ZGxlckNsaWVudCk7CisgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlv
bnMoJm1fbW9ja0NsaWVudCk7CisKKyAgICAvLyBTaW5jZSB3ZSd2ZSBhYm9ydGVkIHRoZSBmbGlu
ZywgdGhlIG5leHQgYW5pbWF0aW9uIHNob3VsZCBiZSBhIG5vLW9wIGFuZCBzaG91bGQgbm90IHJl
c3VsdCBpbiBhbm90aGVyCisgICAgLy8gZnJhbWUgYmVpbmcgcmVxdWVzdGVkLgorICAgIEVYUEVD
VF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKS5U
aW1lcygwKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Ny
b2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDApOworICAgIG1faW5wdXRI
YW5kbGVyLT5hbmltYXRlKDEwLjMpOworCisgICAgLy8gU2luY2Ugd2UndmUgdHJhbnNmZXJyZWQg
dGhlIGZsaW5nIHRvIHRoZSBtYWluIHRocmVhZCwgd2UgbmVlZCB0byBwYXNzIHRoZSBuZXh0IEdl
c3R1cmVGbGluZ0NhbmNlbCB0byB0aGUgbWFpbgorICAgIC8vIHRocmVhZCBhcyB3ZWxsLgorICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudCh0cnVlKSk7
CisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOwor
ICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOworfQorCitURVNU
X0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdUcmFuc2Zl
clJlc2V0cykKK3sKKyAgICAvLyBXZSBzaG91bGRuJ3Qgc2VuZCBhbnkgZXZlbnRzIHRvIHRoZSB3
aWRnZXQgZm9yIHRoaXMgZ2VzdHVyZS4KKyAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEaWRI
YW5kbGU7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOworCisgICAgLy8gU3RhcnQgYSBn
ZXN0dXJlIGZsaW5nIGluIHRoZSAtWCBkaXJlY3Rpb24gd2l0aCB6ZXJvIFkgbW92ZW1lbnQuCisg
ICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisgICAg
V2ViRmxvYXRQb2ludCBmbGluZ0RlbHRhID0gV2ViRmxvYXRQb2ludCgxMDAwLCAwKTsKKyAgICBX
ZWJQb2ludCBmbGluZ1BvaW50ID0gV2ViUG9pbnQoNywgMTMpOworICAgIFdlYlBvaW50IGZsaW5n
R2xvYmFsUG9pbnQgPSBXZWJQb2ludCgxNywgMjMpOworICAgIGludCBtb2RpZmllcnMgPSAxOwor
ICAgIGdlc3R1cmUuZGVsdGFYID0gZmxpbmdEZWx0YS54OworICAgIGdlc3R1cmUuZGVsdGFZID0g
ZmxpbmdEZWx0YS55OworICAgIGdlc3R1cmUueCA9IGZsaW5nUG9pbnQueDsKKyAgICBnZXN0dXJl
LnkgPSBmbGluZ1BvaW50Lnk7CisgICAgZ2VzdHVyZS5nbG9iYWxYID0gZmxpbmdHbG9iYWxQb2lu
dC54OworICAgIGdlc3R1cmUuZ2xvYmFsWSA9IGZsaW5nR2xvYmFsUG9pbnQueTsKKyAgICBnZXN0
dXJlLm1vZGlmaWVycyA9IG1vZGlmaWVyczsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0
SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9t
b2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6
Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRI
YW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7CisgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRs
ZUlucHV0RXZlbnQoZ2VzdHVyZSk7CisKKyAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVh
ckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOworCisgICAgLy8gU3Rh
cnQgdGhlIGZsaW5nIGFuaW1hdGlvbiBhdCB0aW1lIDEwLiBUaGlzIHNob3VsZG4ndCBhY3R1YWxs
eSBzY3JvbGwsIGp1c3QgZXN0YWJsaXNoIGEgc3RhcnQgdGltZS4KKyAgICBFWFBFQ1RfQ0FMTCht
X21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQ
RUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6
Ol8sIHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKKyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgx
MCk7CisKKyAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9t
b2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOworCisgICAgLy8gVGhlIHNlY29uZCBjYWxsIHNob3Vs
ZCBzdGFydCBzY3JvbGxpbmcgaW4gdGhlIC1YIGRpcmVjdGlvbi4KICAgICBFWFBFQ1RfQ0FMTCht
X21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CiAgICAgRVhQ
RUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6
Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNv
cmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7Ci0gICAgRVhQRUNUX0NB
TEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6OlByb3BlcnR5
KCZXZWJDb3JlOjpJbnRTaXplOjp3aWR0aCwgdGVzdGluZzo6R3QoMCkpKSk7CisgICAgRVhQRUNU
X0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6OlByb3Bl
cnR5KCZXZWJDb3JlOjpJbnRTaXplOjp3aWR0aCwgdGVzdGluZzo6THQoMCkpKSk7CiAgICAgRVhQ
RUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEVuZCgpKTsKICAgICBt
X2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4xKTsKIAogICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlm
eUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CiAKICAg
ICAvLyBMZXQncyBzYXkgb24gdGhlIHRoaXJkIGNhbGwgd2UgaGl0IGEgbm9uLXNjcm9sbGFibGUg
cmVnaW9uLiBXZSBzaG91bGQgYWJvcnQgdGhlIGZsaW5nIGFuZCBub3Qgc2Nyb2xsLgotICAgIC8v
IEZJWE1FOiBXZSBhbHNvIG5lZWQgdG8gZG8gc29tZSB3b3JrIHRvIHRyYW5zZmVyIHRoZSByZXN0
IG9mIHRoaXMgZmxpbmcgdG8gdGhlIG1haW4gdGhyZWFkLgotICAgIC8vIEFkZCB0ZXN0cyBmb3Ig
dGhpcyBvbmNlIGl0J3MgaW1wbGVtZW50ZWQuCisgICAgLy8gV2UgYWxzbyBzaG91bGQgcGFzcyB0
aGUgY3VycmVudCBmbGluZyBwYXJhbWV0ZXJzIG91dCB0byB0aGUgY2xpZW50IHNvIHRoZSByZXN0
IG9mIHRoZSBmbGluZyBjYW4gYmUKKyAgICAvLyB0cmFuc2ZlcnJlZCB0byB0aGUgbWFpbiB0aHJl
YWQuCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxl
QW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50
LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNl
KHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFp
bGVkKSk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9s
bEJ5KHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0
SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkpLlRpbWVzKDApOworCisgICAgLy8gRXhwZWN0ZWQg
d2hlZWwgZmxpbmcgYW5pbWF0aW9uIHBhcmFtZXRlcnM6CisgICAgLy8gKikgZmxpbmdEZWx0YSBh
bmQgZmxpbmdQb2ludCBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsIEdlc3R1cmVGbGluZ1N0YXJ0
IGV2ZW50CisgICAgLy8gKikgc3RhcnRUaW1lIHNob3VsZCBiZSAxMCB0byBtYXRjaCB0aGUgdGlt
ZSBwYXJhbWV0ZXIgb2YgdGhlIGZpcnN0IGFuaW1hdGUoKSBjYWxsIGFmdGVyIHRoZSBHZXN0dXJl
RmxpbmdTdGFydAorICAgIC8vICopIGN1bXVsYXRpdmVTY3JvbGwgZGVwZW5kcyBvbiB0aGUgY3Vy
dmUsIGJ1dCBzaW5jZSB3ZSd2ZSBhbmltYXRlZCBpbiB0aGUgLVggZGlyZWN0aW9uIHRoZSBYIHZh
bHVlIHNob3VsZCBiZSA8IDAKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIHRyYW5zZmVy
QWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbih0ZXN0aW5nOjpBbGxPZigKKyAgICAgICAgdGVzdGlu
Zzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpkZWx0YSwgdGVzdGluZzo6
RXEoZmxpbmdEZWx0YSkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnM6OnBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ1BvaW50KSksCisgICAgICAg
IHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6Z2xvYmFsUG9p
bnQsIHRlc3Rpbmc6OkVxKGZsaW5nR2xvYmFsUG9pbnQpKSwKKyAgICAgICAgdGVzdGluZzo6Rmll
bGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjptb2RpZmllcnMsIHRlc3Rpbmc6OkVx
KG1vZGlmaWVycykpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnM6OnN0YXJ0VGltZSwgdGVzdGluZzo6RXEoMTApKSwKKyAgICAgICAgdGVzdGlu
Zzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpjdW11bGF0aXZlU2Nyb2xs
LAorICAgICAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYlNpemU6OndpZHRoLCB0ZXN0aW5nOjpH
dCgwKSkpKSkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwLjIpOwogCiAgICAgdGVz
dGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5k
bGVyQ2xpZW50KTsKKyAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9u
cygmbV9tb2NrQ2xpZW50KTsKIAogICAgIC8vIFNpbmNlIHdlJ3ZlIGFib3J0ZWQgdGhlIGZsaW5n
LCB0aGUgbmV4dCBhbmltYXRpb24gc2hvdWxkIGJlIGEgbm8tb3AgYW5kIHNob3VsZCBub3QgcmVz
dWx0IGluIGFub3RoZXIKICAgICAvLyBmcmFtZSBiZWluZyByZXF1ZXN0ZWQuCiAgICAgRVhQRUNU
X0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpLlRp
bWVzKDApOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3Jv
bGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CiAgICAgbV9pbnB1dEhh
bmRsZXItPmFuaW1hdGUoMTAuMyk7CisKKyAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVh
ckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOworCisgICAgLy8gU2lu
Y2Ugd2UndmUgdHJhbnNmZXJyZWQgdGhlIGZsaW5nIHRvIHRoZSBtYWluIHRocmVhZCwgd2UgbmVl
ZCB0byBwYXNzIHRoZSBuZXh0IEdlc3R1cmVGbGluZ0NhbmNlbCB0byB0aGUgbWFpbgorICAgIC8v
IHRocmVhZCBhcyB3ZWxsLgorICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFu
ZGxlSW5wdXRFdmVudCh0cnVlKSk7CisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6
R2VzdHVyZUZsaW5nQ2FuY2VsOworICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50
KGdlc3R1cmUpOworCisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOworCisgICAgLy8gU3Rh
cnQgYSBzZWNvbmQgZ2VzdHVyZSBmbGluZywgdGhpcyB0aW1lIGluIHRoZSArWSBkaXJlY3Rpb24g
d2l0aCBubyBYLgorICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGlu
Z1N0YXJ0OworICAgIGZsaW5nRGVsdGEgPSBXZWJGbG9hdFBvaW50KDAsIC0xMDAwKTsKKyAgICBm
bGluZ1BvaW50ID0gV2ViUG9pbnQoOTUsIDg3KTsKKyAgICBmbGluZ0dsb2JhbFBvaW50ID0gV2Vi
UG9pbnQoMzIsIDcxKTsKKyAgICBtb2RpZmllcnMgPSAyOworICAgIGdlc3R1cmUuZGVsdGFYID0g
ZmxpbmdEZWx0YS54OworICAgIGdlc3R1cmUuZGVsdGFZID0gZmxpbmdEZWx0YS55OworICAgIGdl
c3R1cmUueCA9IGZsaW5nUG9pbnQueDsKKyAgICBnZXN0dXJlLnkgPSBmbGluZ1BvaW50Lnk7Cisg
ICAgZ2VzdHVyZS5nbG9iYWxYID0gZmxpbmdHbG9iYWxQb2ludC54OworICAgIGdlc3R1cmUuZ2xv
YmFsWSA9IGZsaW5nR2xvYmFsUG9pbnQueTsKKyAgICBnZXN0dXJlLm1vZGlmaWVycyA9IG1vZGlm
aWVyczsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1
bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGll
bnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9u
Y2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxT
dGFydGVkKSk7CisgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7
CisKKyAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQpOworCisgICAgLy8gU3RhcnQgdGhlIHNlY29uZCBmbGluZyBh
bmltYXRpb24gYXQgdGltZSAzMC4KKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxl
ckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJ
bnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKS5U
aW1lcygwKTsKKyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgzMCk7CisKKyAgICB0ZXN0aW5n
OjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJD
bGllbnQpOworCisgICAgLy8gVGljayB0aGUgc2Vjb25kIGZsaW5nIG9uY2Ugbm9ybWFsbHkuCisg
ICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0
aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3Jv
bGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldpbGxPbmNlKHRlc3Rp
bmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkp
OworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0
ZXN0aW5nOjpQcm9wZXJ0eSgmV2ViQ29yZTo6SW50U2l6ZTo6aGVpZ2h0LCB0ZXN0aW5nOjpHdCgw
KSkpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xs
RW5kKCkpOworICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDMwLjEpOworCisgICAgdGVzdGlu
Zzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVy
Q2xpZW50KTsKKworICAgIC8vIFRoZW4gYWJvcnQgdGhlIHNlY29uZCBmbGluZy4KKyAgICBFWFBF
Q1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7
CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2lu
KHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0
dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxGYWlsZWQpKTsKKyAgICBF
WFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6
XykpLlRpbWVzKDApOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50
LCBzY3JvbGxFbmQoKSkuVGltZXMoMCk7CisKKyAgICAvLyBXZSBzaG91bGQgZ2V0IHBhcmFtZXRl
cnMgZnJvbSB0aGUgc2Vjb25kIGZsaW5nLCBub3RoaW5nIGZyb20gdGhlIGZpcnN0IGZsaW5nIHNo
b3VsZCAibGVhayIuCisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCB0cmFuc2ZlckFjdGl2
ZVdoZWVsRmxpbmdBbmltYXRpb24odGVzdGluZzo6QWxsT2YoCisgICAgICAgIHRlc3Rpbmc6OkZp
ZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6ZGVsdGEsIHRlc3Rpbmc6OkVxKGZs
aW5nRGVsdGEpKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQ
YXJhbWV0ZXJzOjpwb2ludCwgdGVzdGluZzo6RXEoZmxpbmdQb2ludCkpLAorICAgICAgICB0ZXN0
aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6Omdsb2JhbFBvaW50LCB0
ZXN0aW5nOjpFcShmbGluZ0dsb2JhbFBvaW50KSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZX
ZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6bW9kaWZpZXJzLCB0ZXN0aW5nOjpFcShtb2Rp
ZmllcnMpKSwKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJh
bWV0ZXJzOjpzdGFydFRpbWUsIHRlc3Rpbmc6OkVxKDMwKSksCisgICAgICAgIHRlc3Rpbmc6OkZp
ZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6Y3VtdWxhdGl2ZVNjcm9sbCwKKyAg
ICAgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJTaXplOjpoZWlnaHQsIHRlc3Rpbmc6Okx0KDAp
KSkpKSk7CisgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMzAuMik7CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134213</attachid>
            <date>2012-03-27 21:32:59 -0700</date>
            <delta_ts>2012-03-27 23:08:33 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-81740-20120327213258.patch</filename>
            <type>text/plain</type>
            <size>53123</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBlYzU0ZWQ1ZjZiYTM1
NDJjNDE4MmQ3M2IxMDc0MjQzMjk1YzFlNy4uOGNjMGRjNDIwZjVjYmEzOWZkM2MwMWMzNDBhMWJk
ZWY3ZTRmOGY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTAzLTI3ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBU
cmFuc2ZlciB3aGVlbCBmbGluZyB2aWEgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE3NDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBZHJpZW5uZSBXYWxrZXIuCisKKyAgICAgICAgQWRkcyB0aGUg
YWJpbGl0eSB0byBjb25zdHJ1Y3QgYW4gaW4tcHJvZ3Jlc3MgUGxhdGZvcm1HZXN0dXJlQW5pbWF0
aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlUGxh
dGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5oOgorICAg
ICAgICAoQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9Ub3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6VG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpUb3VjaHBhZEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmUpOgorICAgICAgICAqIHBsYXRmb3JtL1RvdWNocGFkRmxpbmdQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oOgorICAgICAgICAoVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlKToKKwogMjAxMi0wMy0yNyAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW2Nocm9taXVtXSBSb3V0ZSBtb25vdG9uaWMgY2xvY2sgdXAgZnJvbSBjb21w
b3NpdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDFhNGZjZWUxODRlMDAyMWZjMTFk
MjRhZDJhNGYyMzhlM2Y0NTRiNmMuLjVmMGFjYmM5NGE1Yjg0MDkwYmJkODI3N2U4MGMyNjY1YThi
NmUxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTIgQEAKIDIwMTIt
MDMtMjcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAorICAgICAgICBb
Y2hyb21pdW1dIFRyYW5zZmVyIHdoZWVsIGZsaW5nIHZpYSBXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MTc0MAorCisgICAgICAgIFJldmlld2VkIGJ5IEFkcmllbm5lIFdhbGtlci4KKworICAgICAg
ICBBZGRzIGEgcGF0aCBmb3IgdHJhbnNmZXJpbmcgYW4gYWN0aXZlIHdoZWVsIGZsaW5nIGFuaW1h
dGlvbiBvdXQgdG8gdGhlIGVtYmVkZGVyIGZyb20gdGhlIGNvbXBvc2l0b3IgYW5kIGJhY2sgaW4K
KyAgICAgICAgdG8gYSBXZWJWaWV3SW1wbCB2aWEgdGhlIGVtYmVkZGVyLiBUaGlzIGlzIHVzZWQg
d2hlbiB3ZSBzdGFydCBhIHdoZWVsIGZsaW5nIGFuaW1hdGlvbiBvbiB0aGUgY29tcG9zaXRvciB0
aHJlYWQKKyAgICAgICAgYnV0IHRoZW4gaGl0IGEgY29uZGl0aW9uIHRoYXQgd2UgY2FuJ3QgaGFu
ZGxlIGZyb20gdGhlIGNvbXBvc2l0b3IsIHN1Y2ggYXMgcmVnaXN0ZXJlZCB3aGVlbCBldmVudCBs
aXN0ZW5lcnMgb3IgYQorICAgICAgICBzY3JvbGxhYmxlIGFyZWEgd2UgY2FuJ3QgaGFuZGxlLgor
CisgICAgICAgIE5ldyB0ZXN0cyBhZGRlZCB0byBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyVGVz
dCBmb3IgdGhlIHRyYW5zZmVyaW5nIGxvZ2ljLgorCisgICAgICAgICogcHVibGljL1dlYkFjdGl2
ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQuaC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpXZWJBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVycyk6CisgICAgICAgICogcHVibGljL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckNsaWVudDo6dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAg
KiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlZpZXcp
OgorICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJl
RmxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6
YW5pbWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
OjpjYW5jZWxDdXJyZW50RmxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkpOgorICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogc3JjL1dlYlZp
ZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnRyYW5zZmVyQWN0aXZl
V2hlZWxGbGluZ0FuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9X
ZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0ltcGwpOgorICAgICAgICAqIHRlc3RzL1dl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1v
Y2tXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50OjpNb2NrV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckNsaWVudCk6CisgICAgICAgIChNb2NrV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OlRFU1QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3Q6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
VGVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVz
dDo6fldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCk6CisgICAgICAgIChXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgor
ICAgICAgICAoV2ViS2l0KToKKworMjAxMi0wMy0yNyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JA
Y2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0gU2VuZCB3aGVlbCBldmVudHMgdG8g
bWFpbiB0aHJlYWQgZXZlbiBpZiB3ZSB0aGluayBub3RoaW5nIGlzIHNjcm9sbGFibGUKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNDA4CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1h
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb24uY3BwCmluZGV4IGI4Y2YwN2FkM2YyYWRiZmFhNWI2Y2IwNWZlNTY5MWQ1NDQyMjUz
ZTMuLjAxNjAwYmQ1ODliMWZkMTE3ZWJlNmYzN2YwMmIxOTk2MjNhMzA0ZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5p
bWF0aW9uLmNwcApAQCAtNDEsNiArNDEsMTEgQEAgUGFzc093blB0cjxBY3RpdmVQbGF0Zm9ybUdl
c3R1cmVBbmltYXRpb24+IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXQKICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbihjdXJ2
ZSwgdGFyZ2V0KSk7CiB9CiAKK1Bhc3NPd25QdHI8QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0
aW9uPiBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZShQYXNzT3duUHRyPFBs
YXRmb3JtR2VzdHVyZUN1cnZlPiBjdXJ2ZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqIHRh
cmdldCwgZG91YmxlIHN0YXJ0VGltZSkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEFjdGl2
ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbihjdXJ2ZSwgdGFyZ2V0LCBzdGFydFRpbWUpKTsKK30K
KwogQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjp+QWN0aXZlUGxhdGZvcm1HZXN0dXJl
QW5pbWF0aW9uKCkKIHsKICNpZiBQTEFURk9STShDSFJPTUlVTSkKQEAgLTU5LDYgKzY0LDE3IEBA
IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5p
bWF0aW9uKFBhc3NPd25QdHI8UGxhdGZvCiAjZW5kaWYKIH0KIAorQWN0aXZlUGxhdGZvcm1HZXN0
dXJlQW5pbWF0aW9uOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0cjxQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3VydmUsIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0KiB0
YXJnZXQsIGRvdWJsZSBzdGFydFRpbWUpCisgICAgOiBtX3N0YXJ0VGltZShzdGFydFRpbWUpCisg
ICAgLCBtX3dhaXRpbmdGb3JGaXJzdFRpY2soZmFsc2UpCisgICAgLCBtX2N1cnZlKGN1cnZlKQor
ICAgICwgbV90YXJnZXQodGFyZ2V0KQoreworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRS
QUNFX0VWRU5UX1NUQVJUMSgiaW5wdXQiLCAiR2VzdHVyZUFuaW1hdGlvbiIsIHRoaXMsICJjdXJ2
ZSIsIG1fY3VydmUtPmRlYnVnTmFtZSgpKTsKKyNlbmRpZgorfQorCiBib29sIEFjdGl2ZVBsYXRm
b3JtR2VzdHVyZUFuaW1hdGlvbjo6YW5pbWF0ZShkb3VibGUgdGltZSkKIHsKICAgICBpZiAobV93
YWl0aW5nRm9yRmlyc3RUaWNrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9BY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0FjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5oCmluZGV4IDlkNTYzZTQ4MzY2NmRk
MmFkYTFiNWIwNWU4OTg0ZGYxNWJhYzcwMjQuLjIxZjE5OWMwN2ExZmNmMzRjNThjMTI0OWYyYjg0
ZTRjNTcxMWJjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FjdGl2ZVBs
YXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fj
dGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbi5oCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIEFj
dGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c093blB0cjxBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24+IGNyZWF0ZShQYXNzT3duUHRy
PFBsYXRmb3JtR2VzdHVyZUN1cnZlPiwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQqKTsKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24+IGNyZWF0
ZShQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiwgUGxhdGZvcm1HZXN0dXJlQ3VydmVU
YXJnZXQqLCBkb3VibGUgc3RhcnRUaW1lKTsKICAgICB+QWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5p
bWF0aW9uKCk7CiAKICAgICBib29sIGFuaW1hdGUoZG91YmxlIHRpbWUpOwpAQCAtNTAsNiArNTEs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIEFzc3VtZXMgYSB2YWxpZCBQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZVRhcmdldCB0aGF0IG91dGxpdmVzIHRoZSBhbmltYXRpb24uCiAgICAgQWN0aXZl
UGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uKFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+
LCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCopOworICAgIEFjdGl2ZVBsYXRmb3JtR2VzdHVy
ZUFuaW1hdGlvbihQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiwgUGxhdGZvcm1HZXN0
dXJlQ3VydmVUYXJnZXQqLCBkb3VibGUgc3RhcnRUaW1lKTsKIAogICAgIGRvdWJsZSBtX3N0YXJ0
VGltZTsKICAgICBib29sIG1fd2FpdGluZ0ZvckZpcnN0VGljazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmUuY3BwCmluZGV4IDY2ZjdhYjAxZjEwN2I4ZWQzZWI3NWNjMzM0OTE0MThmODhhZjljN2EuLjcx
ODc3MGQxM2M0NTA4ZjE2MGQ1MTRiZDliOWUxMWQ4NGEyZjIxZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVy
ZUN1cnZlLmNwcApAQCAtMzMsMTkgKzMzLDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIAotUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91
Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYg
dmVsb2NpdHkpCitQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaHBhZEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwg
SW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCkKIHsKLSAgICByZXR1cm4gY3JlYXRlKHZlbG9jaXR5
LCAzLCBGbG9hdFBvaW50KDAuMzMzMywgMC42NjY2KSwgRmxvYXRQb2ludCgwLjY2NjYsIDEpKTsK
KyAgICByZXR1cm4gY3JlYXRlKHZlbG9jaXR5LCAzLCBGbG9hdFBvaW50KDAuMzMzMywgMC42NjY2
KSwgRmxvYXRQb2ludCgwLjY2NjYsIDEpLCBjdW11bGF0aXZlU2Nyb2xsKTsKIH0KIAotUGFzc093
blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlOjpjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IGZsb2F0IHVuaXRU
aW1lU2NhbGVMb2cxMCwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDEsIGNvbnN0IEZsb2F0UG9p
bnQmIGJlemllclAyKQorUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hwYWRG
bGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2Np
dHksIGNvbnN0IGZsb2F0IHVuaXRUaW1lU2NhbGVMb2cxMCwgY29uc3QgRmxvYXRQb2ludCYgYmV6
aWVyUDEsIGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAyLCBJbnRQb2ludCBjdW11bGF0aXZlU2Ny
b2xsKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlKHZlbG9jaXR5LCB1bml0VGltZVNjYWxlTG9nMTAsIGJlemllclAxLCBiZXppZXJQ
MikpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVy
ZUN1cnZlKHZlbG9jaXR5LCB1bml0VGltZVNjYWxlTG9nMTAsIGJlemllclAxLCBiZXppZXJQMiwg
Y3VtdWxhdGl2ZVNjcm9sbCkpOwogfQogCi1Ub3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmU6OlRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9hdFBvaW50JiB2
ZWxvY2l0eSwgY29uc3QgZmxvYXQgdW5pdFRpbWVTY2FsZUxvZzEwLCBjb25zdCBGbG9hdFBvaW50
JiBiZXppZXJQMSwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDIpCitUb3VjaHBhZEZsaW5nUGxh
dGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZShjb25z
dCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgZmxvYXQgdW5pdFRpbWVTY2FsZUxvZzEwLCBj
b25zdCBGbG9hdFBvaW50JiBiZXppZXJQMSwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDIsIGNv
bnN0IEludFBvaW50JiBjdW11bGF0aXZlU2Nyb2xsKQogICAgIDogbV92ZWxvY2l0eSh2ZWxvY2l0
eSkKICAgICAsIG1fdGltZVNjYWxlRmFjdG9yKHVuaXRUaW1lU2NhbGVMb2cxMCAvIGxvZzEwKG1h
eCgxMC5mLCBtYXgoZmFicyh2ZWxvY2l0eS54KCkpLCBmYWJzKHZlbG9jaXR5LnkoKSkpKSkpCisg
ICAgLCBtX2N1bXVsYXRpdmVTY3JvbGwoY3VtdWxhdGl2ZVNjcm9sbCkKICAgICAsIG1fZmxpbmdC
ZXppZXIoYmV6aWVyUDEueCgpLCBiZXppZXJQMS55KCksIGJlemllclAyLngoKSwgYmV6aWVyUDIu
eSgpKQogewogICAgIEFTU0VSVCh2ZWxvY2l0eSAhPSBGbG9hdFBvaW50Ojp6ZXJvKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZv
cm1HZXN0dXJlQ3VydmUuaAppbmRleCA2YmZhMDRlOTExZjY5ZjMzNDZjZTg2ZWQ2ODZlZDg0OWY4
NDJlYWI5Li40YjdlNDY2ZjQyMTdlYzVhYmJmODZhYzI3ODJiZGNjNzdjZDg2ZGQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJl
Q3VydmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZv
cm1HZXN0dXJlQ3VydmUuaApAQCAtNDEsMTUgKzQxLDE1IEBAIGNsYXNzIFBsYXRmb3JtR2VzdHVy
ZUN1cnZlVGFyZ2V0OwogLy8gdGhlIGluaXRpYWwgdmVsb2NpdHkuCiBjbGFzcyBUb3VjaHBhZEZs
aW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUgOiBwdWJsaWMgUGxhdGZvcm1HZXN0dXJlQ3VydmUgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVh
dGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHkpOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPFBs
YXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGNv
bnN0IGZsb2F0IHVuaXRUaW1lU2NhbGVMb2cxMCwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDEs
IGNvbnN0IEZsb2F0UG9pbnQmIGJlemllclAyKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBJbnRQ
b2ludCBjdW11bGF0aXZlU2Nyb2xsID0gSW50UG9pbnQoKSk7CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0
eSwgY29uc3QgZmxvYXQgdW5pdFRpbWVTY2FsZUxvZzEwLCBjb25zdCBGbG9hdFBvaW50JiBiZXpp
ZXJQMSwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDIsIEludFBvaW50IGN1bXVsYXRpdmVTY3Jv
bGwgPSBJbnRQb2ludCgpKTsKICAgICB2aXJ0dWFsIH5Ub3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0
dXJlQ3VydmUoKTsKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogZGVidWdOYW1lKCkgY29uc3Qg
eyByZXR1cm4gIlRvdWNocGFkRmxpbmciOyB9CiAgICAgdmlydHVhbCBib29sIGFwcGx5KGRvdWJs
ZSBtb25vdG9uaWNUaW1lLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCopOwogCiBwcml2YXRl
OgotICAgIGV4cGxpY2l0IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBG
bG9hdFBvaW50JiB2ZWxvY2l0eSwgY29uc3QgZmxvYXQgdW5pdFRpbWVTY2FsZUxvZzEwLCBjb25z
dCBGbG9hdFBvaW50JiBiZXppZXJQMSwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDIpOworICAg
IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxv
Y2l0eSwgY29uc3QgZmxvYXQgdW5pdFRpbWVTY2FsZUxvZzEwLCBjb25zdCBGbG9hdFBvaW50JiBi
ZXppZXJQMSwgY29uc3QgRmxvYXRQb2ludCYgYmV6aWVyUDIsIGNvbnN0IEludFBvaW50JiBjdW11
bGF0aXZlU2Nyb2xsKTsKIAogICAgIEZsb2F0UG9pbnQgbV92ZWxvY2l0eTsKICAgICBmbG9hdCBt
X3RpbWVTY2FsZUZhY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVm
Mjc3ZDVmZDRjNjdkZjFhMjQxZmE2YWEyY2IyNWNhNDk2NGFiNGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1l
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
CisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIKKyNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJTaXplLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2Vi
QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMgeworICAgIFdlYkZsb2F0UG9pbnQgZGVsdGE7Cisg
ICAgV2ViUG9pbnQgcG9pbnQ7CisgICAgV2ViUG9pbnQgZ2xvYmFsUG9pbnQ7CisgICAgaW50IG1v
ZGlmaWVyczsKKyAgICBXZWJTaXplIGN1bXVsYXRpdmVTY3JvbGw7CisgICAgZG91YmxlIHN0YXJ0
VGltZTsKKworICAgIFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKCkKKyAgICAgICAgOiBt
b2RpZmllcnMoMCkKKyAgICAgICAgLCBzdGFydFRpbWUoMCkKKyAgICB7CisgICAgfQorfTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQuaAppbmRleCBlOGJiNTU1OTgz
NGRkMTgzYTI1ODQ5ODUxN2UyMmU2MDVhNDZmZTAxLi43YzkxMWQ4ZjhlYzAzMDFkNmUxZWFhNTI2
NDcyODc1YzI0ZDg5YjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudC5oCkBAIC0yOCw2
ICsyOCw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgV2ViQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnM7CisKIGNsYXNzIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQg
ewogcHVibGljOgogICAgIC8vIENhbGxiYWNrcyBpbnZva2VkIGZyb20gdGhlIGNvbXBvc2l0b3Ig
dGhyZWFkLgpAQCAtNDIsNiArNDQsMTAgQEAgcHVibGljOgogICAgIC8vIHNob3VsZCBiZSBmb3J3
YXJkZWQgdG8gdGhlIFdlYldpZGdldCBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb21wb3NpdG9yIGZv
ciBmdXJ0aGVyIHByb2Nlc3NpbmcuCiAgICAgdmlydHVhbCB2b2lkIGRpZE5vdEhhbmRsZUlucHV0
RXZlbnQoYm9vbCBzZW5kVG9XaWRnZXQpID0gMDsKIAorICAgIC8vIFRyYW5zZmVycyBhbiBhY3Rp
dmUgd2hlZWwgZmxpbmcgYW5pbWF0aW9uIGluaXRpYXRlZCBieSBhIHByZXZpb3VzbHkgaGFuZGxl
ZCBpbnB1dCBldmVudCBvdXQgdG8gdGhlIGNsaWVudC4KKyAgICAvLyBGSVhNRTogTWFrZSBwdXJl
IHZpcnR1YWwgb25jZSBpbXBsZW1lbnRhdGlvbiBsYW5kcyBvbiBDaHJvbWl1bSBzaWRlLgorICAg
IHZpcnR1YWwgdm9pZCB0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgV2Vi
QWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSB7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQoKSB7IH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggM2M4YWU0NDg0ZGEyNTNhODM0NWQxZDZm
NTJiMTIxYzk0NjU0ZjEzMy4uNGQ5OTVlMGZmYjUzNjZlYjVmNTZkMTVhZTliN2Y2N2RjOTliNzUx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApAQCAtNTQsNiArNTQs
NyBAQCBjbGFzcyBXZWJTZXR0aW5nczsKIGNsYXNzIFdlYlNwZWxsQ2hlY2tDbGllbnQ7CiBjbGFz
cyBXZWJTdHJpbmc7CiBjbGFzcyBXZWJWaWV3Q2xpZW50Oworc3RydWN0IFdlYkFjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzOwogc3RydWN0IFdlYk1lZGlhUGxheWVyQWN0aW9uOwogc3RydWN0IFdl
YlBsdWdpbkFjdGlvbjsKIHN0cnVjdCBXZWJQb2ludDsKQEAgLTQyOCw2ICs0MjksMTAgQEAgcHVi
bGljOgogICAgIC8vIENhbiBiZSB1c2VkIGZvciBhbGxvY2F0aW5nIHJlc291cmNlcyB0aGF0IHRo
ZSBjb21wb3NpdG9yIHdpbGwgbGF0ZXIgYWNjZXNzLgogICAgIHZpcnR1YWwgV2ViR3JhcGhpY3ND
b250ZXh0M0QqIHNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKCkgPSAwOwogCisgICAgLy8gQ2FsbGVk
IHRvIGluZm9ybSB0aGUgV2ViVmlldyB0aGF0IGEgd2hlZWwgZmxpbmcgYW5pbWF0aW9uIHdhcyBz
dGFydGVkIGV4dGVybmFsbHkgKGZvciBpbnN0YW5jZQorICAgIC8vIGJ5IHRoZSBjb21wb3NpdG9y
KSBidXQgbXVzdCBiZSBjb21wbGV0ZWQgYnkgdGhlIFdlYlZpZXcuCisgICAgdmlydHVhbCB2b2lk
IHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVycyYpID0gMDsKKwogICAgIC8vIFZpc2liaWxpdHkgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIFNl
dHMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIFdlYlZpZXcuCkBAIC00NTIsNyArNDU3LDYgQEAgcHVi
bGljOgogICAgIC8vIFNpbXVsYXRlcyBhIGNvbXBvc2l0b3IgbG9zdCBjb250ZXh0LgogICAgIHZp
cnR1YWwgdm9pZCBsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKSA9IDA7CiAKLQog
cHJvdGVjdGVkOgogICAgIH5XZWJWaWV3KCkge30KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAK
aW5kZXggMmI1MmQ5OWVjYjJlNjEyMDk3MjJhYmZjYWY5OTMxODQwZmY1MmJlOS4uOGUwYzYxM2E0
MmEzOTY2N2VhNjNlNjVlOTI1YTIyYTdhMzRiMTQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNw
cApAQCAtMjY5LDkgKzI2OSwxMiBAQCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZl
bnREaXNwb3NpdGlvbiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAogICAgIHN3aXRj
aCAoc2Nyb2xsU3RhdHVzKSB7CiAgICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xs
U3RhcnRlZDogewogICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZzo6c3RhcnRlZCIpOwotICAg
ICAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGZsaW5nQ3VydmUgPSBUb3VjaHBhZEZs
aW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShGbG9hdFBvaW50KC1nZXN0dXJlRXZlbnQu
ZGVsdGFYLCAtZ2VzdHVyZUV2ZW50LmRlbHRhWSkpOworICAgICAgICBPd25QdHI8UGxhdGZvcm1H
ZXN0dXJlQ3VydmU+IGZsaW5nQ3VydmUgPSBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmU6OmNyZWF0ZShGbG9hdFBvaW50KGdlc3R1cmVFdmVudC5kZWx0YVgsIGdlc3R1cmVFdmVudC5k
ZWx0YVkpKTsKICAgICAgICAgbV93aGVlbEZsaW5nQW5pbWF0aW9uID0gQ0NBY3RpdmVHZXN0dXJl
QW5pbWF0aW9uOjpjcmVhdGUoUGxhdGZvcm1HZXN0dXJlVG9DQ0dlc3R1cmVBZGFwdGVyOjpjcmVh
dGUoZmxpbmdDdXJ2ZS5yZWxlYXNlKCkpLCB0aGlzKTsKLSAgICAgICAgbV93aGVlbEZsaW5nUG9p
bnQgPSBJbnRQb2ludChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpOworICAgICAgICBt
X3doZWVsRmxpbmdQYXJhbWV0ZXJzLmRlbHRhID0gV2ViRmxvYXRQb2ludChnZXN0dXJlRXZlbnQu
ZGVsdGFYLCBnZXN0dXJlRXZlbnQuZGVsdGFZKTsKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1l
dGVycy5wb2ludCA9IFdlYlBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQueSk7Cisg
ICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZ2xvYmFsUG9pbnQgPSBXZWJQb2ludChnZXN0
dXJlRXZlbnQuZ2xvYmFsWCwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFkpOworICAgICAgICBtX3doZWVs
RmxpbmdQYXJhbWV0ZXJzLm1vZGlmaWVycyA9IGdlc3R1cmVFdmVudC5tb2RpZmllcnM7CiAgICAg
ICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY2hlZHVsZUFuaW1hdGlvbigpOwogICAgICAgICBy
ZXR1cm4gRGlkSGFuZGxlOwogICAgIH0KQEAgLTMwMCwxMSArMzAzLDE0IEBAIHZvaWQgV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGw6OmFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUpCiAg
ICAgaWYgKCFtX3doZWVsRmxpbmdBbmltYXRpb24pCiAgICAgICAgIHJldHVybjsKIAorICAgIGlm
ICghbV93aGVlbEZsaW5nUGFyYW1ldGVycy5zdGFydFRpbWUpCisgICAgICAgIG1fd2hlZWxGbGlu
Z1BhcmFtZXRlcnMuc3RhcnRUaW1lID0gbW9ub3RvbmljVGltZTsKKwogICAgIGlmIChtX3doZWVs
RmxpbmdBbmltYXRpb24tPmFuaW1hdGUobW9ub3RvbmljVGltZSkpCiAgICAgICAgIG1faW5wdXRI
YW5kbGVyQ2xpZW50LT5zY2hlZHVsZUFuaW1hdGlvbigpOwogICAgIGVsc2UgewogICAgICAgICBU
UkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6
OmFuaW1hdGU6OmZsaW5nT3ZlciIpOwotICAgICAgICBtX3doZWVsRmxpbmdBbmltYXRpb24uY2xl
YXIoKTsKKyAgICAgICAgY2FuY2VsQ3VycmVudEZsaW5nKCk7CiAgICAgfQogfQogCkBAIC0zMTMs
NiArMzE5LDcgQEAgYm9vbCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6Y2FuY2VsQ3Vy
cmVudEZsaW5nKCkKICAgICBib29sIGhhZEZsaW5nQW5pbWF0aW9uID0gbV93aGVlbEZsaW5nQW5p
bWF0aW9uOwogICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQxKCJjYyIsICJXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbDo6Y2FuY2VsQ3VycmVudEZsaW5nIiwgImhhZEZsaW5nQW5pbWF0aW9uIiwg
aGFkRmxpbmdBbmltYXRpb24pOwogICAgIG1fd2hlZWxGbGluZ0FuaW1hdGlvbi5jbGVhcigpOwor
ICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMgPSBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
cygpOwogICAgIHJldHVybiBoYWRGbGluZ0FuaW1hdGlvbjsKIH0KIApAQCAtMzIyLDMwICszMjks
MzUgQEAgdm9pZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkoY29uc3Qg
SW50UG9pbnQmIGluY3JlbWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVFJBQ0VfRVZFTlQy
KCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkiLCAieCIsIGlu
Y3JlbWVudC54KCksICJ5IiwgaW5jcmVtZW50LnkoKSk7Ci0KLSAgICBXZWJNb3VzZVdoZWVsRXZl
bnQgZXZlbnQ7Ci0gICAgZXZlbnQudHlwZSA9IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWw7Ci0g
ICAgZXZlbnQuZGVsdGFYID0gLWluY3JlbWVudC54KCk7Ci0gICAgZXZlbnQuZGVsdGFZID0gLWlu
Y3JlbWVudC55KCk7Ci0gICAgZXZlbnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IHRydWU7
Ci0gICAgZXZlbnQueCA9IG1fd2hlZWxGbGluZ1BvaW50LngoKTsKLSAgICBldmVudC55ID0gbV93
aGVlbEZsaW5nUG9pbnQueSgpOwotCi0gICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6
OkV2ZW50RGlzcG9zaXRpb24gZGlzcG9zaXRpb24gPSBoYW5kbGVJbnB1dEV2ZW50SW50ZXJuYWwo
ZXZlbnQpOworICAgIFdlYk1vdXNlV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbDsKKyAgICBzeW50
aGV0aWNXaGVlbC50eXBlID0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbDsKKyAgICBzeW50aGV0
aWNXaGVlbC5kZWx0YVggPSBpbmNyZW1lbnQueCgpOworICAgIHN5bnRoZXRpY1doZWVsLmRlbHRh
WSA9IGluY3JlbWVudC55KCk7CisgICAgc3ludGhldGljV2hlZWwuaGFzUHJlY2lzZVNjcm9sbGlu
Z0RlbHRhcyA9IHRydWU7CisgICAgc3ludGhldGljV2hlZWwueCA9IG1fd2hlZWxGbGluZ1BhcmFt
ZXRlcnMucG9pbnQueDsKKyAgICBzeW50aGV0aWNXaGVlbC55ID0gbV93aGVlbEZsaW5nUGFyYW1l
dGVycy5wb2ludC55OworICAgIHN5bnRoZXRpY1doZWVsLmdsb2JhbFggPSBtX3doZWVsRmxpbmdQ
YXJhbWV0ZXJzLmdsb2JhbFBvaW50Lng7CisgICAgc3ludGhldGljV2hlZWwuZ2xvYmFsWSA9IG1f
d2hlZWxGbGluZ1BhcmFtZXRlcnMuZ2xvYmFsUG9pbnQueTsKKyAgICBzeW50aGV0aWNXaGVlbC5t
b2RpZmllcnMgPSBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLm1vZGlmaWVyczsKKworICAgIFdlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uID0g
aGFuZGxlSW5wdXRFdmVudEludGVybmFsKHN5bnRoZXRpY1doZWVsKTsKICAgICBzd2l0Y2ggKGRp
c3Bvc2l0aW9uKSB7CiAgICAgY2FzZSBEaWRIYW5kbGU6CisgICAgICAgIG1fd2hlZWxGbGluZ1Bh
cmFtZXRlcnMuY3VtdWxhdGl2ZVNjcm9sbC53aWR0aCArPSBpbmNyZW1lbnQueCgpOworICAgICAg
ICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGwuaGVpZ2h0ICs9IGluY3Jl
bWVudC55KCk7CiAgICAgY2FzZSBEcm9wRXZlbnQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
RGlkTm90SGFuZGxlOgogICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNjcm9sbEJ5OjpBYm9ydEZsaW5nIik7Ci0gICAgICAg
IC8vIEZJWE1FOiBJZiB3ZSBnb3QgYSBEaWROb3RIYW5kbGUsIHRoYXQgbWVhbnMgd2UgbmVlZCB0
byBkZWxpdmVyIHdoZWVscyBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIC8vIElmIHdlIGdv
dCBhIERpZE5vdEhhbmRsZSwgdGhhdCBtZWFucyB3ZSBuZWVkIHRvIGRlbGl2ZXIgd2hlZWxzIG9u
IHRoZSBtYWluIHRocmVhZC4KICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIG5lZWQgdG8gc2No
ZWR1bGUgYSBjb21taXQgYW5kIHRyYW5zZmVyIHRoZSBmbGluZyBjdXJ2ZSBvdmVyIHRvIHRoZSBt
YWluCiAgICAgICAgIC8vIHRocmVhZCBhbmQgcnVuIHRoZSByZXN0IG9mIHRoZSB3aGVlbHMgZnJv
bSB0aGVyZS4KICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gZmxpbmdpbmcgYSBwYWdl
IHRoYXQgY29udGFpbnMgYSBzY3JvbGxhYmxlIHN1YmFyZWEgdGhhdCB3ZSBjYW4ndAogICAgICAg
ICAvLyBzY3JvbGwgb24gdGhlIHRocmVhZCBpZiB0aGUgZmxpbmcgc3RhcnRzIG91dHNpZGUgdGhl
IHN1YmFyZWEgYnV0IHRoZW4gaXMgZmx1bmcgInVuZGVyIiB0aGUKICAgICAgICAgLy8gcG9pbnRl
ci4KLSAgICAgICAgLy8gRm9yIG5vdywganVzdCBhYm9ydCB0aGUgZmxpbmcuCisgICAgICAgIG1f
Y2xpZW50LT50cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24obV93aGVlbEZsaW5nUGFy
YW1ldGVycyk7CiAgICAgICAgIGNhbmNlbEN1cnJlbnRGbGluZygpOworICAgICAgICBicmVhazsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oCmluZGV4IGM5ZmY1ZTM1MTE5MTU0YjdhYWQ4
ZmQyZGE0YWU2ZTNkNDg3NTBmNjQuLjY0NjQ3MTA1YjAzYzcyZGRjNzZiOThmZTk5OGUyOGJjZTdm
MjdkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbF9oCiAjZGVmaW5lIFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsX2gKIAotI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAiV2ViQWN0
aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgiCiAj
aW5jbHVkZSAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgIldlYklucHV0
RXZlbnQuaCIKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgTXV0ZXg7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIEludFBvaW50OwogY2xhc3MgQ0NHZXN0dXJlQ3VydmVUYXJnZXQ7CiBj
bGFzcyBDQ0lucHV0SGFuZGxlckNsaWVudDsKIGNsYXNzIENDVGhyZWFkOwpAQCAtODMsNyArODQs
OCBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuY2VsQ3VycmVudEZsaW5nKCk7CiAKICAgICBPd25Q
dHI8V2ViQ29yZTo6Q0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uPiBtX3doZWVsRmxpbmdBbmltYXRp
b247Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgbV93aGVlbEZsaW5nUG9pbnQ7IC8vIFBvaW50ZXIg
cG9zaXRpb24gZm9yIHRoZSBjdXJyZW50IGZsaW5nLgorICAgIC8vIFBhcmFtZXRlcnMgZm9yIHRo
ZSBhY3RpdmUgZmxpbmcgYW5pbWF0aW9uLCBzdG9yZWQgaW4gY2FzZSB3ZSBuZWVkIHRvIHRyYW5z
ZmVyIGl0IG91dCBsYXRlci4KKyAgICBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyBtX3do
ZWVsRmxpbmdQYXJhbWV0ZXJzOwogCiAgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVu
dCogbV9jbGllbnQ7CiAgICAgaW50IG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA2M2E0MjFiMGJiN2VlMTM3N2UwNGFhNTU5M2Jm
NDg0YjdlNmRmZjE4Li5jMGM0Mzk2ZWE1YjY0NWFiMTAzNGNjNDViZTk1ZjRhMTE3M2QzNTRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0zMSwxMSAr
MzEsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgog
CisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjdGl2ZVBsYXRmb3JtR2Vz
dHVyZUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkF1dG9maWxsUG9wdXBNZW51Q2xpZW50LmgiCi0j
aW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdENocm9t
aXVtLmgiCi0jaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0
b3IuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgi
CkBAIC0xMTUsMzYgKzExNCwzOSBAQAogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKICNpbmNs
dWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlP
YmplY3QuaCIKKyNpbmNsdWRlICJXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgIldlYkF1dG9maWxsQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRvckltcGwu
aCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50SW1wbC5oIgogI2luY2x1ZGUgIldlYkRldlRv
b2xzQWdlbnRQcml2YXRlLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViRHJhZ0RhdGEuaCIKICNp
bmNsdWRlICJXZWJGcmFtZUltcGwuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJHcmFwaGljc0Nv
bnRleHQzRC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2Vi
SW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUgIldl
YklucHV0RXZlbnRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCi0jaW5jbHVkZSAi
cGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2Vi
TGF5ZXIuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3LmgiCiAjaW5jbHVk
ZSAiV2ViTWVkaWFQbGF5ZXJBY3Rpb24uaCIKICNpbmNsdWRlICJXZWJOb2RlLmgiCiAjaW5jbHVk
ZSAiV2ViUGx1Z2luLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luQWN0aW9uLmgiCiAjaW5jbHVkZSAi
V2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBvaW50Lmgi
CiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51SW1wbC5oIgogI2luY2x1ZGUgIldlYlJhbmdlLmgiCi0j
aW5jbHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgogI2luY2x1ZGUgIldlYlJ1bnRpbWVGZWF0dXJl
cy5oIgogI2luY2x1ZGUgIldlYlNldHRpbmdzSW1wbC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlN0cmluZy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgogI2luY2x1ZGUgIldl
YlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NQ
cm94eS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkRyYWdEYXRhLmgiCisjaW5jbHVkZSAicGxh
dGZvcm0vV2ViSW1hZ2UuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBv
cnQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJWZWN0b3IuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRQb2ludC5oPgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJM
YXllci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg+CisjaW5jbHVkZSA8
cHVibGljL1dlYlBvaW50Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KICNpbmNsdWRl
IDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTY3Nyw2ICs2NzksMTggQEAgYm9vbCBXZWJWaWV3SW1w
bDo6Z2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdB
bmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
Cit7CisgICAgVFJBQ0VfRVZFTlQwKCJ3ZWJraXQiLCAiV2ViVmlld0ltcGw6OnRyYW5zZmVyQWN0
aXZlV2hlZWxGbGluZ0FuaW1hdGlvbiIpOworICAgIEFTU0VSVCghbV9nZXN0dXJlQW5pbWF0aW9u
KTsKKyAgICBtX2xhc3RXaGVlbFBvc2l0aW9uID0gcGFyYW1ldGVycy5wb2ludDsKKyAgICBtX2xh
c3RXaGVlbEdsb2JhbFBvc2l0aW9uID0gcGFyYW1ldGVycy5nbG9iYWxQb2ludDsKKyAgICBtX2Zs
aW5nTW9kaWZpZXIgPSBwYXJhbWV0ZXJzLm1vZGlmaWVyczsKKyAgICBPd25QdHI8UGxhdGZvcm1H
ZXN0dXJlQ3VydmU+IGN1cnZlID0gVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpj
cmVhdGUocGFyYW1ldGVycy5kZWx0YSwgSW50UG9pbnQocGFyYW1ldGVycy5jdW11bGF0aXZlU2Ny
b2xsKSk7CisgICAgbV9nZXN0dXJlQW5pbWF0aW9uID0gQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5p
bWF0aW9uOjpjcmVhdGUoY3VydmUucmVsZWFzZSgpLCB0aGlzLCBwYXJhbWV0ZXJzLnN0YXJ0VGlt
ZSk7CisgICAgc2NoZWR1bGVBbmltYXRpb24oKTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6c3Rh
cnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbCwgYm9vbCB1c2VBbmNo
b3IsIGZsb2F0IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCiB7CiAgICAgaWYgKCFtX2xh
eWVyVHJlZVZpZXcuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaAppbmRleCBiMjVkZGRlMDYyOGJlMzFlZWI0ZjNjODc0N2JkZmNlNzE5MDI1NWNmLi4zMDgy
ZDRlMDEzNWFmZWRiYTI1MzA4OTRjZTYwMDNiZTQyYjg1MWFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTI1Myw2ICsyNTMsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHBlcmZvcm1DdXN0b21Db250ZXh0TWVudUFjdGlvbih1bnNpZ25lZCBhY3Rp
b24pOwogICAgIHZpcnR1YWwgdm9pZCBhZGRQYWdlT3ZlcmxheShXZWJQYWdlT3ZlcmxheSosIGlu
dCAvKiB6T3JkZXIgKi8pOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVQYWdlT3ZlcmxheShXZWJQ
YWdlT3ZlcmxheSopOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdB
bmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKTsKIAogICAgIC8v
IFdlYkxheWVyVHJlZVZpZXdDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlZ2luRnJhbWUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcAppbmRleCBmYTgyNDdiMTEwYzA3
ZWIxNTdmZDU0NDkwMjY0OWUxZGI1MGYwZDA2Li45MmYwMDYxODQxNDc5NTZlMTAxOWZjNjkwMTVm
NjM5ZTQ4OTRmMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCkBAIC0z
MywxMyArMzMsMTQgQEAKICNpbmNsdWRlICJjYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uaCIK
ICNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgiCisjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIKIAogI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CiAjaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKLXVzaW5nIFdl
YktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcjsKLXVzaW5nIFdlYktpdDo6V2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGw7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBuYW1lc3Bh
Y2UgewogCkBAIC03MywxMSArNzQsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0
QWN0aXZlR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPFdlYkNvcmU6OkNDQWN0aXZlR2VzdHVy
ZUFuaW1hdGlvbj4pIE9WRVJSSURFIHsgfQogfTsKIAotY2xhc3MgTW9ja1dlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJDbGllbnQgOiBwdWJsaWMgV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVyQ2xpZW50IHsKK2NsYXNzIE1vY2tXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50IDog
cHVibGljIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKE1vY2tXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KTsKIHB1YmxpYzoK
ICAgICBNb2NrV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudCgpCi0gICAgICAgIDogV2Vi
S2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KCkKKyAgICAgICAgOiBXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KCkKICAgICB7CiAgICAgfQogICAgIHZpcnR1YWwgfk1v
Y2tXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KCkgeyB9CkBAIC04NSwxMSArODYsMTQg
QEAgcHVibGljOgogICAgIE1PQ0tfTUVUSE9EMCh3aWxsU2h1dGRvd24sIHZvaWQoKSk7CiAgICAg
TU9DS19NRVRIT0QwKGRpZEhhbmRsZUlucHV0RXZlbnQsIHZvaWQoKSk7CiAgICAgTU9DS19NRVRI
T0QxKGRpZE5vdEhhbmRsZUlucHV0RXZlbnQsIHZvaWQoYm9vbCBzZW5kVG9XaWRnZXQpKTsKKwor
ICAgIE1PQ0tfTUVUSE9EMSh0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24sIHZvaWQo
Y29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSk7CisKIH07CiAKIFRFU1QoV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGwsIGZyb21JZGVudGlmaWVyKQogewotICAgIFdlYktp
dDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKKyAgICBXZWJDb21wb3NpdG9yOjppbml0
aWFsaXplKDApOwogICAgIFdlYkNvcmU6OkRlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBhbHdheXNJ
bXBsVGhyZWFkOwogCiAgICAgLy8gQmVmb3JlIGNyZWF0aW5nIGFueSBXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVycywgbG9va3VwcyBmb3IgYW55IHZhbHVlIHNob3VsZCBmYWlsIGFuZCBub3QgY3Jh
c2guCkBAIC0xMTAsNyArMTE0LDcgQEAgVEVTVChXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bCwgZnJvbUlkZW50aWZpZXIpCiAKICAgICAvLyBBZnRlciB0aGUgY29tcG9zaXRvciBpcyBkZXN0
cm95ZWQsIGl0cyBlbnRyeSBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBtYXAuCiAgICAgRVhQ
RUNUX0VRKDAsIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXI6OmZyb21JZGVudGlmaWVyKGNvbXBv
c2l0b3JJZGVudGlmaWVyKSk7Ci0gICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigp
OworICAgIFdlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CiB9CiAKIGNsYXNzIFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKQEAgLTExOCw3
ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0
KCkKICAgICAgICAgOiBtX2V4cGVjdGVkRGlzcG9zaXRpb24oRGlkSGFuZGxlKQogICAgIHsKLSAg
ICAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOworICAgICAgICBXZWJD
b21wb3NpdG9yOjppbml0aWFsaXplKDApOwogICAgICAgICBtX2lucHV0SGFuZGxlciA9IFdlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpjcmVhdGUoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xp
ZW50KTsKICAgICAgICAgbV9pbnB1dEhhbmRsZXItPnNldENsaWVudCgmbV9tb2NrQ2xpZW50KTsK
ICAgICB9CkBAIC0xMjcsMzkgKzEzMSw0MSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2lu
cHV0SGFuZGxlci0+c2V0Q2xpZW50KDApOwogICAgICAgICBtX2lucHV0SGFuZGxlci5jbGVhcigp
OwotICAgICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CisgICAgICAgIFdl
YkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CiAgICAgfQogCi0gICAgdm9pZCB2ZXJpZnlBbmRSZXNl
dE1vY2tzKCkKLSAgICB7Ci0gICAgICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhw
ZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7Ci0gICAgICAgIHRlc3Rpbmc6
Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDbGllbnQpOwotICAgICAg
ICBzd2l0Y2ggKG1fZXhwZWN0ZWREaXNwb3NpdGlvbikgewotICAgICAgICBjYXNlIERpZEhhbmRs
ZToKLSAgICAgICAgICAgIC8vIElmIHdlIGV4cGVjdCB0byBoYW5kbGUgZXZlbnRzLCB3ZSBzaG91
bGRuJ3QgZ2V0IGFueSBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KCkgY2FsbHMgd2l0aCBhbnkgcGFy
YW1ldGVyLgotICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5k
bGVJbnB1dEV2ZW50KDo6dGVzdGluZzo6XykpLlRpbWVzKDApOwotICAgICAgICAgICAgRVhQRUNU
X0NBTEwobV9tb2NrQ2xpZW50LCBkaWRIYW5kbGVJbnB1dEV2ZW50KCkpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgRGlkTm90SGFuZGxlOgotICAgICAgICAgICAgLy8gSWYgd2Ug
YXJlbid0IGV4cGVjdGluZyB0byBoYW5kbGUgZXZlbnRzLCB3ZSBzaG91bGRuJ3QgY2FsbCBkaWRI
YW5kbGVJbnB1dEV2ZW50KCkuCi0gICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQs
IGRpZEhhbmRsZUlucHV0RXZlbnQoKSkuVGltZXMoMCk7Ci0gICAgICAgICAgICBFWFBFQ1RfQ0FM
TChtX21vY2tDbGllbnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQoZmFsc2UpKS5UaW1lcygwKTsK
LSAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRF
dmVudCh0cnVlKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEcm9wRXZlbnQ6
Ci0gICAgICAgICAgICAvLyBJZiB3ZSdyZSBleHBlY3RpbmcgdG8gZHJvcCwgd2Ugc2hvdWxkbid0
IGdldCBhbnkgZGlkSGFuZGxlLi4oKSBvciBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KHRydWUgLyog
c2VuZFRvV2lkZ2V0ICovKSBjYWxscy4KLSAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0Ns
aWVudCwgZGlkSGFuZGxlSW5wdXRFdmVudCgpKS5UaW1lcygwKTsKLSAgICAgICAgICAgIEVYUEVD
VF9DQUxMKG1fbW9ja0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudCh0cnVlKSkuVGltZXMo
MCk7Ci0gICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZE5vdEhhbmRsZUlu
cHV0RXZlbnQoZmFsc2UpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQor
ICAgIC8vIFRoaXMgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIGJlY2F1c2Ugd2hlbiBhbiBleHBlY3Rh
dGlvbiBpcyBub3Qgc2F0aXNmaWVkIHRoZSBvbmx5IG91dHB1dCB5b3UgZ2V0CisgICAgLy8gb3V0
IG9mIGdtb2NrIGlzIHRoZSBsaW5lIG51bWJlciB0aGF0IHNldCB0aGUgZXhwZWN0YXRpb24uCisj
ZGVmaW5lIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKSBkbyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJF
eHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlm
eUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDbGllbnQpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzd2l0Y2ggKG1f
ZXhwZWN0ZWREaXNwb3NpdGlvbikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
Y2FzZSBEaWRIYW5kbGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICAvKiBJZiB3ZSBleHBlY3QgdG8gaGFuZGxlIGV2ZW50cywgd2Ugc2hvdWxk
bid0IGdldCBhbnkgZGlkTm90SGFuZGxlSW5wdXRFdmVudCgpIGNhbGxzIHdpdGggYW55IHBhcmFt
ZXRlci4gKi8gXAorICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RI
YW5kbGVJbnB1dEV2ZW50KDo6dGVzdGluZzo6XykpLlRpbWVzKDApOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVu
dCwgZGlkSGFuZGxlSW5wdXRFdmVudCgpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBicmVhazsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjYXNlIERp
ZE5vdEhhbmRsZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIC8qIElmIHdlIGFyZW4ndCBleHBlY3RpbmcgdG8gaGFuZGxlIGV2ZW50cywgd2Ugc2hv
dWxkbid0IGNhbGwgZGlkSGFuZGxlSW5wdXRFdmVudCgpLiAqLyAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZEhhbmRsZUlucHV0
RXZlbnQoKSkuVGltZXMoMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWRO
b3RIYW5kbGVJbnB1dEV2ZW50KGZhbHNlKSkuVGltZXMoMCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9ja0Ns
aWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudCh0cnVlKSk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBicmVhazsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjYXNl
IERyb3BFdmVudDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIC8qIElmIHdlJ3JlIGV4cGVjdGluZyB0byBkcm9wLCB3ZSBzaG91bGRuJ3QgZ2V0
IGFueSBkaWRIYW5kbGUuLigpIG9yIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQodHJ1ZSkgY2FsbHMu
ICovICBcCisgICAgICAgICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZEhhbmRsZUlu
cHV0RXZlbnQoKSkuVGltZXMoMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBk
aWROb3RIYW5kbGVJbnB1dEV2ZW50KHRydWUpKS5UaW1lcygwKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEVYUEVDVF9DQUxMKG1fbW9j
a0NsaWVudCwgZGlkTm90SGFuZGxlSW5wdXRFdmVudChmYWxzZSkpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBicmVhazsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQog
CiBwcm90ZWN0ZWQ6CiAgICAgTW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50IG1fbW9ja0NDSW5wdXRI
YW5kbGVyQ2xpZW50OwogICAgIE93blB0cjxXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbD4g
bV9pbnB1dEhhbmRsZXI7CiAgICAgTW9ja1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQg
bV9tb2NrQ2xpZW50OwotICAgIFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50IGdlc3R1cmU7CisgICAg
V2ViR2VzdHVyZUV2ZW50IGdlc3R1cmU7CiAKICAgICBlbnVtIEV4cGVjdGVkRGlzcG9zaXRpb24g
eyBEaWRIYW5kbGUsIERpZE5vdEhhbmRsZSwgRHJvcEV2ZW50IH07CiAgICAgRXhwZWN0ZWREaXNw
b3NpdGlvbiBtX2V4cGVjdGVkRGlzcG9zaXRpb247CkBAIC0xNzMsMjQgKzE3OSwyNCBAQCBURVNU
X0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlU2Nyb2xsU3RhcnRl
ZCkKIHsKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2VuZCBhbnkgZXZlbnRzIHRvIHRoZSB3aWRnZXQg
Zm9yIHRoaXMgZ2VzdHVyZS4KICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEaWRIYW5kbGU7
Ci0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1Mo
KTsKIAogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxC
ZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6
OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOwog
Ci0gICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xs
QmVnaW47CisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJl
Z2luOwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCi0g
ICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsK
IAotICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9s
bFVwZGF0ZTsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xs
VXBkYXRlOwogICAgIGdlc3R1cmUuZGVsdGFZID0gLTQwOyAvLyAtWSBtZWFucyBzY3JvbGwgZG93
biAtIGkuZS4gaW4gdGhlICtZIGRpcmVjdGlvbi4KICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lu
cHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6UHJvcGVydHkoJldlYkNvcmU6Oklu
dFNpemU6OmhlaWdodCwgdGVzdGluZzo6R3QoMCkpKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhh
bmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7Cisg
ICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0
OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOworICAgIGdlc3R1cmUudHlwZSA9IFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7CiAgICAgZ2VzdHVyZS5kZWx0YVkgPSAwOwog
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSk7
CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CkBAIC0yMDAs
MjMgKzIwNiwyMyBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBn
ZXN0dXJlU2Nyb2xsRmFpbGVkKQogewogICAgIC8vIFdlIHNob3VsZCBzZW5kIGFsbCBldmVudHMg
dG8gdGhlIHdpZGdldCBmb3IgdGhpcyBnZXN0dXJlLgogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlv
biA9IERpZE5vdEhhbmRsZTsKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZ
X0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQsIHNjcm9sbEJlZ2luKDo6dGVzdGluZzo6XywgOjp0ZXN0aW5nOjpfKSkKICAgICAg
ICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVu
dDo6U2Nyb2xsRmFpbGVkKSk7CiAKLSAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0
RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2
ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0
RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZ
X0FORF9SRVNFVF9NT0NLUygpOwogCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOworICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU7CiAgICAgZ2VzdHVyZS5kZWx0YVkgPSA0MDsKICAg
ICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAotICAgIHZlcmlm
eUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKLSAgICBn
ZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7Cisg
ICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDsKICAgICBn
ZXN0dXJlLmRlbHRhWSA9IDA7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQo
Z2VzdHVyZSk7CiB9CkBAIC0yMjgsMTIgKzIzNCwxMiBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlU2Nyb2xsSWdub3JlZCkKICAgICAvLyBpbmRpY2F0
aW5nIHRoYXQgd2UgY291bGQgZGV0ZXJtaW5lIHRoYXQgdGhlcmUncyBub3RoaW5nIHRoYXQgY291
bGQgc2Nyb2xsIG9yIG90aGVyd2lzZQogICAgIC8vIHJlYWN0IHRvIHRoaXMgZ2VzdHVyZSBzZXF1
ZW5jZSBhbmQgdGh1cyB3ZSBzaG91bGQgZHJvcCB0aGUgd2hvbGUgZ2VzdHVyZSBzZXF1ZW5jZSBv
biB0aGUgZmxvb3IuCiAgICAgbV9leHBlY3RlZERpc3Bvc2l0aW9uID0gRHJvcEV2ZW50OwotICAg
IHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAK
ICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4o
dGVzdGluZzo6XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1
cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElnbm9yZWQpKTsKIAotICAg
IGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2lu
OworICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjsK
ICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIH0KIApAQCAt
MjQxLDMzICsyNDcsMzMgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVz
dCwgZ2VzdHVyZVBpbmNoKQogewogICAgIC8vIFdlIHNob3VsZG4ndCBzZW5kIGFueSBldmVudHMg
dG8gdGhlIHdpZGdldCBmb3IgdGhpcyBnZXN0dXJlLgogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlv
biA9IERpZEhhbmRsZTsKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FO
RF9SRVNFVF9NT0NLUygpOwogCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2
ZW50OjpHZXN0dXJlUGluY2hCZWdpbjsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlUGluY2hCZWdpbjsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxl
ckNsaWVudCwgcGluY2hHZXN0dXJlQmVnaW4oKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRs
ZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAg
VkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hVcGRhdGU7CisgICAgZ2VzdHVyZS50eXBlID0gV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoVXBkYXRlOwogICAgIGdlc3R1cmUuZGVsdGFYID0gMS41
OwogICAgIGdlc3R1cmUueCA9IDc7CiAgICAgZ2VzdHVyZS55ID0gMTM7CiAgICAgRVhQRUNUX0NB
TEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHBpbmNoR2VzdHVyZVVwZGF0ZSgxLjUsIFdl
YkNvcmU6OkludFBvaW50KDcsIDEzKSkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1
dEV2ZW50KGdlc3R1cmUpOwogCi0gICAgdmVyaWZ5QW5kUmVzZXRNb2NrcygpOworICAgIFZFUklG
WV9BTkRfUkVTRVRfTU9DS1MoKTsKIAotICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5w
dXRFdmVudDo6R2VzdHVyZVBpbmNoVXBkYXRlOworICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZTsKICAgICBnZXN0dXJlLmRlbHRhWCA9IDAuNTsKICAg
ICBnZXN0dXJlLnggPSA5OwogICAgIGdlc3R1cmUueSA9IDY7CiAgICAgRVhQRUNUX0NBTEwobV9t
b2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHBpbmNoR2VzdHVyZVVwZGF0ZSguNSwgV2ViQ29yZTo6
SW50UG9pbnQoOSwgNikpKTsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChn
ZXN0dXJlKTsKIAotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JF
U0VUX01PQ0tTKCk7CiAKLSAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6
Okdlc3R1cmVQaW5jaEVuZDsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlUGluY2hFbmQ7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQs
IHBpbmNoR2VzdHVyZUVuZCgpKTsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVu
dChnZXN0dXJlKTsKIH0KQEAgLTI3NiwyMCArMjgyLDIwIEBAIFRFU1RfRihXZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ1N0YXJ0ZWQpCiB7CiAgICAgLy8gV2Ug
c2hvdWxkbid0IHNlbmQgYW55IGV2ZW50cyB0byB0aGUgd2lkZ2V0IGZvciB0aGlzIGdlc3R1cmUu
CiAgICAgbV9leHBlY3RlZERpc3Bvc2l0aW9uID0gRGlkSGFuZGxlOwotICAgIHZlcmlmeUFuZFJl
c2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICBFWFBFQ1Rf
Q0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6Xywg
dGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6
Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKIAotICAgIGdlc3R1cmUudHlw
ZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisgICAgZ2VzdHVy
ZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CiAgICAgZ2VzdHVyZS5k
ZWx0YVggPSAxMDsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwg
c2NoZWR1bGVBbmltYXRpb24oKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZl
bnQoZ2VzdHVyZSk7CiAKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FO
RF9SRVNFVF9NT0NLUygpOwogCiAgICAgLy8gVmVyaWZ5IHRoYXQgYSBHZXN0dXJlRmxpbmdDYW5j
ZWwgZHVyaW5nIGFuIGFuaW1hdGlvbiBjYW5jZWxzIGl0LgotICAgIGdlc3R1cmUudHlwZSA9IFdl
YktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOworICAgIGdlc3R1cmUudHlw
ZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDsKICAgICBtX2lucHV0SGFuZGxl
ci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIH0KIApAQCAtMjk3LDM2ICszMDMsMzYgQEAg
VEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nRmFp
bGVkKQogewogICAgIC8vIFdlIHNob3VsZCBzZW5kIGFsbCBldmVudHMgdG8gdGhlIHdpZGdldCBm
b3IgdGhpcyBnZXN0dXJlLgogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZE5vdEhhbmRs
ZTsKLSAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NL
UygpOwogCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9s
bEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGlu
Zzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxGYWlsZWQpKTsK
IAotICAgIGdlc3R1cmUudHlwZSA9IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5n
U3RhcnQ7CisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3Rh
cnQ7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKLSAg
ICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwog
CiAgICAgLy8gRXZlbiBpZiB3ZSBkaWRuJ3Qgc3RhcnQgYSBmbGluZyBvdXJzZWx2ZXMsIHdlIHN0
aWxsIG5lZWQgdG8gc2VuZCB0aGUgY2FuY2VsIGV2ZW50IHRvIHRoZSB3aWRnZXQuCi0gICAgZ2Vz
dHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw7Cisg
ICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOwogICAg
IG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogfQogCiBURVNUX0Yo
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdJZ25vcmVkKQog
ewogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZE5vdEhhbmRsZTsKLSAgICB2ZXJpZnlB
bmRSZXNldE1vY2tzKCk7CisgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgRVhQ
RUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6
Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNv
cmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJZ25vcmVkKSk7CiAKLSAgICBnZXN0dXJl
LnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OworICAgIGdl
c3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OwogICAgIG1faW5w
dXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCi0gICAgdmVyaWZ5QW5kUmVz
ZXRNb2NrcygpOworICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIC8vIEV2ZW4g
aWYgd2UgZGlkbid0IHN0YXJ0IGEgZmxpbmcgb3Vyc2VsdmVzLCB3ZSBzdGlsbCBuZWVkIHRvIHNl
bmQgdGhlIGNhbmNlbCBldmVudCB0byB0aGUgd2lkZ2V0LgotICAgIGdlc3R1cmUudHlwZSA9IFdl
YktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsOworICAgIGdlc3R1cmUudHlw
ZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDsKICAgICBtX2lucHV0SGFuZGxl
ci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIH0KIApAQCAtMzM0LDEyICszNDAsMjIgQEAg
VEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nQW5p
bWF0ZXMpCiB7CiAgICAgLy8gV2Ugc2hvdWxkbid0IHNlbmQgYW55IGV2ZW50cyB0byB0aGUgd2lk
Z2V0IGZvciB0aGlzIGdlc3R1cmUuCiAgICAgbV9leHBlY3RlZERpc3Bvc2l0aW9uID0gRGlkSGFu
ZGxlOwotICAgIHZlcmlmeUFuZFJlc2V0TW9ja3MoKTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01P
Q0tTKCk7CiAKICAgICAvLyBPbiB0aGUgZmxpbmcgc3RhcnQsIHdlIHNob3VsZCBzY2hlZHVsZSBh
biBhbmltYXRpb24gYnV0IG5vdCBhY3R1YWxseSBzdGFydAogICAgIC8vIHNjcm9sbGluZy4KLSAg
ICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0
OwotICAgIGdlc3R1cmUuZGVsdGFYID0gLTEwMDA7CisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5w
dXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisgICAgV2ViRmxvYXRQb2ludCBmbGluZ0RlbHRh
ID0gV2ViRmxvYXRQb2ludCgxMDAwLCAwKTsKKyAgICBXZWJQb2ludCBmbGluZ1BvaW50ID0gV2Vi
UG9pbnQoNywgMTMpOworICAgIFdlYlBvaW50IGZsaW5nR2xvYmFsUG9pbnQgPSBXZWJQb2ludCgx
NywgMjMpOworICAgIGludCBtb2RpZmllcnMgPSA3OworICAgIGdlc3R1cmUuZGVsdGFYID0gZmxp
bmdEZWx0YS54OworICAgIGdlc3R1cmUuZGVsdGFZID0gZmxpbmdEZWx0YS55OworICAgIGdlc3R1
cmUueCA9IGZsaW5nUG9pbnQueDsKKyAgICBnZXN0dXJlLnkgPSBmbGluZ1BvaW50Lnk7CisgICAg
Z2VzdHVyZS5nbG9iYWxYID0gZmxpbmdHbG9iYWxQb2ludC54OworICAgIGdlc3R1cmUuZ2xvYmFs
WSA9IGZsaW5nR2xvYmFsUG9pbnQueTsKKyAgICBnZXN0dXJlLm1vZGlmaWVycyA9IG1vZGlmaWVy
czsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVB
bmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQs
IHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2Uo
dGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFy
dGVkKSk7CkBAIC0zNTYsMzMgKzM3MiwxOTQgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nQW5pbWF0ZXMpCiAKICAgICB0ZXN0aW5nOjpNb2Nr
OjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQp
OwogCi0gICAgLy8gVGhlIHNlY29uZCBjYWxsIHNob3VsZCBzdGFydCBzY3JvbGxpbmcgaW4gdGhl
ICtYIGRpcmVjdGlvbi4KKyAgICAvLyBUaGUgc2Vjb25kIGNhbGwgc2hvdWxkIHN0YXJ0IHNjcm9s
bGluZyBpbiB0aGUgLVggZGlyZWN0aW9uLgorICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRI
YW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6
XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lu
cHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6UHJvcGVydHkoJldlYkNvcmU6Oklu
dFNpemU6OndpZHRoLCB0ZXN0aW5nOjpMdCgwKSkpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tD
Q0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkpOworICAgIG1faW5wdXRIYW5kbGVyLT5h
bmltYXRlKDEwLjEpOworCisgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3Rh
dGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKKworICAgIC8vIExldCdzIHNheSBv
biB0aGUgdGhpcmQgY2FsbCB3ZSBoaXQgYSBub24tc2Nyb2xsYWJsZSByZWdpb24uIFdlIHNob3Vs
ZCBhYm9ydCB0aGUgZmxpbmcgYW5kIG5vdCBzY3JvbGwuCisgICAgLy8gV2UgYWxzbyBzaG91bGQg
cGFzcyB0aGUgY3VycmVudCBmbGluZyBwYXJhbWV0ZXJzIG91dCB0byB0aGUgY2xpZW50IHNvIHRo
ZSByZXN0IG9mIHRoZSBmbGluZyBjYW4gYmUKKyAgICAvLyB0cmFuc2ZlcnJlZCB0byB0aGUgbWFp
biB0aHJlYWQuCisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNj
aGVkdWxlQW5pbWF0aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVy
Q2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldp
bGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Ny
b2xsRmFpbGVkKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQs
IHNjcm9sbEJ5KHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tD
Q0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkpLlRpbWVzKDApOworCisgICAgLy8gRXhw
ZWN0ZWQgd2hlZWwgZmxpbmcgYW5pbWF0aW9uIHBhcmFtZXRlcnM6CisgICAgLy8gKikgZmxpbmdE
ZWx0YSBhbmQgZmxpbmdQb2ludCBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsIEdlc3R1cmVGbGlu
Z1N0YXJ0IGV2ZW50CisgICAgLy8gKikgc3RhcnRUaW1lIHNob3VsZCBiZSAxMCB0byBtYXRjaCB0
aGUgdGltZSBwYXJhbWV0ZXIgb2YgdGhlIGZpcnN0IGFuaW1hdGUoKSBjYWxsIGFmdGVyIHRoZSBH
ZXN0dXJlRmxpbmdTdGFydAorICAgIC8vICopIGN1bXVsYXRpdmVTY3JvbGwgZGVwZW5kcyBvbiB0
aGUgY3VydmUsIGJ1dCBzaW5jZSB3ZSd2ZSBhbmltYXRlZCBpbiB0aGUgLVggZGlyZWN0aW9uIHRo
ZSBYIHZhbHVlIHNob3VsZCBiZSA8IDAKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIHRy
YW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbih0ZXN0aW5nOjpBbGxPZigKKyAgICAgICAg
dGVzdGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpkZWx0YSwgdGVz
dGluZzo6RXEoZmxpbmdEZWx0YSkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZl
V2hlZWxGbGluZ1BhcmFtZXRlcnM6OnBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ1BvaW50KSksCisg
ICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6Z2xv
YmFsUG9pbnQsIHRlc3Rpbmc6OkVxKGZsaW5nR2xvYmFsUG9pbnQpKSwKKyAgICAgICAgdGVzdGlu
Zzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjptb2RpZmllcnMsIHRlc3Rp
bmc6OkVxKG1vZGlmaWVycykpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnM6OnN0YXJ0VGltZSwgdGVzdGluZzo6RXEoMTApKSwKKyAgICAgICAg
dGVzdGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpjdW11bGF0aXZl
U2Nyb2xsLAorICAgICAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYlNpemU6OndpZHRoLCB0ZXN0
aW5nOjpHdCgwKSkpKSkpOworICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwLjIpOworCisg
ICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5w
dXRIYW5kbGVyQ2xpZW50KTsKKyAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVj
dGF0aW9ucygmbV9tb2NrQ2xpZW50KTsKKworICAgIC8vIFNpbmNlIHdlJ3ZlIGFib3J0ZWQgdGhl
IGZsaW5nLCB0aGUgbmV4dCBhbmltYXRpb24gc2hvdWxkIGJlIGEgbm8tb3AgYW5kIHNob3VsZCBu
b3QgcmVzdWx0IGluIGFub3RoZXIKKyAgICAvLyBmcmFtZSBiZWluZyByZXF1ZXN0ZWQuCisgICAg
RVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9u
KCkpLlRpbWVzKDApOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50
LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CisgICAgbV9p
bnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMyk7CisKKyAgICAvLyBTaW5jZSB3ZSd2ZSB0cmFuc2Zl
cnJlZCB0aGUgZmxpbmcgdG8gdGhlIG1haW4gdGhyZWFkLCB3ZSBuZWVkIHRvIHBhc3MgdGhlIG5l
eHQgR2VzdHVyZUZsaW5nQ2FuY2VsIHRvIHRoZSBtYWluCisgICAgLy8gdGhyZWFkIGFzIHdlbGwu
CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5kbGVJbnB1dEV2ZW50KHRy
dWUpKTsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5j
ZWw7CisgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7Cit9CisK
K1RFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ1Ry
YW5zZmVyUmVzZXRzKQoreworICAgIC8vIFdlIHNob3VsZG4ndCBzZW5kIGFueSBldmVudHMgdG8g
dGhlIHdpZGdldCBmb3IgdGhpcyBnZXN0dXJlLgorICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9
IERpZEhhbmRsZTsKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CisKKyAgICAvLyBTdGFy
dCBhIGdlc3R1cmUgZmxpbmcgaW4gdGhlIC1YIGRpcmVjdGlvbiB3aXRoIHplcm8gWSBtb3ZlbWVu
dC4KKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsK
KyAgICBXZWJGbG9hdFBvaW50IGZsaW5nRGVsdGEgPSBXZWJGbG9hdFBvaW50KDEwMDAsIDApOwor
ICAgIFdlYlBvaW50IGZsaW5nUG9pbnQgPSBXZWJQb2ludCg3LCAxMyk7CisgICAgV2ViUG9pbnQg
ZmxpbmdHbG9iYWxQb2ludCA9IFdlYlBvaW50KDE3LCAyMyk7CisgICAgaW50IG1vZGlmaWVycyA9
IDE7CisgICAgZ2VzdHVyZS5kZWx0YVggPSBmbGluZ0RlbHRhLng7CisgICAgZ2VzdHVyZS5kZWx0
YVkgPSBmbGluZ0RlbHRhLnk7CisgICAgZ2VzdHVyZS54ID0gZmxpbmdQb2ludC54OworICAgIGdl
c3R1cmUueSA9IGZsaW5nUG9pbnQueTsKKyAgICBnZXN0dXJlLmdsb2JhbFggPSBmbGluZ0dsb2Jh
bFBvaW50Lng7CisgICAgZ2VzdHVyZS5nbG9iYWxZID0gZmxpbmdHbG9iYWxQb2ludC55OworICAg
IGdlc3R1cmUubW9kaWZpZXJzID0gbW9kaWZpZXJzOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0ND
SW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBFWFBFQ1RfQ0FM
TChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVz
dGluZzo6XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJ
bnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKKyAgICBtX2lucHV0SGFuZGxlci0+
aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKKworICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFu
ZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisKKyAgICAv
LyBTdGFydCB0aGUgZmxpbmcgYW5pbWF0aW9uIGF0IHRpbWUgMTAuIFRoaXMgc2hvdWxkbid0IGFj
dHVhbGx5IHNjcm9sbCwganVzdCBlc3RhYmxpc2ggYSBzdGFydCB0aW1lLgorICAgIEVYUEVDVF9D
QUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVz
dGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDApOworICAgIG1faW5wdXRIYW5kbGVyLT5hbmlt
YXRlKDEwKTsKKworICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25z
KCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisKKyAgICAvLyBUaGUgc2Vjb25kIGNhbGwg
c2hvdWxkIHN0YXJ0IHNjcm9sbGluZyBpbiB0aGUgLVggZGlyZWN0aW9uLgogICAgIEVYUEVDVF9D
QUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKICAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVz
dGluZzo6XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4o
V2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKLSAgICBFWFBF
Q1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6UHJv
cGVydHkoJldlYkNvcmU6OkludFNpemU6OndpZHRoLCB0ZXN0aW5nOjpHdCgwKSkpKTsKKyAgICBF
WFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6
UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6OndpZHRoLCB0ZXN0aW5nOjpMdCgwKSkpKTsKICAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkpOwog
ICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwLjEpOwogCiAgICAgdGVzdGluZzo6TW9jazo6
VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsK
IAogICAgIC8vIExldCdzIHNheSBvbiB0aGUgdGhpcmQgY2FsbCB3ZSBoaXQgYSBub24tc2Nyb2xs
YWJsZSByZWdpb24uIFdlIHNob3VsZCBhYm9ydCB0aGUgZmxpbmcgYW5kIG5vdCBzY3JvbGwuCi0g
ICAgLy8gRklYTUU6IFdlIGFsc28gbmVlZCB0byBkbyBzb21lIHdvcmsgdG8gdHJhbnNmZXIgdGhl
IHJlc3Qgb2YgdGhpcyBmbGluZyB0byB0aGUgbWFpbiB0aHJlYWQuCi0gICAgLy8gQWRkIHRlc3Rz
IGZvciB0aGlzIG9uY2UgaXQncyBpbXBsZW1lbnRlZC4KKyAgICAvLyBXZSBhbHNvIHNob3VsZCBw
YXNzIHRoZSBjdXJyZW50IGZsaW5nIHBhcmFtZXRlcnMgb3V0IHRvIHRoZSBjbGllbnQgc28gdGhl
IHJlc3Qgb2YgdGhlIGZsaW5nIGNhbiBiZQorICAgIC8vIHRyYW5zZmVycmVkIHRvIHRoZSBtYWlu
IHRocmVhZC4KICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2No
ZWR1bGVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJD
bGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2ls
bE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3Jv
bGxGYWlsZWQpKTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwg
c2Nyb2xsQnkodGVzdGluZzo6XykpLlRpbWVzKDApOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0ND
SW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSkuVGltZXMoMCk7CisKKyAgICAvLyBFeHBl
Y3RlZCB3aGVlbCBmbGluZyBhbmltYXRpb24gcGFyYW1ldGVyczoKKyAgICAvLyAqKSBmbGluZ0Rl
bHRhIGFuZCBmbGluZ1BvaW50IHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwgR2VzdHVyZUZsaW5n
U3RhcnQgZXZlbnQKKyAgICAvLyAqKSBzdGFydFRpbWUgc2hvdWxkIGJlIDEwIHRvIG1hdGNoIHRo
ZSB0aW1lIHBhcmFtZXRlciBvZiB0aGUgZmlyc3QgYW5pbWF0ZSgpIGNhbGwgYWZ0ZXIgdGhlIEdl
c3R1cmVGbGluZ1N0YXJ0CisgICAgLy8gKikgY3VtdWxhdGl2ZVNjcm9sbCBkZXBlbmRzIG9uIHRo
ZSBjdXJ2ZSwgYnV0IHNpbmNlIHdlJ3ZlIGFuaW1hdGVkIGluIHRoZSAtWCBkaXJlY3Rpb24gdGhl
IFggdmFsdWUgc2hvdWxkIGJlIDwgMAorICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgdHJh
bnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKHRlc3Rpbmc6OkFsbE9mKAorICAgICAgICB0
ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmRlbHRhLCB0ZXN0
aW5nOjpFcShmbGluZ0RlbHRhKSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3RpdmVX
aGVlbEZsaW5nUGFyYW1ldGVyczo6cG9pbnQsIHRlc3Rpbmc6OkVxKGZsaW5nUG9pbnQpKSwKKyAg
ICAgICAgdGVzdGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpnbG9i
YWxQb2ludCwgdGVzdGluZzo6RXEoZmxpbmdHbG9iYWxQb2ludCkpLAorICAgICAgICB0ZXN0aW5n
OjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6Om1vZGlmaWVycywgdGVzdGlu
Zzo6RXEobW9kaWZpZXJzKSksCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVl
bEZsaW5nUGFyYW1ldGVyczo6c3RhcnRUaW1lLCB0ZXN0aW5nOjpFcSgxMCkpLAorICAgICAgICB0
ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmN1bXVsYXRpdmVT
Y3JvbGwsCisgICAgICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViU2l6ZTo6d2lkdGgsIHRlc3Rp
bmc6Okd0KDApKSkpKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMik7CiAKICAg
ICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1
dEhhbmRsZXJDbGllbnQpOworICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0
YXRpb25zKCZtX21vY2tDbGllbnQpOwogCiAgICAgLy8gU2luY2Ugd2UndmUgYWJvcnRlZCB0aGUg
ZmxpbmcsIHRoZSBuZXh0IGFuaW1hdGlvbiBzaG91bGQgYmUgYSBuby1vcCBhbmQgc2hvdWxkIG5v
dCByZXN1bHQgaW4gYW5vdGhlcgogICAgIC8vIGZyYW1lIGJlaW5nIHJlcXVlc3RlZC4KICAgICBF
WFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24o
KSkuVGltZXMoMCk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQs
IHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKICAgICBtX2lu
cHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4zKTsKKworICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFu
ZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisKKyAgICAv
LyBTaW5jZSB3ZSd2ZSB0cmFuc2ZlcnJlZCB0aGUgZmxpbmcgdG8gdGhlIG1haW4gdGhyZWFkLCB3
ZSBuZWVkIHRvIHBhc3MgdGhlIG5leHQgR2VzdHVyZUZsaW5nQ2FuY2VsIHRvIHRoZSBtYWluCisg
ICAgLy8gdGhyZWFkIGFzIHdlbGwuCisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWRO
b3RIYW5kbGVJbnB1dEV2ZW50KHRydWUpKTsKKyAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2
ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw7CisgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0
RXZlbnQoZ2VzdHVyZSk7CisKKyAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CisKKyAgICAv
LyBTdGFydCBhIHNlY29uZCBnZXN0dXJlIGZsaW5nLCB0aGlzIHRpbWUgaW4gdGhlICtZIGRpcmVj
dGlvbiB3aXRoIG5vIFguCisgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZUZsaW5nU3RhcnQ7CisgICAgZmxpbmdEZWx0YSA9IFdlYkZsb2F0UG9pbnQoMCwgLTEwMDApOwor
ICAgIGZsaW5nUG9pbnQgPSBXZWJQb2ludCg5NSwgODcpOworICAgIGZsaW5nR2xvYmFsUG9pbnQg
PSBXZWJQb2ludCgzMiwgNzEpOworICAgIG1vZGlmaWVycyA9IDI7CisgICAgZ2VzdHVyZS5kZWx0
YVggPSBmbGluZ0RlbHRhLng7CisgICAgZ2VzdHVyZS5kZWx0YVkgPSBmbGluZ0RlbHRhLnk7Cisg
ICAgZ2VzdHVyZS54ID0gZmxpbmdQb2ludC54OworICAgIGdlc3R1cmUueSA9IGZsaW5nUG9pbnQu
eTsKKyAgICBnZXN0dXJlLmdsb2JhbFggPSBmbGluZ0dsb2JhbFBvaW50Lng7CisgICAgZ2VzdHVy
ZS5nbG9iYWxZID0gZmxpbmdHbG9iYWxQb2ludC55OworICAgIGdlc3R1cmUubW9kaWZpZXJzID0g
bW9kaWZpZXJzOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBz
Y2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxl
ckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCisgICAgICAgIC5X
aWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNj
cm9sbFN0YXJ0ZWQpKTsKKyAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0
dXJlKTsKKworICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZt
X21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisKKyAgICAvLyBTdGFydCB0aGUgc2Vjb25kIGZs
aW5nIGFuaW1hdGlvbiBhdCB0aW1lIDMwLgorICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRI
YW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6
XykpLlRpbWVzKDApOworICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDMwKTsKKworICAgIHRl
c3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFu
ZGxlckNsaWVudCk7CisKKyAgICAvLyBUaWNrIHRoZSBzZWNvbmQgZmxpbmcgb25jZSBub3JtYWxs
eS4KKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVB
bmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQs
IHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2Uo
dGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFy
dGVkKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9s
bEJ5KHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjpoZWlnaHQsIHRlc3Rpbmc6
Okd0KDApKSkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBz
Y3JvbGxFbmQoKSk7CisgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMzAuMSk7CisKKyAgICB0
ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhh
bmRsZXJDbGllbnQpOworCisgICAgLy8gVGhlbiBhYm9ydCB0aGUgc2Vjb25kIGZsaW5nLgorICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlv
bigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xs
QmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5n
OjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCkpOwor
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0
aW5nOjpfKSkuVGltZXMoMCk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJD
bGllbnQsIHNjcm9sbEVuZCgpKS5UaW1lcygwKTsKKworICAgIC8vIFdlIHNob3VsZCBnZXQgcGFy
YW1ldGVycyBmcm9tIHRoZSBzZWNvbmQgZmxpbmcsIG5vdGhpbmcgZnJvbSB0aGUgZmlyc3QgZmxp
bmcgc2hvdWxkICJsZWFrIi4KKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIHRyYW5zZmVy
QWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbih0ZXN0aW5nOjpBbGxPZigKKyAgICAgICAgdGVzdGlu
Zzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpkZWx0YSwgdGVzdGluZzo6
RXEoZmxpbmdEZWx0YSkpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnM6OnBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ1BvaW50KSksCisgICAgICAg
IHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6Z2xvYmFsUG9p
bnQsIHRlc3Rpbmc6OkVxKGZsaW5nR2xvYmFsUG9pbnQpKSwKKyAgICAgICAgdGVzdGluZzo6Rmll
bGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjptb2RpZmllcnMsIHRlc3Rpbmc6OkVx
KG1vZGlmaWVycykpLAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnM6OnN0YXJ0VGltZSwgdGVzdGluZzo6RXEoMzApKSwKKyAgICAgICAgdGVzdGlu
Zzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpjdW11bGF0aXZlU2Nyb2xs
LAorICAgICAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYlNpemU6OmhlaWdodCwgdGVzdGluZzo6
THQoMCkpKSkpKTsKKyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgzMC4yKTsKIH0KIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>