<?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>78614</bug_id>
          
          <creation_ts>2012-02-14 09:54:10 -0800</creation_ts>
          <short_desc>Set Referrer header for media downloads</short_desc>
          <delta_ts>2012-02-22 10:59:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>jer.noble</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>556365</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-02-14 09:54:10 -0800</bug_when>
    <thetext>WebKit should be able to set the Referer header sent when a media engine downloads an audio or video file, so servers can know the address of the webpage that links to it. This is important for logging and simple security purposes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558517</commentid>
    <comment_count>1</comment_count>
      <attachid>127441</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-02-16 14:18:32 -0800</bug_when>
    <thetext>Created attachment 127441
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558583</commentid>
    <comment_count>2</comment_count>
      <attachid>127441</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-16 15:17:26 -0800</bug_when>
    <thetext>Comment on attachment 127441
Proposed patch

SecurityPolicy / referrer stuff looks good to me.  The ObjC part mystifies me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558675</commentid>
    <comment_count>3</comment_count>
      <attachid>127441</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-16 16:48:31 -0800</bug_when>
    <thetext>Comment on attachment 127441
Proposed patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3827
&gt; +    return SecurityPolicy::generateReferrerHeader(document()-&gt;referrerPolicy(), KURL(ParsedURLString, url), frame-&gt;loader()-&gt;outgoingReferrer());

I tried to follow the code, but couldn&apos;t find what guarantees that the url argument is a result of calling string() on a valid KURL. This is the only case when ParsedURLString-style constructor can be used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559356</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-02-17 11:12:02 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 127441 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127441&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:3827
&gt; &gt; +    return SecurityPolicy::generateReferrerHeader(document()-&gt;referrerPolicy(), KURL(ParsedURLString, url), frame-&gt;loader()-&gt;outgoingReferrer());
&gt; 
&gt; I tried to follow the code, but couldn&apos;t find what guarantees that the url argument is a result of calling string() on a valid KURL. This is the only case when ParsedURLString-style constructor can be used.

HTMLMediaElement::loadResource passes a valid KURL to MediaPlayer::load,  MediaPlayer::loadWithNextMediaEngine passes url.string() to the media engine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560411</commentid>
    <comment_count>5</comment_count>
      <attachid>127441</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-20 15:22:33 -0800</bug_when>
    <thetext>Comment on attachment 127441
Proposed patch

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

Shouldn&apos;t the test have custom results on some platforms now? Or is it already skipped there?

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

Please mention that a test was modified to cover this.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3825
&gt; +        return emptyString();

Probably doesn&apos;t matter here, but I&apos;d have returned a null string here, signaling that we don&apos;t have a value.

&gt;&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:3827
&gt;&gt;&gt; +    return SecurityPolicy::generateReferrerHeader(document()-&gt;referrerPolicy(), KURL(ParsedURLString, url), frame-&gt;loader()-&gt;outgoingReferrer());
&gt;&gt; 
&gt;&gt; I tried to follow the code, but couldn&apos;t find what guarantees that the url argument is a result of calling string() on a valid KURL. This is the only case when ParsedURLString-style constructor can be used.
&gt; 
&gt; HTMLMediaElement::loadResource passes a valid KURL to MediaPlayer::load,  MediaPlayer::loadWithNextMediaEngine passes url.string() to the media engine.

OK. I wish compiler could enforce this (there was some talk about adding ParsedURLString class for tis purpose).

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:939
&gt; +    if (m_mediaPlayerClient)
&gt; +        return m_mediaPlayerClient-&gt;mediaPlayerReferrer(url);
&gt; +    return emptyString();

Null string here, too, and we usually prefer early return to nesting normal code path.

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:171
&gt; +    virtual String mediaPlayerReferrer(const String&amp;) const { return emptyString(); }

Null string again (what are the subclasses that don&apos;t need to implement?)

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:265
&gt; +    if (!referrer.isEmpty()) {

This check should remain isEmpty even if you change other places to make null strings. I&apos;m not really sure why, but it seems like common pattern.

&gt; LayoutTests/ChangeLog:9
&gt; +            anything bug video-referer.html.

s/bug/but/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561112</commentid>
    <comment_count>6</comment_count>
      <attachid>128016</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-02-21 12:07:46 -0800</bug_when>
    <thetext>Created attachment 128016
Updated patch.

HTMLMediaElement already knows the current url so I simplified the logic by removing the url parameter from the referrer methods. Realized that the layout test did not need to use two cgis, so consolidated their functionality and removed one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561166</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-02-21 13:08:49 -0800</bug_when>
    <thetext> http://trac.webkit.org/changeset/108387</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561387</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-21 16:55:30 -0800</bug_when>
    <thetext>This test seems to fail on the chromium bots:


CONSOLE MESSAGE: line 30: Uncaught TypeError: Cannot read property &apos;code&apos; of null
EVENT(error)
EVENT(canplay)
Tests that the media player will send the relevant referer when requesting the media file.


is this error expected?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561985</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-02-22 07:46:40 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; This test seems to fail on the chromium bots:
&gt; 
&gt; 
&gt; CONSOLE MESSAGE: line 30: Uncaught TypeError: Cannot read property &apos;code&apos; of null
&gt; EVENT(error)
&gt; EVENT(canplay)
&gt; Tests that the media player will send the relevant referer when requesting the media file.
&gt; 
&gt; 
&gt; is this error expected?

No, the error is not expected. The old test &quot;succeeded&quot; if the referrer header had any value at all, now it fails unless the correct value is passed so maybe the Chromium media engine does not send the correct referrer? I am not set up to debug the failure so I wrote up https://bugs.webkit.org/show_bug.cgi?id=79239 and skipped the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562152</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-22 10:59:14 -0800</bug_when>
    <thetext>OK, thank you for investigating and filing that bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127441</attachid>
            <date>2012-02-16 14:18:32 -0800</date>
            <delta_ts>2012-02-21 12:07:46 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_5.txt</filename>
            <type>text/plain</type>
            <size>11400</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzk3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAyLTE2ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFNldCBSZWZlcnJlciBo
ZWFkZXIgZm9yIG1lZGlhIGRvd25sb2FkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzg2MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllclJlZmVycmVyKTogTmV3LCByZXR1cm4gdGhlIGRvY3VtZW50J3MgcmVmZXJl
ci4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpyZWZlcnJlcik6IE5ldywgcmV0dXJuIHRoZSBjbGllbnQncyBtZWRpYVBsYXllclJlZmVy
cmVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJSZWZlcnJlcik6CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRG
b3JVUkwpOiBUZWxsIEFWRm91bmRhdGlvbiB0byBhZGQKKyAgICAgICAgICAgIGEgcmVmZXJlciBo
ZWFkZXIuCisKIDIwMTItMDItMTYgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW3NvdXBdIE1vdmUgaW1wb3J0YW50IFNvdXBTZXNzaW9uIGZlYXR1
cmUgaW5pdGlhbGl6YXRpb24gdG8gV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDc3MTApCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBA
CiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlz
dGVuZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5
UG9saWN5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290Lmgi
CiAjaW5jbHVkZSAiU2hhZG93Um9vdExpc3QuaCIKQEAgLTM4MTcsNiArMzgxOCwxNCBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OnNob3VsZERpc2FibGVTbGVlCiB9CiAjZW5kaWYKIAorU3RyaW5n
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVmZXJyZXIoY29uc3QgU3RyaW5nJiB1cmwp
IGNvbnN0Cit7CisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBp
ZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIHJldHVybiBT
ZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihkb2N1bWVudCgpLT5yZWZlcnJl
clBvbGljeSgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgZnJhbWUtPmxvYWRlcigpLT5v
dXRnb2luZ1JlZmVycmVyKCkpOwogfQogCit9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAxMDc3MTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzg5LDYgKzM4OSw4
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJTb3VyY2VVUkwoKSBj
b25zdDsKICNlbmRpZgogCisgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJSZWZlcnJlcihj
b25zdCBTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKKwogICAgIHZvaWQgbG9hZFRpbWVyRmlyZWQo
VGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKTsKICAgICB2b2lkIHByb2dyZXNzRXZlbnRUaW1lckZp
cmVkKFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+Kik7CiAgICAgdm9pZCBwbGF5YmFja1Byb2dyZXNz
VGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2aXNpb24gMTA3
NzEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05MzEsNiArOTMxLDEzIEBAIEF1ZGlvU291cmNlUHJvdmlkZXIq
IE1lZGlhUGxheWVyOjphdWRpb1MKICAgICByZXR1cm4gbV9wcml2YXRlLT5hdWRpb1NvdXJjZVBy
b3ZpZGVyKCk7CiB9CiAjZW5kaWYgLy8gV0VCX0FVRElPCisgICAgCitTdHJpbmcgTWVkaWFQbGF5
ZXI6OnJlZmVycmVyKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAoreworICAgIGlmIChtX21lZGlh
UGxheWVyQ2xpZW50KQorICAgICAgICByZXR1cm4gbV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQ
bGF5ZXJSZWZlcnJlcih1cmwpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQogCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aAkocmV2aXNpb24gMTA3NzEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJTb3VyY2VPcGVuZWQoKSB7IH0KICAgICB2aXJ0
dWFsIFN0cmluZyBtZWRpYVBsYXllclNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuICJ4LW1lZGlh
LXNvdXJjZS11bnN1cHBvcnRlZDoiOyB9CiAjZW5kaWYKKworICAgIHZpcnR1YWwgU3RyaW5nIG1l
ZGlhUGxheWVyUmVmZXJyZXIoY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJp
bmcoKTsgfQogfTsKIAogY2xhc3MgTWVkaWFQbGF5ZXIgewpAQCAtMjg2LDcgKzI4OCw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIGZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgpOwogICAgIHZvaWQgY2hh
cmFjdGVyaXN0aWNDaGFuZ2VkKCk7CiAKLQogICAgIHZvaWQgcmVwYWludCgpOwogCiAgICAgTWVk
aWFQbGF5ZXJDbGllbnQqIG1lZGlhUGxheWVyQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZWRp
YVBsYXllckNsaWVudDsgfQpAQCAtMzM0LDYgKzMzNSw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcg
c291cmNlVVJMKCkgY29uc3Q7CiAjZW5kaWYKIAorICAgIFN0cmluZyByZWZlcnJlcihjb25zdCBT
dHJpbmcmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBNZWRpYVBsYXllcihNZWRpYVBsYXllckNs
aWVudCopOwogICAgIHZvaWQgbG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUoTWVkaWFQbGF5ZXJGYWN0
b3J5Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5oCShyZXZpc2lvbiAxMDc3MTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Miw2ICsyNDIsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBj
b25zdCBTdHJpbmcmIGFzc2V0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9hc3NldFVSTDsgfQogCisg
ICAgTWVkaWFQbGF5ZXIqIHBsYXllcigpIHsgcmV0dXJuIG1fcGxheWVyOyB9CisKIHByaXZhdGU6
CiAgICAgTWVkaWFQbGF5ZXIqIG1fcGxheWVyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0JKHJldmlzaW9uIDEwNzcxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI1NiwxMSArMjU2LDIxIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzoKIAogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwogCi0g
ICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9i
amVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6QVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkUmVtb3RlUmVmZXJlbmNlVG9M
b2NhbCB8IEFWQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbkZvcmJpZExvY2FsUmVmZXJlbmNlVG9S
ZW1vdGVdLCBBVlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5LCAKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG5pbF07CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IG9w
dGlvbnMoQWRvcHROUywgW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7ICAgIAor
CisgICAgW29wdGlvbnMuZ2V0KCkgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50OkFW
QXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbkZvcmJpZFJlbW90ZVJlZmVyZW5jZVRvTG9jYWwgfCBB
VkFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25Gb3JiaWRMb2NhbFJlZmVyZW5jZVRvUmVtb3RlXSBm
b3JLZXk6QVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleV07CisKKyNpZiAhZGVmaW5l
ZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xJT04p
CisgICAgU3RyaW5nIHJlZmVycmVyID0gcGxheWVyKCktPnJlZmVycmVyKHVybCk7CisgICAgaWYg
KCFyZWZlcnJlci5pc0VtcHR5KCkpIHsKKyAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rp
b25hcnk+IGhlYWRlckZpZWxkcyhBZG9wdE5TLCBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2Nd
IGluaXRdKTsKKyAgICAgICAgW2hlYWRlckZpZWxkcy5nZXQoKSBzZXRPYmplY3Q6cmVmZXJyZXIg
Zm9yS2V5OkAiUmVmZXJlciJdOworICAgICAgICBbb3B0aW9ucy5nZXQoKSBzZXRPYmplY3Q6aGVh
ZGVyRmllbGRzLmdldCgpIGZvcktleTpAIkFWVVJMQXNzZXRIVFRQSGVhZGVyRmllbGRzS2V5Il07
CisgICAgfQorI2VuZGlmCisKICAgICBOU1VSTCAqY29jb2FVUkwgPSBLVVJMKFBhcnNlZFVSTFN0
cmluZywgdXJsKTsKLSAgICBtX2F2QXNzZXQuYWRvcHROUyhbW0FWVVJMQXNzZXQgYWxsb2NdIGlu
aXRXaXRoVVJMOmNvY29hVVJMIG9wdGlvbnM6b3B0aW9uc10pOworICAgIG1fYXZBc3NldC5hZG9w
dE5TKFtbQVZVUkxBc3NldCBhbGxvY10gaW5pdFdpdGhVUkw6Y29jb2FVUkwgb3B0aW9uczpvcHRp
b25zLmdldCgpXSk7CiAKICAgICBtX2hhdmVDaGVja2VkUGxheWFiaWxpdHkgPSBmYWxzZTsKIApJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMTA3OTc3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDItMTYgIEVyaWMgQ2FybHNvbiAgPGVy
aWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2V0IFJlZmVycmVyIGhlYWRlciBmb3Ig
bWVkaWEgZG93bmxvYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03ODYxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaHR0cC90ZXN0cy9tZWRpYS9yZXNvdXJjZXMvdmlkZW8tcmVmZXJlci1jaGVjay1y
ZWZlcmVyLnBocDogVXBkYXRlIHRvIGZhaWwgaWYgdGhlIHJlZmVyZXIgaXMKKyAgICAgICAgICAg
IGFueXRoaW5nIGJ1ZyB2aWRlby1yZWZlcmVyLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9t
ZWRpYS92aWRlby1yZWZlcmVyLmh0bWw6IFNldCB0aGUgcGhwIHNjcmlwdCBhcyB0aGUgJ3NyYycg
b24gYSA8c291cmNlPiBlbGVtZW50IAorICAgICAgICAgICAgaW5zdGVhZCBvZiBvbiB0aGUgPHZp
ZGVvPiBlbGVtZW50IHNvIHdlIGNhbiBhbHNvIGFkZCBhICd0eXBlJyBhdHRyaWJ1dGUuIEFkZCBz
dXBwb3J0IGZvcgorICAgICAgICAgICAgYnl0ZS1yYW5nZSByZXF1ZXN0cyBzbyBpdCB3aWxsIHdv
cmsgd2l0aCBBVkZvdW5kYXRpb24uCisKIDIwMTItMDItMTYgIEphbWVzIFJvYmluc29uICA8amFt
ZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFVucmV2aWV3ZWQsIHVwZGF0
ZSBiYXNlbGluZXMgZm9yIHJlZ2lvbiByZXBhaW50IHRlc3RzIGR1ZSB0byBza2lhIG9mZi1ieS1v
bmUuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXJlZmVyZXIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXJlZmVy
ZXIuaHRtbAkocmV2aXNpb24gMTA3NzEwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRp
YS92aWRlby1yZWZlcmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw5IEBACiA8aGVh
ZD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0ibG9hZENvb2tpZUFuZFJlZmVyZXIoKSI+Ci08dmlk
ZW8gaWQ9InZpZGVvIj48L3ZpZGVvPgorPHZpZGVvIGlkPSJ2aWRlbyI+CisgICAgPHNvdXJjZSBp
ZD0ic291cmNlIj4KKzwvdmlkZW8+CiA8c2NyaXB0IHNyYz0uLi8uLi9tZWRpYS1yZXNvdXJjZXMv
dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPS4uLy4uL21lZGlhLXJlc291cmNl
cy9tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgogPHNjcmlwdD4KQEAgLTE5LDggKzIxLDEwIEBACiAK
ICAgICAgICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgICAgICAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2aWRlbycpOwot
ICAgICAgICAgICAgICAgIHZpZGVvLnNyYz0naHR0cDovLzEyNy4wLjAuMTo4MDAwL21lZGlhL3Jl
c291cmNlcy92aWRlby1yZWZlcmVyLWNoZWNrLXJlZmVyZXIucGhwJzsKLSAgICAgICAgICAgICAg
ICB2aWRlby5wbGF5KCk7CisgICAgICAgICAgICAgICAgc291cmNlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3NvdXJjZScpOworICAgICAgICAgICAgICAgIHNvdXJjZS5zcmMgPSAnaHR0cDov
LzEyNy4wLjAuMTo4MDAwL21lZGlhL3Jlc291cmNlcy92aWRlby1yZWZlcmVyLWNoZWNrLXJlZmVy
ZXIucGhwJzsKKyAgICAgICAgICAgICAgICBzb3VyY2UudHlwZSA9IG1pbWVUeXBlRm9yRXh0ZW5z
aW9uKG1vdmllLnNwbGl0KCcuJykucG9wKCkpOworICAgICAgICAgICAgICAgIHZpZGVvLmxvYWQo
KTsKICAgICAgICAgfSk7CiAKICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFt
ZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3Jlc291cmNlcy92aWRlby1y
ZWZlcmVyLWNoZWNrLXJlZmVyZXIucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWVkaWEvcmVzb3VyY2VzL3ZpZGVvLXJlZmVyZXItY2hlY2stcmVmZXJlci5waHAJKHJl
dmlzaW9uIDEwNzcxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvcmVzb3VyY2Vz
L3ZpZGVvLXJlZmVyZXItY2hlY2stcmVmZXJlci5waHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjQg
KzEsNTkgQEAKIDw/cGhwCi0gICAgaWYoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKQotICAgIHsK
LSAgICAgICAgJGV4dGVuc2lvbiA9IHN1YnN0cigkX0NPT0tJRVsiVEVTVCJdLCAtMyk7CiAKLSAg
ICAgICAgaWYgKCRleHRlbnNpb24gPT0gJ21wNCcpIHsKLSAgICAgICAgICAgICAgIGhlYWRlcigi
Q29udGVudC1UeXBlOiB2aWRlby9tcDQiKTsKLSAgICAgICAgICAgICAgICRmaWxlTmFtZSA9ICJ0
ZXN0Lm1wNCI7Ci0gICAgICAgIH0gZWxzZSBpZiAoJGV4dGVuc2lvbiA9PSAnb2d2JykgewotICAg
ICAgICAgICAgICAgaGVhZGVyKCJDb250ZW50LVR5cGU6IHZpZGVvL29nZyIpOwotICAgICAgICAg
ICAgICAgJGZpbGVOYW1lID0gInRlc3Qub2d2IjsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICBkaWU7Ci0KLSAgICAgICAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1zdG9yZSIpOwot
ICAgICAgICBoZWFkZXIoIkNvbm5lY3Rpb246IGNsb3NlIik7Ci0KLSAgICAgICAgJGZuID0gZm9w
ZW4oJGZpbGVOYW1lLCAiciIpOwotICAgICAgICBmcGFzc3RocnUoJGZuKTsKLSAgICAgICAgZmNs
b3NlKCRmbik7Ci0gICAgICAgIGV4aXQ7CisgICAgJHJlZmVyID0gJF9TRVJWRVJbIkhUVFBfUkVG
RVJFUiJdOworICAgIGlmICghaXNzZXQoJHJlZmVyKSB8fCBzdHJpcG9zKCRyZWZlciwgInZpZGVv
LXJlZmVyZXIuaHRtbCIpID09PSBmYWxzZSkKKyAgICAgICAgZGllOworCisgICAgJGV4dGVuc2lv
biA9IHN1YnN0cigkX0NPT0tJRVsiVEVTVCJdLCAtMyk7CisgICAgaWYgKCRleHRlbnNpb24gPT0g
Im1wNCIpIHsKKyAgICAgICAgJHR5cGUgPSAidmlkZW8vbXA0IjsKKyAgICAgICAgJGZpbGVOYW1l
ID0gInRlc3QubXA0IjsKKyAgICB9IGVsc2UgaWYgKCRleHRlbnNpb24gPT0gIm9ndiIpIHsKKyAg
ICAgICAgJHR5cGUgPSAidmlkZW8vb2dnIjsKKyAgICAgICAgJGZpbGVOYW1lID0gInRlc3Qub2d2
IjsKICAgICB9IGVsc2UKICAgICAgICAgZGllOworCisgICAgJGZpbGVTaXplID0gZmlsZXNpemUo
JGZpbGVOYW1lKTsKKyAgICAkc3RhcnQgPSAwOworICAgICRlbmQgPSAkZmlsZVNpemUgLSAxOwor
ICAgICRjb250ZW50UmFuZ2UgPSAkX1NFUlZFUlsiSFRUUF9SQU5HRSJdOworICAgIGlmIChpc3Nl
dCgkY29udGVudFJhbmdlKSkKKyAgICB7CisgICAgICAgICRyYW5nZSA9IGV4cGxvZGUoIi0iLCBz
dWJzdHIoJGNvbnRlbnRSYW5nZSwgNikpOyAKKyAgICAgICAgJHN0YXJ0ID0gaW50dmFsKCRyYW5n
ZVswXSk7IAorICAgICAgICBpZiAoIWVtcHR5KCRyYW5nZVsxXSkpCisgICAgICAgICAgICAkZW5k
ID0gaW50dmFsKCRyYW5nZVsxXSk7CisgICAgICAgICRodHRwU3RhdHVzID0gIkhUVFAvMS4xIDIw
NiBQYXJ0aWFsIENvbnRlbnQiOworICAgIH0gZWxzZQorICAgICAgICAkaHR0cFN0YXR1cyA9ICIy
MDAgT0siOworCisgICAgaGVhZGVyKCJTdGF0dXM6ICIgLiAkaHR0cFN0YXR1cyk7CisgICAgaGVh
ZGVyKCJMYXN0LU1vZGlmaWVkOiAiIC4gZ21kYXRlKCJELCBkIE0gWSBIOmk6cyIpIC4gIiBHTVQi
KTsKKyAgICBoZWFkZXIoIlByYWdtYTogbm8tY2FjaGUiKTsKKyAgICBoZWFkZXIoIkV0YWc6ICIg
LiAnIicgLiAkZmlsZVNpemUgLiAiLSIgLiBmaWxlbXRpbWUoJGZpbGVOYW1lKSAuICciJyk7Cisg
ICAgaGVhZGVyKCJDb250ZW50LVR5cGU6ICIgLiAkdHlwZSk7CisgICAgaGVhZGVyKCJBY2NlcHQt
UmFuZ2VzOiBieXRlcyIpOworICAgIGhlYWRlcigiQ29udGVudC1MZW5ndGg6ICIgLiAoJGVuZCAt
ICRzdGFydCkgKyAxKTsKKyAgICBpZiAoJGNvbnRlbnRSYW5nZSkKKwkJaGVhZGVyKCJDb250ZW50
LVJhbmdlOiBieXRlcyAiIC4gJHN0YXJ0IC4gIi0iIC4gJGVuZCAuICIvIiAuICRmaWxlU2l6ZSk7
IAorICAgIGhlYWRlcigiQ29ubmVjdGlvbjogY2xvc2UiKTsKKworICAgICRjaHVua1NpemUgPSAx
MDI0ICogMjU2OworICAgICRvZmZzZXQgPSAkc3RhcnQ7CisKKyAgICAkZm4gPSBmb3BlbigkZmls
ZU5hbWUsICJyYiIpOworICAgIGZzZWVrKCRmbiwgJG9mZnNldCwgMCk7CisKKyAgICB3aGlsZSAo
IWZlb2YoJGZuKSAmJiAkb2Zmc2V0IDw9ICRlbmQgJiYgY29ubmVjdGlvbl9zdGF0dXMoKSA9PSAw
KQorICAgIHsKKyAgICAgICAgJHJlYWRTaXplID0gbWluKCRjaHVua1NpemUsICgkZW5kIC0gJG9m
ZnNldCkgKyAxKTsKKyAgICAgICAgJGJ1ZmZlciA9IGZyZWFkKCRmbiwgJHJlYWRTaXplKTsKKyAg
ICAgICAgcHJpbnQoJGJ1ZmZlcik7CisgICAgICAgIGZsdXNoKCk7CisgICAgICAgICRvZmZzZXQg
Kz0gJGNodW5rU2l6ZTsKKyAgICB9CisgICAgZmNsb3NlKCRmbik7CisKKyAgICBleGl0OwogPz4K
</data>
<flag name="review"
          id="129574"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128016</attachid>
            <date>2012-02-21 12:07:46 -0800</date>
            <delta_ts>2012-02-21 12:18:55 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>patch_6.txt</filename>
            <type>text/plain</type>
            <size>12626</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODM1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAyLTIxICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFNldCBSZWZlcnJlciBo
ZWFkZXIgZm9yIG1lZGlhIGRvd25sb2FkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzg2MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXJlZmVyZXIuaHRt
bCB3YXMgbW9kaWZpZWQgdG8gdGVzdCB0aGlzIGNoYW5nZS4KKworICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllclJlZmVycmVyKTogTmV3LCByZXR1cm4gdGhlIGRvY3VtZW50J3MgcmVmZXJlci4K
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpyZWZlcnJlcik6IE5ldywgcmV0dXJuIHRoZSBjbGllbnQncyBtZWRpYVBsYXllclJlZmVycmVy
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJSZWZlcnJlcik6CisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JV
UkwpOiBUZWxsIEFWRm91bmRhdGlvbiB0byBhZGQKKyAgICAgICAgICAgIGEgcmVmZXJlciBoZWFk
ZXIuCisKIDIwMTItMDItMjEgIEFuZHJlYXMgS2xpbmcgIDxhd2Vzb21la2xpbmdAYXBwbGUuY29t
PgogCiAgICAgICAgIFNocmluayBhdHRyaWJ1dGUgc3R5bGUgcHJvcGVydHkgc2V0cyBhZnRlciBw
b3B1bGF0aW5nIHRoZW0uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDEwODM1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJT
aGFkb3dSb290TGlzdC5oIgpAQCAtNDAyMiw2ICs0MDIzLDE0IEBAIGJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6c2hvdWxkRGlzYWJsZVNsZWUKIH0KICNlbmRpZgogCitTdHJpbmcgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJSZWZlcnJlcigpIGNvbnN0Cit7CisgICAgRnJhbWUqIGZyYW1lID0g
ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisKKyAgICByZXR1cm4gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFk
ZXIoZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgbV9jdXJyZW50U3JjLCBmcmFtZS0+bG9h
ZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSk7CiB9CiAKK30KICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDEwODM1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODgs
NiArMzg4LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclNvdXJj
ZVVSTCgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclJl
ZmVycmVyKCkgY29uc3QgT1ZFUlJJREU7CisKICAgICB2b2lkIGxvYWRUaW1lckZpcmVkKFRpbWVy
PEhUTUxNZWRpYUVsZW1lbnQ+Kik7CiAgICAgdm9pZCBwcm9ncmVzc0V2ZW50VGltZXJGaXJlZChU
aW1lcjxIVE1MTWVkaWFFbGVtZW50PiopOwogICAgIHZvaWQgcGxheWJhY2tQcm9ncmVzc1RpbWVy
RmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHJldmlzaW9uIDEwODM1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTI4LDYgKzkyOCwxNCBAQCBBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRp
YVBsYXllcjo6YXVkaW9TCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YXVkaW9Tb3VyY2VQcm92aWRl
cigpOwogfQogI2VuZGlmIC8vIFdFQl9BVURJTworICAgIAorU3RyaW5nIE1lZGlhUGxheWVyOjpy
ZWZlcnJlcigpIGNvbnN0Cit7CisgICAgaWYgKCFtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gbV9tZWRpYVBsYXllckNsaWVudC0+bWVk
aWFQbGF5ZXJSZWZlcnJlcigpOworfQogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2aXNpb24gMTA4MzUwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMTY3LDYgKzE2Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5
ZXJTb3VyY2VPcGVuZWQoKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclNvdXJj
ZVVSTCgpIGNvbnN0IHsgcmV0dXJuICJ4LW1lZGlhLXNvdXJjZS11bnN1cHBvcnRlZDoiOyB9CiAj
ZW5kaWYKKworICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfQogfTsKIAogY2xhc3MgTWVkaWFQbGF5ZXIgewpAQCAtMjg2LDcg
KzI4OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgpOwog
ICAgIHZvaWQgY2hhcmFjdGVyaXN0aWNDaGFuZ2VkKCk7CiAKLQogICAgIHZvaWQgcmVwYWludCgp
OwogCiAgICAgTWVkaWFQbGF5ZXJDbGllbnQqIG1lZGlhUGxheWVyQ2xpZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9tZWRpYVBsYXllckNsaWVudDsgfQpAQCAtMzM0LDYgKzMzNSw4IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgc291cmNlVVJMKCkgY29uc3Q7CiAjZW5kaWYKIAorICAgIFN0cmluZyByZWZl
cnJlcigpIGNvbnN0OworCiBwcml2YXRlOgogICAgIE1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xp
ZW50Kik7CiAgICAgdm9pZCBsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShNZWRpYVBsYXllckZhY3Rv
cnkqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmgJKHJldmlzaW9uIDEwODM1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMjQyLDYgKzI0Miw4IEBAIHByb3RlY3RlZDoKIAogICAgIGNv
bnN0IFN0cmluZyYgYXNzZXRVUkwoKSBjb25zdCB7IHJldHVybiBtX2Fzc2V0VVJMOyB9CiAKKyAg
ICBNZWRpYVBsYXllciogcGxheWVyKCkgeyByZXR1cm4gbV9wbGF5ZXI7IH0KKwogcHJpdmF0ZToK
ICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQkocmV2aXNpb24gMTA4MzUwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjU2LDExICsyNTYsMjEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOgogCiAgICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CiAKLSAg
ICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2Jq
ZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDpBVkFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25Gb3JiaWRSZW1vdGVSZWZlcmVuY2VUb0xv
Y2FsIHwgQVZBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkTG9jYWxSZWZlcmVuY2VUb1Jl
bW90ZV0sIEFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbnNLZXksIAotICAgICAgICAgICAg
ICAgICAgICAgICAgbmlsXTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gb3B0
aW9ucyhBZG9wdE5TLCBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsgICAgCisK
KyAgICBbb3B0aW9ucy5nZXQoKSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6QVZB
c3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uRm9yYmlkUmVtb3RlUmVmZXJlbmNlVG9Mb2NhbCB8IEFW
QXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbkZvcmJpZExvY2FsUmVmZXJlbmNlVG9SZW1vdGVdIGZv
cktleTpBVlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5XTsKKworI2lmICFkZWZpbmVk
KEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTElPTikK
KyAgICBTdHJpbmcgcmVmZXJyZXIgPSBwbGF5ZXIoKS0+cmVmZXJyZXIoKTsKKyAgICBpZiAoIXJl
ZmVycmVyLmlzRW1wdHkoKSkgeworICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFy
eT4gaGVhZGVyRmllbGRzKEFkb3B0TlMsIFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF0pOworICAgICAgICBbaGVhZGVyRmllbGRzLmdldCgpIHNldE9iamVjdDpyZWZlcnJlciBmb3JL
ZXk6QCJSZWZlcmVyIl07CisgICAgICAgIFtvcHRpb25zLmdldCgpIHNldE9iamVjdDpoZWFkZXJG
aWVsZHMuZ2V0KCkgZm9yS2V5OkAiQVZVUkxBc3NldEhUVFBIZWFkZXJGaWVsZHNLZXkiXTsKKyAg
ICB9CisjZW5kaWYKKwogICAgIE5TVVJMICpjb2NvYVVSTCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5n
LCB1cmwpOwotICAgIG1fYXZBc3NldC5hZG9wdE5TKFtbQVZVUkxBc3NldCBhbGxvY10gaW5pdFdp
dGhVUkw6Y29jb2FVUkwgb3B0aW9uczpvcHRpb25zXSk7CisgICAgbV9hdkFzc2V0LmFkb3B0TlMo
W1tBVlVSTEFzc2V0IGFsbG9jXSBpbml0V2l0aFVSTDpjb2NvYVVSTCBvcHRpb25zOm9wdGlvbnMu
Z2V0KCldKTsKIAogICAgIG1faGF2ZUNoZWNrZWRQbGF5YWJpbGl0eSA9IGZhbHNlOwogCkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMDgzNTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMi0yMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXQgUmVmZXJyZXIgaGVhZGVyIGZvciBtZWRp
YSBkb3dubG9hZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc4NjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL21lZGlhL3Jlc291cmNlcy92aWRlby1yZWZlcmVyLWNoZWNrLXJlZmVy
ZXIucGhwOiBHZXQgdGhlIHRlc3QgZmlsZSBhbmQgY29udGVudC10eXBlCisgICAgICAgICAgICBm
cm9tIHBhcmFtZXRlcnMgb24gdGhlIHVybC4gRmFpbCBpZiByZWZlcnJlciBpcyBhbnl0aGluZyBi
dXQgdmlkZW8tcmVmZXJlci5odG1sLiBBZGQgc3VwcG9ydCBmb3IKKyAgICAgICAgICAgIGJ5dGUt
cmFuZ2UgcmVxdWVzdHMgc28gaXQgd2lsbCB3b3JrIHdpdGggQVZGb3VuZGF0aW9uLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcmVmZXJlci5odG1sOiBQYXNzIHZpZGVvIGZpbGUg
bmFtZSBhbmQgY29udGVudC10eXBlIGFzIHVybCBwYXJhbWV0ZXJzCisgICAgICAgICAgICBpbnN0
ZWFkIG9mIGhhdmluZyBhbm90aGVyIGNnaSBzZXQgYSBjb29raWUuIFNldCB0aGUgcGhwIHNjcmlw
dCBhcyB0aGUgJ3NyYycgb24gYSA8c291cmNlPiBlbGVtZW50IAorICAgICAgICAgICAgaW5zdGVh
ZCBvZiBvbiB0aGUgPHZpZGVvPiBlbGVtZW50IHNvIHdlIGNhbiBhbHNvIGFkZCBhICd0eXBlJyBh
dHRyaWJ1dGUuIAorCiAyMDEyLTAyLTIxICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZywgc2tpcCBuZXcgZmFp
bGluZyBhbmQgY3Jhc2hpbmcgdGVzdCB0byBwYWludCB0aGUgYm90IGdyZWVuLgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1yZWZlcmVyLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1yZWZlcmVyLmh0bWwJKHJldmlz
aW9uIDEwODM1MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcmVmZXJl
ci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDI1ICsyLDI1IEBACiA8aGVhZD4KIDwvaGVhZD4K
IDxib2R5IG9ubG9hZD0ibG9hZENvb2tpZUFuZFJlZmVyZXIoKSI+Ci08dmlkZW8gaWQ9InZpZGVv
Ij48L3ZpZGVvPgorPHZpZGVvIGlkPSJ2aWRlbyI+CisgICAgPHNvdXJjZSBpZD0ic291cmNlIj4K
KzwvdmlkZW8+CiA8c2NyaXB0IHNyYz0uLi8uLi9tZWRpYS1yZXNvdXJjZXMvdmlkZW8tdGVzdC5q
cz48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPS4uLy4uL21lZGlhLXJlc291cmNlcy9tZWRpYS1maWxl
LmpzPjwvc2NyaXB0PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEFsd2F5c0FjY2VwdENvb2tp
ZXModHJ1ZSk7Ci0gICAgfQotCiAgICAgZnVuY3Rpb24gbG9hZENvb2tpZUFuZFJlZmVyZXIgKCkg
ewotICAgICAgICB2YXIgbW92aWUgPSBmaW5kTWVkaWFGaWxlKCd2aWRlbycsICdyZXNvdXJjZXMv
dGVzdCcpOworICAgICAgICB2YXIgbW92aWUgPSBmaW5kTWVkaWFGaWxlKCd2aWRlbycsICd0ZXN0
Jyk7CisgICAgICAgIHZhciB0eXBlID0gbWltZVR5cGVGb3JFeHRlbnNpb24obW92aWUuc3BsaXQo
Jy4nKS5wb3AoKSk7CiAgICAgICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2lmcmFtZScpOwogICAgICAgICBmcmFtZS53aWR0aCA9IDA7CiAgICAgICAgIGZyYW1lLmhlaWdo
dCA9IDA7Ci0gICAgICAgIGZyYW1lLnNyYyA9ICdodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWVkaWEv
cmVzb3VyY2VzL3NldENvb2tpZUFuZFJlZmVyZXIuY2dpP25hbWU9JyArIG1vdmllICsgJyZyZWZl
cmVyPWh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9tZWRpYS9yZXNvdXJjZXMnOwotCisgICAgICAgIGZy
YW1lLnNyYyA9ICJkYXRhOnRleHQvaHRtbCw8Yj50ZXN0PC9iPiI7CiAgICAgICAgIGZyYW1lLmFk
ZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgdmlk
ZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmlkZW8nKTsKLSAgICAgICAgICAgICAgICB2
aWRlby5zcmM9J2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9tZWRpYS9yZXNvdXJjZXMvdmlkZW8tcmVm
ZXJlci1jaGVjay1yZWZlcmVyLnBocCc7Ci0gICAgICAgICAgICAgICAgdmlkZW8ucGxheSgpOwor
ICAgICAgICAgICAgICAgIHNvdXJjZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzb3VyY2Un
KTsKKyAgICAgICAgICAgICAgICBzb3VyY2Uuc3JjID0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9t
ZWRpYS9yZXNvdXJjZXMvdmlkZW8tcmVmZXJlci1jaGVjay1yZWZlcmVyLnBocD9uYW1lPScgKyBt
b3ZpZSArICcmdHlwZT0nICsgdHlwZTsKKyAgICAgICAgICAgICAgICBzb3VyY2UudHlwZSA9IHR5
cGU7CisgICAgICAgICAgICAgICAgdmlkZW8ubG9hZCgpOwogICAgICAgICB9KTsKIAogICAgICAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWVkaWEvcmVzb3VyY2VzL3NldENvb2tpZUFuZFJlZmVyZXIuY2dpCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvcmVzb3VyY2VzL3NldENvb2tpZUFu
ZFJlZmVyZXIuY2dpCShyZXZpc2lvbiAxMDgzNTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21lZGlhL3Jlc291cmNlcy9zZXRDb29raWVBbmRSZWZlcmVyLmNnaQkod29ya2luZyBjb3B5KQpA
QCAtMSwxNSArMCwwIEBACi0jIS91c3IvYmluL3BlcmwgLXdUCi11c2UgQ0dJOwotCi0kcXVlcnkg
PSBuZXcgQ0dJOwotJG5hbWUgPSAkcXVlcnktPnBhcmFtKCduYW1lJyk7Ci0kcmVmZXJlciA9ICRx
dWVyeS0+cGFyYW0oJ3JlZmVyZXInKTsKLQotcHJpbnQgIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFp
blxuIjsKLXByaW50ICJDYWNoZS1Db250cm9sOiBuby1zdG9yZVxuIjsKLXByaW50ICdDYWNoZS1D
b250cm9sOiBuby1jYWNoZT0ic2V0LWNvb2tpZSInIC4gIlxuIjsKLQotcHJpbnQgIlJlZmVyZXI6
ICR7cmVmZXJlcn1cbiI7Ci0KLSMgV2Ugb25seSBtYXAgdGhlIFNFVF9DT09LSUUgcmVxdWVzdCBo
ZWFkZXIgdG8gIlNldC1Db29raWUiCi1wcmludCAiU2V0LUNvb2tpZTogVEVTVD0ke25hbWV9XG5c
biI7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3Jlc291cmNlcy92aWRlby1y
ZWZlcmVyLWNoZWNrLXJlZmVyZXIucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWVkaWEvcmVzb3VyY2VzL3ZpZGVvLXJlZmVyZXItY2hlY2stcmVmZXJlci5waHAJKHJl
dmlzaW9uIDEwODM1MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvcmVzb3VyY2Vz
L3ZpZGVvLXJlZmVyZXItY2hlY2stcmVmZXJlci5waHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjQg
KzEsNTIgQEAKIDw/cGhwCi0gICAgaWYoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKQotICAgIHsK
LSAgICAgICAgJGV4dGVuc2lvbiA9IHN1YnN0cigkX0NPT0tJRVsiVEVTVCJdLCAtMyk7CiAKLSAg
ICAgICAgaWYgKCRleHRlbnNpb24gPT0gJ21wNCcpIHsKLSAgICAgICAgICAgICAgIGhlYWRlcigi
Q29udGVudC1UeXBlOiB2aWRlby9tcDQiKTsKLSAgICAgICAgICAgICAgICRmaWxlTmFtZSA9ICJ0
ZXN0Lm1wNCI7Ci0gICAgICAgIH0gZWxzZSBpZiAoJGV4dGVuc2lvbiA9PSAnb2d2JykgewotICAg
ICAgICAgICAgICAgaGVhZGVyKCJDb250ZW50LVR5cGU6IHZpZGVvL29nZyIpOwotICAgICAgICAg
ICAgICAgJGZpbGVOYW1lID0gInRlc3Qub2d2IjsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICBkaWU7Ci0KLSAgICAgICAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1zdG9yZSIpOwot
ICAgICAgICBoZWFkZXIoIkNvbm5lY3Rpb246IGNsb3NlIik7Ci0KLSAgICAgICAgJGZuID0gZm9w
ZW4oJGZpbGVOYW1lLCAiciIpOwotICAgICAgICBmcGFzc3RocnUoJGZuKTsKLSAgICAgICAgZmNs
b3NlKCRmbik7Ci0gICAgICAgIGV4aXQ7Ci0gICAgfSBlbHNlCisgICAgJHJlZmVyID0gJF9TRVJW
RVJbIkhUVFBfUkVGRVJFUiJdOworICAgIGlmICghaXNzZXQoJHJlZmVyKSB8fCBzdHJpcG9zKCRy
ZWZlciwgInZpZGVvLXJlZmVyZXIuaHRtbCIpID09PSBmYWxzZSkKICAgICAgICAgZGllOworCisg
ICAgJGZpbGVOYW1lID0gJF9HRVRbIm5hbWUiXTsKKyAgICAkdHlwZSA9ICRfR0VUWyJ0eXBlIl07
CisKKyAgICAkZmlsZVNpemUgPSBmaWxlc2l6ZSgkZmlsZU5hbWUpOworICAgICRzdGFydCA9IDA7
CisgICAgJGVuZCA9ICRmaWxlU2l6ZSAtIDE7CisgICAgJGNvbnRlbnRSYW5nZSA9ICRfU0VSVkVS
WyJIVFRQX1JBTkdFIl07CisgICAgaWYgKGlzc2V0KCRjb250ZW50UmFuZ2UpKQorICAgIHsKKyAg
ICAgICAgJHJhbmdlID0gZXhwbG9kZSgiLSIsIHN1YnN0cigkY29udGVudFJhbmdlLCA2KSk7IAor
ICAgICAgICAkc3RhcnQgPSBpbnR2YWwoJHJhbmdlWzBdKTsgCisgICAgICAgIGlmICghZW1wdHko
JHJhbmdlWzFdKSkKKyAgICAgICAgICAgICRlbmQgPSBpbnR2YWwoJHJhbmdlWzFdKTsKKyAgICAg
ICAgJGh0dHBTdGF0dXMgPSAiSFRUUC8xLjEgMjA2IFBhcnRpYWwgQ29udGVudCI7CisgICAgfSBl
bHNlCisgICAgICAgICRodHRwU3RhdHVzID0gIjIwMCBPSyI7CisKKyAgICBoZWFkZXIoIlN0YXR1
czogIiAuICRodHRwU3RhdHVzKTsKKyAgICBoZWFkZXIoIkxhc3QtTW9kaWZpZWQ6ICIgLiBnbWRh
dGUoIkQsIGQgTSBZIEg6aTpzIikgLiAiIEdNVCIpOworICAgIGhlYWRlcigiUHJhZ21hOiBuby1j
YWNoZSIpOworICAgIGhlYWRlcigiRXRhZzogIiAuICciJyAuICRmaWxlU2l6ZSAuICItIiAuIGZp
bGVtdGltZSgkZmlsZU5hbWUpIC4gJyInKTsKKyAgICBoZWFkZXIoIkNvbnRlbnQtVHlwZTogIiAu
ICR0eXBlKTsKKyAgICBoZWFkZXIoIkFjY2VwdC1SYW5nZXM6IGJ5dGVzIik7CisgICAgaGVhZGVy
KCJDb250ZW50LUxlbmd0aDogIiAuICgkZW5kIC0gJHN0YXJ0KSArIDEpOworICAgIGlmICgkY29u
dGVudFJhbmdlKQorCQloZWFkZXIoIkNvbnRlbnQtUmFuZ2U6IGJ5dGVzICIgLiAkc3RhcnQgLiAi
LSIgLiAkZW5kIC4gIi8iIC4gJGZpbGVTaXplKTsgCisgICAgaGVhZGVyKCJDb25uZWN0aW9uOiBj
bG9zZSIpOworCisgICAgJGNodW5rU2l6ZSA9IDEwMjQgKiAyNTY7CisgICAgJG9mZnNldCA9ICRz
dGFydDsKKworICAgICRmbiA9IGZvcGVuKCRmaWxlTmFtZSwgInJiIik7CisgICAgZnNlZWsoJGZu
LCAkb2Zmc2V0LCAwKTsKKworICAgIHdoaWxlICghZmVvZigkZm4pICYmICRvZmZzZXQgPD0gJGVu
ZCAmJiBjb25uZWN0aW9uX3N0YXR1cygpID09IDApCisgICAgeworICAgICAgICAkcmVhZFNpemUg
PSBtaW4oJGNodW5rU2l6ZSwgKCRlbmQgLSAkb2Zmc2V0KSArIDEpOworICAgICAgICAkYnVmZmVy
ID0gZnJlYWQoJGZuLCAkcmVhZFNpemUpOworICAgICAgICBwcmludCgkYnVmZmVyKTsKKyAgICAg
ICAgZmx1c2goKTsKKyAgICAgICAgJG9mZnNldCArPSAkY2h1bmtTaXplOworICAgIH0KKyAgICBm
Y2xvc2UoJGZuKTsKKworICAgIGV4aXQ7CiA/Pgo=
</data>
<flag name="review"
          id="130295"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>