<?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>56855</bug_id>
          
          <creation_ts>2011-03-22 12:12:10 -0700</creation_ts>
          <short_desc>[GTK] Provide a way in DRT to check the platform name</short_desc>
          <delta_ts>2011-06-09 00:35:45 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mario Sanchez Prada">mario</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cfleizach</cc>
    
    <cc>darin</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>371544</commentid>
    <comment_count>0</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-03-22 12:12:10 -0700</bug_when>
    <thetext>Currently, we&apos;re having a situation with how DRT outputs rolenames in GTK, since it&apos;s not always the same way that Mac does it, and this results in the need of keeping different expected files for accessibility layout tests just because that.

For instance, for a given a11y object exposing a link, we have this:

  - Mac&apos;s DRT: &quot;AXRole: AXLink&quot;
  - GTK&apos;s DRT: &quot;AXRole: link&quot; 

Thus, it would be great if we could make GTK&apos;s DRT to output the same string than Mac&apos;s, specially now that we&apos;re working on improving the WAI-ARIA support in WebKitGTK, easing unskipping already existing ones, instead of having to develop new ones for GTK only.

Adding to CC people that I think might be interested on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372748</commentid>
    <comment_count>1</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-03-24 05:05:45 -0700</bug_when>
    <thetext>Just realized that this perhaps is not a good / feasible proposal since there&apos;s not a 1:1 match between WebCore roles and Mac role names (it&apos;s almost there, but it&apos;s not 100% accurate), nor between Mac and ATK role names, so it&apos;s gonna be difficult to reach a point whether we can use the same role names as the expected results for both the Mac and GTK platforms.

One option could be then, instead of trying to print in GTK the same output than for Mac, to try to reach some consensus and make the two platforms print platform-independent rolenames as expected results in the tests (maybe those from WebCore) through the role() method in the DRT, so both platforms would expect the same thing. 

However, I wonder if it makes sense printing rolenames that does not exist in one platform: e.g., printing &apos;AXGroup&apos; in GTK when there&apos;s no such ATK_ROLE_GROUP role, or printing &apos;AXDocument&apos; when it seems there&apos;s not a &apos;NSAccessibilityDocumentRole&apos; in Mac (talking from my vast ignorance in the Mac platform)...

Perhaps at the end it will be better to just have platform-dependant tests for a11y stuff as, after all, a11y implementations are quite different between the two platforms...

I&apos;ll keep the bug open, though, so the debate keeps open too... this could be an interesting topic to talk about next month in person in the WK contributors meeting anyway :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372789</commentid>
    <comment_count>2</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-03-24 06:59:49 -0700</bug_when>
    <thetext>(In reply to comment #1)

You have enumerated part of the problem. There&apos;s ultimately logic in the Mac wrapper and I imagine gtk as well that we want to test in many cases. Other ideas I have

Have a method like isMac() isGTK() so we can conditionalize in the test
Have another mapping method in DRT that took the platform output and converted to platform neutral role

&gt; Just realized that this perhaps is not a good / feasible proposal since there&apos;s not a 1:1 match between WebCore roles and Mac role names (it&apos;s almost there, but it&apos;s not 100% accurate), nor between Mac and ATK role names, so it&apos;s gonna be difficult to reach a point whether we can use the same role names as the expected results for both the Mac and GTK platforms.
&gt; 
&gt; One option could be then, instead of trying to print in GTK the same output than for Mac, to try to reach some consensus and make the two platforms print platform-independent rolenames as expected results in the tests (maybe those from WebCore) through the role() method in the DRT, so both platforms would expect the same thing. 
&gt; 
&gt; However, I wonder if it makes sense printing rolenames that does not exist in one platform: e.g., printing &apos;AXGroup&apos; in GTK when there&apos;s no such ATK_ROLE_GROUP role, or printing &apos;AXDocument&apos; when it seems there&apos;s not a &apos;NSAccessibilityDocumentRole&apos; in Mac (talking from my vast ignorance in the Mac platform)...
&gt; 
&gt; Perhaps at the end it will be better to just have platform-dependant tests for a11y stuff as, after all, a11y implementations are quite different between the two platforms...
&gt; 
&gt; I&apos;ll keep the bug open, though, so the debate keeps open too... this could be an interesting topic to talk about next month in person in the WK contributors meeting anyway :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373433</commentid>
    <comment_count>3</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-03-25 03:39:23 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; 
&gt; You have enumerated part of the problem. There&apos;s ultimately logic in the Mac 
&gt; wrapper and I imagine gtk as well that we want to test in many cases. 

Yes, we have specific logic in the GTK wrapper to map those WebCore roles to ATK ones, and then we can get an string with the name for those ATK roles through atk_role_get_name(). However, in the mac platform I can see the mapping is more complex, since it not only maps webcore roles to mac roles, but also to subroles and role descriptions which is something we currently lack in the gtk platform because it&apos;s not something used in ATK/AT-SPI.

&gt; Have a method like isMac() isGTK() so we can conditionalize in the test

You mean in DRT, right? so we can actually use that isMac() or isGTK() in the Javascript code when calling to the shouldBe() functions?

Still, we wouldn&apos;t be able to get rid of the platform-specific expected files, but at least we would need only one test (html) file.

&gt; Have another mapping method in DRT that took the platform output and 
&gt; converted to platform neutral role

That sounds good to me as well, although it would mean having to maintain an extra mapping in Mac and GTK&apos;s DRTs, unless we decide using one of the platform rolenames as the neutral ones, in which case I&apos;d obviously choose Mac ones, since they&apos;re almost a 1:1 match with WebCore ones.

The benefit of that, in case it&apos;s actually feasible, would be that wouldn&apos;t require any change in Mac&apos;s code, nor in current layout tests, but just adding a mapping in GTK&apos;s DRT (not even in the wrapper, since we don&apos;t need that info in ATK/AT-SPI).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373683</commentid>
    <comment_count>4</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-03-25 12:42:02 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (In reply to comment #1)
&gt; &gt; 
&gt; &gt; You have enumerated part of the problem. There&apos;s ultimately logic in the Mac 
&gt; &gt; wrapper and I imagine gtk as well that we want to test in many cases. 
&gt; 
&gt; Yes, we have specific logic in the GTK wrapper to map those WebCore roles to ATK ones, and then we can get an string with the name for those ATK roles through atk_role_get_name(). However, in the mac platform I can see the mapping is more complex, since it not only maps webcore roles to mac roles, but also to subroles and role descriptions which is something we currently lack in the gtk platform because it&apos;s not something used in ATK/AT-SPI.
&gt; 

Yea, we&apos;d need another step to convert from the platform name, back to a common name. That would be a mess to maintain though

&gt; &gt; Have a method like isMac() isGTK() so we can conditionalize in the test
&gt; 
&gt; You mean in DRT, right? so we can actually use that isMac() or isGTK() in the Javascript code when calling to the shouldBe() functions?
&gt; 

yea that would mean just one test, maybe different expectations, but maybe not always.

&gt; Still, we wouldn&apos;t be able to get rid of the platform-specific expected files, but at least we would need only one test (html) file.
&gt; 

&gt; &gt; Have another mapping method in DRT that took the platform output and 
&gt; &gt; converted to platform neutral role
&gt; 
&gt; That sounds good to me as well, although it would mean having to maintain an extra mapping in Mac and GTK&apos;s DRTs, unless we decide using one of the platform rolenames as the neutral ones, in which case I&apos;d obviously choose Mac ones, since they&apos;re almost a 1:1 match with WebCore ones.
&gt; 
&gt; The benefit of that, in case it&apos;s actually feasible, would be that wouldn&apos;t require any change in Mac&apos;s code, nor in current layout tests, but just adding a mapping in GTK&apos;s DRT (not even in the wrapper, since we don&apos;t need that info in ATK/AT-SPI).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379533</commentid>
    <comment_count>5</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-04-05 07:15:19 -0700</bug_when>
    <thetext>(In reply to comment #4)
[...]
&gt; &gt; &gt; Have a method like isMac() isGTK() so we can conditionalize in the test
&gt; &gt; 
&gt; &gt; You mean in DRT, right? so we can actually use that isMac() or isGTK() in the 
&gt; &gt; Javascript code when calling to the shouldBe() functions?
&gt; &gt; 
&gt; 
&gt; yea that would mean just one test, maybe different expectations, but maybe not 
&gt; always.

Another thing I thought of while working on bug 57826 (and which I actually used in the currently proposed patch in there) is not to use role names at all in the tests, that is in the HTML files.

Instead, why not just dumping the role names directly in the output and let the actual check to be done in the expected files? At least that way we would only need one HTML file in some cases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379576</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-04-05 08:18:30 -0700</bug_when>
    <thetext>We can do that already if we don&apos;t want to use the shouldBe paradigm. The test won&apos;t be as pretty but some tests may fall into this
Category

(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; [...]
&gt; &gt; &gt; &gt; Have a method like isMac() isGTK() so we can conditionalize in the test
&gt; &gt; &gt; 
&gt; &gt; &gt; You mean in DRT, right? so we can actually use that isMac() or isGTK() in the 
&gt; &gt; &gt; Javascript code when calling to the shouldBe() functions?
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; yea that would mean just one test, maybe different expectations, but maybe not 
&gt; &gt; always.
&gt; 
&gt; Another thing I thought of while working on bug 57826 (and which I actually used in the currently proposed patch in there) is not to use role names at all in the tests, that is in the HTML files.
&gt; 
&gt; Instead, why not just dumping the role names directly in the output and let the actual check to be done in the expected files? At least that way we would only need one HTML file in some cases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379594</commentid>
    <comment_count>7</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-04-05 08:40:06 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; We can do that already if we don&apos;t want to use the shouldBe paradigm. The test won&apos;t be as pretty but some tests may fall into this
&gt; Category

Yes, that&apos;s what I meant: use this kind of approach for platform-dependent code in the tests, so we just need to provide different expected files in these situations, leaving the html file untouched.

Obviously, there will be situations where having different tests will be mandatory (e.g. exposing different hierarchies, as it happens with tables), but for the rest of the cases I think this kind of writing the tests will be positive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381319</commentid>
    <comment_count>8</comment_count>
      <attachid>88630</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-04-07 07:19:46 -0700</bug_when>
    <thetext>Created attachment 88630
Patch for fixing this (asking for opinion)

Hi again Chris,

Inspired by your suggestion of adding something like isMac()/isGTK() methods to DRT, I wrote the attached patch this morning, which would basically add a new property in the layoutController so we could easily check, from cross-platform layout tests, the name of the platform in use: &quot;gtk&quot;, &quot;mac&quot;, &quot;wx&quot;...

I found it specially useful when working on unskipping the accessibility/input-slider.html test, which has a part that doesn&apos;t apply to GTK (GTK won&apos;t expose objects of role SliderThumbRole), but the rest could be the same, providing we do not check rolenames in the test itself either, but just print them and check them in the expected files. See bug 58040 for more details.

Anyway, I&apos;m not currently asking for review over this patch but more for an opinion (that&apos;s why I didn&apos;t mark bug 58040 as depending on this one). Well, and also to check through the EWS whether I broke or not compilation in other platforms, since I did changes for platforms other than GTK blindly.

If we agree it could be a good idea, then I would come with a proper patch, with a proper Changelog and perhaps with a new bug just for it (unless we found &apos;just ok&apos; to use this one for that purpose, which I guess could be ok as well).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381320</commentid>
    <comment_count>9</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-04-07 07:23:46 -0700</bug_when>
    <thetext>I think this is a good idea, this is what I needed to do a number of times but had to resort to other games to make a test work on multiple platforms. 

Given that DRT for accessibility ultimately needs to interact with the platform specific AX API, it&apos;s helpful to make that distinction in the test.

Others may disagree, so I&apos;m including Darin to offer his opinion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381327</commentid>
    <comment_count>10</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-04-07 07:35:11 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I think this is a good idea, this is what I needed to do a number of times but 
&gt; had to resort to other games to make a test work on multiple platforms. 

Well, the idea was actually yours. No big surprise here :-)

&gt; Given that DRT for accessibility ultimately needs to interact with the platform 
&gt; specific AX API, it&apos;s helpful to make that distinction in the test.
&gt;
&gt; Others may disagree, so I&apos;m including Darin to offer his opinion

Thank you for your support. Of course this won&apos;t be the silver bullet for all the cases (we&apos;ll still need to have platform specific tests anyway), but a very convenient tool IMHO for those cases were 95% of the test would be the same for different platforms, with just very small differences (e.g. objects not being exposed in a platform).

Giving the early feedback and re-reading the whole thread in this bug, I think it makes sense to change its name and provide a patch asking for review over it (so EWS will actually run, as a plus). Changing the name now, attaching the &quot;reviewable patch&quot; in some minutes.

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381330</commentid>
    <comment_count>11</comment_count>
      <attachid>88635</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-04-07 07:41:56 -0700</bug_when>
    <thetext>Created attachment 88635
Patch proposal

Attaching &quot;reviewable&quot; patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393101</commentid>
    <comment_count>12</comment_count>
      <attachid>88635</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-26 16:59:07 -0700</bug_when>
    <thetext>Comment on attachment 88635
Patch proposal

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

You should add a test that shows this is working. You should also explain why this is needed.

&gt; Tools/DumpRenderTree/LayoutTestController.cpp:2093
&gt; +    return JSValueMakeString(context, controller-&gt;platformName());

This is leaking the JSStringRef returned by platformName. platformName should return a JSRetainPtr&lt;JSStringRef&gt; instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412742</commentid>
    <comment_count>13</comment_count>
      <attachid>95452</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-05-31 10:45:12 -0700</bug_when>
    <thetext>Created attachment 95452
Patch proposal

(In reply to comment #12)
&gt; (From update of attachment 88635 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88635&amp;action=review
&gt; 
&gt; You should add a test that shows this is working. 

Well I haven&apos;t done it since it&apos;s a patch for a new functionality in DRT, not in WebKit, so I thought it wouldn&apos;t be needed since its functionality would be tested anytime it was used in a LayoutTest :-)

&gt; You should also explain why this is needed.

See comment #8 and comment #10. It&apos;s all in there :-)

&gt; &gt; Tools/DumpRenderTree/LayoutTestController.cpp:2093
&gt; &gt; +    return JSValueMakeString(context, controller-&gt;platformName());
&gt; 
&gt; This is leaking the JSStringRef returned by platformName. platformName should return a JSRetainPtr&lt;JSStringRef&gt; instead.

Thanks for the catch. Attaching a new patch fixing these issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413678</commentid>
    <comment_count>14</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-06-01 14:41:08 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=95452) [details]
&gt; Patch proposal
&gt; 
&gt; (In reply to comment #12)
&gt; &gt; (From update of attachment 88635 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88635&amp;action=review
&gt; &gt; 
&gt; &gt; You should add a test that shows this is working. 
&gt; 
&gt; Well I haven&apos;t done it since it&apos;s a patch for a new functionality in DRT, not in WebKit, so I thought it wouldn&apos;t be needed since its functionality would be tested anytime it was used in a LayoutTest :-)
&gt; 

I still think we should have a layout test to test this, otherwise we might find out that this doesn&apos;t work before we get to use it


&gt; &gt; You should also explain why this is needed.
&gt; 
&gt; See comment #8 and comment #10. It&apos;s all in there :-)
&gt; 
&gt; &gt; &gt; Tools/DumpRenderTree/LayoutTestController.cpp:2093
&gt; &gt; &gt; +    return JSValueMakeString(context, controller-&gt;platformName());
&gt; &gt; 
&gt; &gt; This is leaking the JSStringRef returned by platformName. platformName should return a JSRetainPtr&lt;JSStringRef&gt; instead.
&gt; 
&gt; Thanks for the catch. Attaching a new patch fixing these issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414017</commentid>
    <comment_count>15</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-06-02 03:09:07 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; [...]
&gt; I still think we should have a layout test to test this, otherwise we might 
&gt; find out that this doesn&apos;t work before we get to use it

Ok, although I must admit I do not have a clue about where under LayoutTests to place a test like this... any suggestion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414574</commentid>
    <comment_count>16</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-06-02 17:43:12 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; [...]
&gt; &gt; I still think we should have a layout test to test this, otherwise we might 
&gt; &gt; find out that this doesn&apos;t work before we get to use it
&gt; 
&gt; Ok, although I must admit I do not have a clue about where under LayoutTests to place a test like this... any suggestion?

I think sticking one in accessibility is fine</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414789</commentid>
    <comment_count>17</comment_count>
      <attachid>95894</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-06-03 05:16:11 -0700</bug_when>
    <thetext>Created attachment 95894
Patch proposal + Layout test

(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; (In reply to comment #14)
&gt; &gt; &gt; [...]
&gt; &gt; &gt; I still think we should have a layout test to test this, otherwise we might 
&gt; &gt; &gt; find out that this doesn&apos;t work before we get to use it
&gt; &gt; 
&gt; &gt; Ok, although I must admit I do not have a clue about where under LayoutTests to place a test like this... any suggestion?
&gt; 
&gt; I think sticking one in accessibility is fine

Sounds good to me, specially taking into account that perhaps accessibility tests will be the only ones that will be using it, in the short term at least.

Actually, after thinking a little bit about this suggestion of putting it under accessibility/ I thought that it could be a good idea also, based on the same reasoning, to provide this feature only to the platforms that would be using it, that is, mac, win and gtk (after all, there&apos;s no point in adding code to platforms that never will use it). 

As a result, I dropped from this new patch all the code related to implementing this new function in chromium, qt and wx platforms, and secured the changes in the toplevel LayoutTestController.[cpp|h] files through #ifdef guards.

Also, provided expectations to other ports apart from Gtk, that is, win and mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414790</commentid>
    <comment_count>18</comment_count>
      <attachid>95452</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-06-03 05:16:42 -0700</bug_when>
    <thetext>Comment on attachment 95452
Patch proposal

Forgot to mark this as obsolete</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417882</commentid>
    <comment_count>19</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-06-09 00:35:45 -0700</bug_when>
    <thetext>Committed r88432: &lt;http://trac.webkit.org/changeset/88432&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88630</attachid>
            <date>2011-04-07 07:19:46 -0700</date>
            <delta_ts>2011-04-07 07:41:56 -0700</delta_ts>
            <desc>Patch for fixing this (asking for opinion)</desc>
            <filename>0001-Patch-for-adding-platformName-static-property-to-DRT.patch</filename>
            <type>text/plain</type>
            <size>8833</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA0ZDIxOWE2YTNiMDlmMGYzN2M5NjNiMTllZGI0N2Y1MDA4NTUxYTIxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDcgQXByIDIwMTEgMTU6MTU6MDMgKzAyMDAKU3ViamVjdDogW1BBVENI
XSBQYXRjaCBmb3IgYWRkaW5nICdwbGF0Zm9ybU5hbWUnIHN0YXRpYyBwcm9wZXJ0eSB0byBEUlQn
cyBMYXlvdXRDb250cm9sbGVyCgotLS0KIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcCAgICAgIHwgICAgNyArKysrKysrCiBUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oICAgICAgICB8ICAgIDQgKysrLQogLi4uL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcCAgICAgICAgICAgICAgfCAgICAzICsrKwogLi4uL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggfCAgICAzICsrKwogLi4u
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgfCAgICA1ICsr
KysrCiAuLi4vRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tICB8
ICAgIDUgKysrKysKIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuY3BwIHwgICAgNSArKysrKwogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENv
bnRyb2xsZXJRdC5oICAgfCAgICAzICsrKwogLi4uL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHAgfCAgICA1ICsrKysrCiBUb29scy9EdW1wUmVuZGVyVHJlZS93
eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCB8ICAgIDUgKysrKysKIDEwIGZpbGVzIGNoYW5n
ZWQsIDQ0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDMxMDVjZTQuLjc0MDdmZGUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTIw
ODcsNiArMjA4NywxMiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRXb3JrZXJUaHJlYWRDb3VudENh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZgogICAgIHJldHVybiBKU1Zh
bHVlTWFrZU51bWJlcihjb250ZXh0LCBjb250cm9sbGVyLT53b3JrZXJUaHJlYWRDb3VudCgpKTsK
IH0KIAorc3RhdGljIEpTVmFsdWVSZWYgZ2V0UGxhdGZvcm1OYW1lQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIExheW91dFRlc3RDb250cm9sbGVy
KiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVj
dEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhj
b250ZXh0LCBjb250cm9sbGVyLT5wbGF0Zm9ybU5hbWUoKSk7Cit9CisKIHN0YXRpYyBib29sIHNl
dEdsb2JhbEZsYWdDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xs
ZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0
ZSh0aGlzT2JqZWN0KSk7CkBAIC0yMTQ2LDYgKzIxNTIsNyBAQCBKU1N0YXRpY1ZhbHVlKiBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c3RhdGljVmFsdWVzKCkKICAgICAgICAgeyAiZ2xvYmFsRmxhZyIs
IGdldEdsb2JhbEZsYWdDYWxsYmFjaywgc2V0R2xvYmFsRmxhZ0NhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZU5vbmUgfSwKICAgICAgICAgeyAid2ViSGlzdG9yeUl0ZW1Db3VudCIsIGdldFdl
Ykhpc3RvcnlJdGVtQ291bnRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJ3b3JrZXJU
aHJlYWRDb3VudCIsIGdldFdvcmtlclRocmVhZENvdW50Q2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAg
ICAgICAgeyAicGxhdGZvcm1OYW1lIiwgZ2V0UGxhdGZvcm1OYW1lQ2FsbGJhY2ssIDAsIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAwLCAwLCAwLCAwIH0KICAgICB9OwogICAgIHJldHVybiBzdGF0aWNWYWx1
ZXM7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCBh
NDI5ZGJmLi5hMWE2MDgwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmgKQEAgLTEyOCw3ICsxMjgsOSBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHdlYkhpc3Rv
cnlJdGVtQ291bnQoKTsKICAgICB1bnNpZ25lZCB3b3JrZXJUaHJlYWRDb3VudCgpIGNvbnN0Owog
ICAgIGludCB3aW5kb3dDb3VudCgpOwotICAgIAorCisgICAgSlNTdHJpbmdSZWYgcGxhdGZvcm1O
YW1lKCkgY29uc3Q7CisKICAgICB2b2lkIGdyYW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Np
b24oSlNTdHJpbmdSZWYgb3JpZ2luKTsKICAgICBib29sIGNoZWNrRGVza3RvcE5vdGlmaWNhdGlv
blBlcm1pc3Npb24oSlNTdHJpbmdSZWYgb3JpZ2luKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGQ5MWNk
NmUuLjU5MWVlOGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTIxNCw2ICsyMTQsOCBAQCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBi
aW5kUHJvcGVydHkoImdsb2JhbEZsYWciLCAmbV9nbG9iYWxGbGFnKTsKICAgICAvLyB3ZWJIaXN0
b3J5SXRlbUNvdW50IGlzIHVzZWQgYnkgdGVzdHMgaW4gTGF5b3V0VGVzdHNcaHR0cFx0ZXN0c1xo
aXN0b3J5CiAgICAgYmluZFByb3BlcnR5KCJ3ZWJIaXN0b3J5SXRlbUNvdW50IiwgJm1fd2ViSGlz
dG9yeUl0ZW1Db3VudCk7CisgICAgLy8gcGxhdGZvcm1OYW1lIGlzIHVzZWQgYnkgdGVzdHMgaW4g
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eQorICAgIGJpbmRQcm9wZXJ0eSgicGxhdGZvcm1OYW1l
IiwgJm1fcGxhdGZvcm1OYW1lKTsKIH0KIAogTGF5b3V0VGVzdENvbnRyb2xsZXI6On5MYXlvdXRU
ZXN0Q29udHJvbGxlcigpCkBAIC01NzMsNiArNTc1LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6cmVzZXQoKQogICAgIG1fZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZCA9IHRydWU7CiAg
ICAgbV9nbG9iYWxGbGFnLnNldChmYWxzZSk7CiAgICAgbV93ZWJIaXN0b3J5SXRlbUNvdW50LnNl
dCgwKTsKKyAgICBtX3BsYXRmb3JtTmFtZS5zZXQoImNocm9taXVtIik7CiAgICAgbV91c2VyU3R5
bGVTaGVldExvY2F0aW9uID0gV2ViVVJMKCk7CiAKICAgICB3ZWJraXRfc3VwcG9ydDo6U2V0QWNj
ZXB0QWxsQ29va2llcyhmYWxzZSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCBhOWM2Y2U0Li41OTYyNGExIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmgKQEAgLTU3NCw2ICs1NzQsOSBAQCBwcml2YXRlOgogICAgIC8vIEJvdW5kIHZhcmlhYmxl
IGNvdW50aW5nIHRoZSBudW1iZXIgb2YgdG9wIFVSTHMgdmlzaXRlZC4KICAgICBDcHBWYXJpYW50
IG1fd2ViSGlzdG9yeUl0ZW1Db3VudDsKIAorICAgIC8vIEJvdW5kIHZhcmlhYmxlIGhvbGRpbmcg
dGhlIG5hbWUgb2YgdGhlIHBsYXRmb3JtLgorICAgIENwcFZhcmlhbnQgbV9wbGF0Zm9ybU5hbWU7
CisKICAgICBXZWJLaXQ6OldlYlVSTCBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb247CiAKICAgICBP
d25QdHI8V2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrPiBtX3NwZWVjaElucHV0
Q29udHJvbGxlck1vY2s7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5
b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91
dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCAyOTc0MmJlLi5mYTczOTk2IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAK
QEAgLTE4NSw2ICsxODUsMTEgQEAgdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Ondvcmtl
clRocmVhZENvdW50KCkgY29uc3QKICAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
Ojp3b3JrZXJUaHJlYWRDb3VudCgpOwogfQogCitKU1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1OYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoImd0ayIpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpu
b3RpZnlEb25lKCkKIHsKICAgICBpZiAobV93YWl0VG9EdW1wICYmICF0b3BMb2FkaW5nRnJhbWUg
JiYgIVdvcmtRdWV1ZTo6c2hhcmVkKCktPmNvdW50KCkpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggMzJkMDUzMy4uZThm
OTkwZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250
cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbQpAQCAtMzI4LDYgKzMyOCwxMSBAQCB1bnNpZ25lZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6d29ya2VyVGhyZWFkQ291bnQoKSBjb25zdAogICAgIHJldHVybiBbV2ViV29ya2Vy
c1ByaXZhdGUgd29ya2VyVGhyZWFkQ291bnRdOwogfQogCitKU1N0cmluZ1JlZiBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gSlNTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIm1hYyIpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpub3RpZnlEb25lKCkKIHsKICAgICBpZiAobV93YWl0VG9EdW1wICYmICF0b3BMb2FkaW5n
RnJhbWUgJiYgIVdvcmtRdWV1ZTo6c2hhcmVkKCktPmNvdW50KCkpCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IGE1OGExNWUu
LjU0MGUxZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuY3BwCkBAIC02NjYsNiArNjY2LDExIEBAIGludCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6d29ya2VyVGhyZWFkQ291bnQoKQogICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6d29ya2VyVGhyZWFkQ291bnQoKTsKIH0KIAorUVN0cmluZyBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1OYW1lKCkKK3sKKyAgICByZXR1cm4gUVN0cmluZygicXQiKTsKK30KKwog
aW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoY29uc3Qg
UVN0cmluZyYgaWQsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCiB7CiAgICAgLy8gSWYgbm8g
c2l6ZSBzcGVjaWZpZWQsIHdlYnBhZ2Ugdmlld3BvcnQgc2l6ZSBpcyB1c2VkCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKaW5kZXggZjI5MjMz
YS4uMTQ2NWVjNyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaApAQCAtNTUsNiArNTUsNyBAQCBjbGFzcyBMYXlvdXRUZXN0Q29udHJvbGxl
ciA6IHB1YmxpYyBRT2JqZWN0IHsKICAgICBRX09CSkVDVAogICAgIFFfUFJPUEVSVFkoaW50IHdl
Ykhpc3RvcnlJdGVtQ291bnQgUkVBRCB3ZWJIaXN0b3J5SXRlbUNvdW50KQogICAgIFFfUFJPUEVS
VFkoaW50IHdvcmtlclRocmVhZENvdW50IFJFQUQgd29ya2VyVGhyZWFkQ291bnQpCisgICAgUV9Q
Uk9QRVJUWShRU3RyaW5nIHBsYXRmb3JtTmFtZSBSRUFEIHBsYXRmb3JtTmFtZSkKICAgICBRX1BS
T1BFUlRZKGJvb2wgZ2xvYmFsRmxhZyBSRUFEIGdsb2JhbEZsYWcgV1JJVEUgc2V0R2xvYmFsRmxh
ZykKIHB1YmxpYzoKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlcihXZWJDb3JlOjpEdW1wUmVuZGVy
VHJlZSogZHJ0KTsKQEAgLTIxNiw2ICsyMTcsOCBAQCBwdWJsaWMgc2xvdHM6CiAgICAgLy8gd2hp
Y2ggaXMgYSBNYWMtc3BlY2lmaWMgdGVzdC4KICAgICB2b2lkIGFkZERpc2FsbG93ZWRVUkwoY29u
c3QgUVN0cmluZyYpIHt9CiAKKyAgICBRU3RyaW5nIHBsYXRmb3JtTmFtZSgpOworCiAgICAgdm9p
ZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBh
bHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdh
bW1hLCBkb3VibGUgZ2FtbWEpOwogCiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihp
bnQgY29kZSwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAppbmRleCAyMDg2YWU3Li44
NDFkNmI4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0
Q29udHJvbGxlcldpbi5jcHAKQEAgLTI3MCw2ICsyNzAsMTEgQEAgdW5zaWduZWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OndvcmtlclRocmVhZENvdW50KCkgY29uc3QKICAgICByZXR1cm4gY291bnQ7
CiB9CiAKK0pTU3RyaW5nUmVmIExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybU5hbWUoKSBj
b25zdAoreworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygid2luIik7
Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om5vdGlmeURvbmUoKQogewogICAgIC8v
IFNhbWUgYXMgb24gbWFjLiAgVGhpcyBjYW4gYmUgc2hhcmVkLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRleCA0Yzg5ZmVhLi4z
ODgxYjE4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29u
dHJvbGxlcld4LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29u
dHJvbGxlcld4LmNwcApAQCAtMzA2LDYgKzMwNiwxMSBAQCB1bnNpZ25lZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6d29ya2VyVGhyZWFkQ291bnQoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitK
U1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInd4Iik7Cit9CisKIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJs
ZWQoYm9vbCBmbGFnKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLS0gCjEuNy40LjIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88635</attachid>
            <date>2011-04-07 07:41:56 -0700</date>
            <delta_ts>2011-05-31 10:45:12 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2011-04-07-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>12464</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBlNTUwYTcxMGIxZDMxYmU5NjNjMDZlM2ZmYTAyODc5OGY0NzdjMmU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDcgQXByIDIwMTEgMTU6MTU6MDMgKzAyMDAKU3ViamVjdDogW1BBVENI
XSAyMDExLTA0LTA3ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
CiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIFtHVEtdIFByb3Zp
ZGUgYSB3YXkgaW4gRFJUIHRvIGNoZWNrIHRoZSBwbGF0Zm9ybSBuYW1lCiAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2ODU1CgogICAgICAgIFBhdGNoIGZv
ciBhZGRpbmcgJ3BsYXRmb3JtTmFtZScgc3RhdGljIHByb3BlcnR5IHRvIERSVCdzCiAgICAgICAg
TGF5b3V0Q29udHJvbGxlciBhbmQgcHJvdmlkZSBwbGF0Zm9ybSBzcGVjaWZpYyBpbXBsZW1lbnRh
dGlvbnMuCgogICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDog
TmV3IG1ldGhvZCBwbGF0Zm9ybU5hbWUoKS4KICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcDoKICAgICAgICAoZ2V0UGxhdGZvcm1OYW1lQ2FsbGJhY2spOiBO
ZXcgY2FsbGJhY2sgZm9yICdwbGF0Zm9ybU5hbWUnLgogICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c3RhdGljVmFsdWVzKTogTmV3IHN0YXRpYyBwcm9wZXJ0eS4KCiAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgogICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKTogSW1wbGVtZW50ZWQuCgogICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgogICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKTogSW1wbGVtZW50ZWQuCgogICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDogTmV3IHBy
b3BlcnR5LgogICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwOgogICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRy
b2xsZXIpOiBCaW5kIHRoZSBuZXcKICAgICAgICBwcm9wZXJ0eSAncGxhdGZvcm1OYW1lJy4KICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlc2V0KTogSW5pdGlhbGl6ZSB0aGUgbmV3IG1f
cGxhdGZvcm1OYW1lLAogICAgICAgIHJlYWQgb25seSwgdmFyaWFibGUgdG8gImNocm9taXVtIi4K
CiAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6IE5l
dyBwcm9wZXJ0eSBhbmQKICAgICAgICBhY2Nlc3NvciBtZXRob2QgZm9yICdwbGF0Zm9ybU5hbWUn
LgogICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6
CiAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybU5hbWUpOiBJbXBsZW1lbnRl
ZC4KCiAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwOgogICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKTogSW1wbGVt
ZW50ZWQuCgogICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJX
eC5jcHA6CiAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybU5hbWUpOiBJbXBs
ZW1lbnRlZC4KLS0tCiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMzkgKysrKysrKysrKysrKysrKysrKysKIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcCAgICAgIHwgICAgNyArKysrCiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oICAgICAgICB8ICAgIDQgKystCiAuLi4vY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwICAgICAgICAgICAgICB8ICAgIDMgKysKIC4u
Li9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIHwgICAgMyAr
KwogLi4uL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgfCAg
ICA1ICsrKwogLi4uL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bSAgfCAgICA1ICsrKwogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xs
ZXJRdC5jcHAgfCAgICA1ICsrKwogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENv
bnRyb2xsZXJRdC5oICAgfCAgICAzICsrCiAuLi4vRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRl
c3RDb250cm9sbGVyV2luLmNwcCB8ICAgIDUgKysrCiBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9M
YXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCB8ICAgIDUgKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCA4
MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjZmFjZmZkLi5iODRlMWNkIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAK
KzIwMTEtMDQtMDcgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFBy
b3ZpZGUgYSB3YXkgaW4gRFJUIHRvIGNoZWNrIHRoZSBwbGF0Zm9ybSBuYW1lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Njg1NQorCisgICAgICAgIFBh
dGNoIGZvciBhZGRpbmcgJ3BsYXRmb3JtTmFtZScgc3RhdGljIHByb3BlcnR5IHRvIERSVCdzCisg
ICAgICAgIExheW91dENvbnRyb2xsZXIgYW5kIHByb3ZpZGUgcGxhdGZvcm0gc3BlY2lmaWMgaW1w
bGVtZW50YXRpb25zLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaDogTmV3IG1ldGhvZCBwbGF0Zm9ybU5hbWUoKS4KKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChnZXRQbGF0Zm9ybU5hbWVD
YWxsYmFjayk6IE5ldyBjYWxsYmFjayBmb3IgJ3BsYXRmb3JtTmFtZScuCisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c3RhdGljVmFsdWVzKTogTmV3IHN0YXRpYyBwcm9wZXJ0eS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKTogSW1wbGVtZW50
ZWQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKTogSW1w
bGVtZW50ZWQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oOiBOZXcgcHJvcGVydHkuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKTogQmluZCB0aGUgbmV3CisgICAgICAgIHByb3Bl
cnR5ICdwbGF0Zm9ybU5hbWUnLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlc2V0
KTogSW5pdGlhbGl6ZSB0aGUgbmV3IG1fcGxhdGZvcm1OYW1lLAorICAgICAgICByZWFkIG9ubHks
IHZhcmlhYmxlIHRvICJjaHJvbWl1bSIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6IE5ldyBwcm9wZXJ0eSBhbmQKKyAgICAgICAgYWNjZXNz
b3IgbWV0aG9kIGZvciAncGxhdGZvcm1OYW1lJy4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybU5hbWUpOiBJbXBsZW1lbnRlZC4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKTogSW1wbGVtZW50ZWQuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDoKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybU5hbWUpOiBJbXBsZW1lbnRlZC4KKwogMjAxMS0wNC0w
NyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBFeHRyYWN0
VGVzdFJlc3VsdHNbQW5kTGVha3NdJ3Mgc3VtbWFyaXppbmcgY29kZSBmcm9tIGZpbmlzaGVkKCkg
dG8gY29tbWFuZENvbXBsZXRlKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAppbmRleCAzMTA1Y2U0Li43NDA3ZmRlIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMDg3LDYgKzIwODcsMTIgQEAg
c3RhdGljIEpTVmFsdWVSZWYgZ2V0V29ya2VyVGhyZWFkQ291bnRDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29u
dGV4dCwgY29udHJvbGxlci0+d29ya2VyVGhyZWFkQ291bnQoKSk7CiB9CiAKK3N0YXRpYyBKU1Zh
bHVlUmVmIGdldFBsYXRmb3JtTmFtZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0
YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNP
YmplY3QpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgY29udHJvbGxl
ci0+cGxhdGZvcm1OYW1lKCkpOworfQorCiBzdGF0aWMgYm9vbCBzZXRHbG9iYWxGbGFnQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5n
UmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQogewogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8
TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwpA
QCAtMjE0Niw2ICsyMTUyLDcgQEAgSlNTdGF0aWNWYWx1ZSogTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnN0YXRpY1ZhbHVlcygpCiAgICAgICAgIHsgImdsb2JhbEZsYWciLCBnZXRHbG9iYWxGbGFnQ2Fs
bGJhY2ssIHNldEdsb2JhbEZsYWdDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0s
CiAgICAgICAgIHsgIndlYkhpc3RvcnlJdGVtQ291bnQiLCBnZXRXZWJIaXN0b3J5SXRlbUNvdW50
Q2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAid29ya2VyVGhyZWFkQ291bnQiLCBnZXRX
b3JrZXJUaHJlYWRDb3VudENhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInBsYXRmb3Jt
TmFtZSIsIGdldFBsYXRmb3JtTmFtZUNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgMCwg
MCwgMCwgMCB9CiAgICAgfTsKICAgICByZXR1cm4gc3RhdGljVmFsdWVzOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggYTQyOWRiZi4uYTFhNjA4MCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0xMjgs
NyArMTI4LDkgQEAgcHVibGljOgogICAgIHNpemVfdCB3ZWJIaXN0b3J5SXRlbUNvdW50KCk7CiAg
ICAgdW5zaWduZWQgd29ya2VyVGhyZWFkQ291bnQoKSBjb25zdDsKICAgICBpbnQgd2luZG93Q291
bnQoKTsKLSAgICAKKworICAgIEpTU3RyaW5nUmVmIHBsYXRmb3JtTmFtZSgpIGNvbnN0OworCiAg
ICAgdm9pZCBncmFudERlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uKEpTU3RyaW5nUmVmIG9y
aWdpbik7CiAgICAgYm9vbCBjaGVja0Rlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uKEpTU3Ry
aW5nUmVmIG9yaWdpbik7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBkOTFjZDZlLi41OTFlZThhIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCkBAIC0yMTQsNiArMjE0LDggQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91
dFRlc3RDb250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZFByb3BlcnR5KCJnbG9i
YWxGbGFnIiwgJm1fZ2xvYmFsRmxhZyk7CiAgICAgLy8gd2ViSGlzdG9yeUl0ZW1Db3VudCBpcyB1
c2VkIGJ5IHRlc3RzIGluIExheW91dFRlc3RzXGh0dHBcdGVzdHNcaGlzdG9yeQogICAgIGJpbmRQ
cm9wZXJ0eSgid2ViSGlzdG9yeUl0ZW1Db3VudCIsICZtX3dlYkhpc3RvcnlJdGVtQ291bnQpOwor
ICAgIC8vIHBsYXRmb3JtTmFtZSBpcyB1c2VkIGJ5IHRlc3RzIGluIExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkKKyAgICBiaW5kUHJvcGVydHkoInBsYXRmb3JtTmFtZSIsICZtX3BsYXRmb3JtTmFt
ZSk7CiB9CiAKIExheW91dFRlc3RDb250cm9sbGVyOjp+TGF5b3V0VGVzdENvbnRyb2xsZXIoKQpA
QCAtNTczLDYgKzU3NSw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlc2V0KCkKICAg
ICBtX2RlZmVyTWFpblJlc291cmNlRGF0YUxvYWQgPSB0cnVlOwogICAgIG1fZ2xvYmFsRmxhZy5z
ZXQoZmFsc2UpOwogICAgIG1fd2ViSGlzdG9yeUl0ZW1Db3VudC5zZXQoMCk7CisgICAgbV9wbGF0
Zm9ybU5hbWUuc2V0KCJjaHJvbWl1bSIpOwogICAgIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbiA9
IFdlYlVSTCgpOwogCiAgICAgd2Via2l0X3N1cHBvcnQ6OlNldEFjY2VwdEFsbENvb2tpZXMoZmFs
c2UpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmgKaW5kZXggYTljNmNlNC4uNTk2MjRhMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC01NzQsNiAr
NTc0LDkgQEAgcHJpdmF0ZToKICAgICAvLyBCb3VuZCB2YXJpYWJsZSBjb3VudGluZyB0aGUgbnVt
YmVyIG9mIHRvcCBVUkxzIHZpc2l0ZWQuCiAgICAgQ3BwVmFyaWFudCBtX3dlYkhpc3RvcnlJdGVt
Q291bnQ7CiAKKyAgICAvLyBCb3VuZCB2YXJpYWJsZSBob2xkaW5nIHRoZSBuYW1lIG9mIHRoZSBw
bGF0Zm9ybS4KKyAgICBDcHBWYXJpYW50IG1fcGxhdGZvcm1OYW1lOworCiAgICAgV2ViS2l0OjpX
ZWJVUkwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uOwogCiAgICAgT3duUHRyPFdlYktpdDo6V2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9jaz4gbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVy
R3RrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0
ay5jcHAKaW5kZXggMjk3NDJiZS4uZmE3Mzk5NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC0xODUsNiArMTg1LDEx
IEBAIHVuc2lnbmVkIExheW91dFRlc3RDb250cm9sbGVyOjp3b3JrZXJUaHJlYWRDb3VudCgpIGNv
bnN0CiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6d29ya2VyVGhyZWFkQ291
bnQoKTsKIH0KIAorSlNTdHJpbmdSZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJn
dGsiKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bm90aWZ5RG9uZSgpCiB7CiAg
ICAgaWYgKG1fd2FpdFRvRHVtcCAmJiAhdG9wTG9hZGluZ0ZyYW1lICYmICFXb3JrUXVldWU6OnNo
YXJlZCgpLT5jb3VudCgpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDMyZDA1MzMuLmU4Zjk5MGQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAg
LTMyOCw2ICszMjgsMTEgQEAgdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndvcmtlclRo
cmVhZENvdW50KCkgY29uc3QKICAgICByZXR1cm4gW1dlYldvcmtlcnNQcml2YXRlIHdvcmtlclRo
cmVhZENvdW50XTsKIH0KIAorSlNTdHJpbmdSZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRm
b3JtTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJtYWMiKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bm90aWZ5RG9uZSgp
CiB7CiAgICAgaWYgKG1fd2FpdFRvRHVtcCAmJiAhdG9wTG9hZGluZ0ZyYW1lICYmICFXb3JrUXVl
dWU6OnNoYXJlZCgpLT5jb3VudCgpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRleCBhNThhMTVlLi41NDBlMWVhIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcApA
QCAtNjY2LDYgKzY2NiwxMSBAQCBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndvcmtlclRocmVh
ZENvdW50KCkKICAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OndvcmtlclRocmVh
ZENvdW50KCk7CiB9CiAKK1FTdHJpbmcgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFt
ZSgpCit7CisgICAgcmV0dXJuIFFTdHJpbmcoInF0Iik7Cit9CisKIGludCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKGNvbnN0IFFTdHJpbmcmIGlkLCBmbG9h
dCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQogewogICAgIC8vIElmIG5vIHNpemUgc3BlY2lmaWVkLCB3
ZWJwYWdlIHZpZXdwb3J0IHNpemUgaXMgdXNlZApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCmluZGV4IGYyOTIzM2EuLjE0NjVlYzcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKQEAg
LTU1LDYgKzU1LDcgQEAgY2xhc3MgTGF5b3V0VGVzdENvbnRyb2xsZXIgOiBwdWJsaWMgUU9iamVj
dCB7CiAgICAgUV9PQkpFQ1QKICAgICBRX1BST1BFUlRZKGludCB3ZWJIaXN0b3J5SXRlbUNvdW50
IFJFQUQgd2ViSGlzdG9yeUl0ZW1Db3VudCkKICAgICBRX1BST1BFUlRZKGludCB3b3JrZXJUaHJl
YWRDb3VudCBSRUFEIHdvcmtlclRocmVhZENvdW50KQorICAgIFFfUFJPUEVSVFkoUVN0cmluZyBw
bGF0Zm9ybU5hbWUgUkVBRCBwbGF0Zm9ybU5hbWUpCiAgICAgUV9QUk9QRVJUWShib29sIGdsb2Jh
bEZsYWcgUkVBRCBnbG9iYWxGbGFnIFdSSVRFIHNldEdsb2JhbEZsYWcpCiBwdWJsaWM6CiAgICAg
TGF5b3V0VGVzdENvbnRyb2xsZXIoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWUqIGRydCk7CkBAIC0y
MTYsNiArMjE3LDggQEAgcHVibGljIHNsb3RzOgogICAgIC8vIHdoaWNoIGlzIGEgTWFjLXNwZWNp
ZmljIHRlc3QuCiAgICAgdm9pZCBhZGREaXNhbGxvd2VkVVJMKGNvbnN0IFFTdHJpbmcmKSB7fQog
CisgICAgUVN0cmluZyBwbGF0Zm9ybU5hbWUoKTsKKwogICAgIHZvaWQgc2V0TW9ja0RldmljZU9y
aWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJv
dmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1h
KTsKIAogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIGNvbnN0IFFT
dHJpbmcmIG1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xh
eW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlv
dXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggMjA4NmFlNy4uODQxZDZiOCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3Bw
CkBAIC0yNzAsNiArMjcwLDExIEBAIHVuc2lnbmVkIExheW91dFRlc3RDb250cm9sbGVyOjp3b3Jr
ZXJUaHJlYWRDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIGNvdW50OwogfQogCitKU1N0cmluZ1Jl
ZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIndpbiIpOworfQorCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpub3RpZnlEb25lKCkKIHsKICAgICAvLyBTYW1lIGFzIG9uIG1hYy4g
IFRoaXMgY2FuIGJlIHNoYXJlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4
L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5
b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKaW5kZXggNGM4OWZlYS4uMzg4MWIxOCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKQEAg
LTMwNiw2ICszMDYsMTEgQEAgdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndvcmtlclRo
cmVhZENvdW50KCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAorSlNTdHJpbmdSZWYgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ3eCIpOworfQorCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGJvb2wgZmxhZykKIHsK
ICAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0tIAoxLjcuNC4yCgo=
</data>
<flag name="review"
          id="81175"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95452</attachid>
            <date>2011-05-31 10:45:12 -0700</date>
            <delta_ts>2011-06-03 05:16:42 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2011-05-31-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>12877</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA4ODI3YTBkZDQ2NGRmMDY0ZDNjYmVmZGFjOTg5ODk4YjEwNTI1Y2JiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUdWUsIDMxIE1heSAyMDExIDE2OjUxOjM5ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMS0wNS0zMSAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBQcm92
aWRlIGEgd2F5IGluIERSVCB0byBjaGVjayB0aGUgcGxhdGZvcm0gbmFtZQogICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Njg1NQoKICAgICAgICBQYXRjaCBm
b3IgYWRkaW5nICdwbGF0Zm9ybU5hbWUnIHN0YXRpYyBwcm9wZXJ0eSB0byBEUlQncwogICAgICAg
IExheW91dENvbnRyb2xsZXIgYW5kIHByb3ZpZGUgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50
YXRpb25zLgoKICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6
IE5ldyBtZXRob2QgcGxhdGZvcm1OYW1lKCkuCiAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHA6CiAgICAgICAgKGdldFBsYXRmb3JtTmFtZUNhbGxiYWNrKTog
TmV3IGNhbGxiYWNrIGZvciAncGxhdGZvcm1OYW1lJy4KICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnN0YXRpY1ZhbHVlcyk6IE5ldyBzdGF0aWMgcHJvcGVydHkuCgogICAgICAgICogRHVt
cFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSk6IEltcGxlbWVudGVkLgoKICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSk6IEltcGxlbWVudGVkLgoKICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6IE5ldyBw
cm9wZXJ0eS4KICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcDoKICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250
cm9sbGVyKTogQmluZCB0aGUgbmV3CiAgICAgICAgcHJvcGVydHkgJ3BsYXRmb3JtTmFtZScuCiAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpyZXNldCk6IEluaXRpYWxpemUgdGhlIG5ldyBt
X3BsYXRmb3JtTmFtZSwKICAgICAgICByZWFkIG9ubHksIHZhcmlhYmxlIHRvICJjaHJvbWl1bSIu
CgogICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oOiBO
ZXcgcHJvcGVydHkgYW5kCiAgICAgICAgYWNjZXNzb3IgbWV0aG9kIGZvciAncGxhdGZvcm1OYW1l
Jy4KICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3Bw
OgogICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKTogSW1wbGVtZW50
ZWQuCgogICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2lu
LmNwcDoKICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSk6IEltcGxl
bWVudGVkLgoKICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVy
V3guY3BwOgogICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKTogSW1w
bGVtZW50ZWQuCi0tLQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDM5ICsrKysrKysrKysrKysrKysrKysrCiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgICAgICB8ICAgMTAgKysrKysKIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggICAgICAgIHwgICAgMiArCiAuLi4vY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwICAgICAgICAgICAgICB8ICAgIDMgKysKIC4u
Li9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIHwgICAgMyAr
KwogLi4uL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgfCAg
ICA2ICsrKwogLi4uL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bSAgfCAgICA2ICsrKwogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xs
ZXJRdC5jcHAgfCAgICA1ICsrKwogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENv
bnRyb2xsZXJRdC5oICAgfCAgICAzICsrCiAuLi4vRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRl
c3RDb250cm9sbGVyV2luLmNwcCB8ICAgIDYgKysrCiBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9M
YXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCB8ICAgIDYgKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCA4
OSBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxODkzMDBhLi40ZTAwMThkIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAK
KzIwMTEtMDUtMzEgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFBy
b3ZpZGUgYSB3YXkgaW4gRFJUIHRvIGNoZWNrIHRoZSBwbGF0Zm9ybSBuYW1lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Njg1NQorCisgICAgICAgIFBh
dGNoIGZvciBhZGRpbmcgJ3BsYXRmb3JtTmFtZScgc3RhdGljIHByb3BlcnR5IHRvIERSVCdzCisg
ICAgICAgIExheW91dENvbnRyb2xsZXIgYW5kIHByb3ZpZGUgcGxhdGZvcm0gc3BlY2lmaWMgaW1w
bGVtZW50YXRpb25zLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaDogTmV3IG1ldGhvZCBwbGF0Zm9ybU5hbWUoKS4KKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChnZXRQbGF0Zm9ybU5hbWVD
YWxsYmFjayk6IE5ldyBjYWxsYmFjayBmb3IgJ3BsYXRmb3JtTmFtZScuCisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c3RhdGljVmFsdWVzKTogTmV3IHN0YXRpYyBwcm9wZXJ0eS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKTogSW1wbGVtZW50
ZWQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKTogSW1w
bGVtZW50ZWQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oOiBOZXcgcHJvcGVydHkuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKTogQmluZCB0aGUgbmV3CisgICAgICAgIHByb3Bl
cnR5ICdwbGF0Zm9ybU5hbWUnLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlc2V0
KTogSW5pdGlhbGl6ZSB0aGUgbmV3IG1fcGxhdGZvcm1OYW1lLAorICAgICAgICByZWFkIG9ubHks
IHZhcmlhYmxlIHRvICJjaHJvbWl1bSIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6IE5ldyBwcm9wZXJ0eSBhbmQKKyAgICAgICAgYWNjZXNz
b3IgbWV0aG9kIGZvciAncGxhdGZvcm1OYW1lJy4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybU5hbWUpOiBJbXBsZW1lbnRlZC4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKTogSW1wbGVtZW50ZWQuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDoKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybU5hbWUpOiBJbXBsZW1lbnRlZC4KKwogMjAxMS0wNS0z
MSAgS3Jpc3TDs2YgS29zenR5w7MgIDxLb3N6dHlvLktyaXN0b2ZAc3R1ZC51LXN6ZWdlZC5odT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZDY5ZmViOS4uN2RjOWZj
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApA
QCAtMjE5Miw2ICsyMTkyLDE1IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGdldFdvcmtlclRocmVhZENv
dW50Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmCiAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIGNvbnRyb2xsZXItPndvcmtlclRocmVhZENvdW50
KCkpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBnZXRQbGF0Zm9ybU5hbWVDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IHBsYXRmb3JtTmFtZShjb250cm9sbGVyLT5wbGF0Zm9ybU5hbWUoKSk7CisgICAgaWYgKCFw
bGF0Zm9ybU5hbWUuZ2V0KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgcGxhdGZvcm1O
YW1lLmdldCgpKTsKK30KKwogc3RhdGljIGJvb2wgc2V0R2xvYmFsRmxhZ0NhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAg
ICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRl
c3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTIyNTEs
NiArMjI2MCw3IEBAIEpTU3RhdGljVmFsdWUqIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNW
YWx1ZXMoKQogICAgICAgICB7ICJnbG9iYWxGbGFnIiwgZ2V0R2xvYmFsRmxhZ0NhbGxiYWNrLCBz
ZXRHbG9iYWxGbGFnQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAogICAgICAg
ICB7ICJ3ZWJIaXN0b3J5SXRlbUNvdW50IiwgZ2V0V2ViSGlzdG9yeUl0ZW1Db3VudENhbGxiYWNr
LCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgIndvcmtlclRocmVhZENvdW50IiwgZ2V0V29ya2VyVGhy
ZWFkQ291bnRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJwbGF0Zm9ybU5hbWUiLCBn
ZXRQbGF0Zm9ybU5hbWVDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7IDAsIDAsIDAsIDAg
fQogICAgIH07CiAgICAgcmV0dXJuIHN0YXRpY1ZhbHVlczsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IGIwOTkzYzcuLjRjOTkzN2YgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMTM5LDYgKzEzOSw4
IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCB3b3JrZXJUaHJlYWRDb3VudCgpIGNvbnN0OwogICAg
IGludCB3aW5kb3dDb3VudCgpOwogICAgIAorICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBw
bGF0Zm9ybU5hbWUoKSBjb25zdDsKKwogICAgIHZvaWQgZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9u
UGVybWlzc2lvbihKU1N0cmluZ1JlZiBvcmlnaW4pOwogICAgIGJvb2wgY2hlY2tEZXNrdG9wTm90
aWZpY2F0aW9uUGVybWlzc2lvbihKU1N0cmluZ1JlZiBvcmlnaW4pOwogCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggZjEzOGU0MC4uMTM3OWViNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMjI3LDYgKzIyNyw4IEBAIExh
eW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcihUZXN0U2hlbGwqIHNoZWxs
KQogICAgIC8vIHdlYkhpc3RvcnlJdGVtQ291bnQgaXMgdXNlZCBieSB0ZXN0cyBpbiBMYXlvdXRU
ZXN0c1xodHRwXHRlc3RzXGhpc3RvcnkKICAgICBiaW5kUHJvcGVydHkoIndlYkhpc3RvcnlJdGVt
Q291bnQiLCAmbV93ZWJIaXN0b3J5SXRlbUNvdW50KTsKICAgICBiaW5kUHJvcGVydHkoInRpdGxl
VGV4dERpcmVjdGlvbiIsICZtX3RpdGxlVGV4dERpcmVjdGlvbik7CisgICAgLy8gcGxhdGZvcm1O
YW1lIGlzIHVzZWQgYnkgdGVzdHMgaW4gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eQorICAgIGJp
bmRQcm9wZXJ0eSgicGxhdGZvcm1OYW1lIiwgJm1fcGxhdGZvcm1OYW1lKTsKIH0KIAogTGF5b3V0
VGVzdENvbnRyb2xsZXI6On5MYXlvdXRUZXN0Q29udHJvbGxlcigpCkBAIC01OTEsNiArNTkzLDcg
QEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVzZXQoKQogICAgIG1fZ2xvYmFsRmxhZy5z
ZXQoZmFsc2UpOwogICAgIG1fd2ViSGlzdG9yeUl0ZW1Db3VudC5zZXQoMCk7CiAgICAgbV90aXRs
ZVRleHREaXJlY3Rpb24uc2V0KCJsdHIiKTsKKyAgICBtX3BsYXRmb3JtTmFtZS5zZXQoImNocm9t
aXVtIik7CiAgICAgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uID0gV2ViVVJMKCk7CiAKICAgICB3
ZWJraXRfc3VwcG9ydDo6U2V0QWNjZXB0QWxsQ29va2llcyhmYWxzZSk7CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA5
YjE3MTBmLi4yNzRjNTM0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTU5Niw2ICs1OTYsOSBAQCBwcml2YXRlOgog
ICAgIC8vIEJvdW5kIHZhcmlhYmxlIHRyYWNraW5nIHRoZSBkaXJlY3Rpb25hbGl0eSBvZiB0aGUg
PHRpdGxlPiB0YWcuCiAgICAgQ3BwVmFyaWFudCBtX3RpdGxlVGV4dERpcmVjdGlvbjsKIAorICAg
IC8vIEJvdW5kIHZhcmlhYmxlIGhvbGRpbmcgdGhlIG5hbWUgb2YgdGhlIHBsYXRmb3JtLgorICAg
IENwcFZhcmlhbnQgbV9wbGF0Zm9ybU5hbWU7CisKICAgICBXZWJLaXQ6OldlYlVSTCBtX3VzZXJT
dHlsZVNoZWV0TG9jYXRpb247CiAKICAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrPiBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2s7CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCAz
OTEyNjFlLi5lZDUzOTk0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5
b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9M
YXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTE4NSw2ICsxODUsMTIgQEAgdW5zaWduZWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OndvcmtlclRocmVhZENvdW50KCkgY29uc3QKICAgICByZXR1
cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjp3b3JrZXJUaHJlYWRDb3VudCgpOwogfQogCitK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFt
ZSgpIGNvbnN0Cit7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBsYXRmb3JtTmFtZShB
ZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImd0ayIpKTsKKyAgICByZXR1cm4g
cGxhdGZvcm1OYW1lOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpub3RpZnlEb25l
KCkKIHsKICAgICBpZiAobV93YWl0VG9EdW1wICYmICF0b3BMb2FkaW5nRnJhbWUgJiYgIVdvcmtR
dWV1ZTo6c2hhcmVkKCktPmNvdW50KCkpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggNjVlZGMxYS4uOWNjOGU4NSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFj
Lm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1h
Yy5tbQpAQCAtMzUyLDYgKzM1MiwxMiBAQCB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
d29ya2VyVGhyZWFkQ291bnQoKSBjb25zdAogICAgIHJldHVybiBbV2ViV29ya2Vyc1ByaXZhdGUg
d29ya2VyVGhyZWFkQ291bnRdOwogfQogCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgpIGNvbnN0Cit7CisgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IHBsYXRmb3JtTmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIm1hYyIpKTsKKyAgICByZXR1cm4gcGxhdGZvcm1OYW1lOworfQorCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpub3RpZnlEb25lKCkKIHsKICAgICBpZiAobV93YWl0VG9EdW1wICYm
ICF0b3BMb2FkaW5nRnJhbWUgJiYgIVdvcmtRdWV1ZTo6c2hhcmVkKCktPmNvdW50KCkpCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmlu
ZGV4IGZmM2VkMzMuLmY2MmZmZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC02OTgsNiArNjk4LDExIEBAIGludCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6d29ya2VyVGhyZWFkQ291bnQoKQogICAgIHJldHVybiBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6d29ya2VyVGhyZWFkQ291bnQoKTsKIH0KIAorUVN0cmluZyBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkKK3sKKyAgICByZXR1cm4gUVN0cmluZygi
cXQiKTsKK30KKwogaW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVu
dEJ5SWQoY29uc3QgUVN0cmluZyYgaWQsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCiB7CiAg
ICAgLy8gSWYgbm8gc2l6ZSBzcGVjaWZpZWQsIHdlYnBhZ2Ugdmlld3BvcnQgc2l6ZSBpcyB1c2Vk
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgK
aW5kZXggOTlkMDRmMy4uZWE5OWM4MyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApAQCAtNTUsNiArNTUsNyBAQCBjbGFzcyBMYXlvdXRU
ZXN0Q29udHJvbGxlciA6IHB1YmxpYyBRT2JqZWN0IHsKICAgICBRX09CSkVDVAogICAgIFFfUFJP
UEVSVFkoaW50IHdlYkhpc3RvcnlJdGVtQ291bnQgUkVBRCB3ZWJIaXN0b3J5SXRlbUNvdW50KQog
ICAgIFFfUFJPUEVSVFkoaW50IHdvcmtlclRocmVhZENvdW50IFJFQUQgd29ya2VyVGhyZWFkQ291
bnQpCisgICAgUV9QUk9QRVJUWShRU3RyaW5nIHBsYXRmb3JtTmFtZSBSRUFEIHBsYXRmb3JtTmFt
ZSkKICAgICBRX1BST1BFUlRZKGJvb2wgZ2xvYmFsRmxhZyBSRUFEIGdsb2JhbEZsYWcgV1JJVEUg
c2V0R2xvYmFsRmxhZykKIHB1YmxpYzoKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlcihXZWJDb3Jl
OjpEdW1wUmVuZGVyVHJlZSogZHJ0KTsKQEAgLTIyMSw2ICsyMjIsOCBAQCBwdWJsaWMgc2xvdHM6
CiAgICAgLy8gd2hpY2ggaXMgYSBNYWMtc3BlY2lmaWMgdGVzdC4KICAgICB2b2lkIGFkZERpc2Fs
bG93ZWRVUkwoY29uc3QgUVN0cmluZyYpIHt9CiAKKyAgICBRU3RyaW5nIHBsYXRmb3JtTmFtZSgp
OworCiAgICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxw
aGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wg
Y2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogCiAgICAgdm9pZCBzZXRNb2NrR2VvbG9j
YXRpb25FcnJvcihpbnQgY29kZSwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSk7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAppbmRl
eCA2YTVlN2YwLi44NzY1ZTYxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
TGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKQEAgLTI5Nyw2ICsyOTcsMTIgQEAgdW5zaWdu
ZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndvcmtlclRocmVhZENvdW50KCkgY29uc3QKICAgICBy
ZXR1cm4gY291bnQ7CiB9CiAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkgY29uc3QKK3sKKyAgICBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gcGxhdGZvcm1OYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
d2luIikpOworICAgIHJldHVybiBwbGF0Zm9ybU5hbWU7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6Om5vdGlmeURvbmUoKQogewogICAgIC8vIFNhbWUgYXMgb24gbWFjLiAgVGhpcyBj
YW4gYmUgc2hhcmVkLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0
VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0
Q29udHJvbGxlcld4LmNwcAppbmRleCAzZGJjYjlhLi43YzRhZmUyIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcApAQCAtMzI5LDYg
KzMyOSwxMiBAQCB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d29ya2VyVGhyZWFkQ291
bnQoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgpIGNvbnN0Cit7CisgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IHBsYXRmb3JtTmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoInd4IikpOworICAgIHJldHVybiBwbGF0Zm9ybU5hbWU7Cit9CisKIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQo
Ym9vbCBmbGFnKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLS0gCjEuNy41LjIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95894</attachid>
            <date>2011-06-03 05:16:11 -0700</date>
            <delta_ts>2011-06-08 15:55:22 -0700</delta_ts>
            <desc>Patch proposal + Layout test</desc>
            <filename>0001-2011-06-03-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>12259</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBjNzE5MmMwNjA3ZDE2YjgyMzY3NGMxMmU1YmE1ZjI0ODllMDUwYzljIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUdWUsIDMxIE1heSAyMDExIDE2OjUxOjM5ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMS0wNi0wMyAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBQcm92
aWRlIGEgd2F5IGluIERSVCB0byBjaGVjayB0aGUgcGxhdGZvcm0gbmFtZQogICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Njg1NQoKICAgICAgICBQYXRjaCBm
b3IgYWRkaW5nICdwbGF0Zm9ybU5hbWUnIHN0YXRpYyBwcm9wZXJ0eSB0byBEUlQncwogICAgICAg
IExheW91dENvbnRyb2xsZXIgYW5kIHByb3ZpZGUgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50
YXRpb25zLgoKICAgICAgICBJbiBwcmluY2lwbGUsIHRoaXMgZmVhdHVyZSB3aWxsIGJlIG9ubHkg
b2YgaW50ZXJlc3QgZm9yIHdyaXRpbmcKICAgICAgICBhY2Nlc3NpYmlsaXR5IHRlc3RzLCBzbyB0
aGF0J3Mgd2h5IGl0J3Mgb25seSBpbXBsZW1lbnRlZCBpbiB0aGUKICAgICAgICBNYWMsIEd0ayBh
bmQgV2luIHBsYXRmb3Jtcy4KCiAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oOiBOZXcgbWV0aG9kIHBsYXRmb3JtTmFtZSgpLgogICAgICAgICogRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgogICAgICAgIChnZXRQbGF0Zm9ybU5hbWVD
YWxsYmFjayk6IE5ldyBjYWxsYmFjayBmb3IgJ3BsYXRmb3JtTmFtZScuCiAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpzdGF0aWNWYWx1ZXMpOiBOZXcgc3RhdGljIHByb3BlcnR5LgoKICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CiAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybU5hbWUpOiBJbXBsZW1lbnRlZC4K
CiAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06
CiAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybU5hbWUpOiBJbXBsZW1lbnRl
ZC4KCiAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwOgogICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKTogSW1wbGVt
ZW50ZWQuCgoyMDExLTA2LTAzICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlh
LmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIFtHVEtd
IFByb3ZpZGUgYSB3YXkgaW4gRFJUIHRvIGNoZWNrIHRoZSBwbGF0Zm9ybSBuYW1lCiAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2ODU1CgogICAgICAgIE5l
dyBsYXlvdXQgdGVzdCBhbmQgZXhwZWN0ZWQgcmVzdWx0cyB0byBjaGVjayB0aGUgbmV3IGZ1bmN0
aW9uLgoKICAgICAgICAqIGFjY2Vzc2liaWxpdHkvcGxhdGZvcm0tbmFtZS5odG1sOiBBZGRlZC4K
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3BsYXRmb3JtLW5hbWUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3BsYXRm
b3JtLW5hbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KICAgICAgICAqIHBsYXRmb3JtL3dpbi9hY2Nl
c3NpYmlsaXR5L3BsYXRmb3JtLW5hbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KLS0tCiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTQgKysrKysr
KysrKwogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wbGF0Zm9ybS1uYW1lLmh0bWwgICAgICAg
fCAgIDI0ICsrKysrKysrKysrKysrKysrCiAuLi4vZ3RrL2FjY2Vzc2liaWxpdHkvcGxhdGZvcm0t
bmFtZS1leHBlY3RlZC50eHQgICB8ICAgMTAgKysrKysrKwogLi4uL21hYy9hY2Nlc3NpYmlsaXR5
L3BsYXRmb3JtLW5hbWUtZXhwZWN0ZWQudHh0ICAgfCAgIDEwICsrKysrKysKIC4uLi93aW4vYWNj
ZXNzaWJpbGl0eS9wbGF0Zm9ybS1uYW1lLWV4cGVjdGVkLnR4dCAgIHwgICAxMCArKysrKysrCiBU
b29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjgg
KysrKysrKysrKysrKysrKysrKysKIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcCAgICAgIHwgICAxNCArKysrKysrKysrCiBUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oICAgICAgICB8ICAgIDQgKysrCiAuLi4vRHVtcFJlbmRlclRy
ZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCB8ICAgIDYgKysrKwogLi4uL0R1bXBS
ZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSAgfCAgICA2ICsrKysKIC4u
Li9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIHwgICAgNiAr
KysrCiAxMSBmaWxlcyBjaGFuZ2VkLCAxMzIgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BsYXRmb3JtLW5h
bWUuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nl
c3NpYmlsaXR5L3BsYXRmb3JtLW5hbWUtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcGxhdGZvcm0tbmFtZS1leHBl
Y3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vYWNj
ZXNzaWJpbGl0eS9wbGF0Zm9ybS1uYW1lLWV4cGVjdGVkLnR4dAoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmMDUyOTM0Li5i
MDk2NjE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDYtMDMgIE1hcmlvIFNhbmNoZXog
UHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFByb3ZpZGUgYSB3YXkgaW4gRFJUIHRvIGNoZWNr
IHRoZSBwbGF0Zm9ybSBuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01Njg1NQorCisgICAgICAgIE5ldyBsYXlvdXQgdGVzdCBhbmQgZXhwZWN0ZWQg
cmVzdWx0cyB0byBjaGVjayB0aGUgbmV3IGZ1bmN0aW9uLgorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9wbGF0Zm9ybS1uYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9h
Y2Nlc3NpYmlsaXR5L3BsYXRmb3JtLW5hbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wbGF0Zm9ybS1uYW1lLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd2luL2FjY2Vzc2liaWxpdHkvcGxhdGZvcm0tbmFt
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDExLTA2LTAzICBDc2FiYSBPc3p0cm9nb27DoWMg
IDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtXSzJdIFVwZGF0ZSBwbGF0Zm9ybSBz
cGVjaWZpYyBleHBlY3RlZCBmaWxlIGFmdGVyIHI4Nzg3My4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvcGxhdGZvcm0tbmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9wbGF0Zm9ybS1uYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uY2Y2ZDViZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvcGxhdGZvcm0tbmFtZS5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQ+Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRl
c3QganVzdCBwcmludHMgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgcGxhdGZvcm0uIik7CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKworICBkZWJ1ZygiUGxhdGZvcm0gbmFtZTogIiArIGxheW91dFRlc3RDb250
cm9sbGVyLnBsYXRmb3JtTmFtZSk7Cit9CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3BsYXRmb3JtLW5hbWUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvcGxhdGZvcm0tbmFtZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg3NDI4NwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L3BsYXRm
b3JtLW5hbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCBqdXN0IHBy
aW50cyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBwbGF0Zm9ybS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BsYXRmb3JtIG5hbWU6IGd0aworUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3BsYXRmb3JtLW5hbWUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcGxhdGZvcm0tbmFtZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlhYWUyMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3BsYXRm
b3JtLW5hbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCBqdXN0IHBy
aW50cyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBwbGF0Zm9ybS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BsYXRmb3JtIG5hbWU6IG1hYworUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9hY2Nlc3NpYmlsaXR5L3BsYXRmb3JtLW5hbWUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL2FjY2Vzc2liaWxpdHkvcGxhdGZvcm0tbmFtZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VlZDFiNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9hY2Nlc3NpYmlsaXR5L3BsYXRm
b3JtLW5hbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCBqdXN0IHBy
aW50cyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBwbGF0Zm9ybS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BsYXRmb3JtIG5hbWU6IHdpbgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2YzNjZjViLi41YzU3ZmRhIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIw
MTEtMDYtMDMgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFByb3Zp
ZGUgYSB3YXkgaW4gRFJUIHRvIGNoZWNrIHRoZSBwbGF0Zm9ybSBuYW1lCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Njg1NQorCisgICAgICAgIFBhdGNo
IGZvciBhZGRpbmcgJ3BsYXRmb3JtTmFtZScgc3RhdGljIHByb3BlcnR5IHRvIERSVCdzCisgICAg
ICAgIExheW91dENvbnRyb2xsZXIgYW5kIHByb3ZpZGUgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVt
ZW50YXRpb25zLgorCisgICAgICAgIEluIHByaW5jaXBsZSwgdGhpcyBmZWF0dXJlIHdpbGwgYmUg
b25seSBvZiBpbnRlcmVzdCBmb3Igd3JpdGluZworICAgICAgICBhY2Nlc3NpYmlsaXR5IHRlc3Rz
LCBzbyB0aGF0J3Mgd2h5IGl0J3Mgb25seSBpbXBsZW1lbnRlZCBpbiB0aGUKKyAgICAgICAgTWFj
LCBHdGsgYW5kIFdpbiBwbGF0Zm9ybXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oOiBOZXcgbWV0aG9kIHBsYXRmb3JtTmFtZSgpLgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKGdldFBs
YXRmb3JtTmFtZUNhbGxiYWNrKTogTmV3IGNhbGxiYWNrIGZvciAncGxhdGZvcm1OYW1lJy4KKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNWYWx1ZXMpOiBOZXcgc3RhdGljIHBy
b3BlcnR5LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9s
bGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybU5hbWUp
OiBJbXBsZW1lbnRlZC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0
Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bU5hbWUpOiBJbXBsZW1lbnRlZC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlv
dXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
cGxhdGZvcm1OYW1lKTogSW1wbGVtZW50ZWQuCisKIDIwMTEtMDYtMDIgIERpcmsgUHJhbmtlICA8
ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCAz
ZjFiY2FjLi4yZDE1N2E5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwCkBAIC0yMTkyLDYgKzIxOTIsMTcgQEAgc3RhdGljIEpTVmFsdWVSZWYgZ2V0
V29ya2VyVGhyZWFkQ291bnRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgY29udHJvbGxlci0+d29y
a2VyVGhyZWFkQ291bnQoKSk7CiB9CiAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEdU
SykgfHwgUExBVEZPUk0oV0lOKQorc3RhdGljIEpTVmFsdWVSZWYgZ2V0UGxhdGZvcm1OYW1lQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3Ry
aW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIExheW91
dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRy
b2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBwbGF0Zm9ybU5hbWUoY29udHJvbGxlci0+cGxhdGZvcm1OYW1lKCkpOwor
ICAgIGlmICghcGxhdGZvcm1OYW1lLmdldCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQs
IHBsYXRmb3JtTmFtZS5nZXQoKSk7Cit9CisjZW5kaWYKKwogc3RhdGljIGJvb2wgc2V0R2xvYmFs
RmxhZ0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKIHsKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0
YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNP
YmplY3QpKTsKQEAgLTIyNjIsNiArMjI3Myw5IEBAIEpTU3RhdGljVmFsdWUqIExheW91dFRlc3RD
b250cm9sbGVyOjpzdGF0aWNWYWx1ZXMoKQogICAgICAgICB7ICJnbG9iYWxGbGFnIiwgZ2V0R2xv
YmFsRmxhZ0NhbGxiYWNrLCBzZXRHbG9iYWxGbGFnQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlTm9uZSB9LAogICAgICAgICB7ICJ3ZWJIaXN0b3J5SXRlbUNvdW50IiwgZ2V0V2ViSGlzdG9y
eUl0ZW1Db3VudENhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIndvcmtlclRocmVhZENv
dW50IiwgZ2V0V29ya2VyVGhyZWFkQ291bnRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pCisgICAgICAgIHsgInBs
YXRmb3JtTmFtZSIsIGdldFBsYXRmb3JtTmFtZUNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisjZW5kaWYK
ICAgICAgICAgeyAwLCAwLCAwLCAwIH0KICAgICB9OwogICAgIHJldHVybiBzdGF0aWNWYWx1ZXM7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCAxMWM1
NmI4Li5jMzY3NDQ1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmgKQEAgLTEzOSw2ICsxMzksMTAgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHdvcmtlclRo
cmVhZENvdW50KCkgY29uc3Q7CiAgICAgaW50IHdpbmRvd0NvdW50KCk7CiAgICAgCisjaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikKKyAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gcGxhdGZvcm1OYW1lKCkgY29uc3Q7CisjZW5kaWYKKwogICAgIHZv
aWQgZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbihKU1N0cmluZ1JlZiBvcmlnaW4p
OwogICAgIGJvb2wgY2hlY2tEZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbihKU1N0cmluZ1Jl
ZiBvcmlnaW4pOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0
VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcAppbmRleCBlZTQ0MzY4Li5hZGQwNjIwIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAg
LTE4NSw2ICsxODUsMTIgQEAgdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndvcmtlclRo
cmVhZENvdW50KCkgY29uc3QKICAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjp3
b3JrZXJUaHJlYWRDb3VudCgpOwogfQogCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgpIGNvbnN0Cit7CisgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IHBsYXRmb3JtTmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoImd0ayIpKTsKKyAgICByZXR1cm4gcGxhdGZvcm1OYW1lOworfQorCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpub3RpZnlEb25lKCkKIHsKICAgICBpZiAobV93YWl0VG9EdW1wICYm
ICF0b3BMb2FkaW5nRnJhbWUgJiYgIVdvcmtRdWV1ZTo6c2hhcmVkKCktPmNvdW50KCkpCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0K
aW5kZXggMDE0Y2RlYi4uNDkzMDk2NTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTM1Miw2ICszNTIsMTIgQEAgdW5z
aWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndvcmtlclRocmVhZENvdW50KCkgY29uc3QKICAg
ICByZXR1cm4gW1dlYldvcmtlcnNQcml2YXRlIHdvcmtlclRocmVhZENvdW50XTsKIH0KIAorSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybU5hbWUo
KSBjb25zdAoreworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwbGF0Zm9ybU5hbWUoQWRv
cHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJtYWMiKSk7CisgICAgcmV0dXJuIHBs
YXRmb3JtTmFtZTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bm90aWZ5RG9uZSgp
CiB7CiAgICAgaWYgKG1fd2FpdFRvRHVtcCAmJiAhdG9wTG9hZGluZ0ZyYW1lICYmICFXb3JrUXVl
dWU6OnNoYXJlZCgpLT5jb3VudCgpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggZjZmNjY4OS4uNDg0ZDQxOSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2lu
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJX
aW4uY3BwCkBAIC0yOTcsNiArMjk3LDEyIEBAIHVuc2lnbmVkIExheW91dFRlc3RDb250cm9sbGVy
Ojp3b3JrZXJUaHJlYWRDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIGNvdW50OwogfQogCitKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgp
IGNvbnN0Cit7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBsYXRmb3JtTmFtZShBZG9w
dCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIndpbiIpKTsKKyAgICByZXR1cm4gcGxh
dGZvcm1OYW1lOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpub3RpZnlEb25lKCkK
IHsKICAgICAvLyBTYW1lIGFzIG9uIG1hYy4gIFRoaXMgY2FuIGJlIHNoYXJlZC4KLS0gCjEuNy41
LjIKCg==
</data>
<flag name="review"
          id="89479"
          type_id="1"
          status="+"
          setter="cfleizach"
    />
          </attachment>
      

    </bug>

</bugzilla>