<?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>96516</bug_id>
          
          <creation_ts>2012-09-12 07:54:03 -0700</creation_ts>
          <short_desc>[Chromium] Move UNIX-specific theme functions out of PlatformSupport</short_desc>
          <delta_ts>2012-09-27 12:48:46 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>82948</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Pilgrim (Google)">pilgrim</reporter>
          <assigned_to name="Mark Pilgrim (Google)">pilgrim</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>peter+ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>718355</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-12 07:54:03 -0700</bug_when>
    <thetext>[Chromium] Move UNIX-specific theme functions out of PlatformSupport</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718356</commentid>
    <comment_count>1</comment_count>
      <attachid>163627</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-12 07:54:25 -0700</bug_when>
    <thetext>Created attachment 163627
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723591</commentid>
    <comment_count>2</comment_count>
      <attachid>164744</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-19 08:51:02 -0700</bug_when>
    <thetext>Created attachment 164744
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728847</commentid>
    <comment_count>3</comment_count>
      <attachid>165848</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-26 12:13:28 -0700</bug_when>
    <thetext>Created attachment 165848
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728891</commentid>
    <comment_count>4</comment_count>
      <attachid>165858</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-26 12:56:13 -0700</bug_when>
    <thetext>Created attachment 165858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728902</commentid>
    <comment_count>5</comment_count>
      <attachid>165858</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-26 13:10:56 -0700</bug_when>
    <thetext>Comment on attachment 165858
Patch

Attachment 165858 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14038402</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728911</commentid>
    <comment_count>6</comment_count>
      <attachid>165858</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-26 13:18:56 -0700</bug_when>
    <thetext>Comment on attachment 165858
Patch

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

&gt; Source/WebCore/platform/chromium/ScrollbarThemeChromiumLinux.cpp:37
&gt;  

This blank line isn&apos;t needed.

&gt; Source/WebCore/rendering/RenderThemeChromiumLinux.cpp:37
&gt;  

This blank line isn&apos;t needed.

&gt; Source/WebCore/rendering/RenderThemeChromiumLinux.cpp:205
&gt;  bool RenderThemeChromiumLinux::paintCheckbox(RenderObject* o, const PaintInfo&amp; i, const IntRect&amp; rect)

I would have changed these variable names to be complete words.

&gt; Source/WebCore/rendering/RenderThemeChromiumLinux.cpp:213
&gt; +    WebKit::Platform::current()-&gt;themeEngine()-&gt;paint(
&gt; +                                                      canvas,

You can merge these two lines (or really just put this all on one line).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728912</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-26 13:19:28 -0700</bug_when>
    <thetext>Looks like there&apos;s also Source/WebCore/rendering/RenderThemeChromiumAndroid.cpp to worry about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728999</commentid>
    <comment_count>8</comment_count>
      <attachid>165883</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-26 14:48:43 -0700</bug_when>
    <thetext>Created attachment 165883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729000</commentid>
    <comment_count>9</comment_count>
      <attachid>165883</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-26 14:49:04 -0700</bug_when>
    <thetext>Comment on attachment 165883
Patch

Nits addressed, Android build fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729619</commentid>
    <comment_count>10</comment_count>
      <attachid>165883</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-27 09:36:15 -0700</bug_when>
    <thetext>Comment on attachment 165883
Patch

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

&gt; Source/WebCore/platform/chromium/ScrollbarThemeChromiumLinux.cpp:112
&gt; +    WebKit::Platform::current()-&gt;themeEngine()-&gt;paint(
&gt; +        canvas,
&gt; +        paintPart,
&gt; +        state,
&gt; +        WebKit::WebRect(rect),
&gt; +        0);

I would just put all this stuff on one line.  This line breaking style comes from the Chromium style guide and is a result of the 80 col limit.

&gt; Source/WebCore/rendering/RenderThemeChromiumAndroid.cpp:39
&gt;  

No need for a blank line here.

&gt; Source/WebCore/rendering/RenderThemeChromiumLinux.cpp:61
&gt; +    {
&gt; +        if (!theme-&gt;isEnabled(o))
&gt; +            return WebKit::WebThemeEngine::StateDisabled;
&gt; +        if (theme-&gt;isPressed(o))
&gt; +            return WebKit::WebThemeEngine::StatePressed;

Looks like you&apos;ve got a bad indent here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729677</commentid>
    <comment_count>11</comment_count>
      <attachid>166029</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-27 10:31:18 -0700</bug_when>
    <thetext>Created attachment 166029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729680</commentid>
    <comment_count>12</comment_count>
      <attachid>166029</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-27 10:31:38 -0700</bug_when>
    <thetext>Comment on attachment 166029
Patch

Nits addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729782</commentid>
    <comment_count>13</comment_count>
      <attachid>166029</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 12:48:42 -0700</bug_when>
    <thetext>Comment on attachment 166029
Patch

Clearing flags on attachment: 166029

Committed r129792: &lt;http://trac.webkit.org/changeset/129792&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729783</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 12:48:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163627</attachid>
            <date>2012-09-12 07:54:25 -0700</date>
            <delta_ts>2012-09-19 08:50:59 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-96516-20120912105313.patch</filename>
            <type>text/plain</type>
            <size>40735</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyODMwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA5LTEyICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUg
VU5JWC1zcGVjaWZpYyB0aGVtZSBmdW5jdGlvbnMgb3V0IG9mIFBsYXRmb3JtU3VwcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1MTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGlu
Zm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVh
c2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Bs
YXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAoUGxhdGZvcm1TdXBwb3J0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpzY3JvbGxiYXJUaGlja25l
c3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWlu
dFRyYWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxp
bnV4OjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTGludXg6OnBhaW50VGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUxpbnV4OjpidXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1MaW51eDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlRo
ZW1lUGFydCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlRoZW1l
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R2V0V2ViVGhlbWVFeHRyYVBhcmFtcyk6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRXZWJUaGVtZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lQ2hyb21pdW1MaW51eDo6Z2V0VGhlbWVQYXJ0U2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VGhlbWVQYXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRDaGVja2Jv
eCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldENoZWNr
Ym94U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBh
aW50UmFkaW8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Ojpz
ZXRSYWRpb1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
OjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtTGlu
dXg6OnBhaW50VGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eDo6cGFpbnRNZW51TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNo
cm9taXVtTGludXg6OnBhaW50U2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludElubmVyU3Bp
bkJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBh
aW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVt
TGludXguaDoKKyAgICAgICAgKFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCk6CisgICAgICAgIChT
Y3JvbGxiYXJUcmFja0V4dHJhUGFyYW1zKToKKyAgICAgICAgKEJ1dHRvbkV4dHJhUGFyYW1zKToK
KyAgICAgICAgKFRleHRGaWVsZEV4dHJhUGFyYW1zKToKKyAgICAgICAgKE1lbnVMaXN0RXh0cmFQ
YXJhbXMpOgorICAgICAgICAoU2xpZGVyRXh0cmFQYXJhbXMpOgorICAgICAgICAoSW5uZXJTcGlu
QnV0dG9uRXh0cmFQYXJhbXMpOgorICAgICAgICAoUHJvZ3Jlc3NCYXJFeHRyYVBhcmFtcyk6CisK
IDIwMTItMDktMTIgIEZsb3JpbiBNYWxpdGEgIDxmbWFsaXRhQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBnZXRTY3JlZW5DVE0gcmV0dXJucyBkaWZmZXJlbnQgdmFsdWVzIGRlcGVuZGluZyBvbiB6
b29tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBv
cnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVN1cHBvcnQuaAkocmV2aXNpb24gMTI4MzAyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MiwxMDIg
KzE5Miw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHBhaW50U2Nyb2xsYmFyVGh1bWIo
R3JhcGhpY3NDb250ZXh0KiwgVGhlbWVQYWludFN0YXRlLCBUaGVtZVBhaW50U2l6ZSwgY29uc3Qg
SW50UmVjdCYsIGNvbnN0IFRoZW1lUGFpbnRTY3JvbGxiYXJJbmZvJik7CiAjZWxpZiBPUyhVTklY
KQotICAgIC8vIFRoZSBVSSBwYXJ0IHdoaWNoIGlzIGJlaW5nIGFjY2Vzc2VkLgotICAgIGVudW0g
VGhlbWVQYXJ0IHsKLSAgICAgICAgLy8gU2Nyb2xsYmFyVGhlbWUgcGFydHMKLSAgICAgICAgUGFy
dFNjcm9sbGJhckRvd25BcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhckxlZnRBcnJvdywKLSAg
ICAgICAgUGFydFNjcm9sbGJhclJpZ2h0QXJyb3csCi0gICAgICAgIFBhcnRTY3JvbGxiYXJVcEFy
cm93LAotICAgICAgICBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRodW1iLAotICAgICAgICBQYXJ0
U2Nyb2xsYmFyVmVydGljYWxUaHVtYiwKLSAgICAgICAgUGFydFNjcm9sbGJhckhvcml6b250YWxU
cmFjaywKLSAgICAgICAgUGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2ssCi0KLSAgICAgICAgLy8g
UmVuZGVyVGhlbWUgcGFydHMKLSAgICAgICAgUGFydENoZWNrYm94LAotICAgICAgICBQYXJ0UmFk
aW8sCi0gICAgICAgIFBhcnRCdXR0b24sCi0gICAgICAgIFBhcnRUZXh0RmllbGQsCi0gICAgICAg
IFBhcnRNZW51TGlzdCwKLSAgICAgICAgUGFydFNsaWRlclRyYWNrLAotICAgICAgICBQYXJ0U2xp
ZGVyVGh1bWIsCi0gICAgICAgIFBhcnRJbm5lclNwaW5CdXR0b24sCi0gICAgICAgIFBhcnRQcm9n
cmVzc0JhcgotICAgIH07Ci0KLSAgICAvLyBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYXNzb2Np
YXRlZCBQYXJ0LgotICAgIGVudW0gVGhlbWVQYWludFN0YXRlIHsKLSAgICAgICAgU3RhdGVEaXNh
YmxlZCwKLSAgICAgICAgU3RhdGVIb3ZlciwKLSAgICAgICAgU3RhdGVOb3JtYWwsCi0gICAgICAg
IFN0YXRlUHJlc3NlZAotICAgIH07Ci0KLSAgICBzdHJ1Y3QgU2Nyb2xsYmFyVHJhY2tFeHRyYVBh
cmFtcyB7Ci0gICAgICAgIC8vIFRoZSBib3VuZHMgb2YgdGhlIGVudGlyZSB0cmFjaywgYXMgb3Bw
b3NlZCB0byB0aGUgcGFydCBiZWluZyBwYWludGVkLgotICAgICAgICBpbnQgdHJhY2tYOwotICAg
ICAgICBpbnQgdHJhY2tZOwotICAgICAgICBpbnQgdHJhY2tXaWR0aDsKLSAgICAgICAgaW50IHRy
YWNrSGVpZ2h0OwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgQnV0dG9uRXh0cmFQYXJhbXMgewotICAg
ICAgICBib29sIGNoZWNrZWQ7Ci0gICAgICAgIGJvb2wgaW5kZXRlcm1pbmF0ZTsgLy8gV2hldGhl
ciB0aGUgYnV0dG9uIHN0YXRlIGlzIGluZGV0ZXJtaW5hdGUuCi0gICAgICAgIGJvb2wgaXNEZWZh
dWx0OyAvLyBXaGV0aGVyIHRoZSBidXR0b24gaXMgZGVmYXVsdCBidXR0b24uCi0gICAgICAgIGJv
b2wgaGFzQm9yZGVyOwotICAgICAgICB1bnNpZ25lZCBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgfTsK
LQotICAgIHN0cnVjdCBUZXh0RmllbGRFeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgaXNUZXh0
QXJlYTsKLSAgICAgICAgYm9vbCBpc0xpc3Rib3g7Ci0gICAgICAgIHVuc2lnbmVkIGJhY2tncm91
bmRDb2xvcjsKLSAgICB9OwotCi0gICAgc3RydWN0IE1lbnVMaXN0RXh0cmFQYXJhbXMgewotICAg
ICAgICBib29sIGhhc0JvcmRlcjsKLSAgICAgICAgYm9vbCBoYXNCb3JkZXJSYWRpdXM7Ci0gICAg
ICAgIGludCBhcnJvd1g7Ci0gICAgICAgIGludCBhcnJvd1k7Ci0gICAgICAgIHVuc2lnbmVkIGJh
Y2tncm91bmRDb2xvcjsKLSAgICB9OwotCi0gICAgc3RydWN0IFNsaWRlckV4dHJhUGFyYW1zIHsK
LSAgICAgICAgYm9vbCB2ZXJ0aWNhbDsKLSAgICAgICAgYm9vbCBpbkRyYWc7Ci0gICAgfTsKLQot
ICAgIHN0cnVjdCBJbm5lclNwaW5CdXR0b25FeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgc3Bp
blVwOwotICAgICAgICBib29sIHJlYWRPbmx5OwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgUHJvZ3Jl
c3NCYXJFeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgZGV0ZXJtaW5hdGU7Ci0gICAgICAgIGlu
dCB2YWx1ZVJlY3RYOwotICAgICAgICBpbnQgdmFsdWVSZWN0WTsKLSAgICAgICAgaW50IHZhbHVl
UmVjdFdpZHRoOwotICAgICAgICBpbnQgdmFsdWVSZWN0SGVpZ2h0OwotICAgIH07Ci0KLSAgICB1
bmlvbiBUaGVtZVBhaW50RXh0cmFQYXJhbXMgewotICAgICAgICBTY3JvbGxiYXJUcmFja0V4dHJh
UGFyYW1zIHNjcm9sbGJhclRyYWNrOwotICAgICAgICBCdXR0b25FeHRyYVBhcmFtcyBidXR0b247
Ci0gICAgICAgIFRleHRGaWVsZEV4dHJhUGFyYW1zIHRleHRGaWVsZDsKLSAgICAgICAgTWVudUxp
c3RFeHRyYVBhcmFtcyBtZW51TGlzdDsKLSAgICAgICAgU2xpZGVyRXh0cmFQYXJhbXMgc2xpZGVy
OwotICAgICAgICBJbm5lclNwaW5CdXR0b25FeHRyYVBhcmFtcyBpbm5lclNwaW47Ci0gICAgICAg
IFByb2dyZXNzQmFyRXh0cmFQYXJhbXMgcHJvZ3Jlc3NCYXI7Ci0gICAgfTsKLQotICAgIC8vIEdl
dHMgdGhlIHNpemUgb2YgdGhlIGdpdmVuIHRoZW1lIHBhcnQuIEZvciB2YXJpYWJsZSBzaXplZCBp
dGVtcwotICAgIC8vIGxpa2UgdmVydGljYWwgc2Nyb2xsYmFyIHRodW1icywgdGhlIHdpZHRoIHdp
bGwgYmUgdGhlIHJlcXVpcmVkIHdpZHRoIG9mCi0gICAgLy8gdGhlIHRyYWNrIHdoaWxlIHRoZSBo
ZWlnaHQgd2lsbCBiZSB0aGUgbWluaW11bSBoZWlnaHQuCi0gICAgc3RhdGljIEludFNpemUgZ2V0
VGhlbWVQYXJ0U2l6ZShUaGVtZVBhcnQpOwotICAgIC8vIFBhaW50IHRoZSBnaXZlbiB0aGUgZ2l2
ZW4gdGhlbWUgcGFydC4KLSAgICBzdGF0aWMgdm9pZCBwYWludFRoZW1lUGFydChHcmFwaGljc0Nv
bnRleHQqLCBUaGVtZVBhcnQsIFRoZW1lUGFpbnRTdGF0ZSwgY29uc3QgSW50UmVjdCYsIGNvbnN0
IFRoZW1lUGFpbnRFeHRyYVBhcmFtcyopOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW1MaW51eC5jcHAJKHJldmlzaW9uIDEyODMwMikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaCIKIAotI2luY2x1ZGUgIlBsYXRmb3JtU3Vw
cG9ydC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlJlbmRl
clRoZW1lQ2hyb21pdW1MaW51eC5oIgogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00NiwyMiArNDYsMjIgQEAgU2Nyb2xsYmFyVGhlbWUqIFNjcm9sbGJh
clRoZW1lOjpuYXRpdmVUaAogaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6c2Nyb2xs
YmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogewogICAgIC8v
IEhvcml6IGFuZCBWZXJ0IHNjcm9sbGJhcnMgYXJlIHRoZSBzYW1lIHRoaWNrbmVzcy4KLSAgICBJ
bnRTaXplIHNjcm9sbGJhclNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFydFNpemUo
UGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyVmVydGljYWxUcmFjayk7CisgICAgSW50U2l6
ZSBzY3JvbGxiYXJTaXplID0gUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpnZXRUaGVtZVBhcnRT
aXplKFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6UGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2sp
OwogICAgIHJldHVybiBzY3JvbGxiYXJTaXplLndpZHRoKCk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Ny
b2xsYmFyUGFydCBwYXJ0VHlwZSkKIHsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRT
dGF0ZSBzdGF0ZSA9IHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSA9PSBwYXJ0VHlwZSA/IFBsYXRm
b3JtU3VwcG9ydDo6U3RhdGVIb3ZlciA6IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVOb3JtYWw7Cisg
ICAgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpUaGVtZVBhaW50U3RhdGUgc3RhdGUgPSBzY3Jv
bGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0gcGFydFR5cGUgPyBSZW5kZXJUaGVtZUNocm9taXVtTGlu
dXg6OlN0YXRlSG92ZXIgOiBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OlN0YXRlTm9ybWFsOwog
ICAgIEludFJlY3QgYWxpZ25SZWN0ID0gdHJhY2tSZWN0KHNjcm9sbGJhciwgZmFsc2UpOwotICAg
IFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludEV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAg
IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6VGhlbWVQYWludEV4dHJhUGFyYW1zIGV4dHJhUGFy
YW1zOwogICAgIGV4dHJhUGFyYW1zLnNjcm9sbGJhclRyYWNrLnRyYWNrWCA9IGFsaWduUmVjdC54
KCk7CiAgICAgZXh0cmFQYXJhbXMuc2Nyb2xsYmFyVHJhY2sudHJhY2tZID0gYWxpZ25SZWN0Lnko
KTsKICAgICBleHRyYVBhcmFtcy5zY3JvbGxiYXJUcmFjay50cmFja1dpZHRoID0gYWxpZ25SZWN0
LndpZHRoKCk7CiAgICAgZXh0cmFQYXJhbXMuc2Nyb2xsYmFyVHJhY2sudHJhY2tIZWlnaHQgPSBh
bGlnblJlY3QuaGVpZ2h0KCk7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydCgK
KyAgICBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VGhlbWVQYXJ0KAogICAgICAgICBn
YywKLSAgICAgICAgc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxi
YXIgPyBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVHJhY2sgOiBQbGF0
Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrLAorICAgICAgICBzY3JvbGxi
YXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IFJlbmRlclRoZW1lQ2hy
b21pdW1MaW51eDo6UGFydFNjcm9sbGJhckhvcml6b250YWxUcmFjayA6IFJlbmRlclRoZW1lQ2hy
b21pdW1MaW51eDo6UGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2ssCiAgICAgICAgIHN0YXRlLAog
ICAgICAgICByZWN0LAogICAgICAgICAmZXh0cmFQYXJhbXMpOwpAQCAtNjksNTIgKzY5LDUyIEBA
IHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFQKIAogdm9pZCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9s
bGJhclBhcnQgcGFydCkKIHsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFydCBwYWludFBh
cnQ7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc3RhdGUgPSBQbGF0Zm9y
bVN1cHBvcnQ6OlN0YXRlTm9ybWFsOworICAgIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6VGhl
bWVQYXJ0IHBhaW50UGFydDsKKyAgICBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OlRoZW1lUGFp
bnRTdGF0ZSBzdGF0ZSA9IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6U3RhdGVOb3JtYWw7CiAg
ICAgYm9vbCBjaGVja01pbiA9IGZhbHNlOwogICAgIGJvb2wgY2hlY2tNYXggPSBmYWxzZTsKICAg
ICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsK
ICAgICAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRvblN0YXJ0UGFydCkgewotICAgICAgICAgICAg
cGFpbnRQYXJ0ID0gUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyTGVmdEFycm93OworICAg
ICAgICAgICAgcGFpbnRQYXJ0ID0gUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpQYXJ0U2Nyb2xs
YmFyTGVmdEFycm93OwogICAgICAgICAgICAgY2hlY2tNaW4gPSB0cnVlOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgcGFpbnRQYXJ0ID0gUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xs
YmFyUmlnaHRBcnJvdzsKKyAgICAgICAgICAgIHBhaW50UGFydCA9IFJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eDo6UGFydFNjcm9sbGJhclJpZ2h0QXJyb3c7CiAgICAgICAgICAgICBjaGVja01heCA9
IHRydWU7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAocGFydCA9PSBCYWNr
QnV0dG9uU3RhcnRQYXJ0KSB7Ci0gICAgICAgICAgICBwYWludFBhcnQgPSBQbGF0Zm9ybVN1cHBv
cnQ6OlBhcnRTY3JvbGxiYXJVcEFycm93OworICAgICAgICAgICAgcGFpbnRQYXJ0ID0gUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4OjpQYXJ0U2Nyb2xsYmFyVXBBcnJvdzsKICAgICAgICAgICAgIGNo
ZWNrTWluID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBhaW50UGFydCA9
IFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhckRvd25BcnJvdzsKKyAgICAgICAgICAgIHBh
aW50UGFydCA9IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6UGFydFNjcm9sbGJhckRvd25BcnJv
dzsKICAgICAgICAgICAgIGNoZWNrTWF4ID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KICAgICBp
ZiAoKGNoZWNrTWluICYmIChzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSA8PSAwKSkKICAgICAgICAg
fHwgKGNoZWNrTWF4ICYmIHNjcm9sbGJhci0+Y3VycmVudFBvcygpID09IHNjcm9sbGJhci0+bWF4
aW11bSgpKSkgewotICAgICAgICBzdGF0ZSA9IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVEaXNhYmxl
ZDsKKyAgICAgICAgc3RhdGUgPSBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OlN0YXRlRGlzYWJs
ZWQ7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHBhcnQgPT0gc2Nyb2xsYmFyLT5wcmVzc2Vk
UGFydCgpKQotICAgICAgICAgICAgc3RhdGUgPSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlUHJlc3Nl
ZDsKKyAgICAgICAgICAgIHN0YXRlID0gUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpTdGF0ZVBy
ZXNzZWQ7CiAgICAgICAgIGVsc2UgaWYgKHBhcnQgPT0gc2Nyb2xsYmFyLT5ob3ZlcmVkUGFydCgp
KQotICAgICAgICAgICAgc3RhdGUgPSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlSG92ZXI7CisgICAg
ICAgICAgICBzdGF0ZSA9IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6U3RhdGVIb3ZlcjsKICAg
ICB9Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydChnYywgcGFpbnRQYXJ0LCBz
dGF0ZSwgcmVjdCwgMCk7CisgICAgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRoZW1l
UGFydChnYywgcGFpbnRQYXJ0LCBzdGF0ZSwgcmVjdCwgMCk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAg
UGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc3RhdGU7CisgICAgUmVuZGVyVGhlbWVD
aHJvbWl1bUxpbnV4OjpUaGVtZVBhaW50U3RhdGUgc3RhdGU7CiAKICAgICBpZiAoc2Nyb2xsYmFy
LT5wcmVzc2VkUGFydCgpID09IFRodW1iUGFydCkKLSAgICAgICAgc3RhdGUgPSBQbGF0Zm9ybVN1
cHBvcnQ6OlN0YXRlUHJlc3NlZDsKKyAgICAgICAgc3RhdGUgPSBSZW5kZXJUaGVtZUNocm9taXVt
TGludXg6OlN0YXRlUHJlc3NlZDsKICAgICBlbHNlIGlmIChzY3JvbGxiYXItPmhvdmVyZWRQYXJ0
KCkgPT0gVGh1bWJQYXJ0KQotICAgICAgICBzdGF0ZSA9IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVI
b3ZlcjsKKyAgICAgICAgc3RhdGUgPSBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OlN0YXRlSG92
ZXI7CiAgICAgZWxzZQotICAgICAgICBzdGF0ZSA9IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVOb3Jt
YWw7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydCgKKyAgICAgICAgc3RhdGUg
PSBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OlN0YXRlTm9ybWFsOworICAgIFJlbmRlclRoZW1l
Q2hyb21pdW1MaW51eDo6cGFpbnRUaGVtZVBhcnQoCiAgICAgICAgIGdjLAotICAgICAgICBzY3Jv
bGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IFBsYXRmb3JtU3Vw
cG9ydDo6UGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYiA6IFBsYXRmb3JtU3VwcG9ydDo6UGFy
dFNjcm9sbGJhclZlcnRpY2FsVGh1bWIsCisgICAgICAgIHNjcm9sbGJhci0+b3JpZW50YXRpb24o
KSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpQYXJ0
U2Nyb2xsYmFySG9yaXpvbnRhbFRodW1iIDogUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpQYXJ0
U2Nyb2xsYmFyVmVydGljYWxUaHVtYiwKICAgICAgICAgc3RhdGUsCiAgICAgICAgIHJlY3QsCiAg
ICAgICAgIDApOwpAQCAtMTI4LDIzICsxMjgsMjMgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTGludXg6OnNob3VsZAogSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OmJ1
dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Ny
b2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7Ci0gICAgICAgIElu
dFNpemUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1
cHBvcnQ6OlBhcnRTY3JvbGxiYXJVcEFycm93KTsKKyAgICAgICAgSW50U2l6ZSBzaXplID0gUmVu
ZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpnZXRUaGVtZVBhcnRTaXplKFJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eDo6UGFydFNjcm9sbGJhclVwQXJyb3cpOwogICAgICAgICByZXR1cm4gSW50U2l6ZShz
aXplLndpZHRoKCksIHNjcm9sbGJhci0+aGVpZ2h0KCkgPCAyICogc2l6ZS5oZWlnaHQoKSA/IHNj
cm9sbGJhci0+aGVpZ2h0KCkgLyAyIDogc2l6ZS5oZWlnaHQoKSk7CiAgICAgfQogCiAgICAgLy8g
SG9yaXpvbnRhbFNjcm9sbGJhcgotICAgIEludFNpemUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6
Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJMZWZ0QXJyb3cp
OworICAgIEludFNpemUgc2l6ZSA9IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6Z2V0VGhlbWVQ
YXJ0U2l6ZShSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OlBhcnRTY3JvbGxiYXJMZWZ0QXJyb3cp
OwogICAgIHJldHVybiBJbnRTaXplKHNjcm9sbGJhci0+d2lkdGgoKSA8IDIgKiBzaXplLndpZHRo
KCkgPyBzY3JvbGxiYXItPndpZHRoKCkgLyAyIDogc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KTsKIH0KIAogaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6bWluaW11bVRodW1iTGVu
Z3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKHNjcm9sbGJh
ci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgewotICAgICAgICBJbnRTaXpl
IHNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFydFNpemUoUGxhdGZvcm1TdXBwb3J0
OjpQYXJ0U2Nyb2xsYmFyVmVydGljYWxUaHVtYik7CisgICAgICAgIEludFNpemUgc2l6ZSA9IFJl
bmRlclRoZW1lQ2hyb21pdW1MaW51eDo6Z2V0VGhlbWVQYXJ0U2l6ZShSZW5kZXJUaGVtZUNocm9t
aXVtTGludXg6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iKTsKICAgICAgICAgcmV0dXJuIHNp
emUuaGVpZ2h0KCk7CiAgICAgfQogCi0gICAgSW50U2l6ZSBzaXplID0gUGxhdGZvcm1TdXBwb3J0
OjpnZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhckhvcml6b250
YWxUaHVtYik7CisgICAgSW50U2l6ZSBzaXplID0gUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4Ojpn
ZXRUaGVtZVBhcnRTaXplKFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6UGFydFNjcm9sbGJhckhv
cml6b250YWxUaHVtYik7CiAgICAgcmV0dXJuIHNpemUud2lkdGgoKTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51
eC5jcHAJKHJldmlzaW9uIDEyODMwMikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUNocm9taXVtTGludXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsMTUg
QEAKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNp
bmNsdWRlICJQYWludEluZm8uaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNs
dWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJQcm9ncmVzcy5oIgogI2luY2x1
ZGUgIlJlbmRlclNsaWRlci5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVk
ZSAiVXNlckFnZW50U3R5bGVTaGVldHMuaCIKIAorI2luY2x1ZGUgPHB1YmxpYy9saW51eC9XZWJU
aGVtZUVuZ2luZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVuc2lnbmVkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6bV9hY3RpdmVT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IgPQpAQCAtNTAsMTggKzUyLDEyMSBAQCBkb3VibGUgUmVu
ZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjptX2NhcmV0CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBk
ZWZhdWx0QnV0dG9uQmFja2dyb3VuZENvbG9yID0gMHhmZmRkZGRkZDsKIAotc3RhdGljIFBsYXRm
b3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIGdldFdlYlRoZW1lU3RhdGUoY29uc3QgUmVuZGVy
VGhlbWUqIHRoZW1lLCBjb25zdCBSZW5kZXJPYmplY3QqIG8pCitzdGF0aWMgV2ViS2l0OjpXZWJU
aGVtZUVuZ2luZTo6UGFydCBXZWJUaGVtZVBhcnQoUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpU
aGVtZVBhcnQgcGFydCkKK3sKKyAgICBzd2l0Y2ggKHBhcnQpIHsKKyAgICBjYXNlIFJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eDo6UGFydFNjcm9sbGJhckRvd25BcnJvdzogcmV0dXJuIFdlYktpdDo6
V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJEb3duQXJyb3c7CisgICAgY2FzZSBSZW5kZXJU
aGVtZUNocm9taXVtTGludXg6OlBhcnRTY3JvbGxiYXJMZWZ0QXJyb3c6IHJldHVybiBXZWJLaXQ6
OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyTGVmdEFycm93OworICAgIGNhc2UgUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4OjpQYXJ0U2Nyb2xsYmFyUmlnaHRBcnJvdzogcmV0dXJuIFdlYktp
dDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJSaWdodEFycm93OworICAgIGNhc2UgUmVu
ZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpQYXJ0U2Nyb2xsYmFyVXBBcnJvdzogcmV0dXJuIFdlYktp
dDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJVcEFycm93OworICAgIGNhc2UgUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4OjpQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRodW1iOiByZXR1cm4g
V2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYjsKKyAg
ICBjYXNlIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6UGFydFNjcm9sbGJhclZlcnRpY2FsVGh1
bWI6IHJldHVybiBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyVmVydGljYWxU
aHVtYjsKKyAgICBjYXNlIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6UGFydFNjcm9sbGJhckhv
cml6b250YWxUcmFjazogcmV0dXJuIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxi
YXJIb3Jpem9udGFsVHJhY2s7CisgICAgY2FzZSBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OlBh
cnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrOiByZXR1cm4gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6
UGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2s7CisgICAgY2FzZSBSZW5kZXJUaGVtZUNocm9taXVt
TGludXg6OlBhcnRDaGVja2JveDogcmV0dXJuIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRD
aGVja2JveDsKKyAgICBjYXNlIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6UGFydFJhZGlvOiBy
ZXR1cm4gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFJhZGlvOworICAgIGNhc2UgUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4OjpQYXJ0QnV0dG9uOiByZXR1cm4gV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6UGFydEJ1dHRvbjsKKyAgICBjYXNlIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6UGFy
dFRleHRGaWVsZDogcmV0dXJuIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRUZXh0RmllbGQ7
CisgICAgY2FzZSBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OlBhcnRNZW51TGlzdDogcmV0dXJu
IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRNZW51TGlzdDsKKyAgICBjYXNlIFJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eDo6UGFydFNsaWRlclRyYWNrOiByZXR1cm4gV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZTo6UGFydFNsaWRlclRyYWNrOworICAgIGNhc2UgUmVuZGVyVGhlbWVDaHJvbWl1bUxp
bnV4OjpQYXJ0U2xpZGVyVGh1bWI6IHJldHVybiBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0
U2xpZGVyVGh1bWI7CisgICAgY2FzZSBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OlBhcnRJbm5l
clNwaW5CdXR0b246IHJldHVybiBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0SW5uZXJTcGlu
QnV0dG9uOworICAgIGNhc2UgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpQYXJ0UHJvZ3Jlc3NC
YXI6IHJldHVybiBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0UHJvZ3Jlc3NCYXI7CisgICAg
fQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBXZWJLaXQ6OldlYlRoZW1l
RW5naW5lOjpQYXJ0U2Nyb2xsYmFyRG93bkFycm93OworfQorCitzdGF0aWMgV2ViS2l0OjpXZWJU
aGVtZUVuZ2luZTo6U3RhdGUgV2ViVGhlbWVTdGF0ZShSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OlRoZW1lUGFpbnRTdGF0ZSBzdGF0ZSkKK3sKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2Fz
ZSBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OlN0YXRlRGlzYWJsZWQ6IHJldHVybiBXZWJLaXQ6
OldlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkOworICAgIGNhc2UgUmVuZGVyVGhlbWVDaHJv
bWl1bUxpbnV4OjpTdGF0ZUhvdmVyOiByZXR1cm4gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3Rh
dGVIb3ZlcjsKKyAgICBjYXNlIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6U3RhdGVOb3JtYWw6
IHJldHVybiBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsKKyAgICBjYXNlIFJl
bmRlclRoZW1lQ2hyb21pdW1MaW51eDo6U3RhdGVQcmVzc2VkOiByZXR1cm4gV2ViS2l0OjpXZWJU
aGVtZUVuZ2luZTo6U3RhdGVQcmVzc2VkOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVEaXNhYmxlZDsKK30K
Kworc3RhdGljIHZvaWQgR2V0V2ViVGhlbWVFeHRyYVBhcmFtcyhSZW5kZXJUaGVtZUNocm9taXVt
TGludXg6OlRoZW1lUGFydCBwYXJ0LCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OlRoZW1lUGFp
bnRTdGF0ZSBzdGF0ZSwgY29uc3QgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpUaGVtZVBhaW50
RXh0cmFQYXJhbXMqIGV4dHJhUGFyYW1zLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBh
cmFtcyogd2ViVGhlbWVFeHRyYVBhcmFtcykKK3sKKyAgICBzd2l0Y2ggKHBhcnQpIHsKKyAgICBj
YXNlIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6UGFydFNjcm9sbGJhckhvcml6b250YWxUcmFj
azoKKyAgICBjYXNlIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6UGFydFNjcm9sbGJhclZlcnRp
Y2FsVHJhY2s6CisgICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPnNjcm9sbGJhclRyYWNrLnRy
YWNrWCA9IGV4dHJhUGFyYW1zLT5zY3JvbGxiYXJUcmFjay50cmFja1g7CisgICAgICAgIHdlYlRo
ZW1lRXh0cmFQYXJhbXMtPnNjcm9sbGJhclRyYWNrLnRyYWNrWSA9IGV4dHJhUGFyYW1zLT5zY3Jv
bGxiYXJUcmFjay50cmFja1k7CisgICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPnNjcm9sbGJh
clRyYWNrLnRyYWNrV2lkdGggPSBleHRyYVBhcmFtcy0+c2Nyb2xsYmFyVHJhY2sudHJhY2tXaWR0
aDsKKyAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+c2Nyb2xsYmFyVHJhY2sudHJhY2tIZWln
aHQgPSBleHRyYVBhcmFtcy0+c2Nyb2xsYmFyVHJhY2sudHJhY2tIZWlnaHQ7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpQYXJ0Q2hlY2tib3g6Cisg
ICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPmJ1dHRvbi5jaGVja2VkID0gZXh0cmFQYXJhbXMt
PmJ1dHRvbi5jaGVja2VkOworICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5idXR0b24uaW5k
ZXRlcm1pbmF0ZSA9IGV4dHJhUGFyYW1zLT5idXR0b24uaW5kZXRlcm1pbmF0ZTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OlBhcnRSYWRpbzoKKyAg
ICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+YnV0dG9uLmNoZWNrZWQgPSBleHRyYVBhcmFtcy0+
YnV0dG9uLmNoZWNrZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUmVuZGVyVGhlbWVDaHJv
bWl1bUxpbnV4OjpQYXJ0QnV0dG9uOgorICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5idXR0
b24uaXNEZWZhdWx0ID0gZXh0cmFQYXJhbXMtPmJ1dHRvbi5pc0RlZmF1bHQ7CisgICAgICAgIHdl
YlRoZW1lRXh0cmFQYXJhbXMtPmJ1dHRvbi5oYXNCb3JkZXIgPSBleHRyYVBhcmFtcy0+YnV0dG9u
Lmhhc0JvcmRlcjsKKyAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+YnV0dG9uLmJhY2tncm91
bmRDb2xvciA9IGV4dHJhUGFyYW1zLT5idXR0b24uYmFja2dyb3VuZENvbG9yOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6UGFydFRleHRGaWVsZDoK
KyAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+dGV4dEZpZWxkLmlzVGV4dEFyZWEgPSBleHRy
YVBhcmFtcy0+dGV4dEZpZWxkLmlzVGV4dEFyZWE7CisgICAgICAgIHdlYlRoZW1lRXh0cmFQYXJh
bXMtPnRleHRGaWVsZC5pc0xpc3Rib3ggPSBleHRyYVBhcmFtcy0+dGV4dEZpZWxkLmlzTGlzdGJv
eDsKKyAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+dGV4dEZpZWxkLmJhY2tncm91bmRDb2xv
ciA9IGV4dHJhUGFyYW1zLT50ZXh0RmllbGQuYmFja2dyb3VuZENvbG9yOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6UGFydE1lbnVMaXN0OgorICAg
ICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5tZW51TGlzdC5oYXNCb3JkZXIgPSBleHRyYVBhcmFt
cy0+bWVudUxpc3QuaGFzQm9yZGVyOworICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5tZW51
TGlzdC5oYXNCb3JkZXJSYWRpdXMgPSBleHRyYVBhcmFtcy0+bWVudUxpc3QuaGFzQm9yZGVyUmFk
aXVzOworICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5tZW51TGlzdC5hcnJvd1ggPSBleHRy
YVBhcmFtcy0+bWVudUxpc3QuYXJyb3dYOworICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5t
ZW51TGlzdC5hcnJvd1kgPSBleHRyYVBhcmFtcy0+bWVudUxpc3QuYXJyb3dZOworICAgICAgICB3
ZWJUaGVtZUV4dHJhUGFyYW1zLT5tZW51TGlzdC5iYWNrZ3JvdW5kQ29sb3IgPSBleHRyYVBhcmFt
cy0+bWVudUxpc3QuYmFja2dyb3VuZENvbG9yOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJl
bmRlclRoZW1lQ2hyb21pdW1MaW51eDo6UGFydFNsaWRlclRyYWNrOgorICAgIGNhc2UgUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4OjpQYXJ0U2xpZGVyVGh1bWI6CisgICAgICAgIHdlYlRoZW1lRXh0
cmFQYXJhbXMtPnNsaWRlci52ZXJ0aWNhbCA9IGV4dHJhUGFyYW1zLT5zbGlkZXIudmVydGljYWw7
CisgICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPnNsaWRlci5pbkRyYWcgPSBleHRyYVBhcmFt
cy0+c2xpZGVyLmluRHJhZzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSZW5kZXJUaGVtZUNo
cm9taXVtTGludXg6OlBhcnRJbm5lclNwaW5CdXR0b246CisgICAgICAgIHdlYlRoZW1lRXh0cmFQ
YXJhbXMtPmlubmVyU3Bpbi5zcGluVXAgPSBleHRyYVBhcmFtcy0+aW5uZXJTcGluLnNwaW5VcDsK
KyAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+aW5uZXJTcGluLnJlYWRPbmx5ID0gZXh0cmFQ
YXJhbXMtPmlubmVyU3Bpbi5yZWFkT25seTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSZW5k
ZXJUaGVtZUNocm9taXVtTGludXg6OlBhcnRQcm9ncmVzc0JhcjoKKyAgICAgICAgd2ViVGhlbWVF
eHRyYVBhcmFtcy0+cHJvZ3Jlc3NCYXIuZGV0ZXJtaW5hdGUgPSBleHRyYVBhcmFtcy0+cHJvZ3Jl
c3NCYXIuZGV0ZXJtaW5hdGU7CisgICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPnByb2dyZXNz
QmFyLnZhbHVlUmVjdFggPSBleHRyYVBhcmFtcy0+cHJvZ3Jlc3NCYXIudmFsdWVSZWN0WDsKKyAg
ICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+cHJvZ3Jlc3NCYXIudmFsdWVSZWN0WSA9IGV4dHJh
UGFyYW1zLT5wcm9ncmVzc0Jhci52YWx1ZVJlY3RZOworICAgICAgICB3ZWJUaGVtZUV4dHJhUGFy
YW1zLT5wcm9ncmVzc0Jhci52YWx1ZVJlY3RXaWR0aCA9IGV4dHJhUGFyYW1zLT5wcm9ncmVzc0Jh
ci52YWx1ZVJlY3RXaWR0aDsKKyAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+cHJvZ3Jlc3NC
YXIudmFsdWVSZWN0SGVpZ2h0ID0gZXh0cmFQYXJhbXMtPnByb2dyZXNzQmFyLnZhbHVlUmVjdEhl
aWdodDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7IC8vIFBh
cnRzIHRoYXQgaGF2ZSBubyBleHRyYSBwYXJhbXMgZ2V0IGhlcmUuCisgICAgfQorfQorCitSZW5k
ZXJUaGVtZUNocm9taXVtTGludXg6OlRoZW1lUGFpbnRTdGF0ZSBnZXRXZWJUaGVtZVN0YXRlKGNv
bnN0IFJlbmRlclRoZW1lKiB0aGVtZSwgY29uc3QgUmVuZGVyT2JqZWN0KiBvKQogewogICAgIGlm
ICghdGhlbWUtPmlzRW5hYmxlZChvKSkKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6
U3RhdGVEaXNhYmxlZDsKKyAgICAgICAgcmV0dXJuIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6
U3RhdGVEaXNhYmxlZDsKICAgICBpZiAodGhlbWUtPmlzUHJlc3NlZChvKSkKLSAgICAgICAgcmV0
dXJuIFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVQcmVzc2VkOworICAgICAgICByZXR1cm4gUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4OjpTdGF0ZVByZXNzZWQ7CiAgICAgaWYgKHRoZW1lLT5pc0hvdmVy
ZWQobykpCi0gICAgICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlSG92ZXI7CisgICAg
ICAgIHJldHVybiBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OlN0YXRlSG92ZXI7CiAKLSAgICBy
ZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZU5vcm1hbDsKKyAgICByZXR1cm4gUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjpTdGF0ZU5vcm1hbDsKIH0KIAorSW50U2l6ZSBSZW5kZXJUaGVtZUNo
cm9taXVtTGludXg6OmdldFRoZW1lUGFydFNpemUoUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpU
aGVtZVBhcnQgcGFydCkKK3sKKyAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgp
LT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYlRoZW1lUGFydChwYXJ0KSk7Cit9CisKK3ZvaWQg
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRoZW1lUGFydChHcmFwaGljc0NvbnRleHQq
IGdjLCBUaGVtZVBhcnQgcGFydCwgVGhlbWVQYWludFN0YXRlIHN0YXRlLCBjb25zdCBJbnRSZWN0
JiByZWN0LCBjb25zdCBUaGVtZVBhaW50RXh0cmFQYXJhbXMqIGV4dHJhUGFyYW1zKQoreworICAg
IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zIHdlYlRoZW1lRXh0cmFQYXJhbXM7
CisgICAgR2V0V2ViVGhlbWVFeHRyYVBhcmFtcyhwYXJ0LCBzdGF0ZSwgZXh0cmFQYXJhbXMsICZ3
ZWJUaGVtZUV4dHJhUGFyYW1zKTsKKyAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRo
ZW1lRW5naW5lKCktPnBhaW50KGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCksIFdlYlRo
ZW1lUGFydChwYXJ0KSwgV2ViVGhlbWVTdGF0ZShzdGF0ZSksIHJlY3QsICZ3ZWJUaGVtZUV4dHJh
UGFyYW1zKTsKK30KIAogUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4OjpjcmVhdGUoKQogewpAQCAtMTYwLDcgKzI2NSw3IEBAIGludCBSZW5kZXJUaGVtZUNo
cm9taXVtTGludXg6OnNsaWRlclRpY2sKIAogdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OmFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1l
bnQpIGNvbnN0CiB7Ci0gICAgSW50U2l6ZSBzaXplID0gUGxhdGZvcm1TdXBwb3J0OjpnZXRUaGVt
ZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydFNsaWRlclRodW1iKTsKKyAgICBJbnRTaXpl
IHNpemUgPSBnZXRUaGVtZVBhcnRTaXplKFBhcnRTbGlkZXJUaHVtYik7CiAKICAgICBpZiAoc3R5
bGUtPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0KSB7CiAgICAgICAg
IHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpLCBGaXhlZCkpOwpAQCAtMjAxLDEx
ICszMDYsMTEgQEAgdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldFNlbGVjdAogCiBi
b29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRDaGVja2JveChSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBQbGF0
Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAgICBUaGVt
ZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CiAgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmNo
ZWNrZWQgPSBpc0NoZWNrZWQobyk7CiAgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmluZGV0ZXJtaW5h
dGUgPSBpc0luZGV0ZXJtaW5hdGUobyk7CiAKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhl
bWVQYXJ0KGkuY29udGV4dCwgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0Q2hlY2tib3gsIGdldFdlYlRo
ZW1lU3RhdGUodGhpcywgbyksIHJlY3QsICZleHRyYVBhcmFtcyk7CisgICAgcGFpbnRUaGVtZVBh
cnQoaS5jb250ZXh0LCBQYXJ0Q2hlY2tib3gsIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIHJl
Y3QsICZleHRyYVBhcmFtcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0yMTUsMTYgKzMy
MCwxNiBAQCB2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2V0Q2hlY2tiCiAgICAgaWYg
KCFzdHlsZS0+d2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICFzdHlsZS0+aGVpZ2h0KCku
aXNBdXRvKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEludFNpemUgc2l6ZSA9IFBsYXRmb3Jt
U3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRDaGVja2JveCk7
CisgICAgSW50U2l6ZSBzaXplID0gZ2V0VGhlbWVQYXJ0U2l6ZShQYXJ0Q2hlY2tib3gpOwogICAg
IHNldFNpemVJZkF1dG8oc3R5bGUsIHNpemUpOwogfQogCiBib29sIFJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eDo6cGFpbnRSYWRpbyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRF
eHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAgICBUaGVtZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQ
YXJhbXM7CiAgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmNoZWNrZWQgPSBpc0NoZWNrZWQobyk7CiAK
LSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KGkuY29udGV4dCwgUGxhdGZvcm1T
dXBwb3J0OjpQYXJ0UmFkaW8sIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIHJlY3QsICZleHRy
YVBhcmFtcyk7CisgICAgcGFpbnRUaGVtZVBhcnQoaS5jb250ZXh0LCBQYXJ0UmFkaW8sIGdldFdl
YlRoZW1lU3RhdGUodGhpcywgbyksIHJlY3QsICZleHRyYVBhcmFtcyk7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCkBAIC0yMzQsMjAgKzMzOSwyMCBAQCB2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1M
aW51eDo6c2V0UmFkaW9TCiAgICAgaWYgKCFzdHlsZS0+d2lkdGgoKS5pc0ludHJpbnNpY09yQXV0
bygpICYmICFzdHlsZS0+aGVpZ2h0KCkuaXNBdXRvKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEludFNpemUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9y
bVN1cHBvcnQ6OlBhcnRSYWRpbyk7CisgICAgSW50U2l6ZSBzaXplID0gZ2V0VGhlbWVQYXJ0U2l6
ZShQYXJ0UmFkaW8pOwogICAgIHNldFNpemVJZkF1dG8oc3R5bGUsIHNpemUpOwogfQogCiBib29s
IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgUGxhdGZvcm1T
dXBwb3J0OjpUaGVtZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgVGhlbWVQYWlu
dEV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOwogICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5pc0RlZmF1
bHQgPSBpc0RlZmF1bHQobyk7CiAgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmhhc0JvcmRlciA9IHRy
dWU7CiAgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmJhY2tncm91bmRDb2xvciA9IGRlZmF1bHRCdXR0
b25CYWNrZ3JvdW5kQ29sb3I7CiAgICAgaWYgKG8tPmhhc0JhY2tncm91bmQoKSkKICAgICAgICAg
ZXh0cmFQYXJhbXMuYnV0dG9uLmJhY2tncm91bmRDb2xvciA9IG8tPnN0eWxlKCktPnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikucmdiKCk7CiAKLSAgICBQ
bGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KGkuY29udGV4dCwgUGxhdGZvcm1TdXBwb3J0
OjpQYXJ0QnV0dG9uLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCByZWN0LCAmZXh0cmFQYXJh
bXMpOworICAgIHBhaW50VGhlbWVQYXJ0KGkuY29udGV4dCwgUGFydEJ1dHRvbiwgZ2V0V2ViVGhl
bWVTdGF0ZSh0aGlzLCBvKSwgcmVjdCwgJmV4dHJhUGFyYW1zKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKQEAgLTI2MCw3ICszNjUsNyBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6
cGFpbnRUZXh0CiAKICAgICBDb250cm9sUGFydCBwYXJ0ID0gby0+c3R5bGUoKS0+YXBwZWFyYW5j
ZSgpOwogCi0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQ
YXJhbXM7CisgICAgVGhlbWVQYWludEV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOwogICAgIGV4dHJh
UGFyYW1zLnRleHRGaWVsZC5pc1RleHRBcmVhID0gcGFydCA9PSBUZXh0QXJlYVBhcnQ7CiAgICAg
ZXh0cmFQYXJhbXMudGV4dEZpZWxkLmlzTGlzdGJveCA9IHBhcnQgPT0gTGlzdGJveFBhcnQ7CiAK
QEAgLTI3MCw3ICszNzUsNyBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRU
ZXh0CiAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IG8tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgZXh0cmFQYXJhbXMudGV4
dEZpZWxkLmJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvci5yZ2IoKTsKIAotICAgIFBs
YXRmb3JtU3VwcG9ydDo6cGFpbnRUaGVtZVBhcnQoaS5jb250ZXh0LCBQbGF0Zm9ybVN1cHBvcnQ6
OlBhcnRUZXh0RmllbGQsIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIHJlY3QsICZleHRyYVBh
cmFtcyk7CisgICAgcGFpbnRUaGVtZVBhcnQoaS5jb250ZXh0LCBQYXJ0VGV4dEZpZWxkLCBnZXRX
ZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCByZWN0LCAmZXh0cmFQYXJhbXMpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIApAQCAtMjgyLDcgKzM4Nyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxp
bnV4OjpwYWludE1lbnUKICAgICBjb25zdCBpbnQgcmlnaHQgPSByZWN0LngoKSArIHJlY3Qud2lk
dGgoKTsKICAgICBjb25zdCBpbnQgbWlkZGxlID0gcmVjdC55KCkgKyByZWN0LmhlaWdodCgpIC8g
MjsKIAotICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludEV4dHJhUGFyYW1zIGV4dHJhUGFy
YW1zOworICAgIFRoZW1lUGFpbnRFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKICAgICBleHRyYVBh
cmFtcy5tZW51TGlzdC5hcnJvd1ggPSAoby0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gUlRMKSA/
IHJlY3QueCgpICsgNyA6IHJpZ2h0IC0gMTM7CiAgICAgZXh0cmFQYXJhbXMubWVudUxpc3QuYXJy
b3dZID0gbWlkZGxlOwogICAgIGNvbnN0IFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJCb3gobyk7
CkBAIC0yOTQsMTYgKzM5OSwxNiBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFp
bnRNZW51CiAgICAgaWYgKG8tPmhhc0JhY2tncm91bmQoKSkKICAgICAgICAgZXh0cmFQYXJhbXMu
bWVudUxpc3QuYmFja2dyb3VuZENvbG9yID0gby0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5yZ2IoKTsKIAotICAgIFBsYXRmb3JtU3Vw
cG9ydDo6cGFpbnRUaGVtZVBhcnQoaS5jb250ZXh0LCBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRNZW51
TGlzdCwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgcmVjdCwgJmV4dHJhUGFyYW1zKTsKKyAg
ICBwYWludFRoZW1lUGFydChpLmNvbnRleHQsIFBhcnRNZW51TGlzdCwgZ2V0V2ViVGhlbWVTdGF0
ZSh0aGlzLCBvKSwgcmVjdCwgJmV4dHJhUGFyYW1zKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
IGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9i
amVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAg
IFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludEV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAg
IFRoZW1lUGFpbnRFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKICAgICBleHRyYVBhcmFtcy5zbGlk
ZXIudmVydGljYWwgPSBvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVmVydGljYWxQ
YXJ0OwogCi0gICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydChpLmNvbnRleHQsIFBs
YXRmb3JtU3VwcG9ydDo6UGFydFNsaWRlclRyYWNrLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8p
LCByZWN0LCAmZXh0cmFQYXJhbXMpOworICAgIHBhaW50VGhlbWVQYXJ0KGkuY29udGV4dCwgUGFy
dFNsaWRlclRyYWNrLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCByZWN0LCAmZXh0cmFQYXJh
bXMpOwogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgcGFpbnRTbGlkZXJUaWNr
cyhvLCBpLCByZWN0KTsKQEAgLTMxNCwxNyArNDE5LDE3IEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJv
bWl1bUxpbnV4OjpwYWludFNsaWQKIAogYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBh
aW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0
IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50RXh0cmFQ
YXJhbXMgZXh0cmFQYXJhbXM7CisgICAgVGhlbWVQYWludEV4dHJhUGFyYW1zIGV4dHJhUGFyYW1z
OwogICAgIGV4dHJhUGFyYW1zLnNsaWRlci52ZXJ0aWNhbCA9IG8tPnN0eWxlKCktPmFwcGVhcmFu
Y2UoKSA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydDsKICAgICBleHRyYVBhcmFtcy5zbGlkZXIu
aW5EcmFnID0gaXNQcmVzc2VkKG8pOwogCi0gICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1l
UGFydChpLmNvbnRleHQsIFBsYXRmb3JtU3VwcG9ydDo6UGFydFNsaWRlclRodW1iLCBnZXRXZWJU
aGVtZVN0YXRlKHRoaXMsIG8pLCByZWN0LCAmZXh0cmFQYXJhbXMpOworICAgIHBhaW50VGhlbWVQ
YXJ0KGkuY29udGV4dCwgUGFydFNsaWRlclRodW1iLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8p
LCByZWN0LCAmZXh0cmFQYXJhbXMpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBSZW5k
ZXJUaGVtZUNocm9taXVtTGludXg6OmFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKFN0eWxlUmVz
b2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAogewotICAgIEludFNp
emUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBv
cnQ6OlBhcnRJbm5lclNwaW5CdXR0b24pOworICAgIEludFNpemUgc2l6ZSA9IGdldFRoZW1lUGFy
dFNpemUoUGFydElubmVyU3BpbkJ1dHRvbik7CiAKICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3Ro
KHNpemUud2lkdGgoKSwgRml4ZWQpKTsKICAgICBzdHlsZS0+c2V0TWluV2lkdGgoTGVuZ3RoKHNp
emUud2lkdGgoKSwgRml4ZWQpKTsKQEAgLTMzMiwxMSArNDM3LDExIEBAIHZvaWQgUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjphZGp1c3RJbm4KIAogYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGlu
dXg6OnBhaW50SW5uZXJTcGluQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZv
JiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQ
YWludEV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFRoZW1lUGFpbnRFeHRyYVBhcmFtcyBl
eHRyYVBhcmFtczsKICAgICBleHRyYVBhcmFtcy5pbm5lclNwaW4uc3BpblVwID0gKGNvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcihvKSAmIFNwaW5VcFN0YXRlKTsKICAgICBleHRyYVBhcmFtcy5pbm5l
clNwaW4ucmVhZE9ubHkgPSBpc1JlYWRPbmx5Q29udHJvbChvKTsKIAotICAgIFBsYXRmb3JtU3Vw
cG9ydDo6cGFpbnRUaGVtZVBhcnQoaS5jb250ZXh0LCBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRJbm5l
clNwaW5CdXR0b24sIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIHJlY3QsICZleHRyYVBhcmFt
cyk7CisgICAgcGFpbnRUaGVtZVBhcnQoaS5jb250ZXh0LCBQYXJ0SW5uZXJTcGluQnV0dG9uLCBn
ZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCByZWN0LCAmZXh0cmFQYXJhbXMpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIApAQCAtMzUwLDcgKzQ1NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4OjpwYWludFByb2cKICAgICBSZW5kZXJQcm9ncmVzcyogcmVuZGVyUHJvZ3Jlc3MgPSB0
b1JlbmRlclByb2dyZXNzKG8pOwogICAgIEludFJlY3QgdmFsdWVSZWN0ID0gcHJvZ3Jlc3NWYWx1
ZVJlY3RGb3IocmVuZGVyUHJvZ3Jlc3MsIHJlY3QpOwogCi0gICAgUGxhdGZvcm1TdXBwb3J0OjpU
aGVtZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgVGhlbWVQYWludEV4dHJhUGFy
YW1zIGV4dHJhUGFyYW1zOwogICAgIGV4dHJhUGFyYW1zLnByb2dyZXNzQmFyLmRldGVybWluYXRl
ID0gcmVuZGVyUHJvZ3Jlc3MtPmlzRGV0ZXJtaW5hdGUoKTsKICAgICBleHRyYVBhcmFtcy5wcm9n
cmVzc0Jhci52YWx1ZVJlY3RYID0gdmFsdWVSZWN0LngoKTsKICAgICBleHRyYVBhcmFtcy5wcm9n
cmVzc0Jhci52YWx1ZVJlY3RZID0gdmFsdWVSZWN0LnkoKTsKQEAgLTM1OCw3ICs0NjMsNyBAQCBi
b29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRQcm9nCiAgICAgZXh0cmFQYXJhbXMu
cHJvZ3Jlc3NCYXIudmFsdWVSZWN0SGVpZ2h0ID0gdmFsdWVSZWN0LmhlaWdodCgpOwogCiAgICAg
RGlyZWN0aW9uRmxpcHBpbmdTY29wZSBzY29wZShvLCBpLCByZWN0KTsKLSAgICBQbGF0Zm9ybVN1
cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KGkuY29udGV4dCwgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0UHJv
Z3Jlc3NCYXIsIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIHJlY3QsICZleHRyYVBhcmFtcyk7
CisgICAgcGFpbnRUaGVtZVBhcnQoaS5jb250ZXh0LCBQYXJ0UHJvZ3Jlc3NCYXIsIGdldFdlYlRo
ZW1lU3RhdGUodGhpcywgbyksIHJlY3QsICZleHRyYVBhcmFtcyk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eC5oCShyZXZpc2lvbiAxMjgzMDIpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDExICszMCwxMDIgQEAKICNkZWZpbmUgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4X2gKIAogI2lu
Y2x1ZGUgIlJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmgiCisjaW5jbHVkZSA8cHVibGljL2xpbnV4
L1dlYlRoZW1lRW5naW5lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFJl
bmRlclRoZW1lQ2hyb21pdW1MaW51eCA6IHB1YmxpYyBSZW5kZXJUaGVtZUNocm9taXVtU2tpYSB7
CiAgICAgcHVibGljOgorICAgIC8vIFRoZSBVSSBwYXJ0IHdoaWNoIGlzIGJlaW5nIGFjY2Vzc2Vk
LgorICAgIGVudW0gVGhlbWVQYXJ0IHsKKyAgICAgICAgLy8gU2Nyb2xsYmFyVGhlbWUgcGFydHMK
KyAgICAgICAgUGFydFNjcm9sbGJhckRvd25BcnJvdywKKyAgICAgICAgUGFydFNjcm9sbGJhckxl
ZnRBcnJvdywKKyAgICAgICAgUGFydFNjcm9sbGJhclJpZ2h0QXJyb3csCisgICAgICAgIFBhcnRT
Y3JvbGxiYXJVcEFycm93LAorICAgICAgICBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRodW1iLAor
ICAgICAgICBQYXJ0U2Nyb2xsYmFyVmVydGljYWxUaHVtYiwKKyAgICAgICAgUGFydFNjcm9sbGJh
ckhvcml6b250YWxUcmFjaywKKyAgICAgICAgUGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2ssCisK
KyAgICAgICAgLy8gUmVuZGVyVGhlbWUgcGFydHMKKyAgICAgICAgUGFydENoZWNrYm94LAorICAg
ICAgICBQYXJ0UmFkaW8sCisgICAgICAgIFBhcnRCdXR0b24sCisgICAgICAgIFBhcnRUZXh0Rmll
bGQsCisgICAgICAgIFBhcnRNZW51TGlzdCwKKyAgICAgICAgUGFydFNsaWRlclRyYWNrLAorICAg
ICAgICBQYXJ0U2xpZGVyVGh1bWIsCisgICAgICAgIFBhcnRJbm5lclNwaW5CdXR0b24sCisgICAg
ICAgIFBhcnRQcm9ncmVzc0JhcgorICAgIH07CisKKyAgICAvLyBUaGUgY3VycmVudCBzdGF0ZSBv
ZiB0aGUgYXNzb2NpYXRlZCBQYXJ0LgorICAgIGVudW0gVGhlbWVQYWludFN0YXRlIHsKKyAgICAg
ICAgU3RhdGVEaXNhYmxlZCwKKyAgICAgICAgU3RhdGVIb3ZlciwKKyAgICAgICAgU3RhdGVOb3Jt
YWwsCisgICAgICAgIFN0YXRlUHJlc3NlZAorICAgIH07CisKKyAgICBzdHJ1Y3QgU2Nyb2xsYmFy
VHJhY2tFeHRyYVBhcmFtcyB7CisgICAgICAgIC8vIFRoZSBib3VuZHMgb2YgdGhlIGVudGlyZSB0
cmFjaywgYXMgb3Bwb3NlZCB0byB0aGUgcGFydCBiZWluZyBwYWludGVkLgorICAgICAgICBpbnQg
dHJhY2tYOworICAgICAgICBpbnQgdHJhY2tZOworICAgICAgICBpbnQgdHJhY2tXaWR0aDsKKyAg
ICAgICAgaW50IHRyYWNrSGVpZ2h0OworICAgIH07CisKKyAgICBzdHJ1Y3QgQnV0dG9uRXh0cmFQ
YXJhbXMgeworICAgICAgICBib29sIGNoZWNrZWQ7CisgICAgICAgIGJvb2wgaW5kZXRlcm1pbmF0
ZTsgLy8gV2hldGhlciB0aGUgYnV0dG9uIHN0YXRlIGlzIGluZGV0ZXJtaW5hdGUuCisgICAgICAg
IGJvb2wgaXNEZWZhdWx0OyAvLyBXaGV0aGVyIHRoZSBidXR0b24gaXMgZGVmYXVsdCBidXR0b24u
CisgICAgICAgIGJvb2wgaGFzQm9yZGVyOworICAgICAgICB1bnNpZ25lZCBiYWNrZ3JvdW5kQ29s
b3I7CisgICAgfTsKKworICAgIHN0cnVjdCBUZXh0RmllbGRFeHRyYVBhcmFtcyB7CisgICAgICAg
IGJvb2wgaXNUZXh0QXJlYTsKKyAgICAgICAgYm9vbCBpc0xpc3Rib3g7CisgICAgICAgIHVuc2ln
bmVkIGJhY2tncm91bmRDb2xvcjsKKyAgICB9OworCisgICAgc3RydWN0IE1lbnVMaXN0RXh0cmFQ
YXJhbXMgeworICAgICAgICBib29sIGhhc0JvcmRlcjsKKyAgICAgICAgYm9vbCBoYXNCb3JkZXJS
YWRpdXM7CisgICAgICAgIGludCBhcnJvd1g7CisgICAgICAgIGludCBhcnJvd1k7CisgICAgICAg
IHVuc2lnbmVkIGJhY2tncm91bmRDb2xvcjsKKyAgICB9OworCisgICAgc3RydWN0IFNsaWRlckV4
dHJhUGFyYW1zIHsKKyAgICAgICAgYm9vbCB2ZXJ0aWNhbDsKKyAgICAgICAgYm9vbCBpbkRyYWc7
CisgICAgfTsKKworICAgIHN0cnVjdCBJbm5lclNwaW5CdXR0b25FeHRyYVBhcmFtcyB7CisgICAg
ICAgIGJvb2wgc3BpblVwOworICAgICAgICBib29sIHJlYWRPbmx5OworICAgIH07CisKKyAgICBz
dHJ1Y3QgUHJvZ3Jlc3NCYXJFeHRyYVBhcmFtcyB7CisgICAgICAgIGJvb2wgZGV0ZXJtaW5hdGU7
CisgICAgICAgIGludCB2YWx1ZVJlY3RYOworICAgICAgICBpbnQgdmFsdWVSZWN0WTsKKyAgICAg
ICAgaW50IHZhbHVlUmVjdFdpZHRoOworICAgICAgICBpbnQgdmFsdWVSZWN0SGVpZ2h0OworICAg
IH07CisKKyAgICB1bmlvbiBUaGVtZVBhaW50RXh0cmFQYXJhbXMgeworICAgICAgICBTY3JvbGxi
YXJUcmFja0V4dHJhUGFyYW1zIHNjcm9sbGJhclRyYWNrOworICAgICAgICBCdXR0b25FeHRyYVBh
cmFtcyBidXR0b247CisgICAgICAgIFRleHRGaWVsZEV4dHJhUGFyYW1zIHRleHRGaWVsZDsKKyAg
ICAgICAgTWVudUxpc3RFeHRyYVBhcmFtcyBtZW51TGlzdDsKKyAgICAgICAgU2xpZGVyRXh0cmFQ
YXJhbXMgc2xpZGVyOworICAgICAgICBJbm5lclNwaW5CdXR0b25FeHRyYVBhcmFtcyBpbm5lclNw
aW47CisgICAgICAgIFByb2dyZXNzQmFyRXh0cmFQYXJhbXMgcHJvZ3Jlc3NCYXI7CisgICAgfTsK
KwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7CiAgICAg
ICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKTsKIApAQCAtODksNiAr
MTgwLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGluYWN0aXZlQmFja2dyb3VuZENvbG9yLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5hY3RpdmVGb3JlZ3JvdW5k
Q29sb3IpOwogCisgICAgLy8gR2V0cyB0aGUgc2l6ZSBvZiB0aGUgZ2l2ZW4gdGhlbWUgcGFydC4g
Rm9yIHZhcmlhYmxlIHNpemVkIGl0ZW1zCisgICAgLy8gbGlrZSB2ZXJ0aWNhbCBzY3JvbGxiYXIg
dGh1bWJzLCB0aGUgd2lkdGggd2lsbCBiZSB0aGUgcmVxdWlyZWQgd2lkdGggb2YKKyAgICAvLyB0
aGUgdHJhY2sgd2hpbGUgdGhlIGhlaWdodCB3aWxsIGJlIHRoZSBtaW5pbXVtIGhlaWdodC4KKyAg
ICBzdGF0aWMgSW50U2l6ZSBnZXRUaGVtZVBhcnRTaXplKFRoZW1lUGFydCk7CisgICAgLy8gUGFp
bnQgdGhlIGdpdmVuIHRoZSBnaXZlbiB0aGVtZSBwYXJ0LgorICAgIHN0YXRpYyB2b2lkIHBhaW50
VGhlbWVQYXJ0KEdyYXBoaWNzQ29udGV4dCosIFRoZW1lUGFydCwgVGhlbWVQYWludFN0YXRlLCBj
b25zdCBJbnRSZWN0JiwgY29uc3QgVGhlbWVQYWludEV4dHJhUGFyYW1zKik7CisKKwogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCk7CiAgICAgICAgIHZp
cnR1YWwgflJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpOwpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyODMwOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMTIgIE1hcmsg
UGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gTW92
ZSBVTklYLXNwZWNpZmljIHRoZW1lIGZ1bmN0aW9ucyBvdXQgb2YgUGxhdGZvcm1TdXBwb3J0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjUxNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwg
aW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBs
ZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAg
ICAgICogc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAx
Mi0wOS0xMiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogTk1JIG1vdmUgU3RyaW5nKiBpbnN0cnVtZW50YXRpb24gdG8gd3Rm
LgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQu
Y3BwCShyZXZpc2lvbiAxMjgzMDIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0
Zm9ybVN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw2IEBACiAjaW5jbHVk
ZSA8cHVibGljL2FuZHJvaWQvV2ViVGhlbWVFbmdpbmUuaD4KICNlbHNlCiAjaW5jbHVkZSAiV2Vi
Rm9udEluZm8uaCIKLSNpbmNsdWRlIDxwdWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaD4KICNl
bmRpZiAvLyBPUyhBTkRST0lEKQogI2VuZGlmIC8vIGVsaWYgT1MoVU5JWCkKIApAQCAtMzg2LDEx
MyArMzg1LDYgQEAgdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50U2Nyb2xsYmFyVGh1bQogfQog
CiAjZWxpZiBPUyhVTklYKQotCi1zdGF0aWMgV2ViVGhlbWVFbmdpbmU6OlBhcnQgV2ViVGhlbWVQ
YXJ0KFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYXJ0IHBhcnQpCi17Ci0gICAgc3dpdGNoIChwYXJ0
KSB7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJEb3duQXJyb3c6IHJl
dHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckRvd25BcnJvdzsKLSAgICBjYXNlIFBs
YXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhckxlZnRBcnJvdzogcmV0dXJuIFdlYlRoZW1lRW5n
aW5lOjpQYXJ0U2Nyb2xsYmFyTGVmdEFycm93OwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQ
YXJ0U2Nyb2xsYmFyUmlnaHRBcnJvdzogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xs
YmFyUmlnaHRBcnJvdzsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhclVw
QXJyb3c6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclVwQXJyb3c7Ci0gICAg
Y2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVGh1bWI6IHJldHVy
biBXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYjsKLSAgICBjYXNl
IFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhclZlcnRpY2FsVGh1bWI6IHJldHVybiBXZWJU
aGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclZlcnRpY2FsVGh1bWI7Ci0gICAgY2FzZSBQbGF0Zm9y
bVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVHJhY2s6IHJldHVybiBXZWJUaGVtZUVu
Z2luZTo6UGFydFNjcm9sbGJhckhvcml6b250YWxUcmFjazsKLSAgICBjYXNlIFBsYXRmb3JtU3Vw
cG9ydDo6UGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2s6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6
UGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2s7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBh
cnRDaGVja2JveDogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpQYXJ0Q2hlY2tib3g7Ci0gICAgY2Fz
ZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRSYWRpbzogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpQYXJ0
UmFkaW87Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRCdXR0b246IHJldHVybiBXZWJU
aGVtZUVuZ2luZTo6UGFydEJ1dHRvbjsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFRl
eHRGaWVsZDogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpQYXJ0VGV4dEZpZWxkOwotICAgIGNhc2Ug
UGxhdGZvcm1TdXBwb3J0OjpQYXJ0TWVudUxpc3Q6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFy
dE1lbnVMaXN0OwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2xpZGVyVHJhY2s6IHJl
dHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNsaWRlclRyYWNrOwotICAgIGNhc2UgUGxhdGZvcm1T
dXBwb3J0OjpQYXJ0U2xpZGVyVGh1bWI6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNsaWRl
clRodW1iOwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0SW5uZXJTcGluQnV0dG9uOiBy
ZXR1cm4gV2ViVGhlbWVFbmdpbmU6OlBhcnRJbm5lclNwaW5CdXR0b247Ci0gICAgY2FzZSBQbGF0
Zm9ybVN1cHBvcnQ6OlBhcnRQcm9ncmVzc0JhcjogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpQYXJ0
UHJvZ3Jlc3NCYXI7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckRvd25BcnJvdzsKLX0KLQotc3RhdGljIFdl
YlRoZW1lRW5naW5lOjpTdGF0ZSBXZWJUaGVtZVN0YXRlKFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQ
YWludFN0YXRlIHN0YXRlKQotewotICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICBjYXNlIFBsYXRm
b3JtU3VwcG9ydDo6U3RhdGVEaXNhYmxlZDogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpTdGF0ZURp
c2FibGVkOwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZUhvdmVyOiByZXR1cm4gV2Vi
VGhlbWVFbmdpbmU6OlN0YXRlSG92ZXI7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRl
Tm9ybWFsOiByZXR1cm4gV2ViVGhlbWVFbmdpbmU6OlN0YXRlTm9ybWFsOwotICAgIGNhc2UgUGxh
dGZvcm1TdXBwb3J0OjpTdGF0ZVByZXNzZWQ6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6U3RhdGVQ
cmVzc2VkOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV2Vi
VGhlbWVFbmdpbmU6OlN0YXRlRGlzYWJsZWQ7Ci19Ci0KLXN0YXRpYyB2b2lkIEdldFdlYlRoZW1l
RXh0cmFQYXJhbXMoUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhcnQgcGFydCwgUGxhdGZvcm1TdXBw
b3J0OjpUaGVtZVBhaW50U3RhdGUgc3RhdGUsIGNvbnN0IFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQ
YWludEV4dHJhUGFyYW1zKiBleHRyYVBhcmFtcywgV2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1z
KiB3ZWJUaGVtZUV4dHJhUGFyYW1zKQotewotICAgIHN3aXRjaCAocGFydCkgewotICAgIGNhc2Ug
UGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrOgotICAgIGNhc2Ug
UGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyVmVydGljYWxUcmFjazoKLSAgICAgICAgd2Vi
VGhlbWVFeHRyYVBhcmFtcy0+c2Nyb2xsYmFyVHJhY2sudHJhY2tYID0gZXh0cmFQYXJhbXMtPnNj
cm9sbGJhclRyYWNrLnRyYWNrWDsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+c2Nyb2xs
YmFyVHJhY2sudHJhY2tZID0gZXh0cmFQYXJhbXMtPnNjcm9sbGJhclRyYWNrLnRyYWNrWTsKLSAg
ICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+c2Nyb2xsYmFyVHJhY2sudHJhY2tXaWR0aCA9IGV4
dHJhUGFyYW1zLT5zY3JvbGxiYXJUcmFjay50cmFja1dpZHRoOwotICAgICAgICB3ZWJUaGVtZUV4
dHJhUGFyYW1zLT5zY3JvbGxiYXJUcmFjay50cmFja0hlaWdodCA9IGV4dHJhUGFyYW1zLT5zY3Jv
bGxiYXJUcmFjay50cmFja0hlaWdodDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9y
bVN1cHBvcnQ6OlBhcnRDaGVja2JveDoKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+YnV0
dG9uLmNoZWNrZWQgPSBleHRyYVBhcmFtcy0+YnV0dG9uLmNoZWNrZWQ7Ci0gICAgICAgIHdlYlRo
ZW1lRXh0cmFQYXJhbXMtPmJ1dHRvbi5pbmRldGVybWluYXRlID0gZXh0cmFQYXJhbXMtPmJ1dHRv
bi5pbmRldGVybWluYXRlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9y
dDo6UGFydFJhZGlvOgotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5idXR0b24uY2hlY2tl
ZCA9IGV4dHJhUGFyYW1zLT5idXR0b24uY2hlY2tlZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRCdXR0b246Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJh
bXMtPmJ1dHRvbi5pc0RlZmF1bHQgPSBleHRyYVBhcmFtcy0+YnV0dG9uLmlzRGVmYXVsdDsKLSAg
ICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+YnV0dG9uLmhhc0JvcmRlciA9IGV4dHJhUGFyYW1z
LT5idXR0b24uaGFzQm9yZGVyOwotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5idXR0b24u
YmFja2dyb3VuZENvbG9yID0gZXh0cmFQYXJhbXMtPmJ1dHRvbi5iYWNrZ3JvdW5kQ29sb3I7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0VGV4dEZpZWxkOgot
ICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT50ZXh0RmllbGQuaXNUZXh0QXJlYSA9IGV4dHJh
UGFyYW1zLT50ZXh0RmllbGQuaXNUZXh0QXJlYTsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFt
cy0+dGV4dEZpZWxkLmlzTGlzdGJveCA9IGV4dHJhUGFyYW1zLT50ZXh0RmllbGQuaXNMaXN0Ym94
OwotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT50ZXh0RmllbGQuYmFja2dyb3VuZENvbG9y
ID0gZXh0cmFQYXJhbXMtPnRleHRGaWVsZC5iYWNrZ3JvdW5kQ29sb3I7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0TWVudUxpc3Q6Ci0gICAgICAgIHdlYlRo
ZW1lRXh0cmFQYXJhbXMtPm1lbnVMaXN0Lmhhc0JvcmRlciA9IGV4dHJhUGFyYW1zLT5tZW51TGlz
dC5oYXNCb3JkZXI7Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPm1lbnVMaXN0Lmhhc0Jv
cmRlclJhZGl1cyA9IGV4dHJhUGFyYW1zLT5tZW51TGlzdC5oYXNCb3JkZXJSYWRpdXM7Ci0gICAg
ICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPm1lbnVMaXN0LmFycm93WCA9IGV4dHJhUGFyYW1zLT5t
ZW51TGlzdC5hcnJvd1g7Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPm1lbnVMaXN0LmFy
cm93WSA9IGV4dHJhUGFyYW1zLT5tZW51TGlzdC5hcnJvd1k7Ci0gICAgICAgIHdlYlRoZW1lRXh0
cmFQYXJhbXMtPm1lbnVMaXN0LmJhY2tncm91bmRDb2xvciA9IGV4dHJhUGFyYW1zLT5tZW51TGlz
dC5iYWNrZ3JvdW5kQ29sb3I7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1TdXBw
b3J0OjpQYXJ0U2xpZGVyVHJhY2s6Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTbGlk
ZXJUaHVtYjoKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+c2xpZGVyLnZlcnRpY2FsID0g
ZXh0cmFQYXJhbXMtPnNsaWRlci52ZXJ0aWNhbDsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFt
cy0+c2xpZGVyLmluRHJhZyA9IGV4dHJhUGFyYW1zLT5zbGlkZXIuaW5EcmFnOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydElubmVyU3BpbkJ1dHRvbjoKLSAg
ICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+aW5uZXJTcGluLnNwaW5VcCA9IGV4dHJhUGFyYW1z
LT5pbm5lclNwaW4uc3BpblVwOwotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5pbm5lclNw
aW4ucmVhZE9ubHkgPSBleHRyYVBhcmFtcy0+aW5uZXJTcGluLnJlYWRPbmx5OwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFByb2dyZXNzQmFyOgotICAgICAg
ICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5wcm9ncmVzc0Jhci5kZXRlcm1pbmF0ZSA9IGV4dHJhUGFy
YW1zLT5wcm9ncmVzc0Jhci5kZXRlcm1pbmF0ZTsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFt
cy0+cHJvZ3Jlc3NCYXIudmFsdWVSZWN0WCA9IGV4dHJhUGFyYW1zLT5wcm9ncmVzc0Jhci52YWx1
ZVJlY3RYOwotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5wcm9ncmVzc0Jhci52YWx1ZVJl
Y3RZID0gZXh0cmFQYXJhbXMtPnByb2dyZXNzQmFyLnZhbHVlUmVjdFk7Ci0gICAgICAgIHdlYlRo
ZW1lRXh0cmFQYXJhbXMtPnByb2dyZXNzQmFyLnZhbHVlUmVjdFdpZHRoID0gZXh0cmFQYXJhbXMt
PnByb2dyZXNzQmFyLnZhbHVlUmVjdFdpZHRoOwotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1z
LT5wcm9ncmVzc0Jhci52YWx1ZVJlY3RIZWlnaHQgPSBleHRyYVBhcmFtcy0+cHJvZ3Jlc3NCYXIu
dmFsdWVSZWN0SGVpZ2h0OwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBi
cmVhazsgLy8gUGFydHMgdGhhdCBoYXZlIG5vIGV4dHJhIHBhcmFtcyBnZXQgaGVyZS4KLSAgICB9
Ci19Ci0KLUludFNpemUgUGxhdGZvcm1TdXBwb3J0OjpnZXRUaGVtZVBhcnRTaXplKFRoZW1lUGFy
dCBwYXJ0KQotewotICAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVt
ZUVuZ2luZSgpLT5nZXRTaXplKFdlYlRoZW1lUGFydChwYXJ0KSk7Ci19Ci0KLXZvaWQgUGxhdGZv
cm1TdXBwb3J0OjpwYWludFRoZW1lUGFydCgKLSAgICBHcmFwaGljc0NvbnRleHQqIGdjLCBUaGVt
ZVBhcnQgcGFydCwgVGhlbWVQYWludFN0YXRlIHN0YXRlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBUaGVtZVBhaW50RXh0cmFQYXJhbXMqIGV4dHJhUGFyYW1zKQotewotICAgIFdlYlRoZW1l
RW5naW5lOjpFeHRyYVBhcmFtcyB3ZWJUaGVtZUV4dHJhUGFyYW1zOwotICAgIEdldFdlYlRoZW1l
RXh0cmFQYXJhbXMocGFydCwgc3RhdGUsIGV4dHJhUGFyYW1zLCAmd2ViVGhlbWVFeHRyYVBhcmFt
cyk7Ci0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWlu
dCgKLSAgICAgICAgZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKSwgV2ViVGhlbWVQYXJ0
KHBhcnQpLCBXZWJUaGVtZVN0YXRlKHN0YXRlKSwgcmVjdCwgJndlYlRoZW1lRXh0cmFQYXJhbXMp
OwotfQotCiAjZW5kaWYKIAogLy8gVGhlc2UgYXJlIHRlbXBvcmFyeSBtZXRob2RzIHRoYXQgdGhl
IFdlYktpdCBsYXllciBjYW4gdXNlIHRvIGNhbGwgdG8gdGhlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164744</attachid>
            <date>2012-09-19 08:51:02 -0700</date>
            <delta_ts>2012-09-26 12:13:25 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-96516-20120919115027.patch</filename>
            <type>text/plain</type>
            <size>23155</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTE5ICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUg
VU5JWC1zcGVjaWZpYyB0aGVtZSBmdW5jdGlvbnMgb3V0IG9mIFBsYXRmb3JtU3VwcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1MTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGlu
Zm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVh
c2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Bs
YXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAoUGxhdGZvcm1TdXBwb3J0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpzY3JvbGxiYXJUaGlja25l
c3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWlu
dFRyYWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxp
bnV4OjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTGludXg6OnBhaW50VGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUxpbnV4OjpidXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1MaW51eDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFdl
YlRoZW1lU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
OjphZGp1c3RTbGlkZXJUaHVtYlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVD
aHJvbWl1bUxpbnV4OjpwYWludENoZWNrYm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eDo6c2V0Q2hlY2tib3hTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRSYWRpbyk6CisKIDIwMTItMDktMTkgIFJhdWwg
SHVkZWEgIDxyaHVkZWFAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1NSZWdpb25zXVtDU1NPTV0g
TWFrZSBzdXJlIGFsbCBSZWdpb25zIEFQSXMgYXJlIG5vdCB2aXNpYmxlIGlmIENTU19SRUdJT05T
IGlzIG5vdCBkZWZpbmVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
bGF0Zm9ybVN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAkocmV2aXNpb24gMTI4OTI4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE4NCwxMDIgKzE4NCw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHBhaW50U2Ny
b2xsYmFyVGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgVGhlbWVQYWludFN0YXRlLCBUaGVtZVBhaW50
U2l6ZSwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFRoZW1lUGFpbnRTY3JvbGxiYXJJbmZvJik7CiAj
ZWxpZiBPUyhVTklYKQotICAgIC8vIFRoZSBVSSBwYXJ0IHdoaWNoIGlzIGJlaW5nIGFjY2Vzc2Vk
LgotICAgIGVudW0gVGhlbWVQYXJ0IHsKLSAgICAgICAgLy8gU2Nyb2xsYmFyVGhlbWUgcGFydHMK
LSAgICAgICAgUGFydFNjcm9sbGJhckRvd25BcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhckxl
ZnRBcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhclJpZ2h0QXJyb3csCi0gICAgICAgIFBhcnRT
Y3JvbGxiYXJVcEFycm93LAotICAgICAgICBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRodW1iLAot
ICAgICAgICBQYXJ0U2Nyb2xsYmFyVmVydGljYWxUaHVtYiwKLSAgICAgICAgUGFydFNjcm9sbGJh
ckhvcml6b250YWxUcmFjaywKLSAgICAgICAgUGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2ssCi0K
LSAgICAgICAgLy8gUmVuZGVyVGhlbWUgcGFydHMKLSAgICAgICAgUGFydENoZWNrYm94LAotICAg
ICAgICBQYXJ0UmFkaW8sCi0gICAgICAgIFBhcnRCdXR0b24sCi0gICAgICAgIFBhcnRUZXh0Rmll
bGQsCi0gICAgICAgIFBhcnRNZW51TGlzdCwKLSAgICAgICAgUGFydFNsaWRlclRyYWNrLAotICAg
ICAgICBQYXJ0U2xpZGVyVGh1bWIsCi0gICAgICAgIFBhcnRJbm5lclNwaW5CdXR0b24sCi0gICAg
ICAgIFBhcnRQcm9ncmVzc0JhcgotICAgIH07Ci0KLSAgICAvLyBUaGUgY3VycmVudCBzdGF0ZSBv
ZiB0aGUgYXNzb2NpYXRlZCBQYXJ0LgotICAgIGVudW0gVGhlbWVQYWludFN0YXRlIHsKLSAgICAg
ICAgU3RhdGVEaXNhYmxlZCwKLSAgICAgICAgU3RhdGVIb3ZlciwKLSAgICAgICAgU3RhdGVOb3Jt
YWwsCi0gICAgICAgIFN0YXRlUHJlc3NlZAotICAgIH07Ci0KLSAgICBzdHJ1Y3QgU2Nyb2xsYmFy
VHJhY2tFeHRyYVBhcmFtcyB7Ci0gICAgICAgIC8vIFRoZSBib3VuZHMgb2YgdGhlIGVudGlyZSB0
cmFjaywgYXMgb3Bwb3NlZCB0byB0aGUgcGFydCBiZWluZyBwYWludGVkLgotICAgICAgICBpbnQg
dHJhY2tYOwotICAgICAgICBpbnQgdHJhY2tZOwotICAgICAgICBpbnQgdHJhY2tXaWR0aDsKLSAg
ICAgICAgaW50IHRyYWNrSGVpZ2h0OwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgQnV0dG9uRXh0cmFQ
YXJhbXMgewotICAgICAgICBib29sIGNoZWNrZWQ7Ci0gICAgICAgIGJvb2wgaW5kZXRlcm1pbmF0
ZTsgLy8gV2hldGhlciB0aGUgYnV0dG9uIHN0YXRlIGlzIGluZGV0ZXJtaW5hdGUuCi0gICAgICAg
IGJvb2wgaXNEZWZhdWx0OyAvLyBXaGV0aGVyIHRoZSBidXR0b24gaXMgZGVmYXVsdCBidXR0b24u
Ci0gICAgICAgIGJvb2wgaGFzQm9yZGVyOwotICAgICAgICB1bnNpZ25lZCBiYWNrZ3JvdW5kQ29s
b3I7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBUZXh0RmllbGRFeHRyYVBhcmFtcyB7Ci0gICAgICAg
IGJvb2wgaXNUZXh0QXJlYTsKLSAgICAgICAgYm9vbCBpc0xpc3Rib3g7Ci0gICAgICAgIHVuc2ln
bmVkIGJhY2tncm91bmRDb2xvcjsKLSAgICB9OwotCi0gICAgc3RydWN0IE1lbnVMaXN0RXh0cmFQ
YXJhbXMgewotICAgICAgICBib29sIGhhc0JvcmRlcjsKLSAgICAgICAgYm9vbCBoYXNCb3JkZXJS
YWRpdXM7Ci0gICAgICAgIGludCBhcnJvd1g7Ci0gICAgICAgIGludCBhcnJvd1k7Ci0gICAgICAg
IHVuc2lnbmVkIGJhY2tncm91bmRDb2xvcjsKLSAgICB9OwotCi0gICAgc3RydWN0IFNsaWRlckV4
dHJhUGFyYW1zIHsKLSAgICAgICAgYm9vbCB2ZXJ0aWNhbDsKLSAgICAgICAgYm9vbCBpbkRyYWc7
Ci0gICAgfTsKLQotICAgIHN0cnVjdCBJbm5lclNwaW5CdXR0b25FeHRyYVBhcmFtcyB7Ci0gICAg
ICAgIGJvb2wgc3BpblVwOwotICAgICAgICBib29sIHJlYWRPbmx5OwotICAgIH07Ci0KLSAgICBz
dHJ1Y3QgUHJvZ3Jlc3NCYXJFeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgZGV0ZXJtaW5hdGU7
Ci0gICAgICAgIGludCB2YWx1ZVJlY3RYOwotICAgICAgICBpbnQgdmFsdWVSZWN0WTsKLSAgICAg
ICAgaW50IHZhbHVlUmVjdFdpZHRoOwotICAgICAgICBpbnQgdmFsdWVSZWN0SGVpZ2h0OwotICAg
IH07Ci0KLSAgICB1bmlvbiBUaGVtZVBhaW50RXh0cmFQYXJhbXMgewotICAgICAgICBTY3JvbGxi
YXJUcmFja0V4dHJhUGFyYW1zIHNjcm9sbGJhclRyYWNrOwotICAgICAgICBCdXR0b25FeHRyYVBh
cmFtcyBidXR0b247Ci0gICAgICAgIFRleHRGaWVsZEV4dHJhUGFyYW1zIHRleHRGaWVsZDsKLSAg
ICAgICAgTWVudUxpc3RFeHRyYVBhcmFtcyBtZW51TGlzdDsKLSAgICAgICAgU2xpZGVyRXh0cmFQ
YXJhbXMgc2xpZGVyOwotICAgICAgICBJbm5lclNwaW5CdXR0b25FeHRyYVBhcmFtcyBpbm5lclNw
aW47Ci0gICAgICAgIFByb2dyZXNzQmFyRXh0cmFQYXJhbXMgcHJvZ3Jlc3NCYXI7Ci0gICAgfTsK
LQotICAgIC8vIEdldHMgdGhlIHNpemUgb2YgdGhlIGdpdmVuIHRoZW1lIHBhcnQuIEZvciB2YXJp
YWJsZSBzaXplZCBpdGVtcwotICAgIC8vIGxpa2UgdmVydGljYWwgc2Nyb2xsYmFyIHRodW1icywg
dGhlIHdpZHRoIHdpbGwgYmUgdGhlIHJlcXVpcmVkIHdpZHRoIG9mCi0gICAgLy8gdGhlIHRyYWNr
IHdoaWxlIHRoZSBoZWlnaHQgd2lsbCBiZSB0aGUgbWluaW11bSBoZWlnaHQuCi0gICAgc3RhdGlj
IEludFNpemUgZ2V0VGhlbWVQYXJ0U2l6ZShUaGVtZVBhcnQpOwotICAgIC8vIFBhaW50IHRoZSBn
aXZlbiB0aGUgZ2l2ZW4gdGhlbWUgcGFydC4KLSAgICBzdGF0aWMgdm9pZCBwYWludFRoZW1lUGFy
dChHcmFwaGljc0NvbnRleHQqLCBUaGVtZVBhcnQsIFRoZW1lUGFpbnRTdGF0ZSwgY29uc3QgSW50
UmVjdCYsIGNvbnN0IFRoZW1lUGFpbnRFeHRyYVBhcmFtcyopOwogI2VuZGlmCiB9OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVt
TGludXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHAJKHJldmlzaW9uIDEyODkyOCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51
eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwxMiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5oIgogCi0jaW5jbHVk
ZSAiUGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAj
aW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNp
bmNsdWRlIDxwdWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaD4KKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBTY3JvbGxiYXJUaGVtZSogU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkKQEAg
LTQ2LDIyICs0OCwyMiBAQCBTY3JvbGxiYXJUaGVtZSogU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRo
CiBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpzY3JvbGxiYXJUaGlja25lc3MoU2Ny
b2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiB7CiAgICAgLy8gSG9yaXogYW5kIFZlcnQg
c2Nyb2xsYmFycyBhcmUgdGhlIHNhbWUgdGhpY2tuZXNzLgotICAgIEludFNpemUgc2Nyb2xsYmFy
U2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6
OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrKTsKKyAgICBJbnRTaXplIHNjcm9sbGJhclNpemUg
PSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNpemUoV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2spOwogICAgIHJl
dHVybiBzY3JvbGxiYXJTaXplLndpZHRoKCk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bUxpbnV4OjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFy
dCBwYXJ0VHlwZSkKIHsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzdGF0
ZSA9IHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSA9PSBwYXJ0VHlwZSA/IFBsYXRmb3JtU3VwcG9y
dDo6U3RhdGVIb3ZlciA6IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVOb3JtYWw7CisgICAgV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUgPSBzY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkg
PT0gcGFydFR5cGUgPyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZUhvdmVyIDogV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7CiAgICAgSW50UmVjdCBhbGlnblJlY3QgPSB0
cmFja1JlY3Qoc2Nyb2xsYmFyLCBmYWxzZSk7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBh
aW50RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6
RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CiAgICAgZXh0cmFQYXJhbXMuc2Nyb2xsYmFyVHJhY2su
dHJhY2tYID0gYWxpZ25SZWN0LngoKTsKICAgICBleHRyYVBhcmFtcy5zY3JvbGxiYXJUcmFjay50
cmFja1kgPSBhbGlnblJlY3QueSgpOwogICAgIGV4dHJhUGFyYW1zLnNjcm9sbGJhclRyYWNrLnRy
YWNrV2lkdGggPSBhbGlnblJlY3Qud2lkdGgoKTsKICAgICBleHRyYVBhcmFtcy5zY3JvbGxiYXJU
cmFjay50cmFja0hlaWdodCA9IGFsaWduUmVjdC5oZWlnaHQoKTsKLSAgICBQbGF0Zm9ybVN1cHBv
cnQ6OnBhaW50VGhlbWVQYXJ0KAotICAgICAgICBnYywKLSAgICAgICAgc2Nyb2xsYmFyLT5vcmll
bnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRT
Y3JvbGxiYXJIb3Jpem9udGFsVHJhY2sgOiBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJW
ZXJ0aWNhbFRyYWNrLAorICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OnBhaW50KAorICAgICAg
ICBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLAorICAgICAgICBzY3JvbGxiYXItPm9y
aWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU6OlBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVHJhY2sgOiBXZWJLaXQ6OldlYlRoZW1lRW5naW5l
OjpQYXJ0U2Nyb2xsYmFyVmVydGljYWxUcmFjaywKICAgICAgICAgc3RhdGUsCiAgICAgICAgIHJl
Y3QsCiAgICAgICAgICZleHRyYVBhcmFtcyk7CkBAIC02OSw1MiArNzEsNTIgQEAgdm9pZCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VAogCiB2b2lkIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW1MaW51eDo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBw
YXJ0KQogewotICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYXJ0IHBhaW50UGFydDsKLSAgICBQ
bGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzdGF0ZSA9IFBsYXRmb3JtU3VwcG9ydDo6
U3RhdGVOb3JtYWw7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydCBwYWludFBhcnQ7
CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUgPSBXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsKICAgICBib29sIGNoZWNrTWluID0gZmFsc2U7CiAgICAg
Ym9vbCBjaGVja01heCA9IGZhbHNlOwogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkg
PT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9u
U3RhcnRQYXJ0KSB7Ci0gICAgICAgICAgICBwYWludFBhcnQgPSBQbGF0Zm9ybVN1cHBvcnQ6OlBh
cnRTY3JvbGxiYXJMZWZ0QXJyb3c7CisgICAgICAgICAgICBwYWludFBhcnQgPSBXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyTGVmdEFycm93OwogICAgICAgICAgICAgY2hlY2tN
aW4gPSB0cnVlOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFpbnRQYXJ0ID0gUGxh
dGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyUmlnaHRBcnJvdzsKKyAgICAgICAgICAgIHBhaW50
UGFydCA9IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJSaWdodEFycm93Owog
ICAgICAgICAgICAgY2hlY2tNYXggPSB0cnVlOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRvblN0YXJ0UGFydCkgewotICAgICAgICAgICAgcGFp
bnRQYXJ0ID0gUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyVXBBcnJvdzsKKyAgICAgICAg
ICAgIHBhaW50UGFydCA9IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJVcEFy
cm93OwogICAgICAgICAgICAgY2hlY2tNaW4gPSB0cnVlOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgcGFpbnRQYXJ0ID0gUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyRG93bkFy
cm93OworICAgICAgICAgICAgcGFpbnRQYXJ0ID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFy
dFNjcm9sbGJhckRvd25BcnJvdzsKICAgICAgICAgICAgIGNoZWNrTWF4ID0gdHJ1ZTsKICAgICAg
ICAgfQogICAgIH0KICAgICBpZiAoKGNoZWNrTWluICYmIChzY3JvbGxiYXItPmN1cnJlbnRQb3Mo
KSA8PSAwKSkKICAgICAgICAgfHwgKGNoZWNrTWF4ICYmIHNjcm9sbGJhci0+Y3VycmVudFBvcygp
ID09IHNjcm9sbGJhci0+bWF4aW11bSgpKSkgewotICAgICAgICBzdGF0ZSA9IFBsYXRmb3JtU3Vw
cG9ydDo6U3RhdGVEaXNhYmxlZDsKKyAgICAgICAgc3RhdGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5n
aW5lOjpTdGF0ZURpc2FibGVkOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChwYXJ0ID09IHNj
cm9sbGJhci0+cHJlc3NlZFBhcnQoKSkKLSAgICAgICAgICAgIHN0YXRlID0gUGxhdGZvcm1TdXBw
b3J0OjpTdGF0ZVByZXNzZWQ7CisgICAgICAgICAgICBzdGF0ZSA9IFdlYktpdDo6V2ViVGhlbWVF
bmdpbmU6OlN0YXRlUHJlc3NlZDsKICAgICAgICAgZWxzZSBpZiAocGFydCA9PSBzY3JvbGxiYXIt
PmhvdmVyZWRQYXJ0KCkpCi0gICAgICAgICAgICBzdGF0ZSA9IFBsYXRmb3JtU3VwcG9ydDo6U3Rh
dGVIb3ZlcjsKKyAgICAgICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3Rh
dGVIb3ZlcjsKICAgICB9Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydChnYywg
cGFpbnRQYXJ0LCBzdGF0ZSwgcmVjdCwgMCk7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6
cGFpbnQoZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKSwgcGFpbnRQYXJ0LCBzdGF0ZSwg
cmVjdCwgMCk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRo
dW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50
U3RhdGUgc3RhdGU7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGU7CiAK
ICAgICBpZiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgpID09IFRodW1iUGFydCkKLSAgICAgICAg
c3RhdGUgPSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlUHJlc3NlZDsKKyAgICAgICAgc3RhdGUgPSBX
ZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZVByZXNzZWQ7CiAgICAgZWxzZSBpZiAoc2Nyb2xs
YmFyLT5ob3ZlcmVkUGFydCgpID09IFRodW1iUGFydCkKLSAgICAgICAgc3RhdGUgPSBQbGF0Zm9y
bVN1cHBvcnQ6OlN0YXRlSG92ZXI7CisgICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6U3RhdGVIb3ZlcjsKICAgICBlbHNlCi0gICAgICAgIHN0YXRlID0gUGxhdGZvcm1TdXBw
b3J0OjpTdGF0ZU5vcm1hbDsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KAot
ICAgICAgICBnYywKLSAgICAgICAgc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250
YWxTY3JvbGxiYXIgPyBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVGh1
bWIgOiBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iLAorICAgICAg
ICBzdGF0ZSA9IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlTm9ybWFsOworICAgIFdlYktp
dDo6V2ViVGhlbWVFbmdpbmU6OnBhaW50KAorICAgICAgICBnYy0+cGxhdGZvcm1Db250ZXh0KCkt
PmNhbnZhcygpLAorICAgICAgICBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRh
bFNjcm9sbGJhciA/IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJIb3Jpem9u
dGFsVGh1bWIgOiBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyVmVydGljYWxU
aHVtYiwKICAgICAgICAgc3RhdGUsCiAgICAgICAgIHJlY3QsCiAgICAgICAgIDApOwpAQCAtMTI4
LDIzICsxMzAsMjMgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNob3VsZAog
SW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OmJ1dHRvblNpemUoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlv
bigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7Ci0gICAgICAgIEludFNpemUgc2l6ZSA9IFBsYXRm
b3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxi
YXJVcEFycm93KTsKKyAgICAgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBh
cnRTY3JvbGxiYXJVcEFycm93KTsKICAgICAgICAgcmV0dXJuIEludFNpemUoc2l6ZS53aWR0aCgp
LCBzY3JvbGxiYXItPmhlaWdodCgpIDwgMiAqIHNpemUuaGVpZ2h0KCkgPyBzY3JvbGxiYXItPmhl
aWdodCgpIC8gMiA6IHNpemUuaGVpZ2h0KCkpOwogICAgIH0KIAogICAgIC8vIEhvcml6b250YWxT
Y3JvbGxiYXIKLSAgICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFy
dFNpemUoUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyTGVmdEFycm93KTsKKyAgICBJbnRT
aXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdl
dFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckxlZnRBcnJvdyk7CiAg
ICAgcmV0dXJuIEludFNpemUoc2Nyb2xsYmFyLT53aWR0aCgpIDwgMiAqIHNpemUud2lkdGgoKSA/
IHNjcm9sbGJhci0+d2lkdGgoKSAvIDIgOiBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwog
fQogCiBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjptaW5pbXVtVGh1bWJMZW5ndGgo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5v
cmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7Ci0gICAgICAgIEludFNpemUgc2l6
ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6OlBh
cnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iKTsKKyAgICAgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0
OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2Vi
VGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iKTsKICAgICAgICAgcmV0dXJu
IHNpemUuaGVpZ2h0KCk7CiAgICAgfQogCi0gICAgSW50U2l6ZSBzaXplID0gUGxhdGZvcm1TdXBw
b3J0OjpnZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhckhvcml6
b250YWxUaHVtYik7CisgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVu
dCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRT
Y3JvbGxiYXJIb3Jpem9udGFsVGh1bWIpOwogICAgIHJldHVybiBzaXplLndpZHRoKCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXgu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNo
cm9taXVtTGludXguY3BwCShyZXZpc2lvbiAxMjg5MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NiArMzUsOSBAQAogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiVXNlckFn
ZW50U3R5bGVTaGVldHMuaCIKIAorI2luY2x1ZGUgPHB1YmxpYy9saW51eC9XZWJUaGVtZUVuZ2lu
ZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVuc2lnbmVkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6bV9hY3RpdmVTZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IgPQpAQCAtNTAsMTYgKzUzLDE2IEBAIGRvdWJsZSBSZW5kZXJUaGVtZUNo
cm9taXVtTGludXg6Om1fY2FyZXQKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRlZmF1bHRCdXR0
b25CYWNrZ3JvdW5kQ29sb3IgPSAweGZmZGRkZGRkOwogCi1zdGF0aWMgUGxhdGZvcm1TdXBwb3J0
OjpUaGVtZVBhaW50U3RhdGUgZ2V0V2ViVGhlbWVTdGF0ZShjb25zdCBSZW5kZXJUaGVtZSogdGhl
bWUsIGNvbnN0IFJlbmRlck9iamVjdCogbykKK3N0YXRpYyBXZWJLaXQ6OldlYlRoZW1lRW5naW5l
OjpTdGF0ZSBnZXRXZWJUaGVtZVN0YXRlKGNvbnN0IFJlbmRlclRoZW1lKiB0aGVtZSwgY29uc3Qg
UmVuZGVyT2JqZWN0KiBvKQogewogICAgIGlmICghdGhlbWUtPmlzRW5hYmxlZChvKSkKLSAgICAg
ICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVEaXNhYmxlZDsKKyAgICAgICAgcmV0dXJu
IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlRGlzYWJsZWQ7CiAgICAgaWYgKHRoZW1lLT5p
c1ByZXNzZWQobykpCi0gICAgICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlUHJlc3Nl
ZDsKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlUHJlc3NlZDsK
ICAgICBpZiAodGhlbWUtPmlzSG92ZXJlZChvKSkKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtU3Vw
cG9ydDo6U3RhdGVIb3ZlcjsKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6
OlN0YXRlSG92ZXI7CiAKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZU5vcm1hbDsK
KyAgICByZXR1cm4gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7CiB9CiAKIApA
QCAtMTYwLDcgKzE2Myw3IEBAIGludCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNsaWRlclRp
Y2sKIAogdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmFkanVzdFNsaWRlclRodW1iU2l6
ZShSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgSW50
U2l6ZSBzaXplID0gUGxhdGZvcm1TdXBwb3J0OjpnZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3Vw
cG9ydDo6UGFydFNsaWRlclRodW1iKTsKKyAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRm
b3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdldFRoZW1lUGFydFNpemUoV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6UGFydFNsaWRlclRodW1iKTsKIAogICAgIGlmIChzdHlsZS0+YXBwZWFy
YW5jZSgpID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQpIHsKICAgICAgICAgc3R5bGUtPnNl
dFdpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7CkBAIC0yMDEsMTEgKzIwNCwxMSBA
QCB2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6c2V0U2VsZWN0CiAKIGJvb2wgUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludENoZWNrYm94KFJlbmRlck9iamVjdCogbywgY29uc3Qg
UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIFBsYXRmb3JtU3VwcG9y
dDo6VGhlbWVQYWludEV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2ViVGhl
bWVFbmdpbmU6OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOwogICAgIGV4dHJhUGFyYW1zLmJ1dHRv
bi5jaGVja2VkID0gaXNDaGVja2VkKG8pOwogICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5pbmRldGVy
bWluYXRlID0gaXNJbmRldGVybWluYXRlKG8pOwogCi0gICAgUGxhdGZvcm1TdXBwb3J0OjpwYWlu
dFRoZW1lUGFydChpLmNvbnRleHQsIFBsYXRmb3JtU3VwcG9ydDo6UGFydENoZWNrYm94LCBnZXRX
ZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCByZWN0LCAmZXh0cmFQYXJhbXMpOworICAgIFdlYktpdDo6
UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoaS5jb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCksIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRDaGVj
a2JveCwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgcmVjdCwgJmV4dHJhUGFyYW1zKTsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTIxNSwxNiArMjE4LDE2IEBAIHZvaWQgUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjpzZXRDaGVja2IKICAgICBpZiAoIXN0eWxlLT53aWR0aCgpLmlzSW50
cmluc2ljT3JBdXRvKCkgJiYgIXN0eWxlLT5oZWlnaHQoKS5pc0F1dG8oKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgSW50U2l6ZSBzaXplID0gUGxhdGZvcm1TdXBwb3J0OjpnZXRUaGVtZVBhcnRT
aXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydENoZWNrYm94KTsKKyAgICBJbnRTaXplIHNpemUgPSBX
ZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNpemUoV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6UGFydENoZWNrYm94KTsKICAgICBzZXRTaXplSWZBdXRvKHN0eWxl
LCBzaXplKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50UmFkaW8o
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3Qp
CiB7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQYXJh
bXM7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7
CiAgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmNoZWNrZWQgPSBpc0NoZWNrZWQobyk7CiAKLSAgICBQ
bGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KGkuY29udGV4dCwgUGxhdGZvcm1TdXBwb3J0
OjpQYXJ0UmFkaW8sIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIHJlY3QsICZleHRyYVBhcmFt
cyk7CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWlu
dChpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKSwgV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZTo6UGFydFJhZGlvLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCByZWN0LCAmZXh0
cmFQYXJhbXMpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyOTAwOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMTkgIE1hcmsg
UGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gTW92
ZSBVTklYLXNwZWNpZmljIHRoZW1lIGZ1bmN0aW9ucyBvdXQgb2YgUGxhdGZvcm1TdXBwb3J0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjUxNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwg
aW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBs
ZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAg
ICAgICogc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAx
Mi0wOS0xOSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0No
cm9taXVtXSBGaXggY3Jhc2ggaW4gV2ViRnJhbWVJbXBsOjpsb2FkSGlzdG9yeUl0ZW0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkocmV2
aXNpb24gMTI4OTI4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBw
b3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg2LDExMyArMzg2LDYgQEAgdm9pZCBQbGF0Zm9y
bVN1cHBvcnQ6OnBhaW50U2Nyb2xsYmFyVGh1bQogfQogCiAjZWxpZiBPUyhVTklYKQotCi1zdGF0
aWMgV2ViVGhlbWVFbmdpbmU6OlBhcnQgV2ViVGhlbWVQYXJ0KFBsYXRmb3JtU3VwcG9ydDo6VGhl
bWVQYXJ0IHBhcnQpCi17Ci0gICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1
cHBvcnQ6OlBhcnRTY3JvbGxiYXJEb3duQXJyb3c6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFy
dFNjcm9sbGJhckRvd25BcnJvdzsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9s
bGJhckxlZnRBcnJvdzogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyTGVmdEFy
cm93OwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyUmlnaHRBcnJvdzog
cmV0dXJuIFdlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyUmlnaHRBcnJvdzsKLSAgICBjYXNl
IFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhclVwQXJyb3c6IHJldHVybiBXZWJUaGVtZUVu
Z2luZTo6UGFydFNjcm9sbGJhclVwQXJyb3c7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBh
cnRTY3JvbGxiYXJIb3Jpem9udGFsVGh1bWI6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNj
cm9sbGJhckhvcml6b250YWxUaHVtYjsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFNj
cm9sbGJhclZlcnRpY2FsVGh1bWI6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJh
clZlcnRpY2FsVGh1bWI7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJI
b3Jpem9udGFsVHJhY2s6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckhvcml6
b250YWxUcmFjazsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhclZlcnRp
Y2FsVHJhY2s6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclZlcnRpY2FsVHJh
Y2s7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRDaGVja2JveDogcmV0dXJuIFdlYlRo
ZW1lRW5naW5lOjpQYXJ0Q2hlY2tib3g7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRS
YWRpbzogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpQYXJ0UmFkaW87Ci0gICAgY2FzZSBQbGF0Zm9y
bVN1cHBvcnQ6OlBhcnRCdXR0b246IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydEJ1dHRvbjsK
LSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFRleHRGaWVsZDogcmV0dXJuIFdlYlRoZW1l
RW5naW5lOjpQYXJ0VGV4dEZpZWxkOwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0TWVu
dUxpc3Q6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydE1lbnVMaXN0OwotICAgIGNhc2UgUGxh
dGZvcm1TdXBwb3J0OjpQYXJ0U2xpZGVyVHJhY2s6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFy
dFNsaWRlclRyYWNrOwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2xpZGVyVGh1bWI6
IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNsaWRlclRodW1iOwotICAgIGNhc2UgUGxhdGZv
cm1TdXBwb3J0OjpQYXJ0SW5uZXJTcGluQnV0dG9uOiByZXR1cm4gV2ViVGhlbWVFbmdpbmU6OlBh
cnRJbm5lclNwaW5CdXR0b247Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRQcm9ncmVz
c0JhcjogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpQYXJ0UHJvZ3Jlc3NCYXI7Ci0gICAgfQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNj
cm9sbGJhckRvd25BcnJvdzsKLX0KLQotc3RhdGljIFdlYlRoZW1lRW5naW5lOjpTdGF0ZSBXZWJU
aGVtZVN0YXRlKFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHN0YXRlKQotewotICAg
IHN3aXRjaCAoc3RhdGUpIHsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVEaXNhYmxl
ZDogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkOwotICAgIGNhc2UgUGxhdGZv
cm1TdXBwb3J0OjpTdGF0ZUhvdmVyOiByZXR1cm4gV2ViVGhlbWVFbmdpbmU6OlN0YXRlSG92ZXI7
Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlTm9ybWFsOiByZXR1cm4gV2ViVGhlbWVF
bmdpbmU6OlN0YXRlTm9ybWFsOwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZVByZXNz
ZWQ6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6U3RhdGVQcmVzc2VkOwotICAgIH0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV2ViVGhlbWVFbmdpbmU6OlN0YXRlRGlzYWJs
ZWQ7Ci19Ci0KLXN0YXRpYyB2b2lkIEdldFdlYlRoZW1lRXh0cmFQYXJhbXMoUGxhdGZvcm1TdXBw
b3J0OjpUaGVtZVBhcnQgcGFydCwgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc3Rh
dGUsIGNvbnN0IFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludEV4dHJhUGFyYW1zKiBleHRyYVBh
cmFtcywgV2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zKiB3ZWJUaGVtZUV4dHJhUGFyYW1zKQot
ewotICAgIHN3aXRjaCAocGFydCkgewotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Ny
b2xsYmFySG9yaXpvbnRhbFRyYWNrOgotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Ny
b2xsYmFyVmVydGljYWxUcmFjazoKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+c2Nyb2xs
YmFyVHJhY2sudHJhY2tYID0gZXh0cmFQYXJhbXMtPnNjcm9sbGJhclRyYWNrLnRyYWNrWDsKLSAg
ICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+c2Nyb2xsYmFyVHJhY2sudHJhY2tZID0gZXh0cmFQ
YXJhbXMtPnNjcm9sbGJhclRyYWNrLnRyYWNrWTsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFt
cy0+c2Nyb2xsYmFyVHJhY2sudHJhY2tXaWR0aCA9IGV4dHJhUGFyYW1zLT5zY3JvbGxiYXJUcmFj
ay50cmFja1dpZHRoOwotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5zY3JvbGxiYXJUcmFj
ay50cmFja0hlaWdodCA9IGV4dHJhUGFyYW1zLT5zY3JvbGxiYXJUcmFjay50cmFja0hlaWdodDsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRDaGVja2JveDoK
LSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+YnV0dG9uLmNoZWNrZWQgPSBleHRyYVBhcmFt
cy0+YnV0dG9uLmNoZWNrZWQ7Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPmJ1dHRvbi5p
bmRldGVybWluYXRlID0gZXh0cmFQYXJhbXMtPmJ1dHRvbi5pbmRldGVybWluYXRlOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFJhZGlvOgotICAgICAgICB3
ZWJUaGVtZUV4dHJhUGFyYW1zLT5idXR0b24uY2hlY2tlZCA9IGV4dHJhUGFyYW1zLT5idXR0b24u
Y2hlY2tlZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRC
dXR0b246Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPmJ1dHRvbi5pc0RlZmF1bHQgPSBl
eHRyYVBhcmFtcy0+YnV0dG9uLmlzRGVmYXVsdDsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFt
cy0+YnV0dG9uLmhhc0JvcmRlciA9IGV4dHJhUGFyYW1zLT5idXR0b24uaGFzQm9yZGVyOwotICAg
ICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5idXR0b24uYmFja2dyb3VuZENvbG9yID0gZXh0cmFQ
YXJhbXMtPmJ1dHRvbi5iYWNrZ3JvdW5kQ29sb3I7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UGxhdGZvcm1TdXBwb3J0OjpQYXJ0VGV4dEZpZWxkOgotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFy
YW1zLT50ZXh0RmllbGQuaXNUZXh0QXJlYSA9IGV4dHJhUGFyYW1zLT50ZXh0RmllbGQuaXNUZXh0
QXJlYTsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+dGV4dEZpZWxkLmlzTGlzdGJveCA9
IGV4dHJhUGFyYW1zLT50ZXh0RmllbGQuaXNMaXN0Ym94OwotICAgICAgICB3ZWJUaGVtZUV4dHJh
UGFyYW1zLT50ZXh0RmllbGQuYmFja2dyb3VuZENvbG9yID0gZXh0cmFQYXJhbXMtPnRleHRGaWVs
ZC5iYWNrZ3JvdW5kQ29sb3I7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1TdXBw
b3J0OjpQYXJ0TWVudUxpc3Q6Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPm1lbnVMaXN0
Lmhhc0JvcmRlciA9IGV4dHJhUGFyYW1zLT5tZW51TGlzdC5oYXNCb3JkZXI7Ci0gICAgICAgIHdl
YlRoZW1lRXh0cmFQYXJhbXMtPm1lbnVMaXN0Lmhhc0JvcmRlclJhZGl1cyA9IGV4dHJhUGFyYW1z
LT5tZW51TGlzdC5oYXNCb3JkZXJSYWRpdXM7Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMt
Pm1lbnVMaXN0LmFycm93WCA9IGV4dHJhUGFyYW1zLT5tZW51TGlzdC5hcnJvd1g7Ci0gICAgICAg
IHdlYlRoZW1lRXh0cmFQYXJhbXMtPm1lbnVMaXN0LmFycm93WSA9IGV4dHJhUGFyYW1zLT5tZW51
TGlzdC5hcnJvd1k7Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPm1lbnVMaXN0LmJhY2tn
cm91bmRDb2xvciA9IGV4dHJhUGFyYW1zLT5tZW51TGlzdC5iYWNrZ3JvdW5kQ29sb3I7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2xpZGVyVHJhY2s6Ci0g
ICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTbGlkZXJUaHVtYjoKLSAgICAgICAgd2ViVGhl
bWVFeHRyYVBhcmFtcy0+c2xpZGVyLnZlcnRpY2FsID0gZXh0cmFQYXJhbXMtPnNsaWRlci52ZXJ0
aWNhbDsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+c2xpZGVyLmluRHJhZyA9IGV4dHJh
UGFyYW1zLT5zbGlkZXIuaW5EcmFnOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBsYXRmb3Jt
U3VwcG9ydDo6UGFydElubmVyU3BpbkJ1dHRvbjoKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFt
cy0+aW5uZXJTcGluLnNwaW5VcCA9IGV4dHJhUGFyYW1zLT5pbm5lclNwaW4uc3BpblVwOwotICAg
ICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5pbm5lclNwaW4ucmVhZE9ubHkgPSBleHRyYVBhcmFt
cy0+aW5uZXJTcGluLnJlYWRPbmx5OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBsYXRmb3Jt
U3VwcG9ydDo6UGFydFByb2dyZXNzQmFyOgotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5w
cm9ncmVzc0Jhci5kZXRlcm1pbmF0ZSA9IGV4dHJhUGFyYW1zLT5wcm9ncmVzc0Jhci5kZXRlcm1p
bmF0ZTsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+cHJvZ3Jlc3NCYXIudmFsdWVSZWN0
WCA9IGV4dHJhUGFyYW1zLT5wcm9ncmVzc0Jhci52YWx1ZVJlY3RYOwotICAgICAgICB3ZWJUaGVt
ZUV4dHJhUGFyYW1zLT5wcm9ncmVzc0Jhci52YWx1ZVJlY3RZID0gZXh0cmFQYXJhbXMtPnByb2dy
ZXNzQmFyLnZhbHVlUmVjdFk7Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPnByb2dyZXNz
QmFyLnZhbHVlUmVjdFdpZHRoID0gZXh0cmFQYXJhbXMtPnByb2dyZXNzQmFyLnZhbHVlUmVjdFdp
ZHRoOwotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5wcm9ncmVzc0Jhci52YWx1ZVJlY3RI
ZWlnaHQgPSBleHRyYVBhcmFtcy0+cHJvZ3Jlc3NCYXIudmFsdWVSZWN0SGVpZ2h0OwotICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsgLy8gUGFydHMgdGhhdCBoYXZl
IG5vIGV4dHJhIHBhcmFtcyBnZXQgaGVyZS4KLSAgICB9Ci19Ci0KLUludFNpemUgUGxhdGZvcm1T
dXBwb3J0OjpnZXRUaGVtZVBhcnRTaXplKFRoZW1lUGFydCBwYXJ0KQotewotICAgICByZXR1cm4g
V2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYlRo
ZW1lUGFydChwYXJ0KSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFy
dCgKLSAgICBHcmFwaGljc0NvbnRleHQqIGdjLCBUaGVtZVBhcnQgcGFydCwgVGhlbWVQYWludFN0
YXRlIHN0YXRlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBUaGVtZVBhaW50RXh0cmFQYXJh
bXMqIGV4dHJhUGFyYW1zKQotewotICAgIFdlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyB3ZWJU
aGVtZUV4dHJhUGFyYW1zOwotICAgIEdldFdlYlRoZW1lRXh0cmFQYXJhbXMocGFydCwgc3RhdGUs
IGV4dHJhUGFyYW1zLCAmd2ViVGhlbWVFeHRyYVBhcmFtcyk7Ci0gICAgV2ViS2l0OjpQbGF0Zm9y
bTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludCgKLSAgICAgICAgZ2MtPnBsYXRmb3Jt
Q29udGV4dCgpLT5jYW52YXMoKSwgV2ViVGhlbWVQYXJ0KHBhcnQpLCBXZWJUaGVtZVN0YXRlKHN0
YXRlKSwgcmVjdCwgJndlYlRoZW1lRXh0cmFQYXJhbXMpOwotfQotCiAjZW5kaWYKIAogLy8gVGhl
c2UgYXJlIHRlbXBvcmFyeSBtZXRob2RzIHRoYXQgdGhlIFdlYktpdCBsYXllciBjYW4gdXNlIHRv
IGNhbGwgdG8gdGhlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165848</attachid>
            <date>2012-09-26 12:13:28 -0700</date>
            <delta_ts>2012-09-26 12:56:11 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-96516-20120926151240.patch</filename>
            <type>text/plain</type>
            <size>13845</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTY4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA5LTI2ICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUg
VU5JWC1zcGVjaWZpYyB0aGVtZSBmdW5jdGlvbnMgb3V0IG9mIFBsYXRmb3JtU3VwcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1MTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGlu
Zm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVh
c2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNjcm9sbGJh
clRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGlu
dXg6OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTGludXg6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNocm9taXVtTGludXg6OmJ1dHRvblNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjptaW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphZGp1c3RTbGlkZXJUaHVtYlNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRDaGVja2JveFNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRSYWRpb1Np
emUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphZGp1c3RJ
bm5lclNwaW5CdXR0b25TdHlsZSk6CisKIDIwMTItMDktMjYgIEFuZHJlYXMgS2xpbmcgIDxrbGlu
Z0B3ZWJraXQub3JnPgogCiAgICAgICAgIDQuOTVNQiBiZWxvdyBSZW5kZXJCbG9jazo6aW5zZXJ0
SW50b1RyYWNrZWRSZW5kZXJlck1hcHMoKSBvbiBNZW1idXN0ZXIzLgpJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAJKHJldmlzaW9uIDEyOTY3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUwLDYg
KzE5NTAsOSBAQAogICAgICAgJ2RlcGVuZGVuY2llcyc6IFsKICAgICAgICAgJ3dlYmNvcmVfcHJl
cmVxdWlzaXRlcycsCiAgICAgICBdLAorICAgICAgJ2RlZmluZXMnOiBbCisgICAgICAgICdXRUJL
SVRfSU1QTEVNRU5UQVRJT049MScsCisgICAgICBdLAogICAgICAgJ3NvdXJjZXMnOiBbCiAgICAg
ICAgICc8QCh3ZWJjb3JlX3ByaXZhdGVoZWFkZXJfZmlsZXMpJywKICAgICAgICAgJzxAKHdlYmNv
cmVfZmlsZXMpJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRm
b3JtU3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BsYXRmb3JtU3VwcG9ydC5oCShyZXZpc2lvbiAxMjk2NzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjQyLDEwICsyNDIsNiBAQCBwdWJsaWM6CiAgICAgICAgIFByb2dyZXNzQmFyRXh0cmFQYXJhbXMg
cHJvZ3Jlc3NCYXI7CiAgICAgfTsKIAotICAgIC8vIEdldHMgdGhlIHNpemUgb2YgdGhlIGdpdmVu
IHRoZW1lIHBhcnQuIEZvciB2YXJpYWJsZSBzaXplZCBpdGVtcwotICAgIC8vIGxpa2UgdmVydGlj
YWwgc2Nyb2xsYmFyIHRodW1icywgdGhlIHdpZHRoIHdpbGwgYmUgdGhlIHJlcXVpcmVkIHdpZHRo
IG9mCi0gICAgLy8gdGhlIHRyYWNrIHdoaWxlIHRoZSBoZWlnaHQgd2lsbCBiZSB0aGUgbWluaW11
bSBoZWlnaHQuCi0gICAgc3RhdGljIEludFNpemUgZ2V0VGhlbWVQYXJ0U2l6ZShUaGVtZVBhcnQp
OwogICAgIC8vIFBhaW50IHRoZSBnaXZlbiB0aGUgZ2l2ZW4gdGhlbWUgcGFydC4KICAgICBzdGF0
aWMgdm9pZCBwYWludFRoZW1lUGFydChHcmFwaGljc0NvbnRleHQqLCBUaGVtZVBhcnQsIFRoZW1l
UGFpbnRTdGF0ZSwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFRoZW1lUGFpbnRFeHRyYVBhcmFtcyop
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxi
YXJUaGVtZUNocm9taXVtTGludXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHAJKHJldmlzaW9u
IDEyOTY3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW1MaW51eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwxNCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51
eC5oIgogCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUg
IlNjcm9sbGJhci5oIgogCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8
cHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U2Nyb2xsYmFyVGhlbWUqIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpCkBAIC00NiwyMiAr
NTAsMjMgQEAgU2Nyb2xsYmFyVGhlbWUqIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaAogaW50IFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNv
bnRyb2xTaXplIGNvbnRyb2xTaXplKQogewogICAgIC8vIEhvcml6IGFuZCBWZXJ0IHNjcm9sbGJh
cnMgYXJlIHRoZSBzYW1lIHRoaWNrbmVzcy4KLSAgICBJbnRTaXplIHNjcm9sbGJhclNpemUgPSBQ
bGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFydFNpemUoUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Ny
b2xsYmFyVmVydGljYWxUcmFjayk7CisgICAgSW50U2l6ZSBzY3JvbGxiYXJTaXplID0gV2ViS2l0
OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2Vi
VGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrKTsKICAgICByZXR1cm4gc2Ny
b2xsYmFyU2l6ZS53aWR0aCgpOwogfQogCiB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51
eDo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydFR5
cGUpCiB7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc3RhdGUgPSBzY3Jv
bGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0gcGFydFR5cGUgPyBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRl
SG92ZXIgOiBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlTm9ybWFsOworICAgIFdlYktpdDo6V2ViVGhl
bWVFbmdpbmU6OlN0YXRlIHN0YXRlID0gc2Nyb2xsYmFyLT5ob3ZlcmVkUGFydCgpID09IHBhcnRU
eXBlID8gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3ZlciA6IFdlYktpdDo6V2ViVGhl
bWVFbmdpbmU6OlN0YXRlTm9ybWFsOwogICAgIEludFJlY3QgYWxpZ25SZWN0ID0gdHJhY2tSZWN0
KHNjcm9sbGJhciwgZmFsc2UpOwotICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludEV4dHJh
UGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFy
YW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBnYy0+cGxh
dGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwogICAgIGV4dHJhUGFyYW1zLnNjcm9sbGJhclRyYWNr
LnRyYWNrWCA9IGFsaWduUmVjdC54KCk7CiAgICAgZXh0cmFQYXJhbXMuc2Nyb2xsYmFyVHJhY2su
dHJhY2tZID0gYWxpZ25SZWN0LnkoKTsKICAgICBleHRyYVBhcmFtcy5zY3JvbGxiYXJUcmFjay50
cmFja1dpZHRoID0gYWxpZ25SZWN0LndpZHRoKCk7CiAgICAgZXh0cmFQYXJhbXMuc2Nyb2xsYmFy
VHJhY2sudHJhY2tIZWlnaHQgPSBhbGlnblJlY3QuaGVpZ2h0KCk7Ci0gICAgUGxhdGZvcm1TdXBw
b3J0OjpwYWludFRoZW1lUGFydCgKLSAgICAgICAgZ2MsCi0gICAgICAgIHNjcm9sbGJhci0+b3Jp
ZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gUGxhdGZvcm1TdXBwb3J0OjpQYXJ0
U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrIDogUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFy
VmVydGljYWxUcmFjaywKKyAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5n
aW5lKCktPnBhaW50KAorICAgICAgICBjYW52YXMsCisgICAgICAgIHNjcm9sbGJhci0+b3JpZW50
YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6
UGFydFNjcm9sbGJhckhvcml6b250YWxUcmFjayA6IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBh
cnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrLAogICAgICAgICBzdGF0ZSwKICAgICAgICAgcmVjdCwK
ICAgICAgICAgJmV4dHJhUGFyYW1zKTsKQEAgLTcwLDUxICs3NSw1MSBAQCB2b2lkIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUCiB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1M
aW51eDo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQog
ewogICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYXJ0IHBhaW50UGFydDsKLSAgICBQbGF0Zm9y
bVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzdGF0ZSA9IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVO
b3JtYWw7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUgPSBXZWJLaXQ6
OldlYlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsKICAgICBib29sIGNoZWNrTWluID0gZmFsc2U7
CiAgICAgYm9vbCBjaGVja01heCA9IGZhbHNlOwogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0
aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBpZiAocGFydCA9PSBCYWNr
QnV0dG9uU3RhcnRQYXJ0KSB7Ci0gICAgICAgICAgICBwYWludFBhcnQgPSBQbGF0Zm9ybVN1cHBv
cnQ6OlBhcnRTY3JvbGxiYXJMZWZ0QXJyb3c7CisgICAgICAgICAgICBwYWludFBhcnQgPSBXZWJL
aXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyTGVmdEFycm93OwogICAgICAgICAgICAg
Y2hlY2tNaW4gPSB0cnVlOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFpbnRQYXJ0
ID0gUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyUmlnaHRBcnJvdzsKKyAgICAgICAgICAg
IHBhaW50UGFydCA9IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJSaWdodEFy
cm93OwogICAgICAgICAgICAgY2hlY2tNYXggPSB0cnVlOwogICAgICAgICB9CiAgICAgfSBlbHNl
IHsKICAgICAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRvblN0YXJ0UGFydCkgewotICAgICAgICAg
ICAgcGFpbnRQYXJ0ID0gUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyVXBBcnJvdzsKKyAg
ICAgICAgICAgIHBhaW50UGFydCA9IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxi
YXJVcEFycm93OwogICAgICAgICAgICAgY2hlY2tNaW4gPSB0cnVlOwogICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgcGFpbnRQYXJ0ID0gUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFy
RG93bkFycm93OworICAgICAgICAgICAgcGFpbnRQYXJ0ID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2lu
ZTo6UGFydFNjcm9sbGJhckRvd25BcnJvdzsKICAgICAgICAgICAgIGNoZWNrTWF4ID0gdHJ1ZTsK
ICAgICAgICAgfQogICAgIH0KICAgICBpZiAoKGNoZWNrTWluICYmIChzY3JvbGxiYXItPmN1cnJl
bnRQb3MoKSA8PSAwKSkKICAgICAgICAgfHwgKGNoZWNrTWF4ICYmIHNjcm9sbGJhci0+Y3VycmVu
dFBvcygpID09IHNjcm9sbGJhci0+bWF4aW11bSgpKSkgewotICAgICAgICBzdGF0ZSA9IFBsYXRm
b3JtU3VwcG9ydDo6U3RhdGVEaXNhYmxlZDsKKyAgICAgICAgc3RhdGUgPSBXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChwYXJ0
ID09IHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSkKLSAgICAgICAgICAgIHN0YXRlID0gUGxhdGZv
cm1TdXBwb3J0OjpTdGF0ZVByZXNzZWQ7CisgICAgICAgICAgICBzdGF0ZSA9IFdlYktpdDo6V2Vi
VGhlbWVFbmdpbmU6OlN0YXRlUHJlc3NlZDsKICAgICAgICAgZWxzZSBpZiAocGFydCA9PSBzY3Jv
bGxiYXItPmhvdmVyZWRQYXJ0KCkpCi0gICAgICAgICAgICBzdGF0ZSA9IFBsYXRmb3JtU3VwcG9y
dDo6U3RhdGVIb3ZlcjsKKyAgICAgICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2lu
ZTo6U3RhdGVIb3ZlcjsKICAgICB9CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFy
dChnYywgcGFpbnRQYXJ0LCBzdGF0ZSwgcmVjdCwgMCk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgUGxh
dGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc3RhdGU7CisgICAgV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZTo6U3RhdGUgc3RhdGU7CiAKICAgICBpZiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgp
ID09IFRodW1iUGFydCkKLSAgICAgICAgc3RhdGUgPSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlUHJl
c3NlZDsKKyAgICAgICAgc3RhdGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZVByZXNz
ZWQ7CiAgICAgZWxzZSBpZiAoc2Nyb2xsYmFyLT5ob3ZlcmVkUGFydCgpID09IFRodW1iUGFydCkK
LSAgICAgICAgc3RhdGUgPSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlSG92ZXI7CisgICAgICAgIHN0
YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3ZlcjsKICAgICBlbHNlCi0gICAg
ICAgIHN0YXRlID0gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZU5vcm1hbDsKKyAgICAgICAgc3RhdGUg
PSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsKICAgICBQbGF0Zm9ybVN1cHBv
cnQ6OnBhaW50VGhlbWVQYXJ0KAogICAgICAgICBnYywKLSAgICAgICAgc2Nyb2xsYmFyLT5vcmll
bnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRT
Y3JvbGxiYXJIb3Jpem9udGFsVGh1bWIgOiBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJW
ZXJ0aWNhbFRodW1iLAorICAgICAgICBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpv
bnRhbFNjcm9sbGJhciA/IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJIb3Jp
em9udGFsVGh1bWIgOiBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyVmVydGlj
YWxUaHVtYiwKICAgICAgICAgc3RhdGUsCiAgICAgICAgIHJlY3QsCiAgICAgICAgIDApOwpAQCAt
MTI4LDIzICsxMzMsMjMgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNob3Vs
ZAogSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OmJ1dHRvblNpemUoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRh
dGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7Ci0gICAgICAgIEludFNpemUgc2l6ZSA9IFBs
YXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3Jv
bGxiYXJVcEFycm93KTsKKyAgICAgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6
Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6
OlBhcnRTY3JvbGxiYXJVcEFycm93KTsKICAgICAgICAgcmV0dXJuIEludFNpemUoc2l6ZS53aWR0
aCgpLCBzY3JvbGxiYXItPmhlaWdodCgpIDwgMiAqIHNpemUuaGVpZ2h0KCkgPyBzY3JvbGxiYXIt
PmhlaWdodCgpIC8gMiA6IHNpemUuaGVpZ2h0KCkpOwogICAgIH0KIAogICAgIC8vIEhvcml6b250
YWxTY3JvbGxiYXIKLSAgICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1l
UGFydFNpemUoUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyTGVmdEFycm93KTsKKyAgICBJ
bnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCkt
PmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckxlZnRBcnJvdyk7
CiAgICAgcmV0dXJuIEludFNpemUoc2Nyb2xsYmFyLT53aWR0aCgpIDwgMiAqIHNpemUud2lkdGgo
KSA/IHNjcm9sbGJhci0+d2lkdGgoKSAvIDIgOiBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkp
OwogfQogCiBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjptaW5pbXVtVGh1bWJMZW5n
dGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFy
LT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7Ci0gICAgICAgIEludFNpemUg
c2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6
OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iKTsKKyAgICAgICAgSW50U2l6ZSBzaXplID0gV2Vi
S2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6
V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iKTsKICAgICAgICAgcmV0
dXJuIHNpemUuaGVpZ2h0KCk7CiAgICAgfQogCi0gICAgSW50U2l6ZSBzaXplID0gUGxhdGZvcm1T
dXBwb3J0OjpnZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhckhv
cml6b250YWxUaHVtYik7CisgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBh
cnRTY3JvbGxiYXJIb3Jpem9udGFsVGh1bWIpOwogICAgIHJldHVybiBzaXplLndpZHRoKCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGlu
dXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUNocm9taXVtTGludXguY3BwCShyZXZpc2lvbiAxMjk2NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNiArMzUsOSBAQAogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiVXNl
ckFnZW50U3R5bGVTaGVldHMuaCIKIAorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorI2lu
Y2x1ZGUgPHB1YmxpYy9saW51eC9XZWJUaGVtZUVuZ2luZS5oPgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVuc2lnbmVkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6bV9hY3RpdmVTZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3IgPQpAQCAtMTYwLDcgKzE2Myw3IEBAIGludCBSZW5kZXJUaGVtZUNo
cm9taXVtTGludXg6OnNsaWRlclRpY2sKIAogdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OmFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1l
bnQpIGNvbnN0CiB7Ci0gICAgSW50U2l6ZSBzaXplID0gUGxhdGZvcm1TdXBwb3J0OjpnZXRUaGVt
ZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydFNsaWRlclRodW1iKTsKKyAgICBJbnRTaXpl
IHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNp
emUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNsaWRlclRodW1iKTsKIAogICAgIGlmIChz
dHlsZS0+YXBwZWFyYW5jZSgpID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQpIHsKICAgICAg
ICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7CkBAIC0yMTUs
NyArMjE4LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldENoZWNrYgogICAg
IGlmICghc3R5bGUtPndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhc3R5bGUtPmhlaWdo
dCgpLmlzQXV0bygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRTaXplIHNpemUgPSBQbGF0
Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFydFNpemUoUGxhdGZvcm1TdXBwb3J0OjpQYXJ0Q2hlY2ti
b3gpOworICAgIEludFNpemUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhl
bWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0Q2hlY2tib3gp
OwogICAgIHNldFNpemVJZkF1dG8oc3R5bGUsIHNpemUpOwogfQogCkBAIC0yMzQsNyArMjM3LDcg
QEAgdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldFJhZGlvUwogICAgIGlmICghc3R5
bGUtPndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhc3R5bGUtPmhlaWdodCgpLmlzQXV0
bygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBv
cnQ6OmdldFRoZW1lUGFydFNpemUoUGxhdGZvcm1TdXBwb3J0OjpQYXJ0UmFkaW8pOworICAgIElu
dFNpemUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+
Z2V0U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0UmFkaW8pOwogICAgIHNldFNpemVJ
ZkF1dG8oc3R5bGUsIHNpemUpOwogfQogCkBAIC0zMjQsNyArMzI3LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZUNocm9taXVtTGludXg6OnBhaW50U2xpZAogCiB2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1M
aW51eDo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0
eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7Ci0gICAgSW50U2l6ZSBzaXplID0gUGxhdGZv
cm1TdXBwb3J0OjpnZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydElubmVyU3Bp
bkJ1dHRvbik7CisgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgp
LT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRJbm5l
clNwaW5CdXR0b24pOwogCiAgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChzaXplLndpZHRoKCks
IEZpeGVkKSk7CiAgICAgc3R5bGUtPnNldE1pbldpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZp
eGVkKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5NjgyKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNSBAQAorMjAxMi0wOS0yNiAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBNb3ZlIFVOSVgtc3BlY2lmaWMgdGhlbWUgZnVuY3Rp
b25zIG91dCBvZiBQbGF0Zm9ybVN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk2NTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1
Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3Jp
cHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA5LTI2ICBTYWRydWwgSGFiaWIgQ2hvd2Ro
dXJ5ICA8c2FkcnVsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIERvIG5vdCBk
aXNwYXRjaCB0b3VjaC1ldmVudHMgdG8gcGx1Z2lucyB1bmxlc3MgdGhleSBleHBsaWNpdGx5IHJl
cXVlc3QgZm9yIHRvdWNoLWV2ZW50cy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1BsYXRmb3JtU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkocmV2aXNpb24gMTI5Njc1KQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDM2LDExICs0MzYsNiBAQCBzdGF0aWMgdm9pZCBHZXRXZWJUaGVtZUV4dHJhUGFyYW1zKFBsYXRm
CiAgICAgfQogfQogCi1JbnRTaXplIFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShU
aGVtZVBhcnQgcGFydCkKLXsKLSAgICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQo
KS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJUaGVtZVBhcnQocGFydCkpOwotfQotCiB2b2lk
IFBsYXRmb3JtU3VwcG9ydDo6cGFpbnRUaGVtZVBhcnQoCiAgICAgR3JhcGhpY3NDb250ZXh0KiBn
YywgVGhlbWVQYXJ0IHBhcnQsIFRoZW1lUGFpbnRTdGF0ZSBzdGF0ZSwgY29uc3QgSW50UmVjdCYg
cmVjdCwgY29uc3QgVGhlbWVQYWludEV4dHJhUGFyYW1zKiBleHRyYVBhcmFtcykKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165858</attachid>
            <date>2012-09-26 12:56:13 -0700</date>
            <delta_ts>2012-09-26 14:48:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96516-20120926155525.patch</filename>
            <type>text/plain</type>
            <size>35302</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA5LTI2ICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUg
VU5JWC1zcGVjaWZpYyB0aGVtZSBmdW5jdGlvbnMgb3V0IG9mIFBsYXRmb3JtU3VwcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1MTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsIFdlYlRoZW1l
RW5naW5lIGZ1bmN0aW9ucyBhbmQgdXNlIFdlYlRoZW1lRW5naW5lIGVudW1zCisgICAgICAgIGRp
cmVjdGx5IGZyb20gdGhlIG5ldyBQbGF0Zm9ybS8gZGlyZWN0bHk7IHJlbW92ZSBhbGwgaW50ZXJt
ZWRpYXRlCisgICAgICAgIGZ1bmN0aW9ucyBhbmQgZW51bXMgYW5kIGNvbnZlcnNpb24gZnVuY3Rp
b25zIGZyb20gUGxhdGZvcm1TdXBwb3J0LgorICAgICAgICBQYXJ0IG9mIGEgcmVmYWN0b3Jpbmcg
c2VyaWVzOyBzZWUgdHJhY2tpbmcgYnVnIDgyOTQ4LgorCisgICAgICAgICogV2ViQ29yZS5neXAv
V2ViQ29yZS5neXA6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0
Lmg6CisgICAgICAgIChQbGF0Zm9ybVN1cHBvcnQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNjcm9sbGJhclRoaWNrbmVzcyk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVjZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50QnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFp
bnRUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6
OmJ1dHRvblNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxp
bnV4OjptaW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZUNocm9taXVtTGludXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0V2ViVGhlbWVTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eDo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRDaGVja2JveCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldENoZWNrYm94U2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50UmFkaW8pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRSYWRpb1NpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VGV4dEZpZWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRNZW51TGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50U2xpZGVy
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWlu
dFNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1MaW51
eDo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludElubmVyU3BpbkJ1dHRvbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50UHJvZ3Jlc3NCYXIpOgorCiAyMDEy
LTA5LTI2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAK
ICAgICAgICAgW0VGTF0gVm9sdW1lIGJ1dHRvbiBzaG91bGQgbm90IGJlIHNob3duIGZvciB2aWRl
b3Mgd2l0aG91dCBhdWRpbwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29y
ZS5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5n
eXAJKHJldmlzaW9uIDEyOTY3NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNv
cmUuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUwLDYgKzE5NTAsOSBAQAogICAgICAgJ2RlcGVu
ZGVuY2llcyc6IFsKICAgICAgICAgJ3dlYmNvcmVfcHJlcmVxdWlzaXRlcycsCiAgICAgICBdLAor
ICAgICAgJ2RlZmluZXMnOiBbCisgICAgICAgICdXRUJLSVRfSU1QTEVNRU5UQVRJT049MScsCisg
ICAgICBdLAogICAgICAgJ3NvdXJjZXMnOiBbCiAgICAgICAgICc8QCh3ZWJjb3JlX3ByaXZhdGVo
ZWFkZXJfZmlsZXMpJywKICAgICAgICAgJzxAKHdlYmNvcmVfZmlsZXMpJywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCShy
ZXZpc2lvbiAxMjk2NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEwMyArMTUxLDYgQEAgcHVibGlj
OgogICAgIH07CiAKICAgICBzdGF0aWMgdm9pZCBwYWludFNjcm9sbGJhclRodW1iKEdyYXBoaWNz
Q29udGV4dCosIFRoZW1lUGFpbnRTdGF0ZSwgVGhlbWVQYWludFNpemUsIGNvbnN0IEludFJlY3Qm
LCBjb25zdCBUaGVtZVBhaW50U2Nyb2xsYmFySW5mbyYpOwotI2VsaWYgT1MoVU5JWCkKLSAgICAv
LyBUaGUgVUkgcGFydCB3aGljaCBpcyBiZWluZyBhY2Nlc3NlZC4KLSAgICBlbnVtIFRoZW1lUGFy
dCB7Ci0gICAgICAgIC8vIFNjcm9sbGJhclRoZW1lIHBhcnRzCi0gICAgICAgIFBhcnRTY3JvbGxi
YXJEb3duQXJyb3csCi0gICAgICAgIFBhcnRTY3JvbGxiYXJMZWZ0QXJyb3csCi0gICAgICAgIFBh
cnRTY3JvbGxiYXJSaWdodEFycm93LAotICAgICAgICBQYXJ0U2Nyb2xsYmFyVXBBcnJvdywKLSAg
ICAgICAgUGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYiwKLSAgICAgICAgUGFydFNjcm9sbGJh
clZlcnRpY2FsVGh1bWIsCi0gICAgICAgIFBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVHJhY2ssCi0g
ICAgICAgIFBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrLAotCi0gICAgICAgIC8vIFJlbmRlclRo
ZW1lIHBhcnRzCi0gICAgICAgIFBhcnRDaGVja2JveCwKLSAgICAgICAgUGFydFJhZGlvLAotICAg
ICAgICBQYXJ0QnV0dG9uLAotICAgICAgICBQYXJ0VGV4dEZpZWxkLAotICAgICAgICBQYXJ0TWVu
dUxpc3QsCi0gICAgICAgIFBhcnRTbGlkZXJUcmFjaywKLSAgICAgICAgUGFydFNsaWRlclRodW1i
LAotICAgICAgICBQYXJ0SW5uZXJTcGluQnV0dG9uLAotICAgICAgICBQYXJ0UHJvZ3Jlc3NCYXIK
LSAgICB9OwotCi0gICAgLy8gVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGFzc29jaWF0ZWQgUGFy
dC4KLSAgICBlbnVtIFRoZW1lUGFpbnRTdGF0ZSB7Ci0gICAgICAgIFN0YXRlRGlzYWJsZWQsCi0g
ICAgICAgIFN0YXRlSG92ZXIsCi0gICAgICAgIFN0YXRlTm9ybWFsLAotICAgICAgICBTdGF0ZVBy
ZXNzZWQKLSAgICB9OwotCi0gICAgc3RydWN0IFNjcm9sbGJhclRyYWNrRXh0cmFQYXJhbXMgewot
ICAgICAgICAvLyBUaGUgYm91bmRzIG9mIHRoZSBlbnRpcmUgdHJhY2ssIGFzIG9wcG9zZWQgdG8g
dGhlIHBhcnQgYmVpbmcgcGFpbnRlZC4KLSAgICAgICAgaW50IHRyYWNrWDsKLSAgICAgICAgaW50
IHRyYWNrWTsKLSAgICAgICAgaW50IHRyYWNrV2lkdGg7Ci0gICAgICAgIGludCB0cmFja0hlaWdo
dDsKLSAgICB9OwotCi0gICAgc3RydWN0IEJ1dHRvbkV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9v
bCBjaGVja2VkOwotICAgICAgICBib29sIGluZGV0ZXJtaW5hdGU7IC8vIFdoZXRoZXIgdGhlIGJ1
dHRvbiBzdGF0ZSBpcyBpbmRldGVybWluYXRlLgotICAgICAgICBib29sIGlzRGVmYXVsdDsgLy8g
V2hldGhlciB0aGUgYnV0dG9uIGlzIGRlZmF1bHQgYnV0dG9uLgotICAgICAgICBib29sIGhhc0Jv
cmRlcjsKLSAgICAgICAgdW5zaWduZWQgYmFja2dyb3VuZENvbG9yOwotICAgIH07Ci0KLSAgICBz
dHJ1Y3QgVGV4dEZpZWxkRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIGlzVGV4dEFyZWE7Ci0g
ICAgICAgIGJvb2wgaXNMaXN0Ym94OwotICAgICAgICB1bnNpZ25lZCBiYWNrZ3JvdW5kQ29sb3I7
Ci0gICAgfTsKLQotICAgIHN0cnVjdCBNZW51TGlzdEV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9v
bCBoYXNCb3JkZXI7Ci0gICAgICAgIGJvb2wgaGFzQm9yZGVyUmFkaXVzOwotICAgICAgICBpbnQg
YXJyb3dYOwotICAgICAgICBpbnQgYXJyb3dZOwotICAgICAgICB1bnNpZ25lZCBiYWNrZ3JvdW5k
Q29sb3I7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBTbGlkZXJFeHRyYVBhcmFtcyB7Ci0gICAgICAg
IGJvb2wgdmVydGljYWw7Ci0gICAgICAgIGJvb2wgaW5EcmFnOwotICAgIH07Ci0KLSAgICBzdHJ1
Y3QgSW5uZXJTcGluQnV0dG9uRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIHNwaW5VcDsKLSAg
ICAgICAgYm9vbCByZWFkT25seTsKLSAgICB9OwotCi0gICAgc3RydWN0IFByb2dyZXNzQmFyRXh0
cmFQYXJhbXMgewotICAgICAgICBib29sIGRldGVybWluYXRlOwotICAgICAgICBpbnQgdmFsdWVS
ZWN0WDsKLSAgICAgICAgaW50IHZhbHVlUmVjdFk7Ci0gICAgICAgIGludCB2YWx1ZVJlY3RXaWR0
aDsKLSAgICAgICAgaW50IHZhbHVlUmVjdEhlaWdodDsKLSAgICB9OwotCi0gICAgdW5pb24gVGhl
bWVQYWludEV4dHJhUGFyYW1zIHsKLSAgICAgICAgU2Nyb2xsYmFyVHJhY2tFeHRyYVBhcmFtcyBz
Y3JvbGxiYXJUcmFjazsKLSAgICAgICAgQnV0dG9uRXh0cmFQYXJhbXMgYnV0dG9uOwotICAgICAg
ICBUZXh0RmllbGRFeHRyYVBhcmFtcyB0ZXh0RmllbGQ7Ci0gICAgICAgIE1lbnVMaXN0RXh0cmFQ
YXJhbXMgbWVudUxpc3Q7Ci0gICAgICAgIFNsaWRlckV4dHJhUGFyYW1zIHNsaWRlcjsKLSAgICAg
ICAgSW5uZXJTcGluQnV0dG9uRXh0cmFQYXJhbXMgaW5uZXJTcGluOwotICAgICAgICBQcm9ncmVz
c0JhckV4dHJhUGFyYW1zIHByb2dyZXNzQmFyOwotICAgIH07Ci0KLSAgICAvLyBHZXRzIHRoZSBz
aXplIG9mIHRoZSBnaXZlbiB0aGVtZSBwYXJ0LiBGb3IgdmFyaWFibGUgc2l6ZWQgaXRlbXMKLSAg
ICAvLyBsaWtlIHZlcnRpY2FsIHNjcm9sbGJhciB0aHVtYnMsIHRoZSB3aWR0aCB3aWxsIGJlIHRo
ZSByZXF1aXJlZCB3aWR0aCBvZgotICAgIC8vIHRoZSB0cmFjayB3aGlsZSB0aGUgaGVpZ2h0IHdp
bGwgYmUgdGhlIG1pbmltdW0gaGVpZ2h0LgotICAgIHN0YXRpYyBJbnRTaXplIGdldFRoZW1lUGFy
dFNpemUoVGhlbWVQYXJ0KTsKLSAgICAvLyBQYWludCB0aGUgZ2l2ZW4gdGhlIGdpdmVuIHRoZW1l
IHBhcnQuCi0gICAgc3RhdGljIHZvaWQgcGFpbnRUaGVtZVBhcnQoR3JhcGhpY3NDb250ZXh0Kiwg
VGhlbWVQYXJ0LCBUaGVtZVBhaW50U3RhdGUsIGNvbnN0IEludFJlY3QmLCBjb25zdCBUaGVtZVBh
aW50RXh0cmFQYXJhbXMqKTsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtTGludXguY3BwCShyZXZpc2lvbiAxMjk2NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSwxMCArMzEsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTGludXguaCIKIAotI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1v
dXNlRXZlbnQuaCIKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKIAorI2luY2x1ZGUgPHB1YmxpYy9Q
bGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+CisjaW5jbHVkZSA8cHVibGlj
L2xpbnV4L1dlYlRoZW1lRW5naW5lLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2Nyb2xs
YmFyVGhlbWUqIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpCkBAIC00Niw3NyArNTAsODQg
QEAgU2Nyb2xsYmFyVGhlbWUqIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaAogaW50IFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eDo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xT
aXplIGNvbnRyb2xTaXplKQogewogICAgIC8vIEhvcml6IGFuZCBWZXJ0IHNjcm9sbGJhcnMgYXJl
IHRoZSBzYW1lIHRoaWNrbmVzcy4KLSAgICBJbnRTaXplIHNjcm9sbGJhclNpemUgPSBQbGF0Zm9y
bVN1cHBvcnQ6OmdldFRoZW1lUGFydFNpemUoUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFy
VmVydGljYWxUcmFjayk7CisgICAgSW50U2l6ZSBzY3JvbGxiYXJTaXplID0gV2ViS2l0OjpQbGF0
Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVF
bmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrKTsKICAgICByZXR1cm4gc2Nyb2xsYmFy
U2l6ZS53aWR0aCgpOwogfQogCiB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFp
bnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCiB7
Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc3RhdGUgPSBzY3JvbGxiYXIt
PmhvdmVyZWRQYXJ0KCkgPT0gcGFydFR5cGUgPyBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlSG92ZXIg
OiBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlTm9ybWFsOworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU6OlN0YXRlIHN0YXRlID0gc2Nyb2xsYmFyLT5ob3ZlcmVkUGFydCgpID09IHBhcnRUeXBlID8g
V2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3ZlciA6IFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU6OlN0YXRlTm9ybWFsOwogICAgIEludFJlY3QgYWxpZ25SZWN0ID0gdHJhY2tSZWN0KHNjcm9s
bGJhciwgZmFsc2UpOwotICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludEV4dHJhUGFyYW1z
IGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zIGV4
dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBnYy0+cGxhdGZvcm1D
b250ZXh0KCktPmNhbnZhcygpOwogICAgIGV4dHJhUGFyYW1zLnNjcm9sbGJhclRyYWNrLnRyYWNr
WCA9IGFsaWduUmVjdC54KCk7CiAgICAgZXh0cmFQYXJhbXMuc2Nyb2xsYmFyVHJhY2sudHJhY2tZ
ID0gYWxpZ25SZWN0LnkoKTsKICAgICBleHRyYVBhcmFtcy5zY3JvbGxiYXJUcmFjay50cmFja1dp
ZHRoID0gYWxpZ25SZWN0LndpZHRoKCk7CiAgICAgZXh0cmFQYXJhbXMuc2Nyb2xsYmFyVHJhY2su
dHJhY2tIZWlnaHQgPSBhbGlnblJlY3QuaGVpZ2h0KCk7Ci0gICAgUGxhdGZvcm1TdXBwb3J0Ojpw
YWludFRoZW1lUGFydCgKLSAgICAgICAgZ2MsCi0gICAgICAgIHNjcm9sbGJhci0+b3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xs
YmFySG9yaXpvbnRhbFRyYWNrIDogUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyVmVydGlj
YWxUcmFjaywKKyAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCkt
PnBhaW50KAorICAgICAgICBjYW52YXMsCisgICAgICAgIHNjcm9sbGJhci0+b3JpZW50YXRpb24o
KSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNj
cm9sbGJhckhvcml6b250YWxUcmFjayA6IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3Jv
bGxiYXJWZXJ0aWNhbFRyYWNrLAogICAgICAgICBzdGF0ZSwKLSAgICAgICAgcmVjdCwKKyAgICAg
ICAgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLAogICAgICAgICAmZXh0cmFQYXJhbXMpOwogfQogCiB2
b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250
ZXh0KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
cmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewotICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQ
YXJ0IHBhaW50UGFydDsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzdGF0
ZSA9IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVOb3JtYWw7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6UGFydCBwYWludFBhcnQ7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUg
c3RhdGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsKKyAgICBXZWJLaXQ6
OldlYkNhbnZhcyogY2FudmFzID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKICAg
ICBib29sIGNoZWNrTWluID0gZmFsc2U7CiAgICAgYm9vbCBjaGVja01heCA9IGZhbHNlOwogICAg
IGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewog
ICAgICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0KSB7Ci0gICAgICAgICAgICBw
YWludFBhcnQgPSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJMZWZ0QXJyb3c7CisgICAg
ICAgICAgICBwYWludFBhcnQgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFy
TGVmdEFycm93OwogICAgICAgICAgICAgY2hlY2tNaW4gPSB0cnVlOwogICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgcGFpbnRQYXJ0ID0gUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFy
UmlnaHRBcnJvdzsKKyAgICAgICAgICAgIHBhaW50UGFydCA9IFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU6OlBhcnRTY3JvbGxiYXJSaWdodEFycm93OwogICAgICAgICAgICAgY2hlY2tNYXggPSB0cnVl
OwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRv
blN0YXJ0UGFydCkgewotICAgICAgICAgICAgcGFpbnRQYXJ0ID0gUGxhdGZvcm1TdXBwb3J0OjpQ
YXJ0U2Nyb2xsYmFyVXBBcnJvdzsKKyAgICAgICAgICAgIHBhaW50UGFydCA9IFdlYktpdDo6V2Vi
VGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJVcEFycm93OwogICAgICAgICAgICAgY2hlY2tNaW4g
PSB0cnVlOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFpbnRQYXJ0ID0gUGxhdGZv
cm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyRG93bkFycm93OworICAgICAgICAgICAgcGFpbnRQYXJ0
ID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckRvd25BcnJvdzsKICAgICAg
ICAgICAgIGNoZWNrTWF4ID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoKGNoZWNr
TWluICYmIChzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSA8PSAwKSkKICAgICAgICAgfHwgKGNoZWNr
TWF4ICYmIHNjcm9sbGJhci0+Y3VycmVudFBvcygpID09IHNjcm9sbGJhci0+bWF4aW11bSgpKSkg
ewotICAgICAgICBzdGF0ZSA9IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVEaXNhYmxlZDsKKyAgICAg
ICAgc3RhdGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIGlmIChwYXJ0ID09IHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSkKLSAg
ICAgICAgICAgIHN0YXRlID0gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZVByZXNzZWQ7CisgICAgICAg
ICAgICBzdGF0ZSA9IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlUHJlc3NlZDsKICAgICAg
ICAgZWxzZSBpZiAocGFydCA9PSBzY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkpCi0gICAgICAgICAg
ICBzdGF0ZSA9IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVIb3ZlcjsKKyAgICAgICAgICAgIHN0YXRl
ID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3ZlcjsKICAgICB9Ci0gICAgUGxhdGZv
cm1TdXBwb3J0OjpwYWludFRoZW1lUGFydChnYywgcGFpbnRQYXJ0LCBzdGF0ZSwgcmVjdCwgMCk7
CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludCgK
KyAgICAgICAgY2FudmFzLAorICAgICAgICBwYWludFBhcnQsCisgICAgICAgIHN0YXRlLAorICAg
ICAgICBXZWJLaXQ6OldlYlJlY3QocmVjdCksCisgICAgICAgIDApOwogfQogCiB2b2lkIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdjLCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewot
ICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHN0YXRlOwotCisgICAgV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGU7CisgICAgV2ViS2l0OjpXZWJDYW52YXMqIGNh
bnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CiAgICAgaWYgKHNjcm9sbGJh
ci0+cHJlc3NlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCi0gICAgICAgIHN0YXRlID0gUGxhdGZvcm1T
dXBwb3J0OjpTdGF0ZVByZXNzZWQ7CisgICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6U3RhdGVQcmVzc2VkOwogICAgIGVsc2UgaWYgKHNjcm9sbGJhci0+aG92ZXJlZFBhcnQo
KSA9PSBUaHVtYlBhcnQpCi0gICAgICAgIHN0YXRlID0gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZUhv
dmVyOworICAgICAgICBzdGF0ZSA9IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlSG92ZXI7
CiAgICAgZWxzZQotICAgICAgICBzdGF0ZSA9IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVOb3JtYWw7
Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydCgKLSAgICAgICAgZ2MsCi0gICAg
ICAgIHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gUGxh
dGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRodW1iIDogUGxhdGZvcm1TdXBw
b3J0OjpQYXJ0U2Nyb2xsYmFyVmVydGljYWxUaHVtYiwKKyAgICAgICAgc3RhdGUgPSBXZWJLaXQ6
OldlYlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsKKyAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJy
ZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KAorICAgICAgICBjYW52YXMsCisgICAgICAgIHNj
cm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYiA6IFdlYktpdDo6V2Vi
VGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iLAogICAgICAgICBzdGF0ZSwK
LSAgICAgICAgcmVjdCwKKyAgICAgICAgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLAogICAgICAgICAw
KTsKIH0KIApAQCAtMTI4LDIzICsxMzksMjMgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
TGludXg6OnNob3VsZAogSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OmJ1dHRv
blNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xs
YmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7Ci0gICAgICAgIEludFNp
emUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBv
cnQ6OlBhcnRTY3JvbGxiYXJVcEFycm93KTsKKyAgICAgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0
OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2Vi
VGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJVcEFycm93KTsKICAgICAgICAgcmV0dXJuIEludFNp
emUoc2l6ZS53aWR0aCgpLCBzY3JvbGxiYXItPmhlaWdodCgpIDwgMiAqIHNpemUuaGVpZ2h0KCkg
PyBzY3JvbGxiYXItPmhlaWdodCgpIC8gMiA6IHNpemUuaGVpZ2h0KCkpOwogICAgIH0KIAogICAg
IC8vIEhvcml6b250YWxTY3JvbGxiYXIKLSAgICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBv
cnQ6OmdldFRoZW1lUGFydFNpemUoUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyTGVmdEFy
cm93KTsKKyAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRo
ZW1lRW5naW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJh
ckxlZnRBcnJvdyk7CiAgICAgcmV0dXJuIEludFNpemUoc2Nyb2xsYmFyLT53aWR0aCgpIDwgMiAq
IHNpemUud2lkdGgoKSA/IHNjcm9sbGJhci0+d2lkdGgoKSAvIDIgOiBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpOwogfQogCiBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjptaW5p
bXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBp
ZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7Ci0gICAg
ICAgIEludFNpemUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0
Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iKTsKKyAgICAgICAgSW50U2l6
ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRT
aXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iKTsK
ICAgICAgICAgcmV0dXJuIHNpemUuaGVpZ2h0KCk7CiAgICAgfQogCi0gICAgSW50U2l6ZSBzaXpl
ID0gUGxhdGZvcm1TdXBwb3J0OjpnZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFy
dFNjcm9sbGJhckhvcml6b250YWxUaHVtYik7CisgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQ
bGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhl
bWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVGh1bWIpOwogICAgIHJldHVybiBzaXpl
LndpZHRoKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUNocm9taXVtTGludXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwCShyZXZpc2lvbiAxMjk2NzUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDE3IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5o
IgogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCi0jaW5jbHVkZSAi
UGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2lu
Y2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclByb2dyZXNzLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU2xpZGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNs
dWRlICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgogCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3Jt
Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvbGludXgv
V2ViVGhlbWVFbmdpbmUuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1bnNpZ25lZCBSZW5k
ZXJUaGVtZUNocm9taXVtTGludXg6Om1fYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yID0K
QEAgLTUwLDE5ICs1NCwxOCBAQCBkb3VibGUgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjptX2Nh
cmV0CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0QnV0dG9uQmFja2dyb3VuZENvbG9y
ID0gMHhmZmRkZGRkZDsKIAotc3RhdGljIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRl
IGdldFdlYlRoZW1lU3RhdGUoY29uc3QgUmVuZGVyVGhlbWUqIHRoZW1lLCBjb25zdCBSZW5kZXJP
YmplY3QqIG8pCi17Ci0gICAgaWYgKCF0aGVtZS0+aXNFbmFibGVkKG8pKQotICAgICAgICByZXR1
cm4gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZURpc2FibGVkOwotICAgIGlmICh0aGVtZS0+aXNQcmVz
c2VkKG8pKQotICAgICAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZVByZXNzZWQ7Citz
dGF0aWMgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgZ2V0V2ViVGhlbWVTdGF0ZShjb25z
dCBSZW5kZXJUaGVtZSogdGhlbWUsIGNvbnN0IFJlbmRlck9iamVjdCogbykKKyAgICB7CisgICAg
ICAgIGlmICghdGhlbWUtPmlzRW5hYmxlZChvKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6
OldlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkOworICAgICAgICBpZiAodGhlbWUtPmlzUHJl
c3NlZChvKSkKKyAgICAgICAgICAgIHJldHVybiBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0
ZVByZXNzZWQ7CiAgICAgaWYgKHRoZW1lLT5pc0hvdmVyZWQobykpCi0gICAgICAgIHJldHVybiBQ
bGF0Zm9ybVN1cHBvcnQ6OlN0YXRlSG92ZXI7CisgICAgICAgIHJldHVybiBXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpTdGF0ZUhvdmVyOwogCi0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6U3Rh
dGVOb3JtYWw7CisgICAgcmV0dXJuIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlTm9ybWFs
OwogfQogCi0KIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51
eDo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eCgpKTsKQEAgLTE2MCw3ICsxNjMsNyBAQCBpbnQgUmVuZGVyVGhlbWVDaHJvbWl1bUxp
bnV4OjpzbGlkZXJUaWNrCiAKIHZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphZGp1c3RT
bGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25z
dAogewotICAgIEludFNpemUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6
ZShQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTbGlkZXJUaHVtYik7CisgICAgSW50U2l6ZSBzaXplID0g
V2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktp
dDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTbGlkZXJUaHVtYik7CiAKICAgICBpZiAoc3R5bGUtPmFw
cGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0KSB7CiAgICAgICAgIHN0eWxl
LT5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpLCBGaXhlZCkpOwpAQCAtMjAxLDExICsyMDQs
MTcgQEAgdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldFNlbGVjdAogCiBib29sIFJl
bmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRDaGVja2JveChSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBQbGF0Zm9ybVN1
cHBvcnQ6OlRoZW1lUGFpbnRFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAgICBXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAgICBXZWJLaXQ6OldlYkNh
bnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CiAg
ICAgZXh0cmFQYXJhbXMuYnV0dG9uLmNoZWNrZWQgPSBpc0NoZWNrZWQobyk7CiAgICAgZXh0cmFQ
YXJhbXMuYnV0dG9uLmluZGV0ZXJtaW5hdGUgPSBpc0luZGV0ZXJtaW5hdGUobyk7CiAKLSAgICBQ
bGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KGkuY29udGV4dCwgUGxhdGZvcm1TdXBwb3J0
OjpQYXJ0Q2hlY2tib3gsIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIHJlY3QsICZleHRyYVBh
cmFtcyk7CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5w
YWludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhbnZhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRDaGVja2JveCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFdlYlRoZW1l
U3RhdGUodGhpcywgbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXQ6OldlYlJlY3QocmVjdCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXh0cmFQYXJhbXMpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApAQCAtMjE1LDE2ICsyMjQsMjIgQEAgdm9pZCBSZW5kZXJUaGVtZUNo
cm9taXVtTGludXg6OnNldENoZWNrYgogICAgIGlmICghc3R5bGUtPndpZHRoKCkuaXNJbnRyaW5z
aWNPckF1dG8oKSAmJiAhc3R5bGUtPmhlaWdodCgpLmlzQXV0bygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFydFNpemUo
UGxhdGZvcm1TdXBwb3J0OjpQYXJ0Q2hlY2tib3gpOworICAgIEludFNpemUgc2l6ZSA9IFdlYktp
dDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpQYXJ0Q2hlY2tib3gpOwogICAgIHNldFNpemVJZkF1dG8oc3R5bGUsIHNp
emUpOwogfQogCiBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRSYWRpbyhSZW5k
ZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsK
LSAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsK
KyAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAg
ICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y2FudmFzKCk7CiAgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmNoZWNrZWQgPSBpc0NoZWNrZWQo
byk7CiAKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KGkuY29udGV4dCwgUGxh
dGZvcm1TdXBwb3J0OjpQYXJ0UmFkaW8sIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIHJlY3Qs
ICZleHRyYVBhcmFtcyk7CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVu
Z2luZSgpLT5wYWludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhbnZhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRSYWRpbywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFdl
YlRoZW1lU3RhdGUodGhpcywgbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXQ6OldlYlJlY3QocmVjdCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXh0cmFQYXJhbXMpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMjM0LDIwICsyNDksMjYgQEAgdm9pZCBSZW5kZXJU
aGVtZUNocm9taXVtTGludXg6OnNldFJhZGlvUwogICAgIGlmICghc3R5bGUtPndpZHRoKCkuaXNJ
bnRyaW5zaWNPckF1dG8oKSAmJiAhc3R5bGUtPmhlaWdodCgpLmlzQXV0bygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFy
dFNpemUoUGxhdGZvcm1TdXBwb3J0OjpQYXJ0UmFkaW8pOworICAgIEludFNpemUgc2l6ZSA9IFdl
YktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6
OldlYlRoZW1lRW5naW5lOjpQYXJ0UmFkaW8pOwogICAgIHNldFNpemVJZkF1dG8oc3R5bGUsIHNp
emUpOwogfQogCiBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24oUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7
Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7
CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7Cisg
ICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCktPmNhbnZhcygpOwogICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5pc0RlZmF1bHQgPSBpc0RlZmF1
bHQobyk7CiAgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmhhc0JvcmRlciA9IHRydWU7CiAgICAgZXh0
cmFQYXJhbXMuYnV0dG9uLmJhY2tncm91bmRDb2xvciA9IGRlZmF1bHRCdXR0b25CYWNrZ3JvdW5k
Q29sb3I7CiAgICAgaWYgKG8tPmhhc0JhY2tncm91bmQoKSkKICAgICAgICAgZXh0cmFQYXJhbXMu
YnV0dG9uLmJhY2tncm91bmRDb2xvciA9IG8tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikucmdiKCk7CiAKLSAgICBQbGF0Zm9ybVN1cHBv
cnQ6OnBhaW50VGhlbWVQYXJ0KGkuY29udGV4dCwgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0QnV0dG9u
LCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCByZWN0LCAmZXh0cmFQYXJhbXMpOworICAgIFdl
YktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0QnV0dG9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdDo6V2ViUmVjdChyZWN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZleHRyYVBhcmFtcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CkBAIC0yNjAsMTcgKzI4MSwyNCBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFp
bnRUZXh0CiAKICAgICBDb250cm9sUGFydCBwYXJ0ID0gby0+c3R5bGUoKS0+YXBwZWFyYW5jZSgp
OwogCi0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQYXJh
bXM7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7
CiAgICAgZXh0cmFQYXJhbXMudGV4dEZpZWxkLmlzVGV4dEFyZWEgPSBwYXJ0ID09IFRleHRBcmVh
UGFydDsKICAgICBleHRyYVBhcmFtcy50ZXh0RmllbGQuaXNMaXN0Ym94ID0gcGFydCA9PSBMaXN0
Ym94UGFydDsKIAorICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKKwogICAgIC8vIEZhbGxiYWNrIHRvIHdoaXRlIGlm
IHRoZSBzcGVjaWZpZWQgY29sb3Igb2JqZWN0IGlzIGludmFsaWQuCiAgICAgQ29sb3IgYmFja2dy
b3VuZENvbG9yKENvbG9yOjp3aGl0ZSk7CiAgICAgaWYgKG8tPnN0eWxlKCktPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikuaXNWYWxpZCgpKQogICAgICAg
ICBiYWNrZ3JvdW5kQ29sb3IgPSBvLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogICAgIGV4dHJhUGFyYW1zLnRleHRGaWVsZC5iYWNr
Z3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3IucmdiKCk7CiAKLSAgICBQbGF0Zm9ybVN1cHBv
cnQ6OnBhaW50VGhlbWVQYXJ0KGkuY29udGV4dCwgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0VGV4dEZp
ZWxkLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCByZWN0LCAmZXh0cmFQYXJhbXMpOworICAg
IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0VGV4dEZpZWxkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlz
LCBvKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdDo6V2ViUmVjdChyZWN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZleHRyYVBhcmFtcyk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCkBAIC0yODIsNyArMzEwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OnBhaW50TWVudQogICAgIGNvbnN0IGludCByaWdodCA9IHJlY3QueCgpICsgcmVjdC53aWR0aCgp
OwogICAgIGNvbnN0IGludCBtaWRkbGUgPSByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkgLyAyOwog
Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7
CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CiAg
ICAgZXh0cmFQYXJhbXMubWVudUxpc3QuYXJyb3dYID0gKG8tPnN0eWxlKCktPmRpcmVjdGlvbigp
ID09IFJUTCkgPyByZWN0LngoKSArIDcgOiByaWdodCAtIDEzOwogICAgIGV4dHJhUGFyYW1zLm1l
bnVMaXN0LmFycm93WSA9IG1pZGRsZTsKICAgICBjb25zdCBSZW5kZXJCb3gqIGJveCA9IHRvUmVu
ZGVyQm94KG8pOwpAQCAtMjk0LDE2ICszMjIsMjkgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVt
TGludXg6OnBhaW50TWVudQogICAgIGlmIChvLT5oYXNCYWNrZ3JvdW5kKCkpCiAgICAgICAgIGV4
dHJhUGFyYW1zLm1lbnVMaXN0LmJhY2tncm91bmRDb2xvciA9IG8tPnN0eWxlKCktPnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikucmdiKCk7CiAKLSAgICBQ
bGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KGkuY29udGV4dCwgUGxhdGZvcm1TdXBwb3J0
OjpQYXJ0TWVudUxpc3QsIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIHJlY3QsICZleHRyYVBh
cmFtcyk7CisgICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCktPmNhbnZhcygpOworCisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgp
LT50aGVtZUVuZ2luZSgpLT5wYWludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRN
ZW51TGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXQ6OldlYlJlY3QocmVjdCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXh0
cmFQYXJhbXMpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUNocm9t
aXVtTGludXg6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludElu
Zm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVt
ZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2lu
ZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZh
cyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwogICAgIGV4dHJhUGFy
YW1zLnNsaWRlci52ZXJ0aWNhbCA9IG8tPnN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJW
ZXJ0aWNhbFBhcnQ7CiAKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KGkuY29u
dGV4dCwgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2xpZGVyVHJhY2ssIGdldFdlYlRoZW1lU3RhdGUo
dGhpcywgbyksIHJlY3QsICZleHRyYVBhcmFtcyk7CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6
OlBhcnRTbGlkZXJUcmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXQ6OldlYlJlY3Qo
cmVjdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmZXh0cmFQYXJhbXMpOwogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAg
cGFpbnRTbGlkZXJUaWNrcyhvLCBpLCByZWN0KTsKQEAgLTMxNCwxNyArMzU1LDIyIEBAIGJvb2wg
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFNsaWQKIAogYm9vbCBSZW5kZXJUaGVtZUNo
cm9taXVtTGludXg6OnBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWlu
dEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpU
aGVtZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpXZWJDYW52YXMqIGNh
bnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwogICAgIGV4dHJh
UGFyYW1zLnNsaWRlci52ZXJ0aWNhbCA9IG8tPnN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBTbGlk
ZXJUaHVtYlZlcnRpY2FsUGFydDsKICAgICBleHRyYVBhcmFtcy5zbGlkZXIuaW5EcmFnID0gaXNQ
cmVzc2VkKG8pOwogCi0gICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydChpLmNvbnRl
eHQsIFBsYXRmb3JtU3VwcG9ydDo6UGFydFNsaWRlclRodW1iLCBnZXRXZWJUaGVtZVN0YXRlKHRo
aXMsIG8pLCByZWN0LCAmZXh0cmFQYXJhbXMpOworICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJl
bnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6
UGFydFNsaWRlclRodW1iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdDo6V2ViUmVjdChy
ZWN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZleHRyYVBhcmFtcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eDo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZl
ciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7Ci0gICAgSW50U2l6ZSBz
aXplID0gUGxhdGZvcm1TdXBwb3J0OjpnZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6
UGFydElubmVyU3BpbkJ1dHRvbik7CisgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9y
bTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU6OlBhcnRJbm5lclNwaW5CdXR0b24pOwogCiAgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChz
aXplLndpZHRoKCksIEZpeGVkKSk7CiAgICAgc3R5bGUtPnNldE1pbldpZHRoKExlbmd0aChzaXpl
LndpZHRoKCksIEZpeGVkKSk7CkBAIC0zMzIsMTEgKzM3OCwxNyBAQCB2b2lkIFJlbmRlclRoZW1l
Q2hyb21pdW1MaW51eDo6YWRqdXN0SW5uCiAKIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
OjpwYWludElubmVyU3BpbkJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYg
aSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFp
bnRFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpF
eHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0g
aS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CiAgICAgZXh0cmFQYXJhbXMu
aW5uZXJTcGluLnNwaW5VcCA9IChjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIobykgJiBTcGluVXBT
dGF0ZSk7CiAgICAgZXh0cmFQYXJhbXMuaW5uZXJTcGluLnJlYWRPbmx5ID0gaXNSZWFkT25seUNv
bnRyb2wobyk7CiAKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KGkuY29udGV4
dCwgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0SW5uZXJTcGluQnV0dG9uLCBnZXRXZWJUaGVtZVN0YXRl
KHRoaXMsIG8pLCByZWN0LCAmZXh0cmFQYXJhbXMpOworICAgIFdlYktpdDo6UGxhdGZvcm06OmN1
cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5l
OjpQYXJ0SW5uZXJTcGluQnV0dG9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdDo6V2Vi
UmVjdChyZWN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZleHRyYVBhcmFtcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0zNTAs
NyArNDAyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50UHJvZwogICAg
IFJlbmRlclByb2dyZXNzKiByZW5kZXJQcm9ncmVzcyA9IHRvUmVuZGVyUHJvZ3Jlc3Mobyk7CiAg
ICAgSW50UmVjdCB2YWx1ZVJlY3QgPSBwcm9ncmVzc1ZhbHVlUmVjdEZvcihyZW5kZXJQcm9ncmVz
cywgcmVjdCk7CiAKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRFeHRyYVBhcmFtcyBl
eHRyYVBhcmFtczsKKyAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRy
YVBhcmFtczsKICAgICBleHRyYVBhcmFtcy5wcm9ncmVzc0Jhci5kZXRlcm1pbmF0ZSA9IHJlbmRl
clByb2dyZXNzLT5pc0RldGVybWluYXRlKCk7CiAgICAgZXh0cmFQYXJhbXMucHJvZ3Jlc3NCYXIu
dmFsdWVSZWN0WCA9IHZhbHVlUmVjdC54KCk7CiAgICAgZXh0cmFQYXJhbXMucHJvZ3Jlc3NCYXIu
dmFsdWVSZWN0WSA9IHZhbHVlUmVjdC55KCk7CkBAIC0zNTgsNyArNDEwLDEzIEBAIGJvb2wgUmVu
ZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFByb2cKICAgICBleHRyYVBhcmFtcy5wcm9ncmVz
c0Jhci52YWx1ZVJlY3RIZWlnaHQgPSB2YWx1ZVJlY3QuaGVpZ2h0KCk7CiAKICAgICBEaXJlY3Rp
b25GbGlwcGluZ1Njb3BlIHNjb3BlKG8sIGksIHJlY3QpOwotICAgIFBsYXRmb3JtU3VwcG9ydDo6
cGFpbnRUaGVtZVBhcnQoaS5jb250ZXh0LCBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRQcm9ncmVzc0Jh
ciwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgcmVjdCwgJmV4dHJhUGFyYW1zKTsKKyAgICBX
ZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+
Y2FudmFzKCk7CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgp
LT5wYWludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhbnZhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRQcm9ncmVzc0JhciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFdl
YlRoZW1lU3RhdGUodGhpcywgbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXQ6OldlYlJlY3QocmVjdCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXh0cmFQYXJhbXMpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEyOTY4OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDktMjYgIE1hcmsgUGlsZ3JpbSAgPHBp
bGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gTW92ZSBVTklYLXNwZWNp
ZmljIHRoZW1lIGZ1bmN0aW9ucyBvdXQgb2YgUGxhdGZvcm1TdXBwb3J0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjUxNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENhbGwgV2ViVGhlbWVFbmdpbmUgZnVu
Y3Rpb25zIGFuZCB1c2UgV2ViVGhlbWVFbmdpbmUgZW51bXMKKyAgICAgICAgZGlyZWN0bHkgZnJv
bSB0aGUgbmV3IFBsYXRmb3JtLyBkaXJlY3RseTsgcmVtb3ZlIGFsbCBpbnRlcm1lZGlhdGUKKyAg
ICAgICAgZnVuY3Rpb25zIGFuZCBlbnVtcyBhbmQgY29udmVyc2lvbiBmdW5jdGlvbnMgZnJvbSBQ
bGF0Zm9ybVN1cHBvcnQuCisgICAgICAgIFBhcnQgb2YgYSByZWZhY3RvcmluZyBzZXJpZXM7IHNl
ZSB0cmFja2luZyBidWcgODI5NDguCisKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA5LTI2ICBTYWRydWwgSGFiaWIgQ2hvd2Ro
dXJ5ICA8c2FkcnVsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIERvIG5vdCBk
aXNwYXRjaCB0b3VjaC1ldmVudHMgdG8gcGx1Z2lucyB1bmxlc3MgdGhleSBleHBsaWNpdGx5IHJl
cXVlc3QgZm9yIHRvdWNoLWV2ZW50cy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1BsYXRmb3JtU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkocmV2aXNpb24gMTI5Njc1KQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQyLDExNCArMzQyLDYgQEAgdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50U2Nyb2xsYmFyVGh1
bQogICAgICAgICB3ZWJUaGVtZVNjcm9sbGJhckluZm8pOwogfQogCi0jZWxpZiBPUyhVTklYKQot
Ci1zdGF0aWMgV2ViVGhlbWVFbmdpbmU6OlBhcnQgV2ViVGhlbWVQYXJ0KFBsYXRmb3JtU3VwcG9y
dDo6VGhlbWVQYXJ0IHBhcnQpCi17Ci0gICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAgY2FzZSBQbGF0
Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJEb3duQXJyb3c6IHJldHVybiBXZWJUaGVtZUVuZ2lu
ZTo6UGFydFNjcm9sbGJhckRvd25BcnJvdzsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFy
dFNjcm9sbGJhckxlZnRBcnJvdzogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFy
TGVmdEFycm93OwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyUmlnaHRB
cnJvdzogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyUmlnaHRBcnJvdzsKLSAg
ICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhclVwQXJyb3c6IHJldHVybiBXZWJU
aGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclVwQXJyb3c7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBv
cnQ6OlBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVGh1bWI6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6
UGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYjsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6
UGFydFNjcm9sbGJhclZlcnRpY2FsVGh1bWI6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNj
cm9sbGJhclZlcnRpY2FsVGh1bWI7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3Jv
bGxiYXJIb3Jpem9udGFsVHJhY2s6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJh
ckhvcml6b250YWxUcmFjazsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJh
clZlcnRpY2FsVHJhY2s6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclZlcnRp
Y2FsVHJhY2s7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRDaGVja2JveDogcmV0dXJu
IFdlYlRoZW1lRW5naW5lOjpQYXJ0Q2hlY2tib3g7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6
OlBhcnRSYWRpbzogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpQYXJ0UmFkaW87Ci0gICAgY2FzZSBQ
bGF0Zm9ybVN1cHBvcnQ6OlBhcnRCdXR0b246IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydEJ1
dHRvbjsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFRleHRGaWVsZDogcmV0dXJuIFdl
YlRoZW1lRW5naW5lOjpQYXJ0VGV4dEZpZWxkOwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQ
YXJ0TWVudUxpc3Q6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydE1lbnVMaXN0OwotICAgIGNh
c2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2xpZGVyVHJhY2s6IHJldHVybiBXZWJUaGVtZUVuZ2lu
ZTo6UGFydFNsaWRlclRyYWNrOwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2xpZGVy
VGh1bWI6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNsaWRlclRodW1iOwotICAgIGNhc2Ug
UGxhdGZvcm1TdXBwb3J0OjpQYXJ0SW5uZXJTcGluQnV0dG9uOiByZXR1cm4gV2ViVGhlbWVFbmdp
bmU6OlBhcnRJbm5lclNwaW5CdXR0b247Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRQ
cm9ncmVzc0JhcjogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpQYXJ0UHJvZ3Jlc3NCYXI7Ci0gICAg
fQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXZWJUaGVtZUVuZ2luZTo6
UGFydFNjcm9sbGJhckRvd25BcnJvdzsKLX0KLQotc3RhdGljIFdlYlRoZW1lRW5naW5lOjpTdGF0
ZSBXZWJUaGVtZVN0YXRlKFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHN0YXRlKQot
ewotICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVE
aXNhYmxlZDogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkOwotICAgIGNhc2Ug
UGxhdGZvcm1TdXBwb3J0OjpTdGF0ZUhvdmVyOiByZXR1cm4gV2ViVGhlbWVFbmdpbmU6OlN0YXRl
SG92ZXI7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlTm9ybWFsOiByZXR1cm4gV2Vi
VGhlbWVFbmdpbmU6OlN0YXRlTm9ybWFsOwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpTdGF0
ZVByZXNzZWQ6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6U3RhdGVQcmVzc2VkOwotICAgIH0KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV2ViVGhlbWVFbmdpbmU6OlN0YXRl
RGlzYWJsZWQ7Ci19Ci0KLXN0YXRpYyB2b2lkIEdldFdlYlRoZW1lRXh0cmFQYXJhbXMoUGxhdGZv
cm1TdXBwb3J0OjpUaGVtZVBhcnQgcGFydCwgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3Rh
dGUgc3RhdGUsIGNvbnN0IFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludEV4dHJhUGFyYW1zKiBl
eHRyYVBhcmFtcywgV2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zKiB3ZWJUaGVtZUV4dHJhUGFy
YW1zKQotewotICAgIHN3aXRjaCAocGFydCkgewotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQ
YXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrOgotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQ
YXJ0U2Nyb2xsYmFyVmVydGljYWxUcmFjazoKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+
c2Nyb2xsYmFyVHJhY2sudHJhY2tYID0gZXh0cmFQYXJhbXMtPnNjcm9sbGJhclRyYWNrLnRyYWNr
WDsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+c2Nyb2xsYmFyVHJhY2sudHJhY2tZID0g
ZXh0cmFQYXJhbXMtPnNjcm9sbGJhclRyYWNrLnRyYWNrWTsKLSAgICAgICAgd2ViVGhlbWVFeHRy
YVBhcmFtcy0+c2Nyb2xsYmFyVHJhY2sudHJhY2tXaWR0aCA9IGV4dHJhUGFyYW1zLT5zY3JvbGxi
YXJUcmFjay50cmFja1dpZHRoOwotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5zY3JvbGxi
YXJUcmFjay50cmFja0hlaWdodCA9IGV4dHJhUGFyYW1zLT5zY3JvbGxiYXJUcmFjay50cmFja0hl
aWdodDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRDaGVj
a2JveDoKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+YnV0dG9uLmNoZWNrZWQgPSBleHRy
YVBhcmFtcy0+YnV0dG9uLmNoZWNrZWQ7Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPmJ1
dHRvbi5pbmRldGVybWluYXRlID0gZXh0cmFQYXJhbXMtPmJ1dHRvbi5pbmRldGVybWluYXRlOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFJhZGlvOgotICAg
ICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5idXR0b24uY2hlY2tlZCA9IGV4dHJhUGFyYW1zLT5i
dXR0b24uY2hlY2tlZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6
OlBhcnRCdXR0b246Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPmJ1dHRvbi5pc0RlZmF1
bHQgPSBleHRyYVBhcmFtcy0+YnV0dG9uLmlzRGVmYXVsdDsKLSAgICAgICAgd2ViVGhlbWVFeHRy
YVBhcmFtcy0+YnV0dG9uLmhhc0JvcmRlciA9IGV4dHJhUGFyYW1zLT5idXR0b24uaGFzQm9yZGVy
OwotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5idXR0b24uYmFja2dyb3VuZENvbG9yID0g
ZXh0cmFQYXJhbXMtPmJ1dHRvbi5iYWNrZ3JvdW5kQ29sb3I7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0VGV4dEZpZWxkOgotICAgICAgICB3ZWJUaGVtZUV4
dHJhUGFyYW1zLT50ZXh0RmllbGQuaXNUZXh0QXJlYSA9IGV4dHJhUGFyYW1zLT50ZXh0RmllbGQu
aXNUZXh0QXJlYTsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+dGV4dEZpZWxkLmlzTGlz
dGJveCA9IGV4dHJhUGFyYW1zLT50ZXh0RmllbGQuaXNMaXN0Ym94OwotICAgICAgICB3ZWJUaGVt
ZUV4dHJhUGFyYW1zLT50ZXh0RmllbGQuYmFja2dyb3VuZENvbG9yID0gZXh0cmFQYXJhbXMtPnRl
eHRGaWVsZC5iYWNrZ3JvdW5kQ29sb3I7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGxhdGZv
cm1TdXBwb3J0OjpQYXJ0TWVudUxpc3Q6Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPm1l
bnVMaXN0Lmhhc0JvcmRlciA9IGV4dHJhUGFyYW1zLT5tZW51TGlzdC5oYXNCb3JkZXI7Ci0gICAg
ICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPm1lbnVMaXN0Lmhhc0JvcmRlclJhZGl1cyA9IGV4dHJh
UGFyYW1zLT5tZW51TGlzdC5oYXNCb3JkZXJSYWRpdXM7Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQ
YXJhbXMtPm1lbnVMaXN0LmFycm93WCA9IGV4dHJhUGFyYW1zLT5tZW51TGlzdC5hcnJvd1g7Ci0g
ICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPm1lbnVMaXN0LmFycm93WSA9IGV4dHJhUGFyYW1z
LT5tZW51TGlzdC5hcnJvd1k7Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPm1lbnVMaXN0
LmJhY2tncm91bmRDb2xvciA9IGV4dHJhUGFyYW1zLT5tZW51TGlzdC5iYWNrZ3JvdW5kQ29sb3I7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2xpZGVyVHJh
Y2s6Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTbGlkZXJUaHVtYjoKLSAgICAgICAg
d2ViVGhlbWVFeHRyYVBhcmFtcy0+c2xpZGVyLnZlcnRpY2FsID0gZXh0cmFQYXJhbXMtPnNsaWRl
ci52ZXJ0aWNhbDsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+c2xpZGVyLmluRHJhZyA9
IGV4dHJhUGFyYW1zLT5zbGlkZXIuaW5EcmFnOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBs
YXRmb3JtU3VwcG9ydDo6UGFydElubmVyU3BpbkJ1dHRvbjoKLSAgICAgICAgd2ViVGhlbWVFeHRy
YVBhcmFtcy0+aW5uZXJTcGluLnNwaW5VcCA9IGV4dHJhUGFyYW1zLT5pbm5lclNwaW4uc3BpblVw
OwotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5pbm5lclNwaW4ucmVhZE9ubHkgPSBleHRy
YVBhcmFtcy0+aW5uZXJTcGluLnJlYWRPbmx5OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBs
YXRmb3JtU3VwcG9ydDo6UGFydFByb2dyZXNzQmFyOgotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFy
YW1zLT5wcm9ncmVzc0Jhci5kZXRlcm1pbmF0ZSA9IGV4dHJhUGFyYW1zLT5wcm9ncmVzc0Jhci5k
ZXRlcm1pbmF0ZTsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+cHJvZ3Jlc3NCYXIudmFs
dWVSZWN0WCA9IGV4dHJhUGFyYW1zLT5wcm9ncmVzc0Jhci52YWx1ZVJlY3RYOwotICAgICAgICB3
ZWJUaGVtZUV4dHJhUGFyYW1zLT5wcm9ncmVzc0Jhci52YWx1ZVJlY3RZID0gZXh0cmFQYXJhbXMt
PnByb2dyZXNzQmFyLnZhbHVlUmVjdFk7Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPnBy
b2dyZXNzQmFyLnZhbHVlUmVjdFdpZHRoID0gZXh0cmFQYXJhbXMtPnByb2dyZXNzQmFyLnZhbHVl
UmVjdFdpZHRoOwotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5wcm9ncmVzc0Jhci52YWx1
ZVJlY3RIZWlnaHQgPSBleHRyYVBhcmFtcy0+cHJvZ3Jlc3NCYXIudmFsdWVSZWN0SGVpZ2h0Owot
ICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsgLy8gUGFydHMgdGhh
dCBoYXZlIG5vIGV4dHJhIHBhcmFtcyBnZXQgaGVyZS4KLSAgICB9Ci19Ci0KLUludFNpemUgUGxh
dGZvcm1TdXBwb3J0OjpnZXRUaGVtZVBhcnRTaXplKFRoZW1lUGFydCBwYXJ0KQotewotICAgICBy
ZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXpl
KFdlYlRoZW1lUGFydChwYXJ0KSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRo
ZW1lUGFydCgKLSAgICBHcmFwaGljc0NvbnRleHQqIGdjLCBUaGVtZVBhcnQgcGFydCwgVGhlbWVQ
YWludFN0YXRlIHN0YXRlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBUaGVtZVBhaW50RXh0
cmFQYXJhbXMqIGV4dHJhUGFyYW1zKQotewotICAgIFdlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFt
cyB3ZWJUaGVtZUV4dHJhUGFyYW1zOwotICAgIEdldFdlYlRoZW1lRXh0cmFQYXJhbXMocGFydCwg
c3RhdGUsIGV4dHJhUGFyYW1zLCAmd2ViVGhlbWVFeHRyYVBhcmFtcyk7Ci0gICAgV2ViS2l0OjpQ
bGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludCgKLSAgICAgICAgZ2MtPnBs
YXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKSwgV2ViVGhlbWVQYXJ0KHBhcnQpLCBXZWJUaGVtZVN0
YXRlKHN0YXRlKSwgcmVjdCwgJndlYlRoZW1lRXh0cmFQYXJhbXMpOwotfQotCiAjZW5kaWYKIAog
Ly8gVGhlc2UgYXJlIHRlbXBvcmFyeSBtZXRob2RzIHRoYXQgdGhlIFdlYktpdCBsYXllciBjYW4g
dXNlIHRvIGNhbGwgdG8gdGhlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165883</attachid>
            <date>2012-09-26 14:48:43 -0700</date>
            <delta_ts>2012-09-27 10:31:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96516-20120926174755.patch</filename>
            <type>text/plain</type>
            <size>34703</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTA5LTI2ICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUg
VU5JWC1zcGVjaWZpYyB0aGVtZSBmdW5jdGlvbnMgb3V0IG9mIFBsYXRmb3JtU3VwcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1MTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsIFdlYlRoZW1l
RW5naW5lIGZ1bmN0aW9ucyBhbmQgdXNlIFdlYlRoZW1lRW5naW5lIGVudW1zCisgICAgICAgIGRp
cmVjdGx5IGZyb20gdGhlIG5ldyBQbGF0Zm9ybS8gZGlyZWN0bHk7IHJlbW92ZSBhbGwKKyAgICAg
ICAgaW50ZXJtZWRpYXRlIGZ1bmN0aW9ucyBhbmQgZW51bXMgYW5kIGNvbnZlcnNpb24gZnVuY3Rp
b25zIGZyb20KKyAgICAgICAgUGxhdGZvcm1TdXBwb3J0LgorICAgICAgICBQYXJ0IG9mIGEgcmVm
YWN0b3Jpbmcgc2VyaWVzOyBzZWUgdHJhY2tpbmcgYnVnIDgyOTQ4LgorCisgICAgICAgICogV2Vi
Q29yZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZv
cm1TdXBwb3J0Lmg6CisgICAgICAgIChQbGF0Zm9ybVN1cHBvcnQpOgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNjcm9sbGJhclRoaWNrbmVzcyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VHJh
Y2tQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6
OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1M
aW51eDo6cGFpbnRUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTGludXg6OmJ1dHRvblNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUxpbnV4OjptaW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUNocm9taXVtQW5kcm9pZDo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6Om1lbnVMaXN0QXJyb3dQYWRk
aW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmdldFdlYlRoZW1lU3RhdGUpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmFkanVzdFNsaWRl
clRodW1iU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OnBhaW50Q2hlY2tib3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxp
bnV4OjpzZXRDaGVja2JveFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJv
bWl1bUxpbnV4OjpwYWludFJhZGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hy
b21pdW1MaW51eDo6c2V0UmFkaW9TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
Q2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjpwYWludFRleHRGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFNsaWRlclRyYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRTbGlkZXJUaHVtYik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmFkanVzdElubmVyU3BpbkJ1
dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6
cGFpbnRJbm5lclNwaW5CdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJv
bWl1bUxpbnV4OjpwYWludFByb2dyZXNzQmFyKToKKwogMjAxMi0wOS0yNiAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgUGFnZTo6ZnJhbWVD
b3VudCgpIHRvIHN1YmZyYW1lQ291bnQoKSwgYW5kIHJlbGF0ZWQKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCShyZXZpc2lvbiAxMjk3MDgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAkod29ya2luZyBjb3B5KQpAQCAtMTk1MCw2ICsx
OTUwLDkgQEAKICAgICAgICdkZXBlbmRlbmNpZXMnOiBbCiAgICAgICAgICd3ZWJjb3JlX3ByZXJl
cXVpc2l0ZXMnLAogICAgICAgXSwKKyAgICAgICdkZWZpbmVzJzogWworICAgICAgICAnV0VCS0lU
X0lNUExFTUVOVEFUSU9OPTEnLAorICAgICAgXSwKICAgICAgICdzb3VyY2VzJzogWwogICAgICAg
ICAnPEAod2ViY29yZV9wcml2YXRlaGVhZGVyX2ZpbGVzKScsCiAgICAgICAgICc8QCh3ZWJjb3Jl
X2ZpbGVzKScsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9QbGF0Zm9ybVN1cHBvcnQuaAkocmV2aXNpb24gMTI5NzA4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2
MCwxMDMgKzE2MCw2IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RhdGljIHZvaWQgcGFpbnRT
Y3JvbGxiYXJUaHVtYihHcmFwaGljc0NvbnRleHQqLCBUaGVtZVBhaW50U3RhdGUsIFRoZW1lUGFp
bnRTaXplLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgVGhlbWVQYWludFNjcm9sbGJhckluZm8mKTsK
LSNlbGlmIE9TKFVOSVgpCi0gICAgLy8gVGhlIFVJIHBhcnQgd2hpY2ggaXMgYmVpbmcgYWNjZXNz
ZWQuCi0gICAgZW51bSBUaGVtZVBhcnQgewotICAgICAgICAvLyBTY3JvbGxiYXJUaGVtZSBwYXJ0
cwotICAgICAgICBQYXJ0U2Nyb2xsYmFyRG93bkFycm93LAotICAgICAgICBQYXJ0U2Nyb2xsYmFy
TGVmdEFycm93LAotICAgICAgICBQYXJ0U2Nyb2xsYmFyUmlnaHRBcnJvdywKLSAgICAgICAgUGFy
dFNjcm9sbGJhclVwQXJyb3csCi0gICAgICAgIFBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVGh1bWIs
Ci0gICAgICAgIFBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iLAotICAgICAgICBQYXJ0U2Nyb2xs
YmFySG9yaXpvbnRhbFRyYWNrLAotICAgICAgICBQYXJ0U2Nyb2xsYmFyVmVydGljYWxUcmFjaywK
LQotICAgICAgICAvLyBSZW5kZXJUaGVtZSBwYXJ0cwotICAgICAgICBQYXJ0Q2hlY2tib3gsCi0g
ICAgICAgIFBhcnRSYWRpbywKLSAgICAgICAgUGFydEJ1dHRvbiwKLSAgICAgICAgUGFydFRleHRG
aWVsZCwKLSAgICAgICAgUGFydE1lbnVMaXN0LAotICAgICAgICBQYXJ0U2xpZGVyVHJhY2ssCi0g
ICAgICAgIFBhcnRTbGlkZXJUaHVtYiwKLSAgICAgICAgUGFydElubmVyU3BpbkJ1dHRvbiwKLSAg
ICAgICAgUGFydFByb2dyZXNzQmFyCi0gICAgfTsKLQotICAgIC8vIFRoZSBjdXJyZW50IHN0YXRl
IG9mIHRoZSBhc3NvY2lhdGVkIFBhcnQuCi0gICAgZW51bSBUaGVtZVBhaW50U3RhdGUgewotICAg
ICAgICBTdGF0ZURpc2FibGVkLAotICAgICAgICBTdGF0ZUhvdmVyLAotICAgICAgICBTdGF0ZU5v
cm1hbCwKLSAgICAgICAgU3RhdGVQcmVzc2VkCi0gICAgfTsKLQotICAgIHN0cnVjdCBTY3JvbGxi
YXJUcmFja0V4dHJhUGFyYW1zIHsKLSAgICAgICAgLy8gVGhlIGJvdW5kcyBvZiB0aGUgZW50aXJl
IHRyYWNrLCBhcyBvcHBvc2VkIHRvIHRoZSBwYXJ0IGJlaW5nIHBhaW50ZWQuCi0gICAgICAgIGlu
dCB0cmFja1g7Ci0gICAgICAgIGludCB0cmFja1k7Ci0gICAgICAgIGludCB0cmFja1dpZHRoOwot
ICAgICAgICBpbnQgdHJhY2tIZWlnaHQ7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBCdXR0b25FeHRy
YVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgY2hlY2tlZDsKLSAgICAgICAgYm9vbCBpbmRldGVybWlu
YXRlOyAvLyBXaGV0aGVyIHRoZSBidXR0b24gc3RhdGUgaXMgaW5kZXRlcm1pbmF0ZS4KLSAgICAg
ICAgYm9vbCBpc0RlZmF1bHQ7IC8vIFdoZXRoZXIgdGhlIGJ1dHRvbiBpcyBkZWZhdWx0IGJ1dHRv
bi4KLSAgICAgICAgYm9vbCBoYXNCb3JkZXI7Ci0gICAgICAgIHVuc2lnbmVkIGJhY2tncm91bmRD
b2xvcjsKLSAgICB9OwotCi0gICAgc3RydWN0IFRleHRGaWVsZEV4dHJhUGFyYW1zIHsKLSAgICAg
ICAgYm9vbCBpc1RleHRBcmVhOwotICAgICAgICBib29sIGlzTGlzdGJveDsKLSAgICAgICAgdW5z
aWduZWQgYmFja2dyb3VuZENvbG9yOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgTWVudUxpc3RFeHRy
YVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgaGFzQm9yZGVyOwotICAgICAgICBib29sIGhhc0JvcmRl
clJhZGl1czsKLSAgICAgICAgaW50IGFycm93WDsKLSAgICAgICAgaW50IGFycm93WTsKLSAgICAg
ICAgdW5zaWduZWQgYmFja2dyb3VuZENvbG9yOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgU2xpZGVy
RXh0cmFQYXJhbXMgewotICAgICAgICBib29sIHZlcnRpY2FsOwotICAgICAgICBib29sIGluRHJh
ZzsKLSAgICB9OwotCi0gICAgc3RydWN0IElubmVyU3BpbkJ1dHRvbkV4dHJhUGFyYW1zIHsKLSAg
ICAgICAgYm9vbCBzcGluVXA7Ci0gICAgICAgIGJvb2wgcmVhZE9ubHk7Ci0gICAgfTsKLQotICAg
IHN0cnVjdCBQcm9ncmVzc0JhckV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9vbCBkZXRlcm1pbmF0
ZTsKLSAgICAgICAgaW50IHZhbHVlUmVjdFg7Ci0gICAgICAgIGludCB2YWx1ZVJlY3RZOwotICAg
ICAgICBpbnQgdmFsdWVSZWN0V2lkdGg7Ci0gICAgICAgIGludCB2YWx1ZVJlY3RIZWlnaHQ7Ci0g
ICAgfTsKLQotICAgIHVuaW9uIFRoZW1lUGFpbnRFeHRyYVBhcmFtcyB7Ci0gICAgICAgIFNjcm9s
bGJhclRyYWNrRXh0cmFQYXJhbXMgc2Nyb2xsYmFyVHJhY2s7Ci0gICAgICAgIEJ1dHRvbkV4dHJh
UGFyYW1zIGJ1dHRvbjsKLSAgICAgICAgVGV4dEZpZWxkRXh0cmFQYXJhbXMgdGV4dEZpZWxkOwot
ICAgICAgICBNZW51TGlzdEV4dHJhUGFyYW1zIG1lbnVMaXN0OwotICAgICAgICBTbGlkZXJFeHRy
YVBhcmFtcyBzbGlkZXI7Ci0gICAgICAgIElubmVyU3BpbkJ1dHRvbkV4dHJhUGFyYW1zIGlubmVy
U3BpbjsKLSAgICAgICAgUHJvZ3Jlc3NCYXJFeHRyYVBhcmFtcyBwcm9ncmVzc0JhcjsKLSAgICB9
OwotCi0gICAgLy8gR2V0cyB0aGUgc2l6ZSBvZiB0aGUgZ2l2ZW4gdGhlbWUgcGFydC4gRm9yIHZh
cmlhYmxlIHNpemVkIGl0ZW1zCi0gICAgLy8gbGlrZSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdGh1bWJz
LCB0aGUgd2lkdGggd2lsbCBiZSB0aGUgcmVxdWlyZWQgd2lkdGggb2YKLSAgICAvLyB0aGUgdHJh
Y2sgd2hpbGUgdGhlIGhlaWdodCB3aWxsIGJlIHRoZSBtaW5pbXVtIGhlaWdodC4KLSAgICBzdGF0
aWMgSW50U2l6ZSBnZXRUaGVtZVBhcnRTaXplKFRoZW1lUGFydCk7Ci0gICAgLy8gUGFpbnQgdGhl
IGdpdmVuIHRoZSBnaXZlbiB0aGVtZSBwYXJ0LgotICAgIHN0YXRpYyB2b2lkIHBhaW50VGhlbWVQ
YXJ0KEdyYXBoaWNzQ29udGV4dCosIFRoZW1lUGFydCwgVGhlbWVQYWludFN0YXRlLCBjb25zdCBJ
bnRSZWN0JiwgY29uc3QgVGhlbWVQYWludEV4dHJhUGFyYW1zKik7CiAjZW5kaWYKIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW1MaW51eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAkocmV2aXNpb24gMTI5NzA4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxp
bnV4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsMTIgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaCIKIAotI2luY2x1
ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIK
KyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5o
PgorI2luY2x1ZGUgPHB1YmxpYy9saW51eC9XZWJUaGVtZUVuZ2luZS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTQ2LDc3ICs0OSw4NCBAQCBTY3JvbGxiYXJUaGVtZSogU2Nyb2xsYmFy
VGhlbWU6Om5hdGl2ZVRoCiBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpzY3JvbGxi
YXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiB7CiAgICAgLy8g
SG9yaXogYW5kIFZlcnQgc2Nyb2xsYmFycyBhcmUgdGhlIHNhbWUgdGhpY2tuZXNzLgotICAgIElu
dFNpemUgc2Nyb2xsYmFyU2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQ
bGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrKTsKKyAgICBJbnRTaXpl
IHNjcm9sbGJhclNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5l
KCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclZlcnRpY2Fs
VHJhY2spOwogICAgIHJldHVybiBzY3JvbGxiYXJTaXplLndpZHRoKCk7CiB9CiAKIHZvaWQgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0
KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKIHsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1l
UGFpbnRTdGF0ZSBzdGF0ZSA9IHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSA9PSBwYXJ0VHlwZSA/
IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVIb3ZlciA6IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVOb3Jt
YWw7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUgPSBzY3JvbGxiYXIt
PmhvdmVyZWRQYXJ0KCkgPT0gcGFydFR5cGUgPyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0
ZUhvdmVyIDogV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7CiAgICAgSW50UmVj
dCBhbGlnblJlY3QgPSB0cmFja1JlY3Qoc2Nyb2xsYmFyLCBmYWxzZSk7Ci0gICAgUGxhdGZvcm1T
dXBwb3J0OjpUaGVtZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpXZWJD
YW52YXMqIGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CiAgICAgZXh0
cmFQYXJhbXMuc2Nyb2xsYmFyVHJhY2sudHJhY2tYID0gYWxpZ25SZWN0LngoKTsKICAgICBleHRy
YVBhcmFtcy5zY3JvbGxiYXJUcmFjay50cmFja1kgPSBhbGlnblJlY3QueSgpOwogICAgIGV4dHJh
UGFyYW1zLnNjcm9sbGJhclRyYWNrLnRyYWNrV2lkdGggPSBhbGlnblJlY3Qud2lkdGgoKTsKICAg
ICBleHRyYVBhcmFtcy5zY3JvbGxiYXJUcmFjay50cmFja0hlaWdodCA9IGFsaWduUmVjdC5oZWln
aHQoKTsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KAotICAgICAgICBnYywK
LSAgICAgICAgc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIg
PyBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVHJhY2sgOiBQbGF0Zm9y
bVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrLAorICAgIFdlYktpdDo6UGxhdGZv
cm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoCisgICAgICAgIGNhbnZhcywKKyAg
ICAgICAgc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBX
ZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrIDogV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2ssCiAgICAgICAg
IHN0YXRlLAotICAgICAgICByZWN0LAorICAgICAgICBXZWJLaXQ6OldlYlJlY3QocmVjdCksCiAg
ICAgICAgICZleHRyYVBhcmFtcyk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxp
bnV4OjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7
Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhcnQgcGFpbnRQYXJ0OwotICAgIFBsYXRmb3Jt
U3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHN0YXRlID0gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZU5v
cm1hbDsKKyAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0IHBhaW50UGFydDsKKyAgICBX
ZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZSBzdGF0ZSA9IFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU6OlN0YXRlTm9ybWFsOworICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBnYy0+cGxh
dGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwogICAgIGJvb2wgY2hlY2tNaW4gPSBmYWxzZTsKICAg
ICBib29sIGNoZWNrTWF4ID0gZmFsc2U7CiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24o
KSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0
b25TdGFydFBhcnQpIHsKLSAgICAgICAgICAgIHBhaW50UGFydCA9IFBsYXRmb3JtU3VwcG9ydDo6
UGFydFNjcm9sbGJhckxlZnRBcnJvdzsKKyAgICAgICAgICAgIHBhaW50UGFydCA9IFdlYktpdDo6
V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJMZWZ0QXJyb3c7CiAgICAgICAgICAgICBjaGVj
a01pbiA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwYWludFBhcnQgPSBQ
bGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJSaWdodEFycm93OworICAgICAgICAgICAgcGFp
bnRQYXJ0ID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclJpZ2h0QXJyb3c7
CiAgICAgICAgICAgICBjaGVja01heCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0KSB7Ci0gICAgICAgICAgICBw
YWludFBhcnQgPSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJVcEFycm93OworICAgICAg
ICAgICAgcGFpbnRQYXJ0ID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclVw
QXJyb3c7CiAgICAgICAgICAgICBjaGVja01pbiA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBwYWludFBhcnQgPSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJEb3du
QXJyb3c7CisgICAgICAgICAgICBwYWludFBhcnQgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQ
YXJ0U2Nyb2xsYmFyRG93bkFycm93OwogICAgICAgICAgICAgY2hlY2tNYXggPSB0cnVlOwogICAg
ICAgICB9CiAgICAgfQogICAgIGlmICgoY2hlY2tNaW4gJiYgKHNjcm9sbGJhci0+Y3VycmVudFBv
cygpIDw9IDApKQogICAgICAgICB8fCAoY2hlY2tNYXggJiYgc2Nyb2xsYmFyLT5jdXJyZW50UG9z
KCkgPT0gc2Nyb2xsYmFyLT5tYXhpbXVtKCkpKSB7Ci0gICAgICAgIHN0YXRlID0gUGxhdGZvcm1T
dXBwb3J0OjpTdGF0ZURpc2FibGVkOworICAgICAgICBzdGF0ZSA9IFdlYktpdDo6V2ViVGhlbWVF
bmdpbmU6OlN0YXRlRGlzYWJsZWQ7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHBhcnQgPT0g
c2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgpKQotICAgICAgICAgICAgc3RhdGUgPSBQbGF0Zm9ybVN1
cHBvcnQ6OlN0YXRlUHJlc3NlZDsKKyAgICAgICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZTo6U3RhdGVQcmVzc2VkOwogICAgICAgICBlbHNlIGlmIChwYXJ0ID09IHNjcm9sbGJh
ci0+aG92ZXJlZFBhcnQoKSkKLSAgICAgICAgICAgIHN0YXRlID0gUGxhdGZvcm1TdXBwb3J0OjpT
dGF0ZUhvdmVyOworICAgICAgICAgICAgc3RhdGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpT
dGF0ZUhvdmVyOwogICAgIH0KLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KGdj
LCBwYWludFBhcnQsIHN0YXRlLCByZWN0LCAwKTsKKyAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJy
ZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KAorICAgICAgICBjYW52YXMsCisgICAgICAgIHBh
aW50UGFydCwKKyAgICAgICAgc3RhdGUsCisgICAgICAgIFdlYktpdDo6V2ViUmVjdChyZWN0KSwK
KyAgICAgICAgMCk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBh
aW50U3RhdGUgc3RhdGU7Ci0KKyAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZSBzdGF0
ZTsKKyAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgp
LT5jYW52YXMoKTsKICAgICBpZiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgpID09IFRodW1iUGFy
dCkKLSAgICAgICAgc3RhdGUgPSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlUHJlc3NlZDsKKyAgICAg
ICAgc3RhdGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZVByZXNzZWQ7CiAgICAgZWxz
ZSBpZiAoc2Nyb2xsYmFyLT5ob3ZlcmVkUGFydCgpID09IFRodW1iUGFydCkKLSAgICAgICAgc3Rh
dGUgPSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlSG92ZXI7CisgICAgICAgIHN0YXRlID0gV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3ZlcjsKICAgICBlbHNlCi0gICAgICAgIHN0YXRlID0g
UGxhdGZvcm1TdXBwb3J0OjpTdGF0ZU5vcm1hbDsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50
VGhlbWVQYXJ0KAotICAgICAgICBnYywKLSAgICAgICAgc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigp
ID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJI
b3Jpem9udGFsVGh1bWIgOiBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRo
dW1iLAorICAgICAgICBzdGF0ZSA9IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlTm9ybWFs
OworICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQo
CisgICAgICAgIGNhbnZhcywKKyAgICAgICAgc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhv
cml6b250YWxTY3JvbGxiYXIgPyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFy
SG9yaXpvbnRhbFRodW1iIDogV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclZl
cnRpY2FsVGh1bWIsCiAgICAgICAgIHN0YXRlLAotICAgICAgICByZWN0LAorICAgICAgICBXZWJL
aXQ6OldlYlJlY3QocmVjdCksCiAgICAgICAgIDApOwogfQogCkBAIC0xMjgsMjMgKzEzOCwyMyBA
QCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6c2hvdWxkCiBJbnRTaXplIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1MaW51eDo6YnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyKQogewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGlj
YWxTY3JvbGxiYXIpIHsKLSAgICAgICAgSW50U2l6ZSBzaXplID0gUGxhdGZvcm1TdXBwb3J0Ojpn
ZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhclVwQXJyb3cpOwor
ICAgICAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1l
RW5naW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclVw
QXJyb3cpOwogICAgICAgICByZXR1cm4gSW50U2l6ZShzaXplLndpZHRoKCksIHNjcm9sbGJhci0+
aGVpZ2h0KCkgPCAyICogc2l6ZS5oZWlnaHQoKSA/IHNjcm9sbGJhci0+aGVpZ2h0KCkgLyAyIDog
c2l6ZS5oZWlnaHQoKSk7CiAgICAgfQogCiAgICAgLy8gSG9yaXpvbnRhbFNjcm9sbGJhcgotICAg
IEludFNpemUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9y
bVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJMZWZ0QXJyb3cpOworICAgIEludFNpemUgc2l6ZSA9IFdl
YktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6
OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyTGVmdEFycm93KTsKICAgICByZXR1cm4gSW50
U2l6ZShzY3JvbGxiYXItPndpZHRoKCkgPCAyICogc2l6ZS53aWR0aCgpID8gc2Nyb2xsYmFyLT53
aWR0aCgpIC8gMiA6IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKIGludCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTGludXg6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkg
PT0gVmVydGljYWxTY3JvbGxiYXIpIHsKLSAgICAgICAgSW50U2l6ZSBzaXplID0gUGxhdGZvcm1T
dXBwb3J0OjpnZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhclZl
cnRpY2FsVGh1bWIpOworICAgICAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpj
dXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6
UGFydFNjcm9sbGJhclZlcnRpY2FsVGh1bWIpOwogICAgICAgICByZXR1cm4gc2l6ZS5oZWlnaHQo
KTsKICAgICB9CiAKLSAgICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1l
UGFydFNpemUoUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRodW1iKTsK
KyAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5n
aW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckhvcml6
b250YWxUaHVtYik7CiAgICAgcmV0dXJuIHNpemUud2lkdGgoKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJv
aWQuY3BwCShyZXZpc2lvbiAxMjk3MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2
IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJMYXlvdXRUZXN0U3VwcG9ydC5oIgog
I2luY2x1ZGUgIlBhaW50SW5mby5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgogI2lu
Y2x1ZGUgIlJlbmRlck1lZGlhQ29udHJvbHNDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlJlbmRlck9i
amVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclByb2dyZXNzLmgiCkBAIC0zOCw2ICszNyw5IEBACiAj
aW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNsdWRlICJVc2VyQWdlbnRTdHlsZVNoZWV0
cy5oIgogCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL2Fu
ZHJvaWQvV2ViVGhlbWVFbmdpbmUuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVm
UHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZDo6Y3JlYXRlKCkKQEAg
LTgxLDcgKzgzLDcgQEAgdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YWRqdXN0SQog
ICAgIGlmIChpc1J1bm5pbmdMYXlvdXRUZXN0KCkpIHsKICAgICAgICAgLy8gTWF0Y2ggQ2hyb21p
dW0gTGludXggc3BpbiBidXR0b24gc3R5bGUgaW4gbGF5b3V0IHRlc3RzLgogICAgICAgICAvLyBG
SVhNRTogQ29uc2lkZXIgcmVtb3ZpbmcgdGhlIGNvbmRpdGlvbmFsIGlmIGEgZnV0dXJlIEFuZHJv
aWQgdGhlbWUgbWF0Y2hlcyB0aGlzLgotICAgICAgICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1
cHBvcnQ6OmdldFRoZW1lUGFydFNpemUoUGxhdGZvcm1TdXBwb3J0OjpQYXJ0SW5uZXJTcGluQnV0
dG9uKTsKKyAgICAgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgp
LT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRJbm5l
clNwaW5CdXR0b24pOwogCiAgICAgICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0
aCgpLCBGaXhlZCkpOwogICAgICAgICBzdHlsZS0+c2V0TWluV2lkdGgoTGVuZ3RoKHNpemUud2lk
dGgoKSwgRml4ZWQpKTsKQEAgLTEwNCw3ICsxMDYsNyBAQCBpbnQgUmVuZGVyVGhlbWVDaHJvbWl1
bUFuZHJvaWQ6Om1lbnVMaXN0CiB7CiAgICAgLy8gV2UgY2Fubm90IHVzZSB0aGUgc2Nyb2xsYmFy
IHRoaWNrbmVzcyBoZXJlLCBhcyBpdCdzIHdpZHRoIGlzIDAgb24gQW5kcm9pZC4KICAgICAvLyBJ
bnN0ZWFkLCB1c2UgdGhlIHdpZHRoIG9mIHRoZSBzY3JvbGxiYXIgZG93biBhcnJvdy4KLSAgICBJ
bnRTaXplIHNjcm9sbGJhclNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFydFNpemUo
UGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyRG93bkFycm93KTsKKyAgICBJbnRTaXplIHNj
cm9sbGJhclNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCkt
PmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckRvd25BcnJvdyk7
CiAgICAgcmV0dXJuIHNjcm9sbGJhclNpemUud2lkdGgoKTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5jcHAJ
KHJldmlzaW9uIDEyOTcwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUNocm9taXVtTGludXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMiArMjgsMTUgQEAKICNp
bmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRl
ICJQYWludEluZm8uaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybUNvbnRleHRTa2lhLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyUHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJSZW5kZXJTbGlkZXIuaCIKICNpbmNsdWRl
ICJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgIlVzZXJBZ2VudFN0eWxlU2hlZXRzLmgiCisj
aW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4K
KyNpbmNsdWRlIDxwdWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC01MCwxOSArNTMsMTggQEAgZG91YmxlIFJlbmRlclRoZW1lQ2hyb21pdW1M
aW51eDo6bV9jYXJldAogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdEJ1dHRvbkJhY2tn
cm91bmRDb2xvciA9IDB4ZmZkZGRkZGQ7CiAKLXN0YXRpYyBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1l
UGFpbnRTdGF0ZSBnZXRXZWJUaGVtZVN0YXRlKGNvbnN0IFJlbmRlclRoZW1lKiB0aGVtZSwgY29u
c3QgUmVuZGVyT2JqZWN0KiBvKQotewotICAgIGlmICghdGhlbWUtPmlzRW5hYmxlZChvKSkKLSAg
ICAgICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVEaXNhYmxlZDsKLSAgICBpZiAodGhl
bWUtPmlzUHJlc3NlZChvKSkKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVQ
cmVzc2VkOworc3RhdGljIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlIGdldFdlYlRoZW1l
U3RhdGUoY29uc3QgUmVuZGVyVGhlbWUqIHRoZW1lLCBjb25zdCBSZW5kZXJPYmplY3QqIG8pCisg
ICAgeworICAgICAgICBpZiAoIXRoZW1lLT5pc0VuYWJsZWQobykpCisgICAgICAgICAgICByZXR1
cm4gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVEaXNhYmxlZDsKKyAgICAgICAgaWYgKHRo
ZW1lLT5pc1ByZXNzZWQobykpCisgICAgICAgICAgICByZXR1cm4gV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6U3RhdGVQcmVzc2VkOwogICAgIGlmICh0aGVtZS0+aXNIb3ZlcmVkKG8pKQotICAgICAg
ICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZUhvdmVyOworICAgICAgICByZXR1cm4gV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3ZlcjsKIAotICAgIHJldHVybiBQbGF0Zm9ybVN1
cHBvcnQ6OlN0YXRlTm9ybWFsOworICAgIHJldHVybiBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpT
dGF0ZU5vcm1hbDsKIH0KIAotCiBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZUNo
cm9taXVtTGludXg6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW5kZXJU
aGVtZUNocm9taXVtTGludXgoKSk7CkBAIC0xNjAsNyArMTYyLDcgQEAgaW50IFJlbmRlclRoZW1l
Q2hyb21pdW1MaW51eDo6c2xpZGVyVGljawogCiB2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51
eDo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxl
bWVudCkgY29uc3QKIHsKLSAgICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRo
ZW1lUGFydFNpemUoUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2xpZGVyVGh1bWIpOworICAgIEludFNp
emUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0
U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2xpZGVyVGh1bWIpOwogCiAgICAgaWYg
KHN0eWxlLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCkgewogICAg
ICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKHNpemUud2lkdGgoKSwgRml4ZWQpKTsKQEAgLTIw
MSwxMSArMjAzLDEyIEBAIHZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRTZWxlY3QK
IAogYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50Q2hlY2tib3goUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAg
UGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAg
V2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2Vi
S2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNh
bnZhcygpOwogICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5jaGVja2VkID0gaXNDaGVja2VkKG8pOwog
ICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5pbmRldGVybWluYXRlID0gaXNJbmRldGVybWluYXRlKG8p
OwogCi0gICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydChpLmNvbnRleHQsIFBsYXRm
b3JtU3VwcG9ydDo6UGFydENoZWNrYm94LCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCByZWN0
LCAmZXh0cmFQYXJhbXMpOworICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVF
bmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0Q2hlY2ti
b3gsIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6V2ViUmVjdChyZWN0KSwgJmV4
dHJhUGFyYW1zKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTIxNSwxNiArMjE4LDE3IEBA
IHZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRDaGVja2IKICAgICBpZiAoIXN0eWxl
LT53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXN0eWxlLT5oZWlnaHQoKS5pc0F1dG8o
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50U2l6ZSBzaXplID0gUGxhdGZvcm1TdXBwb3J0
OjpnZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydENoZWNrYm94KTsKKyAgICBJ
bnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCkt
PmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydENoZWNrYm94KTsKICAgICBzZXRT
aXplSWZBdXRvKHN0eWxlLCBzaXplKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGlu
dXg6OnBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0
IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50RXh0cmFQ
YXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJh
bXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwogICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5j
aGVja2VkID0gaXNDaGVja2VkKG8pOwogCi0gICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1l
UGFydChpLmNvbnRleHQsIFBsYXRmb3JtU3VwcG9ydDo6UGFydFJhZGlvLCBnZXRXZWJUaGVtZVN0
YXRlKHRoaXMsIG8pLCByZWN0LCAmZXh0cmFQYXJhbXMpOworICAgIFdlYktpdDo6UGxhdGZvcm06
OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1l
RW5naW5lOjpQYXJ0UmFkaW8sIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6V2Vi
UmVjdChyZWN0KSwgJmV4dHJhUGFyYW1zKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTIz
NCwyMCArMjM4LDIxIEBAIHZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRSYWRpb1MK
ICAgICBpZiAoIXN0eWxlLT53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXN0eWxlLT5o
ZWlnaHQoKS5pc0F1dG8oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50U2l6ZSBzaXplID0g
UGxhdGZvcm1TdXBwb3J0OjpnZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydFJh
ZGlvKTsKKyAgICBJbnRTaXplIHNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRo
ZW1lRW5naW5lKCktPmdldFNpemUoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFJhZGlvKTsK
ICAgICBzZXRTaXplSWZBdXRvKHN0eWxlLCBzaXplKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUNo
cm9taXVtTGludXg6OnBhaW50QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZv
JiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQ
YWludEV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6
OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMg
PSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKICAgICBleHRyYVBhcmFt
cy5idXR0b24uaXNEZWZhdWx0ID0gaXNEZWZhdWx0KG8pOwogICAgIGV4dHJhUGFyYW1zLmJ1dHRv
bi5oYXNCb3JkZXIgPSB0cnVlOwogICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5iYWNrZ3JvdW5kQ29s
b3IgPSBkZWZhdWx0QnV0dG9uQmFja2dyb3VuZENvbG9yOwogICAgIGlmIChvLT5oYXNCYWNrZ3Jv
dW5kKCkpCiAgICAgICAgIGV4dHJhUGFyYW1zLmJ1dHRvbi5iYWNrZ3JvdW5kQ29sb3IgPSBvLT5z
dHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Ip
LnJnYigpOwogCi0gICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydChpLmNvbnRleHQs
IFBsYXRmb3JtU3VwcG9ydDo6UGFydEJ1dHRvbiwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwg
cmVjdCwgJmV4dHJhUGFyYW1zKTsKKyAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRo
ZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydEJ1
dHRvbiwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAm
ZXh0cmFQYXJhbXMpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMjYwLDE3ICsyNjUsMTkg
QEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VGV4dAogCiAgICAgQ29udHJv
bFBhcnQgcGFydCA9IG8tPnN0eWxlKCktPmFwcGVhcmFuY2UoKTsKIAotICAgIFBsYXRmb3JtU3Vw
cG9ydDo6VGhlbWVQYWludEV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2Vi
VGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOwogICAgIGV4dHJhUGFyYW1zLnRl
eHRGaWVsZC5pc1RleHRBcmVhID0gcGFydCA9PSBUZXh0QXJlYVBhcnQ7CiAgICAgZXh0cmFQYXJh
bXMudGV4dEZpZWxkLmlzTGlzdGJveCA9IHBhcnQgPT0gTGlzdGJveFBhcnQ7CiAKKyAgICBXZWJL
aXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2Fu
dmFzKCk7CisKICAgICAvLyBGYWxsYmFjayB0byB3aGl0ZSBpZiB0aGUgc3BlY2lmaWVkIGNvbG9y
IG9iamVjdCBpcyBpbnZhbGlkLgogICAgIENvbG9yIGJhY2tncm91bmRDb2xvcihDb2xvcjo6d2hp
dGUpOwogICAgIGlmIChvLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpLmlzVmFsaWQoKSkKICAgICAgICAgYmFja2dyb3VuZENvbG9yID0g
by0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yKTsKICAgICBleHRyYVBhcmFtcy50ZXh0RmllbGQuYmFja2dyb3VuZENvbG9yID0gYmFja2dy
b3VuZENvbG9yLnJnYigpOwogCi0gICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydChp
LmNvbnRleHQsIFBsYXRmb3JtU3VwcG9ydDo6UGFydFRleHRGaWVsZCwgZ2V0V2ViVGhlbWVTdGF0
ZSh0aGlzLCBvKSwgcmVjdCwgJmV4dHJhUGFyYW1zKTsKKyAgICBXZWJLaXQ6OlBsYXRmb3JtOjpj
dXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6UGFydFRleHRGaWVsZCwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpX
ZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAt
MjgyLDcgKzI4OSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludE1lbnUK
ICAgICBjb25zdCBpbnQgcmlnaHQgPSByZWN0LngoKSArIHJlY3Qud2lkdGgoKTsKICAgICBjb25z
dCBpbnQgbWlkZGxlID0gcmVjdC55KCkgKyByZWN0LmhlaWdodCgpIC8gMjsKIAotICAgIFBsYXRm
b3JtU3VwcG9ydDo6VGhlbWVQYWludEV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktp
dDo6V2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOwogICAgIGV4dHJhUGFy
YW1zLm1lbnVMaXN0LmFycm93WCA9IChvLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBSVEwpID8g
cmVjdC54KCkgKyA3IDogcmlnaHQgLSAxMzsKICAgICBleHRyYVBhcmFtcy5tZW51TGlzdC5hcnJv
d1kgPSBtaWRkbGU7CiAgICAgY29uc3QgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRlckJveChvKTsK
QEAgLTI5NCwxNiArMzAxLDE5IEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWlu
dE1lbnUKICAgICBpZiAoby0+aGFzQmFja2dyb3VuZCgpKQogICAgICAgICBleHRyYVBhcmFtcy5t
ZW51TGlzdC5iYWNrZ3JvdW5kQ29sb3IgPSBvLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLnJnYigpOwogCi0gICAgUGxhdGZvcm1TdXBw
b3J0OjpwYWludFRoZW1lUGFydChpLmNvbnRleHQsIFBsYXRmb3JtU3VwcG9ydDo6UGFydE1lbnVM
aXN0LCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCByZWN0LCAmZXh0cmFQYXJhbXMpOworICAg
IFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5jYW52YXMoKTsKKworICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdp
bmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0TWVudUxpc3Qs
IGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6V2ViUmVjdChyZWN0KSwgJmV4dHJh
UGFyYW1zKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4OjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZv
JiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQ
YWludEV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6
OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMg
PSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKICAgICBleHRyYVBhcmFt
cy5zbGlkZXIudmVydGljYWwgPSBvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVmVy
dGljYWxQYXJ0OwogCi0gICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydChpLmNvbnRl
eHQsIFBsYXRmb3JtU3VwcG9ydDo6UGFydFNsaWRlclRyYWNrLCBnZXRXZWJUaGVtZVN0YXRlKHRo
aXMsIG8pLCByZWN0LCAmZXh0cmFQYXJhbXMpOworICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJl
bnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5l
OjpQYXJ0U2xpZGVyVHJhY2ssIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6V2Vi
UmVjdChyZWN0KSwgJmV4dHJhUGFyYW1zKTsKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5U
KQogICAgIHBhaW50U2xpZGVyVGlja3MobywgaSwgcmVjdCk7CkBAIC0zMTQsMTcgKzMyNCwxOCBA
QCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRTbGlkCiAKIGJvb2wgUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCogbywgY29u
c3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIFBsYXRmb3JtU3Vw
cG9ydDo6VGhlbWVQYWludEV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2Vi
VGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2ViQ2Fu
dmFzKiBjYW52YXMgPSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKICAg
ICBleHRyYVBhcmFtcy5zbGlkZXIudmVydGljYWwgPSBvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkg
PT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQ7CiAgICAgZXh0cmFQYXJhbXMuc2xpZGVyLmluRHJh
ZyA9IGlzUHJlc3NlZChvKTsKIAotICAgIFBsYXRmb3JtU3VwcG9ydDo6cGFpbnRUaGVtZVBhcnQo
aS5jb250ZXh0LCBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTbGlkZXJUaHVtYiwgZ2V0V2ViVGhlbWVT
dGF0ZSh0aGlzLCBvKSwgcmVjdCwgJmV4dHJhUGFyYW1zKTsKKyAgICBXZWJLaXQ6OlBsYXRmb3Jt
OjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZTo6UGFydFNsaWRlclRodW1iLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJL
aXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CiB2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5
bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiB7
Ci0gICAgSW50U2l6ZSBzaXplID0gUGxhdGZvcm1TdXBwb3J0OjpnZXRUaGVtZVBhcnRTaXplKFBs
YXRmb3JtU3VwcG9ydDo6UGFydElubmVyU3BpbkJ1dHRvbik7CisgICAgSW50U2l6ZSBzaXplID0g
V2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktp
dDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRJbm5lclNwaW5CdXR0b24pOwogCiAgICAgc3R5bGUtPnNl
dFdpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7CiAgICAgc3R5bGUtPnNldE1pbldp
ZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7CkBAIC0zMzIsMTEgKzM0MywxMiBAQCB2
b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWRqdXN0SW5uCiAKIGJvb2wgUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjpwYWludElubmVyU3BpbkJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBQbGF0Zm9ybVN1
cHBvcnQ6OlRoZW1lUGFpbnRFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAgICBXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAgICBXZWJLaXQ6OldlYkNh
bnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CiAg
ICAgZXh0cmFQYXJhbXMuaW5uZXJTcGluLnNwaW5VcCA9IChjb250cm9sU3RhdGVzRm9yUmVuZGVy
ZXIobykgJiBTcGluVXBTdGF0ZSk7CiAgICAgZXh0cmFQYXJhbXMuaW5uZXJTcGluLnJlYWRPbmx5
ID0gaXNSZWFkT25seUNvbnRyb2wobyk7CiAKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhl
bWVQYXJ0KGkuY29udGV4dCwgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0SW5uZXJTcGluQnV0dG9uLCBn
ZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCByZWN0LCAmZXh0cmFQYXJhbXMpOworICAgIFdlYktp
dDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJL
aXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0SW5uZXJTcGluQnV0dG9uLCBnZXRXZWJUaGVtZVN0YXRl
KHRoaXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC0zNTAsNyArMzYyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9t
aXVtTGludXg6OnBhaW50UHJvZwogICAgIFJlbmRlclByb2dyZXNzKiByZW5kZXJQcm9ncmVzcyA9
IHRvUmVuZGVyUHJvZ3Jlc3Mobyk7CiAgICAgSW50UmVjdCB2YWx1ZVJlY3QgPSBwcm9ncmVzc1Zh
bHVlUmVjdEZvcihyZW5kZXJQcm9ncmVzcywgcmVjdCk7CiAKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6
OlRoZW1lUGFpbnRFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAgICBXZWJLaXQ6OldlYlRoZW1l
RW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKICAgICBleHRyYVBhcmFtcy5wcm9ncmVz
c0Jhci5kZXRlcm1pbmF0ZSA9IHJlbmRlclByb2dyZXNzLT5pc0RldGVybWluYXRlKCk7CiAgICAg
ZXh0cmFQYXJhbXMucHJvZ3Jlc3NCYXIudmFsdWVSZWN0WCA9IHZhbHVlUmVjdC54KCk7CiAgICAg
ZXh0cmFQYXJhbXMucHJvZ3Jlc3NCYXIudmFsdWVSZWN0WSA9IHZhbHVlUmVjdC55KCk7CkBAIC0z
NTgsNyArMzcwLDggQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50UHJvZwog
ICAgIGV4dHJhUGFyYW1zLnByb2dyZXNzQmFyLnZhbHVlUmVjdEhlaWdodCA9IHZhbHVlUmVjdC5o
ZWlnaHQoKTsKIAogICAgIERpcmVjdGlvbkZsaXBwaW5nU2NvcGUgc2NvcGUobywgaSwgcmVjdCk7
Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydChpLmNvbnRleHQsIFBsYXRmb3Jt
U3VwcG9ydDo6UGFydFByb2dyZXNzQmFyLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCByZWN0
LCAmZXh0cmFQYXJhbXMpOworICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKKyAgICBXZWJLaXQ6OlBsYXRmb3JtOjpj
dXJyZW50KCktPnRoZW1lRW5naW5lKCktPnBhaW50KGNhbnZhcywgV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6UGFydFByb2dyZXNzQmFyLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6
OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5NzA5KQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBA
QAorMjAxMi0wOS0yNiAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW0Nocm9taXVtXSBNb3ZlIFVOSVgtc3BlY2lmaWMgdGhlbWUgZnVuY3Rpb25zIG91dCBv
ZiBQbGF0Zm9ybVN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk2NTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQ2FsbCBXZWJUaGVtZUVuZ2luZSBmdW5jdGlvbnMgYW5kIHVzZSBXZWJUaGVtZUVu
Z2luZSBlbnVtcworICAgICAgICBkaXJlY3RseSBmcm9tIHRoZSBuZXcgUGxhdGZvcm0vIGRpcmVj
dGx5OyByZW1vdmUgYWxsCisgICAgICAgIGludGVybWVkaWF0ZSBmdW5jdGlvbnMgYW5kIGVudW1z
IGFuZCBjb252ZXJzaW9uIGZ1bmN0aW9ucyBmcm9tCisgICAgICAgIFBsYXRmb3JtU3VwcG9ydC4K
KyAgICAgICAgUGFydCBvZiBhIHJlZmFjdG9yaW5nIHNlcmllczsgc2VlIHRyYWNraW5nIGJ1ZyA4
Mjk0OC4KKworICAgICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZSk6CisKIDIwMTItMDktMjYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjk2NzMuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAJKHJl
dmlzaW9uIDEyOTcwOCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3Vw
cG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0NywxMTQgKzM0Nyw2IEBAIHZvaWQgUGxhdGZv
cm1TdXBwb3J0OjpwYWludFNjcm9sbGJhclRodW0KICAgICAgICAgd2ViVGhlbWVTY3JvbGxiYXJJ
bmZvKTsKIH0KIAotI2VsaWYgT1MoVU5JWCkKLQotc3RhdGljIFdlYlRoZW1lRW5naW5lOjpQYXJ0
IFdlYlRoZW1lUGFydChQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFydCBwYXJ0KQotewotICAgIHN3
aXRjaCAocGFydCkgewotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyRG93
bkFycm93OiByZXR1cm4gV2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJEb3duQXJyb3c7Ci0g
ICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJMZWZ0QXJyb3c6IHJldHVybiBX
ZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckxlZnRBcnJvdzsKLSAgICBjYXNlIFBsYXRmb3Jt
U3VwcG9ydDo6UGFydFNjcm9sbGJhclJpZ2h0QXJyb3c6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6
UGFydFNjcm9sbGJhclJpZ2h0QXJyb3c7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRT
Y3JvbGxiYXJVcEFycm93OiByZXR1cm4gV2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJVcEFy
cm93OwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRo
dW1iOiByZXR1cm4gV2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVGh1bWI7
Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iOiBy
ZXR1cm4gV2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iOwotICAgIGNh
c2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrOiByZXR1cm4g
V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVHJhY2s7Ci0gICAgY2FzZSBQ
bGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrOiByZXR1cm4gV2ViVGhl
bWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrOwotICAgIGNhc2UgUGxhdGZvcm1T
dXBwb3J0OjpQYXJ0Q2hlY2tib3g6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydENoZWNrYm94
OwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0UmFkaW86IHJldHVybiBXZWJUaGVtZUVu
Z2luZTo6UGFydFJhZGlvOwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0QnV0dG9uOiBy
ZXR1cm4gV2ViVGhlbWVFbmdpbmU6OlBhcnRCdXR0b247Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBv
cnQ6OlBhcnRUZXh0RmllbGQ6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFRleHRGaWVsZDsK
LSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydE1lbnVMaXN0OiByZXR1cm4gV2ViVGhlbWVF
bmdpbmU6OlBhcnRNZW51TGlzdDsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFNsaWRl
clRyYWNrOiByZXR1cm4gV2ViVGhlbWVFbmdpbmU6OlBhcnRTbGlkZXJUcmFjazsKLSAgICBjYXNl
IFBsYXRmb3JtU3VwcG9ydDo6UGFydFNsaWRlclRodW1iOiByZXR1cm4gV2ViVGhlbWVFbmdpbmU6
OlBhcnRTbGlkZXJUaHVtYjsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydElubmVyU3Bp
bkJ1dHRvbjogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpQYXJ0SW5uZXJTcGluQnV0dG9uOwotICAg
IGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0UHJvZ3Jlc3NCYXI6IHJldHVybiBXZWJUaGVtZUVu
Z2luZTo6UGFydFByb2dyZXNzQmFyOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gV2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJEb3duQXJyb3c7Ci19Ci0K
LXN0YXRpYyBXZWJUaGVtZUVuZ2luZTo6U3RhdGUgV2ViVGhlbWVTdGF0ZShQbGF0Zm9ybVN1cHBv
cnQ6OlRoZW1lUGFpbnRTdGF0ZSBzdGF0ZSkKLXsKLSAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0gICAg
Y2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlRGlzYWJsZWQ6IHJldHVybiBXZWJUaGVtZUVuZ2lu
ZTo6U3RhdGVEaXNhYmxlZDsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVIb3Zlcjog
cmV0dXJuIFdlYlRoZW1lRW5naW5lOjpTdGF0ZUhvdmVyOwotICAgIGNhc2UgUGxhdGZvcm1TdXBw
b3J0OjpTdGF0ZU5vcm1hbDogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsKLSAg
ICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVQcmVzc2VkOiByZXR1cm4gV2ViVGhlbWVFbmdp
bmU6OlN0YXRlUHJlc3NlZDsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIFdlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkOwotfQotCi1zdGF0aWMgdm9pZCBH
ZXRXZWJUaGVtZUV4dHJhUGFyYW1zKFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYXJ0IHBhcnQsIFBs
YXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHN0YXRlLCBjb25zdCBQbGF0Zm9ybVN1cHBv
cnQ6OlRoZW1lUGFpbnRFeHRyYVBhcmFtcyogZXh0cmFQYXJhbXMsIFdlYlRoZW1lRW5naW5lOjpF
eHRyYVBhcmFtcyogd2ViVGhlbWVFeHRyYVBhcmFtcykKLXsKLSAgICBzd2l0Y2ggKHBhcnQpIHsK
LSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhckhvcml6b250YWxUcmFjazoK
LSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2s6Ci0g
ICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPnNjcm9sbGJhclRyYWNrLnRyYWNrWCA9IGV4dHJh
UGFyYW1zLT5zY3JvbGxiYXJUcmFjay50cmFja1g7Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJh
bXMtPnNjcm9sbGJhclRyYWNrLnRyYWNrWSA9IGV4dHJhUGFyYW1zLT5zY3JvbGxiYXJUcmFjay50
cmFja1k7Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPnNjcm9sbGJhclRyYWNrLnRyYWNr
V2lkdGggPSBleHRyYVBhcmFtcy0+c2Nyb2xsYmFyVHJhY2sudHJhY2tXaWR0aDsKLSAgICAgICAg
d2ViVGhlbWVFeHRyYVBhcmFtcy0+c2Nyb2xsYmFyVHJhY2sudHJhY2tIZWlnaHQgPSBleHRyYVBh
cmFtcy0+c2Nyb2xsYmFyVHJhY2sudHJhY2tIZWlnaHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0Q2hlY2tib3g6Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQ
YXJhbXMtPmJ1dHRvbi5jaGVja2VkID0gZXh0cmFQYXJhbXMtPmJ1dHRvbi5jaGVja2VkOwotICAg
ICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5idXR0b24uaW5kZXRlcm1pbmF0ZSA9IGV4dHJhUGFy
YW1zLT5idXR0b24uaW5kZXRlcm1pbmF0ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQbGF0
Zm9ybVN1cHBvcnQ6OlBhcnRSYWRpbzoKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+YnV0
dG9uLmNoZWNrZWQgPSBleHRyYVBhcmFtcy0+YnV0dG9uLmNoZWNrZWQ7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0QnV0dG9uOgotICAgICAgICB3ZWJUaGVt
ZUV4dHJhUGFyYW1zLT5idXR0b24uaXNEZWZhdWx0ID0gZXh0cmFQYXJhbXMtPmJ1dHRvbi5pc0Rl
ZmF1bHQ7Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPmJ1dHRvbi5oYXNCb3JkZXIgPSBl
eHRyYVBhcmFtcy0+YnV0dG9uLmhhc0JvcmRlcjsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFt
cy0+YnV0dG9uLmJhY2tncm91bmRDb2xvciA9IGV4dHJhUGFyYW1zLT5idXR0b24uYmFja2dyb3Vu
ZENvbG9yOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFRl
eHRGaWVsZDoKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+dGV4dEZpZWxkLmlzVGV4dEFy
ZWEgPSBleHRyYVBhcmFtcy0+dGV4dEZpZWxkLmlzVGV4dEFyZWE7Ci0gICAgICAgIHdlYlRoZW1l
RXh0cmFQYXJhbXMtPnRleHRGaWVsZC5pc0xpc3Rib3ggPSBleHRyYVBhcmFtcy0+dGV4dEZpZWxk
LmlzTGlzdGJveDsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+dGV4dEZpZWxkLmJhY2tn
cm91bmRDb2xvciA9IGV4dHJhUGFyYW1zLT50ZXh0RmllbGQuYmFja2dyb3VuZENvbG9yOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydE1lbnVMaXN0OgotICAg
ICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5tZW51TGlzdC5oYXNCb3JkZXIgPSBleHRyYVBhcmFt
cy0+bWVudUxpc3QuaGFzQm9yZGVyOwotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5tZW51
TGlzdC5oYXNCb3JkZXJSYWRpdXMgPSBleHRyYVBhcmFtcy0+bWVudUxpc3QuaGFzQm9yZGVyUmFk
aXVzOwotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5tZW51TGlzdC5hcnJvd1ggPSBleHRy
YVBhcmFtcy0+bWVudUxpc3QuYXJyb3dYOwotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5t
ZW51TGlzdC5hcnJvd1kgPSBleHRyYVBhcmFtcy0+bWVudUxpc3QuYXJyb3dZOwotICAgICAgICB3
ZWJUaGVtZUV4dHJhUGFyYW1zLT5tZW51TGlzdC5iYWNrZ3JvdW5kQ29sb3IgPSBleHRyYVBhcmFt
cy0+bWVudUxpc3QuYmFja2dyb3VuZENvbG9yOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBs
YXRmb3JtU3VwcG9ydDo6UGFydFNsaWRlclRyYWNrOgotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0
OjpQYXJ0U2xpZGVyVGh1bWI6Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPnNsaWRlci52
ZXJ0aWNhbCA9IGV4dHJhUGFyYW1zLT5zbGlkZXIudmVydGljYWw7Ci0gICAgICAgIHdlYlRoZW1l
RXh0cmFQYXJhbXMtPnNsaWRlci5pbkRyYWcgPSBleHRyYVBhcmFtcy0+c2xpZGVyLmluRHJhZzsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRJbm5lclNwaW5C
dXR0b246Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPmlubmVyU3Bpbi5zcGluVXAgPSBl
eHRyYVBhcmFtcy0+aW5uZXJTcGluLnNwaW5VcDsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFt
cy0+aW5uZXJTcGluLnJlYWRPbmx5ID0gZXh0cmFQYXJhbXMtPmlubmVyU3Bpbi5yZWFkT25seTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRQcm9ncmVzc0Jh
cjoKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+cHJvZ3Jlc3NCYXIuZGV0ZXJtaW5hdGUg
PSBleHRyYVBhcmFtcy0+cHJvZ3Jlc3NCYXIuZGV0ZXJtaW5hdGU7Ci0gICAgICAgIHdlYlRoZW1l
RXh0cmFQYXJhbXMtPnByb2dyZXNzQmFyLnZhbHVlUmVjdFggPSBleHRyYVBhcmFtcy0+cHJvZ3Jl
c3NCYXIudmFsdWVSZWN0WDsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+cHJvZ3Jlc3NC
YXIudmFsdWVSZWN0WSA9IGV4dHJhUGFyYW1zLT5wcm9ncmVzc0Jhci52YWx1ZVJlY3RZOwotICAg
ICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5wcm9ncmVzc0Jhci52YWx1ZVJlY3RXaWR0aCA9IGV4
dHJhUGFyYW1zLT5wcm9ncmVzc0Jhci52YWx1ZVJlY3RXaWR0aDsKLSAgICAgICAgd2ViVGhlbWVF
eHRyYVBhcmFtcy0+cHJvZ3Jlc3NCYXIudmFsdWVSZWN0SGVpZ2h0ID0gZXh0cmFQYXJhbXMtPnBy
b2dyZXNzQmFyLnZhbHVlUmVjdEhlaWdodDsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgYnJlYWs7IC8vIFBhcnRzIHRoYXQgaGF2ZSBubyBleHRyYSBwYXJhbXMgZ2V0IGhl
cmUuCi0gICAgfQotfQotCi1JbnRTaXplIFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6
ZShUaGVtZVBhcnQgcGFydCkKLXsKLSAgICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJl
bnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJUaGVtZVBhcnQocGFydCkpOwotfQotCi12
b2lkIFBsYXRmb3JtU3VwcG9ydDo6cGFpbnRUaGVtZVBhcnQoCi0gICAgR3JhcGhpY3NDb250ZXh0
KiBnYywgVGhlbWVQYXJ0IHBhcnQsIFRoZW1lUGFpbnRTdGF0ZSBzdGF0ZSwgY29uc3QgSW50UmVj
dCYgcmVjdCwgY29uc3QgVGhlbWVQYWludEV4dHJhUGFyYW1zKiBleHRyYVBhcmFtcykKLXsKLSAg
ICBXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgd2ViVGhlbWVFeHRyYVBhcmFtczsKLSAgICBH
ZXRXZWJUaGVtZUV4dHJhUGFyYW1zKHBhcnQsIHN0YXRlLCBleHRyYVBhcmFtcywgJndlYlRoZW1l
RXh0cmFQYXJhbXMpOwotICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdp
bmUoKS0+cGFpbnQoCi0gICAgICAgIGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCksIFdl
YlRoZW1lUGFydChwYXJ0KSwgV2ViVGhlbWVTdGF0ZShzdGF0ZSksIHJlY3QsICZ3ZWJUaGVtZUV4
dHJhUGFyYW1zKTsKLX0KLQogI2VuZGlmCiAKIC8vIFRoZXNlIGFyZSB0ZW1wb3JhcnkgbWV0aG9k
cyB0aGF0IHRoZSBXZWJLaXQgbGF5ZXIgY2FuIHVzZSB0byBjYWxsIHRvIHRoZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166029</attachid>
            <date>2012-09-27 10:31:18 -0700</date>
            <delta_ts>2012-09-27 12:48:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96516-20120927133028.patch</filename>
            <type>text/plain</type>
            <size>34660</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTc3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTA5LTI3ICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUg
VU5JWC1zcGVjaWZpYyB0aGVtZSBmdW5jdGlvbnMgb3V0IG9mIFBsYXRmb3JtU3VwcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1MTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIENhbGwgV2ViVGhlbWVFbmdp
bmUgZnVuY3Rpb25zIGFuZCB1c2UgV2ViVGhlbWVFbmdpbmUgZW51bXMKKyAgICAgICAgZGlyZWN0
bHkgZnJvbSB0aGUgbmV3IFBsYXRmb3JtLyBkaXJlY3RseTsgcmVtb3ZlIGFsbAorICAgICAgICBp
bnRlcm1lZGlhdGUgZnVuY3Rpb25zIGFuZCBlbnVtcyBhbmQgY29udmVyc2lvbiBmdW5jdGlvbnMg
ZnJvbQorICAgICAgICBQbGF0Zm9ybVN1cHBvcnQuCisgICAgICAgIFBhcnQgb2YgYSByZWZhY3Rv
cmluZyBzZXJpZXM7IHNlZSB0cmFja2luZyBidWcgODI5NDguCisKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1
cHBvcnQuaDoKKyAgICAgICAgKFBsYXRmb3JtU3VwcG9ydCk6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6c2Nyb2xsYmFyVGhpY2tuZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUcmFja1Bp
ZWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFp
bnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4
OjpwYWludFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1M
aW51eDo6YnV0dG9uU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTGludXg6Om1pbmltdW1UaHVtYkxlbmd0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
Q2hyb21pdW1BbmRyb2lkOjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZDo6bWVudUxpc3RBcnJvd1BhZGRpbmcp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0V2ViVGhlbWVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWRqdXN0U2xpZGVyVGh1
bWJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFp
bnRDaGVja2JveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtTGludXg6
OnNldENoZWNrYm94U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVt
TGludXg6OnBhaW50UmFkaW8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4OjpzZXRSYWRpb1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJv
bWl1bUxpbnV4OjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNo
cm9taXVtTGludXg6OnBhaW50VGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRNZW51TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50U2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFNsaWRlclRodW1iKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6YWRqdXN0SW5uZXJTcGluQnV0dG9u
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWlu
dElubmVyU3BpbkJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVt
TGludXg6OnBhaW50UHJvZ3Jlc3NCYXIpOgorCiAyMDEyLTA5LTI3ICBBbmRyZWFzIEtsaW5nICA8
a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICAzMzJrQiBiZWxvdyBEb2N1bWVudEV2ZW50UXVl
dWU6OmNyZWF0ZSgpIG9uIE1lbWJ1c3RlcjMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cC9XZWJDb3JlLmd5cAkocmV2aXNpb24gMTI5Nzc2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE5NTAsNiArMTk1MCw5IEBACiAg
ICAgICAnZGVwZW5kZW5jaWVzJzogWwogICAgICAgICAnd2ViY29yZV9wcmVyZXF1aXNpdGVzJywK
ICAgICAgIF0sCisgICAgICAnZGVmaW5lcyc6IFsKKyAgICAgICAgJ1dFQktJVF9JTVBMRU1FTlRB
VElPTj0xJywKKyAgICAgIF0sCiAgICAgICAnc291cmNlcyc6IFsKICAgICAgICAgJzxAKHdlYmNv
cmVfcHJpdmF0ZWhlYWRlcl9maWxlcyknLAogICAgICAgICAnPEAod2ViY29yZV9maWxlcyknLApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1T
dXBwb3J0LmgJKHJldmlzaW9uIDEyOTc3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsMTAzICsxNjAs
NiBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHN0YXRpYyB2b2lkIHBhaW50U2Nyb2xsYmFyVGh1
bWIoR3JhcGhpY3NDb250ZXh0KiwgVGhlbWVQYWludFN0YXRlLCBUaGVtZVBhaW50U2l6ZSwgY29u
c3QgSW50UmVjdCYsIGNvbnN0IFRoZW1lUGFpbnRTY3JvbGxiYXJJbmZvJik7Ci0jZWxpZiBPUyhV
TklYKQotICAgIC8vIFRoZSBVSSBwYXJ0IHdoaWNoIGlzIGJlaW5nIGFjY2Vzc2VkLgotICAgIGVu
dW0gVGhlbWVQYXJ0IHsKLSAgICAgICAgLy8gU2Nyb2xsYmFyVGhlbWUgcGFydHMKLSAgICAgICAg
UGFydFNjcm9sbGJhckRvd25BcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhckxlZnRBcnJvdywK
LSAgICAgICAgUGFydFNjcm9sbGJhclJpZ2h0QXJyb3csCi0gICAgICAgIFBhcnRTY3JvbGxiYXJV
cEFycm93LAotICAgICAgICBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRodW1iLAotICAgICAgICBQ
YXJ0U2Nyb2xsYmFyVmVydGljYWxUaHVtYiwKLSAgICAgICAgUGFydFNjcm9sbGJhckhvcml6b250
YWxUcmFjaywKLSAgICAgICAgUGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2ssCi0KLSAgICAgICAg
Ly8gUmVuZGVyVGhlbWUgcGFydHMKLSAgICAgICAgUGFydENoZWNrYm94LAotICAgICAgICBQYXJ0
UmFkaW8sCi0gICAgICAgIFBhcnRCdXR0b24sCi0gICAgICAgIFBhcnRUZXh0RmllbGQsCi0gICAg
ICAgIFBhcnRNZW51TGlzdCwKLSAgICAgICAgUGFydFNsaWRlclRyYWNrLAotICAgICAgICBQYXJ0
U2xpZGVyVGh1bWIsCi0gICAgICAgIFBhcnRJbm5lclNwaW5CdXR0b24sCi0gICAgICAgIFBhcnRQ
cm9ncmVzc0JhcgotICAgIH07Ci0KLSAgICAvLyBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYXNz
b2NpYXRlZCBQYXJ0LgotICAgIGVudW0gVGhlbWVQYWludFN0YXRlIHsKLSAgICAgICAgU3RhdGVE
aXNhYmxlZCwKLSAgICAgICAgU3RhdGVIb3ZlciwKLSAgICAgICAgU3RhdGVOb3JtYWwsCi0gICAg
ICAgIFN0YXRlUHJlc3NlZAotICAgIH07Ci0KLSAgICBzdHJ1Y3QgU2Nyb2xsYmFyVHJhY2tFeHRy
YVBhcmFtcyB7Ci0gICAgICAgIC8vIFRoZSBib3VuZHMgb2YgdGhlIGVudGlyZSB0cmFjaywgYXMg
b3Bwb3NlZCB0byB0aGUgcGFydCBiZWluZyBwYWludGVkLgotICAgICAgICBpbnQgdHJhY2tYOwot
ICAgICAgICBpbnQgdHJhY2tZOwotICAgICAgICBpbnQgdHJhY2tXaWR0aDsKLSAgICAgICAgaW50
IHRyYWNrSGVpZ2h0OwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgQnV0dG9uRXh0cmFQYXJhbXMgewot
ICAgICAgICBib29sIGNoZWNrZWQ7Ci0gICAgICAgIGJvb2wgaW5kZXRlcm1pbmF0ZTsgLy8gV2hl
dGhlciB0aGUgYnV0dG9uIHN0YXRlIGlzIGluZGV0ZXJtaW5hdGUuCi0gICAgICAgIGJvb2wgaXNE
ZWZhdWx0OyAvLyBXaGV0aGVyIHRoZSBidXR0b24gaXMgZGVmYXVsdCBidXR0b24uCi0gICAgICAg
IGJvb2wgaGFzQm9yZGVyOwotICAgICAgICB1bnNpZ25lZCBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAg
fTsKLQotICAgIHN0cnVjdCBUZXh0RmllbGRFeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgaXNU
ZXh0QXJlYTsKLSAgICAgICAgYm9vbCBpc0xpc3Rib3g7Ci0gICAgICAgIHVuc2lnbmVkIGJhY2tn
cm91bmRDb2xvcjsKLSAgICB9OwotCi0gICAgc3RydWN0IE1lbnVMaXN0RXh0cmFQYXJhbXMgewot
ICAgICAgICBib29sIGhhc0JvcmRlcjsKLSAgICAgICAgYm9vbCBoYXNCb3JkZXJSYWRpdXM7Ci0g
ICAgICAgIGludCBhcnJvd1g7Ci0gICAgICAgIGludCBhcnJvd1k7Ci0gICAgICAgIHVuc2lnbmVk
IGJhY2tncm91bmRDb2xvcjsKLSAgICB9OwotCi0gICAgc3RydWN0IFNsaWRlckV4dHJhUGFyYW1z
IHsKLSAgICAgICAgYm9vbCB2ZXJ0aWNhbDsKLSAgICAgICAgYm9vbCBpbkRyYWc7Ci0gICAgfTsK
LQotICAgIHN0cnVjdCBJbm5lclNwaW5CdXR0b25FeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wg
c3BpblVwOwotICAgICAgICBib29sIHJlYWRPbmx5OwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgUHJv
Z3Jlc3NCYXJFeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgZGV0ZXJtaW5hdGU7Ci0gICAgICAg
IGludCB2YWx1ZVJlY3RYOwotICAgICAgICBpbnQgdmFsdWVSZWN0WTsKLSAgICAgICAgaW50IHZh
bHVlUmVjdFdpZHRoOwotICAgICAgICBpbnQgdmFsdWVSZWN0SGVpZ2h0OwotICAgIH07Ci0KLSAg
ICB1bmlvbiBUaGVtZVBhaW50RXh0cmFQYXJhbXMgewotICAgICAgICBTY3JvbGxiYXJUcmFja0V4
dHJhUGFyYW1zIHNjcm9sbGJhclRyYWNrOwotICAgICAgICBCdXR0b25FeHRyYVBhcmFtcyBidXR0
b247Ci0gICAgICAgIFRleHRGaWVsZEV4dHJhUGFyYW1zIHRleHRGaWVsZDsKLSAgICAgICAgTWVu
dUxpc3RFeHRyYVBhcmFtcyBtZW51TGlzdDsKLSAgICAgICAgU2xpZGVyRXh0cmFQYXJhbXMgc2xp
ZGVyOwotICAgICAgICBJbm5lclNwaW5CdXR0b25FeHRyYVBhcmFtcyBpbm5lclNwaW47Ci0gICAg
ICAgIFByb2dyZXNzQmFyRXh0cmFQYXJhbXMgcHJvZ3Jlc3NCYXI7Ci0gICAgfTsKLQotICAgIC8v
IEdldHMgdGhlIHNpemUgb2YgdGhlIGdpdmVuIHRoZW1lIHBhcnQuIEZvciB2YXJpYWJsZSBzaXpl
ZCBpdGVtcwotICAgIC8vIGxpa2UgdmVydGljYWwgc2Nyb2xsYmFyIHRodW1icywgdGhlIHdpZHRo
IHdpbGwgYmUgdGhlIHJlcXVpcmVkIHdpZHRoIG9mCi0gICAgLy8gdGhlIHRyYWNrIHdoaWxlIHRo
ZSBoZWlnaHQgd2lsbCBiZSB0aGUgbWluaW11bSBoZWlnaHQuCi0gICAgc3RhdGljIEludFNpemUg
Z2V0VGhlbWVQYXJ0U2l6ZShUaGVtZVBhcnQpOwotICAgIC8vIFBhaW50IHRoZSBnaXZlbiB0aGUg
Z2l2ZW4gdGhlbWUgcGFydC4KLSAgICBzdGF0aWMgdm9pZCBwYWludFRoZW1lUGFydChHcmFwaGlj
c0NvbnRleHQqLCBUaGVtZVBhcnQsIFRoZW1lUGFpbnRTdGF0ZSwgY29uc3QgSW50UmVjdCYsIGNv
bnN0IFRoZW1lUGFpbnRFeHRyYVBhcmFtcyopOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eC5jcHAJKHJldmlzaW9uIDEyOTc3NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgiCiAKLSNpbmNsdWRlICJQbGF0Zm9y
bVN1cHBvcnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCisjaW5jbHVkZSA8
cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00Niw3OCArNDksNzAgQEAgU2Nyb2xsYmFyVGhlbWUqIFNjcm9sbGJhclRoZW1lOjpuYXRp
dmVUaAogaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6c2Nyb2xsYmFyVGhpY2tuZXNz
KFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogewogICAgIC8vIEhvcml6IGFuZCBW
ZXJ0IHNjcm9sbGJhcnMgYXJlIHRoZSBzYW1lIHRoaWNrbmVzcy4KLSAgICBJbnRTaXplIHNjcm9s
bGJhclNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFydFNpemUoUGxhdGZvcm1TdXBw
b3J0OjpQYXJ0U2Nyb2xsYmFyVmVydGljYWxUcmFjayk7CisgICAgSW50U2l6ZSBzY3JvbGxiYXJT
aXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXpl
KFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrKTsKICAg
ICByZXR1cm4gc2Nyb2xsYmFyU2l6ZS53aWR0aCgpOwogfQogCiB2b2lkIFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1MaW51eDo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJh
clBhcnQgcGFydFR5cGUpCiB7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUg
c3RhdGUgPSBzY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0gcGFydFR5cGUgPyBQbGF0Zm9ybVN1
cHBvcnQ6OlN0YXRlSG92ZXIgOiBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlTm9ybWFsOworICAgIFdl
YktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlIHN0YXRlID0gc2Nyb2xsYmFyLT5ob3ZlcmVkUGFy
dCgpID09IHBhcnRUeXBlID8gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3ZlciA6IFdl
YktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlTm9ybWFsOwogICAgIEludFJlY3QgYWxpZ25SZWN0
ID0gdHJhY2tSZWN0KHNjcm9sbGJhciwgZmFsc2UpOwotICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhl
bWVQYWludEV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU6OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52
YXMgPSBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwogICAgIGV4dHJhUGFyYW1zLnNj
cm9sbGJhclRyYWNrLnRyYWNrWCA9IGFsaWduUmVjdC54KCk7CiAgICAgZXh0cmFQYXJhbXMuc2Ny
b2xsYmFyVHJhY2sudHJhY2tZID0gYWxpZ25SZWN0LnkoKTsKICAgICBleHRyYVBhcmFtcy5zY3Jv
bGxiYXJUcmFjay50cmFja1dpZHRoID0gYWxpZ25SZWN0LndpZHRoKCk7CiAgICAgZXh0cmFQYXJh
bXMuc2Nyb2xsYmFyVHJhY2sudHJhY2tIZWlnaHQgPSBhbGlnblJlY3QuaGVpZ2h0KCk7Ci0gICAg
UGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydCgKLSAgICAgICAgZ2MsCi0gICAgICAgIHNj
cm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gUGxhdGZvcm1T
dXBwb3J0OjpQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrIDogUGxhdGZvcm1TdXBwb3J0OjpQ
YXJ0U2Nyb2xsYmFyVmVydGljYWxUcmFjaywKLSAgICAgICAgc3RhdGUsCi0gICAgICAgIHJlY3Qs
Ci0gICAgICAgICZleHRyYVBhcmFtcyk7CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgp
LT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9
PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9s
bGJhckhvcml6b250YWxUcmFjayA6IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxi
YXJWZXJ0aWNhbFRyYWNrLCBzdGF0ZSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJh
bXMpOwogfQogCiB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24o
R3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29u
c3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewotICAgIFBsYXRmb3JtU3Vw
cG9ydDo6VGhlbWVQYXJ0IHBhaW50UGFydDsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFp
bnRTdGF0ZSBzdGF0ZSA9IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVOb3JtYWw7CisgICAgV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6UGFydCBwYWludFBhcnQ7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6U3RhdGUgc3RhdGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZU5vcm1hbDsK
KyAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5j
YW52YXMoKTsKICAgICBib29sIGNoZWNrTWluID0gZmFsc2U7CiAgICAgYm9vbCBjaGVja01heCA9
IGZhbHNlOwogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNj
cm9sbGJhcikgewogICAgICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uU3RhcnRQYXJ0KSB7Ci0g
ICAgICAgICAgICBwYWludFBhcnQgPSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJMZWZ0
QXJyb3c7CisgICAgICAgICAgICBwYWludFBhcnQgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQ
YXJ0U2Nyb2xsYmFyTGVmdEFycm93OwogICAgICAgICAgICAgY2hlY2tNaW4gPSB0cnVlOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFpbnRQYXJ0ID0gUGxhdGZvcm1TdXBwb3J0OjpQ
YXJ0U2Nyb2xsYmFyUmlnaHRBcnJvdzsKKyAgICAgICAgICAgIHBhaW50UGFydCA9IFdlYktpdDo6
V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJSaWdodEFycm93OwogICAgICAgICAgICAgY2hl
Y2tNYXggPSB0cnVlOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHBhcnQg
PT0gQmFja0J1dHRvblN0YXJ0UGFydCkgewotICAgICAgICAgICAgcGFpbnRQYXJ0ID0gUGxhdGZv
cm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyVXBBcnJvdzsKKyAgICAgICAgICAgIHBhaW50UGFydCA9
IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxiYXJVcEFycm93OwogICAgICAgICAg
ICAgY2hlY2tNaW4gPSB0cnVlOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFpbnRQ
YXJ0ID0gUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyRG93bkFycm93OworICAgICAgICAg
ICAgcGFpbnRQYXJ0ID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckRvd25B
cnJvdzsKICAgICAgICAgICAgIGNoZWNrTWF4ID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KICAg
ICBpZiAoKGNoZWNrTWluICYmIChzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSA8PSAwKSkKICAgICAg
ICAgfHwgKGNoZWNrTWF4ICYmIHNjcm9sbGJhci0+Y3VycmVudFBvcygpID09IHNjcm9sbGJhci0+
bWF4aW11bSgpKSkgewotICAgICAgICBzdGF0ZSA9IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVEaXNh
YmxlZDsKKyAgICAgICAgc3RhdGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2Fi
bGVkOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChwYXJ0ID09IHNjcm9sbGJhci0+cHJlc3Nl
ZFBhcnQoKSkKLSAgICAgICAgICAgIHN0YXRlID0gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZVByZXNz
ZWQ7CisgICAgICAgICAgICBzdGF0ZSA9IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlUHJl
c3NlZDsKICAgICAgICAgZWxzZSBpZiAocGFydCA9PSBzY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkp
Ci0gICAgICAgICAgICBzdGF0ZSA9IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVIb3ZlcjsKKyAgICAg
ICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVIb3ZlcjsKICAgICB9
Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydChnYywgcGFpbnRQYXJ0LCBzdGF0
ZSwgcmVjdCwgMCk7CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2lu
ZSgpLT5wYWludChjYW52YXMsIHBhaW50UGFydCwgc3RhdGUsIFdlYktpdDo6V2ViUmVjdChyZWN0
KSwgMCk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRodW1i
KEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNv
bnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3Rh
dGUgc3RhdGU7Ci0KKyAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZSBzdGF0ZTsKKyAg
ICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52
YXMoKTsKICAgICBpZiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgpID09IFRodW1iUGFydCkKLSAg
ICAgICAgc3RhdGUgPSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlUHJlc3NlZDsKKyAgICAgICAgc3Rh
dGUgPSBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZVByZXNzZWQ7CiAgICAgZWxzZSBpZiAo
c2Nyb2xsYmFyLT5ob3ZlcmVkUGFydCgpID09IFRodW1iUGFydCkKLSAgICAgICAgc3RhdGUgPSBQ
bGF0Zm9ybVN1cHBvcnQ6OlN0YXRlSG92ZXI7CisgICAgICAgIHN0YXRlID0gV2ViS2l0OjpXZWJU
aGVtZUVuZ2luZTo6U3RhdGVIb3ZlcjsKICAgICBlbHNlCi0gICAgICAgIHN0YXRlID0gUGxhdGZv
cm1TdXBwb3J0OjpTdGF0ZU5vcm1hbDsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQ
YXJ0KAotICAgICAgICBnYywKLSAgICAgICAgc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhv
cml6b250YWxTY3JvbGxiYXIgPyBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJIb3Jpem9u
dGFsVGh1bWIgOiBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iLAot
ICAgICAgICBzdGF0ZSwKLSAgICAgICAgcmVjdCwKLSAgICAgICAgMCk7CisgICAgICAgIHN0YXRl
ID0gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7CisgICAgV2ViS2l0OjpQbGF0
Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIHNjcm9sbGJhci0+
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6UGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYiA6IFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iLCBzdGF0ZSwgV2ViS2l0OjpXZWJSZWN0KHJl
Y3QpLCAwKTsKIH0KIAogYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNob3VsZENl
bnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2dCkKQEAgLTEyOCwyMyArMTIzLDIzIEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUxpbnV4OjpzaG91bGQKIEludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpidXR0
b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKHNjcm9s
bGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgewotICAgICAgICBJbnRT
aXplIHNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFydFNpemUoUGxhdGZvcm1TdXBw
b3J0OjpQYXJ0U2Nyb2xsYmFyVXBBcnJvdyk7CisgICAgICAgIEludFNpemUgc2l6ZSA9IFdlYktp
dDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyVXBBcnJvdyk7CiAgICAgICAgIHJldHVybiBJbnRT
aXplKHNpemUud2lkdGgoKSwgc2Nyb2xsYmFyLT5oZWlnaHQoKSA8IDIgKiBzaXplLmhlaWdodCgp
ID8gc2Nyb2xsYmFyLT5oZWlnaHQoKSAvIDIgOiBzaXplLmhlaWdodCgpKTsKICAgICB9CiAKICAg
ICAvLyBIb3Jpem9udGFsU2Nyb2xsYmFyCi0gICAgSW50U2l6ZSBzaXplID0gUGxhdGZvcm1TdXBw
b3J0OjpnZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhckxlZnRB
cnJvdyk7CisgICAgSW50U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50
aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTY3JvbGxi
YXJMZWZ0QXJyb3cpOwogICAgIHJldHVybiBJbnRTaXplKHNjcm9sbGJhci0+d2lkdGgoKSA8IDIg
KiBzaXplLndpZHRoKCkgPyBzY3JvbGxiYXItPndpZHRoKCkgLyAyIDogc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKTsKIH0KIAogaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6bWlu
aW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAg
aWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgewotICAg
ICAgICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFydFNpemUoUGxh
dGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyVmVydGljYWxUaHVtYik7CisgICAgICAgIEludFNp
emUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0
U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyVmVydGljYWxUaHVtYik7
CiAgICAgICAgIHJldHVybiBzaXplLmhlaWdodCgpOwogICAgIH0KIAotICAgIEludFNpemUgc2l6
ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6OlBh
cnRTY3JvbGxiYXJIb3Jpem9udGFsVGh1bWIpOworICAgIEludFNpemUgc2l6ZSA9IFdlYktpdDo6
UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRodW1iKTsKICAgICByZXR1cm4gc2l6
ZS53aWR0aCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVDaHJvbWl1bUFuZHJvaWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHAJKHJldmlzaW9uIDEyOTc3NikKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2lu
Y2x1ZGUgIkxheW91dFRlc3RTdXBwb3J0LmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCi0jaW5j
bHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTWVkaWFDb250cm9sc0No
cm9taXVtLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyUHJv
Z3Jlc3MuaCIKQEAgLTM4LDYgKzM3LDkgQEAKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgog
I2luY2x1ZGUgIlVzZXJBZ2VudFN0eWxlU2hlZXRzLmgiCiAKKyNpbmNsdWRlIDxwdWJsaWMvUGxh
dGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMvYW5kcm9pZC9XZWJUaGVtZUVuZ2luZS5oPgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1l
Q2hyb21pdW1BbmRyb2lkOjpjcmVhdGUoKQpAQCAtODEsNyArODMsNyBAQCB2b2lkIFJlbmRlclRo
ZW1lQ2hyb21pdW1BbmRyb2lkOjphZGp1c3RJCiAgICAgaWYgKGlzUnVubmluZ0xheW91dFRlc3Qo
KSkgewogICAgICAgICAvLyBNYXRjaCBDaHJvbWl1bSBMaW51eCBzcGluIGJ1dHRvbiBzdHlsZSBp
biBsYXlvdXQgdGVzdHMuCiAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciByZW1vdmluZyB0aGUg
Y29uZGl0aW9uYWwgaWYgYSBmdXR1cmUgQW5kcm9pZCB0aGVtZSBtYXRjaGVzIHRoaXMuCi0gICAg
ICAgIEludFNpemUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0
Zm9ybVN1cHBvcnQ6OlBhcnRJbm5lclNwaW5CdXR0b24pOworICAgICAgICBJbnRTaXplIHNpemUg
PSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNpemUoV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydElubmVyU3BpbkJ1dHRvbik7CiAKICAgICAgICAgc3R5
bGUtPnNldFdpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZpeGVkKSk7CiAgICAgICAgIHN0eWxl
LT5zZXRNaW5XaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpLCBGaXhlZCkpOwpAQCAtMTA0LDcgKzEw
Niw3IEBAIGludCBSZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZDo6bWVudUxpc3QKIHsKICAgICAv
LyBXZSBjYW5ub3QgdXNlIHRoZSBzY3JvbGxiYXIgdGhpY2tuZXNzIGhlcmUsIGFzIGl0J3Mgd2lk
dGggaXMgMCBvbiBBbmRyb2lkLgogICAgIC8vIEluc3RlYWQsIHVzZSB0aGUgd2lkdGggb2YgdGhl
IHNjcm9sbGJhciBkb3duIGFycm93LgotICAgIEludFNpemUgc2Nyb2xsYmFyU2l6ZSA9IFBsYXRm
b3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxi
YXJEb3duQXJyb3cpOworICAgIEludFNpemUgc2Nyb2xsYmFyU2l6ZSA9IFdlYktpdDo6UGxhdGZv
cm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5n
aW5lOjpQYXJ0U2Nyb2xsYmFyRG93bkFycm93KTsKICAgICByZXR1cm4gc2Nyb2xsYmFyU2l6ZS53
aWR0aCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVD
aHJvbWl1bUxpbnV4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAkocmV2aXNpb24gMTI5Nzc2KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDEyICsyOCwxNSBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
ICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgotI2luY2x1ZGUgIlBs
YXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKICNpbmNs
dWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJQcm9ncmVzcy5oIgogI2luY2x1
ZGUgIlJlbmRlclNsaWRlci5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVk
ZSAiVXNlckFnZW50U3R5bGVTaGVldHMuaCIKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4K
KyNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9saW51eC9XZWJU
aGVtZUVuZ2luZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUwLDE5ICs1MywxOCBA
QCBkb3VibGUgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjptX2NhcmV0CiAKIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBkZWZhdWx0QnV0dG9uQmFja2dyb3VuZENvbG9yID0gMHhmZmRkZGRkZDsKIAot
c3RhdGljIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIGdldFdlYlRoZW1lU3RhdGUo
Y29uc3QgUmVuZGVyVGhlbWUqIHRoZW1lLCBjb25zdCBSZW5kZXJPYmplY3QqIG8pCitzdGF0aWMg
V2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUgZ2V0V2ViVGhlbWVTdGF0ZShjb25zdCBSZW5k
ZXJUaGVtZSogdGhlbWUsIGNvbnN0IFJlbmRlck9iamVjdCogbykKIHsKICAgICBpZiAoIXRoZW1l
LT5pc0VuYWJsZWQobykpCi0gICAgICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlRGlz
YWJsZWQ7CisgICAgICAgIHJldHVybiBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2Fi
bGVkOwogICAgIGlmICh0aGVtZS0+aXNQcmVzc2VkKG8pKQotICAgICAgICByZXR1cm4gUGxhdGZv
cm1TdXBwb3J0OjpTdGF0ZVByZXNzZWQ7CisgICAgICAgIHJldHVybiBXZWJLaXQ6OldlYlRoZW1l
RW5naW5lOjpTdGF0ZVByZXNzZWQ7CiAgICAgaWYgKHRoZW1lLT5pc0hvdmVyZWQobykpCi0gICAg
ICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlSG92ZXI7CisgICAgICAgIHJldHVybiBX
ZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZUhvdmVyOwogCi0gICAgcmV0dXJuIFBsYXRmb3Jt
U3VwcG9ydDo6U3RhdGVOb3JtYWw7CisgICAgcmV0dXJuIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6
OlN0YXRlTm9ybWFsOwogfQogCi0KIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1l
Q2hyb21pdW1MaW51eDo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbmRl
clRoZW1lQ2hyb21pdW1MaW51eCgpKTsKQEAgLTE2MCw3ICsxNjIsNyBAQCBpbnQgUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjpzbGlkZXJUaWNrCiAKIHZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxp
bnV4OjphZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBl
bGVtZW50KSBjb25zdAogewotICAgIEludFNpemUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0
VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTbGlkZXJUaHVtYik7CisgICAgSW50
U2l6ZSBzaXplID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5n
ZXRTaXplKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRTbGlkZXJUaHVtYik7CiAKICAgICBp
ZiAoc3R5bGUtPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0KSB7CiAg
ICAgICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpLCBGaXhlZCkpOwpAQCAt
MjAxLDExICsyMDMsMTIgQEAgdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldFNlbGVj
dAogCiBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRDaGVja2JveChSZW5kZXJP
YmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAg
ICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAg
ICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAgICBX
ZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+
Y2FudmFzKCk7CiAgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmNoZWNrZWQgPSBpc0NoZWNrZWQobyk7
CiAgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmluZGV0ZXJtaW5hdGUgPSBpc0luZGV0ZXJtaW5hdGUo
byk7CiAKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KGkuY29udGV4dCwgUGxh
dGZvcm1TdXBwb3J0OjpQYXJ0Q2hlY2tib3gsIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIHJl
Y3QsICZleHRyYVBhcmFtcyk7CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVt
ZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRDaGVj
a2JveCwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAm
ZXh0cmFQYXJhbXMpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMjE1LDE2ICsyMTgsMTcg
QEAgdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldENoZWNrYgogICAgIGlmICghc3R5
bGUtPndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhc3R5bGUtPmhlaWdodCgpLmlzQXV0
bygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBv
cnQ6OmdldFRoZW1lUGFydFNpemUoUGxhdGZvcm1TdXBwb3J0OjpQYXJ0Q2hlY2tib3gpOworICAg
IEludFNpemUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUo
KS0+Z2V0U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0Q2hlY2tib3gpOwogICAgIHNl
dFNpemVJZkF1dG8oc3R5bGUsIHNpemUpOwogfQogCiBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1M
aW51eDo6cGFpbnRSYWRpbyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29u
c3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRFeHRy
YVBhcmFtcyBleHRyYVBhcmFtczsKKyAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpFeHRyYVBh
cmFtcyBleHRyYVBhcmFtczsKKyAgICBXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzID0gaS5jb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CiAgICAgZXh0cmFQYXJhbXMuYnV0dG9u
LmNoZWNrZWQgPSBpc0NoZWNrZWQobyk7CiAKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhl
bWVQYXJ0KGkuY29udGV4dCwgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0UmFkaW8sIGdldFdlYlRoZW1l
U3RhdGUodGhpcywgbyksIHJlY3QsICZleHRyYVBhcmFtcyk7CisgICAgV2ViS2l0OjpQbGF0Zm9y
bTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhl
bWVFbmdpbmU6OlBhcnRSYWRpbywgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpX
ZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAt
MjM0LDIwICsyMzgsMjEgQEAgdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldFJhZGlv
UwogICAgIGlmICghc3R5bGUtPndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhc3R5bGUt
PmhlaWdodCgpLmlzQXV0bygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRTaXplIHNpemUg
PSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFydFNpemUoUGxhdGZvcm1TdXBwb3J0OjpQYXJ0
UmFkaW8pOworICAgIEludFNpemUgc2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+
dGhlbWVFbmdpbmUoKS0+Z2V0U2l6ZShXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0UmFkaW8p
OwogICAgIHNldFNpemVJZkF1dG8oc3R5bGUsIHNpemUpOwogfQogCiBib29sIFJlbmRlclRoZW1l
Q2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludElu
Zm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVt
ZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2lu
ZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZh
cyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwogICAgIGV4dHJhUGFy
YW1zLmJ1dHRvbi5pc0RlZmF1bHQgPSBpc0RlZmF1bHQobyk7CiAgICAgZXh0cmFQYXJhbXMuYnV0
dG9uLmhhc0JvcmRlciA9IHRydWU7CiAgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmJhY2tncm91bmRD
b2xvciA9IGRlZmF1bHRCdXR0b25CYWNrZ3JvdW5kQ29sb3I7CiAgICAgaWYgKG8tPmhhc0JhY2tn
cm91bmQoKSkKICAgICAgICAgZXh0cmFQYXJhbXMuYnV0dG9uLmJhY2tncm91bmRDb2xvciA9IG8t
PnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cikucmdiKCk7CiAKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KGkuY29udGV4
dCwgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0QnV0dG9uLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8p
LCByZWN0LCAmZXh0cmFQYXJhbXMpOworICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+
dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQYXJ0
QnV0dG9uLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCks
ICZleHRyYVBhcmFtcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0yNjAsMTcgKzI2NSwx
OSBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUZXh0CiAKICAgICBDb250
cm9sUGFydCBwYXJ0ID0gby0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpOwogCi0gICAgUGxhdGZvcm1T
dXBwb3J0OjpUaGVtZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CiAgICAgZXh0cmFQYXJhbXMu
dGV4dEZpZWxkLmlzVGV4dEFyZWEgPSBwYXJ0ID09IFRleHRBcmVhUGFydDsKICAgICBleHRyYVBh
cmFtcy50ZXh0RmllbGQuaXNMaXN0Ym94ID0gcGFydCA9PSBMaXN0Ym94UGFydDsKIAorICAgIFdl
YktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5j
YW52YXMoKTsKKwogICAgIC8vIEZhbGxiYWNrIHRvIHdoaXRlIGlmIHRoZSBzcGVjaWZpZWQgY29s
b3Igb2JqZWN0IGlzIGludmFsaWQuCiAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKENvbG9yOjp3
aGl0ZSk7CiAgICAgaWYgKG8tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvcikuaXNWYWxpZCgpKQogICAgICAgICBiYWNrZ3JvdW5kQ29sb3Ig
PSBvLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IpOwogICAgIGV4dHJhUGFyYW1zLnRleHRGaWVsZC5iYWNrZ3JvdW5kQ29sb3IgPSBiYWNr
Z3JvdW5kQ29sb3IucmdiKCk7CiAKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0
KGkuY29udGV4dCwgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0VGV4dEZpZWxkLCBnZXRXZWJUaGVtZVN0
YXRlKHRoaXMsIG8pLCByZWN0LCAmZXh0cmFQYXJhbXMpOworICAgIFdlYktpdDo6UGxhdGZvcm06
OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1l
RW5naW5lOjpQYXJ0VGV4dEZpZWxkLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6
OldlYlJlY3QocmVjdCksICZleHRyYVBhcmFtcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBA
IC0yODIsNyArMjg5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50TWVu
dQogICAgIGNvbnN0IGludCByaWdodCA9IHJlY3QueCgpICsgcmVjdC53aWR0aCgpOwogICAgIGNv
bnN0IGludCBtaWRkbGUgPSByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkgLyAyOwogCi0gICAgUGxh
dGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CiAgICAgZXh0cmFQ
YXJhbXMubWVudUxpc3QuYXJyb3dYID0gKG8tPnN0eWxlKCktPmRpcmVjdGlvbigpID09IFJUTCkg
PyByZWN0LngoKSArIDcgOiByaWdodCAtIDEzOwogICAgIGV4dHJhUGFyYW1zLm1lbnVMaXN0LmFy
cm93WSA9IG1pZGRsZTsKICAgICBjb25zdCBSZW5kZXJCb3gqIGJveCA9IHRvUmVuZGVyQm94KG8p
OwpAQCAtMjk0LDE2ICszMDEsMTkgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnBh
aW50TWVudQogICAgIGlmIChvLT5oYXNCYWNrZ3JvdW5kKCkpCiAgICAgICAgIGV4dHJhUGFyYW1z
Lm1lbnVMaXN0LmJhY2tncm91bmRDb2xvciA9IG8tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikucmdiKCk7CiAKLSAgICBQbGF0Zm9ybVN1
cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KGkuY29udGV4dCwgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0TWVu
dUxpc3QsIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIHJlY3QsICZleHRyYVBhcmFtcyk7Cisg
ICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCktPmNhbnZhcygpOworCisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVu
Z2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRNZW51TGlz
dCwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCAmZXh0
cmFQYXJhbXMpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUNocm9t
aXVtTGludXg6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludElu
Zm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVt
ZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2lu
ZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZh
cyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwogICAgIGV4dHJhUGFy
YW1zLnNsaWRlci52ZXJ0aWNhbCA9IG8tPnN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJW
ZXJ0aWNhbFBhcnQ7CiAKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KGkuY29u
dGV4dCwgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2xpZGVyVHJhY2ssIGdldFdlYlRoZW1lU3RhdGUo
dGhpcywgbyksIHJlY3QsICZleHRyYVBhcmFtcyk7CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU6OlBhcnRTbGlkZXJUcmFjaywgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpX
ZWJSZWN0KHJlY3QpLCAmZXh0cmFQYXJhbXMpOwogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1F
TlQpCiAgICAgcGFpbnRTbGlkZXJUaWNrcyhvLCBpLCByZWN0KTsKQEAgLTMxNCwxNyArMzI0LDE4
IEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFNsaWQKIAogYm9vbCBSZW5k
ZXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgUGxhdGZvcm1T
dXBwb3J0OjpUaGVtZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgV2ViS2l0OjpXZWJD
YW52YXMqIGNhbnZhcyA9IGkuY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwog
ICAgIGV4dHJhUGFyYW1zLnNsaWRlci52ZXJ0aWNhbCA9IG8tPnN0eWxlKCktPmFwcGVhcmFuY2Uo
KSA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydDsKICAgICBleHRyYVBhcmFtcy5zbGlkZXIuaW5E
cmFnID0gaXNQcmVzc2VkKG8pOwogCi0gICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFy
dChpLmNvbnRleHQsIFBsYXRmb3JtU3VwcG9ydDo6UGFydFNsaWRlclRodW1iLCBnZXRXZWJUaGVt
ZVN0YXRlKHRoaXMsIG8pLCByZWN0LCAmZXh0cmFQYXJhbXMpOworICAgIFdlYktpdDo6UGxhdGZv
cm06OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpQYXJ0U2xpZGVyVGh1bWIsIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdl
YktpdDo6V2ViUmVjdChyZWN0KSwgJmV4dHJhUGFyYW1zKTsKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKIHZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphZGp1c3RJbm5lclNwaW5CdXR0b25T
dHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QK
IHsKLSAgICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFydFNpemUo
UGxhdGZvcm1TdXBwb3J0OjpQYXJ0SW5uZXJTcGluQnV0dG9uKTsKKyAgICBJbnRTaXplIHNpemUg
PSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCktPmdldFNpemUoV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6UGFydElubmVyU3BpbkJ1dHRvbik7CiAKICAgICBzdHlsZS0+
c2V0V2lkdGgoTGVuZ3RoKHNpemUud2lkdGgoKSwgRml4ZWQpKTsKICAgICBzdHlsZS0+c2V0TWlu
V2lkdGgoTGVuZ3RoKHNpemUud2lkdGgoKSwgRml4ZWQpKTsKQEAgLTMzMiwxMSArMzQzLDEyIEBA
IHZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjphZGp1c3RJbm4KIAogYm9vbCBSZW5kZXJU
aGVtZUNocm9taXVtTGludXg6OnBhaW50SW5uZXJTcGluQnV0dG9uKFJlbmRlck9iamVjdCogbywg
Y29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIFBsYXRmb3Jt
U3VwcG9ydDo6VGhlbWVQYWludEV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6
V2ViVGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2Vi
Q2FudmFzKiBjYW52YXMgPSBpLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsK
ICAgICBleHRyYVBhcmFtcy5pbm5lclNwaW4uc3BpblVwID0gKGNvbnRyb2xTdGF0ZXNGb3JSZW5k
ZXJlcihvKSAmIFNwaW5VcFN0YXRlKTsKICAgICBleHRyYVBhcmFtcy5pbm5lclNwaW4ucmVhZE9u
bHkgPSBpc1JlYWRPbmx5Q29udHJvbChvKTsKIAotICAgIFBsYXRmb3JtU3VwcG9ydDo6cGFpbnRU
aGVtZVBhcnQoaS5jb250ZXh0LCBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRJbm5lclNwaW5CdXR0b24s
IGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIHJlY3QsICZleHRyYVBhcmFtcyk7CisgICAgV2Vi
S2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5wYWludChjYW52YXMsIFdl
YktpdDo6V2ViVGhlbWVFbmdpbmU6OlBhcnRJbm5lclNwaW5CdXR0b24sIGdldFdlYlRoZW1lU3Rh
dGUodGhpcywgbyksIFdlYktpdDo6V2ViUmVjdChyZWN0KSwgJmV4dHJhUGFyYW1zKTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTM1MCw3ICszNjIsNyBAQCBib29sIFJlbmRlclRoZW1lQ2hy
b21pdW1MaW51eDo6cGFpbnRQcm9nCiAgICAgUmVuZGVyUHJvZ3Jlc3MqIHJlbmRlclByb2dyZXNz
ID0gdG9SZW5kZXJQcm9ncmVzcyhvKTsKICAgICBJbnRSZWN0IHZhbHVlUmVjdCA9IHByb2dyZXNz
VmFsdWVSZWN0Rm9yKHJlbmRlclByb2dyZXNzLCByZWN0KTsKIAotICAgIFBsYXRmb3JtU3VwcG9y
dDo6VGhlbWVQYWludEV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIFdlYktpdDo6V2ViVGhl
bWVFbmdpbmU6OkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOwogICAgIGV4dHJhUGFyYW1zLnByb2dy
ZXNzQmFyLmRldGVybWluYXRlID0gcmVuZGVyUHJvZ3Jlc3MtPmlzRGV0ZXJtaW5hdGUoKTsKICAg
ICBleHRyYVBhcmFtcy5wcm9ncmVzc0Jhci52YWx1ZVJlY3RYID0gdmFsdWVSZWN0LngoKTsKICAg
ICBleHRyYVBhcmFtcy5wcm9ncmVzc0Jhci52YWx1ZVJlY3RZID0gdmFsdWVSZWN0LnkoKTsKQEAg
LTM1OCw3ICszNzAsOCBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRQcm9n
CiAgICAgZXh0cmFQYXJhbXMucHJvZ3Jlc3NCYXIudmFsdWVSZWN0SGVpZ2h0ID0gdmFsdWVSZWN0
LmhlaWdodCgpOwogCiAgICAgRGlyZWN0aW9uRmxpcHBpbmdTY29wZSBzY29wZShvLCBpLCByZWN0
KTsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KGkuY29udGV4dCwgUGxhdGZv
cm1TdXBwb3J0OjpQYXJ0UHJvZ3Jlc3NCYXIsIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIHJl
Y3QsICZleHRyYVBhcmFtcyk7CisgICAgV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcyA9IGkuY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOworICAgIFdlYktpdDo6UGxhdGZvcm06
OmN1cnJlbnQoKS0+dGhlbWVFbmdpbmUoKS0+cGFpbnQoY2FudmFzLCBXZWJLaXQ6OldlYlRoZW1l
RW5naW5lOjpQYXJ0UHJvZ3Jlc3NCYXIsIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktp
dDo6V2ViUmVjdChyZWN0KSwgJmV4dHJhUGFyYW1zKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjk3NzYpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5
IEBACisyMDEyLTA5LTI3ICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbQ2hyb21pdW1dIE1vdmUgVU5JWC1zcGVjaWZpYyB0aGVtZSBmdW5jdGlvbnMgb3V0
IG9mIFBsYXRmb3JtU3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTY1MTYKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisg
ICAgICAgIENhbGwgV2ViVGhlbWVFbmdpbmUgZnVuY3Rpb25zIGFuZCB1c2UgV2ViVGhlbWVFbmdp
bmUgZW51bXMKKyAgICAgICAgZGlyZWN0bHkgZnJvbSB0aGUgbmV3IFBsYXRmb3JtLyBkaXJlY3Rs
eTsgcmVtb3ZlIGFsbAorICAgICAgICBpbnRlcm1lZGlhdGUgZnVuY3Rpb25zIGFuZCBlbnVtcyBh
bmQgY29udmVyc2lvbiBmdW5jdGlvbnMgZnJvbQorICAgICAgICBQbGF0Zm9ybVN1cHBvcnQuCisg
ICAgICAgIFBhcnQgb2YgYSByZWZhY3RvcmluZyBzZXJpZXM7IHNlZSB0cmFja2luZyBidWcgODI5
NDguCisKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorCiAyMDEyLTA5LTI3ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUGFnZSBvdmVybGF5cyBhcmUgbm90IHVwZGF0ZWQgd2hlbiBXZWJWaWV3IGlz
IHJlc2l6ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9y
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1T
dXBwb3J0LmNwcAkocmV2aXNpb24gMTI5Nzc2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ3LDExNCArMzQ3LDYg
QEAgdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50U2Nyb2xsYmFyVGh1bQogICAgICAgICB3ZWJU
aGVtZVNjcm9sbGJhckluZm8pOwogfQogCi0jZWxpZiBPUyhVTklYKQotCi1zdGF0aWMgV2ViVGhl
bWVFbmdpbmU6OlBhcnQgV2ViVGhlbWVQYXJ0KFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYXJ0IHBh
cnQpCi17Ci0gICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBh
cnRTY3JvbGxiYXJEb3duQXJyb3c6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJh
ckRvd25BcnJvdzsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhckxlZnRB
cnJvdzogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyTGVmdEFycm93OwotICAg
IGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyUmlnaHRBcnJvdzogcmV0dXJuIFdl
YlRoZW1lRW5naW5lOjpQYXJ0U2Nyb2xsYmFyUmlnaHRBcnJvdzsKLSAgICBjYXNlIFBsYXRmb3Jt
U3VwcG9ydDo6UGFydFNjcm9sbGJhclVwQXJyb3c6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFy
dFNjcm9sbGJhclVwQXJyb3c7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxi
YXJIb3Jpem9udGFsVGh1bWI6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckhv
cml6b250YWxUaHVtYjsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhclZl
cnRpY2FsVGh1bWI6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclZlcnRpY2Fs
VGh1bWI7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJIb3Jpem9udGFs
VHJhY2s6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckhvcml6b250YWxUcmFj
azsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2s6
IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2s7Ci0gICAg
Y2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRDaGVja2JveDogcmV0dXJuIFdlYlRoZW1lRW5naW5l
OjpQYXJ0Q2hlY2tib3g7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRSYWRpbzogcmV0
dXJuIFdlYlRoZW1lRW5naW5lOjpQYXJ0UmFkaW87Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6
OlBhcnRCdXR0b246IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydEJ1dHRvbjsKLSAgICBjYXNl
IFBsYXRmb3JtU3VwcG9ydDo6UGFydFRleHRGaWVsZDogcmV0dXJuIFdlYlRoZW1lRW5naW5lOjpQ
YXJ0VGV4dEZpZWxkOwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0TWVudUxpc3Q6IHJl
dHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydE1lbnVMaXN0OwotICAgIGNhc2UgUGxhdGZvcm1TdXBw
b3J0OjpQYXJ0U2xpZGVyVHJhY2s6IHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNsaWRlclRy
YWNrOwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2xpZGVyVGh1bWI6IHJldHVybiBX
ZWJUaGVtZUVuZ2luZTo6UGFydFNsaWRlclRodW1iOwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0
OjpQYXJ0SW5uZXJTcGluQnV0dG9uOiByZXR1cm4gV2ViVGhlbWVFbmdpbmU6OlBhcnRJbm5lclNw
aW5CdXR0b247Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRQcm9ncmVzc0JhcjogcmV0
dXJuIFdlYlRoZW1lRW5naW5lOjpQYXJ0UHJvZ3Jlc3NCYXI7Ci0gICAgfQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXZWJUaGVtZUVuZ2luZTo6UGFydFNjcm9sbGJhckRv
d25BcnJvdzsKLX0KLQotc3RhdGljIFdlYlRoZW1lRW5naW5lOjpTdGF0ZSBXZWJUaGVtZVN0YXRl
KFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHN0YXRlKQotewotICAgIHN3aXRjaCAo
c3RhdGUpIHsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVEaXNhYmxlZDogcmV0dXJu
IFdlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkOwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0
OjpTdGF0ZUhvdmVyOiByZXR1cm4gV2ViVGhlbWVFbmdpbmU6OlN0YXRlSG92ZXI7Ci0gICAgY2Fz
ZSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlTm9ybWFsOiByZXR1cm4gV2ViVGhlbWVFbmdpbmU6OlN0
YXRlTm9ybWFsOwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZVByZXNzZWQ6IHJldHVy
biBXZWJUaGVtZUVuZ2luZTo6U3RhdGVQcmVzc2VkOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gV2ViVGhlbWVFbmdpbmU6OlN0YXRlRGlzYWJsZWQ7Ci19Ci0K
LXN0YXRpYyB2b2lkIEdldFdlYlRoZW1lRXh0cmFQYXJhbXMoUGxhdGZvcm1TdXBwb3J0OjpUaGVt
ZVBhcnQgcGFydCwgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc3RhdGUsIGNvbnN0
IFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludEV4dHJhUGFyYW1zKiBleHRyYVBhcmFtcywgV2Vi
VGhlbWVFbmdpbmU6OkV4dHJhUGFyYW1zKiB3ZWJUaGVtZUV4dHJhUGFyYW1zKQotewotICAgIHN3
aXRjaCAocGFydCkgewotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFySG9y
aXpvbnRhbFRyYWNrOgotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyVmVy
dGljYWxUcmFjazoKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+c2Nyb2xsYmFyVHJhY2su
dHJhY2tYID0gZXh0cmFQYXJhbXMtPnNjcm9sbGJhclRyYWNrLnRyYWNrWDsKLSAgICAgICAgd2Vi
VGhlbWVFeHRyYVBhcmFtcy0+c2Nyb2xsYmFyVHJhY2sudHJhY2tZID0gZXh0cmFQYXJhbXMtPnNj
cm9sbGJhclRyYWNrLnRyYWNrWTsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+c2Nyb2xs
YmFyVHJhY2sudHJhY2tXaWR0aCA9IGV4dHJhUGFyYW1zLT5zY3JvbGxiYXJUcmFjay50cmFja1dp
ZHRoOwotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5zY3JvbGxiYXJUcmFjay50cmFja0hl
aWdodCA9IGV4dHJhUGFyYW1zLT5zY3JvbGxiYXJUcmFjay50cmFja0hlaWdodDsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRDaGVja2JveDoKLSAgICAgICAg
d2ViVGhlbWVFeHRyYVBhcmFtcy0+YnV0dG9uLmNoZWNrZWQgPSBleHRyYVBhcmFtcy0+YnV0dG9u
LmNoZWNrZWQ7Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPmJ1dHRvbi5pbmRldGVybWlu
YXRlID0gZXh0cmFQYXJhbXMtPmJ1dHRvbi5pbmRldGVybWluYXRlOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6UGFydFJhZGlvOgotICAgICAgICB3ZWJUaGVtZUV4
dHJhUGFyYW1zLT5idXR0b24uY2hlY2tlZCA9IGV4dHJhUGFyYW1zLT5idXR0b24uY2hlY2tlZDsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRCdXR0b246Ci0g
ICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPmJ1dHRvbi5pc0RlZmF1bHQgPSBleHRyYVBhcmFt
cy0+YnV0dG9uLmlzRGVmYXVsdDsKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+YnV0dG9u
Lmhhc0JvcmRlciA9IGV4dHJhUGFyYW1zLT5idXR0b24uaGFzQm9yZGVyOwotICAgICAgICB3ZWJU
aGVtZUV4dHJhUGFyYW1zLT5idXR0b24uYmFja2dyb3VuZENvbG9yID0gZXh0cmFQYXJhbXMtPmJ1
dHRvbi5iYWNrZ3JvdW5kQ29sb3I7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1T
dXBwb3J0OjpQYXJ0VGV4dEZpZWxkOgotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT50ZXh0
RmllbGQuaXNUZXh0QXJlYSA9IGV4dHJhUGFyYW1zLT50ZXh0RmllbGQuaXNUZXh0QXJlYTsKLSAg
ICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+dGV4dEZpZWxkLmlzTGlzdGJveCA9IGV4dHJhUGFy
YW1zLT50ZXh0RmllbGQuaXNMaXN0Ym94OwotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT50
ZXh0RmllbGQuYmFja2dyb3VuZENvbG9yID0gZXh0cmFQYXJhbXMtPnRleHRGaWVsZC5iYWNrZ3Jv
dW5kQ29sb3I7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0
TWVudUxpc3Q6Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPm1lbnVMaXN0Lmhhc0JvcmRl
ciA9IGV4dHJhUGFyYW1zLT5tZW51TGlzdC5oYXNCb3JkZXI7Ci0gICAgICAgIHdlYlRoZW1lRXh0
cmFQYXJhbXMtPm1lbnVMaXN0Lmhhc0JvcmRlclJhZGl1cyA9IGV4dHJhUGFyYW1zLT5tZW51TGlz
dC5oYXNCb3JkZXJSYWRpdXM7Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPm1lbnVMaXN0
LmFycm93WCA9IGV4dHJhUGFyYW1zLT5tZW51TGlzdC5hcnJvd1g7Ci0gICAgICAgIHdlYlRoZW1l
RXh0cmFQYXJhbXMtPm1lbnVMaXN0LmFycm93WSA9IGV4dHJhUGFyYW1zLT5tZW51TGlzdC5hcnJv
d1k7Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPm1lbnVMaXN0LmJhY2tncm91bmRDb2xv
ciA9IGV4dHJhUGFyYW1zLT5tZW51TGlzdC5iYWNrZ3JvdW5kQ29sb3I7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2xpZGVyVHJhY2s6Ci0gICAgY2FzZSBQ
bGF0Zm9ybVN1cHBvcnQ6OlBhcnRTbGlkZXJUaHVtYjoKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBh
cmFtcy0+c2xpZGVyLnZlcnRpY2FsID0gZXh0cmFQYXJhbXMtPnNsaWRlci52ZXJ0aWNhbDsKLSAg
ICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+c2xpZGVyLmluRHJhZyA9IGV4dHJhUGFyYW1zLT5z
bGlkZXIuaW5EcmFnOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6
UGFydElubmVyU3BpbkJ1dHRvbjoKLSAgICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+aW5uZXJT
cGluLnNwaW5VcCA9IGV4dHJhUGFyYW1zLT5pbm5lclNwaW4uc3BpblVwOwotICAgICAgICB3ZWJU
aGVtZUV4dHJhUGFyYW1zLT5pbm5lclNwaW4ucmVhZE9ubHkgPSBleHRyYVBhcmFtcy0+aW5uZXJT
cGluLnJlYWRPbmx5OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBsYXRmb3JtU3VwcG9ydDo6
UGFydFByb2dyZXNzQmFyOgotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5wcm9ncmVzc0Jh
ci5kZXRlcm1pbmF0ZSA9IGV4dHJhUGFyYW1zLT5wcm9ncmVzc0Jhci5kZXRlcm1pbmF0ZTsKLSAg
ICAgICAgd2ViVGhlbWVFeHRyYVBhcmFtcy0+cHJvZ3Jlc3NCYXIudmFsdWVSZWN0WCA9IGV4dHJh
UGFyYW1zLT5wcm9ncmVzc0Jhci52YWx1ZVJlY3RYOwotICAgICAgICB3ZWJUaGVtZUV4dHJhUGFy
YW1zLT5wcm9ncmVzc0Jhci52YWx1ZVJlY3RZID0gZXh0cmFQYXJhbXMtPnByb2dyZXNzQmFyLnZh
bHVlUmVjdFk7Ci0gICAgICAgIHdlYlRoZW1lRXh0cmFQYXJhbXMtPnByb2dyZXNzQmFyLnZhbHVl
UmVjdFdpZHRoID0gZXh0cmFQYXJhbXMtPnByb2dyZXNzQmFyLnZhbHVlUmVjdFdpZHRoOwotICAg
ICAgICB3ZWJUaGVtZUV4dHJhUGFyYW1zLT5wcm9ncmVzc0Jhci52YWx1ZVJlY3RIZWlnaHQgPSBl
eHRyYVBhcmFtcy0+cHJvZ3Jlc3NCYXIudmFsdWVSZWN0SGVpZ2h0OwotICAgICAgICBicmVhazsK
LSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsgLy8gUGFydHMgdGhhdCBoYXZlIG5vIGV4dHJh
IHBhcmFtcyBnZXQgaGVyZS4KLSAgICB9Ci19Ci0KLUludFNpemUgUGxhdGZvcm1TdXBwb3J0Ojpn
ZXRUaGVtZVBhcnRTaXplKFRoZW1lUGFydCBwYXJ0KQotewotICAgICByZXR1cm4gV2ViS2l0OjpQ
bGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgpLT5nZXRTaXplKFdlYlRoZW1lUGFydChw
YXJ0KSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydCgKLSAgICBH
cmFwaGljc0NvbnRleHQqIGdjLCBUaGVtZVBhcnQgcGFydCwgVGhlbWVQYWludFN0YXRlIHN0YXRl
LCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBUaGVtZVBhaW50RXh0cmFQYXJhbXMqIGV4dHJh
UGFyYW1zKQotewotICAgIFdlYlRoZW1lRW5naW5lOjpFeHRyYVBhcmFtcyB3ZWJUaGVtZUV4dHJh
UGFyYW1zOwotICAgIEdldFdlYlRoZW1lRXh0cmFQYXJhbXMocGFydCwgc3RhdGUsIGV4dHJhUGFy
YW1zLCAmd2ViVGhlbWVFeHRyYVBhcmFtcyk7Ci0gICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVu
dCgpLT50aGVtZUVuZ2luZSgpLT5wYWludCgKLSAgICAgICAgZ2MtPnBsYXRmb3JtQ29udGV4dCgp
LT5jYW52YXMoKSwgV2ViVGhlbWVQYXJ0KHBhcnQpLCBXZWJUaGVtZVN0YXRlKHN0YXRlKSwgcmVj
dCwgJndlYlRoZW1lRXh0cmFQYXJhbXMpOwotfQotCiAjZW5kaWYKIAogLy8gVGhlc2UgYXJlIHRl
bXBvcmFyeSBtZXRob2RzIHRoYXQgdGhlIFdlYktpdCBsYXllciBjYW4gdXNlIHRvIGNhbGwgdG8g
dGhlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>