<?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>230617</bug_id>
          
          <creation_ts>2021-09-22 05:59:04 -0700</creation_ts>
          <short_desc>gl.texImage2D upload of getUserMedia streams via &lt;video&gt; element fails</short_desc>
          <delta_ts>2022-01-29 21:10:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>Other</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230589</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=228821</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>232727</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>connell</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>brianpeiris</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>chris</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joel</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>menard</cc>
    
    <cc>michael</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>rigel</cc>
    
    <cc>sergio</cc>
    
    <cc>simontaylor1</cc>
    
    <cc>tommyw</cc>
    
    <cc>tony</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1796028</commentid>
    <comment_count>0</comment_count>
    <who name="">connell</who>
    <bug_when>2021-09-22 05:59:04 -0700</bug_when>
    <thetext>Uploading a camera stream to a WebGL texture using getUserMedia(...), a &lt;video&gt; element, and gl.texImage2D(...) is failing in Safari on the iOS 15.1 beta 1 release.

It works correctly on the release version of iOS 15.0 and earlier.

I&apos;ve prepared a minimal test case here:
https://clv.zappar.io/3571850569055456732/1.0.0/

The page should show a live camera feed in the canvas after allowing camera permissions. On iOS 15.1 beta 1 no camera feed appears. The source for this test case is entirely within the page itself should you wish to take a look at how it&apos;s implemented.

This is a common flow for web-based augmented reality and image processing applications. We have many sites and customers who rely on this behaviour to work correctly, so this is a major regression and concern for us.

The same issue is also reported in the following bug but I&apos;ve filed this one with a minimal test case and a more specific title in the hopes that it helps surface this significant regression to the right team :-)
https://bugs.webkit.org/show_bug.cgi?id=230589

Let me know if I can help with any questions!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796127</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-22 10:45:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/83407577&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796151</commentid>
    <comment_count>2</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-09-22 11:37:39 -0700</bug_when>
    <thetext>*** Bug 230589 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796153</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-09-22 11:43:48 -0700</bug_when>
    <thetext>It looks like this regressed in Bug 228821.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796436</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Taylor">simontaylor1</who>
    <bug_when>2021-09-23 02:51:38 -0700</bug_when>
    <thetext>Thanks Brett. I see the commit in that bug references it affecting the CPU codepath only - @kkinnunen is this perhaps another case like in 216259 and 215908 where some change has forced these uploads down the CPU path rather than the GPU one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796892</commentid>
    <comment_count>5</comment_count>
      <attachid>439150</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-24 08:39:52 -0700</bug_when>
    <thetext>Created attachment 439150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796905</commentid>
    <comment_count>6</comment_count>
      <attachid>439150</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-09-24 09:03:37 -0700</bug_when>
    <thetext>Comment on attachment 439150
Patch

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

&gt; Source/WebCore/html/HTMLVideoElement.cpp:-318
&gt; -RefPtr&lt;NativeImage&gt; HTMLVideoElement::nativeImageForCurrentTime()
&gt; -{
&gt; -    if (!player())
&gt; -        return nullptr;
&gt; -
&gt; -    return player()-&gt;nativeImageForCurrentTime();
&gt; -}
&gt; -

I would rather not remove this as I think MediaPlayer should be an implementation detail, and I&apos;d like to make it private.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:2559
&gt; +    if (m_lastImage)
&gt; +        return std::nullopt;

You return null if there *is* an image?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796959</commentid>
    <comment_count>7</comment_count>
      <attachid>439150</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-09-24 11:00:19 -0700</bug_when>
    <thetext>Comment on attachment 439150
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:2559
&gt;&gt; +        return std::nullopt;
&gt; 
&gt; You return null if there *is* an image?

Looks like a typo compared to MediaPlayerPrivateMediaStreamAVFObjC - maybe the cause of the widespread test failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796960</commentid>
    <comment_count>8</comment_count>
      <attachid>439150</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-09-24 11:00:28 -0700</bug_when>
    <thetext>Comment on attachment 439150
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:2559
&gt;&gt; +        return std::nullopt;
&gt; 
&gt; You return null if there *is* an image?

Looks like a typo compared to MediaPlayerPrivateMediaStreamAVFObjC - maybe the cause of the widespread test failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796962</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-09-24 11:01:32 -0700</bug_when>
    <thetext>The new accelerated code paths added in this patch look very cool though!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798320</commentid>
    <comment_count>10</comment_count>
    <who name="">connell</who>
    <bug_when>2021-09-29 07:39:51 -0700</bug_when>
    <thetext>Just a note to say that we still see this issue on iOS 15.1 Beta 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798361</commentid>
    <comment_count>11</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-09-29 08:55:59 -0700</bug_when>
    <thetext>(In reply to connell from comment #10)
&gt; Just a note to say that we still see this issue on iOS 15.1 Beta 2.

I believe this will be part of Beta 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798762</commentid>
    <comment_count>12</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-29 22:36:25 -0700</bug_when>
    <thetext>*** Bug 230879 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830523</commentid>
    <comment_count>13</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-13 05:11:59 -0800</bug_when>
    <thetext>Regression was fixed by reverting r280963 (Bug 228821) for iOS 15.2 (rdar://83587220)

This bug still persists in trunk. Repurposing this bug to fix in trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830871</commentid>
    <comment_count>14</comment_count>
      <attachid>449160</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-14 04:22:31 -0800</bug_when>
    <thetext>Created attachment 449160
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830892</commentid>
    <comment_count>15</comment_count>
      <attachid>449160</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-14 06:15:19 -0800</bug_when>
    <thetext>Comment on attachment 449160
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Fix MSE camera to WebGL texture uploads.

s/MSE/MediaStreamTrack/

&gt; Source/WebCore/ChangeLog:12
&gt; +        Turns out MSE does not have these implemented, so currently fall back

It should be easy to add such methods.
We have m_currentVideoSample we can grab for that using a lock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831028</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-14 12:42:29 -0800</bug_when>
    <thetext>Committed r288025 (246051@main): &lt;https://commits.webkit.org/246051@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 449160.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835353</commentid>
    <comment_count>17</comment_count>
    <who name="">rigel</who>
    <bug_when>2022-01-29 21:10:11 -0800</bug_when>
    <thetext>I&apos;m currently seeing this behavior (black screen, no camera feed) on iOS 15.4b1 (iPhone 11) on all 8th Wall and Zappar websites, including the test case listed at the top: https://clv.zappar.io/3571850569055456732/1.0.0/</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439150</attachid>
            <date>2021-09-24 08:39:52 -0700</date>
            <delta_ts>2021-09-24 10:28:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230617-20210924183950.patch</filename>
            <type>text/plain</type>
            <size>53529</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IxNTgxOGY0MjU5NTQ4
NTI4Mjg3OWFjNDhmNGRhYWQ1NjFjNjY4Mi4uZmU2MDBkOWU0MWZhOTkyNDAzODgyMDM0MzFlOWVi
M2M3NDRkYWU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIxLTA5LTI0ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAo
cjI4MDk2Myk6IGdsLnRleEltYWdlMkQgdXBsb2FkIG9mIGdldFVzZXJNZWRpYSBzdHJlYW1zIHZp
YSA8dmlkZW8+IGVsZW1lbnQgZmFpbHMgb24gaU9TIDE1LjEgYmV0YSAxCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA2MTcKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzgzNDA3NTc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIHIyODA5NjMgaW1wbGVtZW50ZWQgdGhlIFNXIHJlYWRiYWNrIHdpdGggdGhl
IGFzc3VtcHRpb24gdGhhdCBhbGwgdmlkZW8gZWxlbWVudCBzb3VyY2VzCisgICAgICAgIHdvdWxk
IGltcGxlbWVudCBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKS4KKyAgICAgICAgVGhlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQyB3b3VsZCBub3QgZG8gc28sIHNvIHRoZSAKKyAgICAgICAgdGV4SW1hZ2UyRCBjYWxscyBm
cm9tIHZpZGVvcyB3aXRoIG1lZGlhIHN0cmVhbXMgYXR0YWNoZWQgd291bGQgbm90IHByb2R1Y2UK
KyAgICAgICAgcmVzdWx0cy4KKyAgICAgICAgCisgICAgICAgIEZpeCB0aGlzIGJ5IGltcGxlbWVu
dGluZyBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgYW5kIHRoZSByZWxhdGVkIAorICAgICAg
ICBwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCkuIFRoaXMgbWVhbnMgdGhhdCB0aGlzIGltcGxl
bWVudHMgdGhlIEdQVSBjb2RlcGF0aAorICAgICAgICBmb3IgbWVkaWEgc3RyZWFtcy4KKworICAg
ICAgICBUaGUgdW5kZXJseWluZyBwaXhlbCBidWZmZXJzIHByb3ZpZGVkIGJ5IHRoZSAgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDCisgICAgICAgIGhhdmUgb3JpZW50YXRpb24s
IHNvIGFkZCB0aGUgdHJhbnNmb3JtIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIAorICAgICAg
ICBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgYW5kIHBpeGVsQnVmZmVyRm9yQ3VycmVudFRp
bWUoKS4KKworICAgICAgICBUZXN0cyB0byBiZSBhZGRlZC4uCisKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0
ZVBhdHRlcm4pOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlk
ZW9GcmFtZVRvSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwaXhlbEJ1ZmZlckZvckN1cnJl
bnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpwaXhlbEJ1ZmZlckZvckN1
cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dHJhbnNmb3JtRm9yQ3VycmVudFNhbXBs
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVi5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdM
RS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmluaXRp
YWxpemVVVkNvbnRleHRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQ1ZBTkdMRTo6Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bmF0aXZlSW1h
Z2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29weVRleHR1cmVGcm9tTWVkaWEpOgorCiAyMDIx
LTA5LTIyICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAg
TWVkaWFTdHJlYW0gY2FudmFzLmNhcHR1cmVTdHJlYW0oKSBmYWlscyBmb3IgV2ViR0wKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggMjk4NDY3Mjg0NzM0MjZmODAzMTJjYjhlZjNmN2MyMGY4ZTk0ZWZkOC4uNDIyN2M3MjBk
YjFhOWZkMDMwYjk2MmI3M2ZmYjkzZTQxNjk5MDY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBA
QAorMjAyMS0wOS0yNCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFJFR1JFU1NJT04gKHIyODA5NjMpOiBnbC50ZXhJbWFnZTJEIHVwbG9hZCBvZiBnZXRV
c2VyTWVkaWEgc3RyZWFtcyB2aWEgPHZpZGVvPiBlbGVtZW50IGZhaWxzIG9uIGlPUyAxNS4xIGJl
dGEgMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMw
NjE3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MzQwNzU3Nz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gcGFzcyB0
cmFuc2Zvcm0gb2YgdGhlIHBpeGVscyBhbG9uZyB3aXRoIHRoZQorICAgICAgICBwaXhlbCBidWZm
ZXJzIGZyb20gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSBhbmQgcGl4ZWxCdWZmZXJGb3JDdXJy
ZW50VGltZQorICAgICAgICBpbiBHUFUgcHJvY2VzcyBvYmplY3RzLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGl4ZWxCdWZmZXJG
b3JDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
VGltZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGl4ZWxC
dWZmZXJGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVT
aGFyZWFibGVCaXRtYXApOgorCiAyMDIxLTA5LTE2ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5l
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHV0aWxpdHkgdG8gY3JlYXRlIENWUGl4ZWxCdWZm
ZXJzIGZyb20gSU9TdXJmYWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKaW5kZXggZGExYzRlZmI0NmZjMDRkNjQxZjBiYzkwMzA3NTdlNzc2MTQ5MGUzOS4uZjdkZjlm
YTBlNTg0YjA4OTc2YzFlODBjYzFlODEzYzZlYjA3OGQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0zMDgsMTQgKzMwOCw2IEBAIGJvb2wgSFRNTFZpZGVv
RWxlbWVudDo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBsYXll
cigpLT5oYXNWaWRlbygpICYmIHBsYXllcigpLT5oYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCk7CiB9
CiAKLVJlZlB0cjxOYXRpdmVJbWFnZT4gSFRNTFZpZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSgpCi17Ci0gICAgaWYgKCFwbGF5ZXIoKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICByZXR1cm4gcGxheWVyKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsK
LX0KLQogRXhjZXB0aW9uT3I8dm9pZD4gSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RW50ZXJGdWxs
c2NyZWVuKCkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCAxMDk5MWYwNWYxNDc0ZWVlNWViMDFlZTc4MzIz
MzkxMjBmNmUzNzJmLi4yODhjNTYzYTY1OTZjNDQwZTc2YjI3NWEzMzUwOWNmYjU4YTM1NTNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNzcsOCArNzcsNiBAQCBw
dWJsaWM6CiAgICAgLy8gVXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAg
ICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
aG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSBjb25zdDsKIAogICAgIFVSTCBwb3N0ZXJJbWFnZVVS
TCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCA0NjU0ZTFkOWQ4N2M1OWQxZWEz
NGQzYmQ3NjA3NmFlZTM1NzgxYzJjLi41MzQ3NDVhZDNkYzFhNjgyNjQwN2I2MDBiZjQwZjhmODRl
YTFlMjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMTY3NywxNyArMTY3NywyMSBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2Uo
SFRNTFZpZGVvRWxlbWVudCYgdmlkZQogICAgIGNoZWNrT3JpZ2luKCZ2aWRlbyk7CiAKICNpZiBV
U0UoQ0cpCi0gICAgaWYgKGF1dG8gaW1hZ2UgPSB2aWRlby5uYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkpIHsKLSAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgRmxvYXRTaXplKHZp
ZGVvLnZpZGVvV2lkdGgoKSwgdmlkZW8udmlkZW9IZWlnaHQoKSksIGRzdFJlY3QsIHNyY1JlY3Qp
OwotCi0gICAgICAgIGlmIChpc0VudGlyZUJhY2tpbmdTdG9yZURpcnR5KCkpCi0gICAgICAgICAg
ICBkaWREcmF3KHN0ZDo6bnVsbG9wdCk7Ci0gICAgICAgIGVsc2UgaWYgKHJlY3RDb250YWluc0Nh
bnZhcyhkc3RSZWN0KSkKLSAgICAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgZGlkRHJhdyhkc3RSZWN0KTsKLQotICAgICAgICByZXR1cm4g
eyB9OworICAgIGlmIChhdXRvIHBsYXllciA9IHZpZGVvLnBsYXllcigpKSB7CisgICAgICAgIGlm
IChhdXRvIGZyYW1lID0gcGxheWVyLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKKyAg
ICAgICAgICAgIGlmIChmcmFtZS0+dHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkgeworICAgICAgICAg
ICAgICAgIGMtPmRyYXdOYXRpdmVJbWFnZShmcmFtZS0+bmF0aXZlSW1hZ2UsIEZsb2F0U2l6ZSh2
aWRlby52aWRlb1dpZHRoKCksIHZpZGVvLnZpZGVvSGVpZ2h0KCkpLCBkc3RSZWN0LCBzcmNSZWN0
KTsKKworICAgICAgICAgICAgICAgIGlmIChpc0VudGlyZUJhY2tpbmdTdG9yZURpcnR5KCkpCisg
ICAgICAgICAgICAgICAgICAgIGRpZERyYXcoc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAg
ICBlbHNlIGlmIChyZWN0Q29udGFpbnNDYW52YXMoZHN0UmVjdCkpCisgICAgICAgICAgICAgICAg
ICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIGRpZERyYXcoZHN0UmVjdCk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAKQEAgLTIwMTgs
OCArMjAyMiwxMiBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogICAgIGJvb2wgb3JpZ2luQ2xl
YW4gPSBjYW52YXNCYXNlKCkub3JpZ2luQ2xlYW4oKTsKIAogI2lmIFVTRShDRykKLSAgICBpZiAo
YXV0byBuYXRpdmVJbWFnZSA9IHZpZGVvRWxlbWVudC5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1l
KCkpCi0gICAgICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJu
OjpjcmVhdGUobmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgcmVwZWF0WCwgcmVwZWF0WSwg
b3JpZ2luQ2xlYW4pIH07CisgICAgaWYgKGF1dG8gcGxheWVyID0gdmlkZW9FbGVtZW50LnBsYXll
cigpKSB7CisgICAgICAgIGlmIChhdXRvIGZyYW1lID0gcGxheWVyLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCkpIHsKKyAgICAgICAgICAgIGlmIChmcmFtZS0+dHJhbnNmb3JtLmlzSWRlbnRp
dHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2Fu
dmFzUGF0dGVybjo6Y3JlYXRlKFdURk1vdmUoZnJhbWUtPm5hdGl2ZUltYWdlKSwgcmVwZWF0WCwg
cmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07CisgICAgICAgIH0KKyAgICB9CiAjZW5kaWYKIAogICAg
IGF1dG8gcmVuZGVyaW5nTW9kZSA9IGRyYXdpbmdDb250ZXh0KCkgPyBkcmF3aW5nQ29udGV4dCgp
LT5yZW5kZXJpbmdNb2RlKCkgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcAppbmRleCAyN2ZhYzI2MDhjMzFkNjQ1N2YyN2E0YzNlOTU4YWRjOGRiMGM0MzUxLi45
YWY3NDRkZjQ0NzgxZmI3MjI2NjM2OTJjNGQ2YmIwNTM5OTZlZjIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cApAQCAtNTkwMCwyMyArNTkwMCwzMSBAQCBSZWZQdHI8SW1hZ2U+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmRyYXdJbWFnZUludG9CdWZmZXIoSW1hZ2UmIGltYWdlLCBpbnQgdwogUmVmUHRy
PEltYWdlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2aWRlb0ZyYW1lVG9JbWFnZShIVE1M
VmlkZW9FbGVtZW50KiB2aWRlbywgQmFja2luZ1N0b3JlQ29weSBiYWNraW5nU3RvcmVDb3B5LCBj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCiB7CiAjaWYgVVNFKEFWRk9VTkRBVElPTikKLSAgICBh
dXRvIG5hdGl2ZUltYWdlID0gdmlkZW8tPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAg
ICBhdXRvIHBsYXllciA9IHZpZGVvLT5wbGF5ZXIoKTsKKyAgICBpZiAoIXBsYXllcikKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byBmcmFtZSA9IHBsYXllci0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpOwogICAgIC8vIEN1cnJlbnRseSB3ZSBtaWdodCBiZSBtaXNzaW5nIGFu
IGltYWdlIGR1ZSB0byBNU0Ugbm90IGJlaW5nIGFibGUgdG8gcHJvdmlkZSB0aGUgZmlyc3QgcmVx
dWVzdGVkIGZyYW1lLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjg5OTcKLSAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgIGlmICghZnJhbWUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIEludFNpemUgaW1hZ2VTaXplID0gbmF0aXZlSW1hZ2Ut
PnNpemUoKTsKKyAgICBJbnRTaXplIGltYWdlU2l6ZSA9IGZyYW1lLT5uYXRpdmVJbWFnZS0+c2l6
ZSgpOwogICAgIGlmIChpbWFnZVNpemUuaXNFbXB0eSgpKSB7CiAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJ2
aWRlbyB2aXNpYmxlIHNpemUgaXMgZW1wdHkiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQotICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QgeyB7IH0sIGltYWdlU2l6ZSB9OwotICAgIElt
YWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IG1fZ2VuZXJhdGVkSW1hZ2VDYWNoZS5pbWFnZUJ1ZmZl
cihpbWFnZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5KTsKKyAgICBJbnRSZWN0IGltYWdl
UmVjdCA9IHsgeyB9LCBpbWFnZVNpemUgfTsKKyAgICAvLyBGSVhNRTogV2h5IGlzIHRoZXJlIGEg
aW52ZXJzZSgpIGhlcmUuCisgICAgSW50UmVjdCBidWZmZXJSZWN0ID0gZnJhbWUtPnRyYW5zZm9y
bS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtIHsgfSkubWFwUmVjdChpbWFnZVJl
Y3QpOworICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IG1fZ2VuZXJhdGVkSW1hZ2VDYWNo
ZS5pbWFnZUJ1ZmZlcihidWZmZXJSZWN0LnNpemUoKSwgQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkp
OwogICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6Ok9VVF9PRl9NRU1PUlksIGZ1bmN0aW9uTmFtZSwgIm91dCBvZiBtZW1v
cnkiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGltYWdlQnVmZmVyLT5j
b250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKCpuYXRpdmVJbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwg
aW1hZ2VSZWN0LCBpbWFnZVJlY3QsIENvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5KTsKKyAgICBhdXRv
JiBjb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC5jb25jYXRDVE0oZnJh
bWUtPnRyYW5zZm9ybSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoZnJhbWUtPm5hdGl2
ZUltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBidWZmZXJSZWN0LCBidWZmZXJSZWN0LCBDb21wb3Np
dGVPcGVyYXRvcjo6Q29weSk7CiAjZWxzZQogICAgIC8vIFRoaXMgaXMgYSBsZWdhY3kgY29kZSBw
YXRoIHRoYXQgcHJvZHVjZXMgaW5jb21wYXRpYmxlIHRleHR1cmUgc2l6ZSB3aGVuIHRoZQogICAg
IC8vIHZpZGVvIHZpc2libGUgc2l6ZSBpcyBkaWZmZXJlbnQgdG8gdGhlIG5hdHVyYWwgc2l6ZS4g
VGhpcyBzaG91bGQgYmUgcmVtb3ZlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDg0N2NhZWRhZjg0ZjJmYjBkMDg5NTNmOGMwMjk4
NzhmMTBiNWIyMzMuLjU0ZjRjNjA1OTk2Y2EwMTBjMzMxODY1YzhhZGRkM2E0ZDNiZTljMDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
QEAgLTEwNDksMTQgKzEwNDksMTQgQEAgYm9vbCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LAogCiAjZWxzZQog
Ci1SZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gTWVkaWFQbGF5ZXI6OnBpeGVsQnVmZmVyRm9y
Q3VycmVudFRpbWUoKQorc3RkOjpvcHRpb25hbDxNZWRpYVBsYXllcjo6UGl4ZWxCdWZmZXJGcmFt
ZT4gTWVkaWFQbGF5ZXI6OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKQogewogICAgIHJldHVy
biBtX3ByaXZhdGUtPnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKTsKIH0KIAogI2VuZGlmCiAK
LVJlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoKQorc3RkOjpvcHRpb25hbDxNZWRpYVBsYXllcjo6TmF0aXZlSW1hZ2VGcmFtZT4gTWVkaWFQ
bGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHJldHVybiBtX3ByaXZh
dGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDRhMWY0MTUzMDU2MTE0NWU2ZjY1
NTZkOTZlNTUxZWY5MzE4MmQyODYuLmMwOTUxNWQyYmRkYjgyOWQyZGUwMjkxNGQ1MjIwZGRjM2Iz
NzdhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQogCisjaW5jbHVkZSAi
QWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUuaCIKICNpbmNs
dWRlICJDb250ZW50VHlwZS5oIgogI2luY2x1ZGUgIkNvb2tpZS5oIgpAQCAtNDYsNiArNDcsNyBA
QAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDxvcHRpb25h
bD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNDY2LDEwICs0NjgsMTcgQEAg
cHVibGljOgogI2lmICFVU0UoQVZGT1VOREFUSU9OKQogICAgIGJvb2wgY29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCB0
ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Rm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBmbGlwWSk7CiAjZWxzZQotICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiBwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCk7Ci0jZW5kaWYKLQotICAgIFJlZlB0cjxOYXRp
dmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOworICAgIHN0cnVjdCBQaXhlbEJ1
ZmZlckZyYW1lIHsKKyAgICAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVm
ZmVyOworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOworICAgIH07CisgICAgc3Rk
OjpvcHRpb25hbDxQaXhlbEJ1ZmZlckZyYW1lPiBwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCk7
CisjZW5kaWYKKyAgICBzdHJ1Y3QgTmF0aXZlSW1hZ2VGcmFtZSB7CisgICAgICAgIFJlZjxOYXRp
dmVJbWFnZT4gbmF0aXZlSW1hZ2U7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07
CisgICAgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPE5hdGl2ZUltYWdlRnJhbWU+IG5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKTsKIAogICAgIHVzaW5nIE1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtT
dGF0ZTsKICAgICBOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDA4
NjQzYTA3NzI2NjI2ZjZjMGJkOTIyYWUxN2YyZjZkOWJjN2Y5ZjYuLjE2M2JhODQ5NDg4MDVhZTIx
MGQyMDE1NmI4N2QyNzg4YTRjZmI2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0xNzQsOSArMTc0LDkgQEAg
cHVibGljOgogI2lmICFVU0UoQVZGT1VOREFUSU9OKQogICAgIHZpcnR1YWwgYm9vbCBjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdM
T2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwg
Ym9vbCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbHNlCi0gICAgdmlydHVhbCBSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSgpIHsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8TWVkaWFQbGF5ZXI6OlBpeGVs
QnVmZmVyRnJhbWU+IHBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KICNlbmRpZgotICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgc3Rk
OjpvcHRpb25hbDxNZWRpYVBsYXllcjo6TmF0aXZlSW1hZ2VGcmFtZT4gbmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSgpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgdmlydHVhbCB2b2lk
IHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
LmgKaW5kZXggNTMyYjU0M2EyMjI5OGI5YzdhM2I2YmRkYzk1OGY0YWVlYjdlMmEyNS4uYmNlZjI4
MTU3OTJhNWFlODY4MWJmODY0NTlhZjM1NTM5ODkzNzRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aApAQCAtMjUzLDExICsyNTMsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIHVwZGF0ZUxhc3RQaXhl
bEJ1ZmZlcigpOwogICAgIGJvb2wgdmlkZW9PdXRwdXRIYXNBdmFpbGFibGVGcmFtZSgpOwogICAg
IHZvaWQgcGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0Jik7Ci0gICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1l
KCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYVBsYXllcjo6UGl4ZWxCdWZmZXJGcmFt
ZT4gcGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8
TWVkaWFQbGF5ZXI6Ok5hdGl2ZUltYWdlRnJhbWU+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KSBmaW5hbDsKICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2Uo
KTsKIAotICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBwaXhlbEJ1ZmZlckZvckN1cnJl
bnRUaW1lKCkgZmluYWw7Ci0KICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAg
ICB2b2lkIGtleUFkZGVkKCkgZmluYWw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNl
c3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNl
c3Npb25DbGllbnQqKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDdjMmRjZmFi
OWM3NGM0OGZjNTViNzA1YmI3N2YzYmFmNjZiMDY5NWQuLmY5MzA0YjVlN2NmNmVhMzVhZWM4MGRh
MzQzMGEyNjZiOWViM2VmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjU0NCwxOSAr
MjU0NCwyMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50
V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYgYwogCiB9CiAKLVJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1
ZmZlckZvckN1cnJlbnRUaW1lKCkKK3N0ZDo6b3B0aW9uYWw8TWVkaWFQbGF5ZXI6OlBpeGVsQnVm
ZmVyRnJhbWU+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBpeGVsQnVmZmVy
Rm9yQ3VycmVudFRpbWUoKQogewogICAgIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpOwogICAgIGlm
ICghbV9sYXN0UGl4ZWxCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0
dXJuIG1fbGFzdFBpeGVsQnVmZmVyOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IHJldHVybiBNZWRpYVBsYXllcjo6UGl4ZWxCdWZmZXJGcmFtZSB7IG1fbGFzdFBpeGVsQnVmZmVy
LCB7IH0gfTsKIH0KIAotUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK3N0ZDo6b3B0aW9uYWw8
TWVkaWFQbGF5ZXI6Ok5hdGl2ZUltYWdlRnJhbWU+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHVwZGF0ZUxhc3RJ
bWFnZShVcGRhdGVUeXBlOjpVcGRhdGVTeW5jaHJvbm91c2x5KTsKLSAgICByZXR1cm4gbV9sYXN0
SW1hZ2U7CisgICAgaWYgKG1fbGFzdEltYWdlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIHJldHVybiBNZWRpYVBsYXllcjo6TmF0aXZlSW1hZ2VGcmFtZSB7ICptX2xhc3RJbWFn
ZSwgeyB9IH07CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
d2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oCmluZGV4IDhkMDI1ZDI2NGM4NGQ3OTc3ZmYzYzQwYTU5MDFmOTZiNGM3ZDc0YWUuLmIz
OGE5NDA5NTQ0NGRlZjAxZjU1NjNmZGM4M2M0Njc5YzQ1NzI5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oCkBAIC0yMTYsMTIgKzIxNiwxMiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBkaWRM
b2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9u
YWw8TWVkaWFQbGF5ZXI6Ok5hdGl2ZUltYWdlRnJhbWU+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoKSBvdmVycmlkZTsKICAgICBib29sIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpOwogICAgIGJv
b2wgdXBkYXRlTGFzdEltYWdlKCk7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAg
IFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCkg
ZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYVBsYXllcjo6UGl4ZWxCdWZmZXJGcmFtZT4g
IHBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKIAogICAgIGJvb2wgc3VwcG9ydHNB
Y2NlbGVyYXRlZFJlbmRlcmluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIC8vIGNhbGxlZCB3aGVu
IHRoZSByZW5kZXJpbmcgc3lzdGVtIGZsaXBzIHRoZSBpbnRvIG9yIG91dCBvZiBhY2NlbGVyYXRl
ZCByZW5kZXJpbmcgbW9kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCAzZjJiYTk0
MzAwZTQ5NDViNGMzMTY0YjlmNWE5NWU5MzJhY2ZmY2RmLi4yNzBmNWJlMzYwNzI4ZTUzY2FhNGM3
ZDY1ZGJkNTBjOWRlNzQyMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC02NDcs
MTAgKzY0NywxMiBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKICAgICByZXR1cm4gbG9hZGluZ1Byb2dyZXNzZWQ7
CiB9CiAKLVJlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK3N0ZDo6b3B0aW9uYWw8TWVkaWFQ
bGF5ZXI6Ok5hdGl2ZUltYWdlRnJhbWU+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAgdXBkYXRlTGFzdEltYWdl
KCk7Ci0gICAgcmV0dXJuIG1fbGFzdEltYWdlOworICAgIGlmICghbV9sYXN0SW1hZ2UpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpOYXRpdmVJ
bWFnZUZyYW1lIHsgKm1fbGFzdEltYWdlLCB7IH0gfTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpCkBAIC03MDks
MTEgKzcxMSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDbwogICAgICAgICByZXR1cm47CiAK
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAg
RmxvYXRSZWN0IGltYWdlUmVjdCB7IEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2UtPnNpemUoKSB9
OwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwg
b3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0IHsgRmxvYXRQ
b2ludDo6emVybygpLCBpbWFnZS0+bmF0aXZlSW1hZ2UtPnNpemUoKSB9OworICAgIGNvbnRleHQu
ZHJhd05hdGl2ZUltYWdlKGltYWdlLT5uYXRpdmVJbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgb3V0
cHV0UmVjdCwgaW1hZ2VSZWN0KTsKIH0KIAotUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50
VGltZSgpCitzdGQ6Om9wdGlvbmFsPE1lZGlhUGxheWVyOjpQaXhlbEJ1ZmZlckZyYW1lPiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRp
bWUoKQogewogICAgIC8vIFdlIGhhdmUgYmVlbiBhc2tlZCB0byBwYWludCBpbnRvIGEgV2ViR0wg
Y2FudmFzLCBzbyB0YWtlIHRoYXQgYXMgYSBzaWduYWwgdG8gY3JlYXRlCiAgICAgLy8gYSBkZWNv
bXByZXNzaW9uIHNlc3Npb24sIGV2ZW4gaWYgdGhhdCBtZWFucyB0aGUgbmF0aXZlIHZpZGVvIGNh
bid0IGFsc28gYmUgZGlzcGxheWVkCkBAIC03MjMsMTIgKzcyNSwxMCBAQCBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwaXhl
bEJ1ZmZlckZvcgogICAgICAgICBhY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpOwog
ICAgIH0KIAotICAgIGlmICh1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSkgewotICAgICAgICBpZiAo
IW1fbGFzdFBpeGVsQnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIG1fbGFzdFBpeGVsQnVmZmVyOworICAgIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZl
cigpOworICAgIGlmICghbV9sYXN0UGl4ZWxCdWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpQaXhlbEJ1ZmZlckZyYW1lIHsgbV9sYXN0
UGl4ZWxCdWZmZXIsIHsgfSB9OwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5oCmluZGV4IDYzZmQ5ZWE5M2Q0N2UyNDcyMDY3MWE0YjZjNWY1ZGRkZjlkY2E4MzUu
LjIxOWExOGZmY2ExMWE0MDk1NDZjOTIyOWRmM2VhMTc5YmFlMWZlYzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5oCkBAIC04MCw2ICs4MCw5IEBAIHB1YmxpYzoKICAgICBjb25zdCB2b2lkKiBs
b2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB2b2lkKj4obV9sb2dJZGVudGlmaWVyKTsgfQogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5u
ZWwoKSBjb25zdCBmaW5hbDsKIAorICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFQbGF5ZXI6Ok5hdGl2
ZUltYWdlRnJhbWU+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPE1lZGlhUGxheWVyOjpQaXhlbEJ1ZmZlckZyYW1lPiBwaXhlbEJ1ZmZlckZvckN1
cnJlbnRUaW1lKCkgZmluYWw7CisKICAgICB1c2luZyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
T2JzZXJ2ZXI6OndlYWtQdHJGYWN0b3J5OwogICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXI6OldlYWtWYWx1ZVR5cGU7CiAKQEAgLTIxOSw2
ICsyMjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGlkZVJvb3RMYXllcigpIGNvbnN0IHsgcmV0
dXJuICghYWN0aXZlVmlkZW9UcmFjaygpIHx8IG1fd2FpdGluZ0ZvckZpcnN0SW1hZ2UpICYmIG1f
ZGlzcGxheU1vZGUgIT0gUGFpbnRJdEJsYWNrOyB9CiAKICAgICBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSogYWN0aXZlVmlkZW9UcmFjaygpIGNvbnN0OworICAgIEFmZmluZVRyYW5zZm9ybSB0cmFu
c2Zvcm1Gb3JDdXJyZW50U2FtcGxlKCk7CiAKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXIgeyBu
dWxscHRyIH07CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV9tZWRpYVN0cmVhbVBy
aXZhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggNWJjNDE4NWY3YzM5NzJlY2Qw
Y2IxNTMyMmU4YTcxYTE4MDY2NzllZC4uZWQ0NjE2NWQ0ZjcyOTg4ZDM3YzljODMwNGE1NjczODc4
NDI2M2NlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtMjI4LDYgKzIyOCw3IEBA
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIEFW
U2FtcGxlQnVmZmVyIE1ldGhvZHMKIAorLy8gUmV0dXJucyB0cmFuc2Zvcm0gbWF0cml4IGZvciB2
aWRlbyB3aGVuIDAuNSwgMC41IGFuY2hvciBwb2ludCBpcyB1c2VkLgogc3RhdGljIGlubGluZSBD
R0FmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KE1lZGlhU2FtcGxlJiBz
YW1wbGUpCiB7CiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyID0gc2FtcGxlLnBs
YXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyOwpAQCAtOTg1LDIyICs5ODYsMjEg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBpZiAobV9kaXNwbGF5TW9kZSA9PSBOb25l
IHx8ICFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9kaXNwbGF5TW9kZSAhPSBQYWludEl0QmxhY2sg
JiYgbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCi0gICAgICAgIHVwZGF0ZUN1cnJlbnRGcmFt
ZUltYWdlKCk7Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29u
dGV4dCk7CiAgICAgaWYgKG1fZGlzcGxheU1vZGUgPT0gUGFpbnRJdEJsYWNrKSB7CiAgICAgICAg
IGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKGRlc3RSZWN0Lndp
ZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpKSksIENvbG9yOjpibGFjayk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKKyAgICB1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpOworCiAgICAgaWYgKCFt
X2ltYWdlUGFpbnRlci5jZ0ltYWdlIHx8ICFtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKICAg
ICAgICAgcmV0dXJuOwotCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGNvbnRleHQpOwogICAgIGF1dG8mIGltYWdlID0gbV9pbWFnZVBhaW50ZXIuY2dJbWFnZTsKICAg
ICBGbG9hdFJlY3QgaW1hZ2VSZWN0IHsgRmxvYXRQb2ludDo6emVybygpLCBpbWFnZS0+c2l6ZSgp
IH07CiAgICAgaWYgKCFtX3ZpZGVvVHJhbnNmb3JtKQogICAgICAgICBtX3ZpZGVvVHJhbnNmb3Jt
ID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUp
OworICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhlcmUgYSBpbnZlcnNlKCkgaGVyZT8KICAgICBBZmZp
bmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSAqbV92aWRlb1RyYW5zZm9ybTsKICAgICBGbG9h
dFJlY3QgdHJhbnNmb3JtZWREZXN0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS52YWx1
ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChkZXN0UmVjdCk7CiAgICAgY29udGV4dC5j
b25jYXRDVE0odmlkZW9UcmFuc2Zvcm0pOwpAQCAtMTA4OCw2ICsxMDg4LDUxIEBAIFdURkxvZ0No
YW5uZWwmIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6bG9nQ2hhbm5lbCgp
IGNvbnN0CiAgICAgcmV0dXJuIExvZ01lZGlhOwogfQogCitzdGQ6Om9wdGlvbmFsPE1lZGlhUGxh
eWVyOjpOYXRpdmVJbWFnZUZyYW1lPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQoreworICAgIGlmIChtX2Rpc3BsYXlNb2Rl
ID09IE5vbmUgfHwgIW1ldGFEYXRhQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgLy8gRklYTUU6IEZvciBhY2NlbGVyYXRlZCBvcGVyYXRpb24sIHdlIGNvdWxk
IHJldHVybiBhIGJsYWNrIHBpeGVsIGhlcmUuCisgICAgaWYgKG1fZGlzcGxheU1vZGUgPT0gUGFp
bnRJdEJsYWNrKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHVwZGF0ZUN1cnJl
bnRGcmFtZUltYWdlKCk7CisgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5jZ0ltYWdlIHx8ICFtX2lt
YWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok5hdGl2ZUltYWdlRnJhbWUgeyAqbV9pbWFnZVBhaW50ZXIu
Y2dJbWFnZSwgdHJhbnNmb3JtRm9yQ3VycmVudFNhbXBsZSgpIH07Cit9CisKK3N0ZDo6b3B0aW9u
YWw8TWVkaWFQbGF5ZXI6OlBpeGVsQnVmZmVyRnJhbWU+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSgpCit7CisgICAgaWYgKG1f
ZGlzcGxheU1vZGUgPT0gTm9uZSB8fCAhbWV0YURhdGFBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAvLyBGSVhNRTogRm9yIGFjY2VsZXJhdGVkIG9wZXJhdGlv
biwgd2UgY291bGQgcmV0dXJuIGEgYmxhY2sgcGl4ZWwgaGVyZS4KKyAgICBpZiAobV9kaXNwbGF5
TW9kZSA9PSBQYWludEl0QmxhY2spCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
aWYgKCFtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICBSZXRhaW5QdHIgcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVm
ZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9pbWFnZVBhaW50ZXIu
bWVkaWFTYW1wbGUtPnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyKSk7Cisg
ICAgaWYgKCFwaXhlbEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OlBpeGVsQnVmZmVyRnJhbWUgeyBXVEZNb3ZlKHBpeGVsQnVmZmVy
KSwgdHJhbnNmb3JtRm9yQ3VycmVudFNhbXBsZSgpIH07Cit9CisKK0FmZmluZVRyYW5zZm9ybSBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnRyYW5zZm9ybUZvckN1cnJlbnRT
YW1wbGUoKQoreworICAgIEFTU0VSVChtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSk7CisgICAg
Ly8gRklYTUU6IHdoeSBpcyB0aGlzIHJlc2V0IHRoaXMgd2F5IGR1cmluZyBlbnF1ZXVlLCBhbmQg
bm90IGp1c3Qgb2J0YWluZWQgcGVyCisgICAgLy8gc2FtcGxlPworICAgIGlmICghbV92aWRlb1Ry
YW5zZm9ybSkKKyAgICAgICAgbV92aWRlb1RyYW5zZm9ybSA9IHZpZGVvVHJhbnNmb3JtYXRpb25N
YXRyaXgoKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKTsKKyAgICBpZiAoYXV0byB0cmFuc2Zv
cm0gPSBBZmZpbmVUcmFuc2Zvcm0oKm1fdmlkZW9UcmFuc2Zvcm0pLmludmVyc2UoKSkgeworICAg
ICAgICBBZmZpbmVUcmFuc2Zvcm0gcmVzdWx0OworICAgICAgICByZXN1bHQudHJhbnNsYXRlKDAu
NSwgMC41KTsKKyAgICAgICAgcmVzdWx0Lm11bHRpcGx5KCptX3ZpZGVvVHJhbnNmb3JtKTsKKyAg
ICAgICAgcmVzdWx0LnRyYW5zbGF0ZSgtMC41LCAtMC41KTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisgICAgcmV0dXJuIHsgfTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1Yu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdM
Q1YuaAppbmRleCAxZDYxNWE3ZjBlZjExMzIzMjY4MDJlNTY0YTlhZDUyNTI3ZTAzMDY3Li4yODRk
ZTliNjdlMjFlNmI1MDMwN2M4ZTE1OWJhMGU4NDdmMzk1Nzg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVi5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShBVkZPVU5EQVRJ
T04pCiAKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHRHTC5oIgogCiB0eXBlZGVmIHN0cnVjdCBfX0NWQnVmZmVyKiBDVlBpeGVsQnVmZmVyUmVm
OwpAQCAtMzksOSArNDAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0
R0xDVigpID0gZGVmYXVsdDsKIAogICAgIHVzaW5nIEZsaXBZID0gR3JhcGhpY3NDb250ZXh0R0w6
OkZsaXBZOwotICAgIC8vIENvcGllcyBDViBwaXhlbCBidWZmZXIgdG8gR3JhcGhpY3NDb250ZXh0
R0wgVEVYVFVSRV8yRCB0ZXh0dXJlIG9mIHRoZSBzYW1lIHNpemUgYXMgdGhlIHBpeGVsIGJ1ZmZl
ci4KKyAgICAvLyBDb3BpZXMgQ1YgcGl4ZWwgYnVmZmVyIHRvIEdyYXBoaWNzQ29udGV4dEdMIFRF
WFRVUkVfMkQgdGV4dHVyZSBvZiB0aGUgc2FtZSBzaXplIGFzIHRoZSBwaXhlbCBidWZmZXIgd2l0
aCB0aGUgdHJhbnNmb3JtIGFwcGxpZWQuCiAgICAgLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3Mu
Ci0gICAgdmlydHVhbCBib29sIGNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShDVlBpeGVsQnVmZmVy
UmVmLCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEZsaXBZ
KSA9IDA7CisgICAgdmlydHVhbCBib29sIGNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShDVlBpeGVs
QnVmZmVyUmVmLCBBZmZpbmVUcmFuc2Zvcm0sIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVy
ZSwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgRmxpcFkpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRH
TENWQU5HTEUuY3BwCmluZGV4IDc4MDFiZTQ5NjAxNGYzNDczZDQ0NTI1ZTQ0ODE1MjY0MjhhYTZk
ZDkuLjk4MjJlYjMyODRkMzU5ZDI1M2NkOWE4MmQ1NDQ5N2VhMTg5Mzg2MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZB
TkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhp
Y3NDb250ZXh0R0xDVkFOR0xFLmNwcApAQCAtNDYsMTMgKzQ2LDE0IEBAIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBzX3l1dlZlcnRleFNoYWRlclRleHR1cmUyRCB7CiAgICAgImF0dHJpYnV0ZSB2ZWMy
IGFfcG9zaXRpb247IgogICAgICJ1bmlmb3JtIHZlYzIgdV95VGV4dHVyZVNpemU7IgogICAgICJ1
bmlmb3JtIHZlYzIgdV91dlRleHR1cmVTaXplOyIKKyAgICAidW5pZm9ybSBtYXQzIHVfdHJhbnNm
b3JtOyIKICAgICAidW5pZm9ybSBpbnQgdV9mbGlwWTsiCiAgICAgInZhcnlpbmcgdmVjMiB2X3lU
ZXh0dXJlQ29vcmRpbmF0ZTsiCiAgICAgInZhcnlpbmcgdmVjMiB2X3V2VGV4dHVyZUNvb3JkaW5h
dGU7IgogICAgICJ2b2lkIG1haW4oKSIKICAgICAieyIKICAgICAiICAgIGdsX1Bvc2l0aW9uID0g
dmVjNChhX3Bvc2l0aW9uLCAwLCAxLjApOyIKLSAgICAiICAgIHZlYzIgbm9ybWFsaXplZFBvc2l0
aW9uID0gYV9wb3NpdGlvbiAqIC41ICsgLjU7IgorICAgICIgICAgdmVjMiBub3JtYWxpemVkUG9z
aXRpb24gPSAodV90cmFuc2Zvcm0gKiB2ZWMzKGFfcG9zaXRpb24gKiAuNSArIC41LCAxLjApKS54
eTsiCiAgICAgIiAgICBpZiAodV9mbGlwWSA9PSAxKSIKICAgICAiICAgICAgICBub3JtYWxpemVk
UG9zaXRpb24ueSA9IDEuMCAtIG5vcm1hbGl6ZWRQb3NpdGlvbi55OyIKICAgICAiICAgIHZfeVRl
eHR1cmVDb29yZGluYXRlID0gbm9ybWFsaXplZFBvc2l0aW9uOyIKQEAgLTY0LDEzICs2NSwxNCBA
QCBzdGF0aWMgY29uc3RleHByIGF1dG8gc195dXZWZXJ0ZXhTaGFkZXJUZXh0dXJlUmVjdGFuZ2xl
IHsKICAgICAiYXR0cmlidXRlIHZlYzIgYV9wb3NpdGlvbjsiCiAgICAgInVuaWZvcm0gdmVjMiB1
X3lUZXh0dXJlU2l6ZTsiCiAgICAgInVuaWZvcm0gdmVjMiB1X3V2VGV4dHVyZVNpemU7IgorICAg
ICJ1bmlmb3JtIG1hdDMgdV90cmFuc2Zvcm07IgogICAgICJ1bmlmb3JtIGludCB1X2ZsaXBZOyIK
ICAgICAidmFyeWluZyB2ZWMyIHZfeVRleHR1cmVDb29yZGluYXRlOyIKICAgICAidmFyeWluZyB2
ZWMyIHZfdXZUZXh0dXJlQ29vcmRpbmF0ZTsiCiAgICAgInZvaWQgbWFpbigpIgogICAgICJ7Igog
ICAgICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFfcG9zaXRpb24sIDAsIDEuMCk7IgotICAgICIg
ICAgdmVjMiBub3JtYWxpemVkUG9zaXRpb24gPSBhX3Bvc2l0aW9uICogLjUgKyAuNTsiCisgICAg
IiAgICB2ZWMyIG5vcm1hbGl6ZWRQb3NpdGlvbiA9ICh1X3RyYW5zZm9ybSAqIHZlYzMoYV9wb3Np
dGlvbiAqIC41ICsgLjUsIDEuMCkpLnh5OyIKICAgICAiICAgIGlmICh1X2ZsaXBZID09IDEpIgog
ICAgICIgICAgICAgIG5vcm1hbGl6ZWRQb3NpdGlvbi55ID0gMS4wIC0gbm9ybWFsaXplZFBvc2l0
aW9uLnk7IgogICAgICIgICAgdl95VGV4dHVyZUNvb3JkaW5hdGUgPSBub3JtYWxpemVkUG9zaXRp
b24gKiB1X3lUZXh0dXJlU2l6ZTsiCkBAIC01MjMsNiArNTI1LDcgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkKICAgICBtX3lUZXh0
dXJlVW5pZm9ybUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV95dXZQ
cm9ncmFtLCAidV95VGV4dHVyZSJfcyk7CiAgICAgbV91dlRleHR1cmVVbmlmb3JtTG9jYXRpb24g
PSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3l1dlByb2dyYW0sICJ1X3V2VGV4dHVy
ZSJfcyk7CiAgICAgbV9jb2xvck1hdHJpeFVuaWZvcm1Mb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0
VW5pZm9ybUxvY2F0aW9uKG1feXV2UHJvZ3JhbSwgInVfY29sb3JNYXRyaXgiX3MpOworICAgIG1f
dHJhbnNmb3JtVW5pZm9ybUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24o
bV95dXZQcm9ncmFtLCAidV90cmFuc2Zvcm0iX3MpOwogICAgIG1feXV2RmxpcFlVbmlmb3JtTG9j
YXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3l1dlByb2dyYW0sICJ1X2Zs
aXBZIl9zKTsKICAgICBtX3lUZXh0dXJlU2l6ZVVuaWZvcm1Mb2NhdGlvbiA9IG1fY29udGV4dC0+
Z2V0VW5pZm9ybUxvY2F0aW9uKG1feXV2UHJvZ3JhbSwgInVfeVRleHR1cmVTaXplIl9zKTsKICAg
ICBtX3V2VGV4dHVyZVNpemVVbmlmb3JtTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1M
b2NhdGlvbihtX3l1dlByb2dyYW0sICJ1X3V2VGV4dHVyZVNpemUiX3MpOwpAQCAtNTkxLDcgKzU5
NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpkZXRhY2hJT1N1cmZhY2VGcm9t
VGV4dHVyZSh2b2lkKiBoYW5kbGUpCiAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKGRpc3BsYXksIGhh
bmRsZSk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZm
ZXJUb1RleHR1cmUoQ1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZSwgUGxhdGZvcm1HTE9iamVjdCBvdXRw
dXRUZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBGbGlwWSBmbGlwWSkKK2Jvb2wgR3JhcGhpY3NDb250
ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUoQ1ZQaXhlbEJ1ZmZlclJlZiBp
bWFnZSwgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRU
ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBGbGlwWSBmbGlwWSkKIHsKICAgICAvLyBGSVhNRTogVGhp
cyBjdXJyZW50bHkgb25seSBzdXBwb3J0cyAnNDIwdicgYW5kICc0MjBmJyBwaXhlbCBmb3JtYXRz
LiBJbnZlc3RpZ2F0ZSBzdXBwb3J0aW5nIG1vcmUgcGl4ZWwgZm9ybWF0cy4KICAgICBPU1R5cGUg
cGl4ZWxGb3JtYXQgPSBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKGltYWdlKTsKQEAg
LTYwOCw3ICs2MTEsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6Y29weVBpeGVs
QnVmZmVyVG9UZXh0dXJlKENWUGl4ZWxCdWZmZXJSZWYgaW1hZ2UsCiAgICAgSU9TdXJmYWNlUmVm
IHN1cmZhY2UgPSBDVlBpeGVsQnVmZmVyR2V0SU9TdXJmYWNlKGltYWdlKTsKICAgICBpZiAoIXN1
cmZhY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLQorICAgIHRyYW5zZm9ybSA9ICp0cmFuc2Zv
cm0uaW52ZXJzZSgpOwogICAgIGF1dG8gbmV3U3VyZmFjZVNlZWQgPSBJT1N1cmZhY2VHZXRTZWVk
KHN1cmZhY2UpOwogICAgIGlmIChmbGlwWSA9PSBtX2xhc3RGbGlwWQogICAgICAgICAmJiBzdXJm
YWNlID09IG1fbGFzdFN1cmZhY2UgCkBAIC02MTgsMTUgKzYyMSwxNyBAQCBib29sIEdyYXBoaWNz
Q29udGV4dEdMQ1ZBTkdMRTo6Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKENWUGl4ZWxCdWZmZXJS
ZWYgaW1hZ2UsCiAgICAgICAgIC8vIGltYWdlIGhhc24ndCBiZWVuIG1vZGlmaWVkIHNpbmNlIHRo
ZSBsYXN0IHRpbWUgaXQgd2FzIGNvcGllZCwgdGhpcyBpcyBhIG5vLW9wLgogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9Ci0KICAgICBpZiAoIW1feXV2UHJvZ3JhbSkgewogICAgICAgICBpZiAo
IWluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkpIHsKICAgICAgICAgICAgIExPRyhXZWJHTCwg
IkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0
dXJlKCVwKSAtIFVuYWJsZSB0byBpbml0aWFsaXplIE9wZW5HTCBjb250ZXh0IG9iamVjdHMuIiwg
dGhpcyk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9Ci0gICAg
c2l6ZV90IHdpZHRoID0gQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoKGltYWdlKTsKLSAgICBzaXplX3Qg
aGVpZ2h0ID0gQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChpbWFnZSk7CisgICAgSW50UmVjdCBpbWFn
ZVJlY3QgeyB7IH0sIHsgc3RhdGljX2Nhc3Q8aW50PihDVlBpeGVsQnVmZmVyR2V0V2lkdGgoaW1h
Z2UpKSwgc3RhdGljX2Nhc3Q8aW50PihDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KGltYWdlKSkgfSB9
OworICAgIGF1dG8gb3V0cHV0UmVjdCA9IHRyYW5zZm9ybS5tYXBSZWN0KGltYWdlUmVjdCk7CisK
KyAgICBzaXplX3Qgd2lkdGggPSBvdXRwdXRSZWN0LndpZHRoKCk7CisgICAgc2l6ZV90IGhlaWdo
dCA9IG91dHB1dFJlY3QuaGVpZ2h0KCk7CiAKICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIG1fZnJhbWVidWZmZXIpOwogCkBAIC03
MDQsNiArNzA5LDE4IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxC
dWZmZXJUb1RleHR1cmUoQ1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZSwKICAgICBhdXRvIHRyYW5zZmVy
RnVuY3Rpb24gPSB0cmFuc2ZlckZ1bmN0aW9uRnJvbVN0cmluZyhkeW5hbWljX2NmX2Nhc3Q8Q0ZT
dHJpbmdSZWY+KENWQnVmZmVyR2V0QXR0YWNobWVudChpbWFnZSwga0NWSW1hZ2VCdWZmZXJZQ2JD
ck1hdHJpeEtleSwgbmlsKSkpOwogICAgIGF1dG8gY29sb3JNYXRyaXggPSBZQ2JDclRvUkdCTWF0
cml4Rm9yUmFuZ2VBbmRUcmFuc2ZlckZ1bmN0aW9uKHJhbmdlLCB0cmFuc2ZlckZ1bmN0aW9uKTsK
ICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobV9jb2xvck1hdHJpeFVuaWZvcm1Mb2Nh
dGlvbiwgR0xfRkFMU0UsIGNvbG9yTWF0cml4KTsKKyAgICBHTGZsb2F0IHRyYW5zZm9ybU1hdHJp
eFtdID0geworICAgICAgICBzdGF0aWNfY2FzdDxHTGZsb2F0Pih0cmFuc2Zvcm0uYSgpKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8R0xmbG9hdD4odHJhbnNmb3JtLmIoKSksCisgICAgICAgIDAuZiwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8R0xmbG9hdD4odHJhbnNmb3JtLmMoKSksCisgICAgICAgIHN0
YXRpY19jYXN0PEdMZmxvYXQ+KHRyYW5zZm9ybS5kKCkpLAorICAgICAgICAwLmYsCisgICAgICAg
IHN0YXRpY19jYXN0PEdMZmxvYXQ+KHRyYW5zZm9ybS5lKCkpLAorICAgICAgICBzdGF0aWNfY2Fz
dDxHTGZsb2F0Pih0cmFuc2Zvcm0uZigpKSwKKyAgICAgICAgMS5mCisgICAgfTsKKyAgICBtX2Nv
bnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobV90cmFuc2Zvcm1Vbmlmb3JtTG9jYXRpb24sIEdMX0ZB
TFNFLCB0cmFuc2Zvcm1NYXRyaXgpOwogCiAgICAgLy8gRG8gdGhlIGFjdHVhbCBkcmF3aW5nLgog
ICAgIG1fY29udGV4dC0+ZHJhd0FycmF5cyhHcmFwaGljc0NvbnRleHRHTDo6VFJJQU5HTEVTLCAw
LCA2KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dy
YXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmgKaW5kZXggNWJjYTJhYWJkMTVlNTcwOTVi
OWY0YTc1YzQ2ZDdlNzBmYWU2NmVhOC4uMWE4ZGI4YTg0Y2Y3Yzc0MjE4MzQzZTU0MDY5MzM0OTYw
M2ZkNGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmgKQEAgLTQxLDcgKzQxLDcgQEAg
cHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRShHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCYpOwogICAgIH5HcmFwaGljc0NvbnRleHRHTENWQU5HTEUoKSBmaW5hbDsKIAotICAgIGJv
b2wgY29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKENWUGl4ZWxCdWZmZXJSZWYsIFBsYXRmb3JtR0xP
YmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgRmxpcFkpIGZpbmFsOworICAgIGJv
b2wgY29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKENWUGl4ZWxCdWZmZXJSZWYsIEFmZmluZVRyYW5z
Zm9ybSwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBGbGlw
WSkgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpbml0aWFsaXplVVZDb250ZXh0T2JqZWN0
cygpOwpAQCAtNjUsNiArNjUsNyBAQCBwcml2YXRlOgogICAgIEdDR0xpbnQgbV91dlRleHR1cmVV
bmlmb3JtTG9jYXRpb24geyAtMSB9OwogICAgIEdDR0xpbnQgbV95dXZGbGlwWVVuaWZvcm1Mb2Nh
dGlvbiB7IC0xIH07CiAgICAgR0NHTGludCBtX2NvbG9yTWF0cml4VW5pZm9ybUxvY2F0aW9uIHsg
LTEgfTsKKyAgICBHQ0dMaW50IG1fdHJhbnNmb3JtVW5pZm9ybUxvY2F0aW9uIHsgLTEgfTsKICAg
ICBHQ0dMaW50IG1feXV2UG9zaXRpb25BdHRyaWJ1dGVMb2NhdGlvbiB7IC0xIH07CiAgICAgR0NH
TGludCBtX3lUZXh0dXJlU2l6ZVVuaWZvcm1Mb2NhdGlvbiB7IC0xIH07CiAgICAgR0NHTGludCBt
X3V2VGV4dHVyZVNpemVVbmlmb3JtTG9jYXRpb24geyAtMSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBjNDVkMDNjNTExYTlkMWM1NTg3
M2NjNGRmYjQwZTk0NjYwOGJmNmQwLi41N2YxNmYzMTM0NzBlMjM0MDk4ZmE4NGMzZjhiY2UyODAz
MmZkNzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcApAQCAtMzI5Myw5ICszMjkzLDkgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnQKICAgICBy
ZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4
dHVyZSgqbGF5ZXJCdWZmZXIuZ2V0KCksIHNpemUsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdl
dCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIGZsaXBZLCBtX3ZpZGVvU291
cmNlT3JpZW50YXRpb24sIHByZW11bHRpcGx5QWxwaGEpOwogfQogCi1SZWZQdHI8TmF0aXZlSW1h
Z2U+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSgpCitzdGQ6Om9wdGlvbmFsPE1lZGlhUGxheWVyOjpOYXRpdmVJbWFnZUZyYW1lPiBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewotICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAjZW5kaWYgLy8g
VVNFKEdTVFJFQU1FUl9HTCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oCmluZGV4IDM0MmU5MjE1M2NlZDJjYWNhMDEwMzQwYTFjZjk3ZTYwYjk2NTZiY2Qu
LjExYTQ1NjNlNjhhZDBlNzM1NWQzNmIyZmFlYTc3ZGI1MWVmNTdjYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTIwOSw3ICsyMDksNyBAQCBw
dWJsaWM6CiAKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQogICAgIGJvb2wgY29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwg
R0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJv
b2wpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFQbGF5ZXI6Ok5hdGl2
ZUltYWdlRnJhbWU+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsKICNlbmRp
ZgogCiAgICAgdm9pZCB1cGRhdGVFbmFibGVkVmlkZW9UcmFjaygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggMTEyYTZmZDFjOThiZmRiNDEyNTI2N2JjOGM1M2Yz
ZWQzYWEwYWFmYi4uMDJjMzNlOTk0ZWEzOTU1ODM1MWJjMTEwYmJmNjRiODM5NTkzNjZlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0xOTgsOCArMTk4LDkgQEAg
c3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRD
b21wb3NpdGVkUmVzdWx0cygpCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5VGV4
dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYgcGxheWVyLCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1
dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBib29sIGZsaXBZKQogewogI2lmIFVTRShBVkZPVU5EQVRJT04pCi0gICAg
YXV0byBwaXhlbEJ1ZmZlciA9IHBsYXllci5waXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCk7Ci0g
ICAgaWYgKCFwaXhlbEJ1ZmZlcikKKyAgICBhdXRvIGZyYW1lID0gcGxheWVyLnBpeGVsQnVmZmVy
Rm9yQ3VycmVudFRpbWUoKTsKKworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGF1dG8gY29udGV4dENWID0gYXNDVigpOwpAQCAtMjA4LDcgKzIwOSw3IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxh
eWVyJiBwbGF5ZXIsIFBsYXRmb3JtCiAKICAgICBVTlVTRURfVkFSSUFCTEUocHJlbXVsdGlwbHlB
bHBoYSk7CiAgICAgQVNTRVJUX1VOVVNFRChvdXRwdXRUYXJnZXQsIG91dHB1dFRhcmdldCA9PSBH
cmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCk7Ci0gICAgcmV0dXJuIGNvbnRleHRDVi0+Y29w
eVBpeGVsQnVmZmVyVG9UZXh0dXJlKHBpeGVsQnVmZmVyLmdldCgpLCBvdXRwdXRUZXh0dXJlLCBs
ZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgR3JhcGhpY3NDb250ZXh0R0w6OkZs
aXBZKGZsaXBZKSk7CisgICAgcmV0dXJuIGNvbnRleHRDVi0+Y29weVBpeGVsQnVmZmVyVG9UZXh0
dXJlKGZyYW1lLT5waXhlbEJ1ZmZlci5nZXQoKSwgZnJhbWUtPnRyYW5zZm9ybSwgb3V0cHV0VGV4
dHVyZSwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIEdyYXBoaWNzQ29udGV4
dEdMOjpGbGlwWShmbGlwWSkpOwogI2Vsc2UKICAgICByZXR1cm4gcGxheWVyLmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh0aGlzLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQs
IGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBm
bGlwWSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IGYyYTVlMDJkM2M3
NzAwYjc5Y2Y3ZDMxZTAzNjliZWEzMzM1NjdiM2QuLjM2YzA3M2EwMmM2Mjk5OGJhZDQ3YTlkZWM1
YmM1ZDYwM2MxOGY1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtMjQ0LDE4ICsy
NDQsMTggQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y29weVRleHR1cmVGcm9tTWVk
aWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWUKICAgICBVTlVTRURfVkFSSUFCTEUocHJl
bXVsdGlwbHlBbHBoYSk7CiAgICAgQVNTRVJUX1VOVVNFRCh0YXJnZXQsIHRhcmdldCA9PSBHcmFw
aGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCk7CiAKLSAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4gcGl4ZWxCdWZmZXI7CisgICAgc3RkOjpvcHRpb25hbDxNZWRpYVBsYXllcjo6UGl4ZWxC
dWZmZXJGcmFtZT4gZnJhbWU7CiAgICAgYXV0byBnZXRQaXhlbEJ1ZmZlciA9IFsmXSB7CiAgICAg
ICAgIGlmICghbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGlmIChhdXRvIG1lZGlhUGxheWVyID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLT5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxheWVyKG1lZGlh
UGxheWVySWRlbnRpZmllcikpCi0gICAgICAgICAgICBwaXhlbEJ1ZmZlciA9IG1lZGlhUGxheWVy
LT5waXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCk7CisgICAgICAgICAgICBmcmFtZSA9IG1lZGlh
UGxheWVyLT5waXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCk7CiAgICAgfTsKIAogICAgIGNhbGxP
bk1haW5SdW5Mb29wQW5kV2FpdChXVEZNb3ZlKGdldFBpeGVsQnVmZmVyKSk7CiAKLSAgICBpZiAo
IXBpeGVsQnVmZmVyKSB7CisgICAgaWYgKCFmcmFtZSkgewogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNjYsNyArMjY2LDcgQEAg
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNv
bXBsZXRpb25IYW5kbGVyKGNvbnRleHRDVi0+Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKHBpeGVs
QnVmZmVyLmdldCgpLCB0ZXh0dXJlLCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlw
ZSwgR3JhcGhpY3NDb250ZXh0R0w6OkZsaXBZKGZsaXBZKSkpOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKGNvbnRleHRDVi0+Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKGZyYW1lLT5waXhlbEJ1ZmZl
ci5nZXQoKSwgZnJhbWUtPnRyYW5zZm9ybSwgdGV4dHVyZSwgbGV2ZWwsIGludGVybmFsRm9ybWF0
LCBmb3JtYXQsIHR5cGUsIEdyYXBoaWNzQ29udGV4dEdMOjpGbGlwWShmbGlwWSkpKTsKICNlbHNl
CiAgICAgVU5VU0VEX1ZBUklBQkxFKG1lZGlhUGxheWVySWRlbnRpZmllcik7CiAgICAgVU5VU0VE
X1ZBUklBQkxFKHRleHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggNjdmN2YyYTJkZWMwZDJlOTAx
YjJmYWNiMDRlMTMxMjRiOTY5OWQ3My4uYjEzMWY1Nzc5NDE2ZTAzZmZiZmQ2YWE1ZmQ3YjQ1ODk3
MjY5Yzg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC0zMDgsMTAgKzMwOCwxMCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY3VycmVudFRpbWVDaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpOwogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgdm9pZCBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYpPiYmKTsK
KyAgICB2b2lkIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJiwgV2ViQ29yZTo6QWZmaW5lVHJh
bnNmb3JtJiYpPiYmKTsKICNlbmRpZgogI2lmIFVTRShBVkZPVU5EQVRJT04pCi0gICAgdm9pZCBw
aXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmV0YWluUHRy
PENWUGl4ZWxCdWZmZXJSZWY+JiYpPiYmKTsKKyAgICB2b2lkIHBpeGVsQnVmZmVyRm9yQ3VycmVu
dFRpbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4m
JiwgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiYpPiYmKTsKICNlbmRpZgogCiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDIy
YzNiMTczMTM2ZGZkOWNkMzdjZDM4OGE2NWFjM2ZjNDYxMDU1YjcuLjkwZGU1ZDFmYWFjZjhiZDQ2
NjI0MDM5MDdhOTY3YWQ4ODA1OTkyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0xMjMsMTAgKzEyMywxMCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclBy
b3h5IE5vdFJlZkNvdW50ZWQgewogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBO
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgLT4gKHN0ZDo6b3B0aW9uYWw8TWFjaFNlbmRSaWdo
dD4gc2VuZFJpZ2h0KSBTeW5jaHJvbm91cworICAgIE5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KSAtPiAoc3RkOjpvcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQsIFdlYkNvcmU6OkFm
ZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0pIFN5bmNocm9ub3VzCiAjZW5kaWYKICNpZiBVU0UoQVZG
T1VOREFUSU9OKQotICAgIFBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKSAtPiAoUmV0YWluUHRy
PENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyKSBTeW5jaHJvbm91cworICAgIFBpeGVsQnVm
ZmVyRm9yQ3VycmVudFRpbWUoKSAtPiAoUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVs
QnVmZmVyLCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtKSBTeW5jaHJvbm91cwog
I2VuZGlmCiAKICAgICBQbGF5QXRIb3N0VGltZShNb25vdG9uaWNUaW1lIHRpbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2NvY29hL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHlDb2NvYS5tbQppbmRleCAwNTI2NDI0ZWYzOWEzMmY3YmUwNjVi
YmMyNzcxNGM1NjgxNDc0ZTZhLi5lMTQxODBhZTU3NTJiZGVlZWJkMGE5MjM0ZmVmMDJiZDNhNDAy
YjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvY29jb2EvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW0KQEAgLTgzLDQwICs4
Myw0NSBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFZpZGVvSW5saW5lU2l6ZUZl
bmNlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmCiAgICAgc2V0VmlkZW9JbmxpbmVTaXplSWZQ
b3NzaWJsZSgqbV9pbmxpbmVMYXllckhvc3RpbmdDb250ZXh0LCBzaXplKTsKIH0KIAotdm9pZCBS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXVEY6
Ok1hY2hTZW5kUmlnaHQ+JiYsIFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fcGxheWVyKSB7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVs
bG9wdCwgeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gbmF0aXZlSW1h
Z2UgPSBtX3BsYXllci0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwotICAgIGlmICghbmF0
aXZlSW1hZ2UpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKKyAg
ICBhdXRvIGZyYW1lID0gbV9wbGF5ZXItPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAg
ICBpZiAoIWZyYW1lKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwg
eyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGxhdGZvcm1JbWFnZSA9
IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgYXV0byBwbGF0Zm9ybUltYWdlID0g
ZnJhbWUtPm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgaWYgKCFwbGF0Zm9ybUlt
YWdlKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgeyB9KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bUltYWdlKHBsYXRmb3JtSW1hZ2UuZ2V0KCkpOwogICAgIGlmICghc3VyZmFjZSkgewotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihzdGQ6Om51bGxvcHQsIHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBj
b21wbGV0aW9uSGFuZGxlcihzdXJmYWNlLT5jcmVhdGVTZW5kUmlnaHQoKSk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3VyZmFjZS0+Y3JlYXRlU2VuZFJpZ2h0KCksIFdURk1vdmUoZnJhbWUtPnRy
YW5zZm9ybSkpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnBpeGVsQnVmZmVy
Rm9yQ3VycmVudFRpbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXRhaW5QdHI8Q1ZQaXhlbEJ1
ZmZlclJlZj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJiwgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiByZXN1bHQ7Ci0gICAgaWYgKG1fcGxheWVyKQorICAgIHN0ZDo6b3B0aW9uYWw8TWVkaWFQbGF5
ZXI6OlBpeGVsQnVmZmVyRnJhbWU+IHJlc3VsdDsKKyAgICBpZiAobV9wbGF5ZXIpIHsKICAgICAg
ICAgcmVzdWx0ID0gbV9wbGF5ZXItPnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKTsKLSAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOworICAgIGlmIChyZXN1bHQpCisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LT5waXhlbEJ1ZmZlciksIFdURk1v
dmUocmVzdWx0LT50cmFuc2Zvcm0pKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG51bGxwdHIsIHsgfSk7Cit9CisKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggZTIzOTZjZjU1ZmNkNDdiMTIzNjEwYTkwYWVh
ZmQ0NGQ2ZDNlY2RkZC4uMjRjM2NiNTAyNzYyZTdiODVhNjA3MzgxZWU5OGY4NjJmNjRiYTJkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtOTYzLDEyICs5NjMsMTcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCYgY29udGUKICAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCk7Ci0gICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICBhdXRvIGZyYW1lID0g
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QgeyBGbG9hdFBvaW50Ojp6ZXJvKCksIG5h
dGl2ZUltYWdlLT5zaXplKCkgfTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqbmF0aXZl
SW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHJlY3QsIGltYWdlUmVjdCk7CisgICAgRmxvYXRSZWN0
IGltYWdlUmVjdCB7IEZsb2F0UG9pbnQ6Onplcm8oKSwgZnJhbWUtPm5hdGl2ZUltYWdlLT5zaXpl
KCkgfTsKKyAgICAvLyBGSVhNRTogV2h5IGRvIHdlIG1hcCB3aXRoIHRoZSBpbnZlcnNlIGJ1dCB1
c2UgdGhlIHN0cmFpZ2h0IHRyYW5zZm9ybT8KKyAgICAvLyBTZWUgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1Tb3J1Y2VBVkZPYmpDLm1tLgorICAgIGltYWdlUmVjdCA9IGZyYW1lLT50cmFu
c2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSB7IH0pLm1hcFJlY3QoaW1h
Z2VSZWN0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4
dCk7CisgICAgY29udGV4dC5jb25jYXRDVE0oZnJhbWUtPnRyYW5zZm9ybSk7CisgICAgY29udGV4
dC5kcmF3TmF0aXZlSW1hZ2UoZnJhbWUtPm5hdGl2ZUltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBy
ZWN0LCBpbWFnZVJlY3QpOwogfQogCiAjaWYgIVVTRShBVkZPVU5EQVRJT04pCkBAIC05NzgsMTgg
Kzk4MywxOCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKFdlYkNvcmU6OkdyYXBoaQogICAgIHJldHVybiBmYWxzZTsKIH0K
ICNlbGlmICFQTEFURk9STShDT0NPQSkKLVJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKQorc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpNZWRpYVBsYXllcjo6UGl4ZWxCdWZmZXJGcmFtZT4gTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1SZWZQdHI8TmF0aXZlSW1hZ2U+
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpOYXRpdmVJbWFnZUZyYW1lPiBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCA2MjAw
NzQ5ZDRkNDE3NjI5ZDBhYzJiZmI4YWIzOGIxOWQzMDg2MDdlLi5jYmUwYzZlNTRiNmIyZmMxMDVj
ZDE5MzJjNmQzY2Y1M2UyNGJiNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTI4
Nyw5ICsyODcsOSBAQCBwcml2YXRlOgogI2lmICFVU0UoQVZGT1VOREFUSU9OKQogICAgIGJvb2wg
Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dM
ZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGZpbmFsOwogI2Vsc2UKLSAgICBSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSgpIGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlBpeGVsQnVmZmVyRnJhbWU+IHBp
eGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKICNlbmRpZgotICAgIFJlZlB0cjxXZWJD
b3JlOjpOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQbGF5ZXI6Ok5hdGl2ZUltYWdlRnJhbWU+IG5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKIAogICAgIFdlYkNvcmU6Ok1lZGlhUGxh
eWVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29h
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCmluZGV4IDNkZjc0MDljNDU2MDUwZmVk
ZjJjZDEwNDcxMzk3NmExZjRhOTc3ZjMuLmZlODA1ZjUxNDVmMjU4YWYzNmU2Y2E1MzYxMWU0MGU1
ODExNmYwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
Y29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2Nv
YS5tbQpAQCAtNDYsMzMgKzQ2LDM5IEBAIFBsYXRmb3JtTGF5ZXJDb250YWluZXIgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpCiB9CiAjZW5kaWYK
IAotUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUlt
YWdlRm9yQ3VycmVudFRpbWUoKQorc3RkOjpvcHRpb25hbDxNZWRpYVBsYXllcjo6TmF0aXZlSW1h
Z2VGcmFtZT4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkKIHsKICAgICBzdGQ6Om9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodDsKLSAg
ICBpZiAoIWNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6TmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6TmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZTo6UmVwbHkoc2VuZFJpZ2h0KSwg
bV9pZCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybSB0cmFuc2Zvcm07CisgICAgaWYgKCFjb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Ok5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSwgTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Ok5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWU6
OlJlcGx5KHNlbmRSaWdodCwgdHJhbnNmb3JtKSwgbV9pZCkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoIXNlbmRSaWdodCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHN1cmZhY2UgPSBXZWJD
b3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwg
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlmICghc3VyZmFj
ZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OnNpbmtJbnRv
SW1hZ2UoV1RGTW92ZShzdXJmYWNlKSk7CiAgICAgaWYgKCFwbGF0Zm9ybUltYWdlKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJl
dHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpOworICAgIGF1
dG8gaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpOwor
ICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjpOYXRpdmVJbWFnZUZyYW1lIHsgaW1hZ2UucmVsZWFzZU5vbk51bGwoKSwg
V1RGTW92ZSh0cmFuc2Zvcm0pIH07CiB9CiAKLVJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKQorc3Rk
OjpvcHRpb25hbDxNZWRpYVBsYXllcjo6UGl4ZWxCdWZmZXJGcmFtZT4gTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCkKIHsKLQogICAgIFJldGFpblB0
cjxDVlBpeGVsQnVmZmVyUmVmPiByZXN1bHQ7Ci0gICAgaWYgKCFjb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlBpeGVsQnVmZmVyRm9yQ3VycmVu
dFRpbWUoKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlBpeGVsQnVmZmVyRm9y
Q3VycmVudFRpbWU6OlJlcGx5KHJlc3VsdCksIG1faWQpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSB0cmFu
c2Zvcm07CisgICAgaWYgKCFjb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OlBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKSwgTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyUHJveHk6OlBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWU6OlJlcGx5KHJl
c3VsdCwgdHJhbnNmb3JtKSwgbV9pZCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjpQaXhlbEJ1ZmZlckZyYW1lIHsgV1RGTW92ZShyZXN1bHQpLCBXVEZNb3Zl
KHRyYW5zZm9ybSkgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRp
bGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFy
ZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCmluZGV4IGEwNjdjNGIxZTQ5ZGMwYTQ4NjBmMDgwOTll
NjZiMmNhNGFjYWMxMzEuLjJhODQ4MjVlODY5ODkzZmU5MDZmNWIyOGFhYmViMWEwZmMzY2U5MDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFy
ZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCkBAIC03MywxMiArNzMs
MTQgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlQml0bWFwKFJlbmRl
ckltYWdlJiByZW5kZXJJbWFnZSwgQ3JlYXRlU2gKIAogICAgIGlmIChpczxSZW5kZXJWaWRlbz4o
cmVuZGVySW1hZ2UpKSB7CiAgICAgICAgIGF1dG8mIHJlbmRlclZpZGVvID0gZG93bmNhc3Q8UmVu
ZGVyVmlkZW8+KHJlbmRlckltYWdlKTsKLSAgICAgICAgUmVmIHZpZGVvID0gcmVuZGVyVmlkZW8u
dmlkZW9FbGVtZW50KCk7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSB2aWRlby0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpOwotICAgICAgICBpZiAoIWltYWdlKQorICAgICAgICBhdXRvIHBsYXll
ciA9IHJlbmRlclZpZGVvLnZpZGVvRWxlbWVudCgpLnBsYXllcigpOworICAgICAgICBpZiAoIXBs
YXllcikKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGF1dG8gZnJhbWUgPSBwbGF5
ZXItPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICAgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAgICAgYXV0byBpbWFnZVNpemUgPSBpbWFnZS0+
c2l6ZSgpOworICAgICAgICBhdXRvIGltYWdlU2l6ZSA9IGZyYW1lLT5uYXRpdmVJbWFnZS0+c2l6
ZSgpOwogICAgICAgICBpZiAoaW1hZ2VTaXplLmlzRW1wdHkoKSB8fCBpbWFnZVNpemUud2lkdGgo
KSA8PSAxIHx8IGltYWdlU2l6ZS5oZWlnaHQoKSA8PSAxKQogICAgICAgICAgICAgcmV0dXJuIHsg
fTsKIApAQCAtOTAsNyArOTIsMTMgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hh
cmVhYmxlQml0bWFwKFJlbmRlckltYWdlJiByZW5kZXJJbWFnZSwgQ3JlYXRlU2gKICAgICAgICAg
aWYgKCFjb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICBjb250ZXh0
LT5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBpbWFnZVNpemUsIEZsb2F0UmVjdCB7IHsgfSwgaW1h
Z2VTaXplIH0sIEZsb2F0UmVjdCB7IHsgfSwgaW1hZ2VTaXplIH0pOworICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgICAgICBhdXRvIHNy
Y1JlY3QgPSBGbG9hdFJlY3QgeyB7IH0sIGltYWdlU2l6ZSB9OworICAgICAgICAvLyBGSVhNRTog
V2h5IGRvIHdlIG1hcCB3aXRoIHRoZSBpbnZlcnNlIGJ1dCB1c2UgdGhlIHN0cmFpZ2h0IHRyYW5z
Zm9ybT8KKyAgICAgICAgLy8gU2VlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtU29ydWNl
QVZGT2JqQy5tbS4KKyAgICAgICAgc3JjUmVjdCA9IGZyYW1lLT50cmFuc2Zvcm0uaW52ZXJzZSgp
LnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSB7IH0pLm1hcFJlY3Qoc3JjUmVjdCk7CisgICAgICAg
IGNvbnRleHQtPmNvbmNhdENUTShmcmFtZS0+dHJhbnNmb3JtKTsKKyAgICAgICAgY29udGV4dC0+
ZHJhd05hdGl2ZUltYWdlKGZyYW1lLT5uYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCBGbG9hdFJlY3Qg
eyB7IH0sIGltYWdlU2l6ZSB9LCBzcmNSZWN0KTsKICAgICAgICAgcmV0dXJuIGJpdG1hcDsKICAg
ICB9CiAK
</data>
<flag name="commit-queue"
          id="462758"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449160</attachid>
            <date>2022-01-14 04:22:31 -0800</date>
            <delta_ts>2022-01-14 12:42:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230617-20220114142229.patch</filename>
            <type>text/plain</type>
            <size>14616</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNmYjZmYzFhZjg5NTQ4
YWY1ZDY5Y2VlZjgyNTQ0NzkwNGIyNzhiZC4uMjRlYTgwYzdhMjUwOGYwMzNiNDAzZTJjNGI0ZDA5
N2ZmODQ3Y2I5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAxLTE0ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgZ2wudGV4SW1hZ2Uy
RCB1cGxvYWQgb2YgZ2V0VXNlck1lZGlhIHN0cmVhbXMgdmlhIDx2aWRlbz4gZWxlbWVudCBmYWls
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNjE3
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MzQwNzU3Nz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggTVNFIGNhbWVyYSB0byBXZWJHTCB0ZXh0
dXJlIHVwbG9hZHMuCisgICAgICAgIFBhcnRpYWxseSByZXZlcnQgcjI4MDk2MyBmb3IgQ29jb2Eg
TWVkaWFQbGF5ZXIgaW1wbGVtZW50YXRhdGlvbnMKKyAgICAgICAgdGhhdCBkbyBub3QgaGF2ZSBu
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lIC8gcGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZS4KKyAg
ICAgICAgVHVybnMgb3V0IE1TRSBkb2VzIG5vdCBoYXZlIHRoZXNlIGltcGxlbWVudGVkLCBzbyBj
dXJyZW50bHkgZmFsbCBiYWNrCisgICAgICAgIHRvIHRoZSBwYWludGluZyBwYXRoLgorCisgICAg
ICAgIFRlc3Q6IGZhc3QvbWVkaWFzdHJlYW0vZ2V0VXNlck1lZGlhLXRvLWNhbnZhcy5odG1sCisK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZpZGVvRnJhbWVUb0lt
YWdlKToKKwogMjAyMi0wMS0xMyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6bV92aWRl
b1RyYW5zZm9ybSBpcyByZWR1bmRhbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggY2UwMGU2M2E4ZmI3
NGZhOGM1ZmRlMzNiOTIzYzlkNWY3MTZjNDI5NS4uMWFjMjdiMWUzYTkwZjRiOWY4NTc1MTJhYmZi
YWVkMjEyYjZiMmIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTU5MDksNiArNTkwOSw3IEBAIFJl
ZlB0cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0ltYWdlSW50b0J1ZmZl
cihJbWFnZSYgaW1hZ2UsIGludCB3CiAKIFJlZlB0cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dmlkZW9GcmFtZVRvSW1hZ2UoSFRNTFZpZGVvRWxlbWVudCogdmlkZW8sIEJhY2tp
bmdTdG9yZUNvcHkgYmFja2luZ1N0b3JlQ29weSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKQog
eworICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IG51bGxwdHI7CiAgICAgLy8gRklYTUU6
IFdoZW4gdGV4SW1hZ2UyRCBpcyBwYXNzZWQgYW4gSFRNTFZpZGVvRWxlbWVudCwgaW1wbGVtZW50
YXRpb25zCiAgICAgLy8gaW50ZXJvcGVyYWJseSB1c2UgdGhlIG5hdGl2ZSBSR0IgY29sb3IgdmFs
dWVzIG9mIHRoZSB2aWRlbyBmcmFtZSAoZS5nLgogICAgIC8vIFJlYy42MDEgY29sb3Igc3BhY2Ug
dmFsdWVzKSBmb3IgdGhlIHRleHR1cmUuIEJ1dCBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lCkBA
IC01OTIzLDM1ICs1OTI0LDM2IEBAIFJlZlB0cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dmlkZW9GcmFtZVRvSW1hZ2UoSFRNTFZpZGVvRWxlbWVudCogdmlkCiAgICAgYXV0byBu
YXRpdmVJbWFnZSA9IHZpZGVvLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAgICAgLy8g
Q3VycmVudGx5IHdlIG1pZ2h0IGJlIG1pc3NpbmcgYW4gaW1hZ2UgZHVlIHRvIE1TRSBub3QgYmVp
bmcgYWJsZSB0byBwcm92aWRlIHRoZSBmaXJzdCByZXF1ZXN0ZWQgZnJhbWUuCiAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODk5NwotICAgIGlmICghbmF0
aXZlSW1hZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEludFNpemUgaW1hZ2VTaXpl
ID0gbmF0aXZlSW1hZ2UtPnNpemUoKTsKLSAgICBpZiAoaW1hZ2VTaXplLmlzRW1wdHkoKSkgewot
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxV
RSwgZnVuY3Rpb25OYW1lLCAidmlkZW8gdmlzaWJsZSBzaXplIGlzIGVtcHR5Iik7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0IHsgeyB9LCBp
bWFnZVNpemUgfTsKLSAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBtX2dlbmVyYXRlZElt
YWdlQ2FjaGUuaW1hZ2VCdWZmZXIoaW1hZ2VTaXplLCBuYXRpdmVJbWFnZS0+Y29sb3JTcGFjZSgp
LCBDb21wb3NpdGVPcGVyYXRvcjo6Q29weSk7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikgewotICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6T1VUX09GX01FTU9SWSwg
ZnVuY3Rpb25OYW1lLCAib3V0IG9mIG1lbW9yeSIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBpZiAobmF0aXZlSW1hZ2UpIHsKKyAgICAgICAgSW50U2l6ZSBpbWFnZVNpemUgPSBuYXRp
dmVJbWFnZS0+c2l6ZSgpOworICAgICAgICBpZiAoaW1hZ2VTaXplLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFM
VUUsIGZ1bmN0aW9uTmFtZSwgInZpZGVvIHZpc2libGUgc2l6ZSBpcyBlbXB0eSIpOworICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgRmxvYXRSZWN0IGltYWdl
UmVjdCB7IHsgfSwgaW1hZ2VTaXplIH07CisgICAgICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZl
ciA9IG1fZ2VuZXJhdGVkSW1hZ2VDYWNoZS5pbWFnZUJ1ZmZlcihpbWFnZVNpemUsIG5hdGl2ZUlt
YWdlLT5jb2xvclNwYWNlKCksIENvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5KTsKKyAgICAgICAgaWYg
KCFpbWFnZUJ1ZmZlcikgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6Ok9VVF9PRl9NRU1PUlksIGZ1bmN0aW9uTmFtZSwgIm91dCBvZiBtZW1vcnkiKTsK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIGltYWdlQnVm
ZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKCpuYXRpdmVJbWFnZSwgaW1hZ2VSZWN0LnNp
emUoKSwgaW1hZ2VSZWN0LCBpbWFnZVJlY3QsIENvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5KTsKICAg
ICB9Ci0gICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZlSW1hZ2UoKm5hdGl2ZUlt
YWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBpbWFnZVJlY3QsIGltYWdlUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3I6OkNvcHkpOwotI2Vsc2UKLSAgICAvLyBUaGlzIGlzIGEgbGVnYWN5IGNvZGUgcGF0aCB0
aGF0IHByb2R1Y2VzIGluY29tcGF0aWJsZSB0ZXh0dXJlIHNpemUgd2hlbiB0aGUKLSAgICAvLyB2
aWRlbyB2aXNpYmxlIHNpemUgaXMgZGlmZmVyZW50IHRvIHRoZSBuYXR1cmFsIHNpemUuIFRoaXMg
c2hvdWxkIGJlIHJlbW92ZWQKLSAgICAvLyBvbmNlIGFsbCBwbGF0Zm9ybXMgaW1wbGVtZW50IG5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKS4KLSAgICBJbnRTaXplIHZpZGVvU2l6ZSB7IHN0YXRp
Y19jYXN0PGludD4odmlkZW8tPnZpZGVvV2lkdGgoKSksIHN0YXRpY19jYXN0PGludD4odmlkZW8t
PnZpZGVvSGVpZ2h0KCkpIH07Ci0gICAgYXV0byBjb2xvclNwYWNlID0gdmlkZW8tPmNvbG9yU3Bh
Y2UoKTsKLSAgICBpZiAoIWNvbG9yU3BhY2UpCi0gICAgICAgIGNvbG9yU3BhY2UgPSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKLSAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBt
X2dlbmVyYXRlZEltYWdlQ2FjaGUuaW1hZ2VCdWZmZXIodmlkZW9TaXplLCAqY29sb3JTcGFjZSk7
CisjZW5kaWYKICAgICBpZiAoIWltYWdlQnVmZmVyKSB7Ci0gICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpPVVRfT0ZfTUVNT1JZLCBmdW5jdGlvbk5hbWUsICJvdXQg
b2YgbWVtb3J5Iik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAvLyBUaGlzIGlz
IGEgbGVnYWN5IGNvZGUgcGF0aCB0aGF0IHByb2R1Y2VzIGluY29tcGF0aWJsZSB0ZXh0dXJlIHNp
emUgd2hlbiB0aGUKKyAgICAgICAgLy8gdmlkZW8gdmlzaWJsZSBzaXplIGlzIGRpZmZlcmVudCB0
byB0aGUgbmF0dXJhbCBzaXplLiBUaGlzIHNob3VsZCBiZSByZW1vdmVkCisgICAgICAgIC8vIG9u
Y2UgYWxsIHBsYXRmb3JtcyBpbXBsZW1lbnQgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpLgor
ICAgICAgICBJbnRTaXplIHZpZGVvU2l6ZSB7IHN0YXRpY19jYXN0PGludD4odmlkZW8tPnZpZGVv
V2lkdGgoKSksIHN0YXRpY19jYXN0PGludD4odmlkZW8tPnZpZGVvSGVpZ2h0KCkpIH07CisgICAg
ICAgIGF1dG8gY29sb3JTcGFjZSA9IHZpZGVvLT5jb2xvclNwYWNlKCk7CisgICAgICAgIGlmICgh
Y29sb3JTcGFjZSkKKyAgICAgICAgICAgIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBtX2dlbmVyYXRlZEltYWdlQ2FjaGUu
aW1hZ2VCdWZmZXIodmlkZW9TaXplLCAqY29sb3JTcGFjZSk7CisgICAgICAgIGlmICghaW1hZ2VC
dWZmZXIpIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdM
OjpPVVRfT0ZfTUVNT1JZLCBmdW5jdGlvbk5hbWUsICJvdXQgb2YgbWVtb3J5Iik7CisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICB2aWRlby0+cGFpbnRDdXJy
ZW50RnJhbWVJbkNvbnRleHQoaW1hZ2VCdWZmZXItPmNvbnRleHQoKSwgeyB7IH0sIHZpZGVvU2l6
ZSB9KTsKICAgICB9Ci0gICAgdmlkZW8tPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGltYWdl
QnVmZmVyLT5jb250ZXh0KCksIHsgeyB9LCB2aWRlb1NpemUgfSk7Ci0jZW5kaWYKICAgICBSZWZQ
dHI8SW1hZ2U+IGltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZShiYWNraW5nU3RvcmVDb3B5
KTsKICAgICBpZiAoIWltYWdlKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dEdMOjpPVVRfT0ZfTUVNT1JZLCBmdW5jdGlvbk5hbWUsICJvdXQgb2YgbWVtb3J5Iik7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggNjA3OGE3ZjYzZGVjZTAxOTI5MWU3Mzk2MDlhN2Q0Mjc4ODgzZGNiMy4uODBlOGU1
NzgyNWMyOGU4ZTVlMmI4ZjA3OWI3N2FhYmNiMTU0NDM4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBA
CisyMDIyLTAxLTE0ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgZ2wudGV4SW1hZ2UyRCB1cGxvYWQgb2YgZ2V0VXNlck1lZGlhIHN0cmVhbXMgdmlhIDx2
aWRlbz4gZWxlbWVudCBmYWlscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMwNjE3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MzQwNzU3Nz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvbWVk
aWFzdHJlYW0vZ2V0VXNlck1lZGlhLXRvLWNhbnZhcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0VXNlck1lZGlhLXRvLWNhbnZhcy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgQWRkIGEgdGVzdCB0byB0ZXN0IGdldHRpbmcgdmlkZW8gZnJhbWUgdG8gMkRD
b250ZXh0IGFuZAorICAgICAgICBXZWJHTCBjYW52YXMgZWxlbWVudHMuCisKKyAgICAgICAgKiB3
ZWJydGMvcm91dGluZXMuanM6CisgICAgICAgIEFkZCBhIGZ1bmN0aW9uIHRvIGFzc2VydCB0aGF0
IEltYWdlRGF0YSBjb250YWlucworICAgICAgICB0aGUgc2ltdWxhdGVkIG1vY2sgY2FtZXJhIGlt
YWdlLiBUaGlzIGlzIHVzZWZ1bAorICAgICAgICBpbiB2ZXJpZnlpbmcgdGhhdCB0aGUgaW1hZ2Ug
aXMgZXhhY3RseSBhcworICAgICAgICBleHBlY3RlZC4gVGhlIHRlc3QgdGVzdHMgb25seSB0aGUg
ZGVmYXVsdCBvcmllbnRhdGlvbi4KKyAgICAgICAgTGF0ZXIgY2hhbmdlcyB3aWxsIHVwZGF0ZSB0
aGUgdGVzdCB0byBhZGRyZXNzIHRoZQorICAgICAgICBjYW1lcmEgcm90YXRpb24uCisKIDIwMjIt
MDEtMTEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQ
VSBQcm9jZXNzXSBNYWtlIFNWRyByZXNvdXJjZXMgY3JlYXRlIHJlbW90ZSBJbWFnZUJ1ZmZlcnMg
Zm9yIHRoZWlyIGRyYXdpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vZ2V0VXNlck1lZGlhLXRvLWNhbnZhcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL2dldFVzZXJNZWRpYS10by1jYW52YXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg2NTk0MDI2ZmU3OWIzMDAzOWVkNzNlY2UyOWVkNmZjZTI4NzAxZTQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldFVzZXJNZWRpYS10by1jYW52
YXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIFRlc3RpbmcgZ2V0VXNlck1l
ZGlhIHN0cmVhbSB0byBjYW52YXMgY29udGV4dHMgdmlhIDJEQ29udGV4dAorUEFTUyBUZXN0aW5n
IGdldFVzZXJNZWRpYSBzdHJlYW0gdG8gY2FudmFzIGNvbnRleHRzIHZpYSBJbWFnZUJpdG1hcCB0
byAyRENvbnRleHQKK1BBU1MgVGVzdGluZyBnZXRVc2VyTWVkaWEgc3RyZWFtIHRvIGNhbnZhcyBj
b250ZXh0cyB2aWEgV2ViR0wgdGV4dHVyZQorUEFTUyBUZXN0aW5nIGdldFVzZXJNZWRpYSBzdHJl
YW0gdG8gY2FudmFzIGNvbnRleHRzIHZpYSBJbWFnZUJpdG1hcCB0byBXZWJHTCB0ZXh0dXJlCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0VXNlck1lZGlhLXRv
LWNhbnZhcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXRVc2VyTWVkaWEt
dG8tY2FudmFzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI4M2Y0OGY3Y2YzMTRkMzE0OWEzMmUzZjg5MDM5
Zjc0Nzg0ZmRhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vZ2V0VXNlck1lZGlhLXRvLWNhbnZhcy5odG1sCkBAIC0wLDAgKzEsMTMzIEBACis8IWRvY3R5
cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+CisgICAgICAgIDx0aXRsZT5UZXN0aW5nIGdldFVzZXJNZWRpYSBzdHJlYW0gdG8gY2FudmFz
IGNvbnRleHRzPC90aXRsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vd2VicnRjL3JvdXRpbmVzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uL2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+CisKKyAgICAgICAgPHN0eWxlIHR5cGU9dGV4dC9jc3M+CisgICAgICAgICAgICBjYW52YXMg
eyB3aWR0aDogNjAwcHggfQorICAgICAgICA8L3N0eWxlPgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eT4KKyAgICAgICAgPGRpdiBpZD0iZGVidWdlIj48L2Rpdj4KKyAgICAgICAgPHNjcmlwdD4KKyJ1
c2Ugc3RyaWN0IjsKK2NvbnN0IHd0dSA9IFdlYkdMVGVzdFV0aWxzOworY29uc3Qgd2lkdGggPSA2
NDM7Citjb25zdCB2ZXJpZnlXaWR0aCA9IDIwMDsKK2NvbnN0IGRlYnVnZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJkZWJ1Z2UiKTsKKworYXN5bmMgZnVuY3Rpb24gY3JlYXRlU291cmNlVmlk
ZW8oKSB7CisgICAgbGV0IHZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidmlkZW8iKTsK
KyAgICB2aWRlby5zcmNPYmplY3QgPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVz
ZXJNZWRpYSh7IHZpZGVvOiB7IHdpZHRoOiB7IGV4YWN0OiB3aWR0aCB9IH0gfSk7CisgICAgYXdh
aXQgdmlkZW8ucGxheSgpOworICAgIGFzc2VydF9lcXVhbHModmlkZW8udmlkZW9XaWR0aCwgd2lk
dGgpOworICAgIHJldHVybiB2aWRlbzsKK30KKworZnVuY3Rpb24gY3JlYXRlVmVyaWZ5Q2FudmFz
KHZpZGVvKSB7CisgICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZh
cyIpOworICAgIGNhbnZhcy53aWR0aCA9IHZlcmlmeVdpZHRoOworICAgIGNhbnZhcy5oZWlnaHQg
PSBNYXRoLmZsb29yKHZpZGVvLnZpZGVvSGVpZ2h0IC8gdmlkZW8udmlkZW9XaWR0aCAqIHZlcmlm
eVdpZHRoKTsKKyAgICByZXR1cm4gY2FudmFzOworfQorCitmdW5jdGlvbiBjcmVhdGVWZXJpZnlX
ZWJHTENvbnRleHQoY2FudmFzKSB7CisgICAgbGV0IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChj
YW52YXMsIHsgZGVwdGg6IGZhbHNlLCBzdGVuY2lsOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9
KTsKKyAgICBnbC52aWV3cG9ydCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwor
ICAgIGxldCBwcm9ncmFtID0gd3R1LnNldHVwVGV4dHVyZWRRdWFkKGdsKTsKKyAgICBnbC51bmlm
b3JtMWkoZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXgiKSwgMCk7CisgICAgcmV0
dXJuIGdsOworfQorCitmdW5jdGlvbiBnZXRGcmFtZWJ1ZmZlckFzSW1hZ2VEYXRhKGdsKcKgewor
ICAgIGxldCBjYW52YXMgPSBnbC5jYW52YXM7CisgICAgbGV0IGltYWdlRGF0YSA9IHsKKyAgICAg
ICAgd2lkdGg6IGNhbnZhcy53aWR0aCwKKyAgICAgICAgaGVpZ2h0OiBjYW52YXMuaGVpZ2h0LAor
ICAgICAgICBkYXRhOiBuZXcgVWludDhBcnJheShjYW52YXMud2lkdGggKiBjYW52YXMuaGVpZ2h0
ICogNCkKKyAgICB9CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZh
cy5oZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGltYWdlRGF0YS5kYXRhKTsKKyAg
ICByZXR1cm4gaW1hZ2VEYXRhOworfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAg
bGV0IHZpZGVvID0gYXdhaXQgY3JlYXRlU291cmNlVmlkZW8oKTsKKyAgICBkZWJ1Z2UuYXBwZW5k
KHZpZGVvKTsKKyAgICBsZXQgY2FudmFzID0gY3JlYXRlVmVyaWZ5Q2FudmFzKHZpZGVvKTsKKyAg
ICBkZWJ1Z2UuYXBwZW5kQ2hpbGQoY2FudmFzKTsKKworICAgIGxldCBjdHggPSBjYW52YXMuZ2V0
Q29udGV4dCgiMmQiKTsKKyAgICBjdHguZHJhd0ltYWdlKHZpZGVvLCAwLCAwLCBjYW52YXMud2lk
dGgsIGNhbnZhcy5oZWlnaHQpOworICAgIGFzc2VydEltYWdlRGF0YUNvbnRhaW5zTW9ja0NhbWVy
YUltYWdlKGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0
KSk7CisgICAgZGVidWdlLnJlbW92ZUNoaWxkKGNhbnZhcyk7CisgICAgZGVidWdlLnJlbW92ZUNo
aWxkKHZpZGVvKTsKKworfSwgZG9jdW1lbnQudGl0bGUgKyAiIHZpYSAyRENvbnRleHQiKTsKKwor
cHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGxldCB2aWRlbyA9IGF3YWl0IGNyZWF0ZVNv
dXJjZVZpZGVvKCk7CisgICAgZGVidWdlLmFwcGVuZCh2aWRlbyk7CisgICAgbGV0IGNhbnZhcyA9
IGNyZWF0ZVZlcmlmeUNhbnZhcyh2aWRlbyk7CisgICAgZGVidWdlLmFwcGVuZENoaWxkKGNhbnZh
cyk7CisKKyAgICBsZXQgY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAgbGV0IGlt
YWdlQml0bWFwID0gYXdhaXQgY3JlYXRlSW1hZ2VCaXRtYXAodmlkZW8pOworICAgIGN0eC5kcmF3
SW1hZ2UoaW1hZ2VCaXRtYXAsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7Cisg
ICAgYXNzZXJ0SW1hZ2VEYXRhQ29udGFpbnNNb2NrQ2FtZXJhSW1hZ2UoY3R4LmdldEltYWdlRGF0
YSgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpKTsKKyAgICBkZWJ1Z2UucmVtb3Zl
Q2hpbGQoY2FudmFzKTsKKyAgICBkZWJ1Z2UucmVtb3ZlQ2hpbGQodmlkZW8pOworfSwgZG9jdW1l
bnQudGl0bGUgKyAiIHZpYSBJbWFnZUJpdG1hcCB0byAyRENvbnRleHQiKTsKKworcHJvbWlzZV90
ZXN0KGFzeW5jIHQgPT4geworICAgIGxldCB2aWRlbyA9IGF3YWl0IGNyZWF0ZVNvdXJjZVZpZGVv
KCk7CisgICAgZGVidWdlLmFwcGVuZCh2aWRlbyk7CisgICAgbGV0IGNhbnZhcyA9IGNyZWF0ZVZl
cmlmeUNhbnZhcyh2aWRlbyk7CisgICAgZGVidWdlLmFwcGVuZENoaWxkKGNhbnZhcyk7CisKKyAg
ICBsZXQgZ2wgPSBjcmVhdGVWZXJpZnlXZWJHTENvbnRleHQoY2FudmFzKTsKKyAgICBsZXQgdGV4
dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJF
XzJELCB0ZXh0dXJlKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5U
RVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RP
X0VER0UpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9X
UkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdmlkZW8pOworICAgIHd0
dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCwgWzAsIDAsIDAsIDI1NV0pOworCisgICAgbGV0IGlt
YWdlRGF0YSA9IGdldEZyYW1lYnVmZmVyQXNJbWFnZURhdGEoZ2wpOworICAgIGFzc2VydEltYWdl
RGF0YUNvbnRhaW5zTW9ja0NhbWVyYUltYWdlKGltYWdlRGF0YSk7CisgICAgZGVidWdlLnJlbW92
ZUNoaWxkKGNhbnZhcyk7CisgICAgZGVidWdlLnJlbW92ZUNoaWxkKHZpZGVvKTsKK30sIGRvY3Vt
ZW50LnRpdGxlICsgIiB2aWEgV2ViR0wgdGV4dHVyZSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMg
dCA9PiB7CisgICAgbGV0IHZpZGVvID0gYXdhaXQgY3JlYXRlU291cmNlVmlkZW8oKTsKKyAgICBk
ZWJ1Z2UuYXBwZW5kKHZpZGVvKTsKKyAgICBsZXQgY2FudmFzID0gY3JlYXRlVmVyaWZ5Q2FudmFz
KHZpZGVvKTsKKyAgICBkZWJ1Z2UuYXBwZW5kQ2hpbGQoY2FudmFzKTsKKworICAgIGxldCBnbCA9
IGNyZWF0ZVZlcmlmeVdlYkdMQ29udGV4dChjYW52YXMpOworICAgIGxldCB0ZXh0dXJlID0gZ2wu
Y3JlYXRlVGV4dHVyZSgpOworICAgIGxldCBpbWFnZUJpdG1hcCA9IGF3YWl0IGNyZWF0ZUltYWdl
Qml0bWFwKHZpZGVvKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJl
KTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJ
TFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBn
bC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICAg
IGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNM
QU1QX1RPX0VER0UpOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdC
QSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgaW1hZ2VCaXRtYXApOworICAgIHd0dS5jbGVh
ckFuZERyYXdVbml0UXVhZChnbCwgWzAsIDAsIDAsIDI1NV0pOworCisgICAgbGV0IGltYWdlRGF0
YSA9IGdldEZyYW1lYnVmZmVyQXNJbWFnZURhdGEoZ2wpOworICAgIGFzc2VydEltYWdlRGF0YUNv
bnRhaW5zTW9ja0NhbWVyYUltYWdlKGltYWdlRGF0YSk7CisgICAgZGVidWdlLnJlbW92ZUNoaWxk
KGNhbnZhcyk7CisgICAgZGVidWdlLnJlbW92ZUNoaWxkKHZpZGVvKTsKK30sIGRvY3VtZW50LnRp
dGxlICsgIiB2aWEgSW1hZ2VCaXRtYXAgdG8gV2ViR0wgdGV4dHVyZSIpOworCisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YnJ0Yy9yb3V0aW5lcy5qcyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9yb3V0aW5lcy5qcwppbmRleCBk
OGRiNzJmNjVkMTc2OTYxZWE3OTdjOWRjNDgyYmQwYjUxZWY5M2IyLi5mODM3YWEwMGQ3YWUzNzhi
NDU1YzhjY2E0NDk4MTk1MGJhMDVlMDlhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMv
cm91dGluZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3JvdXRpbmVzLmpzCkBAIC0yOTcs
MyArMjk3LDMwIEBAIGZ1bmN0aW9uIHNldEgyNjRIaWdoQ29kZWMoc2RwKQogICAgICAgICByZXR1
cm4gKGxpbmUuaW5kZXhPZignYT1mbXRwJykgPT09IC0xICYmIGxpbmUuaW5kZXhPZignYT1ydGNw
LWZiJykgPT09IC0xICYmIGxpbmUuaW5kZXhPZignYT1ydHBtYXAnKSA9PT0gLTEpIHx8IGxpbmUu
aW5kZXhPZihiYXNlbGluZU51bWJlcikgIT09IC0xOwogICAgIH0pLmpvaW4oJ1xyXG4nKTsKIH0K
KworLy8gUmV0dXJucyBVaW50OEFycmF5WzRdIG9mIFJHQkEgY29sb3IuCisvLyBwOiBbeCwgeV0g
b2YgMC4uMSByYW5nZS4KK2Z1bmN0aW9uIGdldEltYWdlRGF0YVBpeGVsKGltYWdlRGF0YSwgcCkK
K3sKKyAgICBsZXQgeGkgPSBNYXRoLmZsb29yKHBbMF0gKiBpbWFnZURhdGEud2lkdGgpOworICAg
IGxldCB5aSA9IE1hdGguZmxvb3IocFsxXSAqIGltYWdlRGF0YS5oZWlnaHQpOworICAgIGxldCBp
ID0gKHlpICogaW1hZ2VEYXRhLndpZHRoICsgeGkpICogNDsKKyAgICByZXR1cm4gaW1hZ2VEYXRh
LmRhdGEuc2xpY2UoaSwgaSArIDQpOworfQorCisvLyBBc3NlcnRzIHRoYXQgSW1hZ2VEYXRhIGlu
c3RhbmNlIGNvbnRhaW5zIG1vY2sgY2FtZXJhIGltYWdlIHJlbmRlcmVkIGJ5IE1pbmlCcm93c2Vy
IGFuZCBXZWJLaXRUZXN0UnVubmVyLgorLy8gT2J0YWluIGZ1bGwgY2FtZXJhIGltYWdlIG9mIHNp
emUgYHdpZHRoYDoKKy8vICBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7IHZpZGVvOiB7IHdpZHRoOiB7IGV4YWN0OiB3aWR0aCB9IH0gfSk7CitmdW5jdGlvbiBhc3Nl
cnRJbWFnZURhdGFDb250YWluc01vY2tDYW1lcmFJbWFnZShpbWFnZURhdGEpCit7CisgICAgY29u
c3Qgd2hpdGUgPSBbIDI1NSwgMjU1LCAyNTUsIDI1NSBdOworICAgIGNvbnN0IHllbGxvdyA9IFsg
MjU1LCAyNTUsIDAsIDI1NSBdOworICAgIGNvbnN0IGN5YW4gPSBbIDAsIDI1NSwgMjU1LCAyNTUg
XTsKKyAgICBjb25zdCBsaWdodEdyZWVuID0gWyAwLCAxMjgsIDAsIDI1NSBdOworCisgICAgbGV0
IGVyciA9IDM7CisgICAgYXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMoZ2V0SW1hZ2VEYXRhUGl4
ZWwoaW1hZ2VEYXRhLCBbIDAuMDQsIDAuNyBdKSwgd2hpdGUsIGVyciwgIndoaXRlIHJlY3Qgbm90
IGZvdW5kIik7CisgICAgYXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMoZ2V0SW1hZ2VEYXRhUGl4
ZWwoaW1hZ2VEYXRhLCBbIDAuMDgsIDAuNyBdKSwgeWVsbG93LCBlcnIsICJ5ZWxsb3cgcmVjdCBu
b3QgZm91bmQiKTsKKyAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQ
aXhlbChpbWFnZURhdGEsIFsgMC4xMiwgMC43IF0pLCBjeWFuLCBlcnIsICJjeWFuIHJlY3Qgbm90
IGZvdW5kIik7CisgICAgYXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMoZ2V0SW1hZ2VEYXRhUGl4
ZWwoaW1hZ2VEYXRhLCBbIDAuMTYsIDAuNyBdKSwgbGlnaHRHcmVlbiwgZXJyLCAibGlnaHQgZ3Jl
ZW4gcmVjdCBub3QgZm91bmQiKTsKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>