<?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>82089</bug_id>
          
          <creation_ts>2012-03-23 14:06:52 -0700</creation_ts>
          <short_desc>Match DOM4 spec with respect to DocumentFragment insertion</short_desc>
          <delta_ts>2012-03-29 00:35:21 -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>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="Adam Klein">adamk</reporter>
          <assigned_to name="Adam Klein">adamk</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>ojan</cc>
    
    <cc>pnormand</cc>
    
    <cc>rafaelw</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>586714</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-03-23 14:06:52 -0700</bug_when>
    <thetext>Match DOM4 spec with respect to DocumentFragment insertion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586732</commentid>
    <comment_count>1</comment_count>
      <attachid>133557</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-03-23 14:15:10 -0700</bug_when>
    <thetext>Created attachment 133557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586735</commentid>
    <comment_count>2</comment_count>
      <attachid>133558</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-03-23 14:17:36 -0700</bug_when>
    <thetext>Created attachment 133558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586744</commentid>
    <comment_count>3</comment_count>
      <attachid>133558</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-23 14:23:03 -0700</bug_when>
    <thetext>Comment on attachment 133558
Patch

Attachment 133558 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12122801</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586755</commentid>
    <comment_count>4</comment_count>
      <attachid>133558</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-23 14:28:06 -0700</bug_when>
    <thetext>Comment on attachment 133558
Patch

Attachment 133558 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12123773</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586758</commentid>
    <comment_count>5</comment_count>
      <attachid>133564</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-03-23 14:31:20 -0700</bug_when>
    <thetext>Created attachment 133564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586783</commentid>
    <comment_count>6</comment_count>
      <attachid>133558</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-23 15:04:21 -0700</bug_when>
    <thetext>Comment on attachment 133558
Patch

Talked with aklein in person. There appears to be some errors in the spec with respect to the order of mutations. I&apos;ve asked aklein to separate the  atomic-removal from a document fragment for now since that&apos;s a pretty safe change to make.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586796</commentid>
    <comment_count>7</comment_count>
      <attachid>133570</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-03-23 15:19:02 -0700</bug_when>
    <thetext>Created attachment 133570
Patch minus replaceChild ordering change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586806</commentid>
    <comment_count>8</comment_count>
      <attachid>133570</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-23 15:31:40 -0700</bug_when>
    <thetext>Comment on attachment 133570
Patch minus replaceChild ordering change

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

&gt; Source/WebCore/dom/ContainerNode.cpp:287
&gt; +    if (next &amp;&amp; (next-&gt;previousSibling() == newChild || next == newChild)) // nothing to do

What if next had been removed from this during the mutation event? r- because of this.

In general, it&apos;s better to define a boolean or a helper function that documents this than adding a comment like &quot;nothing to do&quot;,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586813</commentid>
    <comment_count>9</comment_count>
      <attachid>133570</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-23 15:38:28 -0700</bug_when>
    <thetext>Comment on attachment 133570
Patch minus replaceChild ordering change

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

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:287
&gt;&gt; +    if (next &amp;&amp; (next-&gt;previousSibling() == newChild || next == newChild)) // nothing to do
&gt; 
&gt; What if next had been removed from this during the mutation event? r- because of this.
&gt; 
&gt; In general, it&apos;s better to define a boolean or a helper function that documents this than adding a comment like &quot;nothing to do&quot;,

On my second thought, this condition was present in the old code and it&apos;ll only match one-node case so this is probably okay.

&gt; Source/WebCore/dom/ContainerNode.cpp:-289
&gt; -        // If the new child is already in the right place, we&apos;re done.
&gt; -        if (next &amp;&amp; (next == child || next == child-&gt;previousSibling()))
&gt; -            break;

I don&apos;t think this old code was correct to begin with for the document fragment case since there are more nodes next in the targets.
It&apos;s probably a left over from the days we still used to iterate through nextSibling instead of collecting nodes upfront.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586828</commentid>
    <comment_count>10</comment_count>
      <attachid>133570</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-23 15:51:43 -0700</bug_when>
    <thetext>Comment on attachment 133570
Patch minus replaceChild ordering change

Clearing flags on attachment: 133570

Committed r111925: &lt;http://trac.webkit.org/changeset/111925&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586829</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-23 15:51:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590912</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-29 00:35:21 -0700</bug_when>
    <thetext>Note a regression fix was landed in http://trac.webkit.org/changeset/112323.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133557</attachid>
            <date>2012-03-23 14:15:10 -0700</date>
            <delta_ts>2012-03-23 14:17:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82089-20120323141509.patch</filename>
            <type>text/plain</type>
            <size>19143</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU2YmY0YTY4YjEyZGU2
ZjA1YzNmNDMwNjY5MjBkM2I2YTVjNGM4Mi4uZTA4OTAzYTQ3MzY2ZWI0MGRmNzliNGQ0YTVhZGQ3
MWQ4NTU3YTBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTAzLTIzICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1hdGNoIERPTTQgc3BlYyB3
aXRoIHJlc3BlY3QgdG8gRG9jdW1lbnRGcmFnbWVudCBpbnNlcnRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMDg5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRE9NNCBzcGVjaWZpZXMgdGhlIGJlaGF2
aW9yIG9mIGFwcGVuZENoaWxkLCBpbnNlcnRCZWZvcmUsIGFuZCByZXBsYWNlQ2hpbGQKKyAgICAg
ICAgaW4gdGVybXMgb2YgIm11dGF0aW9uIGFsZ29yaXRobXMiOgorCisgICAgICAgIGh0dHA6Ly9k
dmNzLnczLm9yZy9oZy9kb21jb3JlL3Jhdy1maWxlL3RpcC9PdmVydmlldy5odG1sI211dGF0aW9u
LWFsZ29yaXRobXMKKworICAgICAgICBUaGlzIGNoYW5nZSB1cGRhdGVzIFdlYktpdCB0byBtYXRj
aCwgaW4gcGFydGljdWxhciB3aXRoIHJlZ2FyZCB0byBEb2N1bWVudEZyYWdtZW50cy4KKyAgICAg
ICAgUHJldmlvdXNseSwgQ29udGFpbmVyTm9kZSB3b3VsZCByZW1vdmUgbm9kZXMgb25lIGF0IGEg
dGltZSwgdGhlbiBhZGQgdGhlbSB0byB0aGUgbmV3IHBhcmVudC4KKyAgICAgICAgV2hlbiBjb21i
aW5lZCB3aXRoIE11dGF0aW9uT2JzZXJ2ZXJzLCB0aGlzIHJlc3VsdHMgaW4gb3Zlcmx5LXZlcmJv
c2UgbXV0YXRpb24gcmVjb3Jkcy4KKyAgICAgICAgTm93IHdlIGNyZWF0ZSBhcyBmZXcgcmVjb3Jk
cyBhcyBwb3NzaWJsZSwgbWF0Y2hpbmcgdGhlIHNwZWMgYXMgd2VsbCBhcyBHZWNrbydzIGltcGxl
bWVudGF0aW9uCisgICAgICAgIG9mIE11dGF0aW9uT2JzZXJ2ZXJzLgorCisgICAgICAgIE5vdGUg
dGhhdCB3ZSBzdGlsbCBuZWVkIHRvIGNoZWNrIHZhbGlkaXR5IGVhY2ggdGltZSB0aHJvdWdoIHRo
ZSBsb29wLAorICAgICAgICBzaW5jZSBpbnNlcnRpbmcgYSBub2RlIG1heSBkaXNwYXRjaCBldmVu
dHMuIEluIGEgZnV0dXJlIGNoYW5nZSwgSSBob3BlCisgICAgICAgIHRvIG1vdmUgdGhlc2UgZXZl
bnRzIHNvIHRoYXQgdGhleSBmaXJlIG9ubHkgYWZ0ZXIgYWxsIG5vZGVzIGFyZSBpbnNlcnRlZCwK
KyAgICAgICAgYnV0IHRoYXQncyB0b28gbXVjaCB0byB0YWNrbGUgYWxsIGluIG9uZS4KKworICAg
ICAgICBUZXN0czogZmFzdC9tdXRhdGlvbi9kb2N1bWVudC1mcmFnbWVudC1pbnNlcnRpb24uaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9tdXRhdGlvbi9yZXBsYWNlLWNoaWxkLW9yZGVyLmh0bWwK
KworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bGxlY3RDaGlsZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQpOiBOZXcgaGVscGVyIG1ldGhvZAor
ICAgICAgICBjb21iaW5pbmcgY29sbGVjdFRhcmdldE5vZGVzKCkgd2l0aCB0aGUgcmVtb3ZhbCBv
ZiB0aGUgY29sbGVjdGVkIG5vZGVzIGZyb20KKyAgICAgICAgdGhlaXIgb2xkIHBhcmVudCwgaWYg
YW55LgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKTogVXNl
IG5ldyBoZWxwZXIgbWV0aG9kIGluc3RlYWQKKyAgICAgICAgb2YgcmVtb3Zpbmcgbm9kZXMgb25l
IGF0IGEgdGltZSBmcm9tIHRoZSBmcmFnbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6OnJlcGxhY2VDaGlsZCk6IGRpdHRvLiBpbiBhZGRpdGlvbiwgcmVtb3ZlZAorICAgICAg
ICBzb21lIHJlZHVuZGFudCBhc3NlcnRzIGFuZCBtb3ZlIHRoZSAiZG8gbm90aGluZyIgY2hlY2sg
b3V0IG9mIHRoZSBsb29wLgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6YXBwZW5k
Q2hpbGQpOiBVc2UgbmV3IGhlbHBlciBtZXRob2QuCisKIDIwMTItMDMtMjMgIFRvbW15IFdpZGVu
Zmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJlYW0gQVBJIChK
U0VQKTogSW50cm9kdWNpbmcgUGVlckNvbm5lY3Rpb24wMCBhbmQgSWNlQ2FsbGJhY2sKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCA1ZThjNzM4ZWUyNGJmZjQ2OGM1YmViOTM3
ODhhMjk2ZWVjMjk0NDU4Li5jZWQ4MjQyNGM2N2MyMTYyMWE5MWY2NWNlNTM2MGI2Y2NkYzYxNTU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC03Niw2ICs3NiwxOCBAQCBz
dGF0aWMgdm9pZCBjb2xsZWN0VGFyZ2V0Tm9kZXMoTm9kZSogbm9kZSwgTm9kZVZlY3RvciYgbm9k
ZXMpCiAgICAgY29sbGVjdE5vZGVzKG5vZGUsIG5vZGVzKTsKIH0KIAorc3RhdGljIHZvaWQgY29s
bGVjdENoaWxkcmVuQW5kUmVtb3ZlRnJvbU9sZFBhcmVudChOb2RlKiBub2RlLCBOb2RlVmVjdG9y
JiBub2RlcywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkg
IT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSkgeworICAgICAgICBub2Rlcy5hcHBlbmQo
bm9kZSk7CisgICAgICAgIGlmIChDb250YWluZXJOb2RlKiBvbGRQYXJlbnQgPSBub2RlLT5wYXJl
bnROb2RlKCkpCisgICAgICAgICAgICBvbGRQYXJlbnQtPnJlbW92ZUNoaWxkKG5vZGUsIGVjKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb2xsZWN0Tm9kZXMobm9kZSwgbm9kZXMpOwor
ICAgIHRvQ29udGFpbmVyTm9kZShub2RlKS0+cmVtb3ZlQ2hpbGRyZW4oKTsKK30KKwogdm9pZCBD
b250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbigpCiB7CiAgICAgcmVtb3ZlQWxsQ2hpbGRy
ZW5JbkNvbnRhaW5lcjxOb2RlLCBDb250YWluZXJOb2RlPih0aGlzKTsKQEAgLTEzNCwxMyArMTQ2
LDE0IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4g
bmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBOb2RlVmVjdG9yIHRhcmdldHM7Ci0gICAgY29sbGVjdFRhcmdldE5vZGVzKG5l
d0NoaWxkLmdldCgpLCB0YXJnZXRzKTsKLSAgICBpZiAodGFyZ2V0cy5pc0VtcHR5KCkpCisgICAg
aWYgKHJlZkNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSA9PSBuZXdDaGlsZCB8fCByZWZDaGlsZCA9
PSBuZXdDaGlsZCkgLy8gbm90aGluZyB0byBkbwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IC8vIE5vdyBhY3R1YWxseSBhZGQgdGhlIGNoaWxkKHJlbikKLSAgICBpZiAocmVmQ2hpbGQtPnBy
ZXZpb3VzU2libGluZygpID09IG5ld0NoaWxkIHx8IHJlZkNoaWxkID09IG5ld0NoaWxkKSAvLyBu
b3RoaW5nIHRvIGRvCisgICAgTm9kZVZlY3RvciB0YXJnZXRzOworICAgIGNvbGxlY3RDaGlsZHJl
bkFuZFJlbW92ZUZyb21PbGRQYXJlbnQobmV3Q2hpbGQuZ2V0KCksIHRhcmdldHMsIGVjKTsKKyAg
ICBpZiAoZWMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAodGFyZ2V0cy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVS
UykKQEAgLTE1MiwxMiArMTY1LDYgQEAgYm9vbCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUo
UGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2UKICAgICBmb3Ig
KE5vZGVWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGFyZ2V0cy5iZWdpbigpOyBpdCAhPSB0
YXJnZXRzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIE5vZGUqIGNoaWxkID0gaXQtPmdldCgpOwog
Ci0gICAgICAgIC8vIElmIGNoaWxkIGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgdHJlZSwgZmly
c3QgcmVtb3ZlIGl0IGZyb20gdGhlIG9sZCBsb2NhdGlvbi4KLSAgICAgICAgaWYgKENvbnRhaW5l
ck5vZGUqIG9sZFBhcmVudCA9IGNoaWxkLT5wYXJlbnROb2RlKCkpCi0gICAgICAgICAgICBvbGRQ
YXJlbnQtPnJlbW92ZUNoaWxkKGNoaWxkLCBlYyk7Ci0gICAgICAgIGlmIChlYykKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLQogICAgICAgICAvLyBEdWUgdG8gYXJiaXRyYXJ5IGNvZGUgcnVu
bmluZyBpbiByZXNwb25zZSB0byBhIERPTSBtdXRhdGlvbiBldmVudCBpdCdzCiAgICAgICAgIC8v
IHBvc3NpYmxlIHRoYXQgIm5leHQiIGlzIG5vIGxvbmdlciBhIGNoaWxkIG9mICJ0aGlzIi4KICAg
ICAgICAgLy8gSXQncyBhbHNvIHBvc3NpYmxlIHRoYXQgImNoaWxkIiBoYXMgYmVlbiBpbnNlcnRl
ZCBlbHNld2hlcmUuCkBAIC0yNTksNyArMjY2LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZXBs
YWNlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2UK
IAogICAgIGlmIChvbGRDaGlsZCA9PSBuZXdDaGlsZCkgLy8gbm90aGluZyB0byBkbwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAKKwogICAgIC8vIE1ha2Ugc3VyZSByZXBsYWNpbmcgdGhlIG9s
ZCBjaGlsZCB3aXRoIHRoZSBuZXcgaXMgb2sKICAgICBjaGVja1JlcGxhY2VDaGlsZChuZXdDaGls
ZC5nZXQoKSwgb2xkQ2hpbGQsIGVjKTsKICAgICBpZiAoZWMpCkBAIC0yNzEsNiArMjc4LDE0IEBA
IGJvb2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hp
bGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
KyAgICBOb2RlVmVjdG9yIHRhcmdldHM7CisgICAgY29sbGVjdENoaWxkcmVuQW5kUmVtb3ZlRnJv
bU9sZFBhcmVudChuZXdDaGlsZC5nZXQoKSwgdGFyZ2V0cywgZWMpOworICAgIGlmIChlYykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG9sZENoaWxkLT5wYXJlbnROb2RlKCkgIT0g
dGhpcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VS
VkVSUykKICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKHRoaXMpOwogI2VuZGlm
CkBAIC0yODQsMjMgKzI5OSwxMyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZChQ
YXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZQogICAgIGlmIChl
YykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTm9kZVZlY3RvciB0YXJnZXRzOwotICAg
IGNvbGxlY3RUYXJnZXROb2RlcyhuZXdDaGlsZC5nZXQoKSwgdGFyZ2V0cyk7CisgICAgaWYgKG5l
eHQgJiYgKG5leHQtPnByZXZpb3VzU2libGluZygpID09IG5ld0NoaWxkIHx8IG5leHQgPT0gbmV3
Q2hpbGQpKSAvLyBub3RoaW5nIHRvIGRvCisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8g
QWRkIHRoZSBuZXcgY2hpbGQocmVuKQogICAgIGZvciAoTm9kZVZlY3Rvcjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSB0YXJnZXRzLmJlZ2luKCk7IGl0ICE9IHRhcmdldHMuZW5kKCk7ICsraXQpIHsKICAg
ICAgICAgTm9kZSogY2hpbGQgPSBpdC0+Z2V0KCk7CiAKLSAgICAgICAgLy8gSWYgdGhlIG5ldyBj
aGlsZCBpcyBhbHJlYWR5IGluIHRoZSByaWdodCBwbGFjZSwgd2UncmUgZG9uZS4KLSAgICAgICAg
aWYgKG5leHQgJiYgKG5leHQgPT0gY2hpbGQgfHwgbmV4dCA9PSBjaGlsZC0+cHJldmlvdXNTaWJs
aW5nKCkpKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgLy8gUmVtb3ZlIGNoaWxkIGZy
b20gaXRzIG9sZCBwb3NpdGlvbi4KLSAgICAgICAgaWYgKENvbnRhaW5lck5vZGUqIG9sZFBhcmVu
dCA9IGNoaWxkLT5wYXJlbnROb2RlKCkpCi0gICAgICAgICAgICBvbGRQYXJlbnQtPnJlbW92ZUNo
aWxkKGNoaWxkLCBlYyk7Ci0gICAgICAgIGlmIChlYykKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLQogICAgICAgICAvLyBEdWUgdG8gYXJiaXRyYXJ5IGNvZGUgcnVubmluZyBpbiByZXNwb25z
ZSB0byBhIERPTSBtdXRhdGlvbiBldmVudCBpdCdzCiAgICAgICAgIC8vIHBvc3NpYmxlIHRoYXQg
Im5leHQiIGlzIG5vIGxvbmdlciBhIGNoaWxkIG9mICJ0aGlzIi4KICAgICAgICAgLy8gSXQncyBh
bHNvIHBvc3NpYmxlIHRoYXQgImNoaWxkIiBoYXMgYmVlbiBpbnNlcnRlZCBlbHNld2hlcmUuCkBA
IC0zMTAsOSArMzE1LDYgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQoUGFzc1Jl
ZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2UKICAgICAgICAgaWYgKGNo
aWxkLT5wYXJlbnROb2RlKCkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBBU1NFUlQo
IWNoaWxkLT5uZXh0U2libGluZygpKTsKLSAgICAgICAgQVNTRVJUKCFjaGlsZC0+cHJldmlvdXNT
aWJsaW5nKCkpOwotCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBjaGlsZCwgdGhpcyk7
CiAjZW5kaWYKQEAgLTU4Nyw3ICs1ODksMTAgQEAgYm9vbCBDb250YWluZXJOb2RlOjphcHBlbmRD
aGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJiBlYywgYm8KICAg
ICAgICAgcmV0dXJuIG5ld0NoaWxkOwogCiAgICAgTm9kZVZlY3RvciB0YXJnZXRzOwotICAgIGNv
bGxlY3RUYXJnZXROb2RlcyhuZXdDaGlsZC5nZXQoKSwgdGFyZ2V0cyk7CisgICAgY29sbGVjdENo
aWxkcmVuQW5kUmVtb3ZlRnJvbU9sZFBhcmVudChuZXdDaGlsZC5nZXQoKSwgdGFyZ2V0cywgZWMp
OworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKHRhcmdldHMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNTk5LDE4ICs2MDQsMTIgQEAg
Ym9vbCBDb250YWluZXJOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxk
LCBFeGNlcHRpb25Db2RlJiBlYywgYm8KICAgICBSZWZQdHI8Tm9kZT4gcHJldiA9IGxhc3RDaGls
ZCgpOwogICAgIGZvciAoTm9kZVZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0YXJnZXRzLmJl
Z2luKCk7IGl0ICE9IHRhcmdldHMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgTm9kZSogY2hpbGQg
PSBpdC0+Z2V0KCk7Ci0gICAgICAgIC8vIElmIGNoaWxkIGlzIGFscmVhZHkgcHJlc2VudCBpbiB0
aGUgdHJlZSwgZmlyc3QgcmVtb3ZlIGl0Ci0gICAgICAgIGlmIChDb250YWluZXJOb2RlKiBvbGRQ
YXJlbnQgPSBjaGlsZC0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICBvbGRQYXJlbnQtPnJl
bW92ZUNoaWxkKGNoaWxkLCBlYyk7Ci0gICAgICAgICAgICBpZiAoZWMpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAvLyBJZiB0aGUgY2hpbGQgaGFzIGEgcGFy
ZW50IGFnYWluLCBqdXN0IHN0b3Agd2hhdCB3ZSdyZSBkb2luZywgYmVjYXVzZQotICAgICAgICAg
ICAgLy8gdGhhdCBtZWFucyBzb21lb25lIGlzIGRvaW5nIHNvbWV0aGluZyB3aXRoIERPTSBtdXRh
dGlvbiAtLSBjYW4ndCByZS1wYXJlbnQKLSAgICAgICAgICAgIC8vIGEgY2hpbGQgdGhhdCBhbHJl
YWR5IGhhcyBhIHBhcmVudC4KLSAgICAgICAgICAgIGlmIChjaGlsZC0+cGFyZW50Tm9kZSgpKQot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlIGNo
aWxkIGhhcyBhIHBhcmVudCBhZ2FpbiwganVzdCBzdG9wIHdoYXQgd2UncmUgZG9pbmcsIGJlY2F1
c2UKKyAgICAgICAgLy8gdGhhdCBtZWFucyBzb21lb25lIGlzIGRvaW5nIHNvbWV0aGluZyB3aXRo
IERPTSBtdXRhdGlvbiAtLSBjYW4ndCByZS1wYXJlbnQKKyAgICAgICAgLy8gYSBjaGlsZCB0aGF0
IGFscmVhZHkgaGFzIGEgcGFyZW50LgorICAgICAgICBpZiAoY2hpbGQtPnBhcmVudE5vZGUoKSkK
KyAgICAgICAgICAgIGJyZWFrOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBjaGls
ZCwgdGhpcyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggYThlMzQ4YzZiY2M0OWE2ZmI0YzY3ZWM2NjU0MzI4ZDhjNGFiMWEy
ZS4uYTgxMWRjNzU5ZWMyOGI0NzUxM2FiY2Q3MzBjNzEzYzI4NGMxNmQ2YSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE4IEBACisyMDEyLTAzLTIzICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIE1hdGNoIERPTTQgc3BlYyB3aXRoIHJlc3BlY3QgdG8gRG9jdW1lbnRGcmFnbWVu
dCBpbnNlcnRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgyMDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBmYXN0L2RvbS9Ob2RlL2ZyYWdtZW50LW11dGF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2RvbS9Ob2RlL2ZyYWdtZW50LW11dGF0aW9uLmh0bWw6IFJlbW92ZWQgdGVzdHMg
dGhhdCBubyBsb25nZXIgbWFrZSBzZW5zZQorICAgICAgICBzaW5jZSB0aGUgRG9jdW1lbnRGcmFn
bWVudCBoYXMgbm8gY2hpbGRyZW4gYnkgdGhlIHRpbWUgRE9NU3VidHJlZU1vZGlmaWVkIGlzIGNh
bGxlZC4KKyAgICAgICAgKiBmYXN0L211dGF0aW9uL2RvY3VtZW50LWZyYWdtZW50LWluc2VydGlv
bi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbXV0YXRpb24vZG9jdW1lbnQt
ZnJhZ21lbnQtaW5zZXJ0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbXV0YXRpb24v
cmVwbGFjZS1jaGlsZC1vcmRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
bXV0YXRpb24vcmVwbGFjZS1jaGlsZC1vcmRlci5odG1sOiBBZGRlZC4KKwogMjAxMi0wMy0yMyAg
U2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXVzZSBi
dWZmZXIgYWxsb2NhdGlvbiBpZiBjYW52YXMgc2l6ZSBkb2VzIG5vdCBjaGFuZ2UKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL05vZGUvZnJhZ21lbnQtbXV0YXRpb24tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTm9kZS9mcmFnbWVudC1tdXRhdGlvbi1leHBlY3Rl
ZC50eHQKaW5kZXggNDFlOGZhNGQzMzA2ZjU4OWQ0OWU3NmE0NWU1MmQ1Y2M3NzAwZmQyZi4uMGYw
NGU2NmEwZTUzZTZmNWIxOTAxYzVkY2IxNzZmNjdmMmU0Zjg2OCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vTm9kZS9mcmFnbWVudC1tdXRhdGlvbi1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vTm9kZS9mcmFnbWVudC1tdXRhdGlvbi1leHBlY3RlZC50eHQK
QEAgLTEsMTcgKzEsMTMgQEAKIFRoaXMgdGVzdCBjcmVhdGVzIGEgZnJhZ21lbnQgY29udGFpbmlu
ZyB0aHJlZSBlbGVtZW50czogIkIiLCAiVSIsIGFuZCAiUCIsIGF0dGVtcHRzIHRvIGFwcGVuZENo
aWxkIHRoaXMgZnJhZ21lbnQgYW5kIHN0dWRpZXMgZWZmZWN0cyBvZiBtdXRhdGlvbiBldmVudHMg
b24gdGhlIGZyYWdtZW50LgogCiBJbnNlcnRpbmcgYW4gZWxlbWVudCBpbiBmcm9udCBvZiB0aGUg
bmV4dCBpdGVtIGluIGZyYWdtZW50IHNob3VsZCBub3QgYWZmZWN0IHRoZSByZXN1bHQ6IFBBU1MK
LVJlbW92aW5nIG5leHQgaXRlbSBzaG91bGQgbm90IGFib3J0IGl0ZXJhdGlvbjogUEFTUwogQXBw
ZW5kaW5nIGFuIGVsZW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZnJhZ21lbnQgc2hvdWxkIG5vdCBh
ZmZlY3QgdGhlIHJlc3VsdDogUEFTUwogQ29udGludWFsbHkgcmUtYXBwZW5kaW5nIHJlbW92ZWQg
ZWxlbWVudCB0byB0aGUgZnJhZ21lbnQgc2hvdWxkIGV2ZW50dWFsbHkgdGhyb3cgTk9UX0ZPVU5E
X0VSUjogUEFTUwotTW92aW5nIG5leHQgaXRlbSB0byBiZWNvbWUgcHJldmlvdXMgc2libGluZyBv
ZiB0aGUgcmUtcGFyZW50ZWUgc2hvdWxkIG5vdCByZXN1bHQgaW4gc3RhY2sgZXhoYXVzdGlvbjog
UEFTUwogCiBUaGlzIHRlc3QgY3JlYXRlcyBhIGZyYWdtZW50IGNvbnRhaW5pbmcgdGhyZWUgZWxl
bWVudHM6ICJCIiwgIlUiLCBhbmQgIlAiLCBhdHRlbXB0cyB0byBpbnNlcnRCZWZvcmUgdGhpcyBm
cmFnbWVudCBhbmQgc3R1ZGllcyBlZmZlY3RzIG9mIG11dGF0aW9uIGV2ZW50cyBvbiB0aGUgZnJh
Z21lbnQuCiAKIEluc2VydGluZyBhbiBlbGVtZW50IGluIGZyb250IG9mIHRoZSBuZXh0IGl0ZW0g
aW4gZnJhZ21lbnQgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3VsdDogUEFTUwotUmVtb3Zpbmcg
bmV4dCBpdGVtIHNob3VsZCBub3QgYWJvcnQgaXRlcmF0aW9uOiBQQVNTCiBBcHBlbmRpbmcgYW4g
ZWxlbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmcmFnbWVudCBzaG91bGQgbm90IGFmZmVjdCB0aGUg
cmVzdWx0OiBQQVNTCiBDb250aW51YWxseSByZS1hcHBlbmRpbmcgcmVtb3ZlZCBlbGVtZW50IHRv
IHRoZSBmcmFnbWVudCBzaG91bGQgZXZlbnR1YWxseSB0aHJvdyBOT1RfRk9VTkRfRVJSOiBQQVNT
Ci1Nb3ZpbmcgbmV4dCBpdGVtIHRvIGJlY29tZSBwcmV2aW91cyBzaWJsaW5nIG9mIHRoZSByZS1w
YXJlbnRlZSBzaG91bGQgbm90IHJlc3VsdCBpbiBzdGFjayBleGhhdXN0aW9uOiBQQVNTCiAKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTm9kZS9mcmFnbWVudC1tdXRhdGlvbi5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTm9kZS9mcmFnbWVudC1tdXRhdGlvbi5odG1sCmlu
ZGV4IDAzN2UxN2JmNTAwMmY4NDY5MWYxODA3NjA2NjRmYzQxNjMwYmMzYWUuLmY4OTUwNmZkYWRm
Y2UyY2RjNDVkM2NmMTlhYzlmNjQ1MGMxY2YwYTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL05vZGUvZnJhZ21lbnQtbXV0YXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9Ob2RlL2ZyYWdtZW50LW11dGF0aW9uLmh0bWwKQEAgLTExMywxMSArMTEzLDYgQEAgZnVu
Y3Rpb24gcnVuVGVzdChtZXRob2ROYW1lLCBtZXRob2QpCiAgICAgICAgIGZyYWcuaW5zZXJ0QmVm
b3JlKG1pc3NpbmcsIGZyYWcuZmlyc3RDaGlsZCk7CiAgICAgfSwgZXhwZWN0Tm9kZXMoIkJVUCIp
KTsKIAotICAgIHRlc3RGcmFnbWVudChtZXRob2QsICJSZW1vdmluZyBuZXh0IGl0ZW0gc2hvdWxk
IG5vdCBhYm9ydCBpdGVyYXRpb24iLCBmdW5jdGlvbihldnQsIGZyYWcpCi0gICAgewotICAgICAg
ICBmcmFnLnJlbW92ZUNoaWxkKGZyYWcuZmlyc3RDaGlsZCk7Ci0gICAgfSwgZXhwZWN0Tm9kZXMo
IkJVUCIpKTsKLQogICAgIHZhciBleHRyYSA9IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZW0iKSk7CiAgICAgdGVzdEZyYWdtZW50KG1ldGhvZCwgIkFw
cGVuZGluZyBhbiBlbGVtZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZyYWdtZW50IHNob3VsZCBub3Qg
YWZmZWN0IHRoZSByZXN1bHQiLCBmdW5jdGlvbihldnQsIGZyYWcpCiAgICAgewpAQCAtMTI4LDEx
ICsxMjMsNiBAQCBmdW5jdGlvbiBydW5UZXN0KG1ldGhvZE5hbWUsIG1ldGhvZCkKICAgICB7CiAg
ICAgICAgIHN0YXNoLmluc2VydEJlZm9yZShmcmFnLmxhc3RDaGlsZCwgc3Rhc2guZmlyc3RDaGls
ZCk7CiAgICAgfSwgZXhwZWN0RXhjZXB0aW9uKDgpLCB0cnVlKTsKLQotICAgIHRlc3RGcmFnbWVu
dChtZXRob2QsICJNb3ZpbmcgbmV4dCBpdGVtIHRvIGJlY29tZSBwcmV2aW91cyBzaWJsaW5nIG9m
IHRoZSByZS1wYXJlbnRlZSBzaG91bGQgbm90IHJlc3VsdCBpbiBzdGFjayBleGhhdXN0aW9uIiwg
ZnVuY3Rpb24oZXZ0LCBmcmFnLCBzdGFzaCkKLSAgICB7Ci0gICAgICAgIGRvY3VtZW50LmJvZHku
aW5zZXJ0QmVmb3JlKGZyYWcuZmlyc3RDaGlsZCwgc3Rhc2gpOwotICAgIH0sIGV4cGVjdE5vZGVz
KCJCVVAiKSk7CiAgICAgcHJpbnRMb2cobWV0aG9kTmFtZSk7CiB9CiBmdW5jdGlvbiBydW5UZXN0
cygpCkBAIC0xNDUsNCArMTM1LDQgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKQogPC9oZWFkPgogPGJv
ZHkgb25sb2FkPSJydW5UZXN0cygpIj4KIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0
aW9uL2RvY3VtZW50LWZyYWdtZW50LWluc2VydGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L211dGF0aW9uL2RvY3VtZW50LWZyYWdtZW50LWluc2VydGlvbi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjJmM2VlM2Y0M2FhOTljNjJiYTM4YWViZTEzNzQ3NDJiNzJjZTEzOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZG9jdW1lbnQtZnJhZ21l
bnQtaW5zZXJ0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwIEBACitJbnNlcnRpbmcgRG9j
dW1lbnRGcmFnbWVudHMgc2hvdWxkIHJlbW92ZSBhbGwgY2hpbGRyZW4gb2YgdGhlIGZyYWdtZW50
IGJlZm9yZSBpbnNlcnRpbmcgdGhlIGNoaWxkcmVuLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworVGVzdGluZyBhcHBlbmRDaGlsZAorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIK
K1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDAKK1BBU1MgbXV0YXRpb25z
WzBdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMgorUEFTUyBtdXRhdGlvbnNbMV0uYWRkZWROb2Rl
cy5sZW5ndGggaXMgMgorUEFTUyBtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAw
CisKK1Rlc3RpbmcgaW5zZXJ0QmVmb3JlCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMgorUEFT
UyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMAorUEFTUyBtdXRhdGlvbnNbMF0u
cmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxl
bmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDAKKwor
VGVzdGluZyByZXBsYWNlQ2hpbGQKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCitQQVNTIG11
dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAwCitQQVNTIG11dGF0aW9uc1swXS5yZW1v
dmVkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzFdLmFkZGVkTm9kZXMubGVuZ3Ro
IGlzIDIKK1BBU1MgbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMQorCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kb2N1bWVudC1mcmFnbWVudC1pbnNlcnRpb24u
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZG9jdW1lbnQtZnJhZ21lbnQtaW5zZXJ0
aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FjNDZjZmY0MzIwN2E5ZTJiZjBkOWZhNmMzYzNkZWMyYWU1
ZmZlNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZG9jdW1l
bnQtZnJhZ21lbnQtaW5zZXJ0aW9uLmh0bWwKQEAgLTAsMCArMSw3NyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignSW5zZXJ0aW5nIERvY3VtZW50RnJhZ21lbnRzIHNo
b3VsZCByZW1vdmUgYWxsIGNoaWxkcmVuIG9mIHRoZSBmcmFnbWVudCBiZWZvcmUgaW5zZXJ0aW5n
IHRoZSBjaGlsZHJlbi4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5j
dGlvbiBjcmVhdGVPYnNlcnZlZEZyYWdtZW50KCkgeworICAgIHZhciBmcmFnbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdiJykpOworICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2knKSk7CisgICAgb2JzZXJ2ZXIub2JzZXJ2ZShmcmFnbWVu
dCwge2NoaWxkTGlzdDogdHJ1ZX0pOworICAgIHJldHVybiBmcmFnbWVudDsKK30KKworZnVuY3Rp
b24gY3JlYXRlT2JzZXJ2ZWREaXYoKSB7CisgICAgcmV0dXJuIGRpdjsKK30KKworZnVuY3Rpb24g
Y2FsbGJhY2sobXV0YXRpb25zKSB7CisgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsK
K30KK3ZhciBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGNhbGxiYWNrKTsK
KworZnVuY3Rpb24gdGVzdEFwcGVuZENoaWxkKCkgeworICAgIGRlYnVnKCdUZXN0aW5nIGFwcGVu
ZENoaWxkJyk7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7Y2hpbGRMaXN0OiB0cnVlfSk7CisgICAgZGl2LmFw
cGVuZENoaWxkKGNyZWF0ZU9ic2VydmVkRnJhZ21lbnQoKSk7CisgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMicpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoJywgJzAnKTsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzInKTsK
KyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcyJyk7
CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcw
Jyk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgdGVzdEluc2VydEJlZm9yZSgpOworICAg
IH0sIDApOworfQorCitmdW5jdGlvbiB0ZXN0SW5zZXJ0QmVmb3JlKCkgeworICAgIGRlYnVnKCdU
ZXN0aW5nIGluc2VydEJlZm9yZScpOworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
c3BhbicpKTsKKyAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwge2NoaWxkTGlzdDogdHJ1ZX0pOwor
ICAgIGRpdi5pbnNlcnRCZWZvcmUoY3JlYXRlT2JzZXJ2ZWRGcmFnbWVudCgpLCBkaXYuZmlyc3RD
aGlsZCk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9ucy5sZW5ndGgnLCAnMicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFk
ZGVkTm9kZXMubGVuZ3RoJywgJzAnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5y
ZW1vdmVkTm9kZXMubGVuZ3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sx
XS5hZGRlZE5vZGVzLmxlbmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcwJyk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAg
ICAgdGVzdFJlcGxhY2VDaGlsZCgpOworICAgIH0sIDApOworfQorCitmdW5jdGlvbiB0ZXN0UmVw
bGFjZUNoaWxkKCkgeworICAgIGRlYnVnKCdUZXN0aW5nIHJlcGxhY2VDaGlsZCcpOworICAgIHZh
ciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBkaXYuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICBvYnNlcnZlci5vYnNlcnZl
KGRpdiwge2NoaWxkTGlzdDogdHJ1ZX0pOworICAgIGRpdi5yZXBsYWNlQ2hpbGQoY3JlYXRlT2Jz
ZXJ2ZWRGcmFnbWVudCgpLCBkaXYuZmlyc3RDaGlsZCk7CisgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMicpOworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoJywgJzAnKTsKKyAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzInKTsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcyJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcxJyk7
CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7
Cit9CisKK3Rlc3RBcHBlbmRDaGlsZCgpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L211dGF0aW9uL3JlcGxhY2UtY2hpbGQtb3JkZXItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9yZXBsYWNlLWNoaWxkLW9yZGVyLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40NTdmOWY5ODc3ZDU2MTEwYzVhYTFhZjFhZmI1OGVjNzQ5ZDA0YjA4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9yZXBsYWNlLWNoaWxkLW9y
ZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACityZXBsYWNlQ2hpbGQgc2hvdWxkIHJl
bW92ZSBub2RlcyBmcm9tIHRoZWlyIG9sZCBwYXJlbnRzIGJlZm9yZSByZW1vdmluZyB0aGUgbm9k
ZSB0by1iZS1yZXBsYWNlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
bXV0YXRpb25zLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0
aCBpcyAwCitQQVNTIG11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDEKK1BBU1Mg
bXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlc1swXS50YWdOYW1lIGlzICJCIgorUEFTUyBtdXRhdGlv
bnNbMV0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMV0ucmVtb3ZlZE5v
ZGVzLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1sxXS5hZGRlZE5vZGVzWzBdLnRhZ05hbWUg
aXMgIkIiCitQQVNTIG11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXNbMF0udGFnTmFtZSBpcyAiSSIK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL3JlcGxhY2UtY2hpbGQtb3JkZXIuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vcmVwbGFjZS1jaGlsZC1vcmRlci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRiODQyNTUxNjJmZDNkODRhNjQxYjQ2MTc2MTVhYmNiZTdiYjM2M2IKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL3JlcGxhY2UtY2hpbGQtb3Jk
ZXIuaHRtbApAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCdyZXBsYWNlQ2hpbGQgc2hvdWxkIHJlbW92ZSBub2RlcyBmcm9tIHRoZWlyIG9sZCBw
YXJlbnRzIGJlZm9yZSByZW1vdmluZyB0aGUgbm9kZSB0by1iZS1yZXBsYWNlZC4nKTsKK3dpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0
aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CisgICAgd2luZG93Lm11dGF0aW9ucyA9
IG11dGF0aW9uczsKK30pOwordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OwordmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CitzcGFuLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2InKSk7CitkaXYuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnaScpKTsKK29ic2VydmVyLm9ic2VydmUoZGl2LCB7Y2hpbGRM
aXN0OiB0cnVlfSk7CitvYnNlcnZlci5vYnNlcnZlKHNwYW4sIHtjaGlsZExpc3Q6IHRydWV9KTsK
K2Rpdi5yZXBsYWNlQ2hpbGQoc3Bhbi5maXJzdENoaWxkLCBkaXYuZmlyc3RDaGlsZCk7CitzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzIn
KTsKKyAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoJywgJzAnKTsK
KyAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMScpOwor
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzWzBdLnRhZ05hbWUnLCAnIkIi
Jyk7CisgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcxJyk7
CisgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzEnKTsK
KyAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmFkZGVkTm9kZXNbMF0udGFnTmFtZScsICciQiIn
KTsKKyAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlc1swXS50YWdOYW1lJywg
JyJJIicpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSwgMCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133558</attachid>
            <date>2012-03-23 14:17:36 -0700</date>
            <delta_ts>2012-03-23 15:18:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82089-20120323141735.patch</filename>
            <type>text/plain</type>
            <size>19468</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU2YmY0YTY4YjEyZGU2
ZjA1YzNmNDMwNjY5MjBkM2I2YTVjNGM4Mi4uYmE4OTY1ZmE1NWY0MWNlMDE4ZjkxZDFjZTIwZTFl
NTc2ZmQ2OGM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTAzLTIzICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1hdGNoIERPTTQgc3BlYyB3
aXRoIHJlc3BlY3QgdG8gRG9jdW1lbnRGcmFnbWVudCBpbnNlcnRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMDg5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRE9NNCBzcGVjaWZpZXMgdGhlIGJlaGF2
aW9yIG9mIGFwcGVuZENoaWxkLCBpbnNlcnRCZWZvcmUsIGFuZCByZXBsYWNlQ2hpbGQKKyAgICAg
ICAgaW4gdGVybXMgb2YgIm11dGF0aW9uIGFsZ29yaXRobXMiOgorCisgICAgICAgIGh0dHA6Ly9k
dmNzLnczLm9yZy9oZy9kb21jb3JlL3Jhdy1maWxlL3RpcC9PdmVydmlldy5odG1sI211dGF0aW9u
LWFsZ29yaXRobXMKKworICAgICAgICBUaGlzIGNoYW5nZSB1cGRhdGVzIFdlYktpdCB0byBtYXRj
aCwgaW4gcGFydGljdWxhciB3aXRoIHJlZ2FyZCB0byBEb2N1bWVudEZyYWdtZW50cy4KKyAgICAg
ICAgUHJldmlvdXNseSwgQ29udGFpbmVyTm9kZSB3b3VsZCByZW1vdmUgbm9kZXMgb25lIGF0IGEg
dGltZSwgdGhlbiBhZGQgdGhlbSB0byB0aGUgbmV3IHBhcmVudC4KKyAgICAgICAgV2hlbiBjb21i
aW5lZCB3aXRoIE11dGF0aW9uT2JzZXJ2ZXJzLCB0aGlzIHJlc3VsdHMgaW4gb3Zlcmx5LXZlcmJv
c2UgbXV0YXRpb24gcmVjb3Jkcy4KKyAgICAgICAgTm93IHdlIGNyZWF0ZSBhcyBmZXcgcmVjb3Jk
cyBhcyBwb3NzaWJsZSwgbWF0Y2hpbmcgdGhlIHNwZWMgYXMgd2VsbCBhcyBHZWNrbydzIGltcGxl
bWVudGF0aW9uCisgICAgICAgIG9mIE11dGF0aW9uT2JzZXJ2ZXJzLgorCisgICAgICAgIE9uZSBv
dGhlciBjaGFuZ2UgdG8gV2ViS2l0IGxvZ2ljIHRoYXQgbWF0Y2hlcyBET000IGJlaGF2aW9yIGlz
IHRoYXQgcmVwbGFjZUNoaWxkCisgICAgICAgIG5vdyByZW1vdmVzIHRoZSBuZXcgY2hpbGQgZnJv
bSBpdHMgb2xkIHBhcmVudCBiZWZvcmUgcmVtb3ZpbmcgdGhlIGNoaWxkLXRvLWJlLXJlcGxhY2Vk
LgorCisgICAgICAgIE5vdGUgdGhhdCB3ZSBzdGlsbCBuZWVkIHRvIGNoZWNrIHZhbGlkaXR5IGVh
Y2ggdGltZSB0aHJvdWdoIHRoZSBsb29wLAorICAgICAgICBzaW5jZSBpbnNlcnRpbmcgYSBub2Rl
IG1heSBkaXNwYXRjaCBldmVudHMuIEluIGEgZnV0dXJlIGNoYW5nZSwgSSBob3BlCisgICAgICAg
IHRvIG1vdmUgdGhlc2UgZXZlbnRzIHNvIHRoYXQgdGhleSBmaXJlIG9ubHkgYWZ0ZXIgYWxsIG5v
ZGVzIGFyZSBpbnNlcnRlZCwKKyAgICAgICAgYnV0IHRoYXQncyB0b28gbXVjaCB0byB0YWNrbGUg
YWxsIGluIG9uZS4KKworICAgICAgICBUZXN0czogZmFzdC9tdXRhdGlvbi9kb2N1bWVudC1mcmFn
bWVudC1pbnNlcnRpb24uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9tdXRhdGlvbi9yZXBsYWNl
LWNoaWxkLW9yZGVyLmh0bWwKKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbGxlY3RDaGlsZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQpOiBO
ZXcgaGVscGVyIG1ldGhvZAorICAgICAgICBjb21iaW5pbmcgY29sbGVjdFRhcmdldE5vZGVzKCkg
d2l0aCB0aGUgcmVtb3ZhbCBvZiB0aGUgY29sbGVjdGVkIG5vZGVzIGZyb20KKyAgICAgICAgdGhl
aXIgb2xkIHBhcmVudCwgaWYgYW55LgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
aW5zZXJ0QmVmb3JlKTogVXNlIG5ldyBoZWxwZXIgbWV0aG9kIGluc3RlYWQKKyAgICAgICAgb2Yg
cmVtb3Zpbmcgbm9kZXMgb25lIGF0IGEgdGltZSBmcm9tIHRoZSBmcmFnbWVudC4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZCk6IGRpdHRvLiBJbiBhZGRpdGlv
biwgY2hhbmdlZAorICAgICAgICBvcmRlcmluZyB0byBtYXRjaCBET000LCByZW1vdmluZyBuZXdD
aGlsZCBmcm9tIGl0cyBvbGQgcGFyZW50IGJlZm9yZQorICAgICAgICByZW1vdmluZyB0aGUgdG8t
YmUtcmVwbGFjZWQgY2hpbGQuIEFsc28gcmVtb3ZlZCBzb21lIHJlZHVuZGFudCBhc3NlcnRzCisg
ICAgICAgIGFuZCBtb3ZlZCB0aGUgImRvIG5vdGhpbmciIGNoZWNrIG91dCBvZiB0aGUgbG9vcC4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkKTogVXNlIG5ldyBo
ZWxwZXIgbWV0aG9kLgorCiAyMDEyLTAzLTIzICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bn
b29nbGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQSSAoSlNFUCk6IEludHJvZHVjaW5n
IFBlZXJDb25uZWN0aW9uMDAgYW5kIEljZUNhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKaW5kZXggNWU4YzczOGVlMjRiZmY0NjhjNWJlYjkzNzg4YTI5NmVlYzI5NDQ1OC4u
Y2VkODI0MjRjNjdjMjE2MjFhOTFmNjVjZTUzNjBiNmNjZGM2MTU1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcApAQCAtNzYsNiArNzYsMTggQEAgc3RhdGljIHZvaWQgY29sbGVj
dFRhcmdldE5vZGVzKE5vZGUqIG5vZGUsIE5vZGVWZWN0b3ImIG5vZGVzKQogICAgIGNvbGxlY3RO
b2Rlcyhub2RlLCBub2Rlcyk7CiB9CiAKK3N0YXRpYyB2b2lkIGNvbGxlY3RDaGlsZHJlbkFuZFJl
bW92ZUZyb21PbGRQYXJlbnQoTm9kZSogbm9kZSwgTm9kZVZlY3RvciYgbm9kZXMsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGlmIChub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5U
X0ZSQUdNRU5UX05PREUpIHsKKyAgICAgICAgbm9kZXMuYXBwZW5kKG5vZGUpOworICAgICAgICBp
ZiAoQ29udGFpbmVyTm9kZSogb2xkUGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpKQorICAgICAg
ICAgICAgb2xkUGFyZW50LT5yZW1vdmVDaGlsZChub2RlLCBlYyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgY29sbGVjdE5vZGVzKG5vZGUsIG5vZGVzKTsKKyAgICB0b0NvbnRhaW5lck5v
ZGUobm9kZSktPnJlbW92ZUNoaWxkcmVuKCk7Cit9CisKIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVt
b3ZlQWxsQ2hpbGRyZW4oKQogewogICAgIHJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXI8Tm9k
ZSwgQ29udGFpbmVyTm9kZT4odGhpcyk7CkBAIC0xMzQsMTMgKzE0NiwxNCBAQCBib29sIENvbnRh
aW5lck5vZGU6Omluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBy
ZWZDaGlsZCwgRXhjZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgTm9kZVZl
Y3RvciB0YXJnZXRzOwotICAgIGNvbGxlY3RUYXJnZXROb2RlcyhuZXdDaGlsZC5nZXQoKSwgdGFy
Z2V0cyk7Ci0gICAgaWYgKHRhcmdldHMuaXNFbXB0eSgpKQorICAgIGlmIChyZWZDaGlsZC0+cHJl
dmlvdXNTaWJsaW5nKCkgPT0gbmV3Q2hpbGQgfHwgcmVmQ2hpbGQgPT0gbmV3Q2hpbGQpIC8vIG5v
dGhpbmcgdG8gZG8KICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAvLyBOb3cgYWN0dWFsbHkg
YWRkIHRoZSBjaGlsZChyZW4pCi0gICAgaWYgKHJlZkNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSA9
PSBuZXdDaGlsZCB8fCByZWZDaGlsZCA9PSBuZXdDaGlsZCkgLy8gbm90aGluZyB0byBkbworICAg
IE5vZGVWZWN0b3IgdGFyZ2V0czsKKyAgICBjb2xsZWN0Q2hpbGRyZW5BbmRSZW1vdmVGcm9tT2xk
UGFyZW50KG5ld0NoaWxkLmdldCgpLCB0YXJnZXRzLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHRhcmdldHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCkBAIC0xNTIsMTIgKzE2
NSw2IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4g
bmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlCiAgICAgZm9yIChOb2RlVmVjdG9yOjpjb25z
dF9pdGVyYXRvciBpdCA9IHRhcmdldHMuYmVnaW4oKTsgaXQgIT0gdGFyZ2V0cy5lbmQoKTsgKytp
dCkgewogICAgICAgICBOb2RlKiBjaGlsZCA9IGl0LT5nZXQoKTsKIAotICAgICAgICAvLyBJZiBj
aGlsZCBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIHRyZWUsIGZpcnN0IHJlbW92ZSBpdCBmcm9t
IHRoZSBvbGQgbG9jYXRpb24uCi0gICAgICAgIGlmIChDb250YWluZXJOb2RlKiBvbGRQYXJlbnQg
PSBjaGlsZC0+cGFyZW50Tm9kZSgpKQotICAgICAgICAgICAgb2xkUGFyZW50LT5yZW1vdmVDaGls
ZChjaGlsZCwgZWMpOwotICAgICAgICBpZiAoZWMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KICAgICAgICAgLy8gRHVlIHRvIGFyYml0cmFyeSBjb2RlIHJ1bm5pbmcgaW4gcmVzcG9uc2Ug
dG8gYSBET00gbXV0YXRpb24gZXZlbnQgaXQncwogICAgICAgICAvLyBwb3NzaWJsZSB0aGF0ICJu
ZXh0IiBpcyBubyBsb25nZXIgYSBjaGlsZCBvZiAidGhpcyIuCiAgICAgICAgIC8vIEl0J3MgYWxz
byBwb3NzaWJsZSB0aGF0ICJjaGlsZCIgaGFzIGJlZW4gaW5zZXJ0ZWQgZWxzZXdoZXJlLgpAQCAt
MjU5LDcgKzI2Niw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKFBhc3NSZWZQ
dHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlCiAKICAgICBpZiAob2xkQ2hp
bGQgPT0gbmV3Q2hpbGQpIC8vIG5vdGhpbmcgdG8gZG8KICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgCisKICAgICAvLyBNYWtlIHN1cmUgcmVwbGFjaW5nIHRoZSBvbGQgY2hpbGQgd2l0aCB0aGUg
bmV3IGlzIG9rCiAgICAgY2hlY2tSZXBsYWNlQ2hpbGQobmV3Q2hpbGQuZ2V0KCksIG9sZENoaWxk
LCBlYyk7CiAgICAgaWYgKGVjKQpAQCAtMjcxLDYgKzI3OCwxNCBAQCBib29sIENvbnRhaW5lck5v
ZGU6OnJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGls
ZCwgRXhjZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgTm9kZVZlY3RvciB0
YXJnZXRzOworICAgIGNvbGxlY3RDaGlsZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQobmV3Q2hp
bGQuZ2V0KCksIHRhcmdldHMsIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChvbGRDaGlsZC0+cGFyZW50Tm9kZSgpICE9IHRoaXMpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKwogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCiAgICAgQ2hpbGRM
aXN0TXV0YXRpb25TY29wZSBtdXRhdGlvbih0aGlzKTsKICNlbmRpZgpAQCAtMjg0LDIzICsyOTks
MTMgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBu
ZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2UKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIE5vZGVWZWN0b3IgdGFyZ2V0czsKLSAgICBjb2xsZWN0VGFyZ2V0Tm9k
ZXMobmV3Q2hpbGQuZ2V0KCksIHRhcmdldHMpOworICAgIGlmIChuZXh0ICYmIChuZXh0LT5wcmV2
aW91c1NpYmxpbmcoKSA9PSBuZXdDaGlsZCB8fCBuZXh0ID09IG5ld0NoaWxkKSkgLy8gbm90aGlu
ZyB0byBkbworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEFkZCB0aGUgbmV3IGNoaWxk
KHJlbikKICAgICBmb3IgKE5vZGVWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGFyZ2V0cy5i
ZWdpbigpOyBpdCAhPSB0YXJnZXRzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIE5vZGUqIGNoaWxk
ID0gaXQtPmdldCgpOwogCi0gICAgICAgIC8vIElmIHRoZSBuZXcgY2hpbGQgaXMgYWxyZWFkeSBp
biB0aGUgcmlnaHQgcGxhY2UsIHdlJ3JlIGRvbmUuCi0gICAgICAgIGlmIChuZXh0ICYmIChuZXh0
ID09IGNoaWxkIHx8IG5leHQgPT0gY2hpbGQtPnByZXZpb3VzU2libGluZygpKSkKLSAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgIC8vIFJlbW92ZSBjaGlsZCBmcm9tIGl0cyBvbGQgcG9zaXRp
b24uCi0gICAgICAgIGlmIChDb250YWluZXJOb2RlKiBvbGRQYXJlbnQgPSBjaGlsZC0+cGFyZW50
Tm9kZSgpKQotICAgICAgICAgICAgb2xkUGFyZW50LT5yZW1vdmVDaGlsZChjaGlsZCwgZWMpOwot
ICAgICAgICBpZiAoZWMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAgICAgLy8g
RHVlIHRvIGFyYml0cmFyeSBjb2RlIHJ1bm5pbmcgaW4gcmVzcG9uc2UgdG8gYSBET00gbXV0YXRp
b24gZXZlbnQgaXQncwogICAgICAgICAvLyBwb3NzaWJsZSB0aGF0ICJuZXh0IiBpcyBubyBsb25n
ZXIgYSBjaGlsZCBvZiAidGhpcyIuCiAgICAgICAgIC8vIEl0J3MgYWxzbyBwb3NzaWJsZSB0aGF0
ICJjaGlsZCIgaGFzIGJlZW4gaW5zZXJ0ZWQgZWxzZXdoZXJlLgpAQCAtMzEwLDkgKzMxNSw2IEBA
IGJvb2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hp
bGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlCiAgICAgICAgIGlmIChjaGlsZC0+cGFyZW50Tm9kZSgp
KQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgQVNTRVJUKCFjaGlsZC0+bmV4dFNpYmxp
bmcoKSk7Ci0gICAgICAgIEFTU0VSVCghY2hpbGQtPnByZXZpb3VzU2libGluZygpKTsKLQogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bEluc2VydERPTU5vZGUoZG9jdW1lbnQoKSwgY2hpbGQsIHRoaXMpOwogI2VuZGlmCkBAIC01ODcs
NyArNTg5LDEwIEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxO
b2RlPiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvCiAgICAgICAgIHJldHVybiBuZXdD
aGlsZDsKIAogICAgIE5vZGVWZWN0b3IgdGFyZ2V0czsKLSAgICBjb2xsZWN0VGFyZ2V0Tm9kZXMo
bmV3Q2hpbGQuZ2V0KCksIHRhcmdldHMpOworICAgIGNvbGxlY3RDaGlsZHJlbkFuZFJlbW92ZUZy
b21PbGRQYXJlbnQobmV3Q2hpbGQuZ2V0KCksIHRhcmdldHMsIGVjKTsKKyAgICBpZiAoZWMpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICh0YXJnZXRzLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKQEAgLTU5OSwxOCArNjA0LDEyIEBAIGJvb2wgQ29udGFpbmVyTm9k
ZTo6YXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYg
ZWMsIGJvCiAgICAgUmVmUHRyPE5vZGU+IHByZXYgPSBsYXN0Q2hpbGQoKTsKICAgICBmb3IgKE5v
ZGVWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGFyZ2V0cy5iZWdpbigpOyBpdCAhPSB0YXJn
ZXRzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIE5vZGUqIGNoaWxkID0gaXQtPmdldCgpOwotICAg
ICAgICAvLyBJZiBjaGlsZCBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIHRyZWUsIGZpcnN0IHJl
bW92ZSBpdAotICAgICAgICBpZiAoQ29udGFpbmVyTm9kZSogb2xkUGFyZW50ID0gY2hpbGQtPnBh
cmVudE5vZGUoKSkgewotICAgICAgICAgICAgb2xkUGFyZW50LT5yZW1vdmVDaGlsZChjaGlsZCwg
ZWMpOwotICAgICAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgICAgICAgICAgLy8gSWYgdGhlIGNoaWxkIGhhcyBhIHBhcmVudCBhZ2FpbiwganVzdCBz
dG9wIHdoYXQgd2UncmUgZG9pbmcsIGJlY2F1c2UKLSAgICAgICAgICAgIC8vIHRoYXQgbWVhbnMg
c29tZW9uZSBpcyBkb2luZyBzb21ldGhpbmcgd2l0aCBET00gbXV0YXRpb24gLS0gY2FuJ3QgcmUt
cGFyZW50Ci0gICAgICAgICAgICAvLyBhIGNoaWxkIHRoYXQgYWxyZWFkeSBoYXMgYSBwYXJlbnQu
Ci0gICAgICAgICAgICBpZiAoY2hpbGQtPnBhcmVudE5vZGUoKSkKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZSBjaGlsZCBoYXMgYSBwYXJlbnQg
YWdhaW4sIGp1c3Qgc3RvcCB3aGF0IHdlJ3JlIGRvaW5nLCBiZWNhdXNlCisgICAgICAgIC8vIHRo
YXQgbWVhbnMgc29tZW9uZSBpcyBkb2luZyBzb21ldGhpbmcgd2l0aCBET00gbXV0YXRpb24gLS0g
Y2FuJ3QgcmUtcGFyZW50CisgICAgICAgIC8vIGEgY2hpbGQgdGhhdCBhbHJlYWR5IGhhcyBhIHBh
cmVudC4KKyAgICAgICAgaWYgKGNoaWxkLT5wYXJlbnROb2RlKCkpCisgICAgICAgICAgICBicmVh
azsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbEluc2VydERPTU5vZGUoZG9jdW1lbnQoKSwgY2hpbGQsIHRoaXMpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGE4ZTM0OGM2YmNjNDlhNmZiNGM2N2VjNjY1NDMyOGQ4YzRhYjFhMmUuLmE4MTFkYzc1OWVjMjhi
NDc1MTNhYmNkNzMwYzcxM2MyODRjMTZkNmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0w
My0yMyAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYXRjaCBE
T000IHNwZWMgd2l0aCByZXNwZWN0IHRvIERvY3VtZW50RnJhZ21lbnQgaW5zZXJ0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjA4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vTm9k
ZS9mcmFnbWVudC1tdXRhdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vTm9k
ZS9mcmFnbWVudC1tdXRhdGlvbi5odG1sOiBSZW1vdmVkIHRlc3RzIHRoYXQgbm8gbG9uZ2VyIG1h
a2Ugc2Vuc2UKKyAgICAgICAgc2luY2UgdGhlIERvY3VtZW50RnJhZ21lbnQgaGFzIG5vIGNoaWxk
cmVuIGJ5IHRoZSB0aW1lIERPTVN1YnRyZWVNb2RpZmllZCBpcyBjYWxsZWQuCisgICAgICAgICog
ZmFzdC9tdXRhdGlvbi9kb2N1bWVudC1mcmFnbWVudC1pbnNlcnRpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L211dGF0aW9uL2RvY3VtZW50LWZyYWdtZW50LWluc2VydGlv
bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L211dGF0aW9uL3JlcGxhY2UtY2hpbGQtb3Jk
ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L211dGF0aW9uL3JlcGxhY2Ut
Y2hpbGQtb3JkZXIuaHRtbDogQWRkZWQuCisKIDIwMTItMDMtMjMgIFNhbWkgS3lvc3RpbGEgIDxz
a3lvc3RpbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV1c2UgYnVmZmVyIGFsbG9jYXRpb24g
aWYgY2FudmFzIHNpemUgZG9lcyBub3QgY2hhbmdlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9Ob2RlL2ZyYWdtZW50LW11dGF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL05vZGUvZnJhZ21lbnQtbXV0YXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDQxZThm
YTRkMzMwNmY1ODlkNDllNzZhNDVlNTJkNWNjNzcwMGZkMmYuLjBmMDRlNjZhMGU1M2U2ZjViMTkw
MWM1ZGNiMTc2ZjY3ZjJlNGY4NjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL05v
ZGUvZnJhZ21lbnQtbXV0YXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL05vZGUvZnJhZ21lbnQtbXV0YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0xLDE3ICsxLDEzIEBA
CiBUaGlzIHRlc3QgY3JlYXRlcyBhIGZyYWdtZW50IGNvbnRhaW5pbmcgdGhyZWUgZWxlbWVudHM6
ICJCIiwgIlUiLCBhbmQgIlAiLCBhdHRlbXB0cyB0byBhcHBlbmRDaGlsZCB0aGlzIGZyYWdtZW50
IGFuZCBzdHVkaWVzIGVmZmVjdHMgb2YgbXV0YXRpb24gZXZlbnRzIG9uIHRoZSBmcmFnbWVudC4K
IAogSW5zZXJ0aW5nIGFuIGVsZW1lbnQgaW4gZnJvbnQgb2YgdGhlIG5leHQgaXRlbSBpbiBmcmFn
bWVudCBzaG91bGQgbm90IGFmZmVjdCB0aGUgcmVzdWx0OiBQQVNTCi1SZW1vdmluZyBuZXh0IGl0
ZW0gc2hvdWxkIG5vdCBhYm9ydCBpdGVyYXRpb246IFBBU1MKIEFwcGVuZGluZyBhbiBlbGVtZW50
IGF0IHRoZSBlbmQgb2YgdGhlIGZyYWdtZW50IHNob3VsZCBub3QgYWZmZWN0IHRoZSByZXN1bHQ6
IFBBU1MKIENvbnRpbnVhbGx5IHJlLWFwcGVuZGluZyByZW1vdmVkIGVsZW1lbnQgdG8gdGhlIGZy
YWdtZW50IHNob3VsZCBldmVudHVhbGx5IHRocm93IE5PVF9GT1VORF9FUlI6IFBBU1MKLU1vdmlu
ZyBuZXh0IGl0ZW0gdG8gYmVjb21lIHByZXZpb3VzIHNpYmxpbmcgb2YgdGhlIHJlLXBhcmVudGVl
IHNob3VsZCBub3QgcmVzdWx0IGluIHN0YWNrIGV4aGF1c3Rpb246IFBBU1MKIAogVGhpcyB0ZXN0
IGNyZWF0ZXMgYSBmcmFnbWVudCBjb250YWluaW5nIHRocmVlIGVsZW1lbnRzOiAiQiIsICJVIiwg
YW5kICJQIiwgYXR0ZW1wdHMgdG8gaW5zZXJ0QmVmb3JlIHRoaXMgZnJhZ21lbnQgYW5kIHN0dWRp
ZXMgZWZmZWN0cyBvZiBtdXRhdGlvbiBldmVudHMgb24gdGhlIGZyYWdtZW50LgogCiBJbnNlcnRp
bmcgYW4gZWxlbWVudCBpbiBmcm9udCBvZiB0aGUgbmV4dCBpdGVtIGluIGZyYWdtZW50IHNob3Vs
ZCBub3QgYWZmZWN0IHRoZSByZXN1bHQ6IFBBU1MKLVJlbW92aW5nIG5leHQgaXRlbSBzaG91bGQg
bm90IGFib3J0IGl0ZXJhdGlvbjogUEFTUwogQXBwZW5kaW5nIGFuIGVsZW1lbnQgYXQgdGhlIGVu
ZCBvZiB0aGUgZnJhZ21lbnQgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3VsdDogUEFTUwogQ29u
dGludWFsbHkgcmUtYXBwZW5kaW5nIHJlbW92ZWQgZWxlbWVudCB0byB0aGUgZnJhZ21lbnQgc2hv
dWxkIGV2ZW50dWFsbHkgdGhyb3cgTk9UX0ZPVU5EX0VSUjogUEFTUwotTW92aW5nIG5leHQgaXRl
bSB0byBiZWNvbWUgcHJldmlvdXMgc2libGluZyBvZiB0aGUgcmUtcGFyZW50ZWUgc2hvdWxkIG5v
dCByZXN1bHQgaW4gc3RhY2sgZXhoYXVzdGlvbjogUEFTUwogCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL05vZGUvZnJhZ21lbnQtbXV0YXRpb24uaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL05vZGUvZnJhZ21lbnQtbXV0YXRpb24uaHRtbAppbmRleCAwMzdlMTdiZjUwMDJm
ODQ2OTFmMTgwNzYwNjY0ZmM0MTYzMGJjM2FlLi5mODk1MDZmZGFkZmNlMmNkYzQ1ZDNjZjE5YWM5
ZjY0NTBjMWNmMGE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Ob2RlL2ZyYWdt
ZW50LW11dGF0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTm9kZS9mcmFnbWVu
dC1tdXRhdGlvbi5odG1sCkBAIC0xMTMsMTEgKzExMyw2IEBAIGZ1bmN0aW9uIHJ1blRlc3QobWV0
aG9kTmFtZSwgbWV0aG9kKQogICAgICAgICBmcmFnLmluc2VydEJlZm9yZShtaXNzaW5nLCBmcmFn
LmZpcnN0Q2hpbGQpOwogICAgIH0sIGV4cGVjdE5vZGVzKCJCVVAiKSk7CiAKLSAgICB0ZXN0RnJh
Z21lbnQobWV0aG9kLCAiUmVtb3ZpbmcgbmV4dCBpdGVtIHNob3VsZCBub3QgYWJvcnQgaXRlcmF0
aW9uIiwgZnVuY3Rpb24oZXZ0LCBmcmFnKQotICAgIHsKLSAgICAgICAgZnJhZy5yZW1vdmVDaGls
ZChmcmFnLmZpcnN0Q2hpbGQpOwotICAgIH0sIGV4cGVjdE5vZGVzKCJCVVAiKSk7Ci0KICAgICB2
YXIgZXh0cmEgPSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImVtIikpOwogICAgIHRlc3RGcmFnbWVudChtZXRob2QsICJBcHBlbmRpbmcgYW4gZWxlbWVu
dCBhdCB0aGUgZW5kIG9mIHRoZSBmcmFnbWVudCBzaG91bGQgbm90IGFmZmVjdCB0aGUgcmVzdWx0
IiwgZnVuY3Rpb24oZXZ0LCBmcmFnKQogICAgIHsKQEAgLTEyOCwxMSArMTIzLDYgQEAgZnVuY3Rp
b24gcnVuVGVzdChtZXRob2ROYW1lLCBtZXRob2QpCiAgICAgewogICAgICAgICBzdGFzaC5pbnNl
cnRCZWZvcmUoZnJhZy5sYXN0Q2hpbGQsIHN0YXNoLmZpcnN0Q2hpbGQpOwogICAgIH0sIGV4cGVj
dEV4Y2VwdGlvbig4KSwgdHJ1ZSk7Ci0KLSAgICB0ZXN0RnJhZ21lbnQobWV0aG9kLCAiTW92aW5n
IG5leHQgaXRlbSB0byBiZWNvbWUgcHJldmlvdXMgc2libGluZyBvZiB0aGUgcmUtcGFyZW50ZWUg
c2hvdWxkIG5vdCByZXN1bHQgaW4gc3RhY2sgZXhoYXVzdGlvbiIsIGZ1bmN0aW9uKGV2dCwgZnJh
Zywgc3Rhc2gpCi0gICAgewotICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShmcmFn
LmZpcnN0Q2hpbGQsIHN0YXNoKTsKLSAgICB9LCBleHBlY3ROb2RlcygiQlVQIikpOwogICAgIHBy
aW50TG9nKG1ldGhvZE5hbWUpOwogfQogZnVuY3Rpb24gcnVuVGVzdHMoKQpAQCAtMTQ1LDQgKzEz
NSw0IEBAIGZ1bmN0aW9uIHJ1blRlc3RzKCkKIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icnVuVGVz
dHMoKSI+CiA8L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kb2N1bWVudC1mcmFn
bWVudC1pbnNlcnRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9k
b2N1bWVudC1mcmFnbWVudC1pbnNlcnRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyZjNl
ZTNmNDNhYTk5YzYyYmEzOGFlYmUxMzc0NzQyYjcyY2UxMzgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2RvY3VtZW50LWZyYWdtZW50LWluc2VydGlvbi1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzMCBAQAorSW5zZXJ0aW5nIERvY3VtZW50RnJhZ21lbnRzIHNo
b3VsZCByZW1vdmUgYWxsIGNoaWxkcmVuIG9mIHRoZSBmcmFnbWVudCBiZWZvcmUgaW5zZXJ0aW5n
IHRoZSBjaGlsZHJlbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3Rpbmcg
YXBwZW5kQ2hpbGQKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1sw
XS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAwCitQQVNTIG11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMu
bGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzFdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDIKK1BB
U1MgbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMAorCitUZXN0aW5nIGluc2Vy
dEJlZm9yZQorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzBdLmFk
ZGVkTm9kZXMubGVuZ3RoIGlzIDAKK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5n
dGggaXMgMgorUEFTUyBtdXRhdGlvbnNbMV0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMgorUEFTUyBt
dXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAwCisKK1Rlc3RpbmcgcmVwbGFjZUNo
aWxkCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMgorUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWRO
b2Rlcy5sZW5ndGggaXMgMAorUEFTUyBtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBp
cyAyCitQQVNTIG11dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0
aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDEKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbXV0YXRpb24vZG9jdW1lbnQtZnJhZ21lbnQtaW5zZXJ0aW9uLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L211dGF0aW9uL2RvY3VtZW50LWZyYWdtZW50LWluc2VydGlvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNhYzQ2Y2ZmNDMyMDdhOWUyYmYwZDlmYTZjM2MzZGVjMmFlNWZmZTQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2RvY3VtZW50LWZyYWdtZW50LWluc2Vy
dGlvbi5odG1sCkBAIC0wLDAgKzEsNzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oJ0luc2VydGluZyBEb2N1bWVudEZyYWdtZW50cyBzaG91bGQgcmVtb3ZlIGFsbCBj
aGlsZHJlbiBvZiB0aGUgZnJhZ21lbnQgYmVmb3JlIGluc2VydGluZyB0aGUgY2hpbGRyZW4uJyk7
CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gY3JlYXRlT2JzZXJ2
ZWRGcmFnbWVudCgpIHsKKyAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCk7CisgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnYicpKTsKKyAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdpJykpOworICAgIG9ic2VydmVyLm9ic2VydmUoZnJhZ21lbnQsIHtjaGlsZExpc3Q6IHRy
dWV9KTsKKyAgICByZXR1cm4gZnJhZ21lbnQ7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZU9ic2VydmVk
RGl2KCkgeworICAgIHJldHVybiBkaXY7Cit9CisKK2Z1bmN0aW9uIGNhbGxiYWNrKG11dGF0aW9u
cykgeworICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7Cit9Cit2YXIgb2JzZXJ2ZXIg
PSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihjYWxsYmFjayk7CisKK2Z1bmN0aW9uIHRlc3RB
cHBlbmRDaGlsZCgpIHsKKyAgICBkZWJ1ZygnVGVzdGluZyBhcHBlbmRDaGlsZCcpOworICAgIHZh
ciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBvYnNlcnZlci5vYnNl
cnZlKGRpdiwge2NoaWxkTGlzdDogdHJ1ZX0pOworICAgIGRpdi5hcHBlbmRDaGlsZChjcmVhdGVP
YnNlcnZlZEZyYWdtZW50KCkpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcwJyk7CisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMV0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMicpOworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMCcpOworICAgICAgICBkZWJ1
ZygnJyk7CisgICAgICAgIHRlc3RJbnNlcnRCZWZvcmUoKTsKKyAgICB9LCAwKTsKK30KKworZnVu
Y3Rpb24gdGVzdEluc2VydEJlZm9yZSgpIHsKKyAgICBkZWJ1ZygnVGVzdGluZyBpbnNlcnRCZWZv
cmUnKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAg
ZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CisgICAgb2Jz
ZXJ2ZXIub2JzZXJ2ZShkaXYsIHtjaGlsZExpc3Q6IHRydWV9KTsKKyAgICBkaXYuaW5zZXJ0QmVm
b3JlKGNyZWF0ZU9ic2VydmVkRnJhZ21lbnQoKSwgZGl2LmZpcnN0Q2hpbGQpOworICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywg
JzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCcs
ICcwJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0
aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYWRkZWROb2Rlcy5sZW5n
dGgnLCAnMicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5s
ZW5ndGgnLCAnMCcpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHRlc3RSZXBsYWNlQ2hp
bGQoKTsKKyAgICB9LCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFJlcGxhY2VDaGlsZCgpIHsKKyAg
ICBkZWJ1ZygnVGVzdGluZyByZXBsYWNlQ2hpbGQnKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3NwYW4nKSk7CisgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHtjaGlsZExpc3Q6
IHRydWV9KTsKKyAgICBkaXYucmVwbGFjZUNoaWxkKGNyZWF0ZU9ic2VydmVkRnJhZ21lbnQoKSwg
ZGl2LmZpcnN0Q2hpbGQpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcwJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMV0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMicpOworICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMScpOworICAgICAgICBkZWJ1Zygn
Jyk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQorCit0ZXN0QXBwZW5k
Q2hpbGQoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlv
bi9yZXBsYWNlLWNoaWxkLW9yZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0
YXRpb24vcmVwbGFjZS1jaGlsZC1vcmRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDU3Zjlm
OTg3N2Q1NjExMGM1YWExYWYxYWZiNThlYzc0OWQwNGIwOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vcmVwbGFjZS1jaGlsZC1vcmRlci1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNyBAQAorcmVwbGFjZUNoaWxkIHNob3VsZCByZW1vdmUgbm9kZXMgZnJvbSB0
aGVpciBvbGQgcGFyZW50cyBiZWZvcmUgcmVtb3ZpbmcgdGhlIG5vZGUgdG8tYmUtcmVwbGFjZWQu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG11dGF0aW9ucy5sZW5ndGgg
aXMgMgorUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMAorUEFTUyBtdXRh
dGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS5yZW1v
dmVkTm9kZXNbMF0udGFnTmFtZSBpcyAiQiIKK1BBU1MgbXV0YXRpb25zWzFdLmFkZGVkTm9kZXMu
bGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMQor
UEFTUyBtdXRhdGlvbnNbMV0uYWRkZWROb2Rlc1swXS50YWdOYW1lIGlzICJCIgorUEFTUyBtdXRh
dGlvbnNbMV0ucmVtb3ZlZE5vZGVzWzBdLnRhZ05hbWUgaXMgIkkiCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9tdXRhdGlvbi9yZXBsYWNlLWNoaWxkLW9yZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L211dGF0aW9uL3JlcGxhY2UtY2hpbGQtb3JkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Yjg0MjU1
MTYyZmQzZDg0YTY0MWI0NjE3NjE1YWJjYmU3YmIzNjNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9yZXBsYWNlLWNoaWxkLW9yZGVyLmh0bWwKQEAgLTAsMCAr
MSwyOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigncmVwbGFjZUNo
aWxkIHNob3VsZCByZW1vdmUgbm9kZXMgZnJvbSB0aGVpciBvbGQgcGFyZW50cyBiZWZvcmUgcmVt
b3ZpbmcgdGhlIG5vZGUgdG8tYmUtcmVwbGFjZWQuJyk7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKK3ZhciBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0
aW9uKG11dGF0aW9ucykgeworICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7Cit9KTsK
K3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK3ZhciBzcGFuID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOworc3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdiJykpOworZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2knKSk7CitvYnNlcnZlci5vYnNlcnZlKGRpdiwge2NoaWxkTGlzdDogdHJ1ZX0pOworb2Jz
ZXJ2ZXIub2JzZXJ2ZShzcGFuLCB7Y2hpbGRMaXN0OiB0cnVlfSk7CitkaXYucmVwbGFjZUNoaWxk
KHNwYW4uZmlyc3RDaGlsZCwgZGl2LmZpcnN0Q2hpbGQpOworc2V0VGltZW91dChmdW5jdGlvbigp
IHsKKyAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcyJyk7CisgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcwJyk7CisgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzBdLnJlbW92ZWROb2Rlc1swXS50YWdOYW1lJywgJyJCIicpOworICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMV0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1sxXS5hZGRlZE5vZGVzWzBdLnRhZ05hbWUnLCAnIkIiJyk7CisgICAgc2hvdWxkQmUo
J211dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXNbMF0udGFnTmFtZScsICciSSInKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30sIDApOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133564</attachid>
            <date>2012-03-23 14:31:20 -0700</date>
            <delta_ts>2012-03-23 15:18:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82089-20120323143119.patch</filename>
            <type>text/plain</type>
            <size>19462</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExOTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWExYThmNTA3MThiMmY0
ZmQ5ZDMzYjBhM2QxZGE4ZThiMTQyYTlmNS4uNDdhYjc1MzQ4ODY0MWZkOWFiOGY3OTk0YzE0MmVl
ZjIyNmM5ZmVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTAzLTIzICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1hdGNoIERPTTQgc3BlYyB3
aXRoIHJlc3BlY3QgdG8gRG9jdW1lbnRGcmFnbWVudCBpbnNlcnRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMDg5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRE9NNCBzcGVjaWZpZXMgdGhlIGJlaGF2
aW9yIG9mIGFwcGVuZENoaWxkLCBpbnNlcnRCZWZvcmUsIGFuZCByZXBsYWNlQ2hpbGQKKyAgICAg
ICAgaW4gdGVybXMgb2YgIm11dGF0aW9uIGFsZ29yaXRobXMiOgorCisgICAgICAgIGh0dHA6Ly9k
dmNzLnczLm9yZy9oZy9kb21jb3JlL3Jhdy1maWxlL3RpcC9PdmVydmlldy5odG1sI211dGF0aW9u
LWFsZ29yaXRobXMKKworICAgICAgICBUaGlzIGNoYW5nZSB1cGRhdGVzIFdlYktpdCB0byBtYXRj
aCwgaW4gcGFydGljdWxhciB3aXRoIHJlZ2FyZCB0byBEb2N1bWVudEZyYWdtZW50cy4KKyAgICAg
ICAgUHJldmlvdXNseSwgQ29udGFpbmVyTm9kZSB3b3VsZCByZW1vdmUgbm9kZXMgb25lIGF0IGEg
dGltZSwgdGhlbiBhZGQgdGhlbSB0byB0aGUgbmV3IHBhcmVudC4KKyAgICAgICAgV2hlbiBjb21i
aW5lZCB3aXRoIE11dGF0aW9uT2JzZXJ2ZXJzLCB0aGlzIHJlc3VsdHMgaW4gb3Zlcmx5LXZlcmJv
c2UgbXV0YXRpb24gcmVjb3Jkcy4KKyAgICAgICAgTm93IHdlIGNyZWF0ZSBhcyBmZXcgcmVjb3Jk
cyBhcyBwb3NzaWJsZSwgbWF0Y2hpbmcgdGhlIHNwZWMgYXMgd2VsbCBhcyBHZWNrbydzIGltcGxl
bWVudGF0aW9uCisgICAgICAgIG9mIE11dGF0aW9uT2JzZXJ2ZXJzLgorCisgICAgICAgIE9uZSBv
dGhlciBjaGFuZ2UgdG8gV2ViS2l0IGxvZ2ljIHRoYXQgbWF0Y2hlcyBET000IGJlaGF2aW9yIGlz
IHRoYXQgcmVwbGFjZUNoaWxkCisgICAgICAgIG5vdyByZW1vdmVzIHRoZSBuZXcgY2hpbGQgZnJv
bSBpdHMgb2xkIHBhcmVudCBiZWZvcmUgcmVtb3ZpbmcgdGhlIGNoaWxkLXRvLWJlLXJlcGxhY2Vk
LgorCisgICAgICAgIE5vdGUgdGhhdCB3ZSBzdGlsbCBuZWVkIHRvIGNoZWNrIHZhbGlkaXR5IGVh
Y2ggdGltZSB0aHJvdWdoIHRoZSBsb29wLAorICAgICAgICBzaW5jZSBpbnNlcnRpbmcgYSBub2Rl
IG1heSBkaXNwYXRjaCBldmVudHMuIEluIGEgZnV0dXJlIGNoYW5nZSwgSSBob3BlCisgICAgICAg
IHRvIG1vdmUgdGhlc2UgZXZlbnRzIHNvIHRoYXQgdGhleSBmaXJlIG9ubHkgYWZ0ZXIgYWxsIG5v
ZGVzIGFyZSBpbnNlcnRlZCwKKyAgICAgICAgYnV0IHRoYXQncyB0b28gbXVjaCB0byB0YWNrbGUg
YWxsIGluIG9uZS4KKworICAgICAgICBUZXN0czogZmFzdC9tdXRhdGlvbi9kb2N1bWVudC1mcmFn
bWVudC1pbnNlcnRpb24uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9tdXRhdGlvbi9yZXBsYWNl
LWNoaWxkLW9yZGVyLmh0bWwKKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbGxlY3RDaGlsZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQpOiBO
ZXcgaGVscGVyIG1ldGhvZAorICAgICAgICBjb21iaW5pbmcgY29sbGVjdFRhcmdldE5vZGVzKCkg
d2l0aCB0aGUgcmVtb3ZhbCBvZiB0aGUgY29sbGVjdGVkIG5vZGVzIGZyb20KKyAgICAgICAgdGhl
aXIgb2xkIHBhcmVudCwgaWYgYW55LgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
aW5zZXJ0QmVmb3JlKTogVXNlIG5ldyBoZWxwZXIgbWV0aG9kIGluc3RlYWQKKyAgICAgICAgb2Yg
cmVtb3Zpbmcgbm9kZXMgb25lIGF0IGEgdGltZSBmcm9tIHRoZSBmcmFnbWVudC4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZCk6IGRpdHRvLiBJbiBhZGRpdGlv
biwgY2hhbmdlZAorICAgICAgICBvcmRlcmluZyB0byBtYXRjaCBET000LCByZW1vdmluZyBuZXdD
aGlsZCBmcm9tIGl0cyBvbGQgcGFyZW50IGJlZm9yZQorICAgICAgICByZW1vdmluZyB0aGUgdG8t
YmUtcmVwbGFjZWQgY2hpbGQuIEFsc28gcmVtb3ZlZCBzb21lIHJlZHVuZGFudCBhc3NlcnRzCisg
ICAgICAgIGFuZCBtb3ZlZCB0aGUgImRvIG5vdGhpbmciIGNoZWNrIG91dCBvZiB0aGUgbG9vcC4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkKTogVXNlIG5ldyBo
ZWxwZXIgbWV0aG9kLgorCiAyMDEyLTAzLTIzICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNv
bT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIw
ODMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCBkOTZkMDk4MTBlM2JiZGRk
NzM5NTFmNWNhYTE2MWM2YTgzNjVjMTc4Li5mZTlkMjk5ZGM2OWQyOTJiM2ZkNmFmMmZiN2E3Mjk4
ZDVkZTI1ZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC02OSw2ICs2
OSwxOCBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0VGFyZ2V0Tm9kZXMoTm9kZSogbm9kZSwgTm9kZVZl
Y3RvciYgbm9kZXMpCiAgICAgZ2V0Q2hpbGROb2Rlcyhub2RlLCBub2Rlcyk7CiB9CiAKK3N0YXRp
YyB2b2lkIGNvbGxlY3RDaGlsZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQoTm9kZSogbm9kZSwg
Tm9kZVZlY3RvciYgbm9kZXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChub2RlLT5u
b2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpIHsKKyAgICAgICAgbm9k
ZXMuYXBwZW5kKG5vZGUpOworICAgICAgICBpZiAoQ29udGFpbmVyTm9kZSogb2xkUGFyZW50ID0g
bm9kZS0+cGFyZW50Tm9kZSgpKQorICAgICAgICAgICAgb2xkUGFyZW50LT5yZW1vdmVDaGlsZChu
b2RlLCBlYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZ2V0Q2hpbGROb2Rlcyhub2Rl
LCBub2Rlcyk7CisgICAgdG9Db250YWluZXJOb2RlKG5vZGUpLT5yZW1vdmVDaGlsZHJlbigpOwor
fQorCiB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVuKCkKIHsKICAgICByZW1v
dmVBbGxDaGlsZHJlbkluQ29udGFpbmVyPE5vZGUsIENvbnRhaW5lck5vZGU+KHRoaXMpOwpAQCAt
MTI3LDEzICsxMzksMTQgQEAgYm9vbCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUoUGFzc1Jl
ZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2UKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIE5vZGVWZWN0b3IgdGFyZ2V0czsKLSAgICBjb2xsZWN0VGFy
Z2V0Tm9kZXMobmV3Q2hpbGQuZ2V0KCksIHRhcmdldHMpOwotICAgIGlmICh0YXJnZXRzLmlzRW1w
dHkoKSkKKyAgICBpZiAocmVmQ2hpbGQtPnByZXZpb3VzU2libGluZygpID09IG5ld0NoaWxkIHx8
IHJlZkNoaWxkID09IG5ld0NoaWxkKSAvLyBub3RoaW5nIHRvIGRvCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgLy8gTm93IGFjdHVhbGx5IGFkZCB0aGUgY2hpbGQocmVuKQotICAgIGlmIChy
ZWZDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkgPT0gbmV3Q2hpbGQgfHwgcmVmQ2hpbGQgPT0gbmV3
Q2hpbGQpIC8vIG5vdGhpbmcgdG8gZG8KKyAgICBOb2RlVmVjdG9yIHRhcmdldHM7CisgICAgY29s
bGVjdENoaWxkcmVuQW5kUmVtb3ZlRnJvbU9sZFBhcmVudChuZXdDaGlsZC5nZXQoKSwgdGFyZ2V0
cywgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICh0YXJn
ZXRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiBFTkFCTEUoTVVUQVRJ
T05fT0JTRVJWRVJTKQpAQCAtMTQ1LDEyICsxNTgsNiBAQCBib29sIENvbnRhaW5lck5vZGU6Omlu
c2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhj
ZQogICAgIGZvciAoTm9kZVZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0YXJnZXRzLmJlZ2lu
KCk7IGl0ICE9IHRhcmdldHMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgTm9kZSogY2hpbGQgPSBp
dC0+Z2V0KCk7CiAKLSAgICAgICAgLy8gSWYgY2hpbGQgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRo
ZSB0cmVlLCBmaXJzdCByZW1vdmUgaXQgZnJvbSB0aGUgb2xkIGxvY2F0aW9uLgotICAgICAgICBp
ZiAoQ29udGFpbmVyTm9kZSogb2xkUGFyZW50ID0gY2hpbGQtPnBhcmVudE5vZGUoKSkKLSAgICAg
ICAgICAgIG9sZFBhcmVudC0+cmVtb3ZlQ2hpbGQoY2hpbGQsIGVjKTsKLSAgICAgICAgaWYgKGVj
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgICAgIC8vIER1ZSB0byBhcmJpdHJh
cnkgY29kZSBydW5uaW5nIGluIHJlc3BvbnNlIHRvIGEgRE9NIG11dGF0aW9uIGV2ZW50IGl0J3MK
ICAgICAgICAgLy8gcG9zc2libGUgdGhhdCAibmV4dCIgaXMgbm8gbG9uZ2VyIGEgY2hpbGQgb2Yg
InRoaXMiLgogICAgICAgICAvLyBJdCdzIGFsc28gcG9zc2libGUgdGhhdCAiY2hpbGQiIGhhcyBi
ZWVuIGluc2VydGVkIGVsc2V3aGVyZS4KQEAgLTI1Miw3ICsyNTksNyBAQCBib29sIENvbnRhaW5l
ck5vZGU6OnJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRD
aGlsZCwgRXhjZQogCiAgICAgaWYgKG9sZENoaWxkID09IG5ld0NoaWxkKSAvLyBub3RoaW5nIHRv
IGRvCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIAorCiAgICAgLy8gTWFrZSBzdXJlIHJlcGxh
Y2luZyB0aGUgb2xkIGNoaWxkIHdpdGggdGhlIG5ldyBpcyBvawogICAgIGNoZWNrUmVwbGFjZUNo
aWxkKG5ld0NoaWxkLmdldCgpLCBvbGRDaGlsZCwgZWMpOwogICAgIGlmIChlYykKQEAgLTI2NCw2
ICsyNzEsMTQgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQoUGFzc1JlZlB0cjxO
b2RlPiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2UKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAorICAgIE5vZGVWZWN0b3IgdGFyZ2V0czsKKyAgICBjb2xsZWN0Q2hpbGRyZW5B
bmRSZW1vdmVGcm9tT2xkUGFyZW50KG5ld0NoaWxkLmdldCgpLCB0YXJnZXRzLCBlYyk7CisgICAg
aWYgKGVjKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAob2xkQ2hpbGQtPnBhcmVu
dE5vZGUoKSAhPSB0aGlzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICNpZiBFTkFCTEUoTVVU
QVRJT05fT0JTRVJWRVJTKQogICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24odGhp
cyk7CiAjZW5kaWYKQEAgLTI3NywyMyArMjkyLDEzIEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVw
bGFjZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNl
CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBOb2RlVmVjdG9yIHRh
cmdldHM7Ci0gICAgY29sbGVjdFRhcmdldE5vZGVzKG5ld0NoaWxkLmdldCgpLCB0YXJnZXRzKTsK
KyAgICBpZiAobmV4dCAmJiAobmV4dC0+cHJldmlvdXNTaWJsaW5nKCkgPT0gbmV3Q2hpbGQgfHwg
bmV4dCA9PSBuZXdDaGlsZCkpIC8vIG5vdGhpbmcgdG8gZG8KKyAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICAvLyBBZGQgdGhlIG5ldyBjaGlsZChyZW4pCiAgICAgZm9yIChOb2RlVmVjdG9yOjpj
b25zdF9pdGVyYXRvciBpdCA9IHRhcmdldHMuYmVnaW4oKTsgaXQgIT0gdGFyZ2V0cy5lbmQoKTsg
KytpdCkgewogICAgICAgICBOb2RlKiBjaGlsZCA9IGl0LT5nZXQoKTsKIAotICAgICAgICAvLyBJ
ZiB0aGUgbmV3IGNoaWxkIGlzIGFscmVhZHkgaW4gdGhlIHJpZ2h0IHBsYWNlLCB3ZSdyZSBkb25l
LgotICAgICAgICBpZiAobmV4dCAmJiAobmV4dCA9PSBjaGlsZCB8fCBuZXh0ID09IGNoaWxkLT5w
cmV2aW91c1NpYmxpbmcoKSkpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAvLyBSZW1v
dmUgY2hpbGQgZnJvbSBpdHMgb2xkIHBvc2l0aW9uLgotICAgICAgICBpZiAoQ29udGFpbmVyTm9k
ZSogb2xkUGFyZW50ID0gY2hpbGQtPnBhcmVudE5vZGUoKSkKLSAgICAgICAgICAgIG9sZFBhcmVu
dC0+cmVtb3ZlQ2hpbGQoY2hpbGQsIGVjKTsKLSAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotCiAgICAgICAgIC8vIER1ZSB0byBhcmJpdHJhcnkgY29kZSBydW5uaW5n
IGluIHJlc3BvbnNlIHRvIGEgRE9NIG11dGF0aW9uIGV2ZW50IGl0J3MKICAgICAgICAgLy8gcG9z
c2libGUgdGhhdCAibmV4dCIgaXMgbm8gbG9uZ2VyIGEgY2hpbGQgb2YgInRoaXMiLgogICAgICAg
ICAvLyBJdCdzIGFsc28gcG9zc2libGUgdGhhdCAiY2hpbGQiIGhhcyBiZWVuIGluc2VydGVkIGVs
c2V3aGVyZS4KQEAgLTMwMyw5ICszMDgsNiBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlcGxhY2VD
aGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZQogICAg
ICAgICBpZiAoY2hpbGQtPnBhcmVudE5vZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgIEFTU0VSVCghY2hpbGQtPm5leHRTaWJsaW5nKCkpOwotICAgICAgICBBU1NFUlQoIWNoaWxk
LT5wcmV2aW91c1NpYmxpbmcoKSk7Ci0KICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2RlKGRvY3VtZW50KCksIGNo
aWxkLCB0aGlzKTsKICNlbmRpZgpAQCAtNTgwLDcgKzU4MiwxMCBAQCBib29sIENvbnRhaW5lck5v
ZGU6OmFwcGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUm
IGVjLCBibwogICAgICAgICByZXR1cm4gbmV3Q2hpbGQ7CiAKICAgICBOb2RlVmVjdG9yIHRhcmdl
dHM7Ci0gICAgY29sbGVjdFRhcmdldE5vZGVzKG5ld0NoaWxkLmdldCgpLCB0YXJnZXRzKTsKKyAg
ICBjb2xsZWN0Q2hpbGRyZW5BbmRSZW1vdmVGcm9tT2xkUGFyZW50KG5ld0NoaWxkLmdldCgpLCB0
YXJnZXRzLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBp
ZiAodGFyZ2V0cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC01OTIsMTgg
KzU5NywxMiBAQCBib29sIENvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9k
ZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBibwogICAgIFJlZlB0cjxOb2RlPiBwcmV2
ID0gbGFzdENoaWxkKCk7CiAgICAgZm9yIChOb2RlVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdCA9
IHRhcmdldHMuYmVnaW4oKTsgaXQgIT0gdGFyZ2V0cy5lbmQoKTsgKytpdCkgewogICAgICAgICBO
b2RlKiBjaGlsZCA9IGl0LT5nZXQoKTsKLSAgICAgICAgLy8gSWYgY2hpbGQgaXMgYWxyZWFkeSBw
cmVzZW50IGluIHRoZSB0cmVlLCBmaXJzdCByZW1vdmUgaXQKLSAgICAgICAgaWYgKENvbnRhaW5l
ck5vZGUqIG9sZFBhcmVudCA9IGNoaWxkLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgICAgIG9s
ZFBhcmVudC0+cmVtb3ZlQ2hpbGQoY2hpbGQsIGVjKTsKLSAgICAgICAgICAgIGlmIChlYykKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIC8vIElmIHRoZSBjaGls
ZCBoYXMgYSBwYXJlbnQgYWdhaW4sIGp1c3Qgc3RvcCB3aGF0IHdlJ3JlIGRvaW5nLCBiZWNhdXNl
Ci0gICAgICAgICAgICAvLyB0aGF0IG1lYW5zIHNvbWVvbmUgaXMgZG9pbmcgc29tZXRoaW5nIHdp
dGggRE9NIG11dGF0aW9uIC0tIGNhbid0IHJlLXBhcmVudAotICAgICAgICAgICAgLy8gYSBjaGls
ZCB0aGF0IGFscmVhZHkgaGFzIGEgcGFyZW50LgotICAgICAgICAgICAgaWYgKGNoaWxkLT5wYXJl
bnROb2RlKCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKworICAgICAgICAv
LyBJZiB0aGUgY2hpbGQgaGFzIGEgcGFyZW50IGFnYWluLCBqdXN0IHN0b3Agd2hhdCB3ZSdyZSBk
b2luZywgYmVjYXVzZQorICAgICAgICAvLyB0aGF0IG1lYW5zIHNvbWVvbmUgaXMgZG9pbmcgc29t
ZXRoaW5nIHdpdGggRE9NIG11dGF0aW9uIC0tIGNhbid0IHJlLXBhcmVudAorICAgICAgICAvLyBh
IGNoaWxkIHRoYXQgYWxyZWFkeSBoYXMgYSBwYXJlbnQuCisgICAgICAgIGlmIChjaGlsZC0+cGFy
ZW50Tm9kZSgpKQorICAgICAgICAgICAgYnJlYWs7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2RlKGRvY3Vt
ZW50KCksIGNoaWxkLCB0aGlzKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4MGM3MDQwMjY3OTE2YzhlNjk0NDY3MTRjYWY5
OGJmNWMzZTQ2MGY4Li4yYzc2ZjAyMWU5MWMwOGNkNDgxMTBjMjNjMGEzN2Y5ZjU3NWRlNmNlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDMtMjMgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgTWF0Y2ggRE9NNCBzcGVjIHdpdGggcmVzcGVjdCB0byBEb2N1
bWVudEZyYWdtZW50IGluc2VydGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODIwODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3QvZG9tL05vZGUvZnJhZ21lbnQtbXV0YXRpb24tZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvZG9tL05vZGUvZnJhZ21lbnQtbXV0YXRpb24uaHRtbDogUmVt
b3ZlZCB0ZXN0cyB0aGF0IG5vIGxvbmdlciBtYWtlIHNlbnNlCisgICAgICAgIHNpbmNlIHRoZSBE
b2N1bWVudEZyYWdtZW50IGhhcyBubyBjaGlsZHJlbiBieSB0aGUgdGltZSBET01TdWJ0cmVlTW9k
aWZpZWQgaXMgY2FsbGVkLgorICAgICAgICAqIGZhc3QvbXV0YXRpb24vZG9jdW1lbnQtZnJhZ21l
bnQtaW5zZXJ0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tdXRhdGlv
bi9kb2N1bWVudC1mcmFnbWVudC1pbnNlcnRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9tdXRhdGlvbi9yZXBsYWNlLWNoaWxkLW9yZGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9tdXRhdGlvbi9yZXBsYWNlLWNoaWxkLW9yZGVyLmh0bWw6IEFkZGVkLgorCiAy
MDEyLTAzLTIzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
ZWQgYWxsIHRlc3RzIHRoYXQgY3Jhc2hlZCBtb3JlIHRoYW4gb25jZSBvbiB0aGUgTGlvbiBXZWJL
aXQyIGJvdHMgYmV0d2VlbiByMTExODg1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9Ob2RlL2ZyYWdtZW50LW11dGF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL05vZGUvZnJhZ21lbnQtbXV0YXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDQxZThmYTRkMzMw
NmY1ODlkNDllNzZhNDVlNTJkNWNjNzcwMGZkMmYuLjBmMDRlNjZhMGU1M2U2ZjViMTkwMWM1ZGNi
MTc2ZjY3ZjJlNGY4NjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL05vZGUvZnJh
Z21lbnQtbXV0YXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL05v
ZGUvZnJhZ21lbnQtbXV0YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0xLDE3ICsxLDEzIEBACiBUaGlz
IHRlc3QgY3JlYXRlcyBhIGZyYWdtZW50IGNvbnRhaW5pbmcgdGhyZWUgZWxlbWVudHM6ICJCIiwg
IlUiLCBhbmQgIlAiLCBhdHRlbXB0cyB0byBhcHBlbmRDaGlsZCB0aGlzIGZyYWdtZW50IGFuZCBz
dHVkaWVzIGVmZmVjdHMgb2YgbXV0YXRpb24gZXZlbnRzIG9uIHRoZSBmcmFnbWVudC4KIAogSW5z
ZXJ0aW5nIGFuIGVsZW1lbnQgaW4gZnJvbnQgb2YgdGhlIG5leHQgaXRlbSBpbiBmcmFnbWVudCBz
aG91bGQgbm90IGFmZmVjdCB0aGUgcmVzdWx0OiBQQVNTCi1SZW1vdmluZyBuZXh0IGl0ZW0gc2hv
dWxkIG5vdCBhYm9ydCBpdGVyYXRpb246IFBBU1MKIEFwcGVuZGluZyBhbiBlbGVtZW50IGF0IHRo
ZSBlbmQgb2YgdGhlIGZyYWdtZW50IHNob3VsZCBub3QgYWZmZWN0IHRoZSByZXN1bHQ6IFBBU1MK
IENvbnRpbnVhbGx5IHJlLWFwcGVuZGluZyByZW1vdmVkIGVsZW1lbnQgdG8gdGhlIGZyYWdtZW50
IHNob3VsZCBldmVudHVhbGx5IHRocm93IE5PVF9GT1VORF9FUlI6IFBBU1MKLU1vdmluZyBuZXh0
IGl0ZW0gdG8gYmVjb21lIHByZXZpb3VzIHNpYmxpbmcgb2YgdGhlIHJlLXBhcmVudGVlIHNob3Vs
ZCBub3QgcmVzdWx0IGluIHN0YWNrIGV4aGF1c3Rpb246IFBBU1MKIAogVGhpcyB0ZXN0IGNyZWF0
ZXMgYSBmcmFnbWVudCBjb250YWluaW5nIHRocmVlIGVsZW1lbnRzOiAiQiIsICJVIiwgYW5kICJQ
IiwgYXR0ZW1wdHMgdG8gaW5zZXJ0QmVmb3JlIHRoaXMgZnJhZ21lbnQgYW5kIHN0dWRpZXMgZWZm
ZWN0cyBvZiBtdXRhdGlvbiBldmVudHMgb24gdGhlIGZyYWdtZW50LgogCiBJbnNlcnRpbmcgYW4g
ZWxlbWVudCBpbiBmcm9udCBvZiB0aGUgbmV4dCBpdGVtIGluIGZyYWdtZW50IHNob3VsZCBub3Qg
YWZmZWN0IHRoZSByZXN1bHQ6IFBBU1MKLVJlbW92aW5nIG5leHQgaXRlbSBzaG91bGQgbm90IGFi
b3J0IGl0ZXJhdGlvbjogUEFTUwogQXBwZW5kaW5nIGFuIGVsZW1lbnQgYXQgdGhlIGVuZCBvZiB0
aGUgZnJhZ21lbnQgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3VsdDogUEFTUwogQ29udGludWFs
bHkgcmUtYXBwZW5kaW5nIHJlbW92ZWQgZWxlbWVudCB0byB0aGUgZnJhZ21lbnQgc2hvdWxkIGV2
ZW50dWFsbHkgdGhyb3cgTk9UX0ZPVU5EX0VSUjogUEFTUwotTW92aW5nIG5leHQgaXRlbSB0byBi
ZWNvbWUgcHJldmlvdXMgc2libGluZyBvZiB0aGUgcmUtcGFyZW50ZWUgc2hvdWxkIG5vdCByZXN1
bHQgaW4gc3RhY2sgZXhoYXVzdGlvbjogUEFTUwogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL05vZGUvZnJhZ21lbnQtbXV0YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL05vZGUvZnJhZ21lbnQtbXV0YXRpb24uaHRtbAppbmRleCAwMzdlMTdiZjUwMDJmODQ2OTFm
MTgwNzYwNjY0ZmM0MTYzMGJjM2FlLi5mODk1MDZmZGFkZmNlMmNkYzQ1ZDNjZjE5YWM5ZjY0NTBj
MWNmMGE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Ob2RlL2ZyYWdtZW50LW11
dGF0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTm9kZS9mcmFnbWVudC1tdXRh
dGlvbi5odG1sCkBAIC0xMTMsMTEgKzExMyw2IEBAIGZ1bmN0aW9uIHJ1blRlc3QobWV0aG9kTmFt
ZSwgbWV0aG9kKQogICAgICAgICBmcmFnLmluc2VydEJlZm9yZShtaXNzaW5nLCBmcmFnLmZpcnN0
Q2hpbGQpOwogICAgIH0sIGV4cGVjdE5vZGVzKCJCVVAiKSk7CiAKLSAgICB0ZXN0RnJhZ21lbnQo
bWV0aG9kLCAiUmVtb3ZpbmcgbmV4dCBpdGVtIHNob3VsZCBub3QgYWJvcnQgaXRlcmF0aW9uIiwg
ZnVuY3Rpb24oZXZ0LCBmcmFnKQotICAgIHsKLSAgICAgICAgZnJhZy5yZW1vdmVDaGlsZChmcmFn
LmZpcnN0Q2hpbGQpOwotICAgIH0sIGV4cGVjdE5vZGVzKCJCVVAiKSk7Ci0KICAgICB2YXIgZXh0
cmEgPSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImVt
IikpOwogICAgIHRlc3RGcmFnbWVudChtZXRob2QsICJBcHBlbmRpbmcgYW4gZWxlbWVudCBhdCB0
aGUgZW5kIG9mIHRoZSBmcmFnbWVudCBzaG91bGQgbm90IGFmZmVjdCB0aGUgcmVzdWx0IiwgZnVu
Y3Rpb24oZXZ0LCBmcmFnKQogICAgIHsKQEAgLTEyOCwxMSArMTIzLDYgQEAgZnVuY3Rpb24gcnVu
VGVzdChtZXRob2ROYW1lLCBtZXRob2QpCiAgICAgewogICAgICAgICBzdGFzaC5pbnNlcnRCZWZv
cmUoZnJhZy5sYXN0Q2hpbGQsIHN0YXNoLmZpcnN0Q2hpbGQpOwogICAgIH0sIGV4cGVjdEV4Y2Vw
dGlvbig4KSwgdHJ1ZSk7Ci0KLSAgICB0ZXN0RnJhZ21lbnQobWV0aG9kLCAiTW92aW5nIG5leHQg
aXRlbSB0byBiZWNvbWUgcHJldmlvdXMgc2libGluZyBvZiB0aGUgcmUtcGFyZW50ZWUgc2hvdWxk
IG5vdCByZXN1bHQgaW4gc3RhY2sgZXhoYXVzdGlvbiIsIGZ1bmN0aW9uKGV2dCwgZnJhZywgc3Rh
c2gpCi0gICAgewotICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShmcmFnLmZpcnN0
Q2hpbGQsIHN0YXNoKTsKLSAgICB9LCBleHBlY3ROb2RlcygiQlVQIikpOwogICAgIHByaW50TG9n
KG1ldGhvZE5hbWUpOwogfQogZnVuY3Rpb24gcnVuVGVzdHMoKQpAQCAtMTQ1LDQgKzEzNSw0IEBA
IGZ1bmN0aW9uIHJ1blRlc3RzKCkKIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+
CiA8L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kb2N1bWVudC1mcmFnbWVudC1p
bnNlcnRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kb2N1bWVu
dC1mcmFnbWVudC1pbnNlcnRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyZjNlZTNmNDNh
YTk5YzYyYmEzOGFlYmUxMzc0NzQyYjcyY2UxMzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L211dGF0aW9uL2RvY3VtZW50LWZyYWdtZW50LWluc2VydGlvbi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwzMCBAQAorSW5zZXJ0aW5nIERvY3VtZW50RnJhZ21lbnRzIHNob3VsZCBy
ZW1vdmUgYWxsIGNoaWxkcmVuIG9mIHRoZSBmcmFnbWVudCBiZWZvcmUgaW5zZXJ0aW5nIHRoZSBj
aGlsZHJlbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3RpbmcgYXBwZW5k
Q2hpbGQKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1swXS5hZGRl
ZE5vZGVzLmxlbmd0aCBpcyAwCitQQVNTIG11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3Ro
IGlzIDIKK1BBU1MgbXV0YXRpb25zWzFdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0
YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMAorCitUZXN0aW5nIGluc2VydEJlZm9y
ZQorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9k
ZXMubGVuZ3RoIGlzIDAKK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMg
MgorUEFTUyBtdXRhdGlvbnNbMV0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMgorUEFTUyBtdXRhdGlv
bnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAwCisKK1Rlc3RpbmcgcmVwbGFjZUNoaWxkCitQ
QVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMgorUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5s
ZW5ndGggaXMgMAorUEFTUyBtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAyCitQ
QVNTIG11dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1sx
XS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDEKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0
YXRpb24vZG9jdW1lbnQtZnJhZ21lbnQtaW5zZXJ0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L211dGF0aW9uL2RvY3VtZW50LWZyYWdtZW50LWluc2VydGlvbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNh
YzQ2Y2ZmNDMyMDdhOWUyYmYwZDlmYTZjM2MzZGVjMmFlNWZmZTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2RvY3VtZW50LWZyYWdtZW50LWluc2VydGlvbi5o
dG1sCkBAIC0wLDAgKzEsNzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oJ0luc2VydGluZyBEb2N1bWVudEZyYWdtZW50cyBzaG91bGQgcmVtb3ZlIGFsbCBjaGlsZHJl
biBvZiB0aGUgZnJhZ21lbnQgYmVmb3JlIGluc2VydGluZyB0aGUgY2hpbGRyZW4uJyk7CisKK3dp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gY3JlYXRlT2JzZXJ2ZWRGcmFn
bWVudCgpIHsKKyAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdt
ZW50KCk7CisgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
YicpKTsKKyAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdp
JykpOworICAgIG9ic2VydmVyLm9ic2VydmUoZnJhZ21lbnQsIHtjaGlsZExpc3Q6IHRydWV9KTsK
KyAgICByZXR1cm4gZnJhZ21lbnQ7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZU9ic2VydmVkRGl2KCkg
eworICAgIHJldHVybiBkaXY7Cit9CisKK2Z1bmN0aW9uIGNhbGxiYWNrKG11dGF0aW9ucykgewor
ICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7Cit9Cit2YXIgb2JzZXJ2ZXIgPSBuZXcg
V2ViS2l0TXV0YXRpb25PYnNlcnZlcihjYWxsYmFjayk7CisKK2Z1bmN0aW9uIHRlc3RBcHBlbmRD
aGlsZCgpIHsKKyAgICBkZWJ1ZygnVGVzdGluZyBhcHBlbmRDaGlsZCcpOworICAgIHZhciBkaXYg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBvYnNlcnZlci5vYnNlcnZlKGRp
diwge2NoaWxkTGlzdDogdHJ1ZX0pOworICAgIGRpdi5hcHBlbmRDaGlsZChjcmVhdGVPYnNlcnZl
ZEZyYWdtZW50KCkpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1swXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcwJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMV0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMicpOworICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMCcpOworICAgICAgICBkZWJ1ZygnJyk7
CisgICAgICAgIHRlc3RJbnNlcnRCZWZvcmUoKTsKKyAgICB9LCAwKTsKK30KKworZnVuY3Rpb24g
dGVzdEluc2VydEJlZm9yZSgpIHsKKyAgICBkZWJ1ZygnVGVzdGluZyBpbnNlcnRCZWZvcmUnKTsK
KyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZGl2LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CisgICAgb2JzZXJ2ZXIu
b2JzZXJ2ZShkaXYsIHtjaGlsZExpc3Q6IHRydWV9KTsKKyAgICBkaXYuaW5zZXJ0QmVmb3JlKGNy
ZWF0ZU9ic2VydmVkRnJhZ21lbnQoKSwgZGl2LmZpcnN0Q2hpbGQpOworICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsK
KyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcwJyk7
CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcy
Jyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYWRkZWROb2Rlcy5sZW5ndGgnLCAn
MicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGgn
LCAnMCcpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHRlc3RSZXBsYWNlQ2hpbGQoKTsK
KyAgICB9LCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFJlcGxhY2VDaGlsZCgpIHsKKyAgICBkZWJ1
ZygnVGVzdGluZyByZXBsYWNlQ2hpbGQnKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CisgICAgZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3NwYW4nKSk7CisgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHtjaGlsZExpc3Q6IHRydWV9
KTsKKyAgICBkaXYucmVwbGFjZUNoaWxkKGNyZWF0ZU9ic2VydmVkRnJhZ21lbnQoKSwgZGl2LmZp
cnN0Q2hpbGQpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS5hZGRlZE5vZGVzLmxlbmd0aCcsICcwJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMV0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMScpOworICAgICAgICBkZWJ1ZygnJyk7Cisg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQorCit0ZXN0QXBwZW5kQ2hpbGQo
KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9yZXBs
YWNlLWNoaWxkLW9yZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24v
cmVwbGFjZS1jaGlsZC1vcmRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDU3ZjlmOTg3N2Q1
NjExMGM1YWExYWYxYWZiNThlYzc0OWQwNGIwOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvbXV0YXRpb24vcmVwbGFjZS1jaGlsZC1vcmRlci1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNyBAQAorcmVwbGFjZUNoaWxkIHNob3VsZCByZW1vdmUgbm9kZXMgZnJvbSB0aGVpciBv
bGQgcGFyZW50cyBiZWZvcmUgcmVtb3ZpbmcgdGhlIG5vZGUgdG8tYmUtcmVwbGFjZWQuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMgor
UEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMAorUEFTUyBtdXRhdGlvbnNb
MF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS5yZW1vdmVkTm9k
ZXNbMF0udGFnTmFtZSBpcyAiQiIKK1BBU1MgbXV0YXRpb25zWzFdLmFkZGVkTm9kZXMubGVuZ3Ro
IGlzIDEKK1BBU1MgbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMQorUEFTUyBt
dXRhdGlvbnNbMV0uYWRkZWROb2Rlc1swXS50YWdOYW1lIGlzICJCIgorUEFTUyBtdXRhdGlvbnNb
MV0ucmVtb3ZlZE5vZGVzWzBdLnRhZ05hbWUgaXMgIkkiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9tdXRhdGlvbi9yZXBsYWNlLWNoaWxkLW9yZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211
dGF0aW9uL3JlcGxhY2UtY2hpbGQtb3JkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Yjg0MjU1MTYyZmQz
ZDg0YTY0MWI0NjE3NjE1YWJjYmU3YmIzNjNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9tdXRhdGlvbi9yZXBsYWNlLWNoaWxkLW9yZGVyLmh0bWwKQEAgLTAsMCArMSwyOSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigncmVwbGFjZUNoaWxkIHNo
b3VsZCByZW1vdmUgbm9kZXMgZnJvbSB0aGVpciBvbGQgcGFyZW50cyBiZWZvcmUgcmVtb3Zpbmcg
dGhlIG5vZGUgdG8tYmUtcmVwbGFjZWQuJyk7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKK3ZhciBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11
dGF0aW9ucykgeworICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7Cit9KTsKK3ZhciBk
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK3ZhciBzcGFuID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnc3BhbicpOworc3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdiJykpOworZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2kn
KSk7CitvYnNlcnZlci5vYnNlcnZlKGRpdiwge2NoaWxkTGlzdDogdHJ1ZX0pOworb2JzZXJ2ZXIu
b2JzZXJ2ZShzcGFuLCB7Y2hpbGRMaXN0OiB0cnVlfSk7CitkaXYucmVwbGFjZUNoaWxkKHNwYW4u
Zmlyc3RDaGlsZCwgZGl2LmZpcnN0Q2hpbGQpOworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcyJyk7CisgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcwJyk7CisgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzBdLnJlbW92ZWROb2Rlc1swXS50YWdOYW1lJywgJyJCIicpOworICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMV0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1sxXS5hZGRlZE5vZGVzWzBdLnRhZ05hbWUnLCAnIkIiJyk7CisgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1sxXS5yZW1vdmVkTm9kZXNbMF0udGFnTmFtZScsICciSSInKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30sIDApOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133570</attachid>
            <date>2012-03-23 15:19:02 -0700</date>
            <delta_ts>2012-03-23 15:51:43 -0700</delta_ts>
            <desc>Patch minus replaceChild ordering change</desc>
            <filename>bug-82089-20120323151900.patch</filename>
            <type>text/plain</type>
            <size>16180</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExOTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWExYThmNTA3MThiMmY0
ZmQ5ZDMzYjBhM2QxZGE4ZThiMTQyYTlmNS4uM2E5NDNlMDcxNzNhZGMwMDgzMzMxMzMxOTg4MDUw
Mjg5ZDA2ODdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAzLTIzICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1hdGNoIERPTTQgc3BlYyB3
aXRoIHJlc3BlY3QgdG8gRG9jdW1lbnRGcmFnbWVudCBpbnNlcnRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMDg5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRE9NNCBzcGVjaWZpZXMgdGhlIGJlaGF2
aW9yIG9mIGFwcGVuZENoaWxkLCBpbnNlcnRCZWZvcmUsIGFuZCByZXBsYWNlQ2hpbGQKKyAgICAg
ICAgaW4gdGVybXMgb2YgIm11dGF0aW9uIGFsZ29yaXRobXMiOgorCisgICAgICAgIGh0dHA6Ly9k
dmNzLnczLm9yZy9oZy9kb21jb3JlL3Jhdy1maWxlL3RpcC9PdmVydmlldy5odG1sI211dGF0aW9u
LWFsZ29yaXRobXMKKworICAgICAgICBUaGlzIGNoYW5nZSB1cGRhdGVzIFdlYktpdCB0byBtYXRj
aCwgaW4gcGFydGljdWxhciB3aXRoIHJlZ2FyZCB0byBEb2N1bWVudEZyYWdtZW50cy4KKyAgICAg
ICAgUHJldmlvdXNseSwgQ29udGFpbmVyTm9kZSB3b3VsZCByZW1vdmUgbm9kZXMgb25lIGF0IGEg
dGltZSwgdGhlbiBhZGQgdGhlbSB0byB0aGUgbmV3IHBhcmVudC4KKyAgICAgICAgV2hlbiBjb21i
aW5lZCB3aXRoIE11dGF0aW9uT2JzZXJ2ZXJzLCB0aGlzIHJlc3VsdHMgaW4gb3Zlcmx5LXZlcmJv
c2UgbXV0YXRpb24gcmVjb3Jkcy4KKyAgICAgICAgTm93IHdlIGNyZWF0ZSBhcyBmZXcgcmVjb3Jk
cyBhcyBwb3NzaWJsZSwgbWF0Y2hpbmcgdGhlIHNwZWMgYXMgd2VsbCBhcyBHZWNrbydzIGltcGxl
bWVudGF0aW9uCisgICAgICAgIG9mIE11dGF0aW9uT2JzZXJ2ZXJzLgorCisgICAgICAgIE5vdGUg
dGhhdCB3ZSBzdGlsbCBuZWVkIHRvIGNoZWNrIHZhbGlkaXR5IGVhY2ggdGltZSB0aHJvdWdoIHRo
ZSBsb29wLAorICAgICAgICBzaW5jZSBpbnNlcnRpbmcgYSBub2RlIG1heSBkaXNwYXRjaCBldmVu
dHMuIEluIGEgZnV0dXJlIGNoYW5nZSwgSSBob3BlCisgICAgICAgIHRvIG1vdmUgdGhlc2UgZXZl
bnRzIHNvIHRoYXQgdGhleSBmaXJlIG9ubHkgYWZ0ZXIgYWxsIG5vZGVzIGFyZSBpbnNlcnRlZCwK
KyAgICAgICAgYnV0IHRoYXQncyB0b28gbXVjaCB0byB0YWNrbGUgYWxsIGluIG9uZS4KKworICAg
ICAgICBUZXN0czogZmFzdC9tdXRhdGlvbi9kb2N1bWVudC1mcmFnbWVudC1pbnNlcnRpb24uaHRt
bAorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29sbGVjdENoaWxkcmVuQW5kUmVtb3ZlRnJvbU9sZFBhcmVudCk6IE5ldyBoZWxwZXIgbWV0aG9k
CisgICAgICAgIGNvbWJpbmluZyBjb2xsZWN0VGFyZ2V0Tm9kZXMoKSB3aXRoIHRoZSByZW1vdmFs
IG9mIHRoZSBjb2xsZWN0ZWQgbm9kZXMgZnJvbQorICAgICAgICB0aGVpciBvbGQgcGFyZW50LCBp
ZiBhbnkuCisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUpOiBV
c2UgbmV3IGhlbHBlciBtZXRob2QgaW5zdGVhZAorICAgICAgICBvZiByZW1vdmluZyBub2RlcyBv
bmUgYXQgYSB0aW1lIGZyb20gdGhlIGZyYWdtZW50LgorICAgICAgICAoV2ViQ29yZTo6Q29udGFp
bmVyTm9kZTo6cmVwbGFjZUNoaWxkKTogZGl0dG8uIEFsc28gcmVtb3ZlZCBzb21lIHJlZHVuZGFu
dCBhc3NlcnRzCisgICAgICAgIGFuZCBtb3ZlZCB0aGUgImRvIG5vdGhpbmciIGNoZWNrIG91dCBv
ZiB0aGUgbG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxk
KTogVXNlIG5ldyBoZWxwZXIgbWV0aG9kLgorCiAyMDEyLTAzLTIzICBCZXRoIERha2luICA8YmRh
a2luQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODIwODMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCBkOTZk
MDk4MTBlM2JiZGRkNzM5NTFmNWNhYTE2MWM2YTgzNjVjMTc4Li45YTQzNzAyOGE0OWU0NzNkNThj
NjI5OTQ2NTAxNWMwZDkxZTFjOTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CkBAIC02OSw2ICs2OSwxOCBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0VGFyZ2V0Tm9kZXMoTm9kZSog
bm9kZSwgTm9kZVZlY3RvciYgbm9kZXMpCiAgICAgZ2V0Q2hpbGROb2Rlcyhub2RlLCBub2Rlcyk7
CiB9CiAKK3N0YXRpYyB2b2lkIGNvbGxlY3RDaGlsZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQo
Tm9kZSogbm9kZSwgTm9kZVZlY3RvciYgbm9kZXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IGlmIChub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpIHsK
KyAgICAgICAgbm9kZXMuYXBwZW5kKG5vZGUpOworICAgICAgICBpZiAoQ29udGFpbmVyTm9kZSog
b2xkUGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpKQorICAgICAgICAgICAgb2xkUGFyZW50LT5y
ZW1vdmVDaGlsZChub2RlLCBlYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZ2V0Q2hp
bGROb2Rlcyhub2RlLCBub2Rlcyk7CisgICAgdG9Db250YWluZXJOb2RlKG5vZGUpLT5yZW1vdmVD
aGlsZHJlbigpOworfQorCiB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVuKCkK
IHsKICAgICByZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyPE5vZGUsIENvbnRhaW5lck5vZGU+
KHRoaXMpOwpAQCAtMTI3LDEzICsxMzksMTQgQEAgYm9vbCBDb250YWluZXJOb2RlOjppbnNlcnRC
ZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2UKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIE5vZGVWZWN0b3IgdGFyZ2V0czsKLSAg
ICBjb2xsZWN0VGFyZ2V0Tm9kZXMobmV3Q2hpbGQuZ2V0KCksIHRhcmdldHMpOwotICAgIGlmICh0
YXJnZXRzLmlzRW1wdHkoKSkKKyAgICBpZiAocmVmQ2hpbGQtPnByZXZpb3VzU2libGluZygpID09
IG5ld0NoaWxkIHx8IHJlZkNoaWxkID09IG5ld0NoaWxkKSAvLyBub3RoaW5nIHRvIGRvCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgLy8gTm93IGFjdHVhbGx5IGFkZCB0aGUgY2hpbGQocmVu
KQotICAgIGlmIChyZWZDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkgPT0gbmV3Q2hpbGQgfHwgcmVm
Q2hpbGQgPT0gbmV3Q2hpbGQpIC8vIG5vdGhpbmcgdG8gZG8KKyAgICBOb2RlVmVjdG9yIHRhcmdl
dHM7CisgICAgY29sbGVjdENoaWxkcmVuQW5kUmVtb3ZlRnJvbU9sZFBhcmVudChuZXdDaGlsZC5n
ZXQoKSwgdGFyZ2V0cywgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmICh0YXJnZXRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiBF
TkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQpAQCAtMTQ1LDEyICsxNTgsNiBAQCBib29sIENvbnRh
aW5lck5vZGU6Omluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBy
ZWZDaGlsZCwgRXhjZQogICAgIGZvciAoTm9kZVZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0
YXJnZXRzLmJlZ2luKCk7IGl0ICE9IHRhcmdldHMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgTm9k
ZSogY2hpbGQgPSBpdC0+Z2V0KCk7CiAKLSAgICAgICAgLy8gSWYgY2hpbGQgaXMgYWxyZWFkeSBw
cmVzZW50IGluIHRoZSB0cmVlLCBmaXJzdCByZW1vdmUgaXQgZnJvbSB0aGUgb2xkIGxvY2F0aW9u
LgotICAgICAgICBpZiAoQ29udGFpbmVyTm9kZSogb2xkUGFyZW50ID0gY2hpbGQtPnBhcmVudE5v
ZGUoKSkKLSAgICAgICAgICAgIG9sZFBhcmVudC0+cmVtb3ZlQ2hpbGQoY2hpbGQsIGVjKTsKLSAg
ICAgICAgaWYgKGVjKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgICAgIC8vIER1
ZSB0byBhcmJpdHJhcnkgY29kZSBydW5uaW5nIGluIHJlc3BvbnNlIHRvIGEgRE9NIG11dGF0aW9u
IGV2ZW50IGl0J3MKICAgICAgICAgLy8gcG9zc2libGUgdGhhdCAibmV4dCIgaXMgbm8gbG9uZ2Vy
IGEgY2hpbGQgb2YgInRoaXMiLgogICAgICAgICAvLyBJdCdzIGFsc28gcG9zc2libGUgdGhhdCAi
Y2hpbGQiIGhhcyBiZWVuIGluc2VydGVkIGVsc2V3aGVyZS4KQEAgLTI1Miw3ICsyNTksNyBAQCBi
b29sIENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxk
LCBOb2RlKiBvbGRDaGlsZCwgRXhjZQogCiAgICAgaWYgKG9sZENoaWxkID09IG5ld0NoaWxkKSAv
LyBub3RoaW5nIHRvIGRvCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIAorCiAgICAgLy8gTWFr
ZSBzdXJlIHJlcGxhY2luZyB0aGUgb2xkIGNoaWxkIHdpdGggdGhlIG5ldyBpcyBvawogICAgIGNo
ZWNrUmVwbGFjZUNoaWxkKG5ld0NoaWxkLmdldCgpLCBvbGRDaGlsZCwgZWMpOwogICAgIGlmIChl
YykKQEAgLTI3NywyMyArMjg0LDE4IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxk
KFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlCiAgICAgaWYg
KGVjKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAobmV4dCAmJiAobmV4dC0+cHJl
dmlvdXNTaWJsaW5nKCkgPT0gbmV3Q2hpbGQgfHwgbmV4dCA9PSBuZXdDaGlsZCkpIC8vIG5vdGhp
bmcgdG8gZG8KKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICBOb2RlVmVjdG9yIHRhcmdldHM7
Ci0gICAgY29sbGVjdFRhcmdldE5vZGVzKG5ld0NoaWxkLmdldCgpLCB0YXJnZXRzKTsKKyAgICBj
b2xsZWN0Q2hpbGRyZW5BbmRSZW1vdmVGcm9tT2xkUGFyZW50KG5ld0NoaWxkLmdldCgpLCB0YXJn
ZXRzLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBB
ZGQgdGhlIG5ldyBjaGlsZChyZW4pCiAgICAgZm9yIChOb2RlVmVjdG9yOjpjb25zdF9pdGVyYXRv
ciBpdCA9IHRhcmdldHMuYmVnaW4oKTsgaXQgIT0gdGFyZ2V0cy5lbmQoKTsgKytpdCkgewogICAg
ICAgICBOb2RlKiBjaGlsZCA9IGl0LT5nZXQoKTsKIAotICAgICAgICAvLyBJZiB0aGUgbmV3IGNo
aWxkIGlzIGFscmVhZHkgaW4gdGhlIHJpZ2h0IHBsYWNlLCB3ZSdyZSBkb25lLgotICAgICAgICBp
ZiAobmV4dCAmJiAobmV4dCA9PSBjaGlsZCB8fCBuZXh0ID09IGNoaWxkLT5wcmV2aW91c1NpYmxp
bmcoKSkpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAvLyBSZW1vdmUgY2hpbGQgZnJv
bSBpdHMgb2xkIHBvc2l0aW9uLgotICAgICAgICBpZiAoQ29udGFpbmVyTm9kZSogb2xkUGFyZW50
ID0gY2hpbGQtPnBhcmVudE5vZGUoKSkKLSAgICAgICAgICAgIG9sZFBhcmVudC0+cmVtb3ZlQ2hp
bGQoY2hpbGQsIGVjKTsKLSAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCiAgICAgICAgIC8vIER1ZSB0byBhcmJpdHJhcnkgY29kZSBydW5uaW5nIGluIHJlc3BvbnNl
IHRvIGEgRE9NIG11dGF0aW9uIGV2ZW50IGl0J3MKICAgICAgICAgLy8gcG9zc2libGUgdGhhdCAi
bmV4dCIgaXMgbm8gbG9uZ2VyIGEgY2hpbGQgb2YgInRoaXMiLgogICAgICAgICAvLyBJdCdzIGFs
c28gcG9zc2libGUgdGhhdCAiY2hpbGQiIGhhcyBiZWVuIGluc2VydGVkIGVsc2V3aGVyZS4KQEAg
LTMwMyw5ICszMDUsNiBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZChQYXNzUmVm
UHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZQogICAgICAgICBpZiAoY2hp
bGQtPnBhcmVudE5vZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIEFTU0VSVCgh
Y2hpbGQtPm5leHRTaWJsaW5nKCkpOwotICAgICAgICBBU1NFUlQoIWNoaWxkLT5wcmV2aW91c1Np
YmxpbmcoKSk7Ci0KICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2RlKGRvY3VtZW50KCksIGNoaWxkLCB0aGlzKTsK
ICNlbmRpZgpAQCAtNTgwLDcgKzU3OSwxMCBAQCBib29sIENvbnRhaW5lck5vZGU6OmFwcGVuZENo
aWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBibwogICAg
ICAgICByZXR1cm4gbmV3Q2hpbGQ7CiAKICAgICBOb2RlVmVjdG9yIHRhcmdldHM7Ci0gICAgY29s
bGVjdFRhcmdldE5vZGVzKG5ld0NoaWxkLmdldCgpLCB0YXJnZXRzKTsKKyAgICBjb2xsZWN0Q2hp
bGRyZW5BbmRSZW1vdmVGcm9tT2xkUGFyZW50KG5ld0NoaWxkLmdldCgpLCB0YXJnZXRzLCBlYyk7
CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAodGFyZ2V0cy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC01OTIsMTggKzU5NCwxMiBAQCBi
b29sIENvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQs
IEV4Y2VwdGlvbkNvZGUmIGVjLCBibwogICAgIFJlZlB0cjxOb2RlPiBwcmV2ID0gbGFzdENoaWxk
KCk7CiAgICAgZm9yIChOb2RlVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdCA9IHRhcmdldHMuYmVn
aW4oKTsgaXQgIT0gdGFyZ2V0cy5lbmQoKTsgKytpdCkgewogICAgICAgICBOb2RlKiBjaGlsZCA9
IGl0LT5nZXQoKTsKLSAgICAgICAgLy8gSWYgY2hpbGQgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRo
ZSB0cmVlLCBmaXJzdCByZW1vdmUgaXQKLSAgICAgICAgaWYgKENvbnRhaW5lck5vZGUqIG9sZFBh
cmVudCA9IGNoaWxkLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgICAgIG9sZFBhcmVudC0+cmVt
b3ZlQ2hpbGQoY2hpbGQsIGVjKTsKLSAgICAgICAgICAgIGlmIChlYykKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIC8vIElmIHRoZSBjaGlsZCBoYXMgYSBwYXJl
bnQgYWdhaW4sIGp1c3Qgc3RvcCB3aGF0IHdlJ3JlIGRvaW5nLCBiZWNhdXNlCi0gICAgICAgICAg
ICAvLyB0aGF0IG1lYW5zIHNvbWVvbmUgaXMgZG9pbmcgc29tZXRoaW5nIHdpdGggRE9NIG11dGF0
aW9uIC0tIGNhbid0IHJlLXBhcmVudAotICAgICAgICAgICAgLy8gYSBjaGlsZCB0aGF0IGFscmVh
ZHkgaGFzIGEgcGFyZW50LgotICAgICAgICAgICAgaWYgKGNoaWxkLT5wYXJlbnROb2RlKCkpCi0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKworICAgICAgICAvLyBJZiB0aGUgY2hp
bGQgaGFzIGEgcGFyZW50IGFnYWluLCBqdXN0IHN0b3Agd2hhdCB3ZSdyZSBkb2luZywgYmVjYXVz
ZQorICAgICAgICAvLyB0aGF0IG1lYW5zIHNvbWVvbmUgaXMgZG9pbmcgc29tZXRoaW5nIHdpdGgg
RE9NIG11dGF0aW9uIC0tIGNhbid0IHJlLXBhcmVudAorICAgICAgICAvLyBhIGNoaWxkIHRoYXQg
YWxyZWFkeSBoYXMgYSBwYXJlbnQuCisgICAgICAgIGlmIChjaGlsZC0+cGFyZW50Tm9kZSgpKQor
ICAgICAgICAgICAgYnJlYWs7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2RlKGRvY3VtZW50KCksIGNoaWxk
LCB0aGlzKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA4MGM3MDQwMjY3OTE2YzhlNjk0NDY3MTRjYWY5OGJmNWMzZTQ2MGY4
Li40ZGY1MTFiZDNkNjg5YzM2NTFmNGNkYzczM2I1YTFlY2I5MjlmMTc0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTItMDMtMjMgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgTWF0Y2ggRE9NNCBzcGVjIHdpdGggcmVzcGVjdCB0byBEb2N1bWVudEZyYWdtZW50
IGluc2VydGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODIwODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGZhc3QvZG9tL05vZGUvZnJhZ21lbnQtbXV0YXRpb24tZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvZG9tL05vZGUvZnJhZ21lbnQtbXV0YXRpb24uaHRtbDogUmVtb3ZlZCB0ZXN0cyB0
aGF0IG5vIGxvbmdlciBtYWtlIHNlbnNlCisgICAgICAgIHNpbmNlIHRoZSBEb2N1bWVudEZyYWdt
ZW50IGhhcyBubyBjaGlsZHJlbiBieSB0aGUgdGltZSBET01TdWJ0cmVlTW9kaWZpZWQgaXMgY2Fs
bGVkLgorICAgICAgICAqIGZhc3QvbXV0YXRpb24vZG9jdW1lbnQtZnJhZ21lbnQtaW5zZXJ0aW9u
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tdXRhdGlvbi9kb2N1bWVudC1m
cmFnbWVudC1pbnNlcnRpb24uaHRtbDogQWRkZWQuCisKIDIwMTItMDMtMjMgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRlZCBhbGwgdGVzdHMgdGhhdCBjcmFz
aGVkIG1vcmUgdGhhbiBvbmNlIG9uIHRoZSBMaW9uIFdlYktpdDIgYm90cyBiZXR3ZWVuIHIxMTE4
ODUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL05vZGUvZnJhZ21lbnQtbXV0YXRp
b24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTm9kZS9mcmFnbWVudC1tdXRh
dGlvbi1leHBlY3RlZC50eHQKaW5kZXggNDFlOGZhNGQzMzA2ZjU4OWQ0OWU3NmE0NWU1MmQ1Y2M3
NzAwZmQyZi4uMGYwNGU2NmEwZTUzZTZmNWIxOTAxYzVkY2IxNzZmNjdmMmU0Zjg2OCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTm9kZS9mcmFnbWVudC1tdXRhdGlvbi1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTm9kZS9mcmFnbWVudC1tdXRhdGlvbi1l
eHBlY3RlZC50eHQKQEAgLTEsMTcgKzEsMTMgQEAKIFRoaXMgdGVzdCBjcmVhdGVzIGEgZnJhZ21l
bnQgY29udGFpbmluZyB0aHJlZSBlbGVtZW50czogIkIiLCAiVSIsIGFuZCAiUCIsIGF0dGVtcHRz
IHRvIGFwcGVuZENoaWxkIHRoaXMgZnJhZ21lbnQgYW5kIHN0dWRpZXMgZWZmZWN0cyBvZiBtdXRh
dGlvbiBldmVudHMgb24gdGhlIGZyYWdtZW50LgogCiBJbnNlcnRpbmcgYW4gZWxlbWVudCBpbiBm
cm9udCBvZiB0aGUgbmV4dCBpdGVtIGluIGZyYWdtZW50IHNob3VsZCBub3QgYWZmZWN0IHRoZSBy
ZXN1bHQ6IFBBU1MKLVJlbW92aW5nIG5leHQgaXRlbSBzaG91bGQgbm90IGFib3J0IGl0ZXJhdGlv
bjogUEFTUwogQXBwZW5kaW5nIGFuIGVsZW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZnJhZ21lbnQg
c2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3VsdDogUEFTUwogQ29udGludWFsbHkgcmUtYXBwZW5k
aW5nIHJlbW92ZWQgZWxlbWVudCB0byB0aGUgZnJhZ21lbnQgc2hvdWxkIGV2ZW50dWFsbHkgdGhy
b3cgTk9UX0ZPVU5EX0VSUjogUEFTUwotTW92aW5nIG5leHQgaXRlbSB0byBiZWNvbWUgcHJldmlv
dXMgc2libGluZyBvZiB0aGUgcmUtcGFyZW50ZWUgc2hvdWxkIG5vdCByZXN1bHQgaW4gc3RhY2sg
ZXhoYXVzdGlvbjogUEFTUwogCiBUaGlzIHRlc3QgY3JlYXRlcyBhIGZyYWdtZW50IGNvbnRhaW5p
bmcgdGhyZWUgZWxlbWVudHM6ICJCIiwgIlUiLCBhbmQgIlAiLCBhdHRlbXB0cyB0byBpbnNlcnRC
ZWZvcmUgdGhpcyBmcmFnbWVudCBhbmQgc3R1ZGllcyBlZmZlY3RzIG9mIG11dGF0aW9uIGV2ZW50
cyBvbiB0aGUgZnJhZ21lbnQuCiAKIEluc2VydGluZyBhbiBlbGVtZW50IGluIGZyb250IG9mIHRo
ZSBuZXh0IGl0ZW0gaW4gZnJhZ21lbnQgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIHJlc3VsdDogUEFT
UwotUmVtb3ZpbmcgbmV4dCBpdGVtIHNob3VsZCBub3QgYWJvcnQgaXRlcmF0aW9uOiBQQVNTCiBB
cHBlbmRpbmcgYW4gZWxlbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmcmFnbWVudCBzaG91bGQgbm90
IGFmZmVjdCB0aGUgcmVzdWx0OiBQQVNTCiBDb250aW51YWxseSByZS1hcHBlbmRpbmcgcmVtb3Zl
ZCBlbGVtZW50IHRvIHRoZSBmcmFnbWVudCBzaG91bGQgZXZlbnR1YWxseSB0aHJvdyBOT1RfRk9V
TkRfRVJSOiBQQVNTCi1Nb3ZpbmcgbmV4dCBpdGVtIHRvIGJlY29tZSBwcmV2aW91cyBzaWJsaW5n
IG9mIHRoZSByZS1wYXJlbnRlZSBzaG91bGQgbm90IHJlc3VsdCBpbiBzdGFjayBleGhhdXN0aW9u
OiBQQVNTCiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTm9kZS9mcmFnbWVu
dC1tdXRhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTm9kZS9mcmFnbWVudC1tdXRh
dGlvbi5odG1sCmluZGV4IDAzN2UxN2JmNTAwMmY4NDY5MWYxODA3NjA2NjRmYzQxNjMwYmMzYWUu
LmY4OTUwNmZkYWRmY2UyY2RjNDVkM2NmMTlhYzlmNjQ1MGMxY2YwYTQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL05vZGUvZnJhZ21lbnQtbXV0YXRpb24uaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9Ob2RlL2ZyYWdtZW50LW11dGF0aW9uLmh0bWwKQEAgLTExMywxMSAr
MTEzLDYgQEAgZnVuY3Rpb24gcnVuVGVzdChtZXRob2ROYW1lLCBtZXRob2QpCiAgICAgICAgIGZy
YWcuaW5zZXJ0QmVmb3JlKG1pc3NpbmcsIGZyYWcuZmlyc3RDaGlsZCk7CiAgICAgfSwgZXhwZWN0
Tm9kZXMoIkJVUCIpKTsKIAotICAgIHRlc3RGcmFnbWVudChtZXRob2QsICJSZW1vdmluZyBuZXh0
IGl0ZW0gc2hvdWxkIG5vdCBhYm9ydCBpdGVyYXRpb24iLCBmdW5jdGlvbihldnQsIGZyYWcpCi0g
ICAgewotICAgICAgICBmcmFnLnJlbW92ZUNoaWxkKGZyYWcuZmlyc3RDaGlsZCk7Ci0gICAgfSwg
ZXhwZWN0Tm9kZXMoIkJVUCIpKTsKLQogICAgIHZhciBleHRyYSA9IGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZW0iKSk7CiAgICAgdGVzdEZyYWdtZW50
KG1ldGhvZCwgIkFwcGVuZGluZyBhbiBlbGVtZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZyYWdtZW50
IHNob3VsZCBub3QgYWZmZWN0IHRoZSByZXN1bHQiLCBmdW5jdGlvbihldnQsIGZyYWcpCiAgICAg
ewpAQCAtMTI4LDExICsxMjMsNiBAQCBmdW5jdGlvbiBydW5UZXN0KG1ldGhvZE5hbWUsIG1ldGhv
ZCkKICAgICB7CiAgICAgICAgIHN0YXNoLmluc2VydEJlZm9yZShmcmFnLmxhc3RDaGlsZCwgc3Rh
c2guZmlyc3RDaGlsZCk7CiAgICAgfSwgZXhwZWN0RXhjZXB0aW9uKDgpLCB0cnVlKTsKLQotICAg
IHRlc3RGcmFnbWVudChtZXRob2QsICJNb3ZpbmcgbmV4dCBpdGVtIHRvIGJlY29tZSBwcmV2aW91
cyBzaWJsaW5nIG9mIHRoZSByZS1wYXJlbnRlZSBzaG91bGQgbm90IHJlc3VsdCBpbiBzdGFjayBl
eGhhdXN0aW9uIiwgZnVuY3Rpb24oZXZ0LCBmcmFnLCBzdGFzaCkKLSAgICB7Ci0gICAgICAgIGRv
Y3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGZyYWcuZmlyc3RDaGlsZCwgc3Rhc2gpOwotICAgIH0s
IGV4cGVjdE5vZGVzKCJCVVAiKSk7CiAgICAgcHJpbnRMb2cobWV0aG9kTmFtZSk7CiB9CiBmdW5j
dGlvbiBydW5UZXN0cygpCkBAIC0xNDUsNCArMTM1LDQgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKQog
PC9oZWFkPgogPGJvZHkgb25sb2FkPSJydW5UZXN0cygpIj4KIDwvYm9keT4KLTwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L211dGF0aW9uL2RvY3VtZW50LWZyYWdtZW50LWluc2VydGlvbi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2RvY3VtZW50LWZyYWdtZW50LWluc2VydGlvbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjJmM2VlM2Y0M2FhOTljNjJiYTM4YWViZTEzNzQ3NDJi
NzJjZTEzOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZG9j
dW1lbnQtZnJhZ21lbnQtaW5zZXJ0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwIEBACitJ
bnNlcnRpbmcgRG9jdW1lbnRGcmFnbWVudHMgc2hvdWxkIHJlbW92ZSBhbGwgY2hpbGRyZW4gb2Yg
dGhlIGZyYWdtZW50IGJlZm9yZSBpbnNlcnRpbmcgdGhlIGNoaWxkcmVuLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworVGVzdGluZyBhcHBlbmRDaGlsZAorUEFTUyBtdXRhdGlvbnMu
bGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDAKK1BB
U1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMgorUEFTUyBtdXRhdGlvbnNb
MV0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMgorUEFTUyBtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVz
Lmxlbmd0aCBpcyAwCisKK1Rlc3RpbmcgaW5zZXJ0QmVmb3JlCitQQVNTIG11dGF0aW9ucy5sZW5n
dGggaXMgMgorUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMAorUEFTUyBt
dXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1sxXS5h
ZGRlZE5vZGVzLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVu
Z3RoIGlzIDAKKworVGVzdGluZyByZXBsYWNlQ2hpbGQKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBp
cyAyCitQQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAwCitQQVNTIG11dGF0
aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzFdLmFkZGVk
Tm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGgg
aXMgMQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9kb2N1bWVudC1mcmFnbWVu
dC1pbnNlcnRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vZG9jdW1lbnQtZnJh
Z21lbnQtaW5zZXJ0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FjNDZjZmY0MzIwN2E5ZTJiZjBkOWZh
NmMzYzNkZWMyYWU1ZmZlNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbXV0
YXRpb24vZG9jdW1lbnQtZnJhZ21lbnQtaW5zZXJ0aW9uLmh0bWwKQEAgLTAsMCArMSw3NyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignSW5zZXJ0aW5nIERvY3VtZW50
RnJhZ21lbnRzIHNob3VsZCByZW1vdmUgYWxsIGNoaWxkcmVuIG9mIHRoZSBmcmFnbWVudCBiZWZv
cmUgaW5zZXJ0aW5nIHRoZSBjaGlsZHJlbi4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCitmdW5jdGlvbiBjcmVhdGVPYnNlcnZlZEZyYWdtZW50KCkgeworICAgIHZhciBmcmFn
bWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICBmcmFnbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdiJykpOworICAgIGZyYWdtZW50LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2knKSk7CisgICAgb2JzZXJ2ZXIub2Jz
ZXJ2ZShmcmFnbWVudCwge2NoaWxkTGlzdDogdHJ1ZX0pOworICAgIHJldHVybiBmcmFnbWVudDsK
K30KKworZnVuY3Rpb24gY3JlYXRlT2JzZXJ2ZWREaXYoKSB7CisgICAgcmV0dXJuIGRpdjsKK30K
KworZnVuY3Rpb24gY2FsbGJhY2sobXV0YXRpb25zKSB7CisgICAgd2luZG93Lm11dGF0aW9ucyA9
IG11dGF0aW9uczsKK30KK3ZhciBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVy
KGNhbGxiYWNrKTsKKworZnVuY3Rpb24gdGVzdEFwcGVuZENoaWxkKCkgeworICAgIGRlYnVnKCdU
ZXN0aW5nIGFwcGVuZENoaWxkJyk7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7Y2hpbGRMaXN0OiB0cnVlfSk7
CisgICAgZGl2LmFwcGVuZENoaWxkKGNyZWF0ZU9ic2VydmVkRnJhZ21lbnQoKSk7CisgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgn
LCAnMicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3Ro
JywgJzAnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVu
Z3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxl
bmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVz
Lmxlbmd0aCcsICcwJyk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgdGVzdEluc2VydEJl
Zm9yZSgpOworICAgIH0sIDApOworfQorCitmdW5jdGlvbiB0ZXN0SW5zZXJ0QmVmb3JlKCkgewor
ICAgIGRlYnVnKCdUZXN0aW5nIGluc2VydEJlZm9yZScpOworICAgIHZhciBkaXYgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwge2NoaWxkTGlz
dDogdHJ1ZX0pOworICAgIGRpdi5pbnNlcnRCZWZvcmUoY3JlYXRlT2JzZXJ2ZWRGcmFnbWVudCgp
LCBkaXYuZmlyc3RDaGlsZCk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMicpOworICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoJywgJzAnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcwJyk7CisgICAgICAgIGRlYnVn
KCcnKTsKKyAgICAgICAgdGVzdFJlcGxhY2VDaGlsZCgpOworICAgIH0sIDApOworfQorCitmdW5j
dGlvbiB0ZXN0UmVwbGFjZUNoaWxkKCkgeworICAgIGRlYnVnKCdUZXN0aW5nIHJlcGxhY2VDaGls
ZCcpOworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBk
aXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICBvYnNl
cnZlci5vYnNlcnZlKGRpdiwge2NoaWxkTGlzdDogdHJ1ZX0pOworICAgIGRpdi5yZXBsYWNlQ2hp
bGQoY3JlYXRlT2JzZXJ2ZWRGcmFnbWVudCgpLCBkaXYuZmlyc3RDaGlsZCk7CisgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAn
MicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoJywg
JzAnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3Ro
JywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0
aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzLmxl
bmd0aCcsICcxJyk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgfSwgMCk7Cit9CisKK3Rlc3RBcHBlbmRDaGlsZCgpOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>