<?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>185575</bug_id>
          
          <creation_ts>2018-05-11 19:35:37 -0700</creation_ts>
          <short_desc>Overly aggressive timer throttling in service workers</short_desc>
          <delta_ts>2018-05-15 08:45:30 -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>Service Workers</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>macOS 10.13</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>185626</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zach Bjornson">zbbjornson</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1423331</commentid>
    <comment_count>0</comment_count>
    <who name="Zach Bjornson">zbbjornson</who>
    <bug_when>2018-05-11 19:35:37 -0700</bug_when>
    <thetext>Safari seems to throttle timers extremely aggressively in service workers. If I run this code:

    let previous = Date.now();
    const interval = 1000;
    setInterval(() =&gt; {
        const now = Date.now();
        const separation = now - previous;
        previous = now;
        console.log(&quot;tick&quot;, separation);
    }, interval);

most ticks run after [interval + 10,000 ms] -- e.g. 1000 ms runs at 11,000 ms and 100 ms runs at 10,100 ms. Sometimes they run closer to the actual [interval], when the main page is doing work. Disabling &quot;DOM Timer Throttling&quot; and &quot;Hidden Page Timer Throttling&quot; has no effect.

The same code in the main browser thread runs when expected (just after [interval]). Edge, Firefox and Chrome run the timers when expected in service workers.

This is a problem for our application because we use timers to batch multiple HTTP requests into fewer HTTP requests. Consequently, our batched HTTP requests are delayed up to 10 seconds.

(Safari v 11.1 / 13605.1.33.1.4)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423633</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-14 09:05:26 -0700</bug_when>
    <thetext>Probably our timer throttling code that kicks in because the service worker does not have any visible page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423634</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-14 09:05:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/40219038&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423635</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-14 09:05:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/40219039&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423729</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-14 12:41:12 -0700</bug_when>
    <thetext>Do you have a test page? I have trouble reproducing. I see there interval very very close to 1000:
CONSOLE MESSAGE: line 14: 1004
CONSOLE MESSAGE: line 14: 1000
CONSOLE MESSAGE: line 14: 1002
CONSOLE MESSAGE: line 14: 1003
CONSOLE MESSAGE: line 14: 1000
CONSOLE MESSAGE: line 14: 1006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423732</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-14 12:45:33 -0700</bug_when>
    <thetext>I suspect this could be throttling outside WebKit known as AppNap. If I look at Activity Monitor, I see that the service worker process gets App Napped after ~30 seconds, I believe this impacts our timers as well. I&apos;ll look into preventing App Nap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423737</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-14 12:53:52 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; I suspect this could be throttling outside WebKit known as AppNap. If I look
&gt; at Activity Monitor, I see that the service worker process gets App Napped
&gt; after ~30 seconds, I believe this impacts our timers as well. I&apos;ll look into
&gt; preventing App Nap.

To confirm that this is the issue you are experiencing, you can disable App Nap via:
defaults write NSGlobalDomain NSAppSleepDisabled -bool YES</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423763</commentid>
    <comment_count>7</comment_count>
      <attachid>340355</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-14 14:09:16 -0700</bug_when>
    <thetext>Created attachment 340355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423769</commentid>
    <comment_count>8</comment_count>
      <attachid>340355</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-05-14 14:19:07 -0700</bug_when>
    <thetext>Comment on attachment 340355
Patch

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

&gt; Source/WebKit/UIProcess/ServiceWorkerProcessProxy.cpp:113
&gt; +    // Prevent App Nap for Service Worker processes.
&gt; +    setProcessSuppressionEnabled(false);

I think we want a FIXME with a link to a bugzilla bug that says Service Workers should nap if all their clients are napping. It&apos;s not a high priority bug, but it&apos;s good to clarify that&apos;s the design that we think would be best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423780</commentid>
    <comment_count>9</comment_count>
      <attachid>340359</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-14 14:27:42 -0700</bug_when>
    <thetext>Created attachment 340359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423817</commentid>
    <comment_count>10</comment_count>
      <attachid>340359</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-14 15:31:47 -0700</bug_when>
    <thetext>Comment on attachment 340359
Patch

Clearing flags on attachment: 340359

Committed r231771: &lt;https://trac.webkit.org/changeset/231771&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423818</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-14 15:31:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423925</commentid>
    <comment_count>12</comment_count>
    <who name="Zach Bjornson">zbbjornson</who>
    <bug_when>2018-05-14 20:18:40 -0700</bug_when>
    <thetext>Thanks for the fast fix! `NSGlobalDomain NSAppSleepDisabled -bool YES` fixes the issue, so I assume the patch works as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424019</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-15 08:45:30 -0700</bug_when>
    <thetext>(In reply to Zach Bjornson from comment #12)
&gt; Thanks for the fast fix! `NSGlobalDomain NSAppSleepDisabled -bool YES` fixes
&gt; the issue, so I assume the patch works as well.

If you&apos;d like, you can verify my fix by resetting this defaults and try this build:
https://s3-us-west-2.amazonaws.com/minified-archives.webkit.org/mac-highsierra-x86_64-release/231772.zip which contains my fix.

It&apos;d be useful to make sure everything behaves as expected now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340355</attachid>
            <date>2018-05-14 14:09:16 -0700</date>
            <delta_ts>2018-05-14 14:27:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185575-20180514140915.patch</filename>
            <type>text/plain</type>
            <size>20814</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxNzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZjZDJhM2U5YjBkY2EwZGQx
NjQwZGNkYTcxYWJmNTU1YWFjYjE2ZDYuLmI4NDNiNWE3YjQwZjNmZjNkNTI5N2FkYmY0ZjY5ZTFl
YmEyMDdlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTgtMDUtMTQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBPdmVybHkgYWdncmVzc2l2ZSB0aW1l
ciB0aHJvdHRsaW5nIGluIHNlcnZpY2Ugd29ya2VycworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1NTc1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80
MDIxOTAzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZnRlciB+MzAgc2Vjb25kcywgdGhlIHN5c3RlbSB3b3VsZCBwdXQgdGhlIHNlcnZpY2Ugd29y
a2VyIHByb2Nlc3MgaW4gIkFwcCBOYXAiLAorICAgICAgICBjYXVzaW5nIGl0cyB0aW1lcnMgdG8g
Z2V0IGFnZ3Jlc3NpdmVseSB0aHJvdHRsZWQuIFRoaXMgaGFwcGVucyBiZWNhdXNlIHRoZQorICAg
ICAgICBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzZXMgYXJlIFdlYlByb2Nlc3NlcyB0aGF0IGhhdmUg
bm8gdmlzaWJsZSBXZWJQYWdlcy4KKworICAgICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgd2Ug
bm93IGRpc2FibGUgcHJvY2VzcyBzdXBwcmVzc2lvbiBmb3IgYWxsIHNlcnZpY2Ugd29ya2VyCisg
ICAgICAgIHByb2Nlc3Nlcy4gVGhpcyBjYXVzZXMgdGhvc2UgcHJvY2Vzc2VzIHRvIGNvbnN0cnVj
dCBhIFVzZXJBY3Rpdml0eSB3aGljaCBwcmV2ZW50cworICAgICAgICBBcHAgTmFwLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWxzbyByZWZhY3RvcnMgdGhlIGNvZGUgYSBiaXQgdG8gYXZvaWQgZHVw
bGljYXRpb24uIFRoZSBQcm9jZXNzU3VwcHJlc3Npb24KKyAgICAgICAgc3VwcHJlc3Npb24gbG9n
aWMgaW4gbm93IGFsbCBvbiBDaGlsZFByb2Nlc3NQcm94eSAvIENoaWxkUHJvY2Vzcy4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBT
aGFyZWQvQ2hpbGRQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9DaGls
ZFByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5Ojpz
ZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ2hpbGRQ
cm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvbWFjL05ldHdvcmtQcm9jZXNz
UHJveHlNYWMubW06IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblBy
b2Nlc3NQcm94eU1hYy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6
OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE4LTA1LTE0ICBNaWNoYWVsIENh
dGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICAtV21lbXNldC1lbHQt
c2l6ZSB3YXJuaW5nIGluIExpYldlYlJUQ1NvY2tldCBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
aW5kZXggMWFkMWJiNDMyYjk0YmU5NWRiOTgwZWVmZThjNmFmZjE5MGY0NTYzNS4uNTYzYTU2NWYz
ZTJiZjBlZjExMWFmZGE0YzIwOWE1MTIwY2ZhOWI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC01Miw3
ICs1Miw2IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBDb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCiAgICAgQ29udGludWVEZWNpZGVQZW5k
aW5nRG93bmxvYWREZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgU3Ry
aW5nIGRlc3RpbmF0aW9uLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQogCi0gICAgU2V0UHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZChib29sIGZsYWcpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2V0
UU9TKGludCBsYXRlbmN5UU9TLCBpbnQgdGhyb3VnaHB1dFFPUykKICAgICBTZXRDb29raWVTdG9y
YWdlUGFydGl0aW9uaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDE3OTJm
OTI1MDBjN2ZiMDBmZmFmN2U2YTk5MTA1ZDJmYjUxMjQ2ZjYuLmYzNDZmN2ViMTBmODZhMjY3Yzg0
ZjFmZTczNDcwYjU0MGI1NjBjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Qcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zOCw3ICszOCw2IEBAIG1lc3Nh
Z2VzIC0+IFBsdWdpblByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIERlbGV0ZVdlYnNpdGVE
YXRhKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgRGVs
ZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXMoVmVjdG9yPFN0cmluZz4gaG9zdE5hbWVzLCB1aW50
NjRfdCBjYWxsYmFja0lEKQogCi0gICAgU2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29s
IGZsYWcpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2V0UU9TKGludCBsYXRlbmN5UU9TLCBp
bnQgdGhyb3VnaHB1dFFPUykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ2hpbGRQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ2hpbGRQ
cm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDA2MjY5MWZkMjcxZmFhNjdlZjFjNGFlM2NmMzkwMDQ4
Nzc4MzZlOTcuLjFkZDFiMWEzMjcyNmE1ODM1MjE3ZGRhMDY5MGExNmVmMmZiMzUzZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DaGlsZFByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIzLDQg
KzIzLDUgQEAKIG1lc3NhZ2VzIC0+IENoaWxkUHJvY2VzcyB7CiAgICAgU2h1dERvd24oKQogICAg
IFJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUoU3RyaW5nIHNjaGVtZSkK
KyAgICBTZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wgZmxhZykKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA5NjUxMWZkYzA0
YTAxNWU5Yzk0ZjAxYjgyNjRlZmYwODIzZjRlM2U5Li5iZGZmNTgzZDNiMWI5MjI0MGYyNzI3NzVl
MTRiMDNlY2MwMTdlNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9DaGls
ZFByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ2hpbGRQcm9j
ZXNzUHJveHkuY3BwCkBAIC0yMTMsNiArMjEzLDE4IEBAIHZvaWQgQ2hpbGRQcm9jZXNzUHJveHk6
OnNodXREb3duUHJvY2VzcygpCiAgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAordm9p
ZCBDaGlsZFByb2Nlc3NQcm94eTo6c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sIHBy
b2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYg
KHN0YXRlKCkgIT0gU3RhdGU6OlJ1bm5pbmcpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q2hpbGRQcm9jZXNzOjpTZXRQcm9jZXNzU3VwcHJlc3Np
b25FbmFibGVkKHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpLCAwKTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpOworI2VuZGlmCit9CisKIHZvaWQg
Q2hpbGRQcm9jZXNzUHJveHk6OmNvbm5lY3Rpb25XaWxsT3BlbihJUEM6OkNvbm5lY3Rpb24mKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmgKaW5kZXgg
NmQ0ODAyZjYwYWNmMDcxZDEzZGMwNjVmY2I3YmNhNTAyYTAyZTM1Ni4uMmQ1ZjE1YzZmNDgzOThl
MWQ3MGFhYTQzY2ZlMjdiNjM2NzBjOGVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
aGlsZFByb2Nlc3NQcm94eS5oCkBAIC04Myw2ICs4Myw4IEBAIHB1YmxpYzoKIAogICAgIFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIGNvcmVQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvY2Vzc0lkZW50aWZpZXI7IH0KIAorICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZChib29sKTsKKwogcHJvdGVjdGVkOgogICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6
Q2xpZW50CiAgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNmM2OTBm
M2VkOGE4Mjc3NDNlY2ZmMWZhMmVhZTQ3ZTJlNDExMjE2YS4uOGZjOTRkYjFkYTA1OTU4Mzg1ZWE5
OTQ2MDc1Y2E2NjZiYmIxYzkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTc2LDEwICs3Niw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFG
b3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9p
ZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wpOwotI2VuZGlmCi0KICNpZiBIQVZF
KENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nl
c3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwg
Y29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spOwogICAg
IHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL21hYy9OZXR3b3JrUHJvY2Vzc1Byb3h5
TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nl
c3NQcm94eU1hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg2MDFlODM5MWE5
NzM4YWI5OTQwNzQ0M2RkNWZiZjNkODA5NWVlMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL21hYy9O
ZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQ
cm94eS5oIgotCi0jaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCi0KLXVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wgcHJvY2Vzc1N1cHBy
ZXNzaW9uRW5hYmxlZCkKLXsKLSAgICBpZiAoc3RhdGUoKSAhPSBTdGF0ZTo6UnVubmluZykKLSAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQocHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZCksIDApOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCmluZGV4
IDI1MzBmZmUzNGI0ZWQ0MDNjNmM4YzhkNDIwZGIxNTc0Y2JiNGFmM2IuLjZjMzA5NzA4NzM1YzBh
MGZhN2ZiYjgyZTA1ZGRjMTA4YjVhMjlhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaApAQCAtODQsMTEgKzg0LDYgQEAg
cHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9u
OyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lv
bkVuYWJsZWQoYm9vbCk7Ci0KLSNlbmRpZgotCiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShVTklY
KQogICAgIHN0YXRpYyBib29sIHNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBS
YXdQbHVnaW5NZXRhRGF0YSYgcmVzdWx0KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1t
CmluZGV4IGI3ZjdmMWNkOGM2ZTEzZGFjN2Q0MmRlZmJiNzNjZWY1MDM0ZTQyYjUuLjczYTEzMmU5
NzYxYzU0MDZhMmY3ODY3YzA2YTZjMmJkODNlODhmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMu
bW0KQEAgLTIzMCwxNCArMjMwLDYgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlKCkKICAgICBtYWtlUGx1Z2luUHJvY2Vzc1RoZUZyb250UHJvY2Vz
cygpOwogfQogCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6c2V0UHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZChib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpCi17Ci0gICAgaWYgKCFpc1Zh
bGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6UGx1Z2luUHJvY2Vzczo6U2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChwcm9jZXNzU3Vw
cHJlc3Npb25FbmFibGVkKSwgMCk7Ci19Ci0KIHN0YXRpYyBib29sIGlzRmxhc2hVcGRhdGVyKGNv
bnN0IFN0cmluZyYgbGF1bmNoUGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cykK
IHsKICAgICBpZiAobGF1bmNoUGF0aCAhPSAiL0FwcGxpY2F0aW9ucy9VdGlsaXRpZXMvQWRvYmUg
Rmxhc2ggUGxheWVyIEluc3RhbGwgTWFuYWdlci5hcHAvQ29udGVudHMvTWFjT1MvQWRvYmUgRmxh
c2ggUGxheWVyIEluc3RhbGwgTWFuYWdlciIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGI3MGI2NzM0ZTFjOTM0
NDQzNmY3NDFiYzZiZTAwMjJkMjI3Mzg1NzAuLmU5OTU2ZTQxN2RhZWY0Y2FiMjJlNGFmOGMwZTg3
Nzg2ZmEzMWVmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCkBAIC0xMDUsNiArMTA1LDE0IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVp
bnQ2NF90IHBhZ2VJCiAgICAgY2hhbGxlbmdlLT5wZXJmb3JtRGVmYXVsdEhhbmRsaW5nKCk7CiB9
CiAKK3ZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFBy
b2Nlc3NMYXVuY2hlciogbGF1bmNoZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25u
ZWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5j
aGluZyhsYXVuY2hlciwgY29ubmVjdGlvbklkZW50aWZpZXIpOworCisgICAgLy8gUHJldmVudCBB
cHAgTmFwIGZvciBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzZXMuCisgICAgc2V0UHJvY2Vzc1N1cHBy
ZXNzaW9uRW5hYmxlZChmYWxzZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCmluZGV4IDMzNTFiNzQwOTRiZTQ3ZTgz
MGUzOTdjNDA2ODFiYWEwODI5OGI1YTMuLmNiZGVmZGMzODA1NmIxMmRmYzZiNWYxYzBkZGQ4NDBj
MWVhNmZlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTU0LDYgKzU0LDkgQEAgcHJpdmF0ZToKICAgICAvLyBDaGls
ZFByb2Nlc3NQcm94eQogICAgIHZvaWQgZ2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6
OkxhdW5jaE9wdGlvbnMmKSBmaW5hbDsKIAorICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50
CisgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyKSBmaW5hbDsKKwogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJv
Y2VzcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmLCBXZWJzaXRlRGF0YVN0b3JlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCmluZGV4IDZmNWM4YWU5NGZkNjEyMmM4MjJlM2U5ZDQ0YWMzZTY1NzhjYzYz
YzUuLjk2NDIwNGE1OWUyMmM5MjgxNGJlZjI4NWFmZmM0ZDAyZjc4MDViNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0yMzAsNiArMjMwLDkgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgY29ubmVjdGlvbldpbGxPcGVuKElQQzo6Q29ubmVjdGlvbiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgcHJvY2Vzc1dpbGxTaHV0RG93bihJUEM6OkNvbm5lY3Rpb24mKSBv
dmVycmlkZTsKIAorICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50CisgICAgdm9pZCBkaWRG
aW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAgICAvLyBDYWxsZWQgd2hlbiB0aGUgd2ViIHBy
b2Nlc3MgaGFzIGNyYXNoZWQgb3Igd2Uga25vdyB0aGF0IGl0IHdpbGwgdGVybWluYXRlIHNvb24u
CiAgICAgLy8gV2lsbCBwb3RlbnRpYWxseSBjYXVzZSB0aGUgV2ViUHJvY2Vzc1Byb3h5IG9iamVj
dCB0byBiZSBmcmVlZC4KQEAgLTI5Myw5ICsyOTYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2Vu
ZFByb2Nlc3NEaWRSZXN1bWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFNldEFzc2VydGlvblN0
YXRlKEFzc2VydGlvblN0YXRlKSBvdmVycmlkZTsKIAotICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6
Q2xpZW50Ci0gICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKLQogICAgIC8vIEltcGxlbWVudGVk
IGluIGdlbmVyYXRlZCBXZWJQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9p
ZCBkaWRSZWNlaXZlV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jV2ViUHJvY2Vzc1Byb3h5TWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggOWZkMjIyN2Y0MTcxNDNhNjYzY2IxOTRlMWEyMzVhN2EzM2Q3ZWY5My4uMzc1
NTBiZTBlMGMxZDdkZGJkMDU5MmE5ZGI4MGNkNGVkMDM3OWFjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDc0LDcgKzEwNzQsNiBA
QAogCQk1MTVFNzcyNzE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUU3NzI1MTgzREQ2RjYw
MDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuY3BwICovOyB9OwogCQk1MTVFNzcyODE4M0RENkY2MDAw
NzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTVFNzcyNjE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0Lmgg
Ki87IH07CiAJCTUxNjBCRkUxMTMzODFERjkwMDkxODk5OSAvKiBMb2dnaW5nRm91bmRhdGlvbi5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjBCRkUw
MTMzODFERjkwMDkxODk5OSAvKiBMb2dnaW5nRm91bmRhdGlvbi5tbSAqLzsgfTsKLQkJNTE2MzE5
OTIxNjI4OTgwQTAwRTIyRjAwIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYzMTk5MTE2Mjg5ODBBMDBF
MjJGMDAgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbSAqLzsgfTsKIAkJNTE2MzE5OTQxNjI4
OUE2MDAwRTIyRjAwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUNDOTM0MTYyODA2NDgw
MDM0MjU1MCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUx
NjMxOTk1MTYyODlBNjMwMEUyMkYwMCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQzkzNTE2MjgwNjQ4
MDAzNDI1NTAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oICovOyB9OwogCQk1MTZBNEE1RDEy
MEEyQ0NEMDBDMDVCN0YgLyogQVBJRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkE0QTVCMTIwQTJDQ0QwMEMwNUI3RiAvKiBBUElFcnJvci5o
ICovOyB9OwpAQCAtMjA3Miw3ICsyMDcxLDYgQEAKIAkJQ0RBMjlBMkIxQ0JFQjY3QTAwOTAxQ0NG
IC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEyOUEyNzFDQkVCNjdBMDA5MDFDQ0Yg
LyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJQ0RDMjgz
MUQyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDMjgzMUIyMDFCRDc5RDAwRTZF
NzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5oICovOyB9OwogCQlDREMyODMxRTIwMUJENzlE
MDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDMjgzMUMyMDFCRDc5RDAwRTZFNzQ1IC8qIFdL
RnVsbHNjcmVlblN0YWNrVmlldy5tbSAqLzsgfTsKLQkJQ0RDMzgyRkUxNzIxMTc5OTAwOEEyRkMz
IC8qIFNlY0l0ZW1TaGltTGlicmFyeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMUY4QTc4MTM4QjQ2MDkwMEE5NUY0NCAvKiBTZWNJdGVtU2hpbUxp
YnJhcnkubW0gKi87IH07CiAJCUNEQ0E4NUM4MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RDQTg1QzYxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIubW0gKi87IH07CiAJCUNEQ0E4NUM5MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRENBODVDNzEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlci5oICovOyB9OwogCQlDRTExQUQ1MDFDQkM0N0Y4MDA2ODFFRTUgLyog
Q29kZVNpZ25pbmcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcubW0gKi87IH07CkBA
IC0zNDg5LDcgKzM0ODcsNiBAQAogCQk1MTVFNzcyNTE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNS
ZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5jUmVx
dWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUU3NzI2MTgzREQ2RjYw
MDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXN5bmNSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjBCRkUw
MTMzODFERjkwMDkxODk5OSAvKiBMb2dnaW5nRm91bmRhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvZ2dpbmdGb3VuZGF0aW9uLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1MTYzMTk5MTE2Mjg5ODBBMDBFMjJGMDAgLyogTmV0d29ya1By
b2Nlc3NQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IE5ldHdvcmtQcm9jZXNzUHJveHlNYWMubW07IHBhdGggPSBtYWMvTmV0d29ya1Byb2Nlc3NQcm94
eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2NEMwOTQxQjA1Qjc1NzAw
NEYxMDJBIC8qIENoaWxkUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBDaGlsZFByb2Nlc3MubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxNkE0QTVCMTIwQTJDQ0QwMEMwNUI3RiAvKiBBUElFcnJvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBUElFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTdBMzNCMzEzMEIzMDhDMDBGODBDQjUgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0FwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2MDUsNyArNDYw
Miw2IEBACiAJCUNEQzI4MzFCMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1Zp
ZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lmg7IHBhdGggPSBpb3Mv
ZnVsbHNjcmVlbi9XS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RDMjgzMUMyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmll
dy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLRnVsbHNjcmVlblN0YWNrVmlldy5tbTsgcGF0
aCA9IGlvcy9mdWxsc2NyZWVuL1dLRnVsbHNjcmVlblN0YWNrVmlldy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDMzgyRjcxNzIxMTUwNjAwOEEyRkMzIC8qIENGTmV0d29yay5m
cmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENGTmV0d29yay5mcmFtZXdvcms7IHBhdGggPSAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrOyBzb3VyY2VUcmVl
ID0gIjxhYnNvbHV0ZT4iOyB9OwotCQlDREMzODMwNjE3MjExNzk5MDA4QTJGQzMgLyogV2ViUHJv
Y2Vzc1NoaW0uZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSBXZWJQcm9jZXNzU2hpbS5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJQ0RDOEY0ODgxNzI1RTY3ODAwMTY2RjZFIC8qIENvcmVGb3VuZGF0aW9uLmZyYW1ld29y
ayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBw
ZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrOyBzb3VyY2VU
cmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQlDRENBODVDNjEzMkFCQTRFMDBFOTYxREYgLyogV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQ0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTY1ODksNyArNjU4NSw2IEBACiAJCTUxNjMxOTkzMTYyODk4MEUwMEUyMkYwMCAvKiBtYWMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTUxNjMxOTkx
MTYyODk4MEEwMEUyMkYwMCAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tICovLAogCQkJKTsK
IAkJCW5hbWUgPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTA3MDQsNyAr
MTA2OTksNiBAQAogCQkJCTUxNjMxOTk0MTYyODlBNjAwMEUyMkYwMCAvKiBOZXR3b3JrUHJvY2Vz
c01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTRBOTU0OTE2RTAxNkE0
MDA2OERFODIgLyogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE3OTU1NkQxNjI4NzdCMTAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE2MzE5OTIxNjI4OTgwQTAwRTIyRjAwIC8qIE5l
dHdvcmtQcm9jZXNzUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTNBMTYzQzE2MzA4
OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MUZEMThCNTE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTI1NTFBMTcwMTE4MTkwMDNEN0FE
QiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0xMTQ1MCwxNCArMTE0NDQsNiBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwotCQlDREMzODJGRDE3MjExNzk5MDA4QTJGQzMg
LyogU291cmNlcyAqLyA9IHsKLQkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCUNEQzM4MkZFMTcy
MTE3OTkwMDhBMkZDMyAvKiBTZWNJdGVtU2hpbUxpYnJhcnkubW0gaW4gU291cmNlcyAqLywKLQkJ
CSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKIC8q
IEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdl
dERlcGVuZGVuY3kgc2VjdGlvbiAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlZmIwN2UzZmEzYjUwM2M3OTQzODVmZWMzYWRlN2Uz
NmEyYmRlZGM2Li5mYTRjMDY2MjIzOGFhODJmY2JiNWI4NGIwZmJmM2FmYzA4MjM4YTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
ODQsNyArODQsNiBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3Rv
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMpIC0+ICgpCiAKICAgICBTZXRI
aWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nSW5jcmVhc2VMaW1pdChpbnQgbWlsbGlzZWNvbmRz
KQotICAgIFNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCBmbGFnKQogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFNldFFPUyhpbnQgbGF0ZW5jeVFPUywgaW50IHRocm91Z2hwdXRRT1Mp
CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340359</attachid>
            <date>2018-05-14 14:27:42 -0700</date>
            <delta_ts>2018-05-14 15:31:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185575-20180514142741.patch</filename>
            <type>text/plain</type>
            <size>20935</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxNzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZjZDJhM2U5YjBkY2EwZGQx
NjQwZGNkYTcxYWJmNTU1YWFjYjE2ZDYuLjIyMDQyOTRiNGVmMTIzZDZkZGFiOWY3YzQyNDE4YTU5
YTg0NDE5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTgtMDUtMTQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBPdmVybHkgYWdncmVzc2l2ZSB0aW1l
ciB0aHJvdHRsaW5nIGluIHNlcnZpY2Ugd29ya2VycworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1NTc1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80
MDIxOTAzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBB
ZnRlciB+MzAgc2Vjb25kcywgdGhlIHN5c3RlbSB3b3VsZCBwdXQgdGhlIHNlcnZpY2Ugd29ya2Vy
IHByb2Nlc3MgaW4gIkFwcCBOYXAiLAorICAgICAgICBjYXVzaW5nIGl0cyB0aW1lcnMgdG8gZ2V0
IGFnZ3Jlc3NpdmVseSB0aHJvdHRsZWQuIFRoaXMgaGFwcGVucyBiZWNhdXNlIHRoZQorICAgICAg
ICBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzZXMgYXJlIFdlYlByb2Nlc3NlcyB0aGF0IGhhdmUgbm8g
dmlzaWJsZSBXZWJQYWdlcy4KKworICAgICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgd2Ugbm93
IGRpc2FibGUgcHJvY2VzcyBzdXBwcmVzc2lvbiBmb3IgYWxsIHNlcnZpY2Ugd29ya2VyCisgICAg
ICAgIHByb2Nlc3Nlcy4gVGhpcyBjYXVzZXMgdGhvc2UgcHJvY2Vzc2VzIHRvIGNvbnN0cnVjdCBh
IFVzZXJBY3Rpdml0eSB3aGljaCBwcmV2ZW50cworICAgICAgICBBcHAgTmFwLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWxzbyByZWZhY3RvcnMgdGhlIGNvZGUgYSBiaXQgdG8gYXZvaWQgZHVwbGlj
YXRpb24uIFRoZSBQcm9jZXNzU3VwcHJlc3Npb24KKyAgICAgICAgc3VwcHJlc3Npb24gbG9naWMg
aW4gbm93IGFsbCBvbiBDaGlsZFByb2Nlc3NQcm94eSAvIENoaWxkUHJvY2Vzcy4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFy
ZWQvQ2hpbGRQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9DaGlsZFBy
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5OjpzZXRQ
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ2hpbGRQcm9j
ZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvbWFjL05ldHdvcmtQcm9jZXNzUHJv
eHlNYWMubW06IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nl
c3NQcm94eU1hYy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmRp
ZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE4LTA1LTE0ICBNaWNoYWVsIENhdGFu
emFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICAtV21lbXNldC1lbHQtc2l6
ZSB3YXJuaW5nIGluIExpYldlYlJUQ1NvY2tldCBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggMWFkMWJiNDMyYjk0YmU5NWRiOTgwZWVmZThjNmFmZjE5MGY0NTYzNS4uNTYzYTU2NWYzZTJi
ZjBlZjExMWFmZGE0YzIwOWE1MTIwY2ZhOWI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC01Miw3ICs1
Miw2IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBD
b250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCiAgICAgQ29udGludWVEZWNpZGVQZW5kaW5n
RG93bmxvYWREZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5n
IGRlc3RpbmF0aW9uLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQogCi0gICAgU2V0UHJvY2Vzc1N1cHBy
ZXNzaW9uRW5hYmxlZChib29sIGZsYWcpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2V0UU9T
KGludCBsYXRlbmN5UU9TLCBpbnQgdGhyb3VnaHB1dFFPUykKICAgICBTZXRDb29raWVTdG9yYWdl
UGFydGl0aW9uaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDE3OTJmOTI1
MDBjN2ZiMDBmZmFmN2U2YTk5MTA1ZDJmYjUxMjQ2ZjYuLmYzNDZmN2ViMTBmODZhMjY3Yzg0ZjFm
ZTczNDcwYjU0MGI1NjBjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Qcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Qcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zOCw3ICszOCw2IEBAIG1lc3NhZ2Vz
IC0+IFBsdWdpblByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIERlbGV0ZVdlYnNpdGVEYXRh
KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgRGVsZXRl
V2Vic2l0ZURhdGFGb3JIb3N0TmFtZXMoVmVjdG9yPFN0cmluZz4gaG9zdE5hbWVzLCB1aW50NjRf
dCBjYWxsYmFja0lEKQogCi0gICAgU2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sIGZs
YWcpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2V0UU9TKGludCBsYXRlbmN5UU9TLCBpbnQg
dGhyb3VnaHB1dFFPUykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q2hpbGRQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ2hpbGRQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IDA2MjY5MWZkMjcxZmFhNjdlZjFjNGFlM2NmMzkwMDQ4Nzc4
MzZlOTcuLjFkZDFiMWEzMjcyNmE1ODM1MjE3ZGRhMDY5MGExNmVmMmZiMzUzZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NoaWxkUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9DaGlsZFByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIzLDQgKzIz
LDUgQEAKIG1lc3NhZ2VzIC0+IENoaWxkUHJvY2VzcyB7CiAgICAgU2h1dERvd24oKQogICAgIFJl
Z2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUoU3RyaW5nIHNjaGVtZSkKKyAg
ICBTZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wgZmxhZykKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA5NjUxMWZkYzA0YTAx
NWU5Yzk0ZjAxYjgyNjRlZmYwODIzZjRlM2U5Li5iZGZmNTgzZDNiMWI5MjI0MGYyNzI3NzVlMTRi
MDNlY2MwMTdlNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9DaGlsZFBy
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ2hpbGRQcm9jZXNz
UHJveHkuY3BwCkBAIC0yMTMsNiArMjEzLDE4IEBAIHZvaWQgQ2hpbGRQcm9jZXNzUHJveHk6OnNo
dXREb3duUHJvY2VzcygpCiAgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAordm9pZCBD
aGlsZFByb2Nlc3NQcm94eTo6c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sIHByb2Nl
c3NTdXBwcmVzc2lvbkVuYWJsZWQpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKHN0
YXRlKCkgIT0gU3RhdGU6OlJ1bm5pbmcpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6Q2hpbGRQcm9jZXNzOjpTZXRQcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkKHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpLCAwKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpOworI2VuZGlmCit9CisKIHZvaWQgQ2hp
bGRQcm9jZXNzUHJveHk6OmNvbm5lY3Rpb25XaWxsT3BlbihJUEM6OkNvbm5lY3Rpb24mKQogewog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmgKaW5kZXggNmQ0
ODAyZjYwYWNmMDcxZDEzZGMwNjVmY2I3YmNhNTAyYTAyZTM1Ni4uMmQ1ZjE1YzZmNDgzOThlMWQ3
MGFhYTQzY2ZlMjdiNjM2NzBjOGVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ2hpbGRQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9DaGls
ZFByb2Nlc3NQcm94eS5oCkBAIC04Myw2ICs4Myw4IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIGNvcmVQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvY2Vzc0lkZW50aWZpZXI7IH0KIAorICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZChib29sKTsKKwogcHJvdGVjdGVkOgogICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xp
ZW50CiAgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNmM2OTBmM2Vk
OGE4Mjc3NDNlY2ZmMWZhMmVhZTQ3ZTJlNDExMjE2YS4uOGZjOTRkYjFkYTA1OTU4Mzg1ZWE5OTQ2
MDc1Y2E2NjZiYmIxYzkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTc2LDEwICs3Niw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JP
cmlnaW5zKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBz
ZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wpOwotI2VuZGlmCi0KICNpZiBIQVZFKENG
TkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NG
b3JGcmFtZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29u
c3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spOwogICAgIHZv
aWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL21hYy9OZXR3b3JrUHJvY2Vzc1Byb3h5TWFj
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9tYWMvTmV0d29ya1Byb2Nlc3NQ
cm94eU1hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg2MDFlODM5MWE5NzM4
YWI5OTQwNzQ0M2RkNWZiZjNkODA5NWVlMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL21hYy9OZXR3
b3JrUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94
eS5oIgotCi0jaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCi0KLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wgcHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZCkKLXsKLSAgICBpZiAoc3RhdGUoKSAhPSBTdGF0ZTo6UnVubmluZykKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQocHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZCksIDApOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCmluZGV4IDI1
MzBmZmUzNGI0ZWQ0MDNjNmM4YzhkNDIwZGIxNTc0Y2JiNGFmM2IuLjZjMzA5NzA4NzM1YzBhMGZh
N2ZiYjgyZTA1ZGRjMTA4YjVhMjlhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaApAQCAtODQsMTEgKzg0LDYgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9
CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVu
YWJsZWQoYm9vbCk7Ci0KLSNlbmRpZgotCiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShVTklYKQog
ICAgIHN0YXRpYyBib29sIHNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBSYXdQ
bHVnaW5NZXRhRGF0YSYgcmVzdWx0KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCmlu
ZGV4IGI3ZjdmMWNkOGM2ZTEzZGFjN2Q0MmRlZmJiNzNjZWY1MDM0ZTQyYjUuLjczYTEzMmU5NzYx
YzU0MDZhMmY3ODY3YzA2YTZjMmJkODNlODhmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0K
QEAgLTIzMCwxNCArMjMwLDYgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKCkKICAgICBtYWtlUGx1Z2luUHJvY2Vzc1RoZUZyb250UHJvY2Vzcygp
OwogfQogCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5h
YmxlZChib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpCi17Ci0gICAgaWYgKCFpc1ZhbGlk
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
UGx1Z2luUHJvY2Vzczo6U2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChwcm9jZXNzU3VwcHJl
c3Npb25FbmFibGVkKSwgMCk7Ci19Ci0KIHN0YXRpYyBib29sIGlzRmxhc2hVcGRhdGVyKGNvbnN0
IFN0cmluZyYgbGF1bmNoUGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cykKIHsK
ICAgICBpZiAobGF1bmNoUGF0aCAhPSAiL0FwcGxpY2F0aW9ucy9VdGlsaXRpZXMvQWRvYmUgRmxh
c2ggUGxheWVyIEluc3RhbGwgTWFuYWdlci5hcHAvQ29udGVudHMvTWFjT1MvQWRvYmUgRmxhc2gg
UGxheWVyIEluc3RhbGwgTWFuYWdlciIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGI3MGI2NzM0ZTFjOTM0NDQz
NmY3NDFiYzZiZTAwMjJkMjI3Mzg1NzAuLmMzN2I5NTA5ZWJhM2I2YTJiZDkxYWM3MmFkZjFiMzJh
NDg5NjEwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkuY3BwCkBAIC0xMDUsNiArMTA1LDE1IEBAIHZvaWQgU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2
NF90IHBhZ2VJCiAgICAgY2hhbGxlbmdlLT5wZXJmb3JtRGVmYXVsdEhhbmRsaW5nKCk7CiB9CiAK
K3ZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nl
c3NMYXVuY2hlciogbGF1bmNoZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcikKK3sKKyAgICBXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGlu
ZyhsYXVuY2hlciwgY29ubmVjdGlvbklkZW50aWZpZXIpOworCisgICAgLy8gUHJldmVudCBBcHAg
TmFwIGZvciBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzZXMuCisgICAgLy8gRklYTUU6IElkZWFsbHks
IHRoZSBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzIHdvdWxkIGFwcCBuYXAgd2hlbiBhbGwgaXRzIGNs
aWVudHMgYXBwIG5hcCAoaHR0cDovL3dlYmtpdC5vcmcvYi8xODU2MjYpLgorICAgIHNldFByb2Nl
c3NTdXBwcmVzc2lvbkVuYWJsZWQoZmFsc2UpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAppbmRleCAzMzUxYjc0MDk0
YmU0N2U4MzBlMzk3YzQwNjgxYmFhMDgyOThiNWEzLi5jYmRlZmRjMzgwNTZiMTJkZmM2YjVmMWMw
ZGRkODQwYzFlYTZmZTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eS5oCkBAIC01NCw2ICs1NCw5IEBAIHByaXZhdGU6CiAgICAg
Ly8gQ2hpbGRQcm9jZXNzUHJveHkKICAgICB2b2lkIGdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xh
dW5jaGVyOjpMYXVuY2hPcHRpb25zJikgZmluYWw7CiAKKyAgICAvLyBQcm9jZXNzTGF1bmNoZXI6
OkNsaWVudAorICAgIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgZmluYWw7CisKICAgICBib29sIGlzU2VydmljZVdv
cmtlclByb2Nlc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA2ZjVjOGFlOTRmZDYxMjJjODIyZTNlOWQ0NGFjM2U2
NTc4Y2M2M2M1Li45NjQyMDRhNTllMjJjOTI4MTRiZWYyODVhZmZjNGQwMmY3ODA1YjQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMjMwLDYgKzIzMCw5
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNvbm5lY3Rpb25XaWxsT3BlbihJUEM6OkNvbm5lY3Rp
b24mKSBvdmVycmlkZTsKICAgICB2b2lkIHByb2Nlc3NXaWxsU2h1dERvd24oSVBDOjpDb25uZWN0
aW9uJikgb3ZlcnJpZGU7CiAKKyAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAorICAgIHZv
aWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllcikgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAgLy8gQ2FsbGVkIHdoZW4gdGhl
IHdlYiBwcm9jZXNzIGhhcyBjcmFzaGVkIG9yIHdlIGtub3cgdGhhdCBpdCB3aWxsIHRlcm1pbmF0
ZSBzb29uLgogICAgIC8vIFdpbGwgcG90ZW50aWFsbHkgY2F1c2UgdGhlIFdlYlByb2Nlc3NQcm94
eSBvYmplY3QgdG8gYmUgZnJlZWQuCkBAIC0yOTMsOSArMjk2LDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNlbmRQcm9jZXNzRGlkUmVzdW1lKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTZXRBc3Nl
cnRpb25TdGF0ZShBc3NlcnRpb25TdGF0ZSkgb3ZlcnJpZGU7CiAKLSAgICAvLyBQcm9jZXNzTGF1
bmNoZXI6OkNsaWVudAotICAgIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hl
ciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgb3ZlcnJpZGU7Ci0KICAgICAvLyBJbXBs
ZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAog
ICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlByb2Nlc3NQcm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYlByb2Nlc3NQcm94
eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDlmZDIyMjdmNDE3MTQzYTY2M2NiMTk0ZTFhMjM1YTdhMzNkN2Vm
OTMuLjM3NTUwYmUwZTBjMWQ3ZGRiZDA1OTJhOWRiODBjZDRlZDAzNzlhY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA3NCw3ICsx
MDc0LDYgQEAKIAkJNTE1RTc3MjcxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFNzcyNTE4
M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJNTE1RTc3MjgxODNE
RDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1RTc3MjYxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVx
dWVzdC5oICovOyB9OwogCQk1MTYwQkZFMTEzMzgxREY5MDA5MTg5OTkgLyogTG9nZ2luZ0ZvdW5k
YXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTYwQkZFMDEzMzgxREY5MDA5MTg5OTkgLyogTG9nZ2luZ0ZvdW5kYXRpb24ubW0gKi87IH07Ci0J
CTUxNjMxOTkyMTYyODk4MEEwMEUyMkYwMCAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MzE5OTExNjI4
OTgwQTAwRTIyRjAwIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNYWMubW0gKi87IH07CiAJCTUxNjMx
OTk0MTYyODlBNjAwMEUyMkYwMCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQzkzNDE2
MjgwNjQ4MDAzNDI1NTAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OwogCQk1MTYzMTk5NTE2Mjg5QTYzMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQ0M5MzUx
NjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTE2
QTRBNUQxMjBBMkNDRDAwQzA1QjdGIC8qIEFQSUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogQVBJ
RXJyb3IuaCAqLzsgfTsKQEAgLTIwNzIsNyArMjA3MSw2IEBACiAJCUNEQTI5QTJCMUNCRUI2N0Ew
MDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMjcxQ0JFQjY3QTAw
OTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi87IH07CiAJ
CUNEQzI4MzFEMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzI4MzFCMjAxQkQ3
OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCAqLzsgfTsKIAkJQ0RDMjgzMUUy
MDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzI4MzFDMjAxQkQ3OUQwMEU2RTc0
NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW0gKi87IH07Ci0JCUNEQzM4MkZFMTcyMTE3OTkw
MDhBMkZDMyAvKiBTZWNJdGVtU2hpbUxpYnJhcnkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGOEE3ODEzOEI0NjA5MDBBOTVGNDQgLyogU2VjSXRl
bVNoaW1MaWJyYXJ5Lm1tICovOyB9OwogCQlDRENBODVDODEzMkFCQTRFMDBFOTYxREYgLyogV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQ0E4NUM2MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyLm1tICovOyB9OwogCQlDRENBODVDOTEzMkFCQTRFMDBFOTYxREYg
LyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJQ0UxMUFENTAxQ0JDNDdGODAwNjgx
RUU1IC8qIENvZGVTaWduaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0UxMUFENEYxQ0JDNDdGODAwNjgxRUU1IC8qIENvZGVTaWduaW5nLm1tICov
OyB9OwpAQCAtMzQ4OSw3ICszNDg3LDYgQEAKIAkJNTE1RTc3MjUxODNERDZGNjAwMDcyMDNGIC8q
IEFzeW5jUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
c3luY1JlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVFNzcyNjE4
M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFzeW5jUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTYwQkZFMDEzMzgxREY5MDA5MTg5OTkgLyogTG9nZ2luZ0ZvdW5kYXRpb24ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2dnaW5nRm91bmRhdGlvbi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE2MzE5OTExNjI4OTgwQTAwRTIyRjAwIC8qIE5l
dHdvcmtQcm9jZXNzUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tOyBwYXRoID0gbWFjL05ldHdvcmtQcm9j
ZXNzUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjRDMDk0MUIw
NUI3NTcwMDRGMTAyQSAvKiBDaGlsZFByb2Nlc3MubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gQ2hpbGRQcm9jZXNzLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogQVBJRXJyb3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTE3QTMzQjMxMzBCMzA4QzAwRjgwQ0I1IC8qIFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NjA1
LDcgKzQ2MDIsNiBAQAogCQlDREMyODMxQjIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVu
U3RhY2tWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRnVsbHNjcmVlblN0YWNrVmlldy5oOyBwYXRo
ID0gaW9zL2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEQzI4MzFDMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5T
dGFja1ZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcu
bW07IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9XS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzM4MkY3MTcyMTE1MDYwMDhBMkZDMyAvKiBDRk5l
dHdvcmsuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDRk5ldHdvcmsuZnJhbWV3b3JrOyBw
YXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yazsgc291
cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKLQkJQ0RDMzgzMDYxNzIxMTc5OTAwOEEyRkMzIC8q
IFdlYlByb2Nlc3NTaGltLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgaW5jbHVkZUluSW5kZXggPSAw
OyBwYXRoID0gV2ViUHJvY2Vzc1NoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCUNEQzhGNDg4MTcyNUU2NzgwMDE2NkY2RSAvKiBDb3JlRm91bmRhdGlvbi5m
cmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENvcmVGb3VuZGF0aW9uLmZyYW1ld29yazsgcGF0
aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yazsg
c291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJQ0RDQTg1QzYxMzJBQkE0RTAwRTk2MURG
IC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRENBODVDNzEzMkFCQTRFMDBFOTYxREYgLyogV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02NTg5LDcgKzY1ODUsNiBAQAogCQk1MTYzMTk5MzE2Mjg5ODBFMDBFMjJGMDAg
LyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk1
MTYzMTk5MTE2Mjg5ODBBMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbSAqLywK
IAkJCSk7CiAJCQluYW1lID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTEw
NzA0LDcgKzEwNjk5LDYgQEAKIAkJCQk1MTYzMTk5NDE2Mjg5QTYwMDBFMjJGMDAgLyogTmV0d29y
a1Byb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE0QTk1NDkx
NkUwMTZBNDAwNjhERTgyIC8qIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxNzk1NTZEMTYyODc3QjEwMEZBNDNCNiAvKiBOZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxNjMxOTkyMTYyODk4MEEwMEUyMkYw
MCAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzQTE2
M0MxNjMwODhGNjAwNUQ3RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGRDE4QjUxNjUxRkJBRDAwREJFMUNFIC8qIE5ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTUyNTUxQTE3MDExODE5
MDAzRDdBREIgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMTE0NTAsMTQgKzExNDQ0LDYgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKLQkJQ0RDMzgyRkQxNzIxMTc5OTAw
OEEyRkMzIC8qIFNvdXJjZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsK
LQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQlDREMz
ODJGRTE3MjExNzk5MDA4QTJGQzMgLyogU2VjSXRlbVNoaW1MaWJyYXJ5Lm1tIGluIFNvdXJjZXMg
Ki8sCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0J
CX07CiAvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZWZiMDdlM2ZhM2I1MDNjNzk0Mzg1ZmVj
M2FkZTdlMzZhMmJkZWRjNi4uZmE0YzA2NjIyMzhhYTgyZmNiYjViODRiMGZiZjNhZmMwODIzOGEw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTg0LDcgKzg0LDYgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVz
LCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zKSAtPiAoKQogCiAg
ICAgU2V0SGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0luY3JlYXNlTGltaXQoaW50IG1pbGxp
c2Vjb25kcykKLSAgICBTZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wgZmxhZykKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBTZXRRT1MoaW50IGxhdGVuY3lRT1MsIGludCB0aHJvdWdo
cHV0UU9TKQogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>