<?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>115917</bug_id>
          
          <creation_ts>2013-05-10 10:35:13 -0700</creation_ts>
          <short_desc>svg/as-image/img-zoom-svg-stylesheet.html crashes with NetworkProcess enabled</short_desc>
          <delta_ts>2013-05-16 14:52:43 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>japhet</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>887413</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-05-10 10:35:13 -0700</bug_when>
    <thetext>svg/as-image/img-zoom-svg-stylesheet.html crashes with NetworkProcess enabled

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebKit2             	0x0000000110073b60 WebKit::WebFrame::page() const + 16 (WebFrame.cpp:176)
1   com.apple.WebKit2             	0x00000001102033c0 WebKit::WebResourceLoadScheduler::scheduleLoad(WebCore::ResourceLoader*, WebCore::CachedResource*, WebCore::ResourceLoadPriority, bool) + 848 (WebResourceLoadScheduler.cpp:109)
2   com.apple.WebKit2             	0x000000011020303a WebKit::WebResourceLoadScheduler::scheduleSubresourceLoad(WebCore::Frame*, WebCore::CachedResource*, WebCore::ResourceRequest const&amp;, WebCore::ResourceLoadPriority, WebCore::ResourceLoaderOptions const&amp;) + 218 (WebResourceLoadScheduler.cpp:73)
3   com.apple.WebCore             	0x00000001127b6d3b WebCore::CachedResource::load(WebCore::CachedResourceLoader*, WebCore::ResourceLoaderOptions const&amp;) + 1579 (CachedResource.cpp:346)
4   com.apple.WebCore             	0x00000001127c3d37 WebCore::CachedResourceLoader::requestResource(WebCore::CachedResource::Type, WebCore::CachedResourceRequest&amp;) + 1911 (CachedResourceLoader.cpp:498)
5   com.apple.WebCore             	0x00000001127c4100 WebCore::CachedResourceLoader::requestCSSStyleSheet(WebCore::CachedResourceRequest&amp;) + 64 (CachedResourceLoader.cpp:195)
6   com.apple.WebCore             	0x00000001139be771 WebCore::ProcessingInstruction::checkStyleSheet() + 2193 (ProcessingInstruction.cpp:179)
7   com.apple.WebCore             	0x00000001139bf39b WebCore::ProcessingInstruction::insertedInto(WebCore::ContainerNode*) + 139 (ProcessingInstruction.cpp:301)
8   com.apple.WebCore             	0x0000000112871bf7 WebCore::ChildNodeInsertionNotifier::notifyNodeInsertedIntoDocument(WebCore::Node*) + 167 (ContainerNodeAlgorithms.h:198)
9   com.apple.WebCore             	0x000000011286e69f WebCore::ChildNodeInsertionNotifier::notify(WebCore::Node*) + 207 (ContainerNodeAlgorithms.h:226)
10  com.apple.WebCore             	0x00000001128695d5 WebCore::ContainerNode::parserAppendChild(WTF::PassRefPtr&lt;WebCore::Node&gt;) + 773 (ContainerNode.cpp:713)
11  com.apple.WebCore             	0x00000001141e49e6 WebCore::XMLDocumentParser::processingInstruction(unsigned char const*, unsigned char const*) + 342 (XMLDocumentParserLibxml2.cpp:990)
12  com.apple.WebCore             	0x00000001141e5578 WebCore::processingInstructionHandler(void*, unsigned char const*, unsigned char const*) + 72 (XMLDocumentParserLibxml2.cpp:1134)
...

We&apos;re casting an EmptyFrameLoaderClient to a WebFrameLoaderClient.  Yikes.

In radar as &lt;rdar://problem/13837408&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887428</commentid>
    <comment_count>1</comment_count>
      <attachid>201362</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-05-10 10:59:54 -0700</bug_when>
    <thetext>Created attachment 201362
Patch v1

This patch is straight forward and makes things much safer in WK2.

I don&apos;t feel great about it - It is arguably a layering violation in FrameLoaderClient.  But definitely less of one than &quot;hasWebView&quot; is, for example.

That said, I can&apos;t think of a fix for this problem that:
A - Isn&apos;t much more hackey (exposing an &quot;isEmptyFrameLoaderClient() method, for example)
B - Doesn&apos;t require much more refactoring of Frame/FrameLoader/Page (pushing ID&apos;s down in to WebCore)
C - Doesn&apos;t require much more refactoring of SVG-as-images (making them use the normal WebFrame mechanism instead of directly creating their own WebCore::Frame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887473</commentid>
    <comment_count>2</comment_count>
      <attachid>201362</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-05-10 11:58:21 -0700</bug_when>
    <thetext>Comment on attachment 201362
Patch v1

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

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp:-108
&gt; -    WebFrame* webFrame = static_cast&lt;WebFrameLoaderClient*&gt;(resourceLoader-&gt;frameLoader()-&gt;client())-&gt;webFrame();

We have a lot of such static_casts in WebKit2.

Can we perhaps have a HashMap&lt;FrameLoaderClient*, WebFrameLoaderClient*&gt;, and replace all such casts with a map lookup at once?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887483</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-05-10 12:08:10 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 201362 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=201362&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp:-108
&gt; &gt; -    WebFrame* webFrame = static_cast&lt;WebFrameLoaderClient*&gt;(resourceLoader-&gt;frameLoader()-&gt;client())-&gt;webFrame();
&gt; 
&gt; We have a lot of such static_casts in WebKit2.
&gt; 
&gt; Can we perhaps have a HashMap&lt;FrameLoaderClient*, WebFrameLoaderClient*&gt;, and replace all such casts with a map lookup at once?

Yikes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887487</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-05-10 12:09:31 -0700</bug_when>
    <thetext>&gt; A - Isn&apos;t much more hackey (exposing an &quot;isEmptyFrameLoaderClient() method, for example)

It would not necessarily be horrible if WebCore exposed some way for WebKit to know that a frame it&apos;s talking about is one created by WebKit. For example, what if we had FrameLoader::clientFrame(), which would be safe for WebCore client to cast.

Something like:

- WebFrame* webFrame = static_cast&lt;WebFrameLoaderClient*&gt;(resourceLoader-&gt;frameLoader()-&gt;client())-&gt;webFrame();
+ WebFrame* webFrame = static_cast&lt;WebFrame*&gt;(resourceLoader-&gt;frameLoader()-&gt;clientFrame());

Not quite sure about the name though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887737</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-05-10 20:40:36 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; A - Isn&apos;t much more hackey (exposing an &quot;isEmptyFrameLoaderClient() method, for example)
&gt; 
&gt; It would not necessarily be horrible if WebCore exposed some way for WebKit to know that a frame it&apos;s talking about is one created by WebKit. For example, what if we had FrameLoader::clientFrame(), which would be safe for WebCore client to cast.
&gt; 
&gt; Something like:
&gt; 
&gt; - WebFrame* webFrame = static_cast&lt;WebFrameLoaderClient*&gt;(resourceLoader-&gt;frameLoader()-&gt;client())-&gt;webFrame();
&gt; + WebFrame* webFrame = static_cast&lt;WebFrame*&gt;(resourceLoader-&gt;frameLoader()-&gt;clientFrame());
&gt; 
&gt; Not quite sure about the name though.

I like this idea.

I&apos;m okay with clientFrame.  If you&apos;re not convinced, I could suggest:
::clientProvidedFrame
::clientOwnedFrame
::clientManagedFrame
::clientData
::clientFrameData
::embedderFrame
::platformFrame
...
or variants thereof.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889568</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-05-15 16:38:34 -0700</bug_when>
    <thetext>Doing this differently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889581</commentid>
    <comment_count>7</comment_count>
      <attachid>201897</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-05-15 17:12:47 -0700</bug_when>
    <thetext>Created attachment 201897
Patch v2 - Better</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889603</commentid>
    <comment_count>8</comment_count>
      <attachid>201897</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-05-15 18:05:37 -0700</bug_when>
    <thetext>Comment on attachment 201897
Patch v2 - Better

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

&gt; Source/WebCore/loader/FrameLoaderClient.h:352
&gt; +        virtual bool isEmptyFrameLoaderClient() { return false; }

Please add a FIXME here with a bug to remove it and EmprtFrameLoaderClient, which is an abomination.

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp:120
&gt; +    loadParameters.webPageID = webPage ? webPage-&gt;pageID() : 0;

This seems dangerous.  Please add assertions that these are not misused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889870</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-05-16 09:44:44 -0700</bug_when>
    <thetext>Filed https://bugs.webkit.org/show_bug.cgi?id=116233 to get rid of EmptyFrameLoaderClient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889871</commentid>
    <comment_count>10</comment_count>
      <attachid>201966</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-05-16 09:53:08 -0700</bug_when>
    <thetext>Created attachment 201966
Patch v3 - v2 plus review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889977</commentid>
    <comment_count>11</comment_count>
      <attachid>201966</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-05-16 13:13:48 -0700</bug_when>
    <thetext>Comment on attachment 201966
Patch v3 - v2 plus review feedback

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        No new tests (Covered by existing test).

I&apos;d just omit this line, it should be obvious from bug title.

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp:114
&gt; +    if (!resourceLoader-&gt;frameLoader()-&gt;client()-&gt;isEmptyFrameLoaderClient()) {
&gt; +        webFrame = static_cast&lt;WebFrameLoaderClient*&gt;(resourceLoader-&gt;frameLoader()-&gt;client())-&gt;webFrame();

I would have added a &quot;toWebFrameLoaderClient&quot; function, and replaced all static casts with it.

In WebKit1, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889979</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-05-16 13:19:21 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 201966 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=201966&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        No new tests (Covered by existing test).
&gt; 
&gt; I&apos;d just omit this line, it should be obvious from bug title.

Makes sense.

&gt; &gt; Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp:114
&gt; &gt; +    if (!resourceLoader-&gt;frameLoader()-&gt;client()-&gt;isEmptyFrameLoaderClient()) {
&gt; &gt; +        webFrame = static_cast&lt;WebFrameLoaderClient*&gt;(resourceLoader-&gt;frameLoader()-&gt;client())-&gt;webFrame();
&gt; 
&gt; I would have added a &quot;toWebFrameLoaderClient&quot; function, and replaced all static casts with it.
&gt; 
&gt; In WebKit1, too.

I think a patch 30x larger is not necessary to fix the only specific known symptom (this crash) in one specific code site (here in WebResourceLoadScheduler)

That said, I agree that all such casts need to be given a once-over.  Unfortunately since that function could return null the task would be much larger than a simple global replace.  Decision making would have to take place at each call site.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889992</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-05-16 14:01:49 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/150206</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890011</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-05-16 14:52:43 -0700</bug_when>
    <thetext>&gt; Unfortunately since that function could return null the task would be much larger than a simple global replace.

Replacing a security sensitive crash with a null pointer crash could be done automatically.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201362</attachid>
            <date>2013-05-10 10:59:54 -0700</date>
            <delta_ts>2013-05-15 17:12:47 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>6793</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1OWE3NjY5Li5mY2VjMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTMtMDUtMTAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIHN2Zy9hcy1pbWFnZS9pbWctem9vbS1zdmctc3R5bGVzaGVldC5odG1sIGNyYXNoZXMgd2l0
aCBOZXR3b3JrUHJvY2VzcyBlbmFibGVkLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTM4Mzc0
MDg+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1OTE3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIChDb3ZlcmVkIGJ5IHN2Zy9hcy1pbWFnZS9pbWctem9vbS1zdmctc3R5bGVzaGVldC5odG1s
IGFscmVhZHkpCisKKyAgICAgICAgQWxsb3cgZW1iZWRkZXJzIHRvIGltcGxlbWVudCBwYWdlIElE
IGFuZCBmcmFtZSBJRCB3aXRob3V0IGFzc3VtaW5nIHRoZSBzcGVjaWZpYyBjbGFzcyBvZiBGcmFt
ZUxvYWRlckNsaWVudC4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJRCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVJRCk6CisKIDIwMTMtMDUtMDkgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmRlclF1b3RlIGhhcyBnaWFu
dCBmdW5jdGlvbiBmb3IgbGFuZ3VhZ2UgdG8gcXVvdGVzIG1hcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAwYjA0OTM2Li44Zjc0YTNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzQ4LDYgKzM0OCwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxJbnNl
cnRCb2R5KCkgeyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlUmVz
b3VyY2VQcmlvcml0eSh1bnNpZ25lZCBsb25nIC8qaWRlbnRpZmllciovLCBSZXNvdXJjZUxvYWRQ
cmlvcml0eSkgeyB9CisgICAgICAgIAorICAgICAgICAvLyBXZWJDb3JlIGRvZXNuJ3QgaGF2ZSB1
bmlxdWUgSURzIGZvciBwYWdlcyBvciBmcmFtZXMgYnV0IGVtYmVkZGVycyBvZnRlbiBkby4KKyAg
ICAgICAgdmlydHVhbCB1aW50NjRfdCBwYWdlSUQoKSB7IHJldHVybiAwOyB9CisgICAgICAgIHZp
cnR1YWwgdWludDY0X3QgZnJhbWVJRCgpIHsgcmV0dXJuIDA7IH0KICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTU0ZTk0OC4uZGRhZTliMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTA1LTEwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBzdmcvYXMtaW1hZ2UvaW1nLXpvb20tc3ZnLXN0eWxlc2hlZXQu
aHRtbCBjcmFzaGVzIHdpdGggTmV0d29ya1Byb2Nlc3MgZW5hYmxlZC4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzEzODM3NDA4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExNTkxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpOiBEbyBzb21ldGhpbmcgc2Vuc2libGUgaW4gdGhlIGNhc2UKKyAgICAgICAg
ICB3aGVyZSB3ZSBoYXZlIG5vIGZyYW1lIElEIG9yIHBhZ2UgSUQuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQpOiBVc2UgRnJhbWVM
b2FkZXJDbGllbnQgbWV0aG9kcyBpbnN0ZWFkIG9mIGJsaW5kbHkgY2FzdGluZy4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lSUQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMy0wNS0w
OSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBl
eHBsaWNpdCBxdWFsaWZpZXJzIGZvciBuYW1lcyBpbiB0aGUgc3RkOjogbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAppbmRleCBjZTFlMGRmLi40MTAyMjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI4OCw3
ICsyODgsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSogaGEKICAgICAvLyBGSVhNRSAoaHR0cDov
L3dlYmtpdC5vcmcvYi8xMTUyOTEpOiBTaW5jZSB3ZSBnbyBzdHJhaWdodCB0byB0aGUgVUkgcHJv
Y2VzcyBmb3IgYXV0aGVudGljYXRpb24gd2UgZG9uJ3QgZ2V0IFdlYkNvcmUncwogICAgIC8vIGNy
b3NzLW9yaWdpbiBjaGVjayBiZWZvcmUgYXNraW5nIHRoZSBjbGllbnQgZm9yIGNyZWRlbnRpYWxz
LgogICAgIC8vIFRoZXJlZm9yZSB3ZSBhcmUgdG9vIHBlcm1pc3NpdmUgaW4gdGhlIGNhc2Ugd2hl
cmUgdGhlIENsaWVudENyZWRlbnRpYWxQb2xpY3kgaXMgRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09y
aWdpbkNyZWRlbnRpYWxzLgotICAgIGlmIChjbGllbnRDcmVkZW50aWFsUG9saWN5KCkgPT0gRG9O
b3RBc2tDbGllbnRGb3JBbnlDcmVkZW50aWFscykgeworICAgIC8vIEZJWE1FOiBXZSBhcmUgdW5h
YmxlIHRvIHByb3Blcmx5IGhhbmRsZSBhdXRoZW50aWNhdGlvbiBmb3IgcmVzb3VyY2VzIHdpdGhv
dXQgYSBwYWdlIG9yIGZyYW1lIElELgorICAgIC8vIFRoaXMgaGFwcGVucyBmb3IgYW55IHJlc291
cmNlIHdob3NlIGxvYWQgb3JpZ2luYXRlcyB3aXRoIGEgRnJhbWVMb2FkZXJDbGllbnQgb3RoZXIg
dGhhbiBXZWJGcmFtZUxvYWRlckNsaWVudC4KKyAgICAvLyBDdXJyZW50bHkgdGhpcyBpbmNsdWRl
cyBXZWJJbnNwZWN0b3IgbG9hZHMgYW5kIFNWR0ltYWdlIGxvYWRzIGFzIHRob3NlIGJvdGggdXNl
IFdlYkNvcmUncyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LgorICAgIGlmIChjbGllbnRDcmVkZW50
aWFsUG9saWN5KCkgPT0gRG9Ob3RBc2tDbGllbnRGb3JBbnlDcmVkZW50aWFscyB8fCAoIXdlYlBh
Z2VJRCgpIHx8ICF3ZWJGcmFtZUlEKCkpKSB7CiAgICAgICAgIGNoYWxsZW5nZS5hdXRoZW50aWNh
dGlvbkNsaWVudCgpLT5yZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwo
Y2hhbGxlbmdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAKaW5kZXggYTUzZjFkYi4uYmIzMjU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5j
cHAKQEAgLTEwNSwxMyArMTA1LDEyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpz
Y2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyLCBDYWNoCiAgICAgU3Rv
cmVkQ3JlZGVudGlhbHMgYWxsb3dTdG9yZWRDcmVkZW50aWFscyA9IHJlc291cmNlTG9hZGVyLT5z
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpID8gQWxsb3dTdG9yZWRDcmVkZW50aWFscyA6IERv
Tm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQgPSByZXNvdXJjZUxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS0+c2V0dGluZ3MoKS0+
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogCi0gICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gc3Rh
dGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQqPihyZXNvdXJjZUxvYWRlci0+ZnJhbWVMb2Fk
ZXIoKS0+Y2xpZW50KCkpLT53ZWJGcmFtZSgpOwotICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSB3ZWJG
cmFtZS0+cGFnZSgpOworICAgIEZyYW1lTG9hZGVyQ2xpZW50KiBjbGllbnQgPSByZXNvdXJjZUxv
YWRlci0+ZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCk7CiAKICAgICBOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKICAgICBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVy
ID0gaWRlbnRpZmllcjsKLSAgICBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdlLT5w
YWdlSUQoKTsKLSAgICBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlEID0gd2ViRnJhbWUtPmZyYW1l
SUQoKTsKKyAgICBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQgPSBjbGllbnQtPnBhZ2VJRCgpOwor
ICAgIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQgPSBjbGllbnQtPmZyYW1lSUQoKTsKICAgICBs
b2FkUGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVzb3VyY2VMb2FkZXItPnJlcXVlc3QoKTsKICAgICBs
b2FkUGFyYW1ldGVycy5wcmlvcml0eSA9IHByaW9yaXR5OwogICAgIGxvYWRQYXJhbWV0ZXJzLmNv
bnRlbnRTbmlmZmluZ1BvbGljeSA9IGNvbnRlbnRTbmlmZmluZ1BvbGljeTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNjNmZjkwYS4uZTlkYTRlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE1OTcsNCArMTU5NywxNCBAQCBQYXNzUmVmUHRy
PEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVOZXR3
b3JraW5nQ29udGV4dAogICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKTsKIH0KIAordWludDY0
X3QgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJRCgpCit7CisgICAgcmV0dXJuIG1fZnJhbWUt
PnBhZ2UoKS0+cGFnZUlEKCk7Cit9CisKK3VpbnQ2NF90IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpm
cmFtZUlEKCkKK3sKKyAgICByZXR1cm4gbV9mcmFtZS0+ZnJhbWVJRCgpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBjMDY3ODI1
Li4xMDNkZGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yMjMsNiArMjIz
LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nl
c3NGcm9tTG9jYWxVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwogCiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5l
dHdvcmtpbmdDb250ZXh0KCkgT1ZFUlJJREU7CisgICAgCisgICAgdmlydHVhbCB1aW50NjRfdCBw
YWdlSUQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHVpbnQ2NF90IGZyYW1lSUQoKSBPVkVSUklE
RTsKIAogICAgIFdlYkZyYW1lKiBtX2ZyYW1lOwogICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBtX3Bs
dWdpblZpZXc7Cg==
</data>
<flag name="review"
          id="222702"
          type_id="1"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201897</attachid>
            <date>2013-05-15 17:12:47 -0700</date>
            <delta_ts>2013-05-16 09:53:08 -0700</delta_ts>
            <desc>Patch v2 - Better</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>5381</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3YTFiNThiLi5jODM0MWE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDEzLTA1LTE1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBzdmcvYXMtaW1hZ2UvaW1nLXpvb20tc3ZnLXN0eWxlc2hlZXQuaHRtbCBjcmFzaGVzIHdp
dGggTmV0d29ya1Byb2Nlc3MgZW5hYmxlZC4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEzODM3
NDA4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTkxNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdpdmUgV2Vi
S2l0MiB0aGUgYWJpbGl0eSB0byBub3QgbWlzLWNhc3QuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3QpLgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6aXNFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50KTogRGVmYXVsdHMgdG8gZmFsc2UuCisKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmg6IE1ha2UgaXNFbXB0eUZyYW1lTG9hZGVyQ2xpZW50KCkgcmV0dXJu
IHRydWUuCisKIDIwMTMtMDUtMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtNYWNdIENoYW5nZSBDbGlwYm9hcmQ6OmNyZWF0ZSBmdW5jdGlvbnMgc28gdGhleSBk
b24ndCB1c2UgQ2xpcGJvYXJkTWFjOjpjcmVhdGUgYW55IG1vcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAppbmRleCBkOGZiYjZiLi42MTFmNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCkBAIC0zNzMsNiArMzczLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29y
a2luZ0NvbnRleHQoKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiB9OwogCiBjbGFzcyBFbXB0
eVRleHRDaGVja2VyQ2xpZW50IDogcHVibGljIFRleHRDaGVja2VyQ2xpZW50IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMGIwNDkzNi4uMDM5N2ExNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTM0OCw2ICsz
NDgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aFdpbGxJbnNlcnRCb2R5KCkgeyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q2hhbmdlUmVzb3VyY2VQcmlvcml0eSh1bnNpZ25lZCBsb25nIC8qaWRlbnRpZmllciovLCBSZXNv
dXJjZUxvYWRQcmlvcml0eSkgeyB9CisKKyAgICAgICAgdmlydHVhbCBib29sIGlzRW1wdHlGcmFt
ZUxvYWRlckNsaWVudCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDI3Nzg4ODIuLjhmNDRmMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxMy0wNS0xNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgc3ZnL2FzLWltYWdlL2ltZy16b29tLXN2Zy1zdHlsZXNoZWV0Lmh0bWwg
Y3Jhc2hlcyB3aXRoIE5ldHdvcmtQcm9jZXNzIGVuYWJsZWQuCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xMzgzNzQwOD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTU5MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZCk6IE9u
bHkgY2FzZSB0aGUgRnJhbWVMb2FkZXJDbGllbnQgYW5kIGdldCBXZWJGcmFtZS9XZWJQYWdlCisg
ICAgICAgICAgaWYgdGhhdCBpcyBhY3R1YWxseSBwb3NzaWJsZS4gU2V0IHRoZSBjbGllbnRDcmVk
ZW50aWFsUG9saWN5IGJhc2VkIG9uIHdoZXRoZXIgb3Igbm90IFdlYkZyYW1lL1dlYlBhZ2UgYXJl
CisgICAgICAgICAgYXZhaWxhYmxlIHNpbmNlIHRoZXkgYXJlIG5lZWRlZCB0byBhc2sgdGhlIFVJ
UHJvY2VzcyBmb3IgY3JlZGVudGlhbHMuCisKIDIwMTMtMDUtMTQgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlbW92ZSBXVEZfVVNFX1BMQVRG
T1JNX1NUUkFURUdJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXggOTlkMzRhMy4u
MjdiZGEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTEwNSwxOCArMTA1LDI2
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VM
b2FkZXIqIHJlc291cmNlTG9hZGVyLCBDYWNoCiAgICAgU3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dT
dG9yZWRDcmVkZW50aWFscyA9IHJlc291cmNlTG9hZGVyLT5zaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZSgpID8gQWxsb3dTdG9yZWRDcmVkZW50aWFscyA6IERvTm90QWxsb3dTdG9yZWRDcmVkZW50
aWFsczsKICAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSByZXNvdXJjZUxvYWRlci0+
ZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpOwogCi0gICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2Fk
ZXJDbGllbnQqPihyZXNvdXJjZUxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkpLT53ZWJG
cmFtZSgpOwotICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSB3ZWJGcmFtZS0+cGFnZSgpOworICAgIC8v
IEZJWE1FOiBTb21lIGVudGl0aWVzIGluIFdlYkNvcmUgdXNlIFdlYkNvcmUncyAiRW1wdHlGcmFt
ZUxvYWRlckNsaWVudCIgaW5zdGVhZCBvZiBoYXZpbmcgYSBwcm9wZXIgV2ViRnJhbWVMb2FkZXJD
bGllbnQuCisgICAgLy8gRW1wdHlGcmFtZUxvYWRlckNsaWVudCBzaG91bGRuJ3QgZXhpc3QgYW5k
IGV2ZXJ5dGhpbmcgc2hvdWxkIGJlIHVzaW5nIGEgV2ViRnJhbWVMb2FkZXJDbGllbnQsCisgICAg
Ly8gYnV0IGluIHRoZSBtZWFudGltZSB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSBub3QgdG8gbWlzLWNh
c3QuCisgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gMDsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0g
MDsKKyAgICBpZiAoIXJlc291cmNlTG9hZGVyLT5mcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+aXNF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50KCkpIHsKKyAgICAgICAgd2ViRnJhbWUgPSBzdGF0aWNfY2Fz
dDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KHJlc291cmNlTG9hZGVyLT5mcmFtZUxvYWRlcigpLT5j
bGllbnQoKSktPndlYkZyYW1lKCk7CisgICAgICAgIHdlYlBhZ2UgPSB3ZWJGcmFtZS0+cGFnZSgp
OworICAgIH0KIAogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0
ZXJzOwogICAgIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSBpZGVudGlmaWVyOwotICAgIGxv
YWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UtPnBhZ2VJRCgpOwotICAgIGxvYWRQYXJh
bWV0ZXJzLndlYkZyYW1lSUQgPSB3ZWJGcmFtZS0+ZnJhbWVJRCgpOworICAgIGxvYWRQYXJhbWV0
ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQoKSA6IDA7CisgICAgbG9h
ZFBhcmFtZXRlcnMud2ViRnJhbWVJRCA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6
IDA7CiAgICAgbG9hZFBhcmFtZXRlcnMucmVxdWVzdCA9IHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0
KCk7CiAgICAgbG9hZFBhcmFtZXRlcnMucHJpb3JpdHkgPSBwcmlvcml0eTsKICAgICBsb2FkUGFy
YW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3kgPSBjb250ZW50U25pZmZpbmdQb2xpY3k7CiAg
ICAgbG9hZFBhcmFtZXRlcnMuYWxsb3dTdG9yZWRDcmVkZW50aWFscyA9IGFsbG93U3RvcmVkQ3Jl
ZGVudGlhbHM7Ci0gICAgbG9hZFBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9IHJl
c291cmNlTG9hZGVyLT5jbGllbnRDcmVkZW50aWFsUG9saWN5KCk7CisgICAgLy8gSWYgdGhlcmUg
aXMgbm8gV2ViRnJhbWUgdGhlbiB0aGlzIHJlc291cmNlIGNhbm5vdCBiZSBhdXRoZW50aWNhdGVk
IHdpdGggdGhlIGNsaWVudC4KKyAgICBsb2FkUGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9s
aWN5ID0gd2ViRnJhbWUgPyByZXNvdXJjZUxvYWRlci0+Y2xpZW50Q3JlZGVudGlhbFBvbGljeSgp
IDogRG9Ob3RBc2tDbGllbnRGb3JBbnlDcmVkZW50aWFsczsKICAgICBsb2FkUGFyYW1ldGVycy5p
blByaXZhdGVCcm93c2luZ01vZGUgPSBwcml2YXRlQnJvd3NpbmdFbmFibGVkOwogICAgIGxvYWRQ
YXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgPSBzaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OwogICAgIGxvYWRQYXJhbWV0ZXJz
LmlzTWFpblJlc291cmNlID0gcmVzb3VyY2UgJiYgcmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRS
ZXNvdXJjZTo6TWFpblJlc291cmNlOwo=
</data>
<flag name="review"
          id="223278"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201966</attachid>
            <date>2013-05-16 09:53:08 -0700</date>
            <delta_ts>2013-05-16 13:57:22 -0700</delta_ts>
            <desc>Patch v3 - v2 plus review feedback</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>7989</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3YTFiNThiLi5lMzZhNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTMtMDUtMTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIHN2Zy9hcy1pbWFnZS9pbWctem9vbS1zdmctc3R5bGVzaGVldC5odG1sIGNyYXNoZXMgd2l0
aCBOZXR3b3JrUHJvY2VzcyBlbmFibGVkLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTM4Mzc0
MDg+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1OTE3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2l2ZSBXZWJL
aXQyIHRoZSBhYmlsaXR5IHRvIG5vdCBtaXMtY2FzdC4KKworICAgICAgICBObyBuZXcgdGVzdHMg
KENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdCkuCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50Ojppc0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQpOiBEZWZhdWx0cyB0byBmYWxzZSwgYW5kIGluY2x1ZGUgYSBGSVhN
RQorICAgICAgICAgIHRvIHJlbW92ZSBpdCBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTYyMzMgaXMgcmVzb2x2ZWQuCisKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmg6IE1ha2UgaXNFbXB0eUZyYW1lTG9hZGVyQ2xpZW50KCkgcmV0dXJuIHRydWUs
IGFuZCBhZGQgYSBGSVhNRSB0byByZW1vdmUgaXQuCisKIDIwMTMtMDUtMTUgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIENoYW5nZSBDbGlwYm9hcmQ6OmNy
ZWF0ZSBmdW5jdGlvbnMgc28gdGhleSBkb24ndCB1c2UgQ2xpcGJvYXJkTWFjOjpjcmVhdGUgYW55
IG1vcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBkOGZiYjZiLi44ZDIw
NThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0yMDksNiArMjA5LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGROb3RpZnlPbkZvcm1DaGFuZ2VzKCkg
eyByZXR1cm4gZmFsc2U7IH0KIH07CiAKKy8vIEZJWE1FIChidWcgMTE2MjMzKTogR2V0IHJpZCBv
ZiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LiBJdCBpcyBhIHRyYXZlc3R5LgorCiBjbGFzcyBFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShFbXB0eUZyYW1lTG9hZGVyQ2xpZW50KTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0zNzMsNiArMzc1LDggQEAgcHVibGljOgogI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0
d29ya2luZ0NvbnRleHQoKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5RnJh
bWVMb2FkZXJDbGllbnQoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiB9OwogCiBjbGFzcyBF
bXB0eVRleHRDaGVja2VyQ2xpZW50IDogcHVibGljIFRleHRDaGVja2VyQ2xpZW50IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMGIwNDkzNi4uODU1ZWMy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTM0OCw2
ICszNDgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFdpbGxJbnNlcnRCb2R5KCkgeyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2hhbmdlUmVzb3VyY2VQcmlvcml0eSh1bnNpZ25lZCBsb25nIC8qaWRlbnRpZmllciovLCBS
ZXNvdXJjZUxvYWRQcmlvcml0eSkgeyB9CisKKyAgICAgICAgLy8gRklYTUUgKGJ1ZyAxMTYyMzMp
OiBXZSBuZWVkIHRvIGdldCByaWQgb2YgRW1wdHlGcmFtZUxvYWRlckNsaWVudCBjb21wbGV0ZWx5
LCB0aGVuIHRoaXMgd2lsbCBubyBsb25nZXIgYmUgbmVlZGVkLgorICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNFbXB0eUZyYW1lTG9hZGVyQ2xpZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjc3ODg4Mi4uYmZjOTQ0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA1LTE2ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBzdmcvYXMtaW1hZ2UvaW1nLXpvb20tc3ZnLXN0
eWxlc2hlZXQuaHRtbCBjcmFzaGVzIHdpdGggTmV0d29ya1Byb2Nlc3MgZW5hYmxlZC4KKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzEzODM3NDA4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNTkxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTY2hlZHVsYWJsZUxvYWRlcjo6U2NoZWR1bGFibGVMb2FkZXIpOiBB
U1NFUlQgdGhhdCBlaXRoZXIgdGhlcmXigJlzIGEgZnJhbWUgYW5kIHBhZ2UgSUQsIG9yCisgICAg
ICAgICAgdGhhdCB0aGUgY2xpZW50IGNhbm5vdCBiZSBhc2tlZCBmb3IgY3JlZGVudGlhbHMuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxv
YWQpOiBPbmx5IGNhc3QgdGhlIEZyYW1lTG9hZGVyQ2xpZW50IGFuZCBnZXQgV2ViRnJhbWUvV2Vi
UGFnZQorICAgICAgICAgIGlmIHRoYXQgaXMgYWN0dWFsbHkgcG9zc2libGUuIFNldCB0aGUgY2xp
ZW50Q3JlZGVudGlhbFBvbGljeSBiYXNlZCBvbiB3aGV0aGVyIG9yIG5vdCBXZWJGcmFtZS9XZWJQ
YWdlIGFyZQorICAgICAgICAgIGF2YWlsYWJsZSBzaW5jZSB0aGV5IGFyZSBuZWVkZWQgdG8gYXNr
IHRoZSBVSVByb2Nlc3MgZm9yIGNyZWRlbnRpYWxzLiBBU1NFUlQgdGhhdCBlaXRoZXIgdGhlcmXi
gJlzIGJvdGgKKyAgICAgICAgICBhIGZyYW1lIGFuZCBwYWdlIElEIG9yIHRoYXQgdGhlIGNsaWVu
dCB3b27igJl0IGJlIGFza2VkIGZvciBjcmVkZW50aWFscy4KKwogMjAxMy0wNS0xNCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFdU
Rl9VU0VfUExBVEZPUk1fU1RSQVRFR0lFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwCmluZGV4IDU4ZmViYzEuLjQ3ZjQxZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRl
ci5jcHAKQEAgLTUxLDYgKzUxLDExIEBAIFNjaGVkdWxhYmxlTG9hZGVyOjpTY2hlZHVsYWJsZUxv
YWRlcihjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1lCiAgICAgLCBt
X2lzTG9hZGluZ01haW5SZXNvdXJjZShwYXJhbWV0ZXJzLmlzTWFpblJlc291cmNlKQogICAgICwg
bV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCiB7CisgICAgLy8gRWl0aGVyIHRoaXMgbG9hZGVyIGhh
cyBib3RoIGEgd2ViUGFnZUlEIGFuZCB3ZWJGcmFtZUlELCBvciBpdCBpcyBub3QgYWxsb3dlZCB0
byBhc2sgdGhlIGNsaWVudCBmb3IgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuCisgICAgLy8g
RklYTUU6IFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugb2YgdGhlIGV4aXN0ZW5jZSBvZiBFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50IGluIFdlYkNvcmUuCisgICAgLy8gICAgICAgIE9uY2UgYnVnIDEx
NjIzMyBpcyByZXNvbHZlZCwgdGhpcyBBU1NFUlQgY2FuIGp1c3QgYmUgIm1fd2ViUGFnZUlEICYm
IG1fd2ViRnJhbWVJRCIKKyAgICBBU1NFUlQoKG1fd2ViUGFnZUlEICYmIG1fd2ViRnJhbWVJRCkg
fHwgbV9jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IERvTm90QXNrQ2xpZW50Rm9yQW55Q3JlZGVu
dGlhbHMpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gcGFyYW1ldGVycy5yZXF1
ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zLnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsKICAgICAg
ICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGUocGFyYW1ldGVycy5yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zW2ldKSkK
ICAgICAgICAgICAgIG1fcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9ucy5hcHBlbmQoZXh0ZW5z
aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXggOTlkMzRhMy4uNTNjOWU1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTEwNSwyMiArMTA1LDMyIEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXIqIHJl
c291cmNlTG9hZGVyLCBDYWNoCiAgICAgU3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dTdG9yZWRDcmVk
ZW50aWFscyA9IHJlc291cmNlTG9hZGVyLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpID8g
QWxsb3dTdG9yZWRDcmVkZW50aWFscyA6IERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAg
ICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSByZXNvdXJjZUxvYWRlci0+ZnJhbWVMb2Fk
ZXIoKS0+ZnJhbWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogCi0g
ICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQq
PihyZXNvdXJjZUxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkpLT53ZWJGcmFtZSgpOwot
ICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSB3ZWJGcmFtZS0+cGFnZSgpOworICAgIC8vIEZJWE1FOiBT
b21lIGVudGl0aWVzIGluIFdlYkNvcmUgdXNlIFdlYkNvcmUncyAiRW1wdHlGcmFtZUxvYWRlckNs
aWVudCIgaW5zdGVhZCBvZiBoYXZpbmcgYSBwcm9wZXIgV2ViRnJhbWVMb2FkZXJDbGllbnQuCisg
ICAgLy8gRW1wdHlGcmFtZUxvYWRlckNsaWVudCBzaG91bGRuJ3QgZXhpc3QgYW5kIGV2ZXJ5dGhp
bmcgc2hvdWxkIGJlIHVzaW5nIGEgV2ViRnJhbWVMb2FkZXJDbGllbnQsCisgICAgLy8gYnV0IGlu
IHRoZSBtZWFudGltZSB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSBub3QgdG8gbWlzLWNhc3QuCisgICAg
V2ViRnJhbWUqIHdlYkZyYW1lID0gMDsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gMDsKKyAgICBp
ZiAoIXJlc291cmNlTG9hZGVyLT5mcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+aXNFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50KCkpIHsKKyAgICAgICAgd2ViRnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFt
ZUxvYWRlckNsaWVudCo+KHJlc291cmNlTG9hZGVyLT5mcmFtZUxvYWRlcigpLT5jbGllbnQoKSkt
PndlYkZyYW1lKCk7CisgICAgICAgIHdlYlBhZ2UgPSB3ZWJGcmFtZS0+cGFnZSgpOworICAgIH0K
IAogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOwogICAg
IGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSBpZGVudGlmaWVyOwotICAgIGxvYWRQYXJhbWV0
ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UtPnBhZ2VJRCgpOwotICAgIGxvYWRQYXJhbWV0ZXJzLndl
YkZyYW1lSUQgPSB3ZWJGcmFtZS0+ZnJhbWVJRCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLndlYlBh
Z2VJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQoKSA6IDA7CisgICAgbG9hZFBhcmFtZXRl
cnMud2ViRnJhbWVJRCA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDA7CiAgICAg
bG9hZFBhcmFtZXRlcnMucmVxdWVzdCA9IHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCk7CiAgICAg
bG9hZFBhcmFtZXRlcnMucHJpb3JpdHkgPSBwcmlvcml0eTsKICAgICBsb2FkUGFyYW1ldGVycy5j
b250ZW50U25pZmZpbmdQb2xpY3kgPSBjb250ZW50U25pZmZpbmdQb2xpY3k7CiAgICAgbG9hZFBh
cmFtZXRlcnMuYWxsb3dTdG9yZWRDcmVkZW50aWFscyA9IGFsbG93U3RvcmVkQ3JlZGVudGlhbHM7
Ci0gICAgbG9hZFBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9IHJlc291cmNlTG9h
ZGVyLT5jbGllbnRDcmVkZW50aWFsUG9saWN5KCk7CisgICAgLy8gSWYgdGhlcmUgaXMgbm8gV2Vi
RnJhbWUgdGhlbiB0aGlzIHJlc291cmNlIGNhbm5vdCBiZSBhdXRoZW50aWNhdGVkIHdpdGggdGhl
IGNsaWVudC4KKyAgICBsb2FkUGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID0gKHdl
YkZyYW1lICYmIHdlYlBhZ2UpID8gcmVzb3VyY2VMb2FkZXItPmNsaWVudENyZWRlbnRpYWxQb2xp
Y3koKSA6IERvTm90QXNrQ2xpZW50Rm9yQW55Q3JlZGVudGlhbHM7CiAgICAgbG9hZFBhcmFtZXRl
cnMuaW5Qcml2YXRlQnJvd3NpbmdNb2RlID0gcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKICAgICBs
b2FkUGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0ID0g
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdDsKICAgICBsb2FkUGFyYW1l
dGVycy5pc01haW5SZXNvdXJjZSA9IHJlc291cmNlICYmIHJlc291cmNlLT50eXBlKCkgPT0gQ2Fj
aGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZTsKIAorICAgIEFTU0VSVCgobG9hZFBhcmFtZXRlcnMu
d2ViUGFnZUlEICYmIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQpIHx8IGxvYWRQYXJhbWV0ZXJz
LmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gRG9Ob3RBc2tDbGllbnRGb3JBbnlDcmVkZW50aWFs
cyk7CisKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCkt
PmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgMCkpIHsKICAgICAgICAg
Ly8gV2UgcHJvYmFibHkgZmFpbGVkIHRvIHNjaGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRoZSBOZXR3
b3JrUHJvY2VzcyBiZWNhdXNlIGl0IGhhZCBjcmFzaGVkLgogICAgICAgICAvLyBUaGlzIGxvYWQg
d2lsbCBuZXZlciBzdWNjZWVkIHNvIHdlIHdpbGwgc2NoZWR1bGUgaXQgdG8gZmFpbCBhc3luY2hy
b25vdXNseS4K
</data>
<flag name="review"
          id="223376"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>