<?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>202101</bug_id>
          
          <creation_ts>2019-09-23 05:00:33 -0700</creation_ts>
          <short_desc>Support for callbacks for manifest events</short_desc>
          <delta_ts>2021-09-06 06:13:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>shivaksk1</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1573272</commentid>
    <comment_count>0</comment_count>
    <who name="">shivaksk1</who>
    <bug_when>2019-09-23 05:00:33 -0700</bug_when>
    <thetext>Hi Team,

It would be good to have callbacks for manifest timed events (HLS).

E.g. EXT-X-DATERANGE.

This is required for Server Side Dynamic Ad Implementations. For example the Ad related metadata could be passed in this attribute. The App could listen for this metadata callback and take appropriate action based on this.

It&apos;s supported in the AV player in iOS, but there is no support on Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573343</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-23 10:26:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/55627676&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581458</commentid>
    <comment_count>2</comment_count>
      <attachid>381314</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-10-18 10:55:48 -0700</bug_when>
    <thetext>Created attachment 381314
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581503</commentid>
    <comment_count>3</comment_count>
      <attachid>381314</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2019-10-18 13:56:39 -0700</bug_when>
    <thetext>Comment on attachment 381314
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3519
&gt; +    UNUSED_PARAM(output);
&gt; +    UNUSED_PARAM(track);
&gt; +
&gt; +    ensureOnMainThread([self, strongSelf = retainPtr(self), metadataGroups = retainPtr(groups)]() mutable {
&gt; +        m_taskQueue.enqueueTask([player = m_player, metadataGroups = WTFMove(metadataGroups), currentTime = m_player-&gt;currentMediaTime()] {
&gt; +            if (!player)
&gt; +                return;
&gt; +
&gt; +            for (AVDateRangeMetadataGroup *group in metadataGroups.get())
&gt; +                player-&gt;metadataDidArrive(retainPtr(group.items), currentTime);
&gt; +        });
&gt; +    });

Nit: why are we using a background queue if we&apos;re just going to dispatch to the main thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581627</commentid>
    <comment_count>4</comment_count>
      <attachid>381350</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-10-18 17:09:01 -0700</bug_when>
    <thetext>Created attachment 381350
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583911</commentid>
    <comment_count>5</comment_count>
      <attachid>381943</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-10-25 11:04:56 -0700</bug_when>
    <thetext>Created attachment 381943
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584150</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-25 19:37:54 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 381943:

imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/integrity.html bug 203394 (author: ysuzuki@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584151</commentid>
    <comment_count>7</comment_count>
      <attachid>381943</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-25 19:38:47 -0700</bug_when>
    <thetext>Comment on attachment 381943
Patch for landing.

Clearing flags on attachment: 381943

Committed r251626: &lt;https://trac.webkit.org/changeset/251626&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584152</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-25 19:38:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790060</commentid>
    <comment_count>9</comment_count>
    <who name="">shivaksk1</who>
    <bug_when>2021-09-02 22:10:51 -0700</bug_when>
    <thetext>Hi, could you please explain how to listen to this event (EXT-X-DATERANGE) from the html5 video element in Safari browser (on Mac)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790273</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-09-03 12:04:53 -0700</bug_when>
    <thetext>(In reply to shivaksk1 from comment #9)
&gt; Hi, could you please explain how to listen to this event (EXT-X-DATERANGE)
&gt; from the html5 video element in Safari browser (on Mac)?

EXT-X-DATERANGE metadata is exposed just like all timed metadata - as a text track with `kind=metadata`.

The scripts in this simple test page I wrote, which logs metadata cues as they are emitted, might be helpful: https://streaming-metadata.glitch.me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790681</commentid>
    <comment_count>11</comment_count>
    <who name="">shivaksk1</who>
    <bug_when>2021-09-06 05:39:22 -0700</bug_when>
    <thetext>Hi Team, Thanks for the quick response.

May I know from which Safari browser version this feature is supported?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790686</commentid>
    <comment_count>12</comment_count>
    <who name="">shivaksk1</who>
    <bug_when>2021-09-06 06:13:29 -0700</bug_when>
    <thetext>Also, I have a query:

#EXT-X-DATERANGE:ID=&quot;adbreak-100076-0&quot;,START-DATE=&quot;2021-09-06T12:05:34.000Z&quot;,DURATION=30,X-PRESENTATION-TIME=1630929934000,CLASS=&quot;com.xyz.dai.adbreak&quot;

#EXT-X-DATERANGE:ID=&quot;tracking-100076-0-0&quot;,START-DATE=&quot;2021-09-06T12:05:34.000Z&quot;,DURATION=1,X-AD-URL=&quot;https://url_1&quot;,X-AD-ID=&quot;adbreak-100076-0&quot;,CLASS=&quot;com.xyz.dai.tracking&quot;

In the above manifest, are we supposed to get two cues, one for each EXT-X-DATERANGE tag?

Cue 1: contains ID, DURATION, X-PRESENTATION-TIME, CLASS for cue 1
Cue 2: contains ID, DURATION, X-PRESENTATION-TIME, CLASS for cue 2


When I tried to run the sample script on the above manifest, I observed that:
- For the first EXT-X-DATERANGE tag, we get one cue, with key = X-PRESENTATION-TIME.
- For the second EXT-X-DATERANGE tag, we get 2 cues,
  - cue 1: {key: X-AD-ID, value: adbreak-100076-0}
  - cue 2: {key: X-AD-URL, value: https://url_1}

Could you please explain this behavior?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381314</attachid>
            <date>2019-10-18 10:55:48 -0700</date>
            <delta_ts>2019-10-25 11:04:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202101-20191018105547.patch</filename>
            <type>text/plain</type>
            <size>29921</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I1ZWUzNzVjMjFmNWNh
OGRmZmE2NzY1MWQ3MDg4YTIzYmRiMjc2NC4uYjRjMjM0N2QwYzM5ZmZkODQwOWE4N2RmMjEzMzAz
NWUzNGI2ZDE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE5LTEwLTE4ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgZm9y
IGNhbGxiYWNrcyBmb3IgbWFuaWZlc3QgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIxMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0
Mjc3MzYyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgVXNlIEFWUGxheWVySXRlbU1ldGFkYXRhQ29sbGVjdG9yIHRvIGdldCBtYW5pZmVz
dCBiYXNlZCB0aW1lIG1ldGFkYXRhLiBVc2UgCisgICAgICAgIEFWUGxheWVySXRlbU1ldGFkYXRh
T3V0cHV0IHRvIGdldCB0aW1lIG1ldGFkYXRhIGluc3RlYWQgb2YgbGlzdGVuaW5nIGZvciBhICJ0
aW1lZE1ldGFkYXRhIgorICAgICAgICBLVk8gb24gQVZQbGF5ZXIuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBleGlzdGluZyB0ZXN0IHVwZGF0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Omdsb2Jh
bE1ldGFkYXRhUHJvY2Vzc2luZ1F1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNhbmNlbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKToK
KyAgICAgICAgKFdlYkNvcmU6Om1ldGFkYXRhVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjptZXRhZGF0YUdyb3VwRGlkQXJyaXZlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om1l
dGFkYXRhRGlkQXJyaXZlKToKKyAgICAgICAgKFdlYkNvcmU6Oml0ZW1LVk9Qcm9wZXJ0aWVzKToK
KyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0
aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmll
T2JzZXJ2ZXIgbWV0YWRhdGFPdXRwdXQ6ZGlkT3V0cHV0VGltZWRNZXRhZGF0YUdyb3Vwczpmcm9t
UGxheWVySXRlbVRyYWNrOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBt
ZXRhZGF0YUNvbGxlY3RvcjpkaWRDb2xsZWN0RGF0ZVJhbmdlTWV0YWRhdGFHcm91cHM6aW5kZXhl
c09mTmV3R3JvdXBzOmluZGV4ZXNPZk1vZGlmaWVkR3JvdXBzOl0pOgorCiAyMDE5LTEwLTE0ICB5
b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXVzZSBleGlzdGlu
ZyB3ZWIgcHJvY2Vzc2VzIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKaW5kZXggYmI2ZjUxNjBkYzRjNGI3YmViYzljNWY3MmRhMDhiM2Y0ODI5OWRhMC4uNjhlMjdk
MTk2ZmM5NDNiZmE4ZWI0NDdhNDA2YTQ0NDhhNDg2NjQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTktMTAtMTggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBmb3IgY2FsbGJhY2tzIGZvciBtYW5pZmVzdCBl
dmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MjEwMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTQyNzczNjI+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvY29jb2EvQVZGb3VuZGF0aW9u
U29mdExpbmsuaDoKKyAgICAgICAgKiBwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsubW06
CisKIDIwMTktMTAtMDcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAg
ICAgICAgQnVpbGQgZmFpbHVyZSBpbiBXZWJIVE1MVmlldy5tbSB3aXRoIHRoZSBwdWJsaWMgU0RL
IChYY29kZSAxMSBhbmQgTW9qYXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
b2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oCmluZGV4IDMyZTY3NzFmNjg5MmQ1OTczMDY5NDY2
NDViODgyNzEzNjZhY2I3OTQuLjY1Nzg0ZmU2NWE5MTJiZTYyNDE3OGEzYTJlM2FiODlkMDFhNjM2
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvQVZGb3VuZGF0aW9u
U29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0FWRm91bmRhdGlv
blNvZnRMaW5rLmgKQEAgLTYyLDYgKzYyLDggQEAgU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIo
UEFMLCBBVk91dHB1dENvbnRleHQpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFW
UGxheWVyKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVlBsYXllckl0ZW0pCiBT
T0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXQp
CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWUGxheWVySXRlbU1ldGFkYXRhQ29s
bGVjdG9yKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVlBsYXllckl0ZW1NZXRh
ZGF0YU91dHB1dCkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZQbGF5ZXJJdGVt
VmlkZW9PdXRwdXQpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWUGxheWVyTGF5
ZXIpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWU2FtcGxlQnVmZmVyQXVkaW9S
ZW5kZXJlcikKQEAgLTIzMSw2ICsyMzMsOCBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURF
UihQQUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUtleVNwYWNlSUQzLCBOU1N0cmluZwogI2Rl
ZmluZSBBVk1ldGFkYXRhS2V5U3BhY2VJRDMgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWTWV0YWRh
dGFLZXlTcGFjZUlEMygpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91
bmRhdGlvbiwgQVZNZXRhZGF0YUtleVNwYWNlSVNPVXNlckRhdGEsIE5TU3RyaW5nICopCiAjZGVm
aW5lIEFWTWV0YWRhdGFLZXlTcGFjZUlTT1VzZXJEYXRhIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9B
Vk1ldGFkYXRhS2V5U3BhY2VJU09Vc2VyRGF0YSgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hF
QURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUtleVNwYWNlSExTRGF0ZVJhbmdlLCBO
U1N0cmluZyAqKQorI2RlZmluZSBBVk1ldGFkYXRhS2V5U3BhY2VITFNEYXRlUmFuZ2UgUEFMOjpn
ZXRfQVZGb3VuZGF0aW9uX0FWTWV0YWRhdGFLZXlTcGFjZUhMU0RhdGVSYW5nZSgpCiAKICNpZiBQ
TEFURk9STShNQUMpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRh
dGlvbiwgQVZTdHJlYW1EYXRhUGFyc2VyQ29udGVudEtleVJlcXVlc3RQcm90b2NvbFZlcnNpb25z
S2V5LCBOU1N0cmluZyAqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2Nv
YS9BVkZvdW5kYXRpb25Tb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2Ev
QVZGb3VuZGF0aW9uU29mdExpbmsubW0KaW5kZXggZTU3MWUxMWFlNDQxMzQzNmMxNTMwNGNlMmNi
OWM4ZWU3ZmQ3N2QxOC4uZTE0OWY3ZmI4MjNiMTVjOGExYzVhZjFiYmRmZjgzOTgxNjFiZjdkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0
TGluay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0FWRm91bmRhdGlvblNv
ZnRMaW5rLm1tCkBAIC01NCw2ICs1NCw4IEBAIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk91dHB1dENvbnRleHQsIFBBTF9FCiBTT0ZU
X0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZQ
bGF5ZXIsIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJJdGVtLCBQQUxfRVhQT1JUKQogU09GVF9MSU5L
X0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWUGxheWVy
SXRlbUxlZ2libGVPdXRwdXQsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJJdGVtTWV0YWRhdGFDb2xs
ZWN0b3IsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJJdGVtTWV0YWRhdGFPdXRwdXQsIFBBTF9FWFBP
UlQpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRh
dGlvbiwgQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQsIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ0xB
U1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJMYXll
ciwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0LCBQQUxfRVhQT1JUKQpAQCAtMTEwLDYgKzExMiw3
IEBAIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3Vu
ZGF0aW9uLCBBVk1lZGlhVHlwZVN1YnRpdGxlCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVWaWRlbywgTlNTdHJp
bmcgKiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhQ29tbW9uS2V5VGl0bGUsIE5TU3RyaW5n
ICosIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uLCBOU1N0cmluZyAq
LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQo
UEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZUhMU0RhdGVSYW5nZSwgTlNTdHJp
bmcgKiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5U3BhY2VJRDMsIE5TU3RyaW5nICos
IFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUtleVNwYWNlSVNPVXNlckRhdGEsIE5TU3RyaW5n
ICosIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUtleVNwYWNlUXVpY2tUaW1lTWV0YWRhdGEs
IE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggNWI1OTk2
MTUyMTRkNzc5Zjg0MTQzOTkwMjVjYTgxNjhhMWZlNGE0OS4uZTk4ZDhlYTkwMDA0NzE4Y2ZjOTA0
NGEwOTgzNmFmMGI5MGUwZmUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMzksNiArMzks
OCBAQCBPQkpDX0NMQVNTIEFWTWVkaWFTZWxlY3Rpb25Hcm91cDsKIE9CSkNfQ0xBU1MgQVZPdXRw
dXRDb250ZXh0OwogT0JKQ19DTEFTUyBBVlBsYXllckl0ZW07CiBPQkpDX0NMQVNTIEFWUGxheWVy
SXRlbUxlZ2libGVPdXRwdXQ7CitPQkpDX0NMQVNTIEFWUGxheWVySXRlbU1ldGFkYXRhQ29sbGVj
dG9yOworT0JKQ19DTEFTUyBBVlBsYXllckl0ZW1NZXRhZGF0YU91dHB1dDsKIE9CSkNfQ0xBU1Mg
QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ7CiBPQkpDX0NMQVNTIEFWUGxheWVyTGF5ZXI7CiBPQkpD
X0NMQVNTIEFWVVJMQXNzZXQ7CkBAIC0xMTYsNiArMTE4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZHVyYXRpb25EaWRDaGFuZ2UoY29uc3QgTWVkaWFUaW1lJik7CiAgICAgdm9pZCByYXRlRGlkQ2hh
bmdlKGRvdWJsZSk7CiAgICAgdm9pZCB0aW1lQ29udHJvbFN0YXR1c0RpZENoYW5nZShpbnQpOwor
ICAgIHZvaWQgbWV0YWRhdGFHcm91cERpZEFycml2ZShjb25zdCBSZXRhaW5QdHI8TlNBcnJheT4m
LCBjb25zdCBNZWRpYVRpbWUmKTsKICAgICB2b2lkIG1ldGFkYXRhRGlkQXJyaXZlKGNvbnN0IFJl
dGFpblB0cjxOU0FycmF5PiYsIGNvbnN0IE1lZGlhVGltZSYpOwogICAgIHZvaWQgZmlyc3RGcmFt
ZUF2YWlsYWJsZURpZENoYW5nZShib29sKTsKICAgICB2b2lkIHRyYWNrRW5hYmxlZERpZENoYW5n
ZShib29sKTsKQEAgLTE1NSw2ICsxNTgsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCB3YWl0aW5nRm9y
S2V5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV93YWl0aW5nRm9yS2V5OyB9CiAjZW5kaWYKIAor
ICAgIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisKIHByaXZh
dGU6CiAgICAgLy8gZW5naW5lIHN1cHBvcnQKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRU
eXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpOwpA
QCAtMTY5LDcgKzE3NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVBsYXkoKSBvdmVy
cmlkZTsKICAgICB2b2lkIHBsYXRmb3JtUGF1c2UoKSBvdmVycmlkZTsKICAgICBib29sIHBsYXRm
b3JtUGF1c2VkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTWVkaWFUaW1lIGN1cnJlbnRNZWRpYVRp
bWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFZvbHVtZShmbG9hdCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzZXRNdXRlZChib29sKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENsb3NlZENh
cHRpb25zVmlzaWJsZShib29sKSBvdmVycmlkZTsKQEAgLTQxMSw2ICs0MTUsOSBAQCBwcml2YXRl
OgogI2VuZGlmCiAjZW5kaWYKIAorICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW1NZXRhZGF0YUNv
bGxlY3Rvcj4gbV9tZXRhZGF0YUNvbGxlY3RvcjsKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVt
TWV0YWRhdGFPdXRwdXQ+IG1fbWV0YWRhdGFPdXRwdXQ7CisKICAgICBtdXRhYmxlIFJldGFpblB0
cjxOU0FycmF5PiBtX2NhY2hlZFNlZWthYmxlUmFuZ2VzOwogICAgIG11dGFibGUgUmV0YWluUHRy
PE5TQXJyYXk+IG1fY2FjaGVkTG9hZGVkUmFuZ2VzOwogICAgIFJldGFpblB0cjxOU0FycmF5PiBt
X2NhY2hlZFRyYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGU2NjE4YTM4M2ViNDZh
YjE3MmQzODRlNGUzNGU4MTEyYTRkMzM0NjUuLjIwM2U5ZmNjOWM0ODQ4YTA2ZDIxMmMyMzU2OTVk
MWMxN2E5MTZhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTc0LDcgKzE3NCw3IEBA
IHN0YXRpYyB2b2lkIGVuc3VyZU9uTWFpblRocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgZikKICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKGYpKTsKIH0KIAotQGludGVyZmFjZSBXZWJD
b3JlQVZGTW92aWVPYnNlcnZlciA6IE5TT2JqZWN0IDxBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0
UHVzaERlbGVnYXRlPgorQGludGVyZmFjZSBXZWJDb3JlQVZGTW92aWVPYnNlcnZlciA6IE5TT2Jq
ZWN0IDxBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0UHVzaERlbGVnYXRlLCBBVlBsYXllckl0ZW1N
ZXRhZGF0YU91dHB1dFB1c2hEZWxlZ2F0ZSwgQVZQbGF5ZXJJdGVtTWV0YWRhdGFDb2xsZWN0b3JQ
dXNoRGVsZWdhdGU+CiB7CiAgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDPiBtX3BsYXllcjsKICAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVyPiBtX3Rhc2tRdWV1
ZTsKQEAgLTE4Nyw2ICsxODcsOCBAQCBzdGF0aWMgdm9pZCBlbnN1cmVPbk1haW5UaHJlYWQoRnVu
Y3Rpb248dm9pZCgpPiYmIGYpCiAtKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRo
IG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4
dDooTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHQpY29udGV4dDsKIC0g
KHZvaWQpbGVnaWJsZU91dHB1dDooaWQpb3V0cHV0IGRpZE91dHB1dEF0dHJpYnV0ZWRTdHJpbmdz
OihOU0FycmF5ICopc3RyaW5ncyBuYXRpdmVTYW1wbGVCdWZmZXJzOihOU0FycmF5ICopbmF0aXZl
U2FtcGxlcyBmb3JJdGVtVGltZTooQ01UaW1lKWl0ZW1UaW1lOwogLSAodm9pZClvdXRwdXRTZXF1
ZW5jZVdhc0ZsdXNoZWQ6KGlkKW91dHB1dDsKKy0gKHZvaWQpbWV0YWRhdGFDb2xsZWN0b3I6KEFW
UGxheWVySXRlbU1ldGFkYXRhQ29sbGVjdG9yICopbWV0YWRhdGFDb2xsZWN0b3IgZGlkQ29sbGVj
dERhdGVSYW5nZU1ldGFkYXRhR3JvdXBzOihOU0FycmF5PEFWRGF0ZVJhbmdlTWV0YWRhdGFHcm91
cCAqPiAqKW1ldGFkYXRhR3JvdXBzIGluZGV4ZXNPZk5ld0dyb3VwczooTlNJbmRleFNldCAqKWlu
ZGV4ZXNPZk5ld0dyb3VwcyBpbmRleGVzT2ZNb2RpZmllZEdyb3VwczooTlNJbmRleFNldCAqKWlu
ZGV4ZXNPZk1vZGlmaWVkR3JvdXBzOworLSAodm9pZCltZXRhZGF0YU91dHB1dDooQVZQbGF5ZXJJ
dGVtTWV0YWRhdGFPdXRwdXQgKilvdXRwdXQgZGlkT3V0cHV0VGltZWRNZXRhZGF0YUdyb3Vwczoo
TlNBcnJheTxBVlRpbWVkTWV0YWRhdGFHcm91cCAqPiAqKWdyb3VwcyBmcm9tUGxheWVySXRlbVRy
YWNrOihBVlBsYXllckl0ZW1UcmFjayAqKXRyYWNrOwogQGVuZAogCiAjaWYgSEFWRShBVkZPVU5E
QVRJT05fTE9BREVSX0RFTEVHQVRFKQpAQCAtMjcxLDYgKzI3MywxNiBAQCBzdGF0aWMgZGlzcGF0
Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpCiB9CiAjZW5kaWYKIAorc3RhdGlj
IGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsTWV0YWRhdGFQcm9jZXNzaW5nUXVldWUoKQoreworICAg
IHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFF1ZXVlOworICAgIHN0YXRpYyBkaXNwYXRj
aF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAg
ICAgICAgZ2xvYmFsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVNZXRhZGF0
YVByb2Nlc3NpbmcgcXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworICAgIH0pOworICAg
IHJldHVybiBnbG9iYWxRdWV1ZTsKK30KKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lz
dHJhcikKIHsKICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCkBAIC00MzgsNiArNDUwLDE1IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2FuY2VsTG9hZCgpCiAgICAg
fQogCiAgICAgaWYgKG1fYXZQbGF5ZXJJdGVtKSB7CisgICAgICAgIGlmIChtX21ldGFkYXRhQ29s
bGVjdG9yKSB7CisgICAgICAgICAgICBbbV9hdlBsYXllckl0ZW0uZ2V0KCkgcmVtb3ZlTWVkaWFE
YXRhQ29sbGVjdG9yOm1fbWV0YWRhdGFDb2xsZWN0b3IuZ2V0KCldOworICAgICAgICAgICAgbV9t
ZXRhZGF0YUNvbGxlY3RvciA9IG5pbDsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9tZXRhZGF0
YU91dHB1dCkgeworICAgICAgICAgICAgW21fYXZQbGF5ZXJJdGVtLmdldCgpIHJlbW92ZU91dHB1
dDptX21ldGFkYXRhT3V0cHV0LmdldCgpXTsKKyAgICAgICAgICAgIG1fbWV0YWRhdGFPdXRwdXQg
PSBuaWw7CisgICAgICAgIH0KKwogICAgICAgICBmb3IgKE5TU3RyaW5nICprZXlOYW1lIGluIGl0
ZW1LVk9Qcm9wZXJ0aWVzKCkpCiAgICAgICAgICAgICBbbV9hdlBsYXllckl0ZW0uZ2V0KCkgcmVt
b3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDprZXlOYW1lXTsKICAg
ICAgICAgCkBAIC05MzksMTQgKzk2MCwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVySXRlbSgpCiAgICAgaWYgKG1fYXZQbGF5ZXIpCiAg
ICAgICAgIHNldEFWUGxheWVySXRlbShtX2F2UGxheWVySXRlbS5nZXQoKSk7CiAKLSAgICBjb25z
dCBOU1RpbWVJbnRlcnZhbCBsZWdpYmxlT3V0cHV0QWR2YW5jZUludGVydmFsID0gMjsKKyAgICBj
b25zdCBOU1RpbWVJbnRlcnZhbCBhdlBsYXllck91dHB1dEFkdmFuY2VJbnRlcnZhbCA9IDI7CiAK
ICAgICBSZXRhaW5QdHI8TlNBcnJheT4gc3VidHlwZXMgPSBhZG9wdE5TKFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6a0NNU3Vi
dGl0bGVGb3JtYXRUeXBlX1dlYlZUVF0sIG5pbF0pOwogICAgIG1fbGVnaWJsZU91dHB1dCA9IGFk
b3B0TlMoW1BBTDo6YWxsb2NBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0SW5zdGFuY2UoKSBpbml0
V2l0aE1lZGlhU3VidHlwZXNGb3JOYXRpdmVSZXByZXNlbnRhdGlvbjpzdWJ0eXBlcy5nZXQoKV0p
OwogICAgIFttX2xlZ2libGVPdXRwdXQuZ2V0KCkgc2V0U3VwcHJlc3Nlc1BsYXllclJlbmRlcmlu
ZzpZRVNdOwogCiAgICAgW21fbGVnaWJsZU91dHB1dC5nZXQoKSBzZXREZWxlZ2F0ZTptX29iamNP
YnNlcnZlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpXTsKLSAgICBbbV9s
ZWdpYmxlT3V0cHV0LmdldCgpIHNldEFkdmFuY2VJbnRlcnZhbEZvckRlbGVnYXRlSW52b2NhdGlv
bjpsZWdpYmxlT3V0cHV0QWR2YW5jZUludGVydmFsXTsKKyAgICBbbV9sZWdpYmxlT3V0cHV0Lmdl
dCgpIHNldEFkdmFuY2VJbnRlcnZhbEZvckRlbGVnYXRlSW52b2NhdGlvbjphdlBsYXllck91dHB1
dEFkdmFuY2VJbnRlcnZhbF07CiAgICAgW21fbGVnaWJsZU91dHB1dC5nZXQoKSBzZXRUZXh0U3R5
bGluZ1Jlc29sdXRpb246QVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFRleHRTdHlsaW5nUmVzb2x1
dGlvblNvdXJjZUFuZFJ1bGVzT25seV07CiAgICAgW21fYXZQbGF5ZXJJdGVtLmdldCgpIGFkZE91
dHB1dDptX2xlZ2libGVPdXRwdXQuZ2V0KCldOwogCkBAIC05NjEsNiArOTgyLDE1IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKCkK
ICAgICBjcmVhdGVWaWRlb091dHB1dCgpOwogI2VuZGlmCiAKKyAgICBtX21ldGFkYXRhQ29sbGVj
dG9yID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVySXRlbU1ldGFkYXRhQ29sbGVjdG9ySW5z
dGFuY2UoKSBpbml0V2l0aElkZW50aWZpZXJzOm5pbCBjbGFzc2lmeWluZ0xhYmVsczpuaWxdKTsK
KyAgICBbbV9tZXRhZGF0YUNvbGxlY3Rvci5nZXQoKSBzZXREZWxlZ2F0ZTptX29iamNPYnNlcnZl
ci5nZXQoKSBxdWV1ZTpnbG9iYWxNZXRhZGF0YVByb2Nlc3NpbmdRdWV1ZSgpXTsKKyAgICBbbV9h
dlBsYXllckl0ZW0uZ2V0KCkgYWRkTWVkaWFEYXRhQ29sbGVjdG9yOm1fbWV0YWRhdGFDb2xsZWN0
b3IuZ2V0KCldOworCisgICAgbV9tZXRhZGF0YU91dHB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NB
VlBsYXllckl0ZW1NZXRhZGF0YU91dHB1dEluc3RhbmNlKCkgaW5pdFdpdGhJZGVudGlmaWVyczpu
aWxdKTsKKyAgICBbbV9tZXRhZGF0YU91dHB1dC5nZXQoKSBzZXREZWxlZ2F0ZTptX29iamNPYnNl
cnZlci5nZXQoKSBxdWV1ZTpnbG9iYWxNZXRhZGF0YVByb2Nlc3NpbmdRdWV1ZSgpXTsKKyAgICBb
bV9tZXRhZGF0YU91dHB1dC5nZXQoKSBzZXRBZHZhbmNlSW50ZXJ2YWxGb3JEZWxlZ2F0ZUludm9j
YXRpb246YXZQbGF5ZXJPdXRwdXRBZHZhbmNlSW50ZXJ2YWxdOworICAgIFttX2F2UGxheWVySXRl
bS5nZXQoKSBhZGRPdXRwdXQ6bV9tZXRhZGF0YU91dHB1dC5nZXQoKV07CisKICAgICBzZXREZWxh
eUNhbGxiYWNrcyhmYWxzZSk7CiB9CiAKQEAgLTI5NzIsNyArMzAwMiw2IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0QnVmZmVyaW5nUG9saWN5KE1lZGlhUGxh
eWVyOjpCdWZmZXJpCiB9CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKLQogc3RhdGljIGNv
bnN0IEF0b21TdHJpbmcmIG1ldGFkYXRhVHlwZShOU1N0cmluZyAqYXZNZXRhZGF0YUtleVNwYWNl
KQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBxdWlja1Rp
bWVVc2VyRGF0YSgiY29tLmFwcGxlLnF1aWNrdGltZS51ZHRhIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwpAQCAtMjk4MCw2ICszMDA5LDcgQEAgc3RhdGljIGNvbnN0IEF0b21T
dHJpbmcmIG1ldGFkYXRhVHlwZShOU1N0cmluZyAqYXZNZXRhZGF0YUtleVNwYWNlKQogICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBxdWlja1RpbWVNZXRhZGF0YSgi
Y29tLmFwcGxlLnF1aWNrdGltZS5tZHRhIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBpVHVuZXNN
ZXRhZGF0YSgiY29tLmFwcGxlLml0dW5lcyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaWQzTWV0
YWRhdGEoIm9yZy5pZDMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGhsc0RhdGVSYW5nZU1ldGFk
YXRhKCJjb20uYXBwbGUucXVpY2t0aW1lLkhMUyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKIAogICAgIGlmIChbYXZNZXRhZGF0YUtleVNwYWNlIGlzRXF1YWxUb1N0cmluZzpB
Vk1ldGFkYXRhS2V5U3BhY2VRdWlja1RpbWVVc2VyRGF0YV0pCiAgICAgICAgIHJldHVybiBxdWlj
a1RpbWVVc2VyRGF0YTsKQEAgLTI5OTEsMTIgKzMwMjEsNDAgQEAgc3RhdGljIGNvbnN0IEF0b21T
dHJpbmcmIG1ldGFkYXRhVHlwZShOU1N0cmluZyAqYXZNZXRhZGF0YUtleVNwYWNlKQogICAgICAg
ICByZXR1cm4gaVR1bmVzTWV0YWRhdGE7CiAgICAgaWYgKFthdk1ldGFkYXRhS2V5U3BhY2UgaXNF
cXVhbFRvU3RyaW5nOkFWTWV0YWRhdGFLZXlTcGFjZUlEM10pCiAgICAgICAgIHJldHVybiBpZDNN
ZXRhZGF0YTsKKyAgICBpZiAoW2F2TWV0YWRhdGFLZXlTcGFjZSBpc0VxdWFsVG9TdHJpbmc6QVZN
ZXRhZGF0YUtleVNwYWNlSExTRGF0ZVJhbmdlXSkKKyAgICAgICAgcmV0dXJuIGhsc0RhdGVSYW5n
ZU1ldGFkYXRhOwogCiAgICAgcmV0dXJuIGVtcHR5QXRvbSgpOwogfQotCiAjZW5kaWYKIAordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjptZXRhZGF0YUdyb3VwRGlkQXJy
aXZlKGNvbnN0IFJldGFpblB0cjxOU0FycmF5PiYgZ3JvdXBzLCBjb25zdCBNZWRpYVRpbWUmIGN1
cnJlbnRUaW1lKQoreworICAgIGZvciAoQVZEYXRlUmFuZ2VNZXRhZGF0YUdyb3VwICpncm91cCBp
biBncm91cHMuZ2V0KCkpIHsKKyAgICAgICAgYXV0byBncm91cFN0YXJ0RGF0ZSA9IGdyb3VwLnN0
YXJ0RGF0ZS50aW1lSW50ZXJ2YWxTaW5jZTE5NzA7CisgICAgICAgIGF1dG8gZ3JvdXBFbmREYXRl
ID0gZ3JvdXAuZW5kRGF0ZS50aW1lSW50ZXJ2YWxTaW5jZTE5NzA7CisgICAgICAgIGF1dG8gZ3Jv
dXBEdXJhdGlvbiA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShncm91cEVuZERhdGUgLSBn
cm91cFN0YXJ0RGF0ZSk7CisKKyAgICAgICAgLy8gQSBtYW5pZmVzdCB3aXRob3V0IGEgI0VYVC1Y
LVBST0dSQU0tREFURS1USU1FIHdvbid0IGhhdmUgYSBzdGFydCBkYXRlLCBzbyBpZiBjdXJyZW50
RGF0ZQorICAgICAgICAvLyBpcyB6ZXJvIGFzc3VtZSB0aGUgbWV0YWRhdGEgaXRlbXMgc3RhcnQg
YXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyZWFtLgorICAgICAgICBkb3VibGUgZ3JvdXBTdGFy
dFRpbWUgPSAwOworICAgICAgICBpZiAoYXV0byBjdXJyZW50RGF0ZSA9IG1fYXZQbGF5ZXJJdGVt
LmdldCgpLmN1cnJlbnREYXRlLnRpbWVJbnRlcnZhbFNpbmNlMTk3MCkKKyAgICAgICAgICAgIGdy
b3VwU3RhcnRUaW1lID0gZ3JvdXBTdGFydERhdGUgLSBjdXJyZW50RGF0ZSAtIGN1cnJlbnRUaW1l
LnRvRG91YmxlKCk7CisKKyAgICAgICAgYXV0byBncm91cENvcHkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgZm9yIChBVk1ldGFkYXRhSXRlbSAqaXRl
bSBpbiBncm91cC5pdGVtcykgeworICAgICAgICAgICAgUmV0YWluUHRyPEFWTXV0YWJsZU1ldGFk
YXRhSXRlbT4gaXRlbUNvcHkgPSBhZG9wdE5TKFtpdGVtIG11dGFibGVDb3B5XSk7CisgICAgICAg
ICAgICBpZiAoIUNNVElNRV9JU19WQUxJRChpdGVtQ29weS5nZXQoKS50aW1lKSkKKyAgICAgICAg
ICAgICAgICBpdGVtQ29weS5nZXQoKS50aW1lID0gQ01UaW1lTWFrZVdpdGhTZWNvbmRzKGdyb3Vw
U3RhcnRUaW1lLCBNZWRpYVRpbWU6OkRlZmF1bHRUaW1lU2NhbGUpOworICAgICAgICAgICAgaWYg
KCFDTVRJTUVfSVNfVkFMSUQoaXRlbUNvcHkuZ2V0KCkuZHVyYXRpb24pKQorICAgICAgICAgICAg
ICAgIGl0ZW1Db3B5LmdldCgpLmR1cmF0aW9uID0gdG9DTVRpbWUoZ3JvdXBEdXJhdGlvbik7Cisg
ICAgICAgICAgICBbZ3JvdXBDb3B5IGFkZE9iamVjdDppdGVtQ29weS5nZXQoKV07CisgICAgICAg
IH0KKworICAgICAgICBtZXRhZGF0YURpZEFycml2ZShncm91cENvcHksIGN1cnJlbnRUaW1lKTsK
KyAgICB9Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bWV0
YWRhdGFEaWRBcnJpdmUoY29uc3QgUmV0YWluUHRyPE5TQXJyYXk+JiBtZXRhZGF0YSwgY29uc3Qg
TWVkaWFUaW1lJiBtZWRpYVRpbWUpCiB7CiAgICAgbV9jdXJyZW50TWV0YURhdGEgPSBtZXRhZGF0
YSAmJiAhW21ldGFkYXRhIGlzS2luZE9mQ2xhc3M6W05TTnVsbCBjbGFzc11dID8gbWV0YWRhdGEg
OiBuaWw7CkBAIC0zMDI1LDEwICszMDgzLDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6bWV0YWRhdGFEaWRBcnJpdmUoY29uc3QgUmV0YWluUHRyPE5TQXJyCiAg
ICAgbV9tZXRhZGF0YVRyYWNrLT51cGRhdGVQZW5kaW5nQ3VlRW5kVGltZXMoZWFybGllc3RTdGFy
dFRpbWUpOwogCiAgICAgZm9yIChBVk1ldGFkYXRhSXRlbSAqaXRlbSBpbiBtX2N1cnJlbnRNZXRh
RGF0YS5nZXQoKSkgewotICAgICAgICBNZWRpYVRpbWUgc3RhcnQgPSBzdGQ6Om1heChQQUw6OnRv
TWVkaWFUaW1lKGl0ZW0udGltZSksIE1lZGlhVGltZTo6emVyb1RpbWUoKSk7CisgICAgICAgIE1l
ZGlhVGltZSBzdGFydDsKKyAgICAgICAgaWYgKENNVElNRV9JU19WQUxJRChpdGVtLnRpbWUpKQor
ICAgICAgICAgICAgc3RhcnQgPSBzdGQ6Om1heChQQUw6OnRvTWVkaWFUaW1lKGl0ZW0udGltZSks
IE1lZGlhVGltZTo6emVyb1RpbWUoKSk7CisKICAgICAgICAgTWVkaWFUaW1lIGVuZCA9IE1lZGlh
VGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICAgICAgaWYgKENNVElNRV9JU19WQUxJ
RChpdGVtLmR1cmF0aW9uKSkKLSAgICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgUEFMOjp0b01lZGlh
VGltZShpdGVtLmR1cmF0aW9uKTsKKyAgICAgICAgYXV0byBkdXJhdGlvbiA9IGl0ZW0uZHVyYXRp
b247CisgICAgICAgIGlmIChDTVRJTUVfSVNfVkFMSUQoZHVyYXRpb24pICYmIENNVGltZUdldFNl
Y29uZHMoZHVyYXRpb24pID4gMC4wMDEpCisgICAgICAgICAgICBlbmQgPSBzdGFydCArIFBBTDo6
dG9NZWRpYVRpbWUoZHVyYXRpb24pOwogCiAgICAgICAgIEF0b21TdHJpbmcgdHlwZSA9IG51bGxB
dG9tKCk7CiAgICAgICAgIGlmIChpdGVtLmtleVNwYWNlKQpAQCAtMzI1NCw3ICszMzE2LDYgQEAg
TlNBcnJheSogaXRlbUtWT1Byb3BlcnRpZXMoKQogICAgICAgICBAInBsYXliYWNrQnVmZmVyRW1w
dHkiLAogICAgICAgICBAImR1cmF0aW9uIiwKICAgICAgICAgQCJoYXNFbmFibGVkQXVkaW8iLAot
ICAgICAgICBAInRpbWVkTWV0YWRhdGEiLAogICAgICAgICBAImNhblBsYXlGYXN0Rm9yd2FyZCIs
CiAgICAgICAgIEAiY2FuUGxheUZhc3RSZXZlcnNlIiwKICAgICBuaWxdOwpAQCAtMzM3NSwxNCAr
MzQzNiw3IEBAIE5TQXJyYXkqIHBsYXllcktWT1Byb3BlcnRpZXMoKQogICAgICAgICAgICAgICAg
ICAgICBwbGF5ZXItPnByZXNlbnRhdGlvblNpemVEaWRDaGFuZ2UoRmxvYXRTaXplKFtuZXdWYWx1
ZSBzaXplVmFsdWVdKSk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVh
bFRvU3RyaW5nOkAiZHVyYXRpb24iXSkKICAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5kdXJh
dGlvbkRpZENoYW5nZShQQUw6OnRvTWVkaWFUaW1lKFtuZXdWYWx1ZSBDTVRpbWVWYWx1ZV0pKTsK
LSAgICAgICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJ0aW1l
ZE1ldGFkYXRhIl0gJiYgbmV3VmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgTWVkaWFUaW1l
IG5vdzsKLSAgICAgICAgICAgICAgICAgICAgQ01UaW1lIGl0ZW1UaW1lID0gWyhBVlBsYXllckl0
ZW0gKilvYmplY3QuZ2V0KCkgY3VycmVudFRpbWVdOwotICAgICAgICAgICAgICAgICAgICBpZiAo
Q01USU1FX0lTX05VTUVSSUMoaXRlbVRpbWUpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm93
ID0gc3RkOjptYXgoUEFMOjp0b01lZGlhVGltZShpdGVtVGltZSksIE1lZGlhVGltZTo6emVyb1Rp
bWUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHBsYXllci0+bWV0YWRhdGFEaWRBcnJpdmUoUmV0
YWluUHRyPE5TQXJyYXk+KG5ld1ZhbHVlKSwgbm93KTsKLSAgICAgICAgICAgICAgICAgICAgc2hv
dWxkTG9nVmFsdWUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFtrZXlQYXRo
IGlzRXF1YWxUb1N0cmluZzpAImNhblBsYXlGYXN0UmV2ZXJzZSJdKQorICAgICAgICAgICAgICAg
IGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImNhblBsYXlGYXN0UmV2ZXJzZSJd
KQogICAgICAgICAgICAgICAgICAgICBwbGF5ZXItPmNhblBsYXlGYXN0UmV2ZXJzZURpZENoYW5n
ZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBh
dGggaXNFcXVhbFRvU3RyaW5nOkAiY2FuUGxheUZhc3RGb3J3YXJkIl0pCiAgICAgICAgICAgICAg
ICAgICAgIHBsYXllci0+Y2FuUGxheUZhc3RGb3J3YXJkRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29s
VmFsdWVdKTsKQEAgLTM0NDksNiArMzUwMywzNyBAQCBOU0FycmF5KiBwbGF5ZXJLVk9Qcm9wZXJ0
aWVzKCkKICAgICB9KTsKIH0KIAorLSAodm9pZCltZXRhZGF0YU91dHB1dDooQVZQbGF5ZXJJdGVt
TWV0YWRhdGFPdXRwdXQgKilvdXRwdXQgZGlkT3V0cHV0VGltZWRNZXRhZGF0YUdyb3VwczooTlNB
cnJheTxBVlRpbWVkTWV0YWRhdGFHcm91cCAqPiAqKWdyb3VwcyBmcm9tUGxheWVySXRlbVRyYWNr
OihBVlBsYXllckl0ZW1UcmFjayAqKXRyYWNrCit7CisgICAgVU5VU0VEX1BBUkFNKG91dHB1dCk7
CisgICAgVU5VU0VEX1BBUkFNKHRyYWNrKTsKKworICAgIGVuc3VyZU9uTWFpblRocmVhZChbc2Vs
Ziwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgbWV0YWRhdGFHcm91cHMgPSByZXRhaW5Q
dHIoZ3JvdXBzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2so
W3BsYXllciA9IG1fcGxheWVyLCBtZXRhZGF0YUdyb3VwcyA9IFdURk1vdmUobWV0YWRhdGFHcm91
cHMpLCBjdXJyZW50VGltZSA9IG1fcGxheWVyLT5jdXJyZW50TWVkaWFUaW1lKCldIHsKKyAgICAg
ICAgICAgIGlmICghcGxheWVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgZm9yIChBVkRhdGVSYW5nZU1ldGFkYXRhR3JvdXAgKmdyb3VwIGluIG1ldGFkYXRhR3JvdXBz
LmdldCgpKQorICAgICAgICAgICAgICAgIHBsYXllci0+bWV0YWRhdGFEaWRBcnJpdmUocmV0YWlu
UHRyKGdyb3VwLml0ZW1zKSwgY3VycmVudFRpbWUpOworICAgICAgICB9KTsKKyAgICB9KTsKK30K
KworLSAodm9pZCltZXRhZGF0YUNvbGxlY3RvcjooQVZQbGF5ZXJJdGVtTWV0YWRhdGFDb2xsZWN0
b3IgKiltZXRhZGF0YUNvbGxlY3RvciBkaWRDb2xsZWN0RGF0ZVJhbmdlTWV0YWRhdGFHcm91cHM6
KE5TQXJyYXk8QVZEYXRlUmFuZ2VNZXRhZGF0YUdyb3VwICo+ICopbWV0YWRhdGFHcm91cHMgaW5k
ZXhlc09mTmV3R3JvdXBzOihOU0luZGV4U2V0ICopaW5kZXhlc09mTmV3R3JvdXBzIGluZGV4ZXNP
Zk1vZGlmaWVkR3JvdXBzOihOU0luZGV4U2V0ICopaW5kZXhlc09mTW9kaWZpZWRHcm91cHMKK3sK
KyAgICBVTlVTRURfUEFSQU0obWV0YWRhdGFDb2xsZWN0b3IpOworICAgIFVOVVNFRF9QQVJBTShp
bmRleGVzT2ZOZXdHcm91cHMpOworICAgIFVOVVNFRF9QQVJBTShpbmRleGVzT2ZNb2RpZmllZEdy
b3Vwcyk7CisKKyAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRh
aW5QdHIoc2VsZiksIG1ldGFkYXRhR3JvdXBzID0gcmV0YWluUHRyKG1ldGFkYXRhR3JvdXBzKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW3BsYXllciA9IG1f
cGxheWVyLCBtZXRhZGF0YUdyb3VwcyA9IFdURk1vdmUobWV0YWRhdGFHcm91cHMpLCBjdXJyZW50
VGltZSA9IG1fcGxheWVyLT5jdXJyZW50TWVkaWFUaW1lKCldIHsKKyAgICAgICAgICAgIGlmICgh
cGxheWVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgcGxheWVyLT5t
ZXRhZGF0YUdyb3VwRGlkQXJyaXZlKG1ldGFkYXRhR3JvdXBzLCBjdXJyZW50VGltZSk7CisgICAg
ICAgIH0pOworICAgIH0pOworfQogQGVuZAogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVS
X0RFTEVHQVRFKQpAQCAtMzUwNiw3ICszNTkxLDcgQEAgTlNBcnJheSogcGxheWVyS1ZPUHJvcGVy
dGllcygpCiAKIEBlbmQKIAotI2VuZGlmCisjZW5kaWYgLy8gSEFWRShBVkZPVU5EQVRJT05fTE9B
REVSX0RFTEVHQVRFKQogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fVklERU9fT1VUUFVUKQogCkBA
IC0zNTM0LDYgKzM2MTksNiBAQCBOU0FycmF5KiBwbGF5ZXJLVk9Qcm9wZXJ0aWVzKCkKIAogQGVu
ZAogCi0jZW5kaWYKKyNlbmRpZiAvLyBIQVZFKEFWRk9VTkRBVElPTl9WSURFT19PVVRQVVQpCiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGRjZjRiZmE3YWYxMjYzZjM3YWJlMWY0OTk0MWFhMjA4ZDY1OGZhMTMu
LmM5YmE1Y2U5NjRhN2U0YWVjY2JhZGVmNmUxZDFkODg5YTA5YjYxOTUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxOS0xMC0xOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBTdXBwb3J0IGZvciBjYWxsYmFja3MgZm9yIG1hbmlmZXN0IGV2ZW50cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTAxCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NDI3NzM2Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvbWVkaWEvcmVzb3VyY2VzL2hs
cy9tZXRhZGF0YS9wcm9nX2luZGV4Lm0zdTg6CisgICAgICAgICogaHR0cC90ZXN0cy9tZWRpYS90
cmFjay1pbi1iYW5kLWhscy1tZXRhZGF0YS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90
ZXN0cy9tZWRpYS90cmFjay1pbi1iYW5kLWhscy1tZXRhZGF0YS5odG1sOgorCiAyMDE5LTEwLTE0
ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVwbGFjZSByZWZ0ZXN0
IHNjcmlwdHMtaGVpZ2h0Lmh0bWwgd2l0aCBzY3JpcHQgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvcmVzb3VyY2VzL2hscy9tZXRhZGF0YS9wcm9nX2luZGV4
Lm0zdTggYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3Jlc291cmNlcy9obHMvbWV0YWRh
dGEvcHJvZ19pbmRleC5tM3U4CmluZGV4IDk2OTkwZmYxNjM0YmUyYTA3MWI3MTJiMTVlY2IxYjc2
NWVjMjY2NDMuLjFmMmVkNDcyMTJlOTkzYmJmZTE0Mjc3NDQ5Y2UzODY0Y2MxNTgyNGMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvcmVzb3VyY2VzL2hscy9tZXRhZGF0
YS9wcm9nX2luZGV4Lm0zdTgKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9yZXNv
dXJjZXMvaGxzL21ldGFkYXRhL3Byb2dfaW5kZXgubTN1OApAQCAtMyw2ICszLDggQEAKICNFWFQt
WC1WRVJTSU9OOjMKICNFWFQtWC1NRURJQS1TRVFVRU5DRTowCiAjRVhULVgtUExBWUxJU1QtVFlQ
RTpWT0QKKyNFWFQtWC1EQVRFUkFOR0U6SUQ9ImN1ZS0xIixTVEFSVC1EQVRFPSIyMDE5LTAxLTAx
VDAwOjAwOjAwLjAwMFoiLERVUkFUSU9OPTUuMDAwMDAwLFgtU1RBUlQtT0ZGU0VUPSIwLjAwMDAw
MCIKKyNFWFQtWC1EQVRFUkFOR0U6SUQ9ImN1ZS0yIixTVEFSVC1EQVRFPSIyMDE5LTAxLTAxVDAw
OjAwOjA1LjAwMFoiLERVUkFUSU9OPTUuMDAwMDAwLFgtRU5ELU9GRlNFVD0iNS4wMDAwMDAiCiAj
RVhUSU5GOjUuMDAwMDAsCQogZmlsZVNlcXVlbmNlMi50cwogI0VYVElORjo0LjgwMDAwLAkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdHJhY2staW4tYmFuZC1obHMt
bWV0YWRhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS90cmFj
ay1pbi1iYW5kLWhscy1tZXRhZGF0YS1leHBlY3RlZC50eHQKaW5kZXggNDBlNmNjNzdjMTQ5OTA3
OWJmYTcyYzMxNWY4OGU2NzQxYTJiN2MyOC4uMjg1YjQ5MTE4MzczZGM1NzUwZWM5NjBhOTAyOGRl
NzA0M2NhNmU5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS90cmFj
ay1pbi1iYW5kLWhscy1tZXRhZGF0YS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9tZWRpYS90cmFjay1pbi1iYW5kLWhscy1tZXRhZGF0YS1leHBlY3RlZC50eHQKQEAg
LTE1LDQyICsxNSw1MiBAQCBFVkVOVChjYW5wbGF5dGhyb3VnaCkKIAogKiogU3RhcnQgcGxheWJh
Y2ssIHdhaXQgZm9yIGFsbCBjdWVzIHRvIGxvYWQKIFJVTih2aWRlby5wbGF5KCkpCi1FVkVOVChj
dWVjaGFuZ2UpCi1FVkVOVChjdWVjaGFuZ2UpCi1FVkVOVChjdWVjaGFuZ2UpCi1FVkVOVChjdWVj
aGFuZ2UpCi1FVkVOVChjdWVjaGFuZ2UpCi1FVkVOVChjdWVjaGFuZ2UpCiAKICoqIFZhbGlkYXRl
IGN1ZSBkYXRhCiAqIDEKIEVYUEVDVEVEICh0eXBlb2YoY3VlKSAhPSAndW5kZWZpbmVkJykgT0sK
LUVYUEVDVEVEIChjdWUudHlwZSA9PSAnb3JnLmlkMycpIE9LCiBFWFBFQ1RFRCAoY3VlLmRhdGEg
PT0gJ251bGwnKSBPSworRVhQRUNURUQgKGN1ZS50eXBlID09ICdjb20uYXBwbGUucXVpY2t0aW1l
LkhMUycpIE9LCiBFWFBFQ1RFRCAoY3VlLnZhbHVlICE9ICdudWxsJykgT0sKLUVYUEVDVEVEIChj
dWUudmFsdWUua2V5ID09ICciVElUMiInKSBPSwotRVhQRUNURUQgKGN1ZS52YWx1ZS5kYXRhID09
ICciU3RyZWFtIENvdW50aW5nIicpIE9LCitFWFBFQ1RFRCAoY3VlLnZhbHVlLmtleSA9PSAnIlgt
U1RBUlQtT0ZGU0VUIicpIE9LCitFWFBFQ1RFRCAoY3VlLnZhbHVlLmRhdGEgPT0gJyIwLjAwMDAw
MCInKSBPSwogCiAqIDIKIEVYUEVDVEVEICh0eXBlb2YoY3VlKSAhPSAndW5kZWZpbmVkJykgT0sK
K0VYUEVDVEVEIChjdWUuZGF0YSA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAoY3VlLnR5cGUgPT0g
J2NvbS5hcHBsZS5xdWlja3RpbWUuSExTJykgT0sKK0VYUEVDVEVEIChjdWUudmFsdWUgIT0gJ251
bGwnKSBPSworRVhQRUNURUQgKGN1ZS52YWx1ZS5rZXkgPT0gJyJYLUVORC1PRkZTRVQiJykgT0sK
K0VYUEVDVEVEIChjdWUudmFsdWUuZGF0YSA9PSAnIjUuMDAwMDAwIicpIE9LCisKKyogMworRVhQ
RUNURUQgKHR5cGVvZihjdWUpICE9ICd1bmRlZmluZWQnKSBPSworRVhQRUNURUQgKGN1ZS5kYXRh
ID09ICdudWxsJykgT0sKIEVYUEVDVEVEIChjdWUudHlwZSA9PSAnb3JnLmlkMycpIE9LCitFWFBF
Q1RFRCAoY3VlLnZhbHVlICE9ICdudWxsJykgT0sKK0VYUEVDVEVEIChjdWUudmFsdWUua2V5ID09
ICciVElUMiInKSBPSworRVhQRUNURUQgKGN1ZS52YWx1ZS5kYXRhID09ICciU3RyZWFtIENvdW50
aW5nIicpIE9LCisKKyogNAorRVhQRUNURUQgKHR5cGVvZihjdWUpICE9ICd1bmRlZmluZWQnKSBP
SwogRVhQRUNURUQgKGN1ZS5kYXRhID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChjdWUudHlwZSA9
PSAnb3JnLmlkMycpIE9LCiBFWFBFQ1RFRCAoY3VlLnZhbHVlICE9ICdudWxsJykgT0sKIEVYUEVD
VEVEIChjdWUudmFsdWUua2V5ID09ICciVFBFMSInKSBPSwogRVhQRUNURUQgKGN1ZS52YWx1ZS5k
YXRhID09ICciQW5keSInKSBPSwogCi0qIDMKKyogNQogRVhQRUNURUQgKHR5cGVvZihjdWUpICE9
ICd1bmRlZmluZWQnKSBPSwotRVhQRUNURUQgKGN1ZS50eXBlID09ICdvcmcuaWQzJykgT0sKIEVY
UEVDVEVEIChjdWUuZGF0YSA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAoY3VlLnR5cGUgPT0gJ29y
Zy5pZDMnKSBPSwogRVhQRUNURUQgKGN1ZS52YWx1ZSAhPSAnbnVsbCcpIE9LCiBFWFBFQ1RFRCAo
Y3VlLnZhbHVlLmtleSA9PSAnIlRBTEIiJykgT0sKIEVYUEVDVEVEIChjdWUudmFsdWUuZGF0YSA9
PSAnIkdyZWF0ZXN0IEhpdHMiJykgT0sKIAotKiA0CisqIDYKIEVYUEVDVEVEICh0eXBlb2YoY3Vl
KSAhPSAndW5kZWZpbmVkJykgT0sKLUVYUEVDVEVEIChjdWUudHlwZSA9PSAnb3JnLmlkMycpIE9L
CiBFWFBFQ1RFRCAoY3VlLmRhdGEgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKGN1ZS50eXBlID09
ICdvcmcuaWQzJykgT0sKIEVYUEVDVEVEIChjdWUudmFsdWUgIT0gJ251bGwnKSBPSwogRVhQRUNU
RUQgKGN1ZS52YWx1ZS5rZXkgPT0gJyJHRU9CIicpIE9LCiBFWFBFQ1RFRCAoY3VlLnZhbHVlLmRh
dGEgPT0gJ3t9JykgT0sKQEAgLTU4LDI1ICs2OCwyNSBAQCBFWFBFQ1RFRCAoY3VlLnZhbHVlLnR5
cGUgPT0gJyJpbWFnZS9wbmciJykgT0sKIEVYUEVDVEVEIChjdWUudmFsdWUuaW5mbyA9PSAnIk91
ciBIZXJvIicpIE9LCiBFWFBFQ1RFRCAoY3VlLnZhbHVlLm5hbWUgPT0gJyJhYmUucG5nIicpIE9L
CiAKLSogNQorKiA3CiBFWFBFQ1RFRCAodHlwZW9mKGN1ZSkgIT0gJ3VuZGVmaW5lZCcpIE9LCi1F
WFBFQ1RFRCAoY3VlLnR5cGUgPT0gJ29yZy5pZDMnKSBPSwogRVhQRUNURUQgKGN1ZS5kYXRhID09
ICdudWxsJykgT0sKK0VYUEVDVEVEIChjdWUudHlwZSA9PSAnb3JnLmlkMycpIE9LCiBFWFBFQ1RF
RCAoY3VlLnZhbHVlICE9ICdudWxsJykgT0sKIEVYUEVDVEVEIChjdWUudmFsdWUua2V5ID09ICci
QVBJQyInKSBPSwogRVhQRUNURUQgKGN1ZS52YWx1ZS5kYXRhID09ICd7fScpIE9LCiBFWFBFQ1RF
RCAoY3VlLnZhbHVlLnR5cGUgPT0gJyJpbWFnZS9wbmciJykgT0sKIAotKiA2CisqIDgKIEVYUEVD
VEVEICh0eXBlb2YoY3VlKSAhPSAndW5kZWZpbmVkJykgT0sKLUVYUEVDVEVEIChjdWUudHlwZSA9
PSAnb3JnLmlkMycpIE9LCiBFWFBFQ1RFRCAoY3VlLmRhdGEgPT0gJ251bGwnKSBPSworRVhQRUNU
RUQgKGN1ZS50eXBlID09ICdvcmcuaWQzJykgT0sKIEVYUEVDVEVEIChjdWUudmFsdWUgIT0gJ251
bGwnKSBPSwogRVhQRUNURUQgKGN1ZS52YWx1ZS5rZXkgPT0gJyJUWFhYIicpIE9LCiBFWFBFQ1RF
RCAoY3VlLnZhbHVlLmRhdGEgPT0gJyJUZXh0IEJsb2IiJykgT0sKIAogKiogRXh0cmFjdCBpbWFn
ZXMgZnJvbSBjdWUgZGF0YSwgdmFsaWRhdGUgYnkgc2V0dGluZyBpbWcuc3JjCi1SVU4oY3VlSW1h
Z2VEYXRhID0gdHJhY2suY3Vlc1szXS52YWx1ZS5kYXRhKQorUlVOKGN1ZUltYWdlRGF0YSA9IHRy
YWNrLmN1ZXNbNV0udmFsdWUuZGF0YSkKIEVYUEVDVEVEIChjdWVJbWFnZURhdGEgaW5zdGFuY2Vv
ZiBBcnJheUJ1ZmZlciA9PSAndHJ1ZScpIE9LCiBSVU4oYmxvYlVybCA9IFVSTC5jcmVhdGVPYmpl
Y3RVUkwobmV3IEJsb2IoW2N1ZUltYWdlRGF0YV0sIHsgdHlwZTogJ2ltYWdlL3BuZycgfSkpKQog
UlVOKGltYWdlRWxlbWVudC5zcmMgPSBibG9iVXJsKQpAQCAtODQsNyArOTQsNyBAQCBFVkVOVChs
b2FkKQogRVhQRUNURUQgKGltYWdlRWxlbWVudC53aWR0aCA9PSAnNzYnKSBPSwogRVhQRUNURUQg
KGltYWdlRWxlbWVudC5oZWlnaHQgPT0gJzEwMycpIE9LCiAKLVJVTihjdWVJbWFnZURhdGEgPSB0
cmFjay5jdWVzWzRdLnZhbHVlLmRhdGEpCitSVU4oY3VlSW1hZ2VEYXRhID0gdHJhY2suY3Vlc1s2
XS52YWx1ZS5kYXRhKQogRVhQRUNURUQgKGN1ZUltYWdlRGF0YSBpbnN0YW5jZW9mIEFycmF5QnVm
ZmVyID09ICd0cnVlJykgT0sKIFJVTihibG9iVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcg
QmxvYihbY3VlSW1hZ2VEYXRhXSwgeyB0eXBlOiAnaW1hZ2UvcG5nJyB9KSkpCiBSVU4oaW1hZ2VF
bGVtZW50LnNyYyA9IGJsb2JVcmwpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21lZGlhL3RyYWNrLWluLWJhbmQtaGxzLW1ldGFkYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL21lZGlhL3RyYWNrLWluLWJhbmQtaGxzLW1ldGFkYXRhLmh0bWwKaW5kZXggOGY5NTNj
ZTQwNzM2NjI3YzgxN2JlNWY3ZjI0NmE4ZWViNThiOWY3MC4uM2VkZjE1Y2VlYmJjMDY5M2ZiNDlj
M2JlNzZmMzk4Y2VlNDI3YjhhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9t
ZWRpYS90cmFjay1pbi1iYW5kLWhscy1tZXRhZGF0YS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWVkaWEvdHJhY2staW4tYmFuZC1obHMtbWV0YWRhdGEuaHRtbApAQCAtMTEsMTIg
KzExLDE0IEBACiAgICAgICAgICAgICB2YXIgY3VlY2hhbmdlQ291bnQgPSAwOwogICAgICAgICAg
ICAgdmFyIGxvYWRDb3VudCA9IDA7CiAgICAgICAgICAgICB2YXIgY3VlRGF0YSA9IFsKLSAgICAg
ICAgICAgICAgICAgeyJrZXkiIDogIlRJVDIiLCAiZGF0YSIgOiAiU3RyZWFtIENvdW50aW5nIn0s
Ci0gICAgICAgICAgICAgICAgIHsia2V5IiA6ICJUUEUxIiwgImRhdGEiIDogIkFuZHkifSwKLSAg
ICAgICAgICAgICAgICAgeyJrZXkiIDogIlRBTEIiLCAiZGF0YSIgOiAiR3JlYXRlc3QgSGl0cyJ9
LAotICAgICAgICAgICAgICAgICB7ImtleSIgOiAiR0VPQiIsICJkYXRhIiA6IHt9LCAidHlwZSIg
OiAiaW1hZ2UvcG5nIiwgImluZm8iIDogIk91ciBIZXJvIiwgIm5hbWUiIDogImFiZS5wbmcifSwK
LSAgICAgICAgICAgICAgICAgeyJrZXkiIDogIkFQSUMiLCAiZGF0YSIgOiB7fSwgInR5cGUiIDog
ImltYWdlL3BuZyJ9LAotICAgICAgICAgICAgICAgICB7ImtleSIgOiAiVFhYWCIsICJkYXRhIiA6
ICJUZXh0IEJsb2IifSwKKyAgICAgICAgICAgICAgICAgeyJrZXkiIDogIlgtU1RBUlQtT0ZGU0VU
IiwgImtleVNwYWNlIiA6ICJjb20uYXBwbGUucXVpY2t0aW1lLkhMUyIsICJkYXRhIiA6ICIwLjAw
MDAwMCJ9LAorICAgICAgICAgICAgICAgICB7ImtleSIgOiAiWC1FTkQtT0ZGU0VUIiwgICAia2V5
U3BhY2UiIDogImNvbS5hcHBsZS5xdWlja3RpbWUuSExTIiwgImRhdGEiIDogIjUuMDAwMDAwIn0s
CisgICAgICAgICAgICAgICAgIHsia2V5IiA6ICJUSVQyIiwgICAgICAgICAgICJrZXlTcGFjZSIg
OiAib3JnLmlkMyIsICAgICAgICAgICAgICAgICAiZGF0YSIgOiAiU3RyZWFtIENvdW50aW5nIn0s
CisgICAgICAgICAgICAgICAgIHsia2V5IiA6ICJUUEUxIiwgICAgICAgICAgICJrZXlTcGFjZSIg
OiAib3JnLmlkMyIsICAgICAgICAgICAgICAgICAiZGF0YSIgOiAiQW5keSJ9LAorICAgICAgICAg
ICAgICAgICB7ImtleSIgOiAiVEFMQiIsICAgICAgICAgICAia2V5U3BhY2UiIDogIm9yZy5pZDMi
LCAgICAgICAgICAgICAgICAgImRhdGEiIDogIkdyZWF0ZXN0IEhpdHMifSwKKyAgICAgICAgICAg
ICAgICAgeyJrZXkiIDogIkdFT0IiLCAgICAgICAgICAgImtleVNwYWNlIiA6ICJvcmcuaWQzIiwg
ICAgICAgICAgICAgICAgICJkYXRhIiA6IHt9LCAidHlwZSIgOiAiaW1hZ2UvcG5nIiwgImluZm8i
IDogIk91ciBIZXJvIiwgIm5hbWUiIDogImFiZS5wbmcifSwKKyAgICAgICAgICAgICAgICAgeyJr
ZXkiIDogIkFQSUMiLCAgICAgICAgICAgImtleVNwYWNlIiA6ICJvcmcuaWQzIiwgICAgICAgICAg
ICAgICAgICJkYXRhIiA6IHt9LCAidHlwZSIgOiAiaW1hZ2UvcG5nIn0sCisgICAgICAgICAgICAg
ICAgIHsia2V5IiA6ICJUWFhYIiwgICAgICAgICAgICJrZXlTcGFjZSIgOiAib3JnLmlkMyIsICAg
ICAgICAgICAgICAgICAiZGF0YSIgOiAiVGV4dCBCbG9iIn0sCiAgICAgICAgICAgICBdOwogICAg
ICAgICAgICAgdmFyIGltYWdlU2l6ZXMgPSBbIFs3NiwgMTAzXSwgWzEwMCwgMTAwXSBdOwogICAg
ICAgICAgICAgdmFyIGN1ZTsKQEAgLTQzLDcgKzQ1LDcgQEAKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHRlc3RJbWFnZSg0
KTsKKyAgICAgICAgICAgICAgICB0ZXN0SW1hZ2UoNik7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGZ1bmN0aW9uIHRlc3RJbWFnZShjdWVJbmRleCkKQEAgLTYwLDYgKzYyLDkgQEAKICAg
ICAgICAgICAgICAgICAvLyBNYWtlIGEgbXV0YWJsZSBjb3B5IG9mIG9ic2VydmVkIHNvIHdlIGNh
biByZW1vdmUgYXR0cmlidXRlcyBhcyB0aGV5IGFyZSBwcm9jZXNzZWQuCiAgICAgICAgICAgICAg
ICAgb2JzZXJ2ZWQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9ic2VydmVkKSk7CiAgICAg
ICAgICAgICAgICAgZm9yIChwcm9wZXJ0eSBpbiBleHBlY3RlZCkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAocHJvcGVydHkgPT09ICJrZXlTcGFjZSIpCisgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKwogICAgICAgICAgICAgICAgICAgICBvYnNlcnZlZFZhbHVlID0gb2JzZXJ2
ZWRbcHJvcGVydHldOwogICAgICAgICAgICAgICAgICAgICBleHBlY3RlZFZhbHVlID0gZXhwZWN0
ZWRbcHJvcGVydHldOwogICAgICAgICAgICAgICAgICAgICBjdWUudmFsdWVbcHJvcGVydHldID0g
b2JzZXJ2ZWRWYWx1ZTsKQEAgLTc5LDIxICs4NCwyMCBAQAogCiAgICAgICAgICAgICBmdW5jdGlv
biBjdWVjaGFuZ2UoZXZlbnQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCJFVkVOVChjdWVjaGFuZ2UpIik7Ci0gICAgICAgICAgICAgICAgaWYgKCsrY3VlY2hh
bmdlQ291bnQgIT0gNikKKyAgICAgICAgICAgICAgICBpZiAoKytjdWVjaGFuZ2VDb3VudCAhPSBj
dWVEYXRhLmxlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCI8YnI+PGVtPioqIFZhbGlkYXRlIGN1ZSBkYXRhPC9lbT4iKTsK
ICAgICAgICAgICAgICAgICB0cmFjay5yZW1vdmVFdmVudExpc3RlbmVyKCJjdWVjaGFuZ2UiLCBj
dWVjaGFuZ2UsIHRydWUpOwogICAgICAgICAgICAgICAgIHZpZGVvLnBhdXNlKCk7CiAKLSAgICAg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykgeworICAgICAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgY3VlRGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoYDxlbT4qICR7aSArIDF9PC9lbT5gKTsKICAgICAgICAgICAg
ICAgICAgICAgY3VlID0gdHJhY2suY3Vlc1tpXTsKIAogICAgICAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInR5cGVvZihjdWUpIiwgdW5kZWZpbmVkLCAiIT0iKTsKLSAgICAgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJjdWUudHlwZSIsICJvcmcuaWQzIik7CiAgICAgICAgICAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgiY3VlLmRhdGEiLCBudWxsKTsKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJjdWUudHlwZSIsIGN1ZURhdGFbaV0ua2V5U3BhY2UpOwogICAgICAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImN1ZS52YWx1ZSIsIG51bGwsICIhPSIpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAodHlwZW9mKGN1ZS52YWx1ZSkgPT0gdW5kZWZpbmVkKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdChgRXJyb3I6IGN1ZS52YWx1ZSBpcyB1bmRl
ZmluZWQhYCk7CkBAIC0xMDcsNyArMTExLDcgQEAKICAgICAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIjxlbT4qKiBFeHRyYWN0IGltYWdlcyBmcm9tIGN1ZSBkYXRhLCB2YWxpZGF0ZSBieSBzZXR0
aW5nIGltZy5zcmM8L2VtPiIpOwogICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudCA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoIiNwaG90byIpOwogICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVu
dCgnbG9hZCcsIGltYWdlTG9hZCwgZmFsc2UsIGZhbHNlLCBpbWFnZUVsZW1lbnQpCi0gICAgICAg
ICAgICAgICAgdGVzdEltYWdlKDMpOworICAgICAgICAgICAgICAgIHRlc3RJbWFnZSg1KTsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gY2FucGxheXRocm91Z2goKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381350</attachid>
            <date>2019-10-18 17:09:01 -0700</date>
            <delta_ts>2019-10-25 11:04:55 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-202101-20191018170900.patch</filename>
            <type>text/plain</type>
            <size>29242</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE4N2ZhZDA5NmE0ZmE4
NGI3MDE2YTU3MGUxYzIyZjI2ODhlYzYyYi4uM2E2N2NkMTQzMTlhOTJhYWM1ZWYzMDc5MjU5YjMw
ZTM3N2Y3MzNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE5LTEwLTE4ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgZm9y
IGNhbGxiYWNrcyBmb3IgbWFuaWZlc3QgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIxMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0
Mjc3MzYyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKyAgICAgICAgCisgICAg
ICAgIFVzZSBBVlBsYXllckl0ZW1NZXRhZGF0YUNvbGxlY3RvciB0byBnZXQgbWFuaWZlc3QgYmFz
ZWQgdGltZSBtZXRhZGF0YS4gVXNlIAorICAgICAgICBBVlBsYXllckl0ZW1NZXRhZGF0YU91dHB1
dCB0byBnZXQgdGltZSBtZXRhZGF0YSBpbnN0ZWFkIG9mIGxpc3RlbmluZyBmb3IgYSAidGltZWRN
ZXRhZGF0YSIKKyAgICAgICAgS1ZPIG9uIEFWUGxheWVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgZXhpc3RpbmcgdGVzdCB1cGRhdGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxNZXRh
ZGF0YVByb2Nlc3NpbmdRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpjYW5jZWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVySXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjptZXRhZGF0YVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bWV0YWRhdGFHcm91cERpZEFycml2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjptZXRhZGF0
YURpZEFycml2ZSk6CisgICAgICAgIChXZWJDb3JlOjppdGVtS1ZPUHJvcGVydGllcyk6CisgICAg
ICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZP
YmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2Vy
dmVyIG1ldGFkYXRhT3V0cHV0OmRpZE91dHB1dFRpbWVkTWV0YWRhdGFHcm91cHM6ZnJvbVBsYXll
ckl0ZW1UcmFjazpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgbWV0YWRh
dGFDb2xsZWN0b3I6ZGlkQ29sbGVjdERhdGVSYW5nZU1ldGFkYXRhR3JvdXBzOmluZGV4ZXNPZk5l
d0dyb3VwczppbmRleGVzT2ZNb2RpZmllZEdyb3VwczpdKToKKwogMjAxOS0xMC0xOCAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgVGV4dFN0cmVh
bSBkdW1waW5nIGZvciBCYXNpY1NoYXBlIHR5cGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAxNWVj
ZDcwNTdjMGFjMTI3NWQ1ZWI2ZDNlOWE0OWY3NmNkM2QxMjM0Li5hMTQ0MzUzOWIwM2JlN2U3YWUx
YjZlNDEwOTQ2NTlkZGU2MzRiODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxOS0xMC0xOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdXBwb3J0IGZvciBjYWxsYmFja3MgZm9yIG1hbmlmZXN0IGV2ZW50cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTAxCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81NDI3NzM2Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9i
bGUuCisKKyAgICAgICAgKiBwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaDoKKyAgICAg
ICAgKiBwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsubW06CisKIDIwMTktMTAtMTUgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbUGljdHVyZS1pbi1QaWN0
dXJlIFdlYiBBUEldIEltcGxlbWVudCBIVE1MVmlkZW9FbGVtZW50LnJlcXVlc3RQaWN0dXJlSW5Q
aWN0dXJlKCkgLyBEb2N1bWVudC5leGl0UGljdHVyZUluUGljdHVyZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmgKaW5kZXggMzJl
Njc3MWY2ODkyZDU5NzMwNjk0NjY0NWI4ODI3MTM2NmFjYjc5NC4uNjU3ODRmZTY1YTkxMmJlNjI0
MTc4YTNhMmUzYWI4OWQwMWE2MzY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaApAQCAtNjIsNiArNjIsOCBAQCBTT0ZUX0xJ
TktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWT3V0cHV0Q29udGV4dCkKIFNPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgQVZQbGF5ZXIpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQ
QUwsIEFWUGxheWVySXRlbSkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZQbGF5
ZXJJdGVtTGVnaWJsZU91dHB1dCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZQ
bGF5ZXJJdGVtTWV0YWRhdGFDb2xsZWN0b3IpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQ
QUwsIEFWUGxheWVySXRlbU1ldGFkYXRhT3V0cHV0KQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFE
RVIoUEFMLCBBVlBsYXllckl0ZW1WaWRlb091dHB1dCkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVB
REVSKFBBTCwgQVZQbGF5ZXJMYXllcikKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyKQpAQCAtMjMxLDYgKzIzMyw4IEBAIFNPRlRfTElO
S19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5U3Bh
Y2VJRDMsIE5TU3RyaW5nCiAjZGVmaW5lIEFWTWV0YWRhdGFLZXlTcGFjZUlEMyBQQUw6OmdldF9B
VkZvdW5kYXRpb25fQVZNZXRhZGF0YUtleVNwYWNlSUQzKCkKIFNPRlRfTElOS19DT05TVEFOVF9G
T1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5U3BhY2VJU09Vc2VyRGF0
YSwgTlNTdHJpbmcgKikKICNkZWZpbmUgQVZNZXRhZGF0YUtleVNwYWNlSVNPVXNlckRhdGEgUEFM
OjpnZXRfQVZGb3VuZGF0aW9uX0FWTWV0YWRhdGFLZXlTcGFjZUlTT1VzZXJEYXRhKCkKK1NPRlRf
TElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5
U3BhY2VITFNEYXRlUmFuZ2UsIE5TU3RyaW5nICopCisjZGVmaW5lIEFWTWV0YWRhdGFLZXlTcGFj
ZUhMU0RhdGVSYW5nZSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZXRhZGF0YUtleVNwYWNlSExT
RGF0ZVJhbmdlKCkKIAogI2lmIFBMQVRGT1JNKE1BQykKIFNPRlRfTElOS19DT05TVEFOVF9GT1Jf
SEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlN0cmVhbURhdGFQYXJzZXJDb250ZW50S2V5UmVx
dWVzdFByb3RvY29sVmVyc2lvbnNLZXksIE5TU3RyaW5nICopCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLm1tIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5tbQppbmRleCBlNTcxZTEx
YWU0NDEzNDM2YzE1MzA0Y2UyY2I5YzhlZTdmZDc3ZDE4Li5lMTQ5ZjdmYjgyM2IxNWM4YTFjNWFm
MWJiZGZmODM5ODE2MWJmN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Nv
Y29hL0FWRm91bmRhdGlvblNvZnRMaW5rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsubW0KQEAgLTU0LDYgKzU0LDggQEAgU09GVF9MSU5L
X0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWT3V0cHV0
Q29udGV4dCwgUEFMX0UKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgQVZGb3VuZGF0aW9uLCBBVlBsYXllciwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DTEFTU19G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW0sIFBB
TF9FWFBPUlQpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFW
Rm91bmRhdGlvbiwgQVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dCwgUEFMX0VYUE9SVCkKK1NPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlBs
YXllckl0ZW1NZXRhZGF0YUNvbGxlY3RvciwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1NZXRh
ZGF0YU91dHB1dCwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1WaWRlb091dHB1dCwgUEFMX0VY
UE9SVCkKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3Vu
ZGF0aW9uLCBBVlBsYXllckxheWVyLCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9T
T1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXQsIFBBTF9FWFBP
UlQpCkBAIC0xMTAsNiArMTEyLDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlU3VidGl0bGUKIFNPRlRfTElO
S19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1l
ZGlhVHlwZVZpZGVvLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFDb21t
b25LZXlUaXRsZSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5U3Bh
Y2VDb21tb24sIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUtleVNwYWNl
SExTRGF0ZVJhbmdlLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlT
cGFjZUlEMywgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1Jf
U09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5U3BhY2VJ
U09Vc2VyRGF0YSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5U3Bh
Y2VRdWlja1RpbWVNZXRhZGF0YSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaAppbmRleCA1YjU5OTYxNTIxNGQ3NzlmODQxNDM5OTAyNWNhODE2OGExZmU0YTQ5Li5l
OThkOGVhOTAwMDQ3MThjZmM5MDQ0YTA5ODM2YWYwYjkwZTBmZTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCkBAIC0zOSw2ICszOSw4IEBAIE9CSkNfQ0xBU1MgQVZNZWRpYVNlbGVjdGlvbkdyb3Vw
OwogT0JKQ19DTEFTUyBBVk91dHB1dENvbnRleHQ7CiBPQkpDX0NMQVNTIEFWUGxheWVySXRlbTsK
IE9CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dDsKK09CSkNfQ0xBU1MgQVZQbGF5
ZXJJdGVtTWV0YWRhdGFDb2xsZWN0b3I7CitPQkpDX0NMQVNTIEFWUGxheWVySXRlbU1ldGFkYXRh
T3V0cHV0OwogT0JKQ19DTEFTUyBBVlBsYXllckl0ZW1WaWRlb091dHB1dDsKIE9CSkNfQ0xBU1Mg
QVZQbGF5ZXJMYXllcjsKIE9CSkNfQ0xBU1MgQVZVUkxBc3NldDsKQEAgLTExNiw2ICsxMTgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkdXJhdGlvbkRpZENoYW5nZShjb25zdCBNZWRpYVRpbWUmKTsK
ICAgICB2b2lkIHJhdGVEaWRDaGFuZ2UoZG91YmxlKTsKICAgICB2b2lkIHRpbWVDb250cm9sU3Rh
dHVzRGlkQ2hhbmdlKGludCk7CisgICAgdm9pZCBtZXRhZGF0YUdyb3VwRGlkQXJyaXZlKGNvbnN0
IFJldGFpblB0cjxOU0FycmF5PiYsIGNvbnN0IE1lZGlhVGltZSYpOwogICAgIHZvaWQgbWV0YWRh
dGFEaWRBcnJpdmUoY29uc3QgUmV0YWluUHRyPE5TQXJyYXk+JiwgY29uc3QgTWVkaWFUaW1lJik7
CiAgICAgdm9pZCBmaXJzdEZyYW1lQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpOwogICAgIHZvaWQg
dHJhY2tFbmFibGVkRGlkQ2hhbmdlKGJvb2wpOwpAQCAtMTU1LDYgKzE1OCw4IEBAIHB1YmxpYzoK
ICAgICBib29sIHdhaXRpbmdGb3JLZXkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3dhaXRpbmdG
b3JLZXk7IH0KICNlbmRpZgogCisgICAgTWVkaWFUaW1lIGN1cnJlbnRNZWRpYVRpbWUoKSBjb25z
dCBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAgICAvLyBlbmdpbmUgc3VwcG9ydAogICAgIHN0YXRp
YyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+JiB0eXBlcyk7CkBAIC0xNjksNyArMTc0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBsYXRmb3JtUGxheSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcGxhdGZvcm1QYXVzZSgpIG92ZXJy
aWRlOwogICAgIGJvb2wgcGxhdGZvcm1QYXVzZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBNZWRp
YVRpbWUgY3VycmVudE1lZGlhVGltZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Vm9s
dW1lKGZsb2F0KSBvdmVycmlkZTsKICAgICB2b2lkIHNldE11dGVkKGJvb2wpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwpAQCAtNDEx
LDYgKzQxNSw5IEBAIHByaXZhdGU6CiAjZW5kaWYKICNlbmRpZgogCisgICAgUmV0YWluUHRyPEFW
UGxheWVySXRlbU1ldGFkYXRhQ29sbGVjdG9yPiBtX21ldGFkYXRhQ29sbGVjdG9yOworICAgIFJl
dGFpblB0cjxBVlBsYXllckl0ZW1NZXRhZGF0YU91dHB1dD4gbV9tZXRhZGF0YU91dHB1dDsKKwog
ICAgIG11dGFibGUgUmV0YWluUHRyPE5TQXJyYXk+IG1fY2FjaGVkU2Vla2FibGVSYW5nZXM7CiAg
ICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNBcnJheT4gbV9jYWNoZWRMb2FkZWRSYW5nZXM7CiAgICAg
UmV0YWluUHRyPE5TQXJyYXk+IG1fY2FjaGVkVHJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
aW5kZXggZTY2MThhMzgzZWI0NmFiMTcyZDM4NGU0ZTM0ZTgxMTJhNGQzMzQ2NS4uMTZlYzM3ZjBh
YzE1ZTA1ZWY2NWJiMzkyN2E4NDFkZTgwOTliM2M3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CkBAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIHZvaWQgZW5zdXJlT25NYWluVGhyZWFkKEZ1bmN0
aW9uPHZvaWQoKT4mJiBmKQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUoZikpOwog
fQogCi1AaW50ZXJmYWNlIFdlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIDogTlNPYmplY3QgPEFWUGxh
eWVySXRlbUxlZ2libGVPdXRwdXRQdXNoRGVsZWdhdGU+CitAaW50ZXJmYWNlIFdlYkNvcmVBVkZN
b3ZpZU9ic2VydmVyIDogTlNPYmplY3QgPEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXRQdXNoRGVs
ZWdhdGUsIEFWUGxheWVySXRlbU1ldGFkYXRhT3V0cHV0UHVzaERlbGVnYXRlLCBBVlBsYXllckl0
ZW1NZXRhZGF0YUNvbGxlY3RvclB1c2hEZWxlZ2F0ZT4KIHsKICAgICBXZWFrUHRyPE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+IG1fcGxheWVyOwogICAgIEdlbmVyaWNUYXNrUXVl
dWU8VGltZXI+IG1fdGFza1F1ZXVlOwpAQCAtMTg3LDYgKzE4Nyw4IEBAIHN0YXRpYyB2b2lkIGVu
c3VyZU9uTWFpblRocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgZikKIC0odm9pZClvYnNlcnZlVmFs
dWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlv
bmFyeSAqKWNoYW5nZSBjb250ZXh0OihNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9u
Q29udGV4dCljb250ZXh0OwogLSAodm9pZClsZWdpYmxlT3V0cHV0OihpZClvdXRwdXQgZGlkT3V0
cHV0QXR0cmlidXRlZFN0cmluZ3M6KE5TQXJyYXkgKilzdHJpbmdzIG5hdGl2ZVNhbXBsZUJ1ZmZl
cnM6KE5TQXJyYXkgKiluYXRpdmVTYW1wbGVzIGZvckl0ZW1UaW1lOihDTVRpbWUpaXRlbVRpbWU7
CiAtICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooaWQpb3V0cHV0OworLSAodm9pZClt
ZXRhZGF0YUNvbGxlY3RvcjooQVZQbGF5ZXJJdGVtTWV0YWRhdGFDb2xsZWN0b3IgKiltZXRhZGF0
YUNvbGxlY3RvciBkaWRDb2xsZWN0RGF0ZVJhbmdlTWV0YWRhdGFHcm91cHM6KE5TQXJyYXk8QVZE
YXRlUmFuZ2VNZXRhZGF0YUdyb3VwICo+ICopbWV0YWRhdGFHcm91cHMgaW5kZXhlc09mTmV3R3Jv
dXBzOihOU0luZGV4U2V0ICopaW5kZXhlc09mTmV3R3JvdXBzIGluZGV4ZXNPZk1vZGlmaWVkR3Jv
dXBzOihOU0luZGV4U2V0ICopaW5kZXhlc09mTW9kaWZpZWRHcm91cHM7CistICh2b2lkKW1ldGFk
YXRhT3V0cHV0OihBVlBsYXllckl0ZW1NZXRhZGF0YU91dHB1dCAqKW91dHB1dCBkaWRPdXRwdXRU
aW1lZE1ldGFkYXRhR3JvdXBzOihOU0FycmF5PEFWVGltZWRNZXRhZGF0YUdyb3VwICo+ICopZ3Jv
dXBzIGZyb21QbGF5ZXJJdGVtVHJhY2s6KEFWUGxheWVySXRlbVRyYWNrICopdHJhY2s7CiBAZW5k
CiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUpCkBAIC00MzgsNiArNDQw
LDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2FuY2VsTG9h
ZCgpCiAgICAgfQogCiAgICAgaWYgKG1fYXZQbGF5ZXJJdGVtKSB7CisgICAgICAgIGlmIChtX21l
dGFkYXRhQ29sbGVjdG9yKSB7CisgICAgICAgICAgICBbbV9hdlBsYXllckl0ZW0uZ2V0KCkgcmVt
b3ZlTWVkaWFEYXRhQ29sbGVjdG9yOm1fbWV0YWRhdGFDb2xsZWN0b3IuZ2V0KCldOworICAgICAg
ICAgICAgbV9tZXRhZGF0YUNvbGxlY3RvciA9IG5pbDsKKyAgICAgICAgfQorICAgICAgICBpZiAo
bV9tZXRhZGF0YU91dHB1dCkgeworICAgICAgICAgICAgW21fYXZQbGF5ZXJJdGVtLmdldCgpIHJl
bW92ZU91dHB1dDptX21ldGFkYXRhT3V0cHV0LmdldCgpXTsKKyAgICAgICAgICAgIG1fbWV0YWRh
dGFPdXRwdXQgPSBuaWw7CisgICAgICAgIH0KKwogICAgICAgICBmb3IgKE5TU3RyaW5nICprZXlO
YW1lIGluIGl0ZW1LVk9Qcm9wZXJ0aWVzKCkpCiAgICAgICAgICAgICBbbV9hdlBsYXllckl0ZW0u
Z2V0KCkgcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDprZXlO
YW1lXTsKICAgICAgICAgCkBAIC05MzksMTQgKzk1MCwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVySXRlbSgpCiAgICAgaWYgKG1fYXZQ
bGF5ZXIpCiAgICAgICAgIHNldEFWUGxheWVySXRlbShtX2F2UGxheWVySXRlbS5nZXQoKSk7CiAK
LSAgICBjb25zdCBOU1RpbWVJbnRlcnZhbCBsZWdpYmxlT3V0cHV0QWR2YW5jZUludGVydmFsID0g
MjsKKyAgICBjb25zdCBOU1RpbWVJbnRlcnZhbCBhdlBsYXllck91dHB1dEFkdmFuY2VJbnRlcnZh
bCA9IDI7CiAKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gc3VidHlwZXMgPSBhZG9wdE5TKFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJ
bnQ6a0NNU3VidGl0bGVGb3JtYXRUeXBlX1dlYlZUVF0sIG5pbF0pOwogICAgIG1fbGVnaWJsZU91
dHB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0SW5zdGFu
Y2UoKSBpbml0V2l0aE1lZGlhU3VidHlwZXNGb3JOYXRpdmVSZXByZXNlbnRhdGlvbjpzdWJ0eXBl
cy5nZXQoKV0pOwogICAgIFttX2xlZ2libGVPdXRwdXQuZ2V0KCkgc2V0U3VwcHJlc3Nlc1BsYXll
clJlbmRlcmluZzpZRVNdOwogCiAgICAgW21fbGVnaWJsZU91dHB1dC5nZXQoKSBzZXREZWxlZ2F0
ZTptX29iamNPYnNlcnZlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpXTsK
LSAgICBbbV9sZWdpYmxlT3V0cHV0LmdldCgpIHNldEFkdmFuY2VJbnRlcnZhbEZvckRlbGVnYXRl
SW52b2NhdGlvbjpsZWdpYmxlT3V0cHV0QWR2YW5jZUludGVydmFsXTsKKyAgICBbbV9sZWdpYmxl
T3V0cHV0LmdldCgpIHNldEFkdmFuY2VJbnRlcnZhbEZvckRlbGVnYXRlSW52b2NhdGlvbjphdlBs
YXllck91dHB1dEFkdmFuY2VJbnRlcnZhbF07CiAgICAgW21fbGVnaWJsZU91dHB1dC5nZXQoKSBz
ZXRUZXh0U3R5bGluZ1Jlc29sdXRpb246QVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFRleHRTdHls
aW5nUmVzb2x1dGlvblNvdXJjZUFuZFJ1bGVzT25seV07CiAgICAgW21fYXZQbGF5ZXJJdGVtLmdl
dCgpIGFkZE91dHB1dDptX2xlZ2libGVPdXRwdXQuZ2V0KCldOwogCkBAIC05NjEsNiArOTcyLDE1
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5
ZXJJdGVtKCkKICAgICBjcmVhdGVWaWRlb091dHB1dCgpOwogI2VuZGlmCiAKKyAgICBtX21ldGFk
YXRhQ29sbGVjdG9yID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVySXRlbU1ldGFkYXRhQ29s
bGVjdG9ySW5zdGFuY2UoKSBpbml0V2l0aElkZW50aWZpZXJzOm5pbCBjbGFzc2lmeWluZ0xhYmVs
czpuaWxdKTsKKyAgICBbbV9tZXRhZGF0YUNvbGxlY3Rvci5nZXQoKSBzZXREZWxlZ2F0ZTptX29i
amNPYnNlcnZlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpXTsKKyAgICBb
bV9hdlBsYXllckl0ZW0uZ2V0KCkgYWRkTWVkaWFEYXRhQ29sbGVjdG9yOm1fbWV0YWRhdGFDb2xs
ZWN0b3IuZ2V0KCldOworCisgICAgbV9tZXRhZGF0YU91dHB1dCA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NBVlBsYXllckl0ZW1NZXRhZGF0YU91dHB1dEluc3RhbmNlKCkgaW5pdFdpdGhJZGVudGlmaWVy
czpuaWxdKTsKKyAgICBbbV9tZXRhZGF0YU91dHB1dC5nZXQoKSBzZXREZWxlZ2F0ZTptX29iamNP
YnNlcnZlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpXTsKKyAgICBbbV9t
ZXRhZGF0YU91dHB1dC5nZXQoKSBzZXRBZHZhbmNlSW50ZXJ2YWxGb3JEZWxlZ2F0ZUludm9jYXRp
b246YXZQbGF5ZXJPdXRwdXRBZHZhbmNlSW50ZXJ2YWxdOworICAgIFttX2F2UGxheWVySXRlbS5n
ZXQoKSBhZGRPdXRwdXQ6bV9tZXRhZGF0YU91dHB1dC5nZXQoKV07CisKICAgICBzZXREZWxheUNh
bGxiYWNrcyhmYWxzZSk7CiB9CiAKQEAgLTI5NzIsNyArMjk5Miw2IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0QnVmZmVyaW5nUG9saWN5KE1lZGlhUGxheWVy
OjpCdWZmZXJpCiB9CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKLQogc3RhdGljIGNvbnN0
IEF0b21TdHJpbmcmIG1ldGFkYXRhVHlwZShOU1N0cmluZyAqYXZNZXRhZGF0YUtleVNwYWNlKQog
ewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBxdWlja1RpbWVV
c2VyRGF0YSgiY29tLmFwcGxlLnF1aWNrdGltZS51ZHRhIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwpAQCAtMjk4MCw2ICsyOTk5LDcgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJp
bmcmIG1ldGFkYXRhVHlwZShOU1N0cmluZyAqYXZNZXRhZGF0YUtleVNwYWNlKQogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBxdWlja1RpbWVNZXRhZGF0YSgiY29t
LmFwcGxlLnF1aWNrdGltZS5tZHRhIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBpVHVuZXNNZXRh
ZGF0YSgiY29tLmFwcGxlLml0dW5lcyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaWQzTWV0YWRh
dGEoIm9yZy5pZDMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGhsc0RhdGVSYW5nZU1ldGFkYXRh
KCJjb20uYXBwbGUucXVpY2t0aW1lLkhMUyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKIAogICAgIGlmIChbYXZNZXRhZGF0YUtleVNwYWNlIGlzRXF1YWxUb1N0cmluZzpBVk1l
dGFkYXRhS2V5U3BhY2VRdWlja1RpbWVVc2VyRGF0YV0pCiAgICAgICAgIHJldHVybiBxdWlja1Rp
bWVVc2VyRGF0YTsKQEAgLTI5OTEsMTIgKzMwMTEsNDAgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJp
bmcmIG1ldGFkYXRhVHlwZShOU1N0cmluZyAqYXZNZXRhZGF0YUtleVNwYWNlKQogICAgICAgICBy
ZXR1cm4gaVR1bmVzTWV0YWRhdGE7CiAgICAgaWYgKFthdk1ldGFkYXRhS2V5U3BhY2UgaXNFcXVh
bFRvU3RyaW5nOkFWTWV0YWRhdGFLZXlTcGFjZUlEM10pCiAgICAgICAgIHJldHVybiBpZDNNZXRh
ZGF0YTsKKyAgICBpZiAoW2F2TWV0YWRhdGFLZXlTcGFjZSBpc0VxdWFsVG9TdHJpbmc6QVZNZXRh
ZGF0YUtleVNwYWNlSExTRGF0ZVJhbmdlXSkKKyAgICAgICAgcmV0dXJuIGhsc0RhdGVSYW5nZU1l
dGFkYXRhOwogCiAgICAgcmV0dXJuIGVtcHR5QXRvbSgpOwogfQotCiAjZW5kaWYKIAordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjptZXRhZGF0YUdyb3VwRGlkQXJyaXZl
KGNvbnN0IFJldGFpblB0cjxOU0FycmF5PiYgZ3JvdXBzLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJl
bnRUaW1lKQoreworICAgIGZvciAoQVZEYXRlUmFuZ2VNZXRhZGF0YUdyb3VwICpncm91cCBpbiBn
cm91cHMuZ2V0KCkpIHsKKyAgICAgICAgYXV0byBncm91cFN0YXJ0RGF0ZSA9IGdyb3VwLnN0YXJ0
RGF0ZS50aW1lSW50ZXJ2YWxTaW5jZTE5NzA7CisgICAgICAgIGF1dG8gZ3JvdXBFbmREYXRlID0g
Z3JvdXAuZW5kRGF0ZS50aW1lSW50ZXJ2YWxTaW5jZTE5NzA7CisgICAgICAgIGF1dG8gZ3JvdXBE
dXJhdGlvbiA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShncm91cEVuZERhdGUgLSBncm91
cFN0YXJ0RGF0ZSk7CisKKyAgICAgICAgLy8gQSBtYW5pZmVzdCB3aXRob3V0IGEgI0VYVC1YLVBS
T0dSQU0tREFURS1USU1FIHdvbid0IGhhdmUgYSBzdGFydCBkYXRlLCBzbyBpZiBjdXJyZW50RGF0
ZQorICAgICAgICAvLyBpcyB6ZXJvIGFzc3VtZSB0aGUgbWV0YWRhdGEgaXRlbXMgc3RhcnQgYXQg
dGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyZWFtLgorICAgICAgICBkb3VibGUgZ3JvdXBTdGFydFRp
bWUgPSAwOworICAgICAgICBpZiAoYXV0byBjdXJyZW50RGF0ZSA9IG1fYXZQbGF5ZXJJdGVtLmdl
dCgpLmN1cnJlbnREYXRlLnRpbWVJbnRlcnZhbFNpbmNlMTk3MCkKKyAgICAgICAgICAgIGdyb3Vw
U3RhcnRUaW1lID0gZ3JvdXBTdGFydERhdGUgLSBjdXJyZW50RGF0ZSAtIGN1cnJlbnRUaW1lLnRv
RG91YmxlKCk7CisKKyAgICAgICAgYXV0byBncm91cENvcHkgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgZm9yIChBVk1ldGFkYXRhSXRlbSAqaXRlbSBp
biBncm91cC5pdGVtcykgeworICAgICAgICAgICAgUmV0YWluUHRyPEFWTXV0YWJsZU1ldGFkYXRh
SXRlbT4gaXRlbUNvcHkgPSBhZG9wdE5TKFtpdGVtIG11dGFibGVDb3B5XSk7CisgICAgICAgICAg
ICBpZiAoIUNNVElNRV9JU19WQUxJRChpdGVtQ29weS5nZXQoKS50aW1lKSkKKyAgICAgICAgICAg
ICAgICBpdGVtQ29weS5nZXQoKS50aW1lID0gQ01UaW1lTWFrZVdpdGhTZWNvbmRzKGdyb3VwU3Rh
cnRUaW1lLCBNZWRpYVRpbWU6OkRlZmF1bHRUaW1lU2NhbGUpOworICAgICAgICAgICAgaWYgKCFD
TVRJTUVfSVNfVkFMSUQoaXRlbUNvcHkuZ2V0KCkuZHVyYXRpb24pKQorICAgICAgICAgICAgICAg
IGl0ZW1Db3B5LmdldCgpLmR1cmF0aW9uID0gdG9DTVRpbWUoZ3JvdXBEdXJhdGlvbik7CisgICAg
ICAgICAgICBbZ3JvdXBDb3B5IGFkZE9iamVjdDppdGVtQ29weS5nZXQoKV07CisgICAgICAgIH0K
KworICAgICAgICBtZXRhZGF0YURpZEFycml2ZShncm91cENvcHksIGN1cnJlbnRUaW1lKTsKKyAg
ICB9Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bWV0YWRh
dGFEaWRBcnJpdmUoY29uc3QgUmV0YWluUHRyPE5TQXJyYXk+JiBtZXRhZGF0YSwgY29uc3QgTWVk
aWFUaW1lJiBtZWRpYVRpbWUpCiB7CiAgICAgbV9jdXJyZW50TWV0YURhdGEgPSBtZXRhZGF0YSAm
JiAhW21ldGFkYXRhIGlzS2luZE9mQ2xhc3M6W05TTnVsbCBjbGFzc11dID8gbWV0YWRhdGEgOiBu
aWw7CkBAIC0zMDI1LDEwICszMDczLDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6bWV0YWRhdGFEaWRBcnJpdmUoY29uc3QgUmV0YWluUHRyPE5TQXJyCiAgICAg
bV9tZXRhZGF0YVRyYWNrLT51cGRhdGVQZW5kaW5nQ3VlRW5kVGltZXMoZWFybGllc3RTdGFydFRp
bWUpOwogCiAgICAgZm9yIChBVk1ldGFkYXRhSXRlbSAqaXRlbSBpbiBtX2N1cnJlbnRNZXRhRGF0
YS5nZXQoKSkgewotICAgICAgICBNZWRpYVRpbWUgc3RhcnQgPSBzdGQ6Om1heChQQUw6OnRvTWVk
aWFUaW1lKGl0ZW0udGltZSksIE1lZGlhVGltZTo6emVyb1RpbWUoKSk7CisgICAgICAgIE1lZGlh
VGltZSBzdGFydDsKKyAgICAgICAgaWYgKENNVElNRV9JU19WQUxJRChpdGVtLnRpbWUpKQorICAg
ICAgICAgICAgc3RhcnQgPSBzdGQ6Om1heChQQUw6OnRvTWVkaWFUaW1lKGl0ZW0udGltZSksIE1l
ZGlhVGltZTo6emVyb1RpbWUoKSk7CisKICAgICAgICAgTWVkaWFUaW1lIGVuZCA9IE1lZGlhVGlt
ZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICAgICAgaWYgKENNVElNRV9JU19WQUxJRChp
dGVtLmR1cmF0aW9uKSkKLSAgICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgUEFMOjp0b01lZGlhVGlt
ZShpdGVtLmR1cmF0aW9uKTsKKyAgICAgICAgYXV0byBkdXJhdGlvbiA9IGl0ZW0uZHVyYXRpb247
CisgICAgICAgIGlmIChDTVRJTUVfSVNfVkFMSUQoZHVyYXRpb24pICYmIENNVGltZUdldFNlY29u
ZHMoZHVyYXRpb24pID4gMC4wMDEpCisgICAgICAgICAgICBlbmQgPSBzdGFydCArIFBBTDo6dG9N
ZWRpYVRpbWUoZHVyYXRpb24pOwogCiAgICAgICAgIEF0b21TdHJpbmcgdHlwZSA9IG51bGxBdG9t
KCk7CiAgICAgICAgIGlmIChpdGVtLmtleVNwYWNlKQpAQCAtMzI1NCw3ICszMzA2LDYgQEAgTlNB
cnJheSogaXRlbUtWT1Byb3BlcnRpZXMoKQogICAgICAgICBAInBsYXliYWNrQnVmZmVyRW1wdHki
LAogICAgICAgICBAImR1cmF0aW9uIiwKICAgICAgICAgQCJoYXNFbmFibGVkQXVkaW8iLAotICAg
ICAgICBAInRpbWVkTWV0YWRhdGEiLAogICAgICAgICBAImNhblBsYXlGYXN0Rm9yd2FyZCIsCiAg
ICAgICAgIEAiY2FuUGxheUZhc3RSZXZlcnNlIiwKICAgICBuaWxdOwpAQCAtMzM3NSwxNCArMzQy
Niw3IEBAIE5TQXJyYXkqIHBsYXllcktWT1Byb3BlcnRpZXMoKQogICAgICAgICAgICAgICAgICAg
ICBwbGF5ZXItPnByZXNlbnRhdGlvblNpemVEaWRDaGFuZ2UoRmxvYXRTaXplKFtuZXdWYWx1ZSBz
aXplVmFsdWVdKSk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRv
U3RyaW5nOkAiZHVyYXRpb24iXSkKICAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5kdXJhdGlv
bkRpZENoYW5nZShQQUw6OnRvTWVkaWFUaW1lKFtuZXdWYWx1ZSBDTVRpbWVWYWx1ZV0pKTsKLSAg
ICAgICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJ0aW1lZE1l
dGFkYXRhIl0gJiYgbmV3VmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgTWVkaWFUaW1lIG5v
dzsKLSAgICAgICAgICAgICAgICAgICAgQ01UaW1lIGl0ZW1UaW1lID0gWyhBVlBsYXllckl0ZW0g
KilvYmplY3QuZ2V0KCkgY3VycmVudFRpbWVdOwotICAgICAgICAgICAgICAgICAgICBpZiAoQ01U
SU1FX0lTX05VTUVSSUMoaXRlbVRpbWUpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm93ID0g
c3RkOjptYXgoUEFMOjp0b01lZGlhVGltZShpdGVtVGltZSksIE1lZGlhVGltZTo6emVyb1RpbWUo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIHBsYXllci0+bWV0YWRhdGFEaWRBcnJpdmUoUmV0YWlu
UHRyPE5TQXJyYXk+KG5ld1ZhbHVlKSwgbm93KTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxk
TG9nVmFsdWUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFtrZXlQYXRoIGlz
RXF1YWxUb1N0cmluZzpAImNhblBsYXlGYXN0UmV2ZXJzZSJdKQorICAgICAgICAgICAgICAgIGVs
c2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImNhblBsYXlGYXN0UmV2ZXJzZSJdKQog
ICAgICAgICAgICAgICAgICAgICBwbGF5ZXItPmNhblBsYXlGYXN0UmV2ZXJzZURpZENoYW5nZShb
bmV3VmFsdWUgYm9vbFZhbHVlXSk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGgg
aXNFcXVhbFRvU3RyaW5nOkAiY2FuUGxheUZhc3RGb3J3YXJkIl0pCiAgICAgICAgICAgICAgICAg
ICAgIHBsYXllci0+Y2FuUGxheUZhc3RGb3J3YXJkRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFs
dWVdKTsKQEAgLTM0NDksNiArMzQ5MywzNSBAQCBOU0FycmF5KiBwbGF5ZXJLVk9Qcm9wZXJ0aWVz
KCkKICAgICB9KTsKIH0KIAorLSAodm9pZCltZXRhZGF0YU91dHB1dDooQVZQbGF5ZXJJdGVtTWV0
YWRhdGFPdXRwdXQgKilvdXRwdXQgZGlkT3V0cHV0VGltZWRNZXRhZGF0YUdyb3VwczooTlNBcnJh
eTxBVlRpbWVkTWV0YWRhdGFHcm91cCAqPiAqKW1ldGFkYXRhR3JvdXBzIGZyb21QbGF5ZXJJdGVt
VHJhY2s6KEFWUGxheWVySXRlbVRyYWNrICopdHJhY2sKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIFVOVVNFRF9QQVJBTShvdXRwdXQpOworICAgIFVOVVNFRF9QQVJBTSh0cmFj
ayk7CisKKyAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0gbV9wbGF5ZXIsIG1l
dGFkYXRhR3JvdXBzID0gcmV0YWluUHRyKG1ldGFkYXRhR3JvdXBzKSwgY3VycmVudFRpbWUgPSBt
X3BsYXllci0+Y3VycmVudE1lZGlhVGltZSgpXSB7CisgICAgICAgIGlmICghcGxheWVyKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAoQVZUaW1lZE1ldGFkYXRhR3JvdXAgKmdy
b3VwIGluIG1ldGFkYXRhR3JvdXBzLmdldCgpKQorICAgICAgICAgICAgcGxheWVyLT5tZXRhZGF0
YURpZEFycml2ZShyZXRhaW5QdHIoZ3JvdXAuaXRlbXMpLCBjdXJyZW50VGltZSk7CisgICAgfSk7
Cit9CisKKy0gKHZvaWQpbWV0YWRhdGFDb2xsZWN0b3I6KEFWUGxheWVySXRlbU1ldGFkYXRhQ29s
bGVjdG9yICopbWV0YWRhdGFDb2xsZWN0b3IgZGlkQ29sbGVjdERhdGVSYW5nZU1ldGFkYXRhR3Jv
dXBzOihOU0FycmF5PEFWRGF0ZVJhbmdlTWV0YWRhdGFHcm91cCAqPiAqKW1ldGFkYXRhR3JvdXBz
IGluZGV4ZXNPZk5ld0dyb3VwczooTlNJbmRleFNldCAqKWluZGV4ZXNPZk5ld0dyb3VwcyBpbmRl
eGVzT2ZNb2RpZmllZEdyb3VwczooTlNJbmRleFNldCAqKWluZGV4ZXNPZk1vZGlmaWVkR3JvdXBz
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBVTlVTRURfUEFSQU0obWV0YWRh
dGFDb2xsZWN0b3IpOworICAgIFVOVVNFRF9QQVJBTShpbmRleGVzT2ZOZXdHcm91cHMpOworICAg
IFVOVVNFRF9QQVJBTShpbmRleGVzT2ZNb2RpZmllZEdyb3Vwcyk7CisKKyAgICBtX3Rhc2tRdWV1
ZS5lbnF1ZXVlVGFzayhbcGxheWVyID0gbV9wbGF5ZXIsIG1ldGFkYXRhR3JvdXBzID0gcmV0YWlu
UHRyKG1ldGFkYXRhR3JvdXBzKSwgY3VycmVudFRpbWUgPSBtX3BsYXllci0+Y3VycmVudE1lZGlh
VGltZSgpXSB7CisgICAgICAgIGlmICghcGxheWVyKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHBsYXllci0+bWV0YWRhdGFHcm91cERpZEFycml2ZShtZXRhZGF0YUdyb3VwcywgY3Vy
cmVudFRpbWUpOworICAgIH0pOworfQogQGVuZAogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTE9B
REVSX0RFTEVHQVRFKQpAQCAtMzUwNiw3ICszNTc5LDcgQEAgTlNBcnJheSogcGxheWVyS1ZPUHJv
cGVydGllcygpCiAKIEBlbmQKIAotI2VuZGlmCisjZW5kaWYgLy8gSEFWRShBVkZPVU5EQVRJT05f
TE9BREVSX0RFTEVHQVRFKQogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fVklERU9fT1VUUFVUKQog
CkBAIC0zNTM0LDYgKzM2MDcsNiBAQCBOU0FycmF5KiBwbGF5ZXJLVk9Qcm9wZXJ0aWVzKCkKIAog
QGVuZAogCi0jZW5kaWYKKyNlbmRpZiAvLyBIQVZFKEFWRk9VTkRBVElPTl9WSURFT19PVVRQVVQp
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGM2YTBlMTM3N2Q2ODhlZDM3YzZhOGMxNzNhZDgwNmNlNmZjN2Y2
ZmYuLjUzYzljM2U4ZGFmMTdiNWJlNGQ4NWFlYTJjZTA5OGE1ZDc1NTQ2NGUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxOS0xMC0xOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBTdXBwb3J0IGZvciBjYWxsYmFja3MgZm9yIG1hbmlmZXN0IGV2ZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTAx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NDI3NzM2Mj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBKZXIgTm9ibGUuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL21lZGlhL3Jlc291cmNlcy9obHMv
bWV0YWRhdGEvcHJvZ19pbmRleC5tM3U4OgorICAgICAgICAqIGh0dHAvdGVzdHMvbWVkaWEvdHJh
Y2staW4tYmFuZC1obHMtbWV0YWRhdGEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVz
dHMvbWVkaWEvdHJhY2staW4tYmFuZC1obHMtbWV0YWRhdGEuaHRtbDoKKwogMjAxOS0xMC0xOCAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIExv
YWQgZXZlbnQgbXVzdCBiZSBmaXJlZCBvbmx5IGZvciB0aGUgU1ZHIHN0cnVjdHVyYWxseSBleHRl
cm5hbCBlbGVtZW50cyBhbmQgdGhlIG91dGVybW9zdCBTVkcgZWxlbWVudApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9yZXNvdXJjZXMvaGxzL21ldGFkYXRhL3Byb2df
aW5kZXgubTN1OCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvcmVzb3VyY2VzL2hscy9t
ZXRhZGF0YS9wcm9nX2luZGV4Lm0zdTgKaW5kZXggOTY5OTBmZjE2MzRiZTJhMDcxYjcxMmIxNWVj
YjFiNzY1ZWMyNjY0My4uMWYyZWQ0NzIxMmU5OTNiYmZlMTQyNzc0NDljZTM4NjRjYzE1ODI0YyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9yZXNvdXJjZXMvaGxzL21l
dGFkYXRhL3Byb2dfaW5kZXgubTN1OAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlh
L3Jlc291cmNlcy9obHMvbWV0YWRhdGEvcHJvZ19pbmRleC5tM3U4CkBAIC0zLDYgKzMsOCBAQAog
I0VYVC1YLVZFUlNJT046MwogI0VYVC1YLU1FRElBLVNFUVVFTkNFOjAKICNFWFQtWC1QTEFZTElT
VC1UWVBFOlZPRAorI0VYVC1YLURBVEVSQU5HRTpJRD0iY3VlLTEiLFNUQVJULURBVEU9IjIwMTkt
MDEtMDFUMDA6MDA6MDAuMDAwWiIsRFVSQVRJT049NS4wMDAwMDAsWC1TVEFSVC1PRkZTRVQ9IjAu
MDAwMDAwIgorI0VYVC1YLURBVEVSQU5HRTpJRD0iY3VlLTIiLFNUQVJULURBVEU9IjIwMTktMDEt
MDFUMDA6MDA6MDUuMDAwWiIsRFVSQVRJT049NS4wMDAwMDAsWC1FTkQtT0ZGU0VUPSI1LjAwMDAw
MCIKICNFWFRJTkY6NS4wMDAwMCwJCiBmaWxlU2VxdWVuY2UyLnRzCiAjRVhUSU5GOjQuODAwMDAs
CQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS90cmFjay1pbi1iYW5k
LWhscy1tZXRhZGF0YS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlh
L3RyYWNrLWluLWJhbmQtaGxzLW1ldGFkYXRhLWV4cGVjdGVkLnR4dAppbmRleCA0MGU2Y2M3N2Mx
NDk5MDc5YmZhNzJjMzE1Zjg4ZTY3NDFhMmI3YzI4Li4yODViNDkxMTgzNzNkYzU3NTBlYzk2MGE5
MDI4ZGU3MDQzY2E2ZTk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlh
L3RyYWNrLWluLWJhbmQtaGxzLW1ldGFkYXRhLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21lZGlhL3RyYWNrLWluLWJhbmQtaGxzLW1ldGFkYXRhLWV4cGVjdGVkLnR4
dApAQCAtMTUsNDIgKzE1LDUyIEBAIEVWRU5UKGNhbnBsYXl0aHJvdWdoKQogCiAqKiBTdGFydCBw
bGF5YmFjaywgd2FpdCBmb3IgYWxsIGN1ZXMgdG8gbG9hZAogUlVOKHZpZGVvLnBsYXkoKSkKLUVW
RU5UKGN1ZWNoYW5nZSkKLUVWRU5UKGN1ZWNoYW5nZSkKLUVWRU5UKGN1ZWNoYW5nZSkKLUVWRU5U
KGN1ZWNoYW5nZSkKLUVWRU5UKGN1ZWNoYW5nZSkKLUVWRU5UKGN1ZWNoYW5nZSkKIAogKiogVmFs
aWRhdGUgY3VlIGRhdGEKICogMQogRVhQRUNURUQgKHR5cGVvZihjdWUpICE9ICd1bmRlZmluZWQn
KSBPSwotRVhQRUNURUQgKGN1ZS50eXBlID09ICdvcmcuaWQzJykgT0sKIEVYUEVDVEVEIChjdWUu
ZGF0YSA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAoY3VlLnR5cGUgPT0gJ2NvbS5hcHBsZS5xdWlj
a3RpbWUuSExTJykgT0sKIEVYUEVDVEVEIChjdWUudmFsdWUgIT0gJ251bGwnKSBPSwotRVhQRUNU
RUQgKGN1ZS52YWx1ZS5rZXkgPT0gJyJUSVQyIicpIE9LCi1FWFBFQ1RFRCAoY3VlLnZhbHVlLmRh
dGEgPT0gJyJTdHJlYW0gQ291bnRpbmciJykgT0sKK0VYUEVDVEVEIChjdWUudmFsdWUua2V5ID09
ICciWC1TVEFSVC1PRkZTRVQiJykgT0sKK0VYUEVDVEVEIChjdWUudmFsdWUuZGF0YSA9PSAnIjAu
MDAwMDAwIicpIE9LCiAKICogMgogRVhQRUNURUQgKHR5cGVvZihjdWUpICE9ICd1bmRlZmluZWQn
KSBPSworRVhQRUNURUQgKGN1ZS5kYXRhID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChjdWUudHlw
ZSA9PSAnY29tLmFwcGxlLnF1aWNrdGltZS5ITFMnKSBPSworRVhQRUNURUQgKGN1ZS52YWx1ZSAh
PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAoY3VlLnZhbHVlLmtleSA9PSAnIlgtRU5ELU9GRlNFVCIn
KSBPSworRVhQRUNURUQgKGN1ZS52YWx1ZS5kYXRhID09ICciNS4wMDAwMDAiJykgT0sKKworKiAz
CitFWFBFQ1RFRCAodHlwZW9mKGN1ZSkgIT0gJ3VuZGVmaW5lZCcpIE9LCitFWFBFQ1RFRCAoY3Vl
LmRhdGEgPT0gJ251bGwnKSBPSwogRVhQRUNURUQgKGN1ZS50eXBlID09ICdvcmcuaWQzJykgT0sK
K0VYUEVDVEVEIChjdWUudmFsdWUgIT0gJ251bGwnKSBPSworRVhQRUNURUQgKGN1ZS52YWx1ZS5r
ZXkgPT0gJyJUSVQyIicpIE9LCitFWFBFQ1RFRCAoY3VlLnZhbHVlLmRhdGEgPT0gJyJTdHJlYW0g
Q291bnRpbmciJykgT0sKKworKiA0CitFWFBFQ1RFRCAodHlwZW9mKGN1ZSkgIT0gJ3VuZGVmaW5l
ZCcpIE9LCiBFWFBFQ1RFRCAoY3VlLmRhdGEgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKGN1ZS50
eXBlID09ICdvcmcuaWQzJykgT0sKIEVYUEVDVEVEIChjdWUudmFsdWUgIT0gJ251bGwnKSBPSwog
RVhQRUNURUQgKGN1ZS52YWx1ZS5rZXkgPT0gJyJUUEUxIicpIE9LCiBFWFBFQ1RFRCAoY3VlLnZh
bHVlLmRhdGEgPT0gJyJBbmR5IicpIE9LCiAKLSogMworKiA1CiBFWFBFQ1RFRCAodHlwZW9mKGN1
ZSkgIT0gJ3VuZGVmaW5lZCcpIE9LCi1FWFBFQ1RFRCAoY3VlLnR5cGUgPT0gJ29yZy5pZDMnKSBP
SwogRVhQRUNURUQgKGN1ZS5kYXRhID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChjdWUudHlwZSA9
PSAnb3JnLmlkMycpIE9LCiBFWFBFQ1RFRCAoY3VlLnZhbHVlICE9ICdudWxsJykgT0sKIEVYUEVD
VEVEIChjdWUudmFsdWUua2V5ID09ICciVEFMQiInKSBPSwogRVhQRUNURUQgKGN1ZS52YWx1ZS5k
YXRhID09ICciR3JlYXRlc3QgSGl0cyInKSBPSwogCi0qIDQKKyogNgogRVhQRUNURUQgKHR5cGVv
ZihjdWUpICE9ICd1bmRlZmluZWQnKSBPSwotRVhQRUNURUQgKGN1ZS50eXBlID09ICdvcmcuaWQz
JykgT0sKIEVYUEVDVEVEIChjdWUuZGF0YSA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAoY3VlLnR5
cGUgPT0gJ29yZy5pZDMnKSBPSwogRVhQRUNURUQgKGN1ZS52YWx1ZSAhPSAnbnVsbCcpIE9LCiBF
WFBFQ1RFRCAoY3VlLnZhbHVlLmtleSA9PSAnIkdFT0IiJykgT0sKIEVYUEVDVEVEIChjdWUudmFs
dWUuZGF0YSA9PSAne30nKSBPSwpAQCAtNTgsMjUgKzY4LDI1IEBAIEVYUEVDVEVEIChjdWUudmFs
dWUudHlwZSA9PSAnImltYWdlL3BuZyInKSBPSwogRVhQRUNURUQgKGN1ZS52YWx1ZS5pbmZvID09
ICciT3VyIEhlcm8iJykgT0sKIEVYUEVDVEVEIChjdWUudmFsdWUubmFtZSA9PSAnImFiZS5wbmci
JykgT0sKIAotKiA1CisqIDcKIEVYUEVDVEVEICh0eXBlb2YoY3VlKSAhPSAndW5kZWZpbmVkJykg
T0sKLUVYUEVDVEVEIChjdWUudHlwZSA9PSAnb3JnLmlkMycpIE9LCiBFWFBFQ1RFRCAoY3VlLmRh
dGEgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKGN1ZS50eXBlID09ICdvcmcuaWQzJykgT0sKIEVY
UEVDVEVEIChjdWUudmFsdWUgIT0gJ251bGwnKSBPSwogRVhQRUNURUQgKGN1ZS52YWx1ZS5rZXkg
PT0gJyJBUElDIicpIE9LCiBFWFBFQ1RFRCAoY3VlLnZhbHVlLmRhdGEgPT0gJ3t9JykgT0sKIEVY
UEVDVEVEIChjdWUudmFsdWUudHlwZSA9PSAnImltYWdlL3BuZyInKSBPSwogCi0qIDYKKyogOAog
RVhQRUNURUQgKHR5cGVvZihjdWUpICE9ICd1bmRlZmluZWQnKSBPSwotRVhQRUNURUQgKGN1ZS50
eXBlID09ICdvcmcuaWQzJykgT0sKIEVYUEVDVEVEIChjdWUuZGF0YSA9PSAnbnVsbCcpIE9LCitF
WFBFQ1RFRCAoY3VlLnR5cGUgPT0gJ29yZy5pZDMnKSBPSwogRVhQRUNURUQgKGN1ZS52YWx1ZSAh
PSAnbnVsbCcpIE9LCiBFWFBFQ1RFRCAoY3VlLnZhbHVlLmtleSA9PSAnIlRYWFgiJykgT0sKIEVY
UEVDVEVEIChjdWUudmFsdWUuZGF0YSA9PSAnIlRleHQgQmxvYiInKSBPSwogCiAqKiBFeHRyYWN0
IGltYWdlcyBmcm9tIGN1ZSBkYXRhLCB2YWxpZGF0ZSBieSBzZXR0aW5nIGltZy5zcmMKLVJVTihj
dWVJbWFnZURhdGEgPSB0cmFjay5jdWVzWzNdLnZhbHVlLmRhdGEpCitSVU4oY3VlSW1hZ2VEYXRh
ID0gdHJhY2suY3Vlc1s1XS52YWx1ZS5kYXRhKQogRVhQRUNURUQgKGN1ZUltYWdlRGF0YSBpbnN0
YW5jZW9mIEFycmF5QnVmZmVyID09ICd0cnVlJykgT0sKIFJVTihibG9iVXJsID0gVVJMLmNyZWF0
ZU9iamVjdFVSTChuZXcgQmxvYihbY3VlSW1hZ2VEYXRhXSwgeyB0eXBlOiAnaW1hZ2UvcG5nJyB9
KSkpCiBSVU4oaW1hZ2VFbGVtZW50LnNyYyA9IGJsb2JVcmwpCkBAIC04NCw3ICs5NCw3IEBAIEVW
RU5UKGxvYWQpCiBFWFBFQ1RFRCAoaW1hZ2VFbGVtZW50LndpZHRoID09ICc3NicpIE9LCiBFWFBF
Q1RFRCAoaW1hZ2VFbGVtZW50LmhlaWdodCA9PSAnMTAzJykgT0sKIAotUlVOKGN1ZUltYWdlRGF0
YSA9IHRyYWNrLmN1ZXNbNF0udmFsdWUuZGF0YSkKK1JVTihjdWVJbWFnZURhdGEgPSB0cmFjay5j
dWVzWzZdLnZhbHVlLmRhdGEpCiBFWFBFQ1RFRCAoY3VlSW1hZ2VEYXRhIGluc3RhbmNlb2YgQXJy
YXlCdWZmZXIgPT0gJ3RydWUnKSBPSwogUlVOKGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJM
KG5ldyBCbG9iKFtjdWVJbWFnZURhdGFdLCB7IHR5cGU6ICdpbWFnZS9wbmcnIH0pKSkKIFJVTihp
bWFnZUVsZW1lbnQuc3JjID0gYmxvYlVybCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWVkaWEvdHJhY2staW4tYmFuZC1obHMtbWV0YWRhdGEuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWVkaWEvdHJhY2staW4tYmFuZC1obHMtbWV0YWRhdGEuaHRtbAppbmRleCA4
Zjk1M2NlNDA3MzY2MjdjODE3YmU1ZjdmMjQ2YThlZWI1OGI5ZjcwLi4zZWRmMTVjZWViYmMwNjkz
ZmI0OWMzYmU3NmYzOThjZWU0MjdiOGE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21lZGlhL3RyYWNrLWluLWJhbmQtaGxzLW1ldGFkYXRhLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9tZWRpYS90cmFjay1pbi1iYW5kLWhscy1tZXRhZGF0YS5odG1sCkBAIC0x
MSwxMiArMTEsMTQgQEAKICAgICAgICAgICAgIHZhciBjdWVjaGFuZ2VDb3VudCA9IDA7CiAgICAg
ICAgICAgICB2YXIgbG9hZENvdW50ID0gMDsKICAgICAgICAgICAgIHZhciBjdWVEYXRhID0gWwot
ICAgICAgICAgICAgICAgICB7ImtleSIgOiAiVElUMiIsICJkYXRhIiA6ICJTdHJlYW0gQ291bnRp
bmcifSwKLSAgICAgICAgICAgICAgICAgeyJrZXkiIDogIlRQRTEiLCAiZGF0YSIgOiAiQW5keSJ9
LAotICAgICAgICAgICAgICAgICB7ImtleSIgOiAiVEFMQiIsICJkYXRhIiA6ICJHcmVhdGVzdCBI
aXRzIn0sCi0gICAgICAgICAgICAgICAgIHsia2V5IiA6ICJHRU9CIiwgImRhdGEiIDoge30sICJ0
eXBlIiA6ICJpbWFnZS9wbmciLCAiaW5mbyIgOiAiT3VyIEhlcm8iLCAibmFtZSIgOiAiYWJlLnBu
ZyJ9LAotICAgICAgICAgICAgICAgICB7ImtleSIgOiAiQVBJQyIsICJkYXRhIiA6IHt9LCAidHlw
ZSIgOiAiaW1hZ2UvcG5nIn0sCi0gICAgICAgICAgICAgICAgIHsia2V5IiA6ICJUWFhYIiwgImRh
dGEiIDogIlRleHQgQmxvYiJ9LAorICAgICAgICAgICAgICAgICB7ImtleSIgOiAiWC1TVEFSVC1P
RkZTRVQiLCAia2V5U3BhY2UiIDogImNvbS5hcHBsZS5xdWlja3RpbWUuSExTIiwgImRhdGEiIDog
IjAuMDAwMDAwIn0sCisgICAgICAgICAgICAgICAgIHsia2V5IiA6ICJYLUVORC1PRkZTRVQiLCAg
ICJrZXlTcGFjZSIgOiAiY29tLmFwcGxlLnF1aWNrdGltZS5ITFMiLCAiZGF0YSIgOiAiNS4wMDAw
MDAifSwKKyAgICAgICAgICAgICAgICAgeyJrZXkiIDogIlRJVDIiLCAgICAgICAgICAgImtleVNw
YWNlIiA6ICJvcmcuaWQzIiwgICAgICAgICAgICAgICAgICJkYXRhIiA6ICJTdHJlYW0gQ291bnRp
bmcifSwKKyAgICAgICAgICAgICAgICAgeyJrZXkiIDogIlRQRTEiLCAgICAgICAgICAgImtleVNw
YWNlIiA6ICJvcmcuaWQzIiwgICAgICAgICAgICAgICAgICJkYXRhIiA6ICJBbmR5In0sCisgICAg
ICAgICAgICAgICAgIHsia2V5IiA6ICJUQUxCIiwgICAgICAgICAgICJrZXlTcGFjZSIgOiAib3Jn
LmlkMyIsICAgICAgICAgICAgICAgICAiZGF0YSIgOiAiR3JlYXRlc3QgSGl0cyJ9LAorICAgICAg
ICAgICAgICAgICB7ImtleSIgOiAiR0VPQiIsICAgICAgICAgICAia2V5U3BhY2UiIDogIm9yZy5p
ZDMiLCAgICAgICAgICAgICAgICAgImRhdGEiIDoge30sICJ0eXBlIiA6ICJpbWFnZS9wbmciLCAi
aW5mbyIgOiAiT3VyIEhlcm8iLCAibmFtZSIgOiAiYWJlLnBuZyJ9LAorICAgICAgICAgICAgICAg
ICB7ImtleSIgOiAiQVBJQyIsICAgICAgICAgICAia2V5U3BhY2UiIDogIm9yZy5pZDMiLCAgICAg
ICAgICAgICAgICAgImRhdGEiIDoge30sICJ0eXBlIiA6ICJpbWFnZS9wbmcifSwKKyAgICAgICAg
ICAgICAgICAgeyJrZXkiIDogIlRYWFgiLCAgICAgICAgICAgImtleVNwYWNlIiA6ICJvcmcuaWQz
IiwgICAgICAgICAgICAgICAgICJkYXRhIiA6ICJUZXh0IEJsb2IifSwKICAgICAgICAgICAgIF07
CiAgICAgICAgICAgICB2YXIgaW1hZ2VTaXplcyA9IFsgWzc2LCAxMDNdLCBbMTAwLCAxMDBdIF07
CiAgICAgICAgICAgICB2YXIgY3VlOwpAQCAtNDMsNyArNDUsNyBAQAogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgdGVzdElt
YWdlKDQpOworICAgICAgICAgICAgICAgIHRlc3RJbWFnZSg2KTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgZnVuY3Rpb24gdGVzdEltYWdlKGN1ZUluZGV4KQpAQCAtNjAsNiArNjIsOSBA
QAogICAgICAgICAgICAgICAgIC8vIE1ha2UgYSBtdXRhYmxlIGNvcHkgb2Ygb2JzZXJ2ZWQgc28g
d2UgY2FuIHJlbW92ZSBhdHRyaWJ1dGVzIGFzIHRoZXkgYXJlIHByb2Nlc3NlZC4KICAgICAgICAg
ICAgICAgICBvYnNlcnZlZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JzZXJ2ZWQpKTsK
ICAgICAgICAgICAgICAgICBmb3IgKHByb3BlcnR5IGluIGV4cGVjdGVkKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChwcm9wZXJ0eSA9PT0gImtleVNwYWNlIikKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVkVmFsdWUgPSBv
YnNlcnZlZFtwcm9wZXJ0eV07CiAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkVmFsdWUgPSBl
eHBlY3RlZFtwcm9wZXJ0eV07CiAgICAgICAgICAgICAgICAgICAgIGN1ZS52YWx1ZVtwcm9wZXJ0
eV0gPSBvYnNlcnZlZFZhbHVlOwpAQCAtNzksMjEgKzg0LDIwIEBACiAKICAgICAgICAgICAgIGZ1
bmN0aW9uIGN1ZWNoYW5nZShldmVudCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBj
b25zb2xlV3JpdGUoIkVWRU5UKGN1ZWNoYW5nZSkiKTsKLSAgICAgICAgICAgICAgICBpZiAoKytj
dWVjaGFuZ2VDb3VudCAhPSA2KQorICAgICAgICAgICAgICAgIGlmICgrK2N1ZWNoYW5nZUNvdW50
ICE9IGN1ZURhdGEubGVuZ3RoKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj48ZW0+KiogVmFsaWRhdGUgY3VlIGRhdGE8L2Vt
PiIpOwogICAgICAgICAgICAgICAgIHRyYWNrLnJlbW92ZUV2ZW50TGlzdGVuZXIoImN1ZWNoYW5n
ZSIsIGN1ZWNoYW5nZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgdmlkZW8ucGF1c2UoKTsKIAot
ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7CisgICAgICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdWVEYXRhLmxlbmd0aDsgaSsrKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgPGVtPiogJHtpICsgMX08L2VtPmApOwogICAgICAg
ICAgICAgICAgICAgICBjdWUgPSB0cmFjay5jdWVzW2ldOwogCiAgICAgICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidHlwZW9mKGN1ZSkiLCB1bmRlZmluZWQsICIhPSIpOwotICAgICAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImN1ZS50eXBlIiwgIm9yZy5pZDMiKTsKICAgICAgICAg
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJjdWUuZGF0YSIsIG51bGwpOworICAgICAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoImN1ZS50eXBlIiwgY3VlRGF0YVtpXS5rZXlTcGFjZSk7CiAg
ICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiY3VlLnZhbHVlIiwgbnVsbCwgIiE9Iik7
CiAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YoY3VlLnZhbHVlKSA9PSB1bmRlZmluZWQp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KGBFcnJvcjogY3VlLnZhbHVlIGlz
IHVuZGVmaW5lZCFgKTsKQEAgLTEwNyw3ICsxMTEsNyBAQAogICAgICAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiPGVtPioqIEV4dHJhY3QgaW1hZ2VzIGZyb20gY3VlIGRhdGEsIHZhbGlkYXRlIGJ5
IHNldHRpbmcgaW1nLnNyYzwvZW0+Iik7CiAgICAgICAgICAgICAgICAgaW1hZ2VFbGVtZW50ID0g
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3Bob3RvIik7CiAgICAgICAgICAgICAgICAgd2FpdEZv
ckV2ZW50KCdsb2FkJywgaW1hZ2VMb2FkLCBmYWxzZSwgZmFsc2UsIGltYWdlRWxlbWVudCkKLSAg
ICAgICAgICAgICAgICB0ZXN0SW1hZ2UoMyk7CisgICAgICAgICAgICAgICAgdGVzdEltYWdlKDUp
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBjYW5wbGF5dGhyb3VnaCgp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381943</attachid>
            <date>2019-10-25 11:04:56 -0700</date>
            <delta_ts>2019-10-25 19:38:47 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-202101-20191025110456.patch</filename>
            <type>text/plain</type>
            <size>29430</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE4N2ZhZDA5NmE0ZmE4
NGI3MDE2YTU3MGUxYzIyZjI2ODhlYzYyYi4uM2E2N2NkMTQzMTlhOTJhYWM1ZWYzMDc5MjU5YjMw
ZTM3N2Y3MzNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE5LTEwLTE4ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgZm9y
IGNhbGxiYWNrcyBmb3IgbWFuaWZlc3QgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIxMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0
Mjc3MzYyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKyAgICAgICAgCisgICAg
ICAgIFVzZSBBVlBsYXllckl0ZW1NZXRhZGF0YUNvbGxlY3RvciB0byBnZXQgbWFuaWZlc3QgYmFz
ZWQgdGltZSBtZXRhZGF0YS4gVXNlIAorICAgICAgICBBVlBsYXllckl0ZW1NZXRhZGF0YU91dHB1
dCB0byBnZXQgdGltZSBtZXRhZGF0YSBpbnN0ZWFkIG9mIGxpc3RlbmluZyBmb3IgYSAidGltZWRN
ZXRhZGF0YSIKKyAgICAgICAgS1ZPIG9uIEFWUGxheWVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgZXhpc3RpbmcgdGVzdCB1cGRhdGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxNZXRh
ZGF0YVByb2Nlc3NpbmdRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpjYW5jZWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVySXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjptZXRhZGF0YVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bWV0YWRhdGFHcm91cERpZEFycml2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjptZXRhZGF0
YURpZEFycml2ZSk6CisgICAgICAgIChXZWJDb3JlOjppdGVtS1ZPUHJvcGVydGllcyk6CisgICAg
ICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZP
YmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2Vy
dmVyIG1ldGFkYXRhT3V0cHV0OmRpZE91dHB1dFRpbWVkTWV0YWRhdGFHcm91cHM6ZnJvbVBsYXll
ckl0ZW1UcmFjazpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgbWV0YWRh
dGFDb2xsZWN0b3I6ZGlkQ29sbGVjdERhdGVSYW5nZU1ldGFkYXRhR3JvdXBzOmluZGV4ZXNPZk5l
d0dyb3VwczppbmRleGVzT2ZNb2RpZmllZEdyb3VwczpdKToKKwogMjAxOS0xMC0xOCAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgVGV4dFN0cmVh
bSBkdW1waW5nIGZvciBCYXNpY1NoYXBlIHR5cGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAxNWVj
ZDcwNTdjMGFjMTI3NWQ1ZWI2ZDNlOWE0OWY3NmNkM2QxMjM0Li5hMTQ0MzUzOWIwM2JlN2U3YWUx
YjZlNDEwOTQ2NTlkZGU2MzRiODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxOS0xMC0xOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdXBwb3J0IGZvciBjYWxsYmFja3MgZm9yIG1hbmlmZXN0IGV2ZW50cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTAxCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81NDI3NzM2Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9i
bGUuCisKKyAgICAgICAgKiBwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaDoKKyAgICAg
ICAgKiBwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsubW06CisKIDIwMTktMTAtMTUgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbUGljdHVyZS1pbi1QaWN0
dXJlIFdlYiBBUEldIEltcGxlbWVudCBIVE1MVmlkZW9FbGVtZW50LnJlcXVlc3RQaWN0dXJlSW5Q
aWN0dXJlKCkgLyBEb2N1bWVudC5leGl0UGljdHVyZUluUGljdHVyZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmgKaW5kZXggMzJl
Njc3MWY2ODkyZDU5NzMwNjk0NjY0NWI4ODI3MTM2NmFjYjc5NC4uNjU3ODRmZTY1YTkxMmJlNjI0
MTc4YTNhMmUzYWI4OWQwMWE2MzY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaApAQCAtNjIsNiArNjIsOCBAQCBTT0ZUX0xJ
TktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWT3V0cHV0Q29udGV4dCkKIFNPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSKFBBTCwgQVZQbGF5ZXIpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQ
QUwsIEFWUGxheWVySXRlbSkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZQbGF5
ZXJJdGVtTGVnaWJsZU91dHB1dCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZQ
bGF5ZXJJdGVtTWV0YWRhdGFDb2xsZWN0b3IpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQ
QUwsIEFWUGxheWVySXRlbU1ldGFkYXRhT3V0cHV0KQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFE
RVIoUEFMLCBBVlBsYXllckl0ZW1WaWRlb091dHB1dCkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVB
REVSKFBBTCwgQVZQbGF5ZXJMYXllcikKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyKQpAQCAtMjMxLDYgKzIzMyw4IEBAIFNPRlRfTElO
S19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5U3Bh
Y2VJRDMsIE5TU3RyaW5nCiAjZGVmaW5lIEFWTWV0YWRhdGFLZXlTcGFjZUlEMyBQQUw6OmdldF9B
VkZvdW5kYXRpb25fQVZNZXRhZGF0YUtleVNwYWNlSUQzKCkKIFNPRlRfTElOS19DT05TVEFOVF9G
T1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5U3BhY2VJU09Vc2VyRGF0
YSwgTlNTdHJpbmcgKikKICNkZWZpbmUgQVZNZXRhZGF0YUtleVNwYWNlSVNPVXNlckRhdGEgUEFM
OjpnZXRfQVZGb3VuZGF0aW9uX0FWTWV0YWRhdGFLZXlTcGFjZUlTT1VzZXJEYXRhKCkKK1NPRlRf
TElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5
U3BhY2VITFNEYXRlUmFuZ2UsIE5TU3RyaW5nICopCisjZGVmaW5lIEFWTWV0YWRhdGFLZXlTcGFj
ZUhMU0RhdGVSYW5nZSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZXRhZGF0YUtleVNwYWNlSExT
RGF0ZVJhbmdlKCkKIAogI2lmIFBMQVRGT1JNKE1BQykKIFNPRlRfTElOS19DT05TVEFOVF9GT1Jf
SEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlN0cmVhbURhdGFQYXJzZXJDb250ZW50S2V5UmVx
dWVzdFByb3RvY29sVmVyc2lvbnNLZXksIE5TU3RyaW5nICopCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLm1tIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5tbQppbmRleCBlNTcxZTEx
YWU0NDEzNDM2YzE1MzA0Y2UyY2I5YzhlZTdmZDc3ZDE4Li5lMTQ5ZjdmYjgyM2IxNWM4YTFjNWFm
MWJiZGZmODM5ODE2MWJmN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Nv
Y29hL0FWRm91bmRhdGlvblNvZnRMaW5rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsubW0KQEAgLTU0LDYgKzU0LDggQEAgU09GVF9MSU5L
X0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWT3V0cHV0
Q29udGV4dCwgUEFMX0UKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgQVZGb3VuZGF0aW9uLCBBVlBsYXllciwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DTEFTU19G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW0sIFBB
TF9FWFBPUlQpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFW
Rm91bmRhdGlvbiwgQVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dCwgUEFMX0VYUE9SVCkKK1NPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlBs
YXllckl0ZW1NZXRhZGF0YUNvbGxlY3RvciwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DTEFTU19G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1NZXRh
ZGF0YU91dHB1dCwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1WaWRlb091dHB1dCwgUEFMX0VY
UE9SVCkKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3Vu
ZGF0aW9uLCBBVlBsYXllckxheWVyLCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9T
T1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXQsIFBBTF9FWFBP
UlQpCkBAIC0xMTAsNiArMTEyLDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlU3VidGl0bGUKIFNPRlRfTElO
S19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1l
ZGlhVHlwZVZpZGVvLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFDb21t
b25LZXlUaXRsZSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5U3Bh
Y2VDb21tb24sIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUtleVNwYWNl
SExTRGF0ZVJhbmdlLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlT
cGFjZUlEMywgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1Jf
U09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5U3BhY2VJ
U09Vc2VyRGF0YSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5U3Bh
Y2VRdWlja1RpbWVNZXRhZGF0YSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaAppbmRleCA1YjU5OTYxNTIxNGQ3NzlmODQxNDM5OTAyNWNhODE2OGExZmU0YTQ5Li5l
OThkOGVhOTAwMDQ3MThjZmM5MDQ0YTA5ODM2YWYwYjkwZTBmZTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCkBAIC0zOSw2ICszOSw4IEBAIE9CSkNfQ0xBU1MgQVZNZWRpYVNlbGVjdGlvbkdyb3Vw
OwogT0JKQ19DTEFTUyBBVk91dHB1dENvbnRleHQ7CiBPQkpDX0NMQVNTIEFWUGxheWVySXRlbTsK
IE9CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dDsKK09CSkNfQ0xBU1MgQVZQbGF5
ZXJJdGVtTWV0YWRhdGFDb2xsZWN0b3I7CitPQkpDX0NMQVNTIEFWUGxheWVySXRlbU1ldGFkYXRh
T3V0cHV0OwogT0JKQ19DTEFTUyBBVlBsYXllckl0ZW1WaWRlb091dHB1dDsKIE9CSkNfQ0xBU1Mg
QVZQbGF5ZXJMYXllcjsKIE9CSkNfQ0xBU1MgQVZVUkxBc3NldDsKQEAgLTExNiw2ICsxMTgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkdXJhdGlvbkRpZENoYW5nZShjb25zdCBNZWRpYVRpbWUmKTsK
ICAgICB2b2lkIHJhdGVEaWRDaGFuZ2UoZG91YmxlKTsKICAgICB2b2lkIHRpbWVDb250cm9sU3Rh
dHVzRGlkQ2hhbmdlKGludCk7CisgICAgdm9pZCBtZXRhZGF0YUdyb3VwRGlkQXJyaXZlKGNvbnN0
IFJldGFpblB0cjxOU0FycmF5PiYsIGNvbnN0IE1lZGlhVGltZSYpOwogICAgIHZvaWQgbWV0YWRh
dGFEaWRBcnJpdmUoY29uc3QgUmV0YWluUHRyPE5TQXJyYXk+JiwgY29uc3QgTWVkaWFUaW1lJik7
CiAgICAgdm9pZCBmaXJzdEZyYW1lQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpOwogICAgIHZvaWQg
dHJhY2tFbmFibGVkRGlkQ2hhbmdlKGJvb2wpOwpAQCAtMTU1LDYgKzE1OCw4IEBAIHB1YmxpYzoK
ICAgICBib29sIHdhaXRpbmdGb3JLZXkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3dhaXRpbmdG
b3JLZXk7IH0KICNlbmRpZgogCisgICAgTWVkaWFUaW1lIGN1cnJlbnRNZWRpYVRpbWUoKSBjb25z
dCBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAgICAvLyBlbmdpbmUgc3VwcG9ydAogICAgIHN0YXRp
YyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+JiB0eXBlcyk7CkBAIC0xNjksNyArMTc0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBsYXRmb3JtUGxheSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcGxhdGZvcm1QYXVzZSgpIG92ZXJy
aWRlOwogICAgIGJvb2wgcGxhdGZvcm1QYXVzZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBNZWRp
YVRpbWUgY3VycmVudE1lZGlhVGltZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Vm9s
dW1lKGZsb2F0KSBvdmVycmlkZTsKICAgICB2b2lkIHNldE11dGVkKGJvb2wpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwpAQCAtNDEx
LDYgKzQxNSw5IEBAIHByaXZhdGU6CiAjZW5kaWYKICNlbmRpZgogCisgICAgUmV0YWluUHRyPEFW
UGxheWVySXRlbU1ldGFkYXRhQ29sbGVjdG9yPiBtX21ldGFkYXRhQ29sbGVjdG9yOworICAgIFJl
dGFpblB0cjxBVlBsYXllckl0ZW1NZXRhZGF0YU91dHB1dD4gbV9tZXRhZGF0YU91dHB1dDsKKwog
ICAgIG11dGFibGUgUmV0YWluUHRyPE5TQXJyYXk+IG1fY2FjaGVkU2Vla2FibGVSYW5nZXM7CiAg
ICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNBcnJheT4gbV9jYWNoZWRMb2FkZWRSYW5nZXM7CiAgICAg
UmV0YWluUHRyPE5TQXJyYXk+IG1fY2FjaGVkVHJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
aW5kZXggZTY2MThhMzgzZWI0NmFiMTcyZDM4NGU0ZTM0ZTgxMTJhNGQzMzQ2NS4uNzg3NzFkMjRl
ZjQxZmVlM2I2MmRiOWQ4OTMxZDIwYjM3ZmU4YzRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CkBAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIHZvaWQgZW5zdXJlT25NYWluVGhyZWFkKEZ1bmN0
aW9uPHZvaWQoKT4mJiBmKQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUoZikpOwog
fQogCi1AaW50ZXJmYWNlIFdlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIDogTlNPYmplY3QgPEFWUGxh
eWVySXRlbUxlZ2libGVPdXRwdXRQdXNoRGVsZWdhdGU+CitAaW50ZXJmYWNlIFdlYkNvcmVBVkZN
b3ZpZU9ic2VydmVyIDogTlNPYmplY3QgPEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXRQdXNoRGVs
ZWdhdGUsIEFWUGxheWVySXRlbU1ldGFkYXRhT3V0cHV0UHVzaERlbGVnYXRlLCBBVlBsYXllckl0
ZW1NZXRhZGF0YUNvbGxlY3RvclB1c2hEZWxlZ2F0ZT4KIHsKICAgICBXZWFrUHRyPE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+IG1fcGxheWVyOwogICAgIEdlbmVyaWNUYXNrUXVl
dWU8VGltZXI+IG1fdGFza1F1ZXVlOwpAQCAtMTg3LDYgKzE4Nyw4IEBAIHN0YXRpYyB2b2lkIGVu
c3VyZU9uTWFpblRocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgZikKIC0odm9pZClvYnNlcnZlVmFs
dWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlv
bmFyeSAqKWNoYW5nZSBjb250ZXh0OihNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9u
Q29udGV4dCljb250ZXh0OwogLSAodm9pZClsZWdpYmxlT3V0cHV0OihpZClvdXRwdXQgZGlkT3V0
cHV0QXR0cmlidXRlZFN0cmluZ3M6KE5TQXJyYXkgKilzdHJpbmdzIG5hdGl2ZVNhbXBsZUJ1ZmZl
cnM6KE5TQXJyYXkgKiluYXRpdmVTYW1wbGVzIGZvckl0ZW1UaW1lOihDTVRpbWUpaXRlbVRpbWU7
CiAtICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooaWQpb3V0cHV0OworLSAodm9pZClt
ZXRhZGF0YUNvbGxlY3RvcjooQVZQbGF5ZXJJdGVtTWV0YWRhdGFDb2xsZWN0b3IgKiltZXRhZGF0
YUNvbGxlY3RvciBkaWRDb2xsZWN0RGF0ZVJhbmdlTWV0YWRhdGFHcm91cHM6KE5TQXJyYXk8QVZE
YXRlUmFuZ2VNZXRhZGF0YUdyb3VwICo+ICopbWV0YWRhdGFHcm91cHMgaW5kZXhlc09mTmV3R3Jv
dXBzOihOU0luZGV4U2V0ICopaW5kZXhlc09mTmV3R3JvdXBzIGluZGV4ZXNPZk1vZGlmaWVkR3Jv
dXBzOihOU0luZGV4U2V0ICopaW5kZXhlc09mTW9kaWZpZWRHcm91cHM7CistICh2b2lkKW1ldGFk
YXRhT3V0cHV0OihBVlBsYXllckl0ZW1NZXRhZGF0YU91dHB1dCAqKW91dHB1dCBkaWRPdXRwdXRU
aW1lZE1ldGFkYXRhR3JvdXBzOihOU0FycmF5PEFWVGltZWRNZXRhZGF0YUdyb3VwICo+ICopZ3Jv
dXBzIGZyb21QbGF5ZXJJdGVtVHJhY2s6KEFWUGxheWVySXRlbVRyYWNrICopdHJhY2s7CiBAZW5k
CiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUpCkBAIC00MzcsNiArNDM5
LDE5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2FuY2VsTG9h
ZCgpCiAgICAgICAgIG1fbGVnaWJsZU91dHB1dCA9IG5pbDsKICAgICB9CiAKKyAgICBpZiAobV9t
ZXRhZGF0YUNvbGxlY3RvcikgeworICAgICAgICAvLyBGSVhNRSAtIHJlbW92ZU1lZGlhRGF0YUNv
bGxlY3RvciBzb21ldGltZXMgY3Jhc2hlcywgZG8gbm90IHVuY29tbWVudCB0aGlzIHVudGlsIHJk
YXI6Ly81NjYxNzUwNCBoYXMgYmVlbiBmaXhlZC4KKyAgICAgICAgLy8gaWYgKG1fYXZQbGF5ZXJJ
dGVtKQorICAgICAgICAvLyAgICAgW21fYXZQbGF5ZXJJdGVtLmdldCgpIHJlbW92ZU1lZGlhRGF0
YUNvbGxlY3RvcjptX21ldGFkYXRhQ29sbGVjdG9yLmdldCgpXTsKKyAgICAgICAgbV9tZXRhZGF0
YUNvbGxlY3RvciA9IG5pbDsKKyAgICB9CisKKyAgICBpZiAobV9tZXRhZGF0YU91dHB1dCkgewor
ICAgICAgICBpZiAobV9hdlBsYXllckl0ZW0pCisgICAgICAgICAgICBbbV9hdlBsYXllckl0ZW0u
Z2V0KCkgcmVtb3ZlT3V0cHV0Om1fbWV0YWRhdGFPdXRwdXQuZ2V0KCldOworICAgICAgICBtX21l
dGFkYXRhT3V0cHV0ID0gbmlsOworICAgIH0KKwogICAgIGlmIChtX2F2UGxheWVySXRlbSkgewog
ICAgICAgICBmb3IgKE5TU3RyaW5nICprZXlOYW1lIGluIGl0ZW1LVk9Qcm9wZXJ0aWVzKCkpCiAg
ICAgICAgICAgICBbbV9hdlBsYXllckl0ZW0uZ2V0KCkgcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpjT2Jz
ZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDprZXlOYW1lXTsKQEAgLTkzOSwxNCArOTU0LDE0IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJJdGVt
KCkKICAgICBpZiAobV9hdlBsYXllcikKICAgICAgICAgc2V0QVZQbGF5ZXJJdGVtKG1fYXZQbGF5
ZXJJdGVtLmdldCgpKTsKIAotICAgIGNvbnN0IE5TVGltZUludGVydmFsIGxlZ2libGVPdXRwdXRB
ZHZhbmNlSW50ZXJ2YWwgPSAyOworICAgIGNvbnN0IE5TVGltZUludGVydmFsIGF2UGxheWVyT3V0
cHV0QWR2YW5jZUludGVydmFsID0gMjsKIAogICAgIFJldGFpblB0cjxOU0FycmF5PiBzdWJ0eXBl
cyA9IGFkb3B0TlMoW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6W05TTnVtYmVyIG51
bWJlcldpdGhVbnNpZ25lZEludDprQ01TdWJ0aXRsZUZvcm1hdFR5cGVfV2ViVlRUXSwgbmlsXSk7
CiAgICAgbV9sZWdpYmxlT3V0cHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVySXRlbUxl
Z2libGVPdXRwdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFTdWJ0eXBlc0Zvck5hdGl2ZVJlcHJl
c2VudGF0aW9uOnN1YnR5cGVzLmdldCgpXSk7CiAgICAgW21fbGVnaWJsZU91dHB1dC5nZXQoKSBz
ZXRTdXBwcmVzc2VzUGxheWVyUmVuZGVyaW5nOllFU107CiAKICAgICBbbV9sZWdpYmxlT3V0cHV0
LmdldCgpIHNldERlbGVnYXRlOm1fb2JqY09ic2VydmVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCldOwotICAgIFttX2xlZ2libGVPdXRwdXQuZ2V0KCkgc2V0QWR2YW5jZUlu
dGVydmFsRm9yRGVsZWdhdGVJbnZvY2F0aW9uOmxlZ2libGVPdXRwdXRBZHZhbmNlSW50ZXJ2YWxd
OworICAgIFttX2xlZ2libGVPdXRwdXQuZ2V0KCkgc2V0QWR2YW5jZUludGVydmFsRm9yRGVsZWdh
dGVJbnZvY2F0aW9uOmF2UGxheWVyT3V0cHV0QWR2YW5jZUludGVydmFsXTsKICAgICBbbV9sZWdp
YmxlT3V0cHV0LmdldCgpIHNldFRleHRTdHlsaW5nUmVzb2x1dGlvbjpBVlBsYXllckl0ZW1MZWdp
YmxlT3V0cHV0VGV4dFN0eWxpbmdSZXNvbHV0aW9uU291cmNlQW5kUnVsZXNPbmx5XTsKICAgICBb
bV9hdlBsYXllckl0ZW0uZ2V0KCkgYWRkT3V0cHV0Om1fbGVnaWJsZU91dHB1dC5nZXQoKV07CiAK
QEAgLTk2MSw2ICs5NzYsMTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpjcmVhdGVBVlBsYXllckl0ZW0oKQogICAgIGNyZWF0ZVZpZGVvT3V0cHV0KCk7CiAjZW5k
aWYKIAorICAgIG1fbWV0YWRhdGFDb2xsZWN0b3IgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZQbGF5
ZXJJdGVtTWV0YWRhdGFDb2xsZWN0b3JJbnN0YW5jZSgpIGluaXRXaXRoSWRlbnRpZmllcnM6bmls
IGNsYXNzaWZ5aW5nTGFiZWxzOm5pbF0pOworICAgIFttX21ldGFkYXRhQ29sbGVjdG9yLmdldCgp
IHNldERlbGVnYXRlOm1fb2JqY09ic2VydmVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCldOworICAgIFttX2F2UGxheWVySXRlbS5nZXQoKSBhZGRNZWRpYURhdGFDb2xsZWN0
b3I6bV9tZXRhZGF0YUNvbGxlY3Rvci5nZXQoKV07CisKKyAgICBtX21ldGFkYXRhT3V0cHV0ID0g
YWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVySXRlbU1ldGFkYXRhT3V0cHV0SW5zdGFuY2UoKSBp
bml0V2l0aElkZW50aWZpZXJzOm5pbF0pOworICAgIFttX21ldGFkYXRhT3V0cHV0LmdldCgpIHNl
dERlbGVnYXRlOm1fb2JqY09ic2VydmVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCldOworICAgIFttX21ldGFkYXRhT3V0cHV0LmdldCgpIHNldEFkdmFuY2VJbnRlcnZhbEZv
ckRlbGVnYXRlSW52b2NhdGlvbjphdlBsYXllck91dHB1dEFkdmFuY2VJbnRlcnZhbF07CisgICAg
W21fYXZQbGF5ZXJJdGVtLmdldCgpIGFkZE91dHB1dDptX21ldGFkYXRhT3V0cHV0LmdldCgpXTsK
KwogICAgIHNldERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsKIH0KIApAQCAtMjk3Miw3ICsyOTk2LDYg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRCdWZmZXJpbmdQ
b2xpY3koTWVkaWFQbGF5ZXI6OkJ1ZmZlcmkKIH0KIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVF
KQotCiBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgbWV0YWRhdGFUeXBlKE5TU3RyaW5nICphdk1l
dGFkYXRhS2V5U3BhY2UpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21T
dHJpbmc+IHF1aWNrVGltZVVzZXJEYXRhKCJjb20uYXBwbGUucXVpY2t0aW1lLnVkdGEiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CkBAIC0yOTgwLDYgKzMwMDMsNyBAQCBzdGF0
aWMgY29uc3QgQXRvbVN0cmluZyYgbWV0YWRhdGFUeXBlKE5TU3RyaW5nICphdk1ldGFkYXRhS2V5
U3BhY2UpCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHF1aWNr
VGltZU1ldGFkYXRhKCJjb20uYXBwbGUucXVpY2t0aW1lLm1kdGEiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21T
dHJpbmc+IGlUdW5lc01ldGFkYXRhKCJjb20uYXBwbGUuaXR1bmVzIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBpZDNNZXRhZGF0YSgib3JnLmlkMyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaGxz
RGF0ZVJhbmdlTWV0YWRhdGEoImNvbS5hcHBsZS5xdWlja3RpbWUuSExTIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgaWYgKFthdk1ldGFkYXRhS2V5U3BhY2UgaXNF
cXVhbFRvU3RyaW5nOkFWTWV0YWRhdGFLZXlTcGFjZVF1aWNrVGltZVVzZXJEYXRhXSkKICAgICAg
ICAgcmV0dXJuIHF1aWNrVGltZVVzZXJEYXRhOwpAQCAtMjk5MSwxMiArMzAxNSw0MCBAQCBzdGF0
aWMgY29uc3QgQXRvbVN0cmluZyYgbWV0YWRhdGFUeXBlKE5TU3RyaW5nICphdk1ldGFkYXRhS2V5
U3BhY2UpCiAgICAgICAgIHJldHVybiBpVHVuZXNNZXRhZGF0YTsKICAgICBpZiAoW2F2TWV0YWRh
dGFLZXlTcGFjZSBpc0VxdWFsVG9TdHJpbmc6QVZNZXRhZGF0YUtleVNwYWNlSUQzXSkKICAgICAg
ICAgcmV0dXJuIGlkM01ldGFkYXRhOworICAgIGlmIChbYXZNZXRhZGF0YUtleVNwYWNlIGlzRXF1
YWxUb1N0cmluZzpBVk1ldGFkYXRhS2V5U3BhY2VITFNEYXRlUmFuZ2VdKQorICAgICAgICByZXR1
cm4gaGxzRGF0ZVJhbmdlTWV0YWRhdGE7CiAKICAgICByZXR1cm4gZW1wdHlBdG9tKCk7CiB9Ci0K
ICNlbmRpZgogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om1ldGFk
YXRhR3JvdXBEaWRBcnJpdmUoY29uc3QgUmV0YWluUHRyPE5TQXJyYXk+JiBncm91cHMsIGNvbnN0
IE1lZGlhVGltZSYgY3VycmVudFRpbWUpCit7CisgICAgZm9yIChBVkRhdGVSYW5nZU1ldGFkYXRh
R3JvdXAgKmdyb3VwIGluIGdyb3Vwcy5nZXQoKSkgeworICAgICAgICBhdXRvIGdyb3VwU3RhcnRE
YXRlID0gZ3JvdXAuc3RhcnREYXRlLnRpbWVJbnRlcnZhbFNpbmNlMTk3MDsKKyAgICAgICAgYXV0
byBncm91cEVuZERhdGUgPSBncm91cC5lbmREYXRlLnRpbWVJbnRlcnZhbFNpbmNlMTk3MDsKKyAg
ICAgICAgYXV0byBncm91cER1cmF0aW9uID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGdy
b3VwRW5kRGF0ZSAtIGdyb3VwU3RhcnREYXRlKTsKKworICAgICAgICAvLyBBIG1hbmlmZXN0IHdp
dGhvdXQgYSAjRVhULVgtUFJPR1JBTS1EQVRFLVRJTUUgd29uJ3QgaGF2ZSBhIHN0YXJ0IGRhdGUs
IHNvIGlmIGN1cnJlbnREYXRlCisgICAgICAgIC8vIGlzIHplcm8gYXNzdW1lIHRoZSBtZXRhZGF0
YSBpdGVtcyBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJlYW0uCisgICAgICAgIGRv
dWJsZSBncm91cFN0YXJ0VGltZSA9IDA7CisgICAgICAgIGlmIChhdXRvIGN1cnJlbnREYXRlID0g
bV9hdlBsYXllckl0ZW0uZ2V0KCkuY3VycmVudERhdGUudGltZUludGVydmFsU2luY2UxOTcwKQor
ICAgICAgICAgICAgZ3JvdXBTdGFydFRpbWUgPSBncm91cFN0YXJ0RGF0ZSAtIGN1cnJlbnREYXRl
IC0gY3VycmVudFRpbWUudG9Eb3VibGUoKTsKKworICAgICAgICBhdXRvIGdyb3VwQ29weSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgICAgICBmb3IgKEFWTWV0
YWRhdGFJdGVtICppdGVtIGluIGdyb3VwLml0ZW1zKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8
QVZNdXRhYmxlTWV0YWRhdGFJdGVtPiBpdGVtQ29weSA9IGFkb3B0TlMoW2l0ZW0gbXV0YWJsZUNv
cHldKTsKKyAgICAgICAgICAgIGlmICghQ01USU1FX0lTX1ZBTElEKGl0ZW1Db3B5LmdldCgpLnRp
bWUpKQorICAgICAgICAgICAgICAgIGl0ZW1Db3B5LmdldCgpLnRpbWUgPSBDTVRpbWVNYWtlV2l0
aFNlY29uZHMoZ3JvdXBTdGFydFRpbWUsIE1lZGlhVGltZTo6RGVmYXVsdFRpbWVTY2FsZSk7Cisg
ICAgICAgICAgICBpZiAoIUNNVElNRV9JU19WQUxJRChpdGVtQ29weS5nZXQoKS5kdXJhdGlvbikp
CisgICAgICAgICAgICAgICAgaXRlbUNvcHkuZ2V0KCkuZHVyYXRpb24gPSB0b0NNVGltZShncm91
cER1cmF0aW9uKTsKKyAgICAgICAgICAgIFtncm91cENvcHkgYWRkT2JqZWN0Oml0ZW1Db3B5Lmdl
dCgpXTsKKyAgICAgICAgfQorCisgICAgICAgIG1ldGFkYXRhRGlkQXJyaXZlKGdyb3VwQ29weSwg
Y3VycmVudFRpbWUpOworICAgIH0KK30KKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjptZXRhZGF0YURpZEFycml2ZShjb25zdCBSZXRhaW5QdHI8TlNBcnJheT4mIG1l
dGFkYXRhLCBjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSkKIHsKICAgICBtX2N1cnJlbnRNZXRh
RGF0YSA9IG1ldGFkYXRhICYmICFbbWV0YWRhdGEgaXNLaW5kT2ZDbGFzczpbTlNOdWxsIGNsYXNz
XV0gPyBtZXRhZGF0YSA6IG5pbDsKQEAgLTMwMjUsMTAgKzMwNzcsMTQgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjptZXRhZGF0YURpZEFycml2ZShjb25zdCBSZXRh
aW5QdHI8TlNBcnIKICAgICBtX21ldGFkYXRhVHJhY2stPnVwZGF0ZVBlbmRpbmdDdWVFbmRUaW1l
cyhlYXJsaWVzdFN0YXJ0VGltZSk7CiAKICAgICBmb3IgKEFWTWV0YWRhdGFJdGVtICppdGVtIGlu
IG1fY3VycmVudE1ldGFEYXRhLmdldCgpKSB7Ci0gICAgICAgIE1lZGlhVGltZSBzdGFydCA9IHN0
ZDo6bWF4KFBBTDo6dG9NZWRpYVRpbWUoaXRlbS50aW1lKSwgTWVkaWFUaW1lOjp6ZXJvVGltZSgp
KTsKKyAgICAgICAgTWVkaWFUaW1lIHN0YXJ0OworICAgICAgICBpZiAoQ01USU1FX0lTX1ZBTElE
KGl0ZW0udGltZSkpCisgICAgICAgICAgICBzdGFydCA9IHN0ZDo6bWF4KFBBTDo6dG9NZWRpYVRp
bWUoaXRlbS50aW1lKSwgTWVkaWFUaW1lOjp6ZXJvVGltZSgpKTsKKwogICAgICAgICBNZWRpYVRp
bWUgZW5kID0gTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgICAgICBpZiAo
Q01USU1FX0lTX1ZBTElEKGl0ZW0uZHVyYXRpb24pKQotICAgICAgICAgICAgZW5kID0gc3RhcnQg
KyBQQUw6OnRvTWVkaWFUaW1lKGl0ZW0uZHVyYXRpb24pOworICAgICAgICBhdXRvIGR1cmF0aW9u
ID0gaXRlbS5kdXJhdGlvbjsKKyAgICAgICAgaWYgKENNVElNRV9JU19WQUxJRChkdXJhdGlvbikg
JiYgQ01UaW1lR2V0U2Vjb25kcyhkdXJhdGlvbikgPiAwLjAwMSkKKyAgICAgICAgICAgIGVuZCA9
IHN0YXJ0ICsgUEFMOjp0b01lZGlhVGltZShkdXJhdGlvbik7CiAKICAgICAgICAgQXRvbVN0cmlu
ZyB0eXBlID0gbnVsbEF0b20oKTsKICAgICAgICAgaWYgKGl0ZW0ua2V5U3BhY2UpCkBAIC0zMjU0
LDcgKzMzMTAsNiBAQCBOU0FycmF5KiBpdGVtS1ZPUHJvcGVydGllcygpCiAgICAgICAgIEAicGxh
eWJhY2tCdWZmZXJFbXB0eSIsCiAgICAgICAgIEAiZHVyYXRpb24iLAogICAgICAgICBAImhhc0Vu
YWJsZWRBdWRpbyIsCi0gICAgICAgIEAidGltZWRNZXRhZGF0YSIsCiAgICAgICAgIEAiY2FuUGxh
eUZhc3RGb3J3YXJkIiwKICAgICAgICAgQCJjYW5QbGF5RmFzdFJldmVyc2UiLAogICAgIG5pbF07
CkBAIC0zMzc1LDE0ICszNDMwLDcgQEAgTlNBcnJheSogcGxheWVyS1ZPUHJvcGVydGllcygpCiAg
ICAgICAgICAgICAgICAgICAgIHBsYXllci0+cHJlc2VudGF0aW9uU2l6ZURpZENoYW5nZShGbG9h
dFNpemUoW25ld1ZhbHVlIHNpemVWYWx1ZV0pKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChb
a2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJkdXJhdGlvbiJdKQogICAgICAgICAgICAgICAgICAg
ICBwbGF5ZXItPmR1cmF0aW9uRGlkQ2hhbmdlKFBBTDo6dG9NZWRpYVRpbWUoW25ld1ZhbHVlIENN
VGltZVZhbHVlXSkpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxU
b1N0cmluZzpAInRpbWVkTWV0YWRhdGEiXSAmJiBuZXdWYWx1ZSkgewotICAgICAgICAgICAgICAg
ICAgICBNZWRpYVRpbWUgbm93OwotICAgICAgICAgICAgICAgICAgICBDTVRpbWUgaXRlbVRpbWUg
PSBbKEFWUGxheWVySXRlbSAqKW9iamVjdC5nZXQoKSBjdXJyZW50VGltZV07Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChDTVRJTUVfSVNfTlVNRVJJQyhpdGVtVGltZSkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBub3cgPSBzdGQ6Om1heChQQUw6OnRvTWVkaWFUaW1lKGl0ZW1UaW1lKSwgTWVk
aWFUaW1lOjp6ZXJvVGltZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5tZXRhZGF0
YURpZEFycml2ZShSZXRhaW5QdHI8TlNBcnJheT4obmV3VmFsdWUpLCBub3cpOwotICAgICAgICAg
ICAgICAgICAgICBzaG91bGRMb2dWYWx1ZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiY2FuUGxheUZhc3RSZXZlcnNlIl0pCisg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiY2FuUGxh
eUZhc3RSZXZlcnNlIl0pCiAgICAgICAgICAgICAgICAgICAgIHBsYXllci0+Y2FuUGxheUZhc3RS
ZXZlcnNlRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKICAgICAgICAgICAgICAgICBl
bHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJjYW5QbGF5RmFzdEZvcndhcmQiXSkK
ICAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5jYW5QbGF5RmFzdEZvcndhcmREaWRDaGFuZ2Uo
W25ld1ZhbHVlIGJvb2xWYWx1ZV0pOwpAQCAtMzQ0OSw2ICszNDk3LDM1IEBAIE5TQXJyYXkqIHBs
YXllcktWT1Byb3BlcnRpZXMoKQogICAgIH0pOwogfQogCistICh2b2lkKW1ldGFkYXRhT3V0cHV0
OihBVlBsYXllckl0ZW1NZXRhZGF0YU91dHB1dCAqKW91dHB1dCBkaWRPdXRwdXRUaW1lZE1ldGFk
YXRhR3JvdXBzOihOU0FycmF5PEFWVGltZWRNZXRhZGF0YUdyb3VwICo+ICopbWV0YWRhdGFHcm91
cHMgZnJvbVBsYXllckl0ZW1UcmFjazooQVZQbGF5ZXJJdGVtVHJhY2sgKil0cmFjaworeworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgVU5VU0VEX1BBUkFNKG91dHB1dCk7CisgICAg
VU5VU0VEX1BBUkFNKHRyYWNrKTsKKworICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5
ZXIgPSBtX3BsYXllciwgbWV0YWRhdGFHcm91cHMgPSByZXRhaW5QdHIobWV0YWRhdGFHcm91cHMp
LCBjdXJyZW50VGltZSA9IG1fcGxheWVyLT5jdXJyZW50TWVkaWFUaW1lKCldIHsKKyAgICAgICAg
aWYgKCFwbGF5ZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChBVlRpbWVk
TWV0YWRhdGFHcm91cCAqZ3JvdXAgaW4gbWV0YWRhdGFHcm91cHMuZ2V0KCkpCisgICAgICAgICAg
ICBwbGF5ZXItPm1ldGFkYXRhRGlkQXJyaXZlKHJldGFpblB0cihncm91cC5pdGVtcyksIGN1cnJl
bnRUaW1lKTsKKyAgICB9KTsKK30KKworLSAodm9pZCltZXRhZGF0YUNvbGxlY3RvcjooQVZQbGF5
ZXJJdGVtTWV0YWRhdGFDb2xsZWN0b3IgKiltZXRhZGF0YUNvbGxlY3RvciBkaWRDb2xsZWN0RGF0
ZVJhbmdlTWV0YWRhdGFHcm91cHM6KE5TQXJyYXk8QVZEYXRlUmFuZ2VNZXRhZGF0YUdyb3VwICo+
ICopbWV0YWRhdGFHcm91cHMgaW5kZXhlc09mTmV3R3JvdXBzOihOU0luZGV4U2V0ICopaW5kZXhl
c09mTmV3R3JvdXBzIGluZGV4ZXNPZk1vZGlmaWVkR3JvdXBzOihOU0luZGV4U2V0ICopaW5kZXhl
c09mTW9kaWZpZWRHcm91cHMKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFVO
VVNFRF9QQVJBTShtZXRhZGF0YUNvbGxlY3Rvcik7CisgICAgVU5VU0VEX1BBUkFNKGluZGV4ZXNP
Zk5ld0dyb3Vwcyk7CisgICAgVU5VU0VEX1BBUkFNKGluZGV4ZXNPZk1vZGlmaWVkR3JvdXBzKTsK
KworICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtwbGF5ZXIgPSBtX3BsYXllciwgbWV0YWRh
dGFHcm91cHMgPSByZXRhaW5QdHIobWV0YWRhdGFHcm91cHMpLCBjdXJyZW50VGltZSA9IG1fcGxh
eWVyLT5jdXJyZW50TWVkaWFUaW1lKCldIHsKKyAgICAgICAgaWYgKCFwbGF5ZXIpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgcGxheWVyLT5tZXRhZGF0YUdyb3VwRGlkQXJyaXZlKG1l
dGFkYXRhR3JvdXBzLCBjdXJyZW50VGltZSk7CisgICAgfSk7Cit9CiBAZW5kCiAKICNpZiBIQVZF
KEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUpCkBAIC0zNTA2LDcgKzM1ODMsNyBAQCBOU0Fy
cmF5KiBwbGF5ZXJLVk9Qcm9wZXJ0aWVzKCkKIAogQGVuZAogCi0jZW5kaWYKKyNlbmRpZiAvLyBI
QVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUpCiAKICNpZiBIQVZFKEFWRk9VTkRBVElP
Tl9WSURFT19PVVRQVVQpCiAKQEAgLTM1MzQsNiArMzYxMSw2IEBAIE5TQXJyYXkqIHBsYXllcktW
T1Byb3BlcnRpZXMoKQogCiBAZW5kCiAKLSNlbmRpZgorI2VuZGlmIC8vIEhBVkUoQVZGT1VOREFU
SU9OX1ZJREVPX09VVFBVVCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzZhMGUxMzc3ZDY4OGVkMzdjNmE4
YzE3M2FkODA2Y2U2ZmM3ZjZmZi4uNTNjOWMzZThkYWYxN2I1YmU0ZDg1YWVhMmNlMDk4YTVkNzU1
NDY0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTEwLTE4ICBFcmljIENhcmxzb24gIDxl
cmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgZm9yIGNhbGxiYWNrcyBm
b3IgbWFuaWZlc3QgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDIxMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0Mjc3MzYyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvbWVk
aWEvcmVzb3VyY2VzL2hscy9tZXRhZGF0YS9wcm9nX2luZGV4Lm0zdTg6CisgICAgICAgICogaHR0
cC90ZXN0cy9tZWRpYS90cmFjay1pbi1iYW5kLWhscy1tZXRhZGF0YS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9tZWRpYS90cmFjay1pbi1iYW5kLWhscy1tZXRhZGF0YS5odG1s
OgorCiAyMDE5LTEwLTE4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5j
b20+CiAKICAgICAgICAgTG9hZCBldmVudCBtdXN0IGJlIGZpcmVkIG9ubHkgZm9yIHRoZSBTVkcg
c3RydWN0dXJhbGx5IGV4dGVybmFsIGVsZW1lbnRzIGFuZCB0aGUgb3V0ZXJtb3N0IFNWRyBlbGVt
ZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3Jlc291cmNlcy9o
bHMvbWV0YWRhdGEvcHJvZ19pbmRleC5tM3U4IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRp
YS9yZXNvdXJjZXMvaGxzL21ldGFkYXRhL3Byb2dfaW5kZXgubTN1OAppbmRleCA5Njk5MGZmMTYz
NGJlMmEwNzFiNzEyYjE1ZWNiMWI3NjVlYzI2NjQzLi4xZjJlZDQ3MjEyZTk5M2JiZmUxNDI3NzQ0
OWNlMzg2NGNjMTU4MjRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlh
L3Jlc291cmNlcy9obHMvbWV0YWRhdGEvcHJvZ19pbmRleC5tM3U4CisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWVkaWEvcmVzb3VyY2VzL2hscy9tZXRhZGF0YS9wcm9nX2luZGV4Lm0zdTgK
QEAgLTMsNiArMyw4IEBACiAjRVhULVgtVkVSU0lPTjozCiAjRVhULVgtTUVESUEtU0VRVUVOQ0U6
MAogI0VYVC1YLVBMQVlMSVNULVRZUEU6Vk9ECisjRVhULVgtREFURVJBTkdFOklEPSJjdWUtMSIs
U1RBUlQtREFURT0iMjAxOS0wMS0wMVQwMDowMDowMC4wMDBaIixEVVJBVElPTj01LjAwMDAwMCxY
LVNUQVJULU9GRlNFVD0iMC4wMDAwMDAiCisjRVhULVgtREFURVJBTkdFOklEPSJjdWUtMiIsU1RB
UlQtREFURT0iMjAxOS0wMS0wMVQwMDowMDowNS4wMDBaIixEVVJBVElPTj01LjAwMDAwMCxYLUVO
RC1PRkZTRVQ9IjUuMDAwMDAwIgogI0VYVElORjo1LjAwMDAwLAkKIGZpbGVTZXF1ZW5jZTIudHMK
ICNFWFRJTkY6NC44MDAwMCwJCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21l
ZGlhL3RyYWNrLWluLWJhbmQtaGxzLW1ldGFkYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWVkaWEvdHJhY2staW4tYmFuZC1obHMtbWV0YWRhdGEtZXhwZWN0ZWQudHh0
CmluZGV4IDQwZTZjYzc3YzE0OTkwNzliZmE3MmMzMTVmODhlNjc0MWEyYjdjMjguLjI4NWI0OTEx
ODM3M2RjNTc1MGVjOTYwYTkwMjhkZTcwNDNjYTZlOTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWVkaWEvdHJhY2staW4tYmFuZC1obHMtbWV0YWRhdGEtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdHJhY2staW4tYmFuZC1obHMtbWV0
YWRhdGEtZXhwZWN0ZWQudHh0CkBAIC0xNSw0MiArMTUsNTIgQEAgRVZFTlQoY2FucGxheXRocm91
Z2gpCiAKICoqIFN0YXJ0IHBsYXliYWNrLCB3YWl0IGZvciBhbGwgY3VlcyB0byBsb2FkCiBSVU4o
dmlkZW8ucGxheSgpKQotRVZFTlQoY3VlY2hhbmdlKQotRVZFTlQoY3VlY2hhbmdlKQotRVZFTlQo
Y3VlY2hhbmdlKQotRVZFTlQoY3VlY2hhbmdlKQotRVZFTlQoY3VlY2hhbmdlKQotRVZFTlQoY3Vl
Y2hhbmdlKQogCiAqKiBWYWxpZGF0ZSBjdWUgZGF0YQogKiAxCiBFWFBFQ1RFRCAodHlwZW9mKGN1
ZSkgIT0gJ3VuZGVmaW5lZCcpIE9LCi1FWFBFQ1RFRCAoY3VlLnR5cGUgPT0gJ29yZy5pZDMnKSBP
SwogRVhQRUNURUQgKGN1ZS5kYXRhID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChjdWUudHlwZSA9
PSAnY29tLmFwcGxlLnF1aWNrdGltZS5ITFMnKSBPSwogRVhQRUNURUQgKGN1ZS52YWx1ZSAhPSAn
bnVsbCcpIE9LCi1FWFBFQ1RFRCAoY3VlLnZhbHVlLmtleSA9PSAnIlRJVDIiJykgT0sKLUVYUEVD
VEVEIChjdWUudmFsdWUuZGF0YSA9PSAnIlN0cmVhbSBDb3VudGluZyInKSBPSworRVhQRUNURUQg
KGN1ZS52YWx1ZS5rZXkgPT0gJyJYLVNUQVJULU9GRlNFVCInKSBPSworRVhQRUNURUQgKGN1ZS52
YWx1ZS5kYXRhID09ICciMC4wMDAwMDAiJykgT0sKIAogKiAyCiBFWFBFQ1RFRCAodHlwZW9mKGN1
ZSkgIT0gJ3VuZGVmaW5lZCcpIE9LCitFWFBFQ1RFRCAoY3VlLmRhdGEgPT0gJ251bGwnKSBPSwor
RVhQRUNURUQgKGN1ZS50eXBlID09ICdjb20uYXBwbGUucXVpY2t0aW1lLkhMUycpIE9LCitFWFBF
Q1RFRCAoY3VlLnZhbHVlICE9ICdudWxsJykgT0sKK0VYUEVDVEVEIChjdWUudmFsdWUua2V5ID09
ICciWC1FTkQtT0ZGU0VUIicpIE9LCitFWFBFQ1RFRCAoY3VlLnZhbHVlLmRhdGEgPT0gJyI1LjAw
MDAwMCInKSBPSworCisqIDMKK0VYUEVDVEVEICh0eXBlb2YoY3VlKSAhPSAndW5kZWZpbmVkJykg
T0sKK0VYUEVDVEVEIChjdWUuZGF0YSA9PSAnbnVsbCcpIE9LCiBFWFBFQ1RFRCAoY3VlLnR5cGUg
PT0gJ29yZy5pZDMnKSBPSworRVhQRUNURUQgKGN1ZS52YWx1ZSAhPSAnbnVsbCcpIE9LCitFWFBF
Q1RFRCAoY3VlLnZhbHVlLmtleSA9PSAnIlRJVDIiJykgT0sKK0VYUEVDVEVEIChjdWUudmFsdWUu
ZGF0YSA9PSAnIlN0cmVhbSBDb3VudGluZyInKSBPSworCisqIDQKK0VYUEVDVEVEICh0eXBlb2Yo
Y3VlKSAhPSAndW5kZWZpbmVkJykgT0sKIEVYUEVDVEVEIChjdWUuZGF0YSA9PSAnbnVsbCcpIE9L
CitFWFBFQ1RFRCAoY3VlLnR5cGUgPT0gJ29yZy5pZDMnKSBPSwogRVhQRUNURUQgKGN1ZS52YWx1
ZSAhPSAnbnVsbCcpIE9LCiBFWFBFQ1RFRCAoY3VlLnZhbHVlLmtleSA9PSAnIlRQRTEiJykgT0sK
IEVYUEVDVEVEIChjdWUudmFsdWUuZGF0YSA9PSAnIkFuZHkiJykgT0sKIAotKiAzCisqIDUKIEVY
UEVDVEVEICh0eXBlb2YoY3VlKSAhPSAndW5kZWZpbmVkJykgT0sKLUVYUEVDVEVEIChjdWUudHlw
ZSA9PSAnb3JnLmlkMycpIE9LCiBFWFBFQ1RFRCAoY3VlLmRhdGEgPT0gJ251bGwnKSBPSworRVhQ
RUNURUQgKGN1ZS50eXBlID09ICdvcmcuaWQzJykgT0sKIEVYUEVDVEVEIChjdWUudmFsdWUgIT0g
J251bGwnKSBPSwogRVhQRUNURUQgKGN1ZS52YWx1ZS5rZXkgPT0gJyJUQUxCIicpIE9LCiBFWFBF
Q1RFRCAoY3VlLnZhbHVlLmRhdGEgPT0gJyJHcmVhdGVzdCBIaXRzIicpIE9LCiAKLSogNAorKiA2
CiBFWFBFQ1RFRCAodHlwZW9mKGN1ZSkgIT0gJ3VuZGVmaW5lZCcpIE9LCi1FWFBFQ1RFRCAoY3Vl
LnR5cGUgPT0gJ29yZy5pZDMnKSBPSwogRVhQRUNURUQgKGN1ZS5kYXRhID09ICdudWxsJykgT0sK
K0VYUEVDVEVEIChjdWUudHlwZSA9PSAnb3JnLmlkMycpIE9LCiBFWFBFQ1RFRCAoY3VlLnZhbHVl
ICE9ICdudWxsJykgT0sKIEVYUEVDVEVEIChjdWUudmFsdWUua2V5ID09ICciR0VPQiInKSBPSwog
RVhQRUNURUQgKGN1ZS52YWx1ZS5kYXRhID09ICd7fScpIE9LCkBAIC01OCwyNSArNjgsMjUgQEAg
RVhQRUNURUQgKGN1ZS52YWx1ZS50eXBlID09ICciaW1hZ2UvcG5nIicpIE9LCiBFWFBFQ1RFRCAo
Y3VlLnZhbHVlLmluZm8gPT0gJyJPdXIgSGVybyInKSBPSwogRVhQRUNURUQgKGN1ZS52YWx1ZS5u
YW1lID09ICciYWJlLnBuZyInKSBPSwogCi0qIDUKKyogNwogRVhQRUNURUQgKHR5cGVvZihjdWUp
ICE9ICd1bmRlZmluZWQnKSBPSwotRVhQRUNURUQgKGN1ZS50eXBlID09ICdvcmcuaWQzJykgT0sK
IEVYUEVDVEVEIChjdWUuZGF0YSA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAoY3VlLnR5cGUgPT0g
J29yZy5pZDMnKSBPSwogRVhQRUNURUQgKGN1ZS52YWx1ZSAhPSAnbnVsbCcpIE9LCiBFWFBFQ1RF
RCAoY3VlLnZhbHVlLmtleSA9PSAnIkFQSUMiJykgT0sKIEVYUEVDVEVEIChjdWUudmFsdWUuZGF0
YSA9PSAne30nKSBPSwogRVhQRUNURUQgKGN1ZS52YWx1ZS50eXBlID09ICciaW1hZ2UvcG5nIicp
IE9LCiAKLSogNgorKiA4CiBFWFBFQ1RFRCAodHlwZW9mKGN1ZSkgIT0gJ3VuZGVmaW5lZCcpIE9L
Ci1FWFBFQ1RFRCAoY3VlLnR5cGUgPT0gJ29yZy5pZDMnKSBPSwogRVhQRUNURUQgKGN1ZS5kYXRh
ID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChjdWUudHlwZSA9PSAnb3JnLmlkMycpIE9LCiBFWFBF
Q1RFRCAoY3VlLnZhbHVlICE9ICdudWxsJykgT0sKIEVYUEVDVEVEIChjdWUudmFsdWUua2V5ID09
ICciVFhYWCInKSBPSwogRVhQRUNURUQgKGN1ZS52YWx1ZS5kYXRhID09ICciVGV4dCBCbG9iIicp
IE9LCiAKICoqIEV4dHJhY3QgaW1hZ2VzIGZyb20gY3VlIGRhdGEsIHZhbGlkYXRlIGJ5IHNldHRp
bmcgaW1nLnNyYwotUlVOKGN1ZUltYWdlRGF0YSA9IHRyYWNrLmN1ZXNbM10udmFsdWUuZGF0YSkK
K1JVTihjdWVJbWFnZURhdGEgPSB0cmFjay5jdWVzWzVdLnZhbHVlLmRhdGEpCiBFWFBFQ1RFRCAo
Y3VlSW1hZ2VEYXRhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIgPT0gJ3RydWUnKSBPSwogUlVOKGJs
b2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtjdWVJbWFnZURhdGFdLCB7IHR5
cGU6ICdpbWFnZS9wbmcnIH0pKSkKIFJVTihpbWFnZUVsZW1lbnQuc3JjID0gYmxvYlVybCkKQEAg
LTg0LDcgKzk0LDcgQEAgRVZFTlQobG9hZCkKIEVYUEVDVEVEIChpbWFnZUVsZW1lbnQud2lkdGgg
PT0gJzc2JykgT0sKIEVYUEVDVEVEIChpbWFnZUVsZW1lbnQuaGVpZ2h0ID09ICcxMDMnKSBPSwog
Ci1SVU4oY3VlSW1hZ2VEYXRhID0gdHJhY2suY3Vlc1s0XS52YWx1ZS5kYXRhKQorUlVOKGN1ZUlt
YWdlRGF0YSA9IHRyYWNrLmN1ZXNbNl0udmFsdWUuZGF0YSkKIEVYUEVDVEVEIChjdWVJbWFnZURh
dGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciA9PSAndHJ1ZScpIE9LCiBSVU4oYmxvYlVybCA9IFVS
TC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW2N1ZUltYWdlRGF0YV0sIHsgdHlwZTogJ2ltYWdl
L3BuZycgfSkpKQogUlVOKGltYWdlRWxlbWVudC5zcmMgPSBibG9iVXJsKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS90cmFjay1pbi1iYW5kLWhscy1tZXRhZGF0YS5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS90cmFjay1pbi1iYW5kLWhscy1tZXRh
ZGF0YS5odG1sCmluZGV4IDhmOTUzY2U0MDczNjYyN2M4MTdiZTVmN2YyNDZhOGVlYjU4YjlmNzAu
LjNlZGYxNWNlZWJiYzA2OTNmYjQ5YzNiZTc2ZjM5OGNlZTQyN2I4YTggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdHJhY2staW4tYmFuZC1obHMtbWV0YWRhdGEuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3RyYWNrLWluLWJhbmQtaGxzLW1l
dGFkYXRhLmh0bWwKQEAgLTExLDEyICsxMSwxNCBAQAogICAgICAgICAgICAgdmFyIGN1ZWNoYW5n
ZUNvdW50ID0gMDsKICAgICAgICAgICAgIHZhciBsb2FkQ291bnQgPSAwOwogICAgICAgICAgICAg
dmFyIGN1ZURhdGEgPSBbCi0gICAgICAgICAgICAgICAgIHsia2V5IiA6ICJUSVQyIiwgImRhdGEi
IDogIlN0cmVhbSBDb3VudGluZyJ9LAotICAgICAgICAgICAgICAgICB7ImtleSIgOiAiVFBFMSIs
ICJkYXRhIiA6ICJBbmR5In0sCi0gICAgICAgICAgICAgICAgIHsia2V5IiA6ICJUQUxCIiwgImRh
dGEiIDogIkdyZWF0ZXN0IEhpdHMifSwKLSAgICAgICAgICAgICAgICAgeyJrZXkiIDogIkdFT0Ii
LCAiZGF0YSIgOiB7fSwgInR5cGUiIDogImltYWdlL3BuZyIsICJpbmZvIiA6ICJPdXIgSGVybyIs
ICJuYW1lIiA6ICJhYmUucG5nIn0sCi0gICAgICAgICAgICAgICAgIHsia2V5IiA6ICJBUElDIiwg
ImRhdGEiIDoge30sICJ0eXBlIiA6ICJpbWFnZS9wbmcifSwKLSAgICAgICAgICAgICAgICAgeyJr
ZXkiIDogIlRYWFgiLCAiZGF0YSIgOiAiVGV4dCBCbG9iIn0sCisgICAgICAgICAgICAgICAgIHsi
a2V5IiA6ICJYLVNUQVJULU9GRlNFVCIsICJrZXlTcGFjZSIgOiAiY29tLmFwcGxlLnF1aWNrdGlt
ZS5ITFMiLCAiZGF0YSIgOiAiMC4wMDAwMDAifSwKKyAgICAgICAgICAgICAgICAgeyJrZXkiIDog
IlgtRU5ELU9GRlNFVCIsICAgImtleVNwYWNlIiA6ICJjb20uYXBwbGUucXVpY2t0aW1lLkhMUyIs
ICJkYXRhIiA6ICI1LjAwMDAwMCJ9LAorICAgICAgICAgICAgICAgICB7ImtleSIgOiAiVElUMiIs
ICAgICAgICAgICAia2V5U3BhY2UiIDogIm9yZy5pZDMiLCAgICAgICAgICAgICAgICAgImRhdGEi
IDogIlN0cmVhbSBDb3VudGluZyJ9LAorICAgICAgICAgICAgICAgICB7ImtleSIgOiAiVFBFMSIs
ICAgICAgICAgICAia2V5U3BhY2UiIDogIm9yZy5pZDMiLCAgICAgICAgICAgICAgICAgImRhdGEi
IDogIkFuZHkifSwKKyAgICAgICAgICAgICAgICAgeyJrZXkiIDogIlRBTEIiLCAgICAgICAgICAg
ImtleVNwYWNlIiA6ICJvcmcuaWQzIiwgICAgICAgICAgICAgICAgICJkYXRhIiA6ICJHcmVhdGVz
dCBIaXRzIn0sCisgICAgICAgICAgICAgICAgIHsia2V5IiA6ICJHRU9CIiwgICAgICAgICAgICJr
ZXlTcGFjZSIgOiAib3JnLmlkMyIsICAgICAgICAgICAgICAgICAiZGF0YSIgOiB7fSwgInR5cGUi
IDogImltYWdlL3BuZyIsICJpbmZvIiA6ICJPdXIgSGVybyIsICJuYW1lIiA6ICJhYmUucG5nIn0s
CisgICAgICAgICAgICAgICAgIHsia2V5IiA6ICJBUElDIiwgICAgICAgICAgICJrZXlTcGFjZSIg
OiAib3JnLmlkMyIsICAgICAgICAgICAgICAgICAiZGF0YSIgOiB7fSwgInR5cGUiIDogImltYWdl
L3BuZyJ9LAorICAgICAgICAgICAgICAgICB7ImtleSIgOiAiVFhYWCIsICAgICAgICAgICAia2V5
U3BhY2UiIDogIm9yZy5pZDMiLCAgICAgICAgICAgICAgICAgImRhdGEiIDogIlRleHQgQmxvYiJ9
LAogICAgICAgICAgICAgXTsKICAgICAgICAgICAgIHZhciBpbWFnZVNpemVzID0gWyBbNzYsIDEw
M10sIFsxMDAsIDEwMF0gXTsKICAgICAgICAgICAgIHZhciBjdWU7CkBAIC00Myw3ICs0NSw3IEBA
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgICAgICB0ZXN0SW1hZ2UoNCk7CisgICAgICAgICAgICAgICAgdGVzdEltYWdlKDYpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0SW1hZ2UoY3VlSW5kZXgp
CkBAIC02MCw2ICs2Miw5IEBACiAgICAgICAgICAgICAgICAgLy8gTWFrZSBhIG11dGFibGUgY29w
eSBvZiBvYnNlcnZlZCBzbyB3ZSBjYW4gcmVtb3ZlIGF0dHJpYnV0ZXMgYXMgdGhleSBhcmUgcHJv
Y2Vzc2VkLgogICAgICAgICAgICAgICAgIG9ic2VydmVkID0gSlNPTi5wYXJzZShKU09OLnN0cmlu
Z2lmeShvYnNlcnZlZCkpOwogICAgICAgICAgICAgICAgIGZvciAocHJvcGVydHkgaW4gZXhwZWN0
ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5ID09PSAia2V5U3BhY2UiKQor
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgICAgICAgICAgICAg
b2JzZXJ2ZWRWYWx1ZSA9IG9ic2VydmVkW3Byb3BlcnR5XTsKICAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRWYWx1ZSA9IGV4cGVjdGVkW3Byb3BlcnR5XTsKICAgICAgICAgICAgICAgICAgICAg
Y3VlLnZhbHVlW3Byb3BlcnR5XSA9IG9ic2VydmVkVmFsdWU7CkBAIC03OSwyMSArODQsMjAgQEAK
IAogICAgICAgICAgICAgZnVuY3Rpb24gY3VlY2hhbmdlKGV2ZW50KQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoY3VlY2hhbmdlKSIpOwotICAgICAg
ICAgICAgICAgIGlmICgrK2N1ZWNoYW5nZUNvdW50ICE9IDYpCisgICAgICAgICAgICAgICAgaWYg
KCsrY3VlY2hhbmdlQ291bnQgIT0gY3VlRGF0YS5sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPjxlbT4qKiBWYWxp
ZGF0ZSBjdWUgZGF0YTwvZW0+Iik7CiAgICAgICAgICAgICAgICAgdHJhY2sucmVtb3ZlRXZlbnRM
aXN0ZW5lcigiY3VlY2hhbmdlIiwgY3VlY2hhbmdlLCB0cnVlKTsKICAgICAgICAgICAgICAgICB2
aWRlby5wYXVzZSgpOwogCi0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBp
KyspIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGN1ZURhdGEubGVuZ3Ro
OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGA8ZW0+KiAke2kgKyAx
fTwvZW0+YCk7CiAgICAgICAgICAgICAgICAgICAgIGN1ZSA9IHRyYWNrLmN1ZXNbaV07CiAKICAg
ICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0eXBlb2YoY3VlKSIsIHVuZGVmaW5lZCwg
IiE9Iik7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiY3VlLnR5cGUiLCAib3Jn
LmlkMyIpOwogICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImN1ZS5kYXRhIiwgbnVs
bCk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiY3VlLnR5cGUiLCBjdWVEYXRh
W2ldLmtleVNwYWNlKTsKICAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJjdWUudmFs
dWUiLCBudWxsLCAiIT0iKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZihjdWUudmFs
dWUpID09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoYEVy
cm9yOiBjdWUudmFsdWUgaXMgdW5kZWZpbmVkIWApOwpAQCAtMTA3LDcgKzExMSw3IEBACiAgICAg
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8ZW0+KiogRXh0cmFjdCBpbWFnZXMgZnJvbSBjdWUg
ZGF0YSwgdmFsaWRhdGUgYnkgc2V0dGluZyBpbWcuc3JjPC9lbT4iKTsKICAgICAgICAgICAgICAg
ICBpbWFnZUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcGhvdG8iKTsKICAgICAg
ICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWQnLCBpbWFnZUxvYWQsIGZhbHNlLCBmYWxzZSwg
aW1hZ2VFbGVtZW50KQotICAgICAgICAgICAgICAgIHRlc3RJbWFnZSgzKTsKKyAgICAgICAgICAg
ICAgICB0ZXN0SW1hZ2UoNSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9u
IGNhbnBsYXl0aHJvdWdoKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>