<?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>45009</bug_id>
          
          <creation_ts>2010-08-31 17:13:08 -0700</creation_ts>
          <short_desc>Add AudioDestinationNode files</short_desc>
          <delta_ts>2010-09-28 10:55:38 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>0</everconfirmed>
          <reporter name="Chris Rogers">crogers</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kbr</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>272519</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-08-31 17:13:08 -0700</bug_when>
    <thetext>Add AudioDestinationNode files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272521</commentid>
    <comment_count>1</comment_count>
      <attachid>66145</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-08-31 17:14:43 -0700</bug_when>
    <thetext>Created attachment 66145
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272522</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-08-31 17:16:03 -0700</bug_when>
    <thetext>Implements AudioDestinationNode as described in the web audio specification:

http://chromium.googlecode.com/svn/trunk/samples/audio/specification/specification.html#AudioDestinationNode-section</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276775</commentid>
    <comment_count>3</comment_count>
      <attachid>66145</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-09-09 14:42:05 -0700</bug_when>
    <thetext>Comment on attachment 66145
Patch

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

Generally looks fine; r- because of an inconsistency in the publicly visible attributes. Also a couple of minor suggestions.

&gt; WebCore/webaudio/AudioDestinationNode.cpp:50
&gt; +    initialize();
I certainly hope that AudioNode initializes the m_isInitialized flag to false in its constructor. It would be simpler if AudioNode were landed before this class which depends on it.

&gt; WebCore/webaudio/AudioDestinationNode.cpp:71
&gt; +    m_isInitialized = true;
I would suggest just calling AudioNode::initialize() here and making m_isInitialized private in AudioNode (assuming that&apos;s where it&apos;s declared).

&gt; WebCore/webaudio/AudioDestinationNode.cpp:81
&gt; +    m_isInitialized = false;
Same comment, but about calling AudioNode::uninitialize().

&gt; WebCore/webaudio/AudioDestinationNode.idl:34
&gt; +        readonly attribute short numberOfChannels;
This attribute isn&apos;t currently in the Web Audio spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283154</commentid>
    <comment_count>4</comment_count>
      <attachid>68416</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-22 12:25:01 -0700</bug_when>
    <thetext>Created attachment 68416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283155</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-09-22 12:27:33 -0700</bug_when>
    <thetext>Ken, I&apos;ve created a new patch to address some changes to AudioContext.  I&apos;ve added the &quot;numberOfChannels&quot; attribute to the web audio specification document.  I spoke with you offline about keeping the initialize/uninitialize part as it is.  But I *did* add addInput() and addOutput() methods to AudioNode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286321</commentid>
    <comment_count>6</comment_count>
      <attachid>68416</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-09-28 10:06:50 -0700</bug_when>
    <thetext>Comment on attachment 68416
Patch

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

Looks fine. Tiny formatting issue.

&gt; WebCore/webaudio/AudioDestinationNode.h:54
&gt; +    virtual void reset() { m_currentTime = 0.0; };

No semicolons at end of lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286372</commentid>
    <comment_count>7</comment_count>
      <attachid>68416</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-28 10:55:32 -0700</bug_when>
    <thetext>Comment on attachment 68416
Patch

Clearing flags on attachment: 68416

Committed r68540: &lt;http://trac.webkit.org/changeset/68540&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286374</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-28 10:55:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66145</attachid>
            <date>2010-08-31 17:14:43 -0700</date>
            <delta_ts>2010-09-22 12:24:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45009-20100831171442.patch</filename>
            <type>text/plain</type>
            <size>10542</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjU1NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMDgtMzEgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQXVkaW9EZXN0aW5hdGlvbk5vZGUgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MDA5CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNl
IGF1ZGlvIEFQSSBpcyBub3QgeWV0IGltcGxlbWVudGVkLgorCisgICAgICAgICogd2ViYXVkaW86
IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5h
dGlvbk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6On5BdWRp
b0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9k
ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
dW5pbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlOjpw
cm92aWRlSW5wdXQpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cHJvY2Vzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvRGVzdGluYXRpb25Ob2RlOjpudW1iZXJPZkNoYW5uZWxzKToKKyAgICAgICAgKiB3ZWJh
dWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGw6IEFkZGVkLgorCiAyMDEwLTA4LTMxICBCZXRo
IERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBE
YW4gQmVybnN0ZWluLi4KSW5kZXg6IFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRp
b25Ob2RlLmgiCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4
dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0
cHV0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXVkaW9EZXN0aW5hdGlvbk5vZGU6OkF1
ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCkKKyAgICA6IEF1ZGlvTm9k
ZShjb250ZXh0LCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKSkKKyAgICAs
IG1fY3VycmVudFRpbWUoMC4wKQoreworICAgIG1faW5wdXRzLmFwcGVuZChhZG9wdFB0cihuZXcg
QXVkaW9Ob2RlSW5wdXQodGhpcykpKTsKKyAgICAKKyAgICBzZXRUeXBlKE5vZGVUeXBlRGVzdGlu
YXRpb24pOworICAgIAorICAgIGluaXRpYWxpemUoKTsKK30KKworQXVkaW9EZXN0aW5hdGlvbk5v
ZGU6On5BdWRpb0Rlc3RpbmF0aW9uTm9kZSgpCit7CisgICAgdW5pbml0aWFsaXplKCk7Cit9CisK
K3ZvaWQgQXVkaW9EZXN0aW5hdGlvbk5vZGU6OmluaXRpYWxpemUoKQoreworICAgIGlmIChpc0lu
aXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBoYXJkd2FyZVNhbXBs
ZVJhdGUgPSBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKTsKKyNpZm5kZWYg
TkRFQlVHICAgIAorICAgIGZwcmludGYoc3RkZXJyLCAiPj4+PiBoYXJkd2FyZVNhbXBsZVJhdGUg
PSAlZlxuIiwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKKyNlbmRpZgorICAgIAorICAgIG1fZGVzdGlu
YXRpb24gPSBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoKnRoaXMsIGhhcmR3YXJlU2FtcGxlUmF0
ZSk7CisgICAgbV9kZXN0aW5hdGlvbi0+c3RhcnQoKTsKKyAgICAKKyAgICBtX2lzSW5pdGlhbGl6
ZWQgPSB0cnVlOworfQorCit2b2lkIEF1ZGlvRGVzdGluYXRpb25Ob2RlOjp1bmluaXRpYWxpemUo
KQoreworICAgIGlmICghaXNJbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2Rlc3RpbmF0aW9uLT5zdG9wKCk7CisKKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKK30K
KworLy8gVGhlIGF1ZGlvIGhhcmR3YXJlIGNhbGxzIHVzIGJhY2sgaGVyZSB0byBnZXRzIGl0cyBp
bnB1dCBzdHJlYW0uCit2b2lkIEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpwcm92aWRlSW5wdXQoQXVk
aW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCit7CisgICAgLy8g
VGhpcyB3aWxsIGNhdXNlIHRoZSBub2RlKHMpIGNvbm5lY3RlZCB0byB1cyB0byBwcm9jZXNzLCB3
aGljaCBpbiB0dXJuIHdpbGwgcHVsbCBvbiB0aGVpciBpbnB1dChzKSwKKyAgICAvLyBhbGwgdGhl
IHdheSBiYWNrd2FyZHMgdGhyb3VnaCB0aGUgcmVuZGVyaW5nIGdyYXBoLgorICAgIEF1ZGlvQnVz
KiByZW5kZXJlZEJ1cyA9IGlucHV0KDApLT5wdWxsKGRlc3RpbmF0aW9uQnVzLCBudW1iZXJPZkZy
YW1lcyk7CisgICAgCisgICAgaWYgKCFyZW5kZXJlZEJ1cykKKyAgICAgICAgZGVzdGluYXRpb25C
dXMtPnplcm8oKTsKKyAgICBlbHNlIGlmIChyZW5kZXJlZEJ1cyAhPSBkZXN0aW5hdGlvbkJ1cykg
eworICAgICAgICAvLyBpbi1wbGFjZSBwcm9jZXNzaW5nIHdhcyBub3QgcG9zc2libGUgLSBzbyBj
b3B5CisgICAgICAgIGRlc3RpbmF0aW9uQnVzLT5jb3B5RnJvbSgqcmVuZGVyZWRCdXMpOworICAg
IH0KKworICAgIC8vIER5bmFtaWNhbGx5IGNsZWFuIHVwIG5vZGVzIHdoaWNoIGFyZSBubyBsb25n
ZXIgbmVlZGVkLgorICAgIGNvbnRleHQoKS0+aGFuZGxlRmluaXNoZWROb2RlcygpOworICAgIGNv
bnRleHQoKS0+ZGVsZXRlTWFya2VkTm9kZXMoKTsKKworICAgIC8vIEFkdmFuY2UgY3VycmVudCB0
aW1lLgorICAgIG1fY3VycmVudFRpbWUgKz0gbnVtYmVyT2ZGcmFtZXMgLyBzYW1wbGVSYXRlKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVE
SU8pCkluZGV4OiBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRpb0Rlc3RpbmF0aW9uTm9kZV9oCisj
ZGVmaW5lIEF1ZGlvRGVzdGluYXRpb25Ob2RlX2gKKworI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRp
b24uaCIKKyNpbmNsdWRlICJBdWRpb05vZGUuaCIKKyNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3Zp
ZGVyLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9CdXM7CitjbGFzcyBBdWRp
b0NvbnRleHQ7CisgICAgCitjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSA6IHB1YmxpYyBBdWRp
b05vZGUsIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29u
dGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9EZXN0aW5hdGlv
bk5vZGUoY29udGV4dCkpOyAgICAgICAgCisgICAgfQorCisgICAgdmlydHVhbCB+QXVkaW9EZXN0
aW5hdGlvbk5vZGUoKTsKKyAgICAKKyAgICAvLyBQcm9jZXNzaW5nICAgCisgICAgdmlydHVhbCB2
b2lkIHByb2Nlc3Moc2l6ZV90KSB7IH07IC8vIHdlJ3JlIHB1bGxlZCBieSBoYXJkd2FyZSBzbyB0
aGlzIGlzIG5ldmVyIGNhbGxlZAorICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIHsgbV9jdXJyZW50
VGltZSA9IDAuMDsgfTsKKworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCk7CisgICAgdmly
dHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpOworICAgIAorICAgIC8vIFRoZSBhdWRpbyBoYXJkd2Fy
ZSBjYWxscyBoZXJlIHBlcmlvZGljYWxseSB0byBnZXRzIGl0cyBpbnB1dCBzdHJlYW0uCisgICAg
dmlydHVhbCB2b2lkIHByb3ZpZGVJbnB1dChBdWRpb0J1cyogYnVzLCBzaXplX3QgbnVtYmVyT2ZG
cmFtZXMpOworCisgICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbV9jdXJyZW50VGlt
ZTsgfQorCisgICAgZG91YmxlIHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uLT5zYW1wbGVSYXRlKCk7IH0KKworICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMoKSBj
b25zdCB7IHJldHVybiAyOyB9IC8vIEZJWE1FOiB1cGRhdGUgd2hlbiBtdWx0aS1jaGFubmVsICht
b3JlIHRoYW4gc3RlcmVvKSBpcyBzdXBwb3J0ZWQKKyAgICAKK3ByaXZhdGU6CisgICAgQXVkaW9E
ZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0KTsKKworICAgIE93blB0cjxBdWRp
b0Rlc3RpbmF0aW9uPiBtX2Rlc3RpbmF0aW9uOworICAgIGRvdWJsZSBtX2N1cnJlbnRUaW1lOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQXVkaW9EZXN0aW5hdGlv
bk5vZGVfaApJbmRleDogV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmlk
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBhdWRpbyB7CisgICAgaW50
ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorICAgICAgICBHZW5lcmF0
ZVRvSlMKKyAgICBdIEF1ZGlvRGVzdGluYXRpb25Ob2RlIDogQXVkaW9Ob2RlIHsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHNob3J0IG51bWJlck9mQ2hhbm5lbHM7CisgICAgfTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68416</attachid>
            <date>2010-09-22 12:25:01 -0700</date>
            <delta_ts>2010-09-28 10:55:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45009-20100922122500.patch</filename>
            <type>text/plain</type>
            <size>10645</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODA2NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDktMjIgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQXVkaW9EZXN0aW5hdGlvbk5vZGUgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MDA5CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNl
IGF1ZGlvIEFQSSBpcyBub3QgeWV0IGltcGxlbWVudGVkLgorCisgICAgICAgICogd2ViYXVkaW8v
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6fkF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlOjppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlOjp1bmluaXRpYWxpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnByb3ZpZGVJbnB1dCk6CisgICAgICAgICogd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Ob2RlOjpwcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b25Ob2RlOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
Y3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnNh
bXBsZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6Om51bWJl
ck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmlk
bDogQWRkZWQuCisKIDIwMTAtMDktMjIgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuCkluZGV4OiBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvd2ViYXVkaW8vQXVk
aW9EZXN0aW5hdGlvbk5vZGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRl
ICJBdWRpb0NvbnRleHQuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5oIgorI2luY2x1ZGUg
IkF1ZGlvTm9kZU91dHB1dC5oIgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5v
ZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0KQorICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIEF1ZGlv
RGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpKQorICAgICwgbV9jdXJyZW50VGltZSgw
LjApCit7CisgICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7
CisgICAgCisgICAgc2V0VHlwZShOb2RlVHlwZURlc3RpbmF0aW9uKTsKKyAgICAKKyAgICBpbml0
aWFsaXplKCk7Cit9CisKK0F1ZGlvRGVzdGluYXRpb25Ob2RlOjp+QXVkaW9EZXN0aW5hdGlvbk5v
ZGUoKQoreworICAgIHVuaW5pdGlhbGl6ZSgpOworfQorCit2b2lkIEF1ZGlvRGVzdGluYXRpb25O
b2RlOjppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBkb3VibGUgaGFyZHdhcmVTYW1wbGVSYXRlID0gQXVkaW9EZXN0aW5hdGlv
bjo6aGFyZHdhcmVTYW1wbGVSYXRlKCk7CisjaWZuZGVmIE5ERUJVRyAgICAKKyAgICBmcHJpbnRm
KHN0ZGVyciwgIj4+Pj4gaGFyZHdhcmVTYW1wbGVSYXRlID0gJWZcbiIsIGhhcmR3YXJlU2FtcGxl
UmF0ZSk7CisjZW5kaWYKKyAgICAKKyAgICBtX2Rlc3RpbmF0aW9uID0gQXVkaW9EZXN0aW5hdGlv
bjo6Y3JlYXRlKCp0aGlzLCBoYXJkd2FyZVNhbXBsZVJhdGUpOworICAgIG1fZGVzdGluYXRpb24t
PnN0YXJ0KCk7CisgICAgCisgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKK30KKwordm9pZCBB
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6dW5pbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIWlzSW5pdGlh
bGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kZXN0aW5hdGlvbi0+c3RvcCgpOwor
CisgICAgbV9pc0luaXRpYWxpemVkID0gZmFsc2U7Cit9CisKKy8vIFRoZSBhdWRpbyBoYXJkd2Fy
ZSBjYWxscyB1cyBiYWNrIGhlcmUgdG8gZ2V0cyBpdHMgaW5wdXQgc3RyZWFtLgordm9pZCBBdWRp
b0Rlc3RpbmF0aW9uTm9kZTo6cHJvdmlkZUlucHV0KEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywg
c2l6ZV90IG51bWJlck9mRnJhbWVzKQoreworICAgIGNvbnRleHQoKS0+c2V0QXVkaW9UaHJlYWQo
Y3VycmVudFRocmVhZCgpKTsKKyAgICAKKyAgICBpZiAoIWNvbnRleHQoKS0+aXNSdW5uYWJsZSgp
KSB7CisgICAgICAgIGRlc3RpbmF0aW9uQnVzLT56ZXJvKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICAvLyBUaGlzIHdpbGwgY2F1c2UgdGhlIG5vZGUocykgY29ubmVjdGVkIHRvIHVz
IHRvIHByb2Nlc3MsIHdoaWNoIGluIHR1cm4gd2lsbCBwdWxsIG9uIHRoZWlyIGlucHV0KHMpLAor
ICAgIC8vIGFsbCB0aGUgd2F5IGJhY2t3YXJkcyB0aHJvdWdoIHRoZSByZW5kZXJpbmcgZ3JhcGgu
CisgICAgQXVkaW9CdXMqIHJlbmRlcmVkQnVzID0gaW5wdXQoMCktPnB1bGwoZGVzdGluYXRpb25C
dXMsIG51bWJlck9mRnJhbWVzKTsKKyAgICAKKyAgICBpZiAoIXJlbmRlcmVkQnVzKQorICAgICAg
ICBkZXN0aW5hdGlvbkJ1cy0+emVybygpOworICAgIGVsc2UgaWYgKHJlbmRlcmVkQnVzICE9IGRl
c3RpbmF0aW9uQnVzKSB7CisgICAgICAgIC8vIGluLXBsYWNlIHByb2Nlc3Npbmcgd2FzIG5vdCBw
b3NzaWJsZSAtIHNvIGNvcHkKKyAgICAgICAgZGVzdGluYXRpb25CdXMtPmNvcHlGcm9tKCpyZW5k
ZXJlZEJ1cyk7CisgICAgfQorCisgICAgLy8gTGV0IHRoZSBjb250ZXh0IHRha2UgY2FyZSBvZiBh
bnkgYnVzaW5lc3MgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtLgorICAgIGNvbnRl
eHQoKS0+aGFuZGxlUG9zdFJlbmRlclRhc2tzKCk7CisgICAgCisgICAgLy8gQWR2YW5jZSBjdXJy
ZW50IHRpbWUuCisgICAgbV9jdXJyZW50VGltZSArPSBudW1iZXJPZkZyYW1lcyAvIHNhbXBsZVJh
dGUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVURJTykKSW5kZXg6IFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEF1ZGlvRGVzdGluYXRpb25Ob2Rl
X2gKKyNkZWZpbmUgQXVkaW9EZXN0aW5hdGlvbk5vZGVfaAorCisjaW5jbHVkZSAiQXVkaW9EZXN0
aW5hdGlvbi5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgorI2luY2x1ZGUgIkF1ZGlvU291cmNl
UHJvdmlkZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb0J1czsKK2NsYXNz
IEF1ZGlvQ29udGV4dDsKKyAgICAKK2NsYXNzIEF1ZGlvRGVzdGluYXRpb25Ob2RlIDogcHVibGlj
IEF1ZGlvTm9kZSwgcHVibGljIEF1ZGlvU291cmNlUHJvdmlkZXIgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0
KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb0Rlc3Rp
bmF0aW9uTm9kZShjb250ZXh0KSk7ICAgICAgICAKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5BdWRp
b0Rlc3RpbmF0aW9uTm9kZSgpOworICAgIAorICAgIC8vIEF1ZGlvTm9kZSAgIAorICAgIHZpcnR1
YWwgdm9pZCBwcm9jZXNzKHNpemVfdCkgeyB9OyAvLyB3ZSdyZSBwdWxsZWQgYnkgaGFyZHdhcmUg
c28gdGhpcyBpcyBuZXZlciBjYWxsZWQKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSB7IG1fY3Vy
cmVudFRpbWUgPSAwLjA7IH07CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdW5pbml0aWFsaXplKCk7CisgICAgCisgICAgLy8gVGhlIGF1ZGlvIGhhcmR3
YXJlIGNhbGxzIGhlcmUgcGVyaW9kaWNhbGx5IHRvIGdldHMgaXRzIGlucHV0IHN0cmVhbS4KKyAg
ICB2aXJ0dWFsIHZvaWQgcHJvdmlkZUlucHV0KEF1ZGlvQnVzKiwgc2l6ZV90IG51bWJlck9mRnJh
bWVzKTsKKworICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIHsgcmV0dXJuIG1fY3VycmVudFRpbWU7
IH0KKworICAgIGRvdWJsZSBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlv
bi0+c2FtcGxlUmF0ZSgpOyB9CisKKyAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKCkgY29u
c3QgeyByZXR1cm4gMjsgfSAvLyBGSVhNRTogdXBkYXRlIHdoZW4gbXVsdGktY2hhbm5lbCAobW9y
ZSB0aGFuIHN0ZXJlbykgaXMgc3VwcG9ydGVkCisgICAgCitwcml2YXRlOgorICAgIEF1ZGlvRGVz
dGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCopOworCisgICAgT3duUHRyPEF1ZGlvRGVzdGluYXRp
b24+IG1fZGVzdGluYXRpb247CisgICAgZG91YmxlIG1fY3VycmVudFRpbWU7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBBdWRpb0Rlc3RpbmF0aW9uTm9kZV9oCklu
ZGV4OiBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmlkbAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaWRsCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGF1ZGlvIHsKKyAgICBpbnRlcmZhY2UgWwor
ICAgICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgICAgIEdlbmVyYXRlVG9KUworICAg
IF0gQXVkaW9EZXN0aW5hdGlvbk5vZGUgOiBBdWRpb05vZGUgeworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgbG9uZyBudW1iZXJPZkNoYW5uZWxzOworICAgIH07Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>