<?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>84639</bug_id>
          
          <creation_ts>2012-04-23 15:07:17 -0700</creation_ts>
          <short_desc>Re-factor scheduling logic from AudioBufferSourceNode into AudioScheduledSourceNode</short_desc>
          <delta_ts>2012-04-27 13:27:37 -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>Web Audio</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Rogers">crogers</reporter>
          <assigned_to name="Chris Rogers">crogers</assigned_to>
          <cc>crogers</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>608053</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-23 15:07:17 -0700</bug_when>
    <thetext>Re-factor scheduling logic from AudioBufferSourceNode into AudioScheduledSourceNode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608068</commentid>
    <comment_count>1</comment_count>
      <attachid>138434</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-23 15:17:59 -0700</bug_when>
    <thetext>Created attachment 138434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608117</commentid>
    <comment_count>2</comment_count>
      <attachid>138434</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-23 15:46:40 -0700</bug_when>
    <thetext>Comment on attachment 138434
Patch

Attachment 138434 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12530041</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608170</commentid>
    <comment_count>3</comment_count>
      <attachid>138453</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-23 16:24:37 -0700</bug_when>
    <thetext>Created attachment 138453
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608171</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-23 16:25:34 -0700</bug_when>
    <thetext>Fixed simple compile error from first patch caused by last minute cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610090</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-25 15:21:59 -0700</bug_when>
    <thetext>Hi Eric and Jer, would one of you be able to look over this patch?  It&apos;s not as bad as it looks since it&apos;s essentially just cutting some code from AudioBufferSourceNode and putting it into a new base-class.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610893</commentid>
    <comment_count>6</comment_count>
      <attachid>138453</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-04-26 13:25:57 -0700</bug_when>
    <thetext>Comment on attachment 138453
Patch

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

&gt; Source/WebCore/Modules/webaudio/AudioBufferSourceNode.h:-85
&gt; -    void noteOn(double when);
&gt;      void noteGrainOn(double when, double grainOffset, double grainDuration);
&gt; -    void noteOff(double when);

Why wasn&apos;t noteGrainOn() included in this patch?  It appears that updateSchedulingInfo() does much of the same calculations as noteGrainOn().  Is there additional refactoring which could be done here?  It seems that it&apos;s concepts (i.e. mucking around with the m_playbackState variable) belong in AudioScheduledSourceNode and not in AudioBufferSourceNode.

I would suggest adding a pure virtual &quot;double maxGrainDuration() const = 0;&quot; function in AudioScheduledSourceNode.h, overridden by AudioBufferSourceNode as &quot;buffer()-&gt;duration()&quot;, and use the result of that function to do the necessary calculations in noteGrainOn().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611004</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-26 14:47:57 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 138453 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=138453&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/webaudio/AudioBufferSourceNode.h:-85
&gt; &gt; -    void noteOn(double when);
&gt; &gt;      void noteGrainOn(double when, double grainOffset, double grainDuration);
&gt; &gt; -    void noteOff(double when);
&gt; 
&gt; Why wasn&apos;t noteGrainOn() included in this patch?  It appears that updateSchedulingInfo() does much of the same calculations as noteGrainOn().  Is there additional refactoring which could be done here?  It seems that it&apos;s concepts (i.e. mucking around with the m_playbackState variable) belong in AudioScheduledSourceNode and not in AudioBufferSourceNode.
&gt; 
&gt; I would suggest adding a pure virtual &quot;double maxGrainDuration() const = 0;&quot; function in AudioScheduledSourceNode.h, overridden by AudioBufferSourceNode as &quot;buffer()-&gt;duration()&quot;, and use the result of that function to do the necessary calculations in noteGrainOn().

Hi Jer, the reason is because noteGrainOn() is a concept specific to AudioBufferSourceNodes, since it accesses parts of an AudioBuffer.  The Oscillator AudioSourceNode does not have this concept of noteGrainOn(), but only noteOn() and noteOff() for basic starting/stopping playback, and going through specific playback states.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611836</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-27 13:27:00 -0700</bug_when>
    <thetext>Committed r115485: &lt;http://trac.webkit.org/changeset/115485&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611839</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-27 13:27:37 -0700</bug_when>
    <thetext>Thanks Eric!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138434</attachid>
            <date>2012-04-23 15:17:59 -0700</date>
            <delta_ts>2012-04-23 16:24:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84639-20120423151758.patch</filename>
            <type>text/plain</type>
            <size>28246</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0OTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTkwYjAyODAyYjZkNWY0
MTg0M2JjNzJhYTRmMmQ5OTc4NjE2NDc3Yy4uNmZlYmVhOGRkMGYzNjg1NGQzMjgwMWZlMWU4ZDNk
ZGQ4MGZlMjJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA0LTIzICBDaHJp
cyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmUtZmFjdG9yIHNjaGVk
dWxpbmcgbG9naWMgZnJvbSBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgaW50byBBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg0NjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAg
IAorICAgICAgICBQbGF5YmFjayBsb2dpYyBpbnZvbHZpbmcgbm90ZU9uKCksIG5vdGVPZmYoKSwg
YW5kIHBsYXliYWNrU3RhdGUgd2VyZSBpbnRlcnR3aW5lZCB3aXRoCisgICAgICAgIHRoZSBBdWRp
b0J1ZmZlclNvdXJjZU5vZGUncyBidWZmZXIgcGxheWJhY2sgY29kZS4gIFRoZXNlIGFyZSBtb3Jl
IGdlbmVyYWwgY29uY2VwdHMgYW5kCisgICAgICAgIG1heSBiZSBpbXBsZW1lbnRlZCBzZXBhcmF0
ZWx5IGluIGFub3RoZXIgY2xhc3MgY2FsbGVkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMuIENvdmVyZWQgYnkgZXhpc3RpbmcgbGF5b3V0IHRlc3RzLgor
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgQWRkIEF1ZGlvU2NoZWR1
bGVkU291cmNlTm9kZSBmaWxlcyB0byBtYWtlZmlsZS4KKyAgICAgICAgCisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OkF1ZGlvQnVmZmVy
U291cmNlTm9kZSk6CisgICAgICAgIFJlLWZhY3RvciBzb21lIG1lbWJlciB2YXJpYWJsZXMgaW50
byBuZXcgYmFzZSBjbGFzcyBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuCisgICAgICAgIAorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpwcm9jZXNzKToKKyAgICAgICAg
UmUtZmFjdG9yIHNjaGVkdWxpbmcgbG9naWMgaW50byBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUu
CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLmg6CisgICAgICAgIChBdWRpb0J1ZmZlclNvdXJjZU5vZGUpOgorICAgICAgICBTaW1wbGlm
eSBieSByZS1mYWN0b3Jpbmcgc2NoZWR1bGluZyBsb2dpYyBpbnRvIEF1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6dXBkYXRlU2NoZWR1bGlu
Z0luZm8pOgorICAgICAgICBHZXQgZnJhbWUgaW5mb3JtYXRpb24gZm9yIHRoZSBjdXJyZW50IHRp
bWUgcXVhbnR1bS4KKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVk
dWxlZFNvdXJjZU5vZGU6Om5vdGVPbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGU6Om5vdGVPZmYpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlOjpwbGF5YmFja1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVk
U291cmNlTm9kZTo6aXNQbGF5aW5nT3JTY2hlZHVsZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpoYXNGaW5pc2hlZCk6CisgICAgICAgIFJlLWZhY3RvcmVk
IGZyb20gQXVkaW9CdWZmZXJTb3VyY2VOb2RlLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRk
IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSBmaWxlcyB0byBtYWtlZmlsZXMuCisKIDIwMTItMDQt
MjMgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF1b
UmVmYWN0b3JpbmddIFJlbW92ZSBWOFByb3h5Ojp0b1Y4KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCmluZGV4IDcwNjgzNmExNTNmNjMxYWRkOThhYTdmMWRmNTk4ZmM5MjJiODRlODQuLjYx
Mjg4YWJlYTE2OGI4MzNlZGQ0ODgzZWY4MjBjM2VhNzVlZDZlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtNTQ4OSw2ICs1NDg5LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVu
dC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Tb3VyY2VOb2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFk
RFNQS2VybmVsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRE
U1BLZXJuZWwuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5kZXggZTljOTNhZTMzMmU1M2YwMjlhYmMy
MjlmOWMxYTU5MTFmMjY3OTI2NS4uNDNhOWNiNDhhYzVmNDE0Y2ZkOWE4NTIwY2I4NGNiYmY2YzU2
ZWI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNDMsNyArNDMsNiBAQCB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBkb3VibGUgRGVmYXVsdEdyYWlu
RHVyYXRpb24gPSAwLjAyMDsgLy8gMjBtcwotY29uc3QgZG91YmxlIFVua25vd25UaW1lID0gLTE7
CiAKIC8vIEFyYml0cmFyeSB1cHBlciBsaW1pdCBvbiBwbGF5YmFjayByYXRlLgogLy8gSGlnaGVy
IHRoYW4gZXhwZWN0ZWQgcmF0ZXMgY2FuIGJlIHVzZWZ1bCB3aGVuIHBsYXlpbmcgYmFjayBvdmVy
c2FtcGxlZCBidWZmZXJzCkBAIC01NiwxOCArNTUsMTUgQEAgUGFzc1JlZlB0cjxBdWRpb0J1ZmZl
clNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCog
Y28KIH0KIAogQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVk
aW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQotICAgIDogQXVkaW9Tb3VyY2VO
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCisgICAgOiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUo
Y29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fYnVmZmVyKDApCiAgICAgLCBtX2lzTG9vcGlu
ZyhmYWxzZSkKLSAgICAsIG1fc3RhcnRUaW1lKDAuMCkKLSAgICAsIG1fZW5kVGltZShVbmtub3du
VGltZSkKICAgICAsIG1fdmlydHVhbFJlYWRJbmRleCgwKQogICAgICwgbV9pc0dyYWluKGZhbHNl
KQogICAgICwgbV9ncmFpbk9mZnNldCgwLjApCiAgICAgLCBtX2dyYWluRHVyYXRpb24oRGVmYXVs
dEdyYWluRHVyYXRpb24pCiAgICAgLCBtX2xhc3RHYWluKDEuMCkKICAgICAsIG1fcGFubmVyTm9k
ZSgwKQotICAgICwgbV9wbGF5YmFja1N0YXRlKFVOU0NIRURVTEVEX1NUQVRFKQogewogICAgIHNl
dE5vZGVUeXBlKE5vZGVUeXBlQXVkaW9CdWZmZXJTb3VyY2UpOwogCkBAIC0xMDAsMzcgKzk2LDMy
IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpCiAgICAgLy8gVGhlIGF1ZGlvIHRocmVhZCBjYW4ndCBibG9jayBvbiB0aGlzIGxvY2ss
IHNvIHdlIGNhbGwgdHJ5TG9jaygpIGluc3RlYWQuCiAgICAgTXV0ZXhUcnlMb2NrZXIgdHJ5TG9j
a2VyKG1fcHJvY2Vzc0xvY2spOwogICAgIGlmICh0cnlMb2NrZXIubG9ja2VkKCkpIHsKLSAgICAg
ICAgLy8gQ2hlY2sgaWYgaXQncyB0aW1lIHRvIHN0YXJ0IHBsYXlpbmcuCi0gICAgICAgIGRvdWJs
ZSBzYW1wbGVSYXRlID0gdGhpcy0+c2FtcGxlUmF0ZSgpOwotICAgICAgICBzaXplX3QgcXVhbnR1
bVN0YXJ0RnJhbWUgPSBjb250ZXh0KCktPmN1cnJlbnRTYW1wbGVGcmFtZSgpOwotICAgICAgICBz
aXplX3QgcXVhbnR1bUVuZEZyYW1lID0gcXVhbnR1bVN0YXJ0RnJhbWUgKyBmcmFtZXNUb1Byb2Nl
c3M7Ci0gICAgICAgIHNpemVfdCBzdGFydEZyYW1lID0gQXVkaW9VdGlsaXRpZXM6OnRpbWVUb1Nh
bXBsZUZyYW1lKG1fc3RhcnRUaW1lLCBzYW1wbGVSYXRlKTsKLSAgICAgICAgc2l6ZV90IGVuZEZy
YW1lID0gbV9lbmRUaW1lID09IFVua25vd25UaW1lID8gMCA6IEF1ZGlvVXRpbGl0aWVzOjp0aW1l
VG9TYW1wbGVGcmFtZShtX2VuZFRpbWUsIHNhbXBsZVJhdGUpOwotCi0gICAgICAgIC8vIElmIHdl
IGtub3cgdGhlIGVuZCB0aW1lIGFuZCBpdCdzIGFscmVhZHkgcGFzc2VkLCB0aGVuIGRvbid0IGJv
dGhlciBkb2luZyBhbnkgbW9yZSByZW5kZXJpbmcgdGhpcyBjeWNsZS4KLSAgICAgICAgaWYgKG1f
ZW5kVGltZSAhPSBVbmtub3duVGltZSAmJiBlbmRGcmFtZSA8PSBxdWFudHVtU3RhcnRGcmFtZSkg
ewotICAgICAgICAgICAgbV92aXJ0dWFsUmVhZEluZGV4ID0gMDsKLSAgICAgICAgICAgIGZpbmlz
aCgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAobV9wbGF5YmFja1N0YXRlID09
IFVOU0NIRURVTEVEX1NUQVRFIHx8IG1fcGxheWJhY2tTdGF0ZSA9PSBGSU5JU0hFRF9TVEFURQot
ICAgICAgICAgICAgfHwgIWJ1ZmZlcigpIHx8IHN0YXJ0RnJhbWUgPj0gcXVhbnR1bUVuZEZyYW1l
KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogY2FuIG9wdGltaXplIGhlcmUgYnkgcHJvcGFnYXRp
bmcgc2lsZW50IGhpbnQgaW5zdGVhZCBvZiBmb3JjaW5nIHRoZSB3aG9sZSBjaGFpbiB0byBwcm9j
ZXNzIHNpbGVuY2UuCisgICAgICAgIGlmICghYnVmZmVyKCkpIHsKICAgICAgICAgICAgIG91dHB1
dEJ1cy0+emVybygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKG1fcGxheWJhY2tTdGF0ZSA9PSBTQ0hFRFVMRURfU1RBVEUpIHsKLSAgICAgICAgICAgIC8v
IEluY3JlbWVudCB0aGUgYWN0aXZlIHNvdXJjZSBjb3VudCBvbmx5IGlmIHdlJ3JlIHRyYW5zaXRp
b25pbmcgZnJvbSBTQ0hFRFVMRURfU1RBVEUgdG8gUExBWUlOR19TVEFURS4KLSAgICAgICAgICAg
IG1fcGxheWJhY2tTdGF0ZSA9IFBMQVlJTkdfU1RBVEU7Ci0gICAgICAgICAgICBjb250ZXh0KCkt
PmluY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCk7CisgICAgICAgIHNpemVfdCBxdWFudHVtU3Rh
cnRGcmFtZTsKKyAgICAgICAgc2l6ZV90IHF1YW50dW1FbmRGcmFtZTsKKyAgICAgICAgc2l6ZV90
IHN0YXJ0RnJhbWU7CisgICAgICAgIHNpemVfdCBlbmRGcmFtZTsKKyAgICAgICAgc2l6ZV90IHF1
YW50dW1GcmFtZU9mZnNldDsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlckZyYW1lc1RvUHJvY2VzczsK
KworICAgICAgICB1cGRhdGVTY2hlZHVsaW5nSW5mbyhmcmFtZXNUb1Byb2Nlc3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHF1YW50dW1TdGFydEZyYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBxdWFudHVtRW5kRnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXJ0RnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZEZyYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWFudHVtRnJhbWVPZmZzZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlckZyYW1lc1RvUHJvY2Vzcyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICBpZiAoIWJ1ZmZlckZyYW1lc1RvUHJvY2Vzcykg
eworICAgICAgICAgICAgb3V0cHV0QnVzLT56ZXJvKCk7CisgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHNpemVfdCBxdWFudHVtRnJhbWVPZmZzZXQgPSBz
dGFydEZyYW1lID4gcXVhbnR1bVN0YXJ0RnJhbWUgPyBzdGFydEZyYW1lIC0gcXVhbnR1bVN0YXJ0
RnJhbWUgOiAwOwotICAgICAgICBxdWFudHVtRnJhbWVPZmZzZXQgPSBtaW4ocXVhbnR1bUZyYW1l
T2Zmc2V0LCBmcmFtZXNUb1Byb2Nlc3MpOyAvLyBjbGFtcCB0byB2YWxpZCByYW5nZQotICAgICAg
ICBzaXplX3QgYnVmZmVyRnJhbWVzVG9Qcm9jZXNzID0gZnJhbWVzVG9Qcm9jZXNzIC0gcXVhbnR1
bUZyYW1lT2Zmc2V0OwogCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvdXRwdXRC
dXMtPm51bWJlck9mQ2hhbm5lbHMoKTsgKytpKSAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG91dHB1dEJ1cy0+bnVtYmVyT2ZDaGFubmVscygpOyArK2kpCiAgICAgICAgICAgICBt
X2Rlc3RpbmF0aW9uQ2hhbm5lbHNbaV0gPSBvdXRwdXRCdXMtPmNoYW5uZWwoaSktPm11dGFibGVE
YXRhKCk7CiAKICAgICAgICAgLy8gUmVuZGVyIGJ5IHJlYWRpbmcgZGlyZWN0bHkgZnJvbSB0aGUg
YnVmZmVyLgpAQCAtMzQ3LDE2ICszMzgsNiBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6
cmVzZXQoKQogICAgIG1fbGFzdEdhaW4gPSBnYWluKCktPnZhbHVlKCk7CiB9CiAKLXZvaWQgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlOjpmaW5pc2goKQotewotICAgIGlmIChtX3BsYXliYWNrU3RhdGUg
IT0gRklOSVNIRURfU1RBVEUpIHsKLSAgICAgICAgLy8gTGV0IHRoZSBjb250ZXh0IGRlcmVmZXJl
bmNlIHRoaXMgQXVkaW9Ob2RlLgotICAgICAgICBjb250ZXh0KCktPm5vdGlmeU5vZGVGaW5pc2hl
ZFByb2Nlc3NpbmcodGhpcyk7Ci0gICAgICAgIG1fcGxheWJhY2tTdGF0ZSA9IEZJTklTSEVEX1NU
QVRFOwotICAgICAgICBjb250ZXh0KCktPmRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCk7Ci0g
ICAgfQotfQotCiBib29sIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKEF1ZGlvQnVm
ZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTM5NCwxOCAr
Mzc1LDYgQEAgdW5zaWduZWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpudW1iZXJPZkNoYW5uZWxz
KCkKICAgICByZXR1cm4gb3V0cHV0KDApLT5udW1iZXJPZkNoYW5uZWxzKCk7CiB9CiAKLXZvaWQg
QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpub3RlT24oZG91YmxlIHdoZW4pCi17Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAobV9wbGF5YmFja1N0YXRlICE9IFVOU0NIRURVTEVE
X1NUQVRFKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2lzR3JhaW4gPSBmYWxzZTsKLSAgICBt
X3N0YXJ0VGltZSA9IHdoZW47Ci0gICAgbV92aXJ0dWFsUmVhZEluZGV4ID0gMDsKLSAgICBtX3Bs
YXliYWNrU3RhdGUgPSBTQ0hFRFVMRURfU1RBVEU7Ci19Ci0KIHZvaWQgQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlOjpub3RlR3JhaW5Pbihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0LCBkb3Vi
bGUgZ3JhaW5EdXJhdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNDQz
LDE2ICs0MTIsNiBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6bm90ZUdyYWluT24oZG91
YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgZG91YmxlCiAgICAgbV9wbGF5YmFja1N0YXRl
ID0gU0NIRURVTEVEX1NUQVRFOwogfQogCi12b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6bm90
ZU9mZihkb3VibGUgd2hlbikKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlm
ICghKG1fcGxheWJhY2tTdGF0ZSA9PSBTQ0hFRFVMRURfU1RBVEUgfHwgbV9wbGF5YmFja1N0YXRl
ID09IFBMQVlJTkdfU1RBVEUpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgd2hlbiA9IG1h
eCgwLjAsIHdoZW4pOwotICAgIG1fZW5kVGltZSA9IHdoZW47Ci19Ci0KIGRvdWJsZSBBdWRpb0J1
ZmZlclNvdXJjZU5vZGU6OnRvdGFsUGl0Y2hSYXRlKCkKIHsKICAgICBkb3VibGUgZG9wcGxlclJh
dGUgPSAxLjA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaAppbmRleCA5ZmRiN2Y1MGQ2ZTI0NTVlNmViMjM4NjdlNmZh
ZWM1YzE0OTNkZDU4Li42Zjc2ZDcwZWI4NDEwMGY4ZTUxYzVjMDBkMTUzOGQ5NTY3MTMyZDQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291
cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgog
I2luY2x1ZGUgIkF1ZGlvR2Fpbi5oIgogI2luY2x1ZGUgIkF1ZGlvUGFubmVyTm9kZS5oIgotI2lu
Y2x1ZGUgIkF1ZGlvU291cmNlTm9kZS5oIgorI2luY2x1ZGUgIkF1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDIsMjUgKzQyLDggQEAgY2xh
c3MgQXVkaW9Db250ZXh0OwogLy8gQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGlzIGFuIEF1ZGlvTm9k
ZSByZXByZXNlbnRpbmcgYW4gYXVkaW8gc291cmNlIGZyb20gYW4gaW4tbWVtb3J5IGF1ZGlvIGFz
c2V0IHJlcHJlc2VudGVkIGJ5IGFuIEF1ZGlvQnVmZmVyLgogLy8gSXQgZ2VuZXJhbGx5IHdpbGwg
YmUgdXNlZCBmb3Igc2hvcnQgc291bmRzIHdoaWNoIHJlcXVpcmUgYSBoaWdoIGRlZ3JlZSBvZiBz
Y2hlZHVsaW5nIGZsZXhpYmlsaXR5IChjYW4gcGxheWJhY2sgaW4gcmh5dGhtaWNhbGx5IHBlcmZl
Y3Qgd2F5cykuCiAKLWNsYXNzIEF1ZGlvQnVmZmVyU291cmNlTm9kZSA6IHB1YmxpYyBBdWRpb1Nv
dXJjZU5vZGUgewotcHVibGljOgotICAgIC8vIFRoZXNlIGFyZSB0aGUgcG9zc2libGUgc3RhdGVz
IGFuIEF1ZGlvQnVmZmVyU291cmNlTm9kZSBjYW4gYmUgaW46Ci0gICAgLy8KLSAgICAvLyBVTlND
SEVEVUxFRF9TVEFURSAtIEluaXRpYWwgcGxheWJhY2sgc3RhdGUuIENyZWF0ZWQsIGJ1dCBub3Qg
eWV0IHNjaGVkdWxlZC4KLSAgICAvLyBTQ0hFRFVMRURfU1RBVEUgLSBTY2hlZHVsZWQgdG8gcGxh
eSAodmlhIG5vdGVPbigpIG9yIG5vdGVHcmFpbk9uKCkpLCBidXQgbm90IHlldCBwbGF5aW5nLgot
ICAgIC8vIFBMQVlJTkdfU1RBVEUgLSBHZW5lcmF0aW5nIHNvdW5kLgotICAgIC8vIEZJTklTSEVE
X1NUQVRFIC0gRmluaXNoZWQgZ2VuZXJhdGluZyBzb3VuZC4KLSAgICAvLwotICAgIC8vIFRoZSBz
dGF0ZSBjYW4gb25seSB0cmFuc2l0aW9uIHRvIHRoZSBuZXh0IHN0YXRlLCBleGNlcHQgZm9yIHRo
ZSBGSU5JU0hFRF9TVEFURSB3aGljaCBjYW4KLSAgICAvLyBuZXZlciBiZSBjaGFuZ2VkLgotICAg
IGVudW0gUGxheWJhY2tTdGF0ZSB7Ci0gICAgICAgIC8vIFRoZXNlIG11c3QgYmUgZGVmaW5lZCB3
aXRoIHRoZSBzYW1lIG5hbWVzIGFuZCB2YWx1ZXMgYXMgaW4gdGhlIC5pZGwgZmlsZS4KLSAgICAg
ICAgVU5TQ0hFRFVMRURfU1RBVEUgPSAwLAotICAgICAgICBTQ0hFRFVMRURfU1RBVEUgPSAxLAot
ICAgICAgICBQTEFZSU5HX1NUQVRFID0gMiwKLSAgICAgICAgRklOSVNIRURfU1RBVEUgPSAzCi0g
ICAgfTsKLSAgICAKK2NsYXNzIEF1ZGlvQnVmZmVyU291cmNlTm9kZSA6IHB1YmxpYyBBdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGUgeworcHVibGljOiAgICAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
dWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVS
YXRlKTsKIAogICAgIHZpcnR1YWwgfkF1ZGlvQnVmZmVyU291cmNlTm9kZSgpOwpAQCAtODAsMTMg
KzYzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAKICAgICAvLyBQbGF5LXN0YXRl
CiAgICAgLy8gbm90ZU9uKCksIG5vdGVHcmFpbk9uKCksIGFuZCBub3RlT2ZmKCkgbXVzdCBhbGwg
YmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotICAgIHZvaWQgbm90ZU9uKGRvdWJsZSB3
aGVuKTsKICAgICB2b2lkIG5vdGVHcmFpbk9uKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZz
ZXQsIGRvdWJsZSBncmFpbkR1cmF0aW9uKTsKLSAgICB2b2lkIG5vdGVPZmYoZG91YmxlIHdoZW4p
OwotCi0gICAgdW5zaWduZWQgc2hvcnQgcGxheWJhY2tTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PihtX3BsYXliYWNrU3RhdGUpOyB9Ci0gICAgYm9vbCBp
c1BsYXlpbmdPclNjaGVkdWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tTdGF0ZSA9PSBQ
TEFZSU5HX1NUQVRFIHx8IG1fcGxheWJhY2tTdGF0ZSA9PSBTQ0hFRFVMRURfU1RBVEU7IH0KLSAg
ICBib29sIGhhc0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5YmFja1N0YXRlID09IEZJ
TklTSEVEX1NUQVRFOyB9CiAKICAgICAvLyBOb3RlOiB0aGUgYXR0cmlidXRlIHdhcyBvcmlnaW5h
bGx5IGV4cG9zZWQgYXMgLmxvb3BpbmcsIGJ1dCB0byBiZSBtb3JlIGNvbnNpc3RlbnQgaW4gbmFt
aW5nIHdpdGggPGF1ZGlvPgogICAgIC8vIGFuZCB3aXRoIGhvdyBpdCdzIGRlc2NyaWJlZCBpbiB0
aGUgc3BlY2lmaWNhdGlvbiwgdGhlIHByb3BlciBhdHRyaWJ1dGUgbmFtZSBpcyAubG9vcApAQCAt
MTMwLDE0ICsxMDcsNiBAQCBwcml2YXRlOgogICAgIC8vIElmIHRydWUsIGl0IHdpbGwgd3JhcCBh
cm91bmQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgZWFjaCB0aW1lIGl0IHJlYWNoZXMgdGhl
IGVuZC4KICAgICBib29sIG1faXNMb29waW5nOwogCi0gICAgLy8gbV9zdGFydFRpbWUgaXMgdGhl
IHRpbWUgdG8gc3RhcnQgcGxheWluZyBiYXNlZCBvbiB0aGUgY29udGV4dCdzIHRpbWVsaW5lICgw
LjAgb3IgYSB0aW1lIGxlc3MgdGhhbiB0aGUgY29udGV4dCdzIGN1cnJlbnQgdGltZSBtZWFucyAi
bm93IikuCi0gICAgZG91YmxlIG1fc3RhcnRUaW1lOyAvLyBpbiBzZWNvbmRzCi0KLSAgICAvLyBt
X2VuZFRpbWUgaXMgdGhlIHRpbWUgdG8gc3RvcCBwbGF5aW5nIGJhc2VkIG9uIHRoZSBjb250ZXh0
J3MgdGltZWxpbmUgKDAuMCBvciBhIHRpbWUgbGVzcyB0aGFuIHRoZSBjb250ZXh0J3MgY3VycmVu
dCB0aW1lIG1lYW5zICJub3ciKS4KLSAgICAvLyBJZiBpdCBoYXNuJ3QgYmVlbiBzZXQgZXhwbGlj
aXRseSwgdGhlbiB0aGUgc291bmQgd2lsbCBub3Qgc3RvcCBwbGF5aW5nIChpZiBsb29waW5nKSBv
ciB3aWxsIHN0b3Agd2hlbiB0aGUgZW5kIG9mIHRoZSBBdWRpb0J1ZmZlcgotICAgIC8vIGhhcyBi
ZWVuIHJlYWNoZWQuCi0gICAgZG91YmxlIG1fZW5kVGltZTsgLy8gaW4gc2Vjb25kcwotICAgIAog
ICAgIC8vIG1fdmlydHVhbFJlYWRJbmRleCBpcyBhIHNhbXBsZS1mcmFtZSBpbmRleCBpbnRvIG91
ciBidWZmZXIgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uLgogICAg
IC8vIFNpbmNlIGl0J3MgZmxvYXRpbmctcG9pbnQsIGl0IGhhcyBzdWItc2FtcGxlIGFjY3VyYWN5
LgogICAgIGRvdWJsZSBtX3ZpcnR1YWxSZWFkSW5kZXg7CkBAIC0xNTksMTEgKzEyOCw2IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyBwcm9jZXNzKCkgd2l0aCBzZXRCdWZm
ZXIoKSB3aGljaCBjYW4gY2F1c2UgZHluYW1pYyBjaGFubmVsIGNvdW50IGNoYW5nZXMuCiAgICAg
bXV0YWJsZSBNdXRleCBtX3Byb2Nlc3NMb2NrOwotCi0gICAgLy8gSGFuZGxlcyB0aGUgdGltZSB3
aGVuIHdlIHJlYWNoIHRoZSBlbmQgb2Ygc2FtcGxlIGRhdGEgKG5vbi1sb29waW5nKSBvciB0aGUg
bm90ZU9mZigpIHRpbWUgaGFzIGJlZW4gcmVhY2hlZC4KLSAgICB2b2lkIGZpbmlzaCgpOwotCi0g
ICAgUGxheWJhY2tTdGF0ZSBtX3BsYXliYWNrU3RhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRiNGU1MDgzZmMzMTg0
ODRmYjUzMjZlYjU1NzA5OWYzZGE1Y2MwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcApAQCAtMCww
ICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCIKKwor
I2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgorI2luY2x1ZGUgIkF1ZGlvVXRpbGl0aWVzLmgiCisj
aW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgZG91YmxlIEF1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6VW5rbm93blRpbWUgPSAtMTsKKworQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0KiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIDogQXVkaW9Tb3VyY2VOb2RlKGNvbnRleHQsIHNh
bXBsZVJhdGUpCisgICAgLCBtX3BsYXliYWNrU3RhdGUoVU5TQ0hFRFVMRURfU1RBVEUpCisgICAg
LCBtX3N0YXJ0VGltZSgwKQorICAgICwgbV9lbmRUaW1lKFVua25vd25UaW1lKQoreworfQorCit2
b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6dXBkYXRlU2NoZWR1bGluZ0luZm8oc2l6ZV90
IHF1YW50dW1GcmFtZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90JiBxdWFudHVtU3RhcnRGcmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QmIHF1YW50dW1FbmRG
cmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QmIHN0YXJ0RnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90JiBlbmRGcmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QmIHF1YW50dW1GcmFtZU9mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QmIG5vblNpbGVudEZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICBBU1NFUlQocXVhbnR1bUZy
YW1lU2l6ZSA9PSBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMpOworICAgIGlmIChx
dWFudHVtRnJhbWVTaXplICE9IEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcykKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIC8vIENoZWNrIGlmIGl0J3MgdGltZSB0byBzdGFydCBw
bGF5aW5nLgorICAgIGRvdWJsZSBzYW1wbGVSYXRlID0gdGhpcy0+c2FtcGxlUmF0ZSgpOworICAg
IHF1YW50dW1TdGFydEZyYW1lID0gY29udGV4dCgpLT5jdXJyZW50U2FtcGxlRnJhbWUoKTsKKyAg
ICBxdWFudHVtRW5kRnJhbWUgPSBxdWFudHVtU3RhcnRGcmFtZSArIHF1YW50dW1GcmFtZVNpemU7
CisgICAgc3RhcnRGcmFtZSA9IEF1ZGlvVXRpbGl0aWVzOjp0aW1lVG9TYW1wbGVGcmFtZShtX3N0
YXJ0VGltZSwgc2FtcGxlUmF0ZSk7CisgICAgZW5kRnJhbWUgPSBtX2VuZFRpbWUgPT0gVW5rbm93
blRpbWUgPyAwIDogQXVkaW9VdGlsaXRpZXM6OnRpbWVUb1NhbXBsZUZyYW1lKG1fZW5kVGltZSwg
c2FtcGxlUmF0ZSk7CisKKyAgICAvLyBJZiB3ZSBrbm93IHRoZSBlbmQgdGltZSBhbmQgaXQncyBh
bHJlYWR5IHBhc3NlZCwgdGhlbiBkb24ndCBib3RoZXIgZG9pbmcgYW55IG1vcmUgcmVuZGVyaW5n
IHRoaXMgY3ljbGUuCisgICAgaWYgKG1fZW5kVGltZSAhPSBVbmtub3duVGltZSAmJiBlbmRGcmFt
ZSA8PSBxdWFudHVtU3RhcnRGcmFtZSkKKyAgICAgICAgZmluaXNoKCk7CisKKyAgICBpZiAobV9w
bGF5YmFja1N0YXRlID09IFVOU0NIRURVTEVEX1NUQVRFIHx8IG1fcGxheWJhY2tTdGF0ZSA9PSBG
SU5JU0hFRF9TVEFURSB8fCBzdGFydEZyYW1lID49IHF1YW50dW1FbmRGcmFtZSkgeworICAgICAg
ICAvLyBPdXRwdXQgc2lsZW5jZS4KKyAgICAgICAgbm9uU2lsZW50RnJhbWVzVG9Qcm9jZXNzID0g
MDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3BsYXliYWNrU3RhdGUgPT0g
U0NIRURVTEVEX1NUQVRFKSB7CisgICAgICAgIC8vIEluY3JlbWVudCB0aGUgYWN0aXZlIHNvdXJj
ZSBjb3VudCBvbmx5IGlmIHdlJ3JlIHRyYW5zaXRpb25pbmcgZnJvbSBTQ0hFRFVMRURfU1RBVEUg
dG8gUExBWUlOR19TVEFURS4KKyAgICAgICAgbV9wbGF5YmFja1N0YXRlID0gUExBWUlOR19TVEFU
RTsKKyAgICAgICAgY29udGV4dCgpLT5pbmNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpOworICAg
IH0KKworICAgIHF1YW50dW1GcmFtZU9mZnNldCA9IHN0YXJ0RnJhbWUgPiBxdWFudHVtU3RhcnRG
cmFtZSA/IHN0YXJ0RnJhbWUgLSBxdWFudHVtU3RhcnRGcmFtZSA6IDA7CisgICAgcXVhbnR1bUZy
YW1lT2Zmc2V0ID0gbWluKHF1YW50dW1GcmFtZU9mZnNldCwgcXVhbnR1bUZyYW1lU2l6ZSk7IC8v
IGNsYW1wIHRvIHZhbGlkIHJhbmdlCisgICAgbm9uU2lsZW50RnJhbWVzVG9Qcm9jZXNzID0gZnJh
bWVzVG9Qcm9jZXNzIC0gcXVhbnR1bUZyYW1lT2Zmc2V0OworCisgICAgcmV0dXJuOworfQorCit2
b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6bm90ZU9uKGRvdWJsZSB3aGVuKQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1fcGxheWJhY2tTdGF0ZSAhPSBVTlND
SEVEVUxFRF9TVEFURSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdGFydFRpbWUgPSB3aGVu
OworICAgIG1fcGxheWJhY2tTdGF0ZSA9IFNDSEVEVUxFRF9TVEFURTsKK30KKwordm9pZCBBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGU6Om5vdGVPZmYoZG91YmxlIHdoZW4pCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIShtX3BsYXliYWNrU3RhdGUgPT0gU0NIRURVTEVE
X1NUQVRFIHx8IG1fcGxheWJhY2tTdGF0ZSA9PSBQTEFZSU5HX1NUQVRFKSkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIHdoZW4gPSBtYXgoMC4wLCB3aGVuKTsKKyAgICBtX2VuZFRpbWUgPSB3
aGVuOworfQorCit2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6ZmluaXNoKCkKK3sKKyAg
ICBpZiAobV9wbGF5YmFja1N0YXRlICE9IEZJTklTSEVEX1NUQVRFKSB7CisgICAgICAgIC8vIExl
dCB0aGUgY29udGV4dCBkZXJlZmVyZW5jZSB0aGlzIEF1ZGlvTm9kZS4KKyAgICAgICAgY29udGV4
dCgpLT5ub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKHRoaXMpOworICAgICAgICBtX3BsYXli
YWNrU3RhdGUgPSBGSU5JU0hFRF9TVEFURTsKKyAgICAgICAgY29udGV4dCgpLT5kZWNyZW1lbnRB
Y3RpdmVTb3VyY2VDb3VudCgpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmIxY2VlYzZlMDA2M2E0YjVhMjNiOGI5ZGU3YzUwMDQxNTFkNDUwNTMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZS5oCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGVfaAorI2RlZmluZSBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGVfaAorCisjaW5jbHVkZSAi
QXVkaW9Tb3VyY2VOb2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlIDogcHVibGljIEF1ZGlvU291cmNlTm9kZSB7CitwdWJsaWM6Cisg
ICAgLy8gVGhlc2UgYXJlIHRoZSBwb3NzaWJsZSBzdGF0ZXMgYW4gQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlIGNhbiBiZSBpbjoKKyAgICAvLworICAgIC8vIFVOU0NIRURVTEVEX1NUQVRFIC0gSW5p
dGlhbCBwbGF5YmFjayBzdGF0ZS4gQ3JlYXRlZCwgYnV0IG5vdCB5ZXQgc2NoZWR1bGVkLgorICAg
IC8vIFNDSEVEVUxFRF9TVEFURSAtIFNjaGVkdWxlZCB0byBwbGF5ICh2aWEgbm90ZU9uKCkgb3Ig
bm90ZUdyYWluT24oKSksIGJ1dCBub3QgeWV0IHBsYXlpbmcuCisgICAgLy8gUExBWUlOR19TVEFU
RSAtIEdlbmVyYXRpbmcgc291bmQuCisgICAgLy8gRklOSVNIRURfU1RBVEUgLSBGaW5pc2hlZCBn
ZW5lcmF0aW5nIHNvdW5kLgorICAgIC8vCisgICAgLy8gVGhlIHN0YXRlIGNhbiBvbmx5IHRyYW5z
aXRpb24gdG8gdGhlIG5leHQgc3RhdGUsIGV4Y2VwdCBmb3IgdGhlIEZJTklTSEVEX1NUQVRFIHdo
aWNoIGNhbgorICAgIC8vIG5ldmVyIGJlIGNoYW5nZWQuCisgICAgZW51bSBQbGF5YmFja1N0YXRl
IHsKKyAgICAgICAgLy8gVGhlc2UgbXVzdCBiZSBkZWZpbmVkIHdpdGggdGhlIHNhbWUgbmFtZXMg
YW5kIHZhbHVlcyBhcyBpbiB0aGUgLmlkbCBmaWxlLgorICAgICAgICBVTlNDSEVEVUxFRF9TVEFU
RSA9IDAsCisgICAgICAgIFNDSEVEVUxFRF9TVEFURSA9IDEsCisgICAgICAgIFBMQVlJTkdfU1RB
VEUgPSAyLAorICAgICAgICBGSU5JU0hFRF9TVEFURSA9IDMKKyAgICB9OworICAgIAorICAgIEF1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsK
KworICAgIC8vIFNjaGVkdWxpbmcuCisgICAgdm9pZCBub3RlT24oZG91YmxlIHdoZW4pOworICAg
IHZvaWQgbm90ZU9mZihkb3VibGUgd2hlbik7CisKKyAgICB1bnNpZ25lZCBzaG9ydCBwbGF5YmFj
a1N0YXRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KG1fcGxh
eWJhY2tTdGF0ZSk7IH0KKyAgICBib29sIGlzUGxheWluZ09yU2NoZWR1bGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGF5YmFja1N0YXRlID09IFBMQVlJTkdfU1RBVEUgfHwgbV9wbGF5YmFja1N0YXRl
ID09IFNDSEVEVUxFRF9TVEFURTsgfQorICAgIGJvb2wgaGFzRmluaXNoZWQoKSBjb25zdCB7IHJl
dHVybiBtX3BsYXliYWNrU3RhdGUgPT0gRklOSVNIRURfU1RBVEU7IH0KKworcHJvdGVjdGVkOgor
ICAgIC8vIEdldCBmcmFtZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGN1cnJlbnQgdGltZSBxdWFudHVt
LgorICAgIC8vIEVhY2ggZnJhbWUgdGltZSBpcyByZWxhdGl2ZSB0byB0aGUgY29udGV4dCdzIGN1
cnJlbnRTYW1wbGVGcmFtZSgpLgorICAgIC8vIHF1YW50dW1TdGFydEZyYW1lICAgICA6IFN0YXJ0
IGZyYW1lIG9mIHRoZSBjdXJyZW50IHRpbWUgcXVhbnR1bS4KKyAgICAvLyBxdWFudHVtRW5kRnJh
bWUgICAgICAgOiBFbmQgZnJhbWUgb2YgdGhlIGN1cnJlbnQgdGltZSBxdWFudHVtLgorICAgIC8v
IHN0YXJ0RnJhbWUgICAgICAgICAgICA6IFN0YXJ0IGZyYW1lIGZvciB0aGlzIHNvdXJjZS4KKyAg
ICAvLyBlbmRGcmFtZSAgICAgICAgICAgICAgOiBFbmQgZnJhbWUgZm9yIHRoaXMgc291cmNlLgor
ICAgIC8vIHF1YW50dW1GcmFtZU9mZnNldCAgICA6IE9mZnNldCBmcmFtZSBpbiB0aGlzIHRpbWUg
cXVhbnR1bSB0byBzdGFydCByZW5kZXJpbmcuCisgICAgLy8gbm9uU2lsZW50RnJhbWVzVG9Qcm9j
ZXNzIDogTnVtYmVyIG9mIGZyYW1lcyByZW5kZXJpbmcgbm9uLXNpbGVuY2UgKHdpbGwgYmUgPD0g
cXVhbnR1bUZyYW1lU2l6ZSkuCisgICAgdm9pZCB1cGRhdGVTY2hlZHVsaW5nSW5mbyhzaXplX3Qg
cXVhbnR1bUZyYW1lU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCYg
cXVhbnR1bVN0YXJ0RnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qm
IHF1YW50dW1FbmRGcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCYg
c3RhcnRGcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCYgZW5kRnJh
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QmIHF1YW50dW1GcmFtZU9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCYgbm9uU2lsZW50RnJh
bWVzVG9Qcm9jZXNzKTsKKworICAgIC8vIENhbGxlZCB3aGVuIHdlIGhhdmUgbm8gbW9yZSBzb3Vu
ZCB0byBwbGF5IG9yIHRoZSBub3RlT2ZmKCkgdGltZSBoYXMgYmVlbiByZWFjaGVkLgorICAgIHZv
aWQgZmluaXNoKCk7CisKKyAgICBQbGF5YmFja1N0YXRlIG1fcGxheWJhY2tTdGF0ZTsKKworICAg
IC8vIG1fc3RhcnRUaW1lIGlzIHRoZSB0aW1lIHRvIHN0YXJ0IHBsYXlpbmcgYmFzZWQgb24gdGhl
IGNvbnRleHQncyB0aW1lbGluZSAoMCBvciBhIHRpbWUgbGVzcyB0aGFuIHRoZSBjb250ZXh0J3Mg
Y3VycmVudCB0aW1lIG1lYW5zICJub3ciKS4KKyAgICBkb3VibGUgbV9zdGFydFRpbWU7IC8vIGlu
IHNlY29uZHMKKworICAgIC8vIG1fZW5kVGltZSBpcyB0aGUgdGltZSB0byBzdG9wIHBsYXlpbmcg
YmFzZWQgb24gdGhlIGNvbnRleHQncyB0aW1lbGluZSAoMCBvciBhIHRpbWUgbGVzcyB0aGFuIHRo
ZSBjb250ZXh0J3MgY3VycmVudCB0aW1lIG1lYW5zICJub3ciKS4KKyAgICAvLyBJZiBpdCBoYXNu
J3QgYmVlbiBzZXQgZXhwbGljaXRseSwgdGhlbiB0aGUgc291bmQgd2lsbCBub3Qgc3RvcCBwbGF5
aW5nIChpZiBsb29waW5nKSBvciB3aWxsIHN0b3Agd2hlbiB0aGUgZW5kIG9mIHRoZSBBdWRpb0J1
ZmZlcgorICAgIC8vIGhhcyBiZWVuIHJlYWNoZWQuCisgICAgZG91YmxlIG1fZW5kVGltZTsgLy8g
aW4gc2Vjb25kcworCisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBVbmtub3duVGltZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEF1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYzMzYWNhZTkzMGE0MDFiNjZmMzY2NGZjMWVlZDZj
MDc0NjAxYmJkMi4uYWEzMzhjMTE5NWMyNDJkMjQwZjhlM2QwNmViY2FiMTM3ZmU2Mjk0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtMTU4OCw2ICsxNTg4LDggQEAKICAgICAgICAgICAgICdNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAnLAorICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Tb3VyY2VOb2RlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMv
d2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dl
YmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI5YjYzNjljYjliMzdjZGIzNTIxN2Ux
ZTFhNzkyZmY5MDNhNzg1NjQuLmI1NzZlM2ZhMTJjM2RlYTNjMGQwZThkZTU2ZGM4YjNhMmE4NjIy
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTYzMDIsNiArNjMwMiw4IEBACiAJCUZEN0YyOTk3MTNENEMwQ0IwMEFEOTUzNSAv
KiBXYXZlU2hhcGVyUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRDdGMjk5MDEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nl
c3Nvci5oICovOyB9OwogCQlGRDgyRDdGNzEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVy
Tm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RDgyRDdGNTEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5jcHAgKi87IH07CiAJ
CUZEODJEN0Y4MTNENEM4QkQwMDRFNDM3MiAvKiBKU1dhdmVTaGFwZXJOb2RlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDgyRDdGNjEzRDRDOEJEMDA0
RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5oICovOyB9OworCQlGRDhDNDZFQjE1NDYwOEU3MDBB
NTkxMEMgLyogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEOEM0NkU5MTU0NjA4RTcwMEE1OTEwQyAvKiBB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwICovOyB9OworCQlGRDhDNDZFQzE1NDYwOEU3MDBB
NTkxMEMgLyogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDhDNDZFQTE1NDYwOEU3MDBBNTkxMEMgLyogQXVk
aW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggKi87IH07CiAJCUZEOEU5QkRGMTNENENEMkIwMDUwREM3
MiAvKiBKU1dhdmVTaGFwZXJOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEOEU5QkRFMTNENENEMkIwMDUwREM3MiAvKiBKU1dhdmVT
aGFwZXJOb2RlQ3VzdG9tLmNwcCAqLzsgfTsKIAkJRkRBMTVFOUQxMkIwM0VFMTAwM0E1ODNBIC8q
IEpTQXVkaW9CdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkRBMTVFODExMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9CdWZmZXIuY3BwICov
OyB9OwogCQlGREExNUU5RTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0J1ZmZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRBMTVFODIxMkIwM0VF
MTAwM0E1ODNBIC8qIEpTQXVkaW9CdWZmZXIuaCAqLzsgfTsKQEAgLTEzNTIzLDYgKzEzNTI1LDgg
QEAKIAkJRkQ3RjI5OTAxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2F2ZVNoYXBlclByb2Nlc3Nvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDgyRDdGNTEzRDRDOEJEMDA0RTQzNzIgLyog
SlNXYXZlU2hhcGVyTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1dhdmVTaGFwZXJOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQ4
MkQ3RjYxM0Q0QzhCRDAwNEU0MzcyIC8qIEpTV2F2ZVNoYXBlck5vZGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXYXZlU2hhcGVyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGRDhDNDZFOTE1NDYwOEU3MDBBNTkxMEMgLyogQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZE
OEM0NkVBMTU0NjA4RTcwMEE1OTEwQyAvKiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEOEU5QkRFMTNENENEMkIwMDUwREM3MiAv
KiBKU1dhdmVTaGFwZXJOb2RlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTV2F2ZVNoYXBlck5vZGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGREExNUU4MTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0J1ZmZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlvQnVmZmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRBMTVFODIxMkIwM0VFMTAwM0E1ODNBIC8q
IEpTQXVkaW9CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdWRp
b0J1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEzODYsNiArMjEzOTAs
OCBAQAogCQkJCUZEMzE1RkQ1MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb1Byb2Nlc3NpbmdFdmVu
dC5jcHAgKi8sCiAJCQkJRkQzMTVGRDYxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvUHJvY2Vzc2lu
Z0V2ZW50LmggKi8sCiAJCQkJRkQzMTVGRDcxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvUHJvY2Vz
c2luZ0V2ZW50LmlkbCAqLywKKwkJCQlGRDhDNDZFOTE1NDYwOEU3MDBBNTkxMEMgLyogQXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlLmNwcCAqLywKKwkJCQlGRDhDNDZFQTE1NDYwOEU3MDBBNTkxMEMg
LyogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggKi8sCiAJCQkJRkQzMTVGRDgxMkIwMjY3NjAw
QzFBMzU5IC8qIEF1ZGlvU291cmNlTm9kZS5oICovLAogCQkJCUZEMzE1RkQ5MTJCMDI2NzYwMEMx
QTM1OSAvKiBBdWRpb1NvdXJjZU5vZGUuaWRsICovLAogCQkJCUZEMzE1RkRBMTJCMDI2NzYwMEMx
QTM1OSAvKiBCaXF1YWREU1BLZXJuZWwuY3BwICovLApAQCAtMjQ4MDQsNiArMjQ4MTAsNyBAQAog
CQkJCUNFQ0FERkM5MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRUNBREZDRTE1Mzc3OTFEMDBFMzcwNjggLyogVGV4dEluc2VydGlvbkJh
c2VDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5ODMxQUU0QTE1NDIyNUM5MDBGRTI2NDQg
LyogUmVmZXJyZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLAorCQkJCUZEOEM0NkVDMTU0NjA4RTcw
MEE1OTEwQyAvKiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAt
Mjc4MTUsNiArMjc4MjIsNyBAQAogCQkJCUNFQ0FERkM2MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0
YXRpb25BbHRlcm5hdGl2ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRUNBREZDODE1Mzc3OEZG
MDBFMzcwNjggLyogRGljdGF0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRUNB
REZDRDE1Mzc3OTFEMDBFMzcwNjggLyogVGV4dEluc2VydGlvbkJhc2VDb21tYW5kLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUZEOEM0NkVCMTU0NjA4RTcwMEE1OTEwQyAvKiBBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138453</attachid>
            <date>2012-04-23 16:24:37 -0700</date>
            <delta_ts>2012-04-27 10:49:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84639-20120423162436.patch</filename>
            <type>text/plain</type>
            <size>28211</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0OTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTkwYjAyODAyYjZkNWY0
MTg0M2JjNzJhYTRmMmQ5OTc4NjE2NDc3Yy4uM2VjYjBmNWI3ZDRmMDlhNWQ5OGQxMTYwY2FlZGM0
NWI1ZjIzNWIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA0LTIzICBDaHJp
cyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmUtZmFjdG9yIHNjaGVk
dWxpbmcgbG9naWMgZnJvbSBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgaW50byBBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg0NjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUGxheWJhY2sgbG9naWMgaW52b2x2aW5nIG5vdGVPbigpLCBub3RlT2ZmKCksIGFuZCBwbGF5
YmFja1N0YXRlIHdlcmUgaW50ZXJ0d2luZWQgd2l0aAorICAgICAgICB0aGUgQXVkaW9CdWZmZXJT
b3VyY2VOb2RlJ3MgYnVmZmVyIHBsYXliYWNrIGNvZGUuICBUaGVzZSBhcmUgbW9yZSBnZW5lcmFs
IGNvbmNlcHRzIGFuZAorICAgICAgICBtYXkgYmUgaW1wbGVtZW50ZWQgc2VwYXJhdGVseSBpbiBh
bm90aGVyIGNsYXNzIGNhbGxlZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGxheW91dCB0ZXN0cy4KKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgIEFkZCBBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGUgZmlsZXMgdG8gbWFrZWZpbGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAg
ICAgICAgUmUtZmFjdG9yIHNvbWUgbWVtYmVyIHZhcmlhYmxlcyBpbnRvIG5ldyBiYXNlIGNsYXNz
IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS4KKworICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZm
ZXJTb3VyY2VOb2RlOjpwcm9jZXNzKToKKyAgICAgICAgUmUtZmFjdG9yIHNjaGVkdWxpbmcgbG9n
aWMgaW50byBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oOgorICAgICAgICAoQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlKToKKyAgICAgICAgU2ltcGxpZnkgYnkgcmUtZmFjdG9yaW5nIHNjaGVkdWxpbmcgbG9n
aWMgaW50byBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OkF1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGU6OnVwZGF0ZVNjaGVkdWxpbmdJbmZvKToKKyAgICAgICAgR2V0IGZyYW1lIGluZm9y
bWF0aW9uIGZvciB0aGUgY3VycmVudCB0aW1lIHF1YW50dW0uCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6bm90ZU9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6bm90ZU9mZik6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OnBsYXliYWNrU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjppc1BsYXlpbmdPclNjaGVkdWxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6Omhhc0ZpbmlzaGVkKToKKyAg
ICAgICAgUmUtZmFjdG9yZWQgZnJvbSBBdWRpb0J1ZmZlclNvdXJjZU5vZGUuCisKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICBBZGQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIGZpbGVzIHRvIG1ha2Vm
aWxlcy4KKyAgICAKIDIwMTItMDQtMjMgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtWOF1bUmVmYWN0b3JpbmddIFJlbW92ZSBWOFByb3h5Ojp0b1Y4KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDcwNjgzNmExNTNmNjMxYWRkOThhYTdm
MWRmNTk4ZmM5MjJiODRlODQuLjYxMjg4YWJlYTE2OGI4MzNlZGQ0ODgzZWY4MjBjM2VhNzVlZDZl
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTQ4OSw2ICs1NDg5LDggQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvUGFyYW1UaW1lbGluZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvUHJvY2Vzc2luZ0V2ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1Byb2Nlc3NpbmdFdmVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Tb3VyY2VOb2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQmlxdWFkRFNQS2VybmVsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9CaXF1YWREU1BLZXJuZWwuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5kZXgg
ZTljOTNhZTMzMmU1M2YwMjlhYmMyMjlmOWMxYTU5MTFmMjY3OTI2NS4uNDNhOWNiNDhhYzVmNDE0
Y2ZkOWE4NTIwY2I4NGNiYmY2YzU2ZWI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNDMsNyAr
NDMsNiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25z
dCBkb3VibGUgRGVmYXVsdEdyYWluRHVyYXRpb24gPSAwLjAyMDsgLy8gMjBtcwotY29uc3QgZG91
YmxlIFVua25vd25UaW1lID0gLTE7CiAKIC8vIEFyYml0cmFyeSB1cHBlciBsaW1pdCBvbiBwbGF5
YmFjayByYXRlLgogLy8gSGlnaGVyIHRoYW4gZXhwZWN0ZWQgcmF0ZXMgY2FuIGJlIHVzZWZ1bCB3
aGVuIHBsYXlpbmcgYmFjayBvdmVyc2FtcGxlZCBidWZmZXJzCkBAIC01NiwxOCArNTUsMTUgQEAg
UGFzc1JlZlB0cjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6
Y3JlYXRlKEF1ZGlvQ29udGV4dCogY28KIH0KIAogQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRp
b0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQotICAgIDogQXVkaW9Tb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCisgICAgOiBBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fYnVmZmVy
KDApCiAgICAgLCBtX2lzTG9vcGluZyhmYWxzZSkKLSAgICAsIG1fc3RhcnRUaW1lKDAuMCkKLSAg
ICAsIG1fZW5kVGltZShVbmtub3duVGltZSkKICAgICAsIG1fdmlydHVhbFJlYWRJbmRleCgwKQog
ICAgICwgbV9pc0dyYWluKGZhbHNlKQogICAgICwgbV9ncmFpbk9mZnNldCgwLjApCiAgICAgLCBt
X2dyYWluRHVyYXRpb24oRGVmYXVsdEdyYWluRHVyYXRpb24pCiAgICAgLCBtX2xhc3RHYWluKDEu
MCkKICAgICAsIG1fcGFubmVyTm9kZSgwKQotICAgICwgbV9wbGF5YmFja1N0YXRlKFVOU0NIRURV
TEVEX1NUQVRFKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQXVkaW9CdWZmZXJTb3VyY2Up
OwogCkBAIC0xMDAsMzcgKzk2LDMyIEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpwcm9j
ZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgLy8gVGhlIGF1ZGlvIHRocmVhZCBjYW4n
dCBibG9jayBvbiB0aGlzIGxvY2ssIHNvIHdlIGNhbGwgdHJ5TG9jaygpIGluc3RlYWQuCiAgICAg
TXV0ZXhUcnlMb2NrZXIgdHJ5TG9ja2VyKG1fcHJvY2Vzc0xvY2spOwogICAgIGlmICh0cnlMb2Nr
ZXIubG9ja2VkKCkpIHsKLSAgICAgICAgLy8gQ2hlY2sgaWYgaXQncyB0aW1lIHRvIHN0YXJ0IHBs
YXlpbmcuCi0gICAgICAgIGRvdWJsZSBzYW1wbGVSYXRlID0gdGhpcy0+c2FtcGxlUmF0ZSgpOwot
ICAgICAgICBzaXplX3QgcXVhbnR1bVN0YXJ0RnJhbWUgPSBjb250ZXh0KCktPmN1cnJlbnRTYW1w
bGVGcmFtZSgpOwotICAgICAgICBzaXplX3QgcXVhbnR1bUVuZEZyYW1lID0gcXVhbnR1bVN0YXJ0
RnJhbWUgKyBmcmFtZXNUb1Byb2Nlc3M7Ci0gICAgICAgIHNpemVfdCBzdGFydEZyYW1lID0gQXVk
aW9VdGlsaXRpZXM6OnRpbWVUb1NhbXBsZUZyYW1lKG1fc3RhcnRUaW1lLCBzYW1wbGVSYXRlKTsK
LSAgICAgICAgc2l6ZV90IGVuZEZyYW1lID0gbV9lbmRUaW1lID09IFVua25vd25UaW1lID8gMCA6
IEF1ZGlvVXRpbGl0aWVzOjp0aW1lVG9TYW1wbGVGcmFtZShtX2VuZFRpbWUsIHNhbXBsZVJhdGUp
OwotCi0gICAgICAgIC8vIElmIHdlIGtub3cgdGhlIGVuZCB0aW1lIGFuZCBpdCdzIGFscmVhZHkg
cGFzc2VkLCB0aGVuIGRvbid0IGJvdGhlciBkb2luZyBhbnkgbW9yZSByZW5kZXJpbmcgdGhpcyBj
eWNsZS4KLSAgICAgICAgaWYgKG1fZW5kVGltZSAhPSBVbmtub3duVGltZSAmJiBlbmRGcmFtZSA8
PSBxdWFudHVtU3RhcnRGcmFtZSkgewotICAgICAgICAgICAgbV92aXJ0dWFsUmVhZEluZGV4ID0g
MDsKLSAgICAgICAgICAgIGZpbmlzaCgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBp
ZiAobV9wbGF5YmFja1N0YXRlID09IFVOU0NIRURVTEVEX1NUQVRFIHx8IG1fcGxheWJhY2tTdGF0
ZSA9PSBGSU5JU0hFRF9TVEFURQotICAgICAgICAgICAgfHwgIWJ1ZmZlcigpIHx8IHN0YXJ0RnJh
bWUgPj0gcXVhbnR1bUVuZEZyYW1lKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogY2FuIG9wdGlt
aXplIGhlcmUgYnkgcHJvcGFnYXRpbmcgc2lsZW50IGhpbnQgaW5zdGVhZCBvZiBmb3JjaW5nIHRo
ZSB3aG9sZSBjaGFpbiB0byBwcm9jZXNzIHNpbGVuY2UuCisgICAgICAgIGlmICghYnVmZmVyKCkp
IHsKICAgICAgICAgICAgIG91dHB1dEJ1cy0+emVybygpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fcGxheWJhY2tTdGF0ZSA9PSBTQ0hFRFVMRURfU1RB
VEUpIHsKLSAgICAgICAgICAgIC8vIEluY3JlbWVudCB0aGUgYWN0aXZlIHNvdXJjZSBjb3VudCBv
bmx5IGlmIHdlJ3JlIHRyYW5zaXRpb25pbmcgZnJvbSBTQ0hFRFVMRURfU1RBVEUgdG8gUExBWUlO
R19TVEFURS4KLSAgICAgICAgICAgIG1fcGxheWJhY2tTdGF0ZSA9IFBMQVlJTkdfU1RBVEU7Ci0g
ICAgICAgICAgICBjb250ZXh0KCktPmluY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCk7CisgICAg
ICAgIHNpemVfdCBxdWFudHVtU3RhcnRGcmFtZTsKKyAgICAgICAgc2l6ZV90IHF1YW50dW1FbmRG
cmFtZTsKKyAgICAgICAgc2l6ZV90IHN0YXJ0RnJhbWU7CisgICAgICAgIHNpemVfdCBlbmRGcmFt
ZTsKKyAgICAgICAgc2l6ZV90IHF1YW50dW1GcmFtZU9mZnNldDsKKyAgICAgICAgc2l6ZV90IGJ1
ZmZlckZyYW1lc1RvUHJvY2VzczsKKworICAgICAgICB1cGRhdGVTY2hlZHVsaW5nSW5mbyhmcmFt
ZXNUb1Byb2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YW50dW1TdGFydEZy
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWFudHVtRW5kRnJhbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0RnJhbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVuZEZyYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWFudHVt
RnJhbWVPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlckZyYW1lc1Rv
UHJvY2Vzcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBpZiAoIWJ1
ZmZlckZyYW1lc1RvUHJvY2VzcykgeworICAgICAgICAgICAgb3V0cHV0QnVzLT56ZXJvKCk7Cisg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHNpemVfdCBx
dWFudHVtRnJhbWVPZmZzZXQgPSBzdGFydEZyYW1lID4gcXVhbnR1bVN0YXJ0RnJhbWUgPyBzdGFy
dEZyYW1lIC0gcXVhbnR1bVN0YXJ0RnJhbWUgOiAwOwotICAgICAgICBxdWFudHVtRnJhbWVPZmZz
ZXQgPSBtaW4ocXVhbnR1bUZyYW1lT2Zmc2V0LCBmcmFtZXNUb1Byb2Nlc3MpOyAvLyBjbGFtcCB0
byB2YWxpZCByYW5nZQotICAgICAgICBzaXplX3QgYnVmZmVyRnJhbWVzVG9Qcm9jZXNzID0gZnJh
bWVzVG9Qcm9jZXNzIC0gcXVhbnR1bUZyYW1lT2Zmc2V0OwogCi0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBvdXRwdXRCdXMtPm51bWJlck9mQ2hhbm5lbHMoKTsgKytpKSAKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG91dHB1dEJ1cy0+bnVtYmVyT2ZDaGFubmVscygp
OyArK2kpCiAgICAgICAgICAgICBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHNbaV0gPSBvdXRwdXRCdXMt
PmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCk7CiAKICAgICAgICAgLy8gUmVuZGVyIGJ5IHJlYWRp
bmcgZGlyZWN0bHkgZnJvbSB0aGUgYnVmZmVyLgpAQCAtMzQ3LDE2ICszMzgsNiBAQCB2b2lkIEF1
ZGlvQnVmZmVyU291cmNlTm9kZTo6cmVzZXQoKQogICAgIG1fbGFzdEdhaW4gPSBnYWluKCktPnZh
bHVlKCk7CiB9CiAKLXZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpmaW5pc2goKQotewotICAg
IGlmIChtX3BsYXliYWNrU3RhdGUgIT0gRklOSVNIRURfU1RBVEUpIHsKLSAgICAgICAgLy8gTGV0
IHRoZSBjb250ZXh0IGRlcmVmZXJlbmNlIHRoaXMgQXVkaW9Ob2RlLgotICAgICAgICBjb250ZXh0
KCktPm5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcodGhpcyk7Ci0gICAgICAgIG1fcGxheWJh
Y2tTdGF0ZSA9IEZJTklTSEVEX1NUQVRFOwotICAgICAgICBjb250ZXh0KCktPmRlY3JlbWVudEFj
dGl2ZVNvdXJjZUNvdW50KCk7Ci0gICAgfQotfQotCiBib29sIEF1ZGlvQnVmZmVyU291cmNlTm9k
ZTo6c2V0QnVmZmVyKEF1ZGlvQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKQEAgLTM5NCwxOCArMzc1LDYgQEAgdW5zaWduZWQgQXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpudW1iZXJPZkNoYW5uZWxzKCkKICAgICByZXR1cm4gb3V0cHV0KDApLT5udW1iZXJPZkNo
YW5uZWxzKCk7CiB9CiAKLXZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpub3RlT24oZG91Ymxl
IHdoZW4pCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAobV9wbGF5YmFj
a1N0YXRlICE9IFVOU0NIRURVTEVEX1NUQVRFKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2lz
R3JhaW4gPSBmYWxzZTsKLSAgICBtX3N0YXJ0VGltZSA9IHdoZW47Ci0gICAgbV92aXJ0dWFsUmVh
ZEluZGV4ID0gMDsKLSAgICBtX3BsYXliYWNrU3RhdGUgPSBTQ0hFRFVMRURfU1RBVEU7Ci19Ci0K
IHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpub3RlR3JhaW5Pbihkb3VibGUgd2hlbiwgZG91
YmxlIGdyYWluT2Zmc2V0LCBkb3VibGUgZ3JhaW5EdXJhdGlvbikKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwpAQCAtNDQzLDE2ICs0MTIsNiBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNl
Tm9kZTo6bm90ZUdyYWluT24oZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgZG91Ymxl
CiAgICAgbV9wbGF5YmFja1N0YXRlID0gU0NIRURVTEVEX1NUQVRFOwogfQogCi12b2lkIEF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6bm90ZU9mZihkb3VibGUgd2hlbikKLXsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotICAgIGlmICghKG1fcGxheWJhY2tTdGF0ZSA9PSBTQ0hFRFVMRURfU1RB
VEUgfHwgbV9wbGF5YmFja1N0YXRlID09IFBMQVlJTkdfU1RBVEUpKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgd2hlbiA9IG1heCgwLjAsIHdoZW4pOwotICAgIG1fZW5kVGltZSA9IHdoZW47
Ci19Ci0KIGRvdWJsZSBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnRvdGFsUGl0Y2hSYXRlKCkKIHsK
ICAgICBkb3VibGUgZG9wcGxlclJhdGUgPSAxLjA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAppbmRleCA5ZmRiN2Y1
MGQ2ZTI0NTVlNmViMjM4NjdlNmZhZWM1YzE0OTNkZDU4Li42Zjc2ZDcwZWI4NDEwMGY4ZTUxYzVj
MDBkMTUzOGQ5NTY3MTMyZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNp
bmNsdWRlICJBdWRpb0J1cy5oIgogI2luY2x1ZGUgIkF1ZGlvR2Fpbi5oIgogI2luY2x1ZGUgIkF1
ZGlvUGFubmVyTm9kZS5oIgotI2luY2x1ZGUgIkF1ZGlvU291cmNlTm9kZS5oIgorI2luY2x1ZGUg
IkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpA
QCAtNDIsMjUgKzQyLDggQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogLy8gQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlIGlzIGFuIEF1ZGlvTm9kZSByZXByZXNlbnRpbmcgYW4gYXVkaW8gc291cmNlIGZyb20g
YW4gaW4tbWVtb3J5IGF1ZGlvIGFzc2V0IHJlcHJlc2VudGVkIGJ5IGFuIEF1ZGlvQnVmZmVyLgog
Ly8gSXQgZ2VuZXJhbGx5IHdpbGwgYmUgdXNlZCBmb3Igc2hvcnQgc291bmRzIHdoaWNoIHJlcXVp
cmUgYSBoaWdoIGRlZ3JlZSBvZiBzY2hlZHVsaW5nIGZsZXhpYmlsaXR5IChjYW4gcGxheWJhY2sg
aW4gcmh5dGhtaWNhbGx5IHBlcmZlY3Qgd2F5cykuCiAKLWNsYXNzIEF1ZGlvQnVmZmVyU291cmNl
Tm9kZSA6IHB1YmxpYyBBdWRpb1NvdXJjZU5vZGUgewotcHVibGljOgotICAgIC8vIFRoZXNlIGFy
ZSB0aGUgcG9zc2libGUgc3RhdGVzIGFuIEF1ZGlvQnVmZmVyU291cmNlTm9kZSBjYW4gYmUgaW46
Ci0gICAgLy8KLSAgICAvLyBVTlNDSEVEVUxFRF9TVEFURSAtIEluaXRpYWwgcGxheWJhY2sgc3Rh
dGUuIENyZWF0ZWQsIGJ1dCBub3QgeWV0IHNjaGVkdWxlZC4KLSAgICAvLyBTQ0hFRFVMRURfU1RB
VEUgLSBTY2hlZHVsZWQgdG8gcGxheSAodmlhIG5vdGVPbigpIG9yIG5vdGVHcmFpbk9uKCkpLCBi
dXQgbm90IHlldCBwbGF5aW5nLgotICAgIC8vIFBMQVlJTkdfU1RBVEUgLSBHZW5lcmF0aW5nIHNv
dW5kLgotICAgIC8vIEZJTklTSEVEX1NUQVRFIC0gRmluaXNoZWQgZ2VuZXJhdGluZyBzb3VuZC4K
LSAgICAvLwotICAgIC8vIFRoZSBzdGF0ZSBjYW4gb25seSB0cmFuc2l0aW9uIHRvIHRoZSBuZXh0
IHN0YXRlLCBleGNlcHQgZm9yIHRoZSBGSU5JU0hFRF9TVEFURSB3aGljaCBjYW4KLSAgICAvLyBu
ZXZlciBiZSBjaGFuZ2VkLgotICAgIGVudW0gUGxheWJhY2tTdGF0ZSB7Ci0gICAgICAgIC8vIFRo
ZXNlIG11c3QgYmUgZGVmaW5lZCB3aXRoIHRoZSBzYW1lIG5hbWVzIGFuZCB2YWx1ZXMgYXMgaW4g
dGhlIC5pZGwgZmlsZS4KLSAgICAgICAgVU5TQ0hFRFVMRURfU1RBVEUgPSAwLAotICAgICAgICBT
Q0hFRFVMRURfU1RBVEUgPSAxLAotICAgICAgICBQTEFZSU5HX1NUQVRFID0gMiwKLSAgICAgICAg
RklOSVNIRURfU1RBVEUgPSAzCi0gICAgfTsKLSAgICAKK2NsYXNzIEF1ZGlvQnVmZmVyU291cmNl
Tm9kZSA6IHB1YmxpYyBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUgeworcHVibGljOiAgICAKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0Nv
bnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZpcnR1YWwgfkF1ZGlvQnVmZmVyU291
cmNlTm9kZSgpOwpAQCAtODAsMTMgKzYzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICAKICAgICAvLyBQbGF5LXN0YXRlCiAgICAgLy8gbm90ZU9uKCksIG5vdGVHcmFpbk9uKCksIGFu
ZCBub3RlT2ZmKCkgbXVzdCBhbGwgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotICAg
IHZvaWQgbm90ZU9uKGRvdWJsZSB3aGVuKTsKICAgICB2b2lkIG5vdGVHcmFpbk9uKGRvdWJsZSB3
aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIGRvdWJsZSBncmFpbkR1cmF0aW9uKTsKLSAgICB2b2lk
IG5vdGVPZmYoZG91YmxlIHdoZW4pOwotCi0gICAgdW5zaWduZWQgc2hvcnQgcGxheWJhY2tTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PihtX3BsYXliYWNr
U3RhdGUpOyB9Ci0gICAgYm9vbCBpc1BsYXlpbmdPclNjaGVkdWxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGxheWJhY2tTdGF0ZSA9PSBQTEFZSU5HX1NUQVRFIHx8IG1fcGxheWJhY2tTdGF0ZSA9PSBT
Q0hFRFVMRURfU1RBVEU7IH0KLSAgICBib29sIGhhc0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4g
bV9wbGF5YmFja1N0YXRlID09IEZJTklTSEVEX1NUQVRFOyB9CiAKICAgICAvLyBOb3RlOiB0aGUg
YXR0cmlidXRlIHdhcyBvcmlnaW5hbGx5IGV4cG9zZWQgYXMgLmxvb3BpbmcsIGJ1dCB0byBiZSBt
b3JlIGNvbnNpc3RlbnQgaW4gbmFtaW5nIHdpdGggPGF1ZGlvPgogICAgIC8vIGFuZCB3aXRoIGhv
dyBpdCdzIGRlc2NyaWJlZCBpbiB0aGUgc3BlY2lmaWNhdGlvbiwgdGhlIHByb3BlciBhdHRyaWJ1
dGUgbmFtZSBpcyAubG9vcApAQCAtMTMwLDE0ICsxMDcsNiBAQCBwcml2YXRlOgogICAgIC8vIElm
IHRydWUsIGl0IHdpbGwgd3JhcCBhcm91bmQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgZWFj
aCB0aW1lIGl0IHJlYWNoZXMgdGhlIGVuZC4KICAgICBib29sIG1faXNMb29waW5nOwogCi0gICAg
Ly8gbV9zdGFydFRpbWUgaXMgdGhlIHRpbWUgdG8gc3RhcnQgcGxheWluZyBiYXNlZCBvbiB0aGUg
Y29udGV4dCdzIHRpbWVsaW5lICgwLjAgb3IgYSB0aW1lIGxlc3MgdGhhbiB0aGUgY29udGV4dCdz
IGN1cnJlbnQgdGltZSBtZWFucyAibm93IikuCi0gICAgZG91YmxlIG1fc3RhcnRUaW1lOyAvLyBp
biBzZWNvbmRzCi0KLSAgICAvLyBtX2VuZFRpbWUgaXMgdGhlIHRpbWUgdG8gc3RvcCBwbGF5aW5n
IGJhc2VkIG9uIHRoZSBjb250ZXh0J3MgdGltZWxpbmUgKDAuMCBvciBhIHRpbWUgbGVzcyB0aGFu
IHRoZSBjb250ZXh0J3MgY3VycmVudCB0aW1lIG1lYW5zICJub3ciKS4KLSAgICAvLyBJZiBpdCBo
YXNuJ3QgYmVlbiBzZXQgZXhwbGljaXRseSwgdGhlbiB0aGUgc291bmQgd2lsbCBub3Qgc3RvcCBw
bGF5aW5nIChpZiBsb29waW5nKSBvciB3aWxsIHN0b3Agd2hlbiB0aGUgZW5kIG9mIHRoZSBBdWRp
b0J1ZmZlcgotICAgIC8vIGhhcyBiZWVuIHJlYWNoZWQuCi0gICAgZG91YmxlIG1fZW5kVGltZTsg
Ly8gaW4gc2Vjb25kcwotICAgIAogICAgIC8vIG1fdmlydHVhbFJlYWRJbmRleCBpcyBhIHNhbXBs
ZS1mcmFtZSBpbmRleCBpbnRvIG91ciBidWZmZXIgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHBs
YXliYWNrIHBvc2l0aW9uLgogICAgIC8vIFNpbmNlIGl0J3MgZmxvYXRpbmctcG9pbnQsIGl0IGhh
cyBzdWItc2FtcGxlIGFjY3VyYWN5LgogICAgIGRvdWJsZSBtX3ZpcnR1YWxSZWFkSW5kZXg7CkBA
IC0xNTksMTEgKzEyOCw2IEBAIHByaXZhdGU6CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyBw
cm9jZXNzKCkgd2l0aCBzZXRCdWZmZXIoKSB3aGljaCBjYW4gY2F1c2UgZHluYW1pYyBjaGFubmVs
IGNvdW50IGNoYW5nZXMuCiAgICAgbXV0YWJsZSBNdXRleCBtX3Byb2Nlc3NMb2NrOwotCi0gICAg
Ly8gSGFuZGxlcyB0aGUgdGltZSB3aGVuIHdlIHJlYWNoIHRoZSBlbmQgb2Ygc2FtcGxlIGRhdGEg
KG5vbi1sb29waW5nKSBvciB0aGUgbm90ZU9mZigpIHRpbWUgaGFzIGJlZW4gcmVhY2hlZC4KLSAg
ICB2b2lkIGZpbmlzaCgpOwotCi0gICAgUGxheWJhY2tTdGF0ZSBtX3BsYXliYWNrU3RhdGU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTU3MTAyNWQ1NGFjMmIzNGFlZGFkMTMyZDA4NDRmYjMzZWIwYzk4ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlLmNwcApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRpb1NjaGVk
dWxlZFNvdXJjZU5vZGUuaCIKKworI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgorI2luY2x1ZGUg
IkF1ZGlvVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY29uc3QgZG91YmxlIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6VW5rbm93blRpbWUg
PSAtMTsKKworQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIDogQXVkaW9T
b3VyY2VOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCisgICAgLCBtX3BsYXliYWNrU3RhdGUoVU5T
Q0hFRFVMRURfU1RBVEUpCisgICAgLCBtX3N0YXJ0VGltZSgwKQorICAgICwgbV9lbmRUaW1lKFVu
a25vd25UaW1lKQoreworfQorCit2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6dXBkYXRl
U2NoZWR1bGluZ0luZm8oc2l6ZV90IHF1YW50dW1GcmFtZVNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90JiBxdWFudHVtU3RhcnRG
cmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QmIHF1YW50dW1FbmRGcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QmIHN0YXJ0RnJhbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90JiBlbmRGcmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QmIHF1YW50dW1GcmFtZU9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QmIG5vblNpbGVudEZyYW1lc1RvUHJvY2VzcykKK3sK
KyAgICBBU1NFUlQocXVhbnR1bUZyYW1lU2l6ZSA9PSBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXpl
SW5GcmFtZXMpOworICAgIGlmIChxdWFudHVtRnJhbWVTaXplICE9IEF1ZGlvTm9kZTo6UHJvY2Vz
c2luZ1NpemVJbkZyYW1lcykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIC8vIENoZWNrIGlm
IGl0J3MgdGltZSB0byBzdGFydCBwbGF5aW5nLgorICAgIGRvdWJsZSBzYW1wbGVSYXRlID0gdGhp
cy0+c2FtcGxlUmF0ZSgpOworICAgIHF1YW50dW1TdGFydEZyYW1lID0gY29udGV4dCgpLT5jdXJy
ZW50U2FtcGxlRnJhbWUoKTsKKyAgICBxdWFudHVtRW5kRnJhbWUgPSBxdWFudHVtU3RhcnRGcmFt
ZSArIHF1YW50dW1GcmFtZVNpemU7CisgICAgc3RhcnRGcmFtZSA9IEF1ZGlvVXRpbGl0aWVzOjp0
aW1lVG9TYW1wbGVGcmFtZShtX3N0YXJ0VGltZSwgc2FtcGxlUmF0ZSk7CisgICAgZW5kRnJhbWUg
PSBtX2VuZFRpbWUgPT0gVW5rbm93blRpbWUgPyAwIDogQXVkaW9VdGlsaXRpZXM6OnRpbWVUb1Nh
bXBsZUZyYW1lKG1fZW5kVGltZSwgc2FtcGxlUmF0ZSk7CisKKyAgICAvLyBJZiB3ZSBrbm93IHRo
ZSBlbmQgdGltZSBhbmQgaXQncyBhbHJlYWR5IHBhc3NlZCwgdGhlbiBkb24ndCBib3RoZXIgZG9p
bmcgYW55IG1vcmUgcmVuZGVyaW5nIHRoaXMgY3ljbGUuCisgICAgaWYgKG1fZW5kVGltZSAhPSBV
bmtub3duVGltZSAmJiBlbmRGcmFtZSA8PSBxdWFudHVtU3RhcnRGcmFtZSkKKyAgICAgICAgZmlu
aXNoKCk7CisKKyAgICBpZiAobV9wbGF5YmFja1N0YXRlID09IFVOU0NIRURVTEVEX1NUQVRFIHx8
IG1fcGxheWJhY2tTdGF0ZSA9PSBGSU5JU0hFRF9TVEFURSB8fCBzdGFydEZyYW1lID49IHF1YW50
dW1FbmRGcmFtZSkgeworICAgICAgICAvLyBPdXRwdXQgc2lsZW5jZS4KKyAgICAgICAgbm9uU2ls
ZW50RnJhbWVzVG9Qcm9jZXNzID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChtX3BsYXliYWNrU3RhdGUgPT0gU0NIRURVTEVEX1NUQVRFKSB7CisgICAgICAgIC8vIEluY3Jl
bWVudCB0aGUgYWN0aXZlIHNvdXJjZSBjb3VudCBvbmx5IGlmIHdlJ3JlIHRyYW5zaXRpb25pbmcg
ZnJvbSBTQ0hFRFVMRURfU1RBVEUgdG8gUExBWUlOR19TVEFURS4KKyAgICAgICAgbV9wbGF5YmFj
a1N0YXRlID0gUExBWUlOR19TVEFURTsKKyAgICAgICAgY29udGV4dCgpLT5pbmNyZW1lbnRBY3Rp
dmVTb3VyY2VDb3VudCgpOworICAgIH0KKworICAgIHF1YW50dW1GcmFtZU9mZnNldCA9IHN0YXJ0
RnJhbWUgPiBxdWFudHVtU3RhcnRGcmFtZSA/IHN0YXJ0RnJhbWUgLSBxdWFudHVtU3RhcnRGcmFt
ZSA6IDA7CisgICAgcXVhbnR1bUZyYW1lT2Zmc2V0ID0gbWluKHF1YW50dW1GcmFtZU9mZnNldCwg
cXVhbnR1bUZyYW1lU2l6ZSk7IC8vIGNsYW1wIHRvIHZhbGlkIHJhbmdlCisgICAgbm9uU2lsZW50
RnJhbWVzVG9Qcm9jZXNzID0gcXVhbnR1bUZyYW1lU2l6ZSAtIHF1YW50dW1GcmFtZU9mZnNldDsK
KworICAgIHJldHVybjsKK30KKwordm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6Om5vdGVP
bihkb3VibGUgd2hlbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmICht
X3BsYXliYWNrU3RhdGUgIT0gVU5TQ0hFRFVMRURfU1RBVEUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fc3RhcnRUaW1lID0gd2hlbjsKKyAgICBtX3BsYXliYWNrU3RhdGUgPSBTQ0hFRFVMRURf
U1RBVEU7Cit9CisKK3ZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpub3RlT2ZmKGRvdWJs
ZSB3aGVuKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCEobV9wbGF5
YmFja1N0YXRlID09IFNDSEVEVUxFRF9TVEFURSB8fCBtX3BsYXliYWNrU3RhdGUgPT0gUExBWUlO
R19TVEFURSkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICB3aGVuID0gbWF4KDAuMCwgd2hl
bik7CisgICAgbV9lbmRUaW1lID0gd2hlbjsKK30KKwordm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGU6OmZpbmlzaCgpCit7CisgICAgaWYgKG1fcGxheWJhY2tTdGF0ZSAhPSBGSU5JU0hFRF9T
VEFURSkgeworICAgICAgICAvLyBMZXQgdGhlIGNvbnRleHQgZGVyZWZlcmVuY2UgdGhpcyBBdWRp
b05vZGUuCisgICAgICAgIGNvbnRleHQoKS0+bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyh0
aGlzKTsKKyAgICAgICAgbV9wbGF5YmFja1N0YXRlID0gRklOSVNIRURfU1RBVEU7CisgICAgICAg
IGNvbnRleHQoKS0+ZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKTsKKyAgICB9Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWNlZWM2ZTAwNjNhNGI1YTIzYjhiOWRlN2M1MDA0
MTUxZDQ1MDUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaApAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlX2gKKyNkZWZpbmUgQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlX2gKKworI2luY2x1ZGUgIkF1ZGlvU291cmNlTm9kZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSA6IHB1YmxpYyBBdWRpb1Nv
dXJjZU5vZGUgeworcHVibGljOgorICAgIC8vIFRoZXNlIGFyZSB0aGUgcG9zc2libGUgc3RhdGVz
IGFuIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSBjYW4gYmUgaW46CisgICAgLy8KKyAgICAvLyBV
TlNDSEVEVUxFRF9TVEFURSAtIEluaXRpYWwgcGxheWJhY2sgc3RhdGUuIENyZWF0ZWQsIGJ1dCBu
b3QgeWV0IHNjaGVkdWxlZC4KKyAgICAvLyBTQ0hFRFVMRURfU1RBVEUgLSBTY2hlZHVsZWQgdG8g
cGxheSAodmlhIG5vdGVPbigpIG9yIG5vdGVHcmFpbk9uKCkpLCBidXQgbm90IHlldCBwbGF5aW5n
LgorICAgIC8vIFBMQVlJTkdfU1RBVEUgLSBHZW5lcmF0aW5nIHNvdW5kLgorICAgIC8vIEZJTklT
SEVEX1NUQVRFIC0gRmluaXNoZWQgZ2VuZXJhdGluZyBzb3VuZC4KKyAgICAvLworICAgIC8vIFRo
ZSBzdGF0ZSBjYW4gb25seSB0cmFuc2l0aW9uIHRvIHRoZSBuZXh0IHN0YXRlLCBleGNlcHQgZm9y
IHRoZSBGSU5JU0hFRF9TVEFURSB3aGljaCBjYW4KKyAgICAvLyBuZXZlciBiZSBjaGFuZ2VkLgor
ICAgIGVudW0gUGxheWJhY2tTdGF0ZSB7CisgICAgICAgIC8vIFRoZXNlIG11c3QgYmUgZGVmaW5l
ZCB3aXRoIHRoZSBzYW1lIG5hbWVzIGFuZCB2YWx1ZXMgYXMgaW4gdGhlIC5pZGwgZmlsZS4KKyAg
ICAgICAgVU5TQ0hFRFVMRURfU1RBVEUgPSAwLAorICAgICAgICBTQ0hFRFVMRURfU1RBVEUgPSAx
LAorICAgICAgICBQTEFZSU5HX1NUQVRFID0gMiwKKyAgICAgICAgRklOSVNIRURfU1RBVEUgPSAz
CisgICAgfTsKKyAgICAKKyAgICBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0
KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisKKyAgICAvLyBTY2hlZHVsaW5nLgorICAgIHZvaWQgbm90
ZU9uKGRvdWJsZSB3aGVuKTsKKyAgICB2b2lkIG5vdGVPZmYoZG91YmxlIHdoZW4pOworCisgICAg
dW5zaWduZWQgc2hvcnQgcGxheWJhY2tTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PHVuc2lnbmVkIHNob3J0PihtX3BsYXliYWNrU3RhdGUpOyB9CisgICAgYm9vbCBpc1BsYXlpbmdP
clNjaGVkdWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tTdGF0ZSA9PSBQTEFZSU5HX1NU
QVRFIHx8IG1fcGxheWJhY2tTdGF0ZSA9PSBTQ0hFRFVMRURfU1RBVEU7IH0KKyAgICBib29sIGhh
c0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5YmFja1N0YXRlID09IEZJTklTSEVEX1NU
QVRFOyB9CisKK3Byb3RlY3RlZDoKKyAgICAvLyBHZXQgZnJhbWUgaW5mb3JtYXRpb24gZm9yIHRo
ZSBjdXJyZW50IHRpbWUgcXVhbnR1bS4KKyAgICAvLyBFYWNoIGZyYW1lIHRpbWUgaXMgcmVsYXRp
dmUgdG8gdGhlIGNvbnRleHQncyBjdXJyZW50U2FtcGxlRnJhbWUoKS4KKyAgICAvLyBxdWFudHVt
U3RhcnRGcmFtZSAgICAgOiBTdGFydCBmcmFtZSBvZiB0aGUgY3VycmVudCB0aW1lIHF1YW50dW0u
CisgICAgLy8gcXVhbnR1bUVuZEZyYW1lICAgICAgIDogRW5kIGZyYW1lIG9mIHRoZSBjdXJyZW50
IHRpbWUgcXVhbnR1bS4KKyAgICAvLyBzdGFydEZyYW1lICAgICAgICAgICAgOiBTdGFydCBmcmFt
ZSBmb3IgdGhpcyBzb3VyY2UuCisgICAgLy8gZW5kRnJhbWUgICAgICAgICAgICAgIDogRW5kIGZy
YW1lIGZvciB0aGlzIHNvdXJjZS4KKyAgICAvLyBxdWFudHVtRnJhbWVPZmZzZXQgICAgOiBPZmZz
ZXQgZnJhbWUgaW4gdGhpcyB0aW1lIHF1YW50dW0gdG8gc3RhcnQgcmVuZGVyaW5nLgorICAgIC8v
IG5vblNpbGVudEZyYW1lc1RvUHJvY2VzcyA6IE51bWJlciBvZiBmcmFtZXMgcmVuZGVyaW5nIG5v
bi1zaWxlbmNlICh3aWxsIGJlIDw9IHF1YW50dW1GcmFtZVNpemUpLgorICAgIHZvaWQgdXBkYXRl
U2NoZWR1bGluZ0luZm8oc2l6ZV90IHF1YW50dW1GcmFtZVNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QmIHF1YW50dW1TdGFydEZyYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90JiBxdWFudHVtRW5kRnJhbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QmIHN0YXJ0RnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QmIGVuZEZyYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90JiBxdWFudHVtRnJhbWVPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QmIG5vblNpbGVudEZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICAvLyBDYWxsZWQgd2hl
biB3ZSBoYXZlIG5vIG1vcmUgc291bmQgdG8gcGxheSBvciB0aGUgbm90ZU9mZigpIHRpbWUgaGFz
IGJlZW4gcmVhY2hlZC4KKyAgICB2b2lkIGZpbmlzaCgpOworCisgICAgUGxheWJhY2tTdGF0ZSBt
X3BsYXliYWNrU3RhdGU7CisKKyAgICAvLyBtX3N0YXJ0VGltZSBpcyB0aGUgdGltZSB0byBzdGFy
dCBwbGF5aW5nIGJhc2VkIG9uIHRoZSBjb250ZXh0J3MgdGltZWxpbmUgKDAgb3IgYSB0aW1lIGxl
c3MgdGhhbiB0aGUgY29udGV4dCdzIGN1cnJlbnQgdGltZSBtZWFucyAibm93IikuCisgICAgZG91
YmxlIG1fc3RhcnRUaW1lOyAvLyBpbiBzZWNvbmRzCisKKyAgICAvLyBtX2VuZFRpbWUgaXMgdGhl
IHRpbWUgdG8gc3RvcCBwbGF5aW5nIGJhc2VkIG9uIHRoZSBjb250ZXh0J3MgdGltZWxpbmUgKDAg
b3IgYSB0aW1lIGxlc3MgdGhhbiB0aGUgY29udGV4dCdzIGN1cnJlbnQgdGltZSBtZWFucyAibm93
IikuCisgICAgLy8gSWYgaXQgaGFzbid0IGJlZW4gc2V0IGV4cGxpY2l0bHksIHRoZW4gdGhlIHNv
dW5kIHdpbGwgbm90IHN0b3AgcGxheWluZyAoaWYgbG9vcGluZykgb3Igd2lsbCBzdG9wIHdoZW4g
dGhlIGVuZCBvZiB0aGUgQXVkaW9CdWZmZXIKKyAgICAvLyBoYXMgYmVlbiByZWFjaGVkLgorICAg
IGRvdWJsZSBtX2VuZFRpbWU7IC8vIGluIHNlY29uZHMKKworICAgIHN0YXRpYyBjb25zdCBkb3Vi
bGUgVW5rbm93blRpbWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGMzM2FjYWU5
MzBhNDAxYjY2ZjM2NjRmYzFlZWQ2YzA3NDYwMWJiZDIuLmFhMzM4YzExOTVjMjQyZDI0MGY4ZTNk
MDZlYmNhYjEzN2ZlNjI5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE1ODgsNiArMTU4OCw4IEBA
CiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHAnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Qcm9jZXNzaW5nRXZlbnQuaCcsCisg
ICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3Bw
JywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU291cmNlTm9kZS5oJywK
ICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBi
OWI2MzY5Y2I5YjM3Y2RiMzUyMTdlMWUxYTc5MmZmOTAzYTc4NTY0Li5iNTc2ZTNmYTEyYzNkZWEz
YzBkMGU4ZGU1NmRjOGIzYTJhODYyMjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzAyLDYgKzYzMDIsOCBAQAogCQlGRDdG
Mjk5NzEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ3RjI5OTAxM0Q0QzBDQjAwQUQ5
NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCAqLzsgfTsKIAkJRkQ4MkQ3RjcxM0Q0QzhCRDAw
NEU0MzcyIC8qIEpTV2F2ZVNoYXBlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ4MkQ3RjUxM0Q0QzhCRDAwNEU0MzcyIC8qIEpTV2F2ZVNo
YXBlck5vZGUuY3BwICovOyB9OwogCQlGRDgyRDdGODEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZl
U2hhcGVyTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkQ4MkQ3RjYxM0Q0QzhCRDAwNEU0MzcyIC8qIEpTV2F2ZVNoYXBlck5vZGUuaCAqLzsgfTsK
KwkJRkQ4QzQ2RUIxNTQ2MDhFNzAwQTU5MTBDIC8qIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDhDNDZF
OTE1NDYwOEU3MDBBNTkxMEMgLyogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCAqLzsgfTsK
KwkJRkQ4QzQ2RUMxNTQ2MDhFNzAwQTU5MTBDIC8qIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ4QzQ2RUEx
NTQ2MDhFNzAwQTU5MTBDIC8qIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oICovOyB9OwogCQlG
RDhFOUJERjEzRDRDRDJCMDA1MERDNzIgLyogSlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDhFOUJERTEzRDRD
RDJCMDA1MERDNzIgLyogSlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAgKi87IH07CiAJCUZEQTE1
RTlEMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1RTgxMTJCMDNFRTEwMDNBNTgzQSAv
KiBKU0F1ZGlvQnVmZmVyLmNwcCAqLzsgfTsKIAkJRkRBMTVFOUUxMkIwM0VFMTAwM0E1ODNBIC8q
IEpTQXVkaW9CdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZEQTE1RTgyMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyLmggKi87IH07
CkBAIC0xMzUyMyw2ICsxMzUyNSw4IEBACiAJCUZEN0YyOTkwMTNENEMwQ0IwMEFEOTUzNSAvKiBX
YXZlU2hhcGVyUHJvY2Vzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdh
dmVTaGFwZXJQcm9jZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQ4MkQ3
RjUxM0Q0QzhCRDAwNEU0MzcyIC8qIEpTV2F2ZVNoYXBlck5vZGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXYXZlU2hhcGVyTm9kZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZEODJEN0Y2MTNENEM4QkQwMDRFNDM3MiAvKiBKU1dhdmVTaGFw
ZXJOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2F2ZVNoYXBlck5v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQ4QzQ2RTkxNTQ2MDhFNzAwQTU5
MTBDIC8qIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRDhDNDZFQTE1NDYwOEU3MDBBNTkxMEMgLyogQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDhF
OUJERTEzRDRDRDJCMDA1MERDNzIgLyogSlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dhdmVTaGFwZXJOb2RlQ3VzdG9tLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRBMTVFODExMkIwM0VFMTAwM0E1ODNB
IC8qIEpTQXVkaW9CdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNBdWRpb0J1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEQTE1
RTgyMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9CdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIxMzg2LDYgKzIxMzkwLDggQEAKIAkJCQlGRDMxNUZENTEyQjAyNjc2MDBDMUEzNTkg
LyogQXVkaW9Qcm9jZXNzaW5nRXZlbnQuY3BwICovLAogCQkJCUZEMzE1RkQ2MTJCMDI2NzYwMEMx
QTM1OSAvKiBBdWRpb1Byb2Nlc3NpbmdFdmVudC5oICovLAogCQkJCUZEMzE1RkQ3MTJCMDI2NzYw
MEMxQTM1OSAvKiBBdWRpb1Byb2Nlc3NpbmdFdmVudC5pZGwgKi8sCisJCQkJRkQ4QzQ2RTkxNTQ2
MDhFNzAwQTU5MTBDIC8qIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAgKi8sCisJCQkJRkQ4
QzQ2RUExNTQ2MDhFNzAwQTU5MTBDIC8qIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oICovLAog
CQkJCUZEMzE1RkQ4MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb1NvdXJjZU5vZGUuaCAqLywKIAkJ
CQlGRDMxNUZEOTEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Tb3VyY2VOb2RlLmlkbCAqLywKIAkJ
CQlGRDMxNUZEQTEyQjAyNjc2MDBDMUEzNTkgLyogQmlxdWFkRFNQS2VybmVsLmNwcCAqLywKQEAg
LTI0ODA0LDYgKzI0ODEwLDcgQEAKIAkJCQlDRUNBREZDOTE1Mzc3OEZGMDBFMzcwNjggLyogRGlj
dGF0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VDQURGQ0UxNTM3NzkxRDAwRTM3
MDY4IC8qIFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTgz
MUFFNEExNTQyMjVDOTAwRkUyNjQ0IC8qIFJlZmVycmVyUG9saWN5LmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRDhDNDZFQzE1NDYwOEU3MDBBNTkxMEMgLyogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3ODE1LDYgKzI3ODIyLDcgQEAKIAkJCQlDRUNBREZDNjE1
Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0VDQURGQzgxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0VDQURGQ0QxNTM3NzkxRDAwRTM3MDY4IC8qIFRleHRJbnNlcnRp
b25CYXNlQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRDhDNDZFQjE1NDYwOEU3MDBB
NTkxMEMgLyogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owo=
</data>
<flag name="review"
          id="143806"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>