<?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>103581</bug_id>
          
          <creation_ts>2012-11-28 17:21:47 -0800</creation_ts>
          <short_desc>run-perf-tests --chromium-android should not require adb in my path</short_desc>
          <delta_ts>2012-11-30 14:22:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Peter Beverloo">peter</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>peter</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>778522</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-28 17:21:47 -0800</bug_when>
    <thetext>run-perf-tests --chromium-android should not require adb in my path

If you don&apos;t have adb in your path it barfs:

Running 1 tests
Traceback (most recent call last):
  File &quot;/src/WebKit/Tools/Scripts/run-perf-tests&quot;, line 40, in &lt;module&gt;
    sys.exit(PerfTestsRunner().run())
  File &quot;/src/WebKit/Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py&quot;, line 187, in run
    unexpected = self._run_tests_set(sorted(list(tests), key=lambda test: test.test_name()), self._port)
  File &quot;/src/WebKit/Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py&quot;, line 318, in _run_tests_set
    driver = port.create_driver(worker_number=0, no_timeout=True)
  File &quot;/src/WebKit/Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py&quot;, line 257, in create_driver
    no_timeout=True)
  File &quot;/src/WebKit/Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py&quot;, line 340, in __init__
    self._device_serial = port._get_device_serial(worker_number)
  File &quot;/src/WebKit/Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py&quot;, line 322, in _get_device_serial
    devices = self._get_devices()
  File &quot;/src/WebKit/Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py&quot;, line 315, in _get_devices
    result = self._executive.run_command([&apos;adb&apos;, &apos;devices&apos;], error_handler=self._executive.ignore_error)
  File &quot;/src/WebKit/Tools/Scripts/webkitpy/common/system/executive.py&quot;, line 405, in run_command
    close_fds=self._should_close_fds())
  File &quot;/src/WebKit/Tools/Scripts/webkitpy/common/system/executive.py&quot;, line 461, in popen
    return subprocess.Popen(*args, **kwargs)
  File &quot;/usr/lib/python2.7/subprocess.py&quot;, line 679, in __init__
OSError: [Errno 2] No such file or directory
Exception AttributeError: &quot;&apos;ChromiumAndroidDriver&apos; object has no attribute &apos;_device_serial&apos;&quot; in &lt;bound method ChromiumAndroidDriver.__del__ of &lt;webkitpy.layout_tests.port.chromium_android.ChromiumAndroidDriver object at 0x1198150&gt;&gt; ignored


run-webkit-tests --chromium-android barfs as well, probably for the same reason (it just barfs before logging is set up):

%run-webkit-tests --chromium-android

OSError raised: [Errno 2] No such file or directory
No handlers could be found for logger &quot;__main__&quot;
Failed to execute Tools/Scripts/new-run-webkit-tests at /src/WebKit/Tools/Scripts/run-webkit-tests line 126.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778526</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-28 17:23:48 -0800</bug_when>
    <thetext>Yup.  Adding adb to my path fixes both. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778558</commentid>
    <comment_count>2</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-11-28 17:53:24 -0800</bug_when>
    <thetext>The &quot;adb&quot; tool is available in Source/WebKit/chromium/third_party/android_tools/sdk/ for Chromium-Android checkouts. I agree that we should get rid of this.

We can add an _path_to_adb() method to ChromiumAndroidPort and use this both for ChromiumAndroidPort._get_devices() and for ChromiumAndroidDriver.__init__ (for self._adb_command).

run-api-tests and run-chromium-webkit-unit-tests have the same dependency right now. There, we may have to set the PATH variable before invoking Chromium&apos;s run_tests.py.

Not sure if you&apos;re going to work on this, otherwise I&apos;ll upload a patch tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778740</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-28 23:47:18 -0800</bug_when>
    <thetext>Please, consider it all yours. :)  I have my hands full trying to get --profile to be more user friendly. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778981</commentid>
    <comment_count>4</comment_count>
      <attachid>176722</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-11-29 07:02:36 -0800</bug_when>
    <thetext>Created attachment 176722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778983</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 07:05:23 -0800</bug_when>
    <thetext>Attachment 176722 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1
Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:267:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:273:  trailing whitespace  [pep8/W291] [5]
Total errors found: 2 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778987</commentid>
    <comment_count>6</comment_count>
      <attachid>176725</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-11-29 07:11:45 -0800</bug_when>
    <thetext>Created attachment 176725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778996</commentid>
    <comment_count>7</comment_count>
      <attachid>176725</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-29 07:23:18 -0800</bug_when>
    <thetext>Comment on attachment 176725
Patch

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

Lgtm

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:272
&gt; +        assert provided_version, &apos;Please be sure to have a Chromium-Android check-out before running layout tests.&apos;

I might say something like: path/to/adb is missing.  Are you sure you ran update-webkit --chromium-android?

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:274
&gt; +        if not path_version or provided_version &gt; path_version:

You might log in this rare case.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:331
&gt; +        try:

This try is redundant. Also I think you can pass ignore_error=true instead of having to dig up a handler function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779072</commentid>
    <comment_count>8</comment_count>
      <attachid>176746</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-11-29 09:16:44 -0800</bug_when>
    <thetext>Created attachment 176746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779078</commentid>
    <comment_count>9</comment_count>
      <attachid>176725</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-11-29 09:19:40 -0800</bug_when>
    <thetext>Comment on attachment 176725
Patch

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

Thanks Eric!

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:272
&gt;&gt; +        assert provided_version, &apos;Please be sure to have a Chromium-Android check-out before running layout tests.&apos;
&gt; 
&gt; I might say something like: path/to/adb is missing.  Are you sure you ran update-webkit --chromium-android?

Done.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:274
&gt;&gt; +        if not path_version or provided_version &gt; path_version:
&gt; 
&gt; You might log in this rare case.

Done. I made an if/elif/else out of this.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:331
&gt;&gt; +        try:
&gt; 
&gt; This try is redundant. Also I think you can pass ignore_error=true instead of having to dig up a handler function

This is an exception, so it wouldn&apos;t be caught by the error_handler (which happens after running the command if the exit code != 0). I changed line 333 to only listen to OSError exceptions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779081</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 09:21:32 -0800</bug_when>
    <thetext>Attachment 176746 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1
Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:277:  [ChromiumAndroidPort.path_to_adb] Undefined variable &apos;log&apos;  [pylint/E0602] [5]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779116</commentid>
    <comment_count>11</comment_count>
      <attachid>176746</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-11-29 09:42:57 -0800</bug_when>
    <thetext>Comment on attachment 176746
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:277
&gt;&gt; +            log._warning(&apos;The &quot;adb&quot; version in your path is older than the one checked in, consider updating your local Android SDK. Using the checked in one.&apos;)
&gt; 
&gt; [ChromiumAndroidPort.path_to_adb] Undefined variable &apos;log&apos;  [pylint/E0602] [5]

Hm. Bad. Sorry..

It seems to execute this code twice, the first time of which (as first line of output of new-run-webkit-tests) I&apos;m getting this error:

$ Tools/Scripts/new-run-webkit-tests --chromium-android fast/text/shaping
No handlers could be found for logger &quot;webkitpy.layout_tests.port.chromium_android&quot;

This is because it&apos;s executed in run_webkit_tests._set_up_derived_options() as the default value for the number of child processes. This is *before* we attach the printer, which in turn creates a MeteredStream that registers to the logger as the handler.

checking for len(_log.handlers) doesn&apos;t work either. I&apos;ll try to find a fix for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779121</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-29 09:58:44 -0800</bug_when>
    <thetext>dpranke may know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779128</commentid>
    <comment_count>13</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-11-29 10:11:30 -0800</bug_when>
    <thetext>It turns out that the Mac port has exactly the same issue, and included a FIXME (see Tools/Scripts/webkitpy/layout_tests/port/mac.py).

# FIXME: The Printer isn&apos;t initialized when this is called, so using _log would just show an unitialized logger error.

As it&apos;s a more common problem we should definitely fix it, but depending on the scope it may be better as a bug of its own.

I am going to change the _adb_path as a static variable on the ChromiumAndroidPort. We construct a Port() object once for the whole test-run, and then another one for each worker in Worker.start(). Currently, this would determine the adb path and potentially output the message N+1 times (where N is the amount of workers).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779136</commentid>
    <comment_count>14</comment_count>
      <attachid>176753</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-11-29 10:18:29 -0800</bug_when>
    <thetext>Created attachment 176753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779141</commentid>
    <comment_count>15</comment_count>
      <attachid>176753</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-29 10:20:50 -0800</bug_when>
    <thetext>Comment on attachment 176753
Patch

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

LGTM.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:35
&gt; +import sys

It&apos;s sad to add this, but I understand why you are.  We&apos;ve been slowly removing all most os and sys imports to allow for easy mocking/testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779201</commentid>
    <comment_count>16</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-29 11:01:32 -0800</bug_when>
    <thetext>There used to be a reason why we couldn&apos;t initialize the printer object (and logging) until after setup_derived_options, but that stopped being true a while ago; I&apos;ve just never gotten around to flipping the order of the two calls. Fix that and your sys.stderr can go away (as well as a few other hacks scattered here and there), but I&apos;d do that in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779327</commentid>
    <comment_count>17</comment_count>
      <attachid>176753</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-11-29 12:31:14 -0800</bug_when>
    <thetext>Comment on attachment 176753
Patch

Ok, I&apos;ll follow up on that. Putting this on the queue. I&apos;ll address being able to run webkit_unit_tests and TestWebKitAPI without adb in your path on the Chromium side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779389</commentid>
    <comment_count>18</comment_count>
      <attachid>176753</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 13:28:22 -0800</bug_when>
    <thetext>Comment on attachment 176753
Patch

Clearing flags on attachment: 176753

Committed r136158: &lt;http://trac.webkit.org/changeset/136158&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779390</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 13:28:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779699</commentid>
    <comment_count>20</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-29 18:16:21 -0800</bug_when>
    <thetext>Note that this change broke the python unit tests for chromium_android_unittest ... did you somehow not run them?

I landed a build fix in http://trac.webkit.org/changeset/136192 that updated the mock_run_command to deal with the version calls and the checking of potentially two different paths-to-adb. I think this is probably an acceptable fix, but would appreciate someone sanity-checking the change.

Also, looking at that made me a bit nervous about this patch, because it looks like we now can&apos;t create drivers or call default_child_processes() on a machine where the android toolchain isn&apos;t installed. I *think* this is probably okay as long as we mock out all of the stuff we might need for testing (e.g., for run-webkit-tests --platform mock-chromium-android), but this is a bit more fragile than I would like it to be. I haven&apos;t come up with a good alternative, though.

Lastly, the fact that the driver constructor might actually fail as a result of these things makes me a bit nervous, just because I am generally nervous when constructors can fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779720</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-29 18:25:54 -0800</bug_when>
    <thetext>abarth reminded me this evening that the cq does not run the python unit tests. :(

This is due to the fact that we have no good way to parse out which tests are failing from the output, and w/o that we can&apos;t use our &quot;land while the tree is red&quot; logic that the cq currently depends on.  So if the python unit tests ever broke, the cq would grind to a halt until they were fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779721</commentid>
    <comment_count>22</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-29 18:27:39 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; abarth reminded me this evening that the cq does not run the python unit tests. :(
&gt; 
&gt; This is due to the fact that we have no good way to parse out which tests are failing from the output, and w/o that we can&apos;t use our &quot;land while the tree is red&quot; logic that the cq currently depends on.  So if the python unit tests ever broke, the cq would grind to a halt until they were fixed.

Why do we not have a good way to parse out which tests are failing? The output is pretty straightforward ... is it just a matter of implementing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779726</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-29 18:30:43 -0800</bug_when>
    <thetext>Yup.  Just a matter of writing some code.

http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/tool/bot/expectedfailures.py
http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/tool/commands/earlywarningsystem.py#L65
is relevant code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780232</commentid>
    <comment_count>24</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-11-30 10:53:52 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Note that this change broke the python unit tests for chromium_android_unittest ... did you somehow not run them?
&gt; 
&gt; I landed a build fix in http://trac.webkit.org/changeset/136192 that updated the mock_run_command to deal with the version calls and the checking of potentially two different paths-to-adb. I think this is probably an acceptable fix, but would appreciate someone sanity-checking the change.

Sorry! Thank you for the fix, it looks good to me as well.
 
&gt; Also, looking at that made me a bit nervous about this patch, because it looks like we now can&apos;t create drivers or call default_child_processes() on a machine where the android toolchain isn&apos;t installed. I *think* this is probably okay as long as we mock out all of the stuff we might need for testing (e.g., for run-webkit-tests --platform mock-chromium-android), but this is a bit more fragile than I would like it to be. I haven&apos;t come up with a good alternative, though.

I don&apos;t know a right solution to this issue either. One way could be to override the default using a second way than just an environment variable, for example by having another method that&apos;s invoked just before we actually start sharding, but that&apos;s not ideal either.
 
&gt; Lastly, the fact that the driver constructor might actually fail as a result of these things makes me a bit nervous, just because I am generally nervous when constructors can fail.

Agreed. I uploaded a patch to https://bugs.webkit.org/show_bug.cgi?id=103758 to address this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780379</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-30 13:42:17 -0800</bug_when>
    <thetext>&gt; Yup.  Just a matter of writing some code.

Presumably we can add a flag to test-webkitpy to dump structured data that&apos;s easy for the bot to parse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780425</commentid>
    <comment_count>26</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-30 14:22:38 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; &gt; Yup.  Just a matter of writing some code.
&gt; 
&gt; Presumably we can add a flag to test-webkitpy to dump structured data that&apos;s easy for the bot to parse.

The existing output (at least in --verbose mode) should be structured enough to be sufficient, but obviously we can change that if we need to. I&apos;ll put this task onto my queue :).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176722</attachid>
            <date>2012-11-29 07:02:36 -0800</date>
            <delta_ts>2012-11-29 07:11:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103581-20121129150009.patch</filename>
            <type>text/plain</type>
            <size>8413</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTIxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDBiZTVkZTJjYWJjZTg5NmE1OTVhNjZmNWJkYzFmOTU1
YTQ4Yjc3Ni4uZWQwZmYzODYwNWE5YTg3MmRhYzM5ODg5NzZiMDI2MTc1ZTgzMTU2OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2
IEBACisyMDEyLTExLTI5ICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBydW4tcGVyZi10ZXN0cyAtLWNocm9taXVtLWFuZHJvaWQgc2hvdWxkIG5vdCByZXF1
aXJlIGFkYiBpbiBteSBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDM1ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW1vdmUgdGhlIG5lZWQgdG8gaGF2ZSAiYWRiIiBhdmFpbGFibGUgaW4gdGhl
IHBhdGggZm9yIExheW91dCBhbmQgUGVyZm9ybWFuY2UKKyAgICAgICAgdGVzdHMuIFdlJ2xsIGRl
dGVybWluZSB0aGUgdmVyc2lvbnMgb2YgdGhlICJhZGIiIHZlcnNpb24gaW4gcGF0aCAoaWYgYW55
KSBhbmQKKyAgICAgICAgdGhlIG9uZSBwcm92aWRlZCBpbiB0aGUgQ2hyb21pdW0gQW5kcm9pZCBj
aGVja291dC4gVW5sZXNzIHRoZSAiYWRiIiBhdmFpbGFibGUKKyAgICAgICAgaW4gdGhlIHBhdGgg
aXMgbmV3ZXIsIHRoZSBwcm92aWRlZCB2ZXJzaW9uIHdpbGwgYmUgdXNlZC4KKworICAgICAgICBT
b21lIG90aGVyIG1pbm9yIG5pdHMgYWRkcmVzc2VkOgorICAgICAgICAtIFRoZSBwYXRoX3RvX2Zv
cndhcmRlci9wYXRoX3RvX21kNXN1bSBzaG91bGQgbm90IGJlIGluIHRoZSAicHJpdmF0ZSBvdmVy
cmlkZXMiCisgICAgICAgICAgc2VjdGlvbiwgYXMgdGhleSdyZSBub3Qgb3ZlcnJpZGluZyBhbnl0
aGluZyBhbmQgYXJlIHVzZWQgYnkgdGhlIGRyaXZlci4KKyAgICAgICAgLSBNYWtlIF9yZXN0YXJ0
X2FkYl9hc19yb290IHNsaWdodGx5IG1vcmUgcm9idXN0IGJ5IHdhaXRpbmcgZm9yIHRoZSBkZXZp
Y2UKKyAgICAgICAgICB0byBjb21lIGJhY2sgb25saW5lIHJlZ2FyZGxlc3Mgb2YgdGhlIG91dHB1
dC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fYW5kcm9pZC5weToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX19pbml0X18pOgor
ICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5jaGVja19idWlsZCk6CisgICAgICAgIChDaHJv
bWl1bUFuZHJvaWRQb3J0LnBhdGhfdG9fYWRiKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBv
cnQpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5wYXRoX3RvX2ZvcndhcmRlcik6Cisg
ICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0LnBhdGhfdG9fbWQ1c3VtKToKKyAgICAgICAgKENo
cm9taXVtQW5kcm9pZFBvcnQuX3BhdGhfdG9faGVscGVyKToKKyAgICAgICAgKENocm9taXVtQW5k
cm9pZFBvcnQuX2RldGVybWluZV9hZGJfdmVyc2lvbik6CisgICAgICAgIChDaHJvbWl1bUFuZHJv
aWRQb3J0Ll9nZXRfZGV2aWNlcyk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX19p
bml0X18pOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9zZXR1cF9tZDVzdW1fYW5k
X3B1c2hfZGF0YV9pZl9uZWVkZWQpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9w
dXNoX2V4ZWN1dGFibGUpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9yZXN0YXJ0
X2FkYl9hc19yb290KToKKwogMjAxMi0xMS0yOSAgU3VkYXJzYW5hIE5hZ2luZW5pICA8c3VkYXJz
YW5hLm5hZ2luZW5pQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFkZCBzdXBwb3J0
IGZvciBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlTW91c2VNb3ZlKCkgaW4gVGVzdFdlYktpdEFQ
SQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV9hbmRyb2lkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CmluZGV4IGMxOGNkMDk0MTg0M2IwMzA1MTM0NGM4NWU2
NTQxOGIwMDU3ZmQwODAuLjMzOGM5YWRhZWNmNmUwZWUyYWU2OTc1ODRhYWU4NTM0NjNkZjA0ZWYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fYW5kcm9pZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKQEAgLTE2Nyw2ICsxNjcsNyBAQCBjbGFzcyBDaHJv
bWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAKICAgICAgICAgc2VsZi5f
b3BlcmF0aW5nX3N5c3RlbSA9ICdhbmRyb2lkJwogICAgICAgICBzZWxmLl92ZXJzaW9uID0gJ2lj
ZWNyZWFtc2FuZHdpY2gnCisgICAgICAgIHNlbGYuX2FkYl9wYXRoID0gTm9uZQogCiAgICAgICAg
IHNlbGYuX2hvc3RfcG9ydCA9IGZhY3RvcnkuUG9ydEZhY3RvcnkoaG9zdCkuZ2V0KCdjaHJvbWl1
bScsICoqa3dhcmdzKQogICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzc19jb25zdHJ1Y3RvciA9
IHNlbGYuX2FuZHJvaWRfc2VydmVyX3Byb2Nlc3NfY29uc3RydWN0b3IKQEAgLTIwOCw4ICsyMDks
OCBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAK
ICAgICBkZWYgY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNfaHR0cCk6CiAgICAgICAgIHJlc3VsdCA9
IHN1cGVyKENocm9taXVtQW5kcm9pZFBvcnQsIHNlbGYpLmNoZWNrX2J1aWxkKG5lZWRzX2h0dHAp
Ci0gICAgICAgIHJlc3VsdCA9IHNlbGYuX2NoZWNrX2ZpbGVfZXhpc3RzKHNlbGYuX3BhdGhfdG9f
bWQ1c3VtKCksICdtZDVzdW0gdXRpbGl0eScpIGFuZCByZXN1bHQKLSAgICAgICAgcmVzdWx0ID0g
c2VsZi5fY2hlY2tfZmlsZV9leGlzdHMoc2VsZi5fcGF0aF90b19mb3J3YXJkZXIoKSwgJ2Zvcndh
cmRlciB1dGlsaXR5JykgYW5kIHJlc3VsdAorICAgICAgICByZXN1bHQgPSBzZWxmLl9jaGVja19m
aWxlX2V4aXN0cyhzZWxmLnBhdGhfdG9fbWQ1c3VtKCksICdtZDVzdW0gdXRpbGl0eScpIGFuZCBy
ZXN1bHQKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fY2hlY2tfZmlsZV9leGlzdHMoc2VsZi5wYXRo
X3RvX2ZvcndhcmRlcigpLCAnZm9yd2FyZGVyIHV0aWxpdHknKSBhbmQgcmVzdWx0CiAgICAgICAg
IGlmIG5vdCByZXN1bHQ6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCdGb3IgY29tcGxldGUgQW5k
cm9pZCBidWlsZCByZXF1aXJlbWVudHMsIHBsZWFzZSBzZWU6JykKICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoJycpCkBAIC0yNjAsNiArMjYxLDI4IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQo
Y2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgIyBPdmVycmlkZSB0byByZXR1cm4gdGhl
IGFjdHVhbCBEdW1wUmVuZGVyVHJlZSBjb21tYW5kIGxpbmUuCiAgICAgICAgIHJldHVybiBzZWxm
LmNyZWF0ZV9kcml2ZXIoMCkuX2RydF9jbWRfbGluZShzZWxmLmdldF9vcHRpb24oJ3BpeGVsX3Rl
c3RzJyksIFtdKQogCisgICAgZGVmIHBhdGhfdG9fYWRiKHNlbGYpOgorICAgICAgICBpZiBzZWxm
Ll9hZGJfcGF0aDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9hZGJfcGF0aAorICAgICAgICAK
KyAgICAgICAgcHJvdmlkZWRfYWRiX3BhdGggPSBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNl
KCd0aGlyZF9wYXJ0eScsICdhbmRyb2lkX3Rvb2xzJywgJ3NkaycsICdwbGF0Zm9ybS10b29scycs
ICdhZGInKQorCisgICAgICAgIHBhdGhfdmVyc2lvbiA9IHNlbGYuX2RldGVybWluZV9hZGJfdmVy
c2lvbignYWRiJykKKyAgICAgICAgcHJvdmlkZWRfdmVyc2lvbiA9IHNlbGYuX2RldGVybWluZV9h
ZGJfdmVyc2lvbihwcm92aWRlZF9hZGJfcGF0aCkKKyAgICAgICAgYXNzZXJ0IHByb3ZpZGVkX3Zl
cnNpb24sICdQbGVhc2UgYmUgc3VyZSB0byBoYXZlIGEgQ2hyb21pdW0tQW5kcm9pZCBjaGVjay1v
dXQgYmVmb3JlIHJ1bm5pbmcgbGF5b3V0IHRlc3RzLicKKyAgICAgICAgCisgICAgICAgIGlmIG5v
dCBwYXRoX3ZlcnNpb24gb3IgcHJvdmlkZWRfdmVyc2lvbiA+IHBhdGhfdmVyc2lvbjoKKyAgICAg
ICAgICAgIHNlbGYuX2FkYl9wYXRoID0gcHJvdmlkZWRfYWRiX3BhdGgKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHNlbGYuX2FkYl9wYXRoID0gJ2FkYicKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2FkYl9wYXRoCisKKyAgICBkZWYgcGF0aF90b19mb3J3YXJkZXIoc2VsZik6CisgICAgICAgIHJl
dHVybiBzZWxmLl9idWlsZF9wYXRoKCdmb3J3YXJkZXInKQorCisgICAgZGVmIHBhdGhfdG9fbWQ1
c3VtKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChNRDVTVU1fREVWSUNF
X0ZJTEVfTkFNRSkKKwogICAgICMgT3ZlcnJpZGRlbiBwcml2YXRlIGZ1bmN0aW9ucy4KIAogICAg
IGRlZiBfYnVpbGRfcGF0aChzZWxmLCAqY29tcHMpOgpAQCAtMjgwLDEyICszMDMsNiBAQCBjbGFz
cyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgZGVmIF9w
YXRoX3RvX2hlbHBlcihzZWxmKToKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGRlZiBfcGF0
aF90b19mb3J3YXJkZXIoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCdm
b3J3YXJkZXInKQotCi0gICAgZGVmIF9wYXRoX3RvX21kNXN1bShzZWxmKToKLSAgICAgICAgcmV0
dXJuIHNlbGYuX2J1aWxkX3BhdGgoTUQ1U1VNX0RFVklDRV9GSUxFX05BTUUpCi0KICAgICBkZWYg
X3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3RfcG9y
dC5fcGF0aF90b19pbWFnZV9kaWZmKCkKIApAQCAtMzA5LDEwICszMjYsMjIgQEAgY2xhc3MgQ2hy
b21pdW1BbmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogCiAgICAgIyBMb2NhbCBw
cml2YXRlIGZ1bmN0aW9ucy4KIAorICAgIGRlZiBfZGV0ZXJtaW5lX2FkYl92ZXJzaW9uKHNlbGYs
IGFkYl9wYXRoKToKKyAgICAgICAgcmVfdmVyc2lvbiA9IHJlLmNvbXBpbGUoJ14uKnZlcnNpb24g
KFtcZFwuXSspJCcpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuX2V4
ZWN1dGl2ZS5ydW5fY29tbWFuZChbYWRiX3BhdGgsICd2ZXJzaW9uJ10sIGVycm9yX2hhbmRsZXI9
c2VsZi5fZXhlY3V0aXZlLmlnbm9yZV9lcnJvcikKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKworICAgICAgICByZXN1bHQgPSByZV92ZXJzaW9uLm1hdGNoKG91dHB1
dCkKKyAgICAgICAgaWYgbm90IG91dHB1dCBvciBub3QgcmVzdWx0OgorICAgICAgICAgICAgcmV0
dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIFtpbnQobikgZm9yIG4gaW4gcmVzdWx0Lmdyb3VwKDEp
LnNwbGl0KCcuJyldCisKICAgICBkZWYgX2dldF9kZXZpY2VzKHNlbGYpOgogICAgICAgICBpZiBu
b3Qgc2VsZi5fZGV2aWNlczoKICAgICAgICAgICAgIHJlX2RldmljZSA9IHJlLmNvbXBpbGUoJ14o
W2EtekEtWjAtOV86Li1dKylcdGRldmljZSQnLCByZS5NVUxUSUxJTkUpCi0gICAgICAgICAgICBy
ZXN1bHQgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoWydhZGInLCAnZGV2aWNlcyddLCBl
cnJvcl9oYW5kbGVyPXNlbGYuX2V4ZWN1dGl2ZS5pZ25vcmVfZXJyb3IpCisgICAgICAgICAgICBy
ZXN1bHQgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoW3NlbGYucGF0aF90b19hZGIoKSwg
J2RldmljZXMnXSwgZXJyb3JfaGFuZGxlcj1zZWxmLl9leGVjdXRpdmUuaWdub3JlX2Vycm9yKQog
ICAgICAgICAgICAgc2VsZi5fZGV2aWNlcyA9IHJlX2RldmljZS5maW5kYWxsKHJlc3VsdCkKICAg
ICAgICAgICAgIGlmIG5vdCBzZWxmLl9kZXZpY2VzOgogICAgICAgICAgICAgICAgIHJhaXNlIEFz
c2VydGlvbkVycm9yKCdObyBkZXZpY2VzIGF0dGFjaGVkLiBSZXN1bHQgb2YgImFkYiBkZXZpY2Vz
IjogJXMnICUgcmVzdWx0KQpAQCAtMzM4LDE0ICszNjcsMTQgQEAgY2xhc3MgQ2hyb21pdW1BbmRy
b2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgICAgICBzZWxmLl9oYXNfc2V0dXAgPSBGYWxz
ZQogICAgICAgICBzZWxmLl9vcmlnaW5hbF9nb3Zlcm5vcnMgPSB7fQogICAgICAgICBzZWxmLl9k
ZXZpY2Vfc2VyaWFsID0gcG9ydC5fZ2V0X2RldmljZV9zZXJpYWwod29ya2VyX251bWJlcikKLSAg
ICAgICAgc2VsZi5fYWRiX2NvbW1hbmQgPSBbJ2FkYicsICctcycsIHNlbGYuX2RldmljZV9zZXJp
YWxdCisgICAgICAgIHNlbGYuX2FkYl9jb21tYW5kID0gW3BvcnQucGF0aF90b19hZGIoKSwgJy1z
Jywgc2VsZi5fZGV2aWNlX3NlcmlhbF0KIAogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAg
ICBzZWxmLl90ZWFyZG93bl9wZXJmb3JtYW5jZSgpCiAgICAgICAgIHN1cGVyKENocm9taXVtQW5k
cm9pZERyaXZlciwgc2VsZikuX19kZWxfXygpCiAKICAgICBkZWYgX3NldHVwX21kNXN1bV9hbmRf
cHVzaF9kYXRhX2lmX25lZWRlZChzZWxmKToKLSAgICAgICAgc2VsZi5fbWQ1c3VtX3BhdGggPSBz
ZWxmLl9wb3J0Ll9wYXRoX3RvX21kNXN1bSgpCisgICAgICAgIHNlbGYuX21kNXN1bV9wYXRoID0g
c2VsZi5fcG9ydC5wYXRoX3RvX21kNXN1bSgpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlX2V4
aXN0c19vbl9kZXZpY2UoTUQ1U1VNX0RFVklDRV9QQVRIKToKICAgICAgICAgICAgIGlmIG5vdCBz
ZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9tZDVzdW1fcGF0aCwgTUQ1U1VNX0RFVklDRV9QQVRI
KToKICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignQ291bGQgbm90IHB1c2gg
bWQ1c3VtIHRvIGRldmljZScpCkBAIC00MDMsNyArNDMyLDcgQEAgY2xhc3MgQ2hyb21pdW1BbmRy
b2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZSho
b3N0X2ZpbGUsIGRldmljZV9maWxlKQogCiAgICAgZGVmIF9wdXNoX2V4ZWN1dGFibGUoc2VsZik6
Ci0gICAgICAgIHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2VsZi5fcG9ydC5fcGF0aF90b19m
b3J3YXJkZXIoKSwgREVWSUNFX0ZPUldBUkRFUl9QQVRIKQorICAgICAgICBzZWxmLl9wdXNoX2Zp
bGVfaWZfbmVlZGVkKHNlbGYuX3BvcnQucGF0aF90b19mb3J3YXJkZXIoKSwgREVWSUNFX0ZPUldB
UkRFUl9QQVRIKQogICAgICAgICBzZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYuX3BvcnQu
X2J1aWxkX3BhdGgoJ0R1bXBSZW5kZXJUcmVlLnBhaycpLCBERVZJQ0VfRFJUX0RJUiArICdEdW1w
UmVuZGVyVHJlZS5wYWsnKQogICAgICAgICBzZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYu
X3BvcnQuX2J1aWxkX3BhdGgoJ0R1bXBSZW5kZXJUcmVlX3Jlc291cmNlcycpLCBERVZJQ0VfRFJU
X0RJUiArICdEdW1wUmVuZGVyVHJlZV9yZXNvdXJjZXMnKQogICAgICAgICBzZWxmLl9wdXNoX2Zp
bGVfaWZfbmVlZGVkKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ2FuZHJvaWRfbWFpbl9mb250cy54
bWwnKSwgREVWSUNFX0RSVF9ESVIgKyAnYW5kcm9pZF9tYWluX2ZvbnRzLnhtbCcpCkBAIC00MzMs
MTEgKzQ2MiwxMiBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVyLkRyaXZlcik6
CiAgICAgICAgIG91dHB1dCA9IHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3Jvb3QnXSkKICAgICAg
ICAgaWYgJ2FkYmQgaXMgYWxyZWFkeSBydW5uaW5nIGFzIHJvb3QnIGluIG91dHB1dDoKICAgICAg
ICAgICAgIHJldHVybgotICAgICAgICBlbGlmICdyZXN0YXJ0aW5nIGFkYmQgYXMgcm9vdCcgaW4g
b3V0cHV0OgotICAgICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnd2FpdC1mb3ItZGV2
aWNlJ10pCi0gICAgICAgIGVsc2U6CisgICAgICAgIGVsaWYgbm90ICdyZXN0YXJ0aW5nIGFkYmQg
YXMgcm9vdCcgaW4gb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5fbG9nX2Vycm9yKCdVbnJlY29n
bml6ZWQgb3V0cHV0IGZyb20gYWRiIHJvb3Q6ICVzJyAlIG91dHB1dCkKIAorICAgICAgICAjIFJl
Z2FyZGxlc3MgdGhlIG91dHB1dCwgZ2l2ZSB0aGUgZGV2aWNlIGEgbW9tZW50IHRvIGNvbWUgYmFj
ayBvbmxpbmUuCisgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3dhaXQtZm9yLWRldmlj
ZSddKQorCiAgICAgZGVmIF9ydW5fYWRiX2NvbW1hbmQoc2VsZiwgY21kLCBpZ25vcmVfZXJyb3I9
RmFsc2UpOgogICAgICAgICBzZWxmLl9sb2dfZGVidWcoJ1J1biBhZGIgY29tbWFuZDogJyArIHN0
cihjbWQpKQogICAgICAgICBpZiBpZ25vcmVfZXJyb3I6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176725</attachid>
            <date>2012-11-29 07:11:45 -0800</date>
            <delta_ts>2012-11-29 09:19:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103581-20121129150918.patch</filename>
            <type>text/plain</type>
            <size>8397</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTIxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDBiZTVkZTJjYWJjZTg5NmE1OTVhNjZmNWJkYzFmOTU1
YTQ4Yjc3Ni4uZWQwZmYzODYwNWE5YTg3MmRhYzM5ODg5NzZiMDI2MTc1ZTgzMTU2OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2
IEBACisyMDEyLTExLTI5ICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBydW4tcGVyZi10ZXN0cyAtLWNocm9taXVtLWFuZHJvaWQgc2hvdWxkIG5vdCByZXF1
aXJlIGFkYiBpbiBteSBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDM1ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW1vdmUgdGhlIG5lZWQgdG8gaGF2ZSAiYWRiIiBhdmFpbGFibGUgaW4gdGhl
IHBhdGggZm9yIExheW91dCBhbmQgUGVyZm9ybWFuY2UKKyAgICAgICAgdGVzdHMuIFdlJ2xsIGRl
dGVybWluZSB0aGUgdmVyc2lvbnMgb2YgdGhlICJhZGIiIHZlcnNpb24gaW4gcGF0aCAoaWYgYW55
KSBhbmQKKyAgICAgICAgdGhlIG9uZSBwcm92aWRlZCBpbiB0aGUgQ2hyb21pdW0gQW5kcm9pZCBj
aGVja291dC4gVW5sZXNzIHRoZSAiYWRiIiBhdmFpbGFibGUKKyAgICAgICAgaW4gdGhlIHBhdGgg
aXMgbmV3ZXIsIHRoZSBwcm92aWRlZCB2ZXJzaW9uIHdpbGwgYmUgdXNlZC4KKworICAgICAgICBT
b21lIG90aGVyIG1pbm9yIG5pdHMgYWRkcmVzc2VkOgorICAgICAgICAtIFRoZSBwYXRoX3RvX2Zv
cndhcmRlci9wYXRoX3RvX21kNXN1bSBzaG91bGQgbm90IGJlIGluIHRoZSAicHJpdmF0ZSBvdmVy
cmlkZXMiCisgICAgICAgICAgc2VjdGlvbiwgYXMgdGhleSdyZSBub3Qgb3ZlcnJpZGluZyBhbnl0
aGluZyBhbmQgYXJlIHVzZWQgYnkgdGhlIGRyaXZlci4KKyAgICAgICAgLSBNYWtlIF9yZXN0YXJ0
X2FkYl9hc19yb290IHNsaWdodGx5IG1vcmUgcm9idXN0IGJ5IHdhaXRpbmcgZm9yIHRoZSBkZXZp
Y2UKKyAgICAgICAgICB0byBjb21lIGJhY2sgb25saW5lIHJlZ2FyZGxlc3Mgb2YgdGhlIG91dHB1
dC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fYW5kcm9pZC5weToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX19pbml0X18pOgor
ICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5jaGVja19idWlsZCk6CisgICAgICAgIChDaHJv
bWl1bUFuZHJvaWRQb3J0LnBhdGhfdG9fYWRiKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBv
cnQpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5wYXRoX3RvX2ZvcndhcmRlcik6Cisg
ICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0LnBhdGhfdG9fbWQ1c3VtKToKKyAgICAgICAgKENo
cm9taXVtQW5kcm9pZFBvcnQuX3BhdGhfdG9faGVscGVyKToKKyAgICAgICAgKENocm9taXVtQW5k
cm9pZFBvcnQuX2RldGVybWluZV9hZGJfdmVyc2lvbik6CisgICAgICAgIChDaHJvbWl1bUFuZHJv
aWRQb3J0Ll9nZXRfZGV2aWNlcyk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX19p
bml0X18pOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9zZXR1cF9tZDVzdW1fYW5k
X3B1c2hfZGF0YV9pZl9uZWVkZWQpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9w
dXNoX2V4ZWN1dGFibGUpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9yZXN0YXJ0
X2FkYl9hc19yb290KToKKwogMjAxMi0xMS0yOSAgU3VkYXJzYW5hIE5hZ2luZW5pICA8c3VkYXJz
YW5hLm5hZ2luZW5pQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFkZCBzdXBwb3J0
IGZvciBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlTW91c2VNb3ZlKCkgaW4gVGVzdFdlYktpdEFQ
SQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV9hbmRyb2lkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CmluZGV4IGMxOGNkMDk0MTg0M2IwMzA1MTM0NGM4NWU2
NTQxOGIwMDU3ZmQwODAuLmU3OTRjY2YyNjJjN2M1YmU0OTFhMzc2MWMwYmRjYTk2ZWI5YTEwYzcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fYW5kcm9pZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKQEAgLTE2Nyw2ICsxNjcsNyBAQCBjbGFzcyBDaHJv
bWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAKICAgICAgICAgc2VsZi5f
b3BlcmF0aW5nX3N5c3RlbSA9ICdhbmRyb2lkJwogICAgICAgICBzZWxmLl92ZXJzaW9uID0gJ2lj
ZWNyZWFtc2FuZHdpY2gnCisgICAgICAgIHNlbGYuX2FkYl9wYXRoID0gTm9uZQogCiAgICAgICAg
IHNlbGYuX2hvc3RfcG9ydCA9IGZhY3RvcnkuUG9ydEZhY3RvcnkoaG9zdCkuZ2V0KCdjaHJvbWl1
bScsICoqa3dhcmdzKQogICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzc19jb25zdHJ1Y3RvciA9
IHNlbGYuX2FuZHJvaWRfc2VydmVyX3Byb2Nlc3NfY29uc3RydWN0b3IKQEAgLTIwOCw4ICsyMDks
OCBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAK
ICAgICBkZWYgY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNfaHR0cCk6CiAgICAgICAgIHJlc3VsdCA9
IHN1cGVyKENocm9taXVtQW5kcm9pZFBvcnQsIHNlbGYpLmNoZWNrX2J1aWxkKG5lZWRzX2h0dHAp
Ci0gICAgICAgIHJlc3VsdCA9IHNlbGYuX2NoZWNrX2ZpbGVfZXhpc3RzKHNlbGYuX3BhdGhfdG9f
bWQ1c3VtKCksICdtZDVzdW0gdXRpbGl0eScpIGFuZCByZXN1bHQKLSAgICAgICAgcmVzdWx0ID0g
c2VsZi5fY2hlY2tfZmlsZV9leGlzdHMoc2VsZi5fcGF0aF90b19mb3J3YXJkZXIoKSwgJ2Zvcndh
cmRlciB1dGlsaXR5JykgYW5kIHJlc3VsdAorICAgICAgICByZXN1bHQgPSBzZWxmLl9jaGVja19m
aWxlX2V4aXN0cyhzZWxmLnBhdGhfdG9fbWQ1c3VtKCksICdtZDVzdW0gdXRpbGl0eScpIGFuZCBy
ZXN1bHQKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fY2hlY2tfZmlsZV9leGlzdHMoc2VsZi5wYXRo
X3RvX2ZvcndhcmRlcigpLCAnZm9yd2FyZGVyIHV0aWxpdHknKSBhbmQgcmVzdWx0CiAgICAgICAg
IGlmIG5vdCByZXN1bHQ6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCdGb3IgY29tcGxldGUgQW5k
cm9pZCBidWlsZCByZXF1aXJlbWVudHMsIHBsZWFzZSBzZWU6JykKICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoJycpCkBAIC0yNjAsNiArMjYxLDI4IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQo
Y2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgIyBPdmVycmlkZSB0byByZXR1cm4gdGhl
IGFjdHVhbCBEdW1wUmVuZGVyVHJlZSBjb21tYW5kIGxpbmUuCiAgICAgICAgIHJldHVybiBzZWxm
LmNyZWF0ZV9kcml2ZXIoMCkuX2RydF9jbWRfbGluZShzZWxmLmdldF9vcHRpb24oJ3BpeGVsX3Rl
c3RzJyksIFtdKQogCisgICAgZGVmIHBhdGhfdG9fYWRiKHNlbGYpOgorICAgICAgICBpZiBzZWxm
Ll9hZGJfcGF0aDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9hZGJfcGF0aAorCisgICAgICAg
IHByb3ZpZGVkX2FkYl9wYXRoID0gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgndGhpcmRf
cGFydHknLCAnYW5kcm9pZF90b29scycsICdzZGsnLCAncGxhdGZvcm0tdG9vbHMnLCAnYWRiJykK
KworICAgICAgICBwYXRoX3ZlcnNpb24gPSBzZWxmLl9kZXRlcm1pbmVfYWRiX3ZlcnNpb24oJ2Fk
YicpCisgICAgICAgIHByb3ZpZGVkX3ZlcnNpb24gPSBzZWxmLl9kZXRlcm1pbmVfYWRiX3ZlcnNp
b24ocHJvdmlkZWRfYWRiX3BhdGgpCisgICAgICAgIGFzc2VydCBwcm92aWRlZF92ZXJzaW9uLCAn
UGxlYXNlIGJlIHN1cmUgdG8gaGF2ZSBhIENocm9taXVtLUFuZHJvaWQgY2hlY2stb3V0IGJlZm9y
ZSBydW5uaW5nIGxheW91dCB0ZXN0cy4nCisKKyAgICAgICAgaWYgbm90IHBhdGhfdmVyc2lvbiBv
ciBwcm92aWRlZF92ZXJzaW9uID4gcGF0aF92ZXJzaW9uOgorICAgICAgICAgICAgc2VsZi5fYWRi
X3BhdGggPSBwcm92aWRlZF9hZGJfcGF0aAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2Vs
Zi5fYWRiX3BhdGggPSAnYWRiJworICAgICAgICByZXR1cm4gc2VsZi5fYWRiX3BhdGgKKworICAg
IGRlZiBwYXRoX3RvX2ZvcndhcmRlcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxk
X3BhdGgoJ2ZvcndhcmRlcicpCisKKyAgICBkZWYgcGF0aF90b19tZDVzdW0oc2VsZik6CisgICAg
ICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKE1ENVNVTV9ERVZJQ0VfRklMRV9OQU1FKQorCiAg
ICAgIyBPdmVycmlkZGVuIHByaXZhdGUgZnVuY3Rpb25zLgogCiAgICAgZGVmIF9idWlsZF9wYXRo
KHNlbGYsICpjb21wcyk6CkBAIC0yODAsMTIgKzMwMyw2IEBAIGNsYXNzIENocm9taXVtQW5kcm9p
ZFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICBkZWYgX3BhdGhfdG9faGVscGVyKHNl
bGYpOgogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVmIF9wYXRoX3RvX2ZvcndhcmRlcihz
ZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoJ2ZvcndhcmRlcicpCi0KLSAg
ICBkZWYgX3BhdGhfdG9fbWQ1c3VtKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRf
cGF0aChNRDVTVU1fREVWSUNFX0ZJTEVfTkFNRSkKLQogICAgIGRlZiBfcGF0aF90b19pbWFnZV9k
aWZmKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5faG9zdF9wb3J0Ll9wYXRoX3RvX2ltYWdl
X2RpZmYoKQogCkBAIC0zMDksMTAgKzMyNiwyMiBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0
KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAKICAgICAjIExvY2FsIHByaXZhdGUgZnVuY3Rpb25z
LgogCisgICAgZGVmIF9kZXRlcm1pbmVfYWRiX3ZlcnNpb24oc2VsZiwgYWRiX3BhdGgpOgorICAg
ICAgICByZV92ZXJzaW9uID0gcmUuY29tcGlsZSgnXi4qdmVyc2lvbiAoW1xkXC5dKykkJykKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21t
YW5kKFthZGJfcGF0aCwgJ3ZlcnNpb24nXSwgZXJyb3JfaGFuZGxlcj1zZWxmLl9leGVjdXRpdmUu
aWdub3JlX2Vycm9yKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICByZXR1cm4gTm9uZQor
CisgICAgICAgIHJlc3VsdCA9IHJlX3ZlcnNpb24ubWF0Y2gob3V0cHV0KQorICAgICAgICBpZiBu
b3Qgb3V0cHV0IG9yIG5vdCByZXN1bHQ6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAg
ICByZXR1cm4gW2ludChuKSBmb3IgbiBpbiByZXN1bHQuZ3JvdXAoMSkuc3BsaXQoJy4nKV0KKwog
ICAgIGRlZiBfZ2V0X2RldmljZXMoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9kZXZpY2Vz
OgogICAgICAgICAgICAgcmVfZGV2aWNlID0gcmUuY29tcGlsZSgnXihbYS16QS1aMC05XzouLV0r
KVx0ZGV2aWNlJCcsIHJlLk1VTFRJTElORSkKLSAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2V4
ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ2FkYicsICdkZXZpY2VzJ10sIGVycm9yX2hhbmRsZXI9c2Vs
Zi5fZXhlY3V0aXZlLmlnbm9yZV9lcnJvcikKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2V4
ZWN1dGl2ZS5ydW5fY29tbWFuZChbc2VsZi5wYXRoX3RvX2FkYigpLCAnZGV2aWNlcyddLCBlcnJv
cl9oYW5kbGVyPXNlbGYuX2V4ZWN1dGl2ZS5pZ25vcmVfZXJyb3IpCiAgICAgICAgICAgICBzZWxm
Ll9kZXZpY2VzID0gcmVfZGV2aWNlLmZpbmRhbGwocmVzdWx0KQogICAgICAgICAgICAgaWYgbm90
IHNlbGYuX2RldmljZXM6CiAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ05v
IGRldmljZXMgYXR0YWNoZWQuIFJlc3VsdCBvZiAiYWRiIGRldmljZXMiOiAlcycgJSByZXN1bHQp
CkBAIC0zMzgsMTQgKzM2NywxNCBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVy
LkRyaXZlcik6CiAgICAgICAgIHNlbGYuX2hhc19zZXR1cCA9IEZhbHNlCiAgICAgICAgIHNlbGYu
X29yaWdpbmFsX2dvdmVybm9ycyA9IHt9CiAgICAgICAgIHNlbGYuX2RldmljZV9zZXJpYWwgPSBw
b3J0Ll9nZXRfZGV2aWNlX3NlcmlhbCh3b3JrZXJfbnVtYmVyKQotICAgICAgICBzZWxmLl9hZGJf
Y29tbWFuZCA9IFsnYWRiJywgJy1zJywgc2VsZi5fZGV2aWNlX3NlcmlhbF0KKyAgICAgICAgc2Vs
Zi5fYWRiX2NvbW1hbmQgPSBbcG9ydC5wYXRoX3RvX2FkYigpLCAnLXMnLCBzZWxmLl9kZXZpY2Vf
c2VyaWFsXQogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgIHNlbGYuX3RlYXJkb3du
X3BlcmZvcm1hbmNlKCkKICAgICAgICAgc3VwZXIoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLCBzZWxm
KS5fX2RlbF9fKCkKIAogICAgIGRlZiBfc2V0dXBfbWQ1c3VtX2FuZF9wdXNoX2RhdGFfaWZfbmVl
ZGVkKHNlbGYpOgotICAgICAgICBzZWxmLl9tZDVzdW1fcGF0aCA9IHNlbGYuX3BvcnQuX3BhdGhf
dG9fbWQ1c3VtKCkKKyAgICAgICAgc2VsZi5fbWQ1c3VtX3BhdGggPSBzZWxmLl9wb3J0LnBhdGhf
dG9fbWQ1c3VtKCkKICAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVfZXhpc3RzX29uX2RldmljZShN
RDVTVU1fREVWSUNFX1BBVEgpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX3B1c2hfdG9fZGV2
aWNlKHNlbGYuX21kNXN1bV9wYXRoLCBNRDVTVU1fREVWSUNFX1BBVEgpOgogICAgICAgICAgICAg
ICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdDb3VsZCBub3QgcHVzaCBtZDVzdW0gdG8gZGV2aWNl
JykKQEAgLTQwMyw3ICs0MzIsNyBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVy
LkRyaXZlcik6CiAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKGhvc3RfZmlsZSwgZGV2aWNl
X2ZpbGUpCiAKICAgICBkZWYgX3B1c2hfZXhlY3V0YWJsZShzZWxmKToKLSAgICAgICAgc2VsZi5f
cHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9wb3J0Ll9wYXRoX3RvX2ZvcndhcmRlcigpLCBERVZJ
Q0VfRk9SV0FSREVSX1BBVEgpCisgICAgICAgIHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2Vs
Zi5fcG9ydC5wYXRoX3RvX2ZvcndhcmRlcigpLCBERVZJQ0VfRk9SV0FSREVSX1BBVEgpCiAgICAg
ICAgIHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnRHVt
cFJlbmRlclRyZWUucGFrJyksIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlLnBhaycp
CiAgICAgICAgIHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2VsZi5fcG9ydC5fYnVpbGRfcGF0
aCgnRHVtcFJlbmRlclRyZWVfcmVzb3VyY2VzJyksIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5k
ZXJUcmVlX3Jlc291cmNlcycpCiAgICAgICAgIHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2Vs
Zi5fcG9ydC5fYnVpbGRfcGF0aCgnYW5kcm9pZF9tYWluX2ZvbnRzLnhtbCcpLCBERVZJQ0VfRFJU
X0RJUiArICdhbmRyb2lkX21haW5fZm9udHMueG1sJykKQEAgLTQzMywxMSArNDYyLDEyIEBAIGNs
YXNzIENocm9taXVtQW5kcm9pZERyaXZlcihkcml2ZXIuRHJpdmVyKToKICAgICAgICAgb3V0cHV0
ID0gc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsncm9vdCddKQogICAgICAgICBpZiAnYWRiZCBpcyBh
bHJlYWR5IHJ1bm5pbmcgYXMgcm9vdCcgaW4gb3V0cHV0OgogICAgICAgICAgICAgcmV0dXJuCi0g
ICAgICAgIGVsaWYgJ3Jlc3RhcnRpbmcgYWRiZCBhcyByb290JyBpbiBvdXRwdXQ6Ci0gICAgICAg
ICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWyd3YWl0LWZvci1kZXZpY2UnXSkKLSAgICAgICAg
ZWxzZToKKyAgICAgICAgZWxpZiBub3QgJ3Jlc3RhcnRpbmcgYWRiZCBhcyByb290JyBpbiBvdXRw
dXQ6CiAgICAgICAgICAgICBzZWxmLl9sb2dfZXJyb3IoJ1VucmVjb2duaXplZCBvdXRwdXQgZnJv
bSBhZGIgcm9vdDogJXMnICUgb3V0cHV0KQogCisgICAgICAgICMgUmVnYXJkbGVzcyB0aGUgb3V0
cHV0LCBnaXZlIHRoZSBkZXZpY2UgYSBtb21lbnQgdG8gY29tZSBiYWNrIG9ubGluZS4KKyAgICAg
ICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnd2FpdC1mb3ItZGV2aWNlJ10pCisKICAgICBkZWYg
X3J1bl9hZGJfY29tbWFuZChzZWxmLCBjbWQsIGlnbm9yZV9lcnJvcj1GYWxzZSk6CiAgICAgICAg
IHNlbGYuX2xvZ19kZWJ1ZygnUnVuIGFkYiBjb21tYW5kOiAnICsgc3RyKGNtZCkpCiAgICAgICAg
IGlmIGlnbm9yZV9lcnJvcjoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176746</attachid>
            <date>2012-11-29 09:16:44 -0800</date>
            <delta_ts>2012-11-29 10:18:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103581-20121129171417.patch</filename>
            <type>text/plain</type>
            <size>8638</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTI5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDBiZTVkZTJjYWJjZTg5NmE1OTVhNjZmNWJkYzFmOTU1
YTQ4Yjc3Ni4uZWQwZmYzODYwNWE5YTg3MmRhYzM5ODg5NzZiMDI2MTc1ZTgzMTU2OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2
IEBACisyMDEyLTExLTI5ICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBydW4tcGVyZi10ZXN0cyAtLWNocm9taXVtLWFuZHJvaWQgc2hvdWxkIG5vdCByZXF1
aXJlIGFkYiBpbiBteSBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDM1ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW1vdmUgdGhlIG5lZWQgdG8gaGF2ZSAiYWRiIiBhdmFpbGFibGUgaW4gdGhl
IHBhdGggZm9yIExheW91dCBhbmQgUGVyZm9ybWFuY2UKKyAgICAgICAgdGVzdHMuIFdlJ2xsIGRl
dGVybWluZSB0aGUgdmVyc2lvbnMgb2YgdGhlICJhZGIiIHZlcnNpb24gaW4gcGF0aCAoaWYgYW55
KSBhbmQKKyAgICAgICAgdGhlIG9uZSBwcm92aWRlZCBpbiB0aGUgQ2hyb21pdW0gQW5kcm9pZCBj
aGVja291dC4gVW5sZXNzIHRoZSAiYWRiIiBhdmFpbGFibGUKKyAgICAgICAgaW4gdGhlIHBhdGgg
aXMgbmV3ZXIsIHRoZSBwcm92aWRlZCB2ZXJzaW9uIHdpbGwgYmUgdXNlZC4KKworICAgICAgICBT
b21lIG90aGVyIG1pbm9yIG5pdHMgYWRkcmVzc2VkOgorICAgICAgICAtIFRoZSBwYXRoX3RvX2Zv
cndhcmRlci9wYXRoX3RvX21kNXN1bSBzaG91bGQgbm90IGJlIGluIHRoZSAicHJpdmF0ZSBvdmVy
cmlkZXMiCisgICAgICAgICAgc2VjdGlvbiwgYXMgdGhleSdyZSBub3Qgb3ZlcnJpZGluZyBhbnl0
aGluZyBhbmQgYXJlIHVzZWQgYnkgdGhlIGRyaXZlci4KKyAgICAgICAgLSBNYWtlIF9yZXN0YXJ0
X2FkYl9hc19yb290IHNsaWdodGx5IG1vcmUgcm9idXN0IGJ5IHdhaXRpbmcgZm9yIHRoZSBkZXZp
Y2UKKyAgICAgICAgICB0byBjb21lIGJhY2sgb25saW5lIHJlZ2FyZGxlc3Mgb2YgdGhlIG91dHB1
dC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fYW5kcm9pZC5weToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX19pbml0X18pOgor
ICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5jaGVja19idWlsZCk6CisgICAgICAgIChDaHJv
bWl1bUFuZHJvaWRQb3J0LnBhdGhfdG9fYWRiKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBv
cnQpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5wYXRoX3RvX2ZvcndhcmRlcik6Cisg
ICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0LnBhdGhfdG9fbWQ1c3VtKToKKyAgICAgICAgKENo
cm9taXVtQW5kcm9pZFBvcnQuX3BhdGhfdG9faGVscGVyKToKKyAgICAgICAgKENocm9taXVtQW5k
cm9pZFBvcnQuX2RldGVybWluZV9hZGJfdmVyc2lvbik6CisgICAgICAgIChDaHJvbWl1bUFuZHJv
aWRQb3J0Ll9nZXRfZGV2aWNlcyk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX19p
bml0X18pOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9zZXR1cF9tZDVzdW1fYW5k
X3B1c2hfZGF0YV9pZl9uZWVkZWQpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9w
dXNoX2V4ZWN1dGFibGUpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9yZXN0YXJ0
X2FkYl9hc19yb290KToKKwogMjAxMi0xMS0yOSAgU3VkYXJzYW5hIE5hZ2luZW5pICA8c3VkYXJz
YW5hLm5hZ2luZW5pQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFkZCBzdXBwb3J0
IGZvciBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlTW91c2VNb3ZlKCkgaW4gVGVzdFdlYktpdEFQ
SQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV9hbmRyb2lkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CmluZGV4IGMxOGNkMDk0MTg0M2IwMzA1MTM0NGM4NWU2
NTQxOGIwMDU3ZmQwODAuLmQ5N2ZiZDg0ODhhNDViMzUyOWU2MDdlOTVjYjVkM2IzNWM5NWNlZmEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fYW5kcm9pZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKQEAgLTE2Nyw2ICsxNjcsNyBAQCBjbGFzcyBDaHJv
bWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAKICAgICAgICAgc2VsZi5f
b3BlcmF0aW5nX3N5c3RlbSA9ICdhbmRyb2lkJwogICAgICAgICBzZWxmLl92ZXJzaW9uID0gJ2lj
ZWNyZWFtc2FuZHdpY2gnCisgICAgICAgIHNlbGYuX2FkYl9wYXRoID0gTm9uZQogCiAgICAgICAg
IHNlbGYuX2hvc3RfcG9ydCA9IGZhY3RvcnkuUG9ydEZhY3RvcnkoaG9zdCkuZ2V0KCdjaHJvbWl1
bScsICoqa3dhcmdzKQogICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzc19jb25zdHJ1Y3RvciA9
IHNlbGYuX2FuZHJvaWRfc2VydmVyX3Byb2Nlc3NfY29uc3RydWN0b3IKQEAgLTIwOCw4ICsyMDks
OCBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAK
ICAgICBkZWYgY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNfaHR0cCk6CiAgICAgICAgIHJlc3VsdCA9
IHN1cGVyKENocm9taXVtQW5kcm9pZFBvcnQsIHNlbGYpLmNoZWNrX2J1aWxkKG5lZWRzX2h0dHAp
Ci0gICAgICAgIHJlc3VsdCA9IHNlbGYuX2NoZWNrX2ZpbGVfZXhpc3RzKHNlbGYuX3BhdGhfdG9f
bWQ1c3VtKCksICdtZDVzdW0gdXRpbGl0eScpIGFuZCByZXN1bHQKLSAgICAgICAgcmVzdWx0ID0g
c2VsZi5fY2hlY2tfZmlsZV9leGlzdHMoc2VsZi5fcGF0aF90b19mb3J3YXJkZXIoKSwgJ2Zvcndh
cmRlciB1dGlsaXR5JykgYW5kIHJlc3VsdAorICAgICAgICByZXN1bHQgPSBzZWxmLl9jaGVja19m
aWxlX2V4aXN0cyhzZWxmLnBhdGhfdG9fbWQ1c3VtKCksICdtZDVzdW0gdXRpbGl0eScpIGFuZCBy
ZXN1bHQKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fY2hlY2tfZmlsZV9leGlzdHMoc2VsZi5wYXRo
X3RvX2ZvcndhcmRlcigpLCAnZm9yd2FyZGVyIHV0aWxpdHknKSBhbmQgcmVzdWx0CiAgICAgICAg
IGlmIG5vdCByZXN1bHQ6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCdGb3IgY29tcGxldGUgQW5k
cm9pZCBidWlsZCByZXF1aXJlbWVudHMsIHBsZWFzZSBzZWU6JykKICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoJycpCkBAIC0yNjAsNiArMjYxLDMxIEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQo
Y2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgIyBPdmVycmlkZSB0byByZXR1cm4gdGhl
IGFjdHVhbCBEdW1wUmVuZGVyVHJlZSBjb21tYW5kIGxpbmUuCiAgICAgICAgIHJldHVybiBzZWxm
LmNyZWF0ZV9kcml2ZXIoMCkuX2RydF9jbWRfbGluZShzZWxmLmdldF9vcHRpb24oJ3BpeGVsX3Rl
c3RzJyksIFtdKQogCisgICAgZGVmIHBhdGhfdG9fYWRiKHNlbGYpOgorICAgICAgICBpZiBzZWxm
Ll9hZGJfcGF0aDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9hZGJfcGF0aAorCisgICAgICAg
IHByb3ZpZGVkX2FkYl9wYXRoID0gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgndGhpcmRf
cGFydHknLCAnYW5kcm9pZF90b29scycsICdzZGsnLCAncGxhdGZvcm0tdG9vbHMnLCAnYWRiJykK
KworICAgICAgICBwYXRoX3ZlcnNpb24gPSBzZWxmLl9kZXRlcm1pbmVfYWRiX3ZlcnNpb24oJ2Fk
YicpCisgICAgICAgIHByb3ZpZGVkX3ZlcnNpb24gPSBzZWxmLl9kZXRlcm1pbmVfYWRiX3ZlcnNp
b24ocHJvdmlkZWRfYWRiX3BhdGgpCisgICAgICAgIGFzc2VydCBwcm92aWRlZF92ZXJzaW9uLCAn
VGhlIGNoZWNrZWQgaW4gQW5kcm9pZCBTREsgaXMgbWlzc2luZy4gQXJlIHlvdSBzdXJlIHlvdSBy
YW4gdXBkYXRlLXdlYmtpdCAtLWNocm9taXVtLWFuZHJvaWQ/JworCisgICAgICAgIGlmIG5vdCBw
YXRoX3ZlcnNpb246CisgICAgICAgICAgICBzZWxmLl9hZGJfcGF0aCA9IHByb3ZpZGVkX2FkYl9w
YXRoCisgICAgICAgIGVsaWYgcHJvdmlkZWRfdmVyc2lvbiA+IHBhdGhfdmVyc2lvbjoKKyAgICAg
ICAgICAgIGxvZy5fd2FybmluZygnVGhlICJhZGIiIHZlcnNpb24gaW4geW91ciBwYXRoIGlzIG9s
ZGVyIHRoYW4gdGhlIG9uZSBjaGVja2VkIGluLCBjb25zaWRlciB1cGRhdGluZyB5b3VyIGxvY2Fs
IEFuZHJvaWQgU0RLLiBVc2luZyB0aGUgY2hlY2tlZCBpbiBvbmUuJykKKyAgICAgICAgICAgIHNl
bGYuX2FkYl9wYXRoID0gcHJvdmlkZWRfYWRiX3BhdGgKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHNlbGYuX2FkYl9wYXRoID0gJ2FkYicKKyAgICAgICAgcmV0dXJuIHNlbGYuX2FkYl9wYXRo
CisKKyAgICBkZWYgcGF0aF90b19mb3J3YXJkZXIoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxm
Ll9idWlsZF9wYXRoKCdmb3J3YXJkZXInKQorCisgICAgZGVmIHBhdGhfdG9fbWQ1c3VtKHNlbGYp
OgorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChNRDVTVU1fREVWSUNFX0ZJTEVfTkFN
RSkKKwogICAgICMgT3ZlcnJpZGRlbiBwcml2YXRlIGZ1bmN0aW9ucy4KIAogICAgIGRlZiBfYnVp
bGRfcGF0aChzZWxmLCAqY29tcHMpOgpAQCAtMjgwLDEyICszMDYsNiBAQCBjbGFzcyBDaHJvbWl1
bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgZGVmIF9wYXRoX3RvX2hl
bHBlcihzZWxmKToKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGRlZiBfcGF0aF90b19mb3J3
YXJkZXIoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCdmb3J3YXJkZXIn
KQotCi0gICAgZGVmIF9wYXRoX3RvX21kNXN1bShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
X2J1aWxkX3BhdGgoTUQ1U1VNX0RFVklDRV9GSUxFX05BTUUpCi0KICAgICBkZWYgX3BhdGhfdG9f
aW1hZ2VfZGlmZihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3RfcG9ydC5fcGF0aF90
b19pbWFnZV9kaWZmKCkKIApAQCAtMzA5LDEwICszMjksMjEgQEAgY2xhc3MgQ2hyb21pdW1BbmRy
b2lkUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogCiAgICAgIyBMb2NhbCBwcml2YXRlIGZ1
bmN0aW9ucy4KIAorICAgIGRlZiBfZGV0ZXJtaW5lX2FkYl92ZXJzaW9uKHNlbGYsIGFkYl9wYXRo
KToKKyAgICAgICAgcmVfdmVyc2lvbiA9IHJlLmNvbXBpbGUoJ14uKnZlcnNpb24gKFtcZFwuXSsp
JCcpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuX2V4ZWN1dGl2ZS5y
dW5fY29tbWFuZChbYWRiX3BhdGgsICd2ZXJzaW9uJ10sIGVycm9yX2hhbmRsZXI9c2VsZi5fZXhl
Y3V0aXZlLmlnbm9yZV9lcnJvcikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAg
ICByZXR1cm4gTm9uZQorICAgICAgICByZXN1bHQgPSByZV92ZXJzaW9uLm1hdGNoKG91dHB1dCkK
KyAgICAgICAgaWYgbm90IG91dHB1dCBvciBub3QgcmVzdWx0OgorICAgICAgICAgICAgcmV0dXJu
IE5vbmUKKyAgICAgICAgcmV0dXJuIFtpbnQobikgZm9yIG4gaW4gcmVzdWx0Lmdyb3VwKDEpLnNw
bGl0KCcuJyldCisKICAgICBkZWYgX2dldF9kZXZpY2VzKHNlbGYpOgogICAgICAgICBpZiBub3Qg
c2VsZi5fZGV2aWNlczoKICAgICAgICAgICAgIHJlX2RldmljZSA9IHJlLmNvbXBpbGUoJ14oW2Et
ekEtWjAtOV86Li1dKylcdGRldmljZSQnLCByZS5NVUxUSUxJTkUpCi0gICAgICAgICAgICByZXN1
bHQgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoWydhZGInLCAnZGV2aWNlcyddLCBlcnJv
cl9oYW5kbGVyPXNlbGYuX2V4ZWN1dGl2ZS5pZ25vcmVfZXJyb3IpCisgICAgICAgICAgICByZXN1
bHQgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoW3NlbGYucGF0aF90b19hZGIoKSwgJ2Rl
dmljZXMnXSwgZXJyb3JfaGFuZGxlcj1zZWxmLl9leGVjdXRpdmUuaWdub3JlX2Vycm9yKQogICAg
ICAgICAgICAgc2VsZi5fZGV2aWNlcyA9IHJlX2RldmljZS5maW5kYWxsKHJlc3VsdCkKICAgICAg
ICAgICAgIGlmIG5vdCBzZWxmLl9kZXZpY2VzOgogICAgICAgICAgICAgICAgIHJhaXNlIEFzc2Vy
dGlvbkVycm9yKCdObyBkZXZpY2VzIGF0dGFjaGVkLiBSZXN1bHQgb2YgImFkYiBkZXZpY2VzIjog
JXMnICUgcmVzdWx0KQpAQCAtMzM4LDE0ICszNjksMTQgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lk
RHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgICAgICBzZWxmLl9oYXNfc2V0dXAgPSBGYWxzZQog
ICAgICAgICBzZWxmLl9vcmlnaW5hbF9nb3Zlcm5vcnMgPSB7fQogICAgICAgICBzZWxmLl9kZXZp
Y2Vfc2VyaWFsID0gcG9ydC5fZ2V0X2RldmljZV9zZXJpYWwod29ya2VyX251bWJlcikKLSAgICAg
ICAgc2VsZi5fYWRiX2NvbW1hbmQgPSBbJ2FkYicsICctcycsIHNlbGYuX2RldmljZV9zZXJpYWxd
CisgICAgICAgIHNlbGYuX2FkYl9jb21tYW5kID0gW3BvcnQucGF0aF90b19hZGIoKSwgJy1zJywg
c2VsZi5fZGV2aWNlX3NlcmlhbF0KIAogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICBz
ZWxmLl90ZWFyZG93bl9wZXJmb3JtYW5jZSgpCiAgICAgICAgIHN1cGVyKENocm9taXVtQW5kcm9p
ZERyaXZlciwgc2VsZikuX19kZWxfXygpCiAKICAgICBkZWYgX3NldHVwX21kNXN1bV9hbmRfcHVz
aF9kYXRhX2lmX25lZWRlZChzZWxmKToKLSAgICAgICAgc2VsZi5fbWQ1c3VtX3BhdGggPSBzZWxm
Ll9wb3J0Ll9wYXRoX3RvX21kNXN1bSgpCisgICAgICAgIHNlbGYuX21kNXN1bV9wYXRoID0gc2Vs
Zi5fcG9ydC5wYXRoX3RvX21kNXN1bSgpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlX2V4aXN0
c19vbl9kZXZpY2UoTUQ1U1VNX0RFVklDRV9QQVRIKToKICAgICAgICAgICAgIGlmIG5vdCBzZWxm
Ll9wdXNoX3RvX2RldmljZShzZWxmLl9tZDVzdW1fcGF0aCwgTUQ1U1VNX0RFVklDRV9QQVRIKToK
ICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignQ291bGQgbm90IHB1c2ggbWQ1
c3VtIHRvIGRldmljZScpCkBAIC00MDMsNyArNDM0LDcgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lk
RHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShob3N0
X2ZpbGUsIGRldmljZV9maWxlKQogCiAgICAgZGVmIF9wdXNoX2V4ZWN1dGFibGUoc2VsZik6Ci0g
ICAgICAgIHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2VsZi5fcG9ydC5fcGF0aF90b19mb3J3
YXJkZXIoKSwgREVWSUNFX0ZPUldBUkRFUl9QQVRIKQorICAgICAgICBzZWxmLl9wdXNoX2ZpbGVf
aWZfbmVlZGVkKHNlbGYuX3BvcnQucGF0aF90b19mb3J3YXJkZXIoKSwgREVWSUNFX0ZPUldBUkRF
Ul9QQVRIKQogICAgICAgICBzZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYuX3BvcnQuX2J1
aWxkX3BhdGgoJ0R1bXBSZW5kZXJUcmVlLnBhaycpLCBERVZJQ0VfRFJUX0RJUiArICdEdW1wUmVu
ZGVyVHJlZS5wYWsnKQogICAgICAgICBzZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYuX3Bv
cnQuX2J1aWxkX3BhdGgoJ0R1bXBSZW5kZXJUcmVlX3Jlc291cmNlcycpLCBERVZJQ0VfRFJUX0RJ
UiArICdEdW1wUmVuZGVyVHJlZV9yZXNvdXJjZXMnKQogICAgICAgICBzZWxmLl9wdXNoX2ZpbGVf
aWZfbmVlZGVkKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ2FuZHJvaWRfbWFpbl9mb250cy54bWwn
KSwgREVWSUNFX0RSVF9ESVIgKyAnYW5kcm9pZF9tYWluX2ZvbnRzLnhtbCcpCkBAIC00MzMsMTEg
KzQ2NCwxMiBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVyLkRyaXZlcik6CiAg
ICAgICAgIG91dHB1dCA9IHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3Jvb3QnXSkKICAgICAgICAg
aWYgJ2FkYmQgaXMgYWxyZWFkeSBydW5uaW5nIGFzIHJvb3QnIGluIG91dHB1dDoKICAgICAgICAg
ICAgIHJldHVybgotICAgICAgICBlbGlmICdyZXN0YXJ0aW5nIGFkYmQgYXMgcm9vdCcgaW4gb3V0
cHV0OgotICAgICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnd2FpdC1mb3ItZGV2aWNl
J10pCi0gICAgICAgIGVsc2U6CisgICAgICAgIGVsaWYgbm90ICdyZXN0YXJ0aW5nIGFkYmQgYXMg
cm9vdCcgaW4gb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5fbG9nX2Vycm9yKCdVbnJlY29nbml6
ZWQgb3V0cHV0IGZyb20gYWRiIHJvb3Q6ICVzJyAlIG91dHB1dCkKIAorICAgICAgICAjIFJlZ2Fy
ZGxlc3MgdGhlIG91dHB1dCwgZ2l2ZSB0aGUgZGV2aWNlIGEgbW9tZW50IHRvIGNvbWUgYmFjayBv
bmxpbmUuCisgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3dhaXQtZm9yLWRldmljZSdd
KQorCiAgICAgZGVmIF9ydW5fYWRiX2NvbW1hbmQoc2VsZiwgY21kLCBpZ25vcmVfZXJyb3I9RmFs
c2UpOgogICAgICAgICBzZWxmLl9sb2dfZGVidWcoJ1J1biBhZGIgY29tbWFuZDogJyArIHN0cihj
bWQpKQogICAgICAgICBpZiBpZ25vcmVfZXJyb3I6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176753</attachid>
            <date>2012-11-29 10:18:29 -0800</date>
            <delta_ts>2012-11-29 13:28:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103581-20121129181602.patch</filename>
            <type>text/plain</type>
            <size>9309</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTI5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDBiZTVkZTJjYWJjZTg5NmE1OTVhNjZmNWJkYzFmOTU1
YTQ4Yjc3Ni4uZWQwZmYzODYwNWE5YTg3MmRhYzM5ODg5NzZiMDI2MTc1ZTgzMTU2OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2
IEBACisyMDEyLTExLTI5ICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBydW4tcGVyZi10ZXN0cyAtLWNocm9taXVtLWFuZHJvaWQgc2hvdWxkIG5vdCByZXF1
aXJlIGFkYiBpbiBteSBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDM1ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW1vdmUgdGhlIG5lZWQgdG8gaGF2ZSAiYWRiIiBhdmFpbGFibGUgaW4gdGhl
IHBhdGggZm9yIExheW91dCBhbmQgUGVyZm9ybWFuY2UKKyAgICAgICAgdGVzdHMuIFdlJ2xsIGRl
dGVybWluZSB0aGUgdmVyc2lvbnMgb2YgdGhlICJhZGIiIHZlcnNpb24gaW4gcGF0aCAoaWYgYW55
KSBhbmQKKyAgICAgICAgdGhlIG9uZSBwcm92aWRlZCBpbiB0aGUgQ2hyb21pdW0gQW5kcm9pZCBj
aGVja291dC4gVW5sZXNzIHRoZSAiYWRiIiBhdmFpbGFibGUKKyAgICAgICAgaW4gdGhlIHBhdGgg
aXMgbmV3ZXIsIHRoZSBwcm92aWRlZCB2ZXJzaW9uIHdpbGwgYmUgdXNlZC4KKworICAgICAgICBT
b21lIG90aGVyIG1pbm9yIG5pdHMgYWRkcmVzc2VkOgorICAgICAgICAtIFRoZSBwYXRoX3RvX2Zv
cndhcmRlci9wYXRoX3RvX21kNXN1bSBzaG91bGQgbm90IGJlIGluIHRoZSAicHJpdmF0ZSBvdmVy
cmlkZXMiCisgICAgICAgICAgc2VjdGlvbiwgYXMgdGhleSdyZSBub3Qgb3ZlcnJpZGluZyBhbnl0
aGluZyBhbmQgYXJlIHVzZWQgYnkgdGhlIGRyaXZlci4KKyAgICAgICAgLSBNYWtlIF9yZXN0YXJ0
X2FkYl9hc19yb290IHNsaWdodGx5IG1vcmUgcm9idXN0IGJ5IHdhaXRpbmcgZm9yIHRoZSBkZXZp
Y2UKKyAgICAgICAgICB0byBjb21lIGJhY2sgb25saW5lIHJlZ2FyZGxlc3Mgb2YgdGhlIG91dHB1
dC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fYW5kcm9pZC5weToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX19pbml0X18pOgor
ICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5jaGVja19idWlsZCk6CisgICAgICAgIChDaHJv
bWl1bUFuZHJvaWRQb3J0LnBhdGhfdG9fYWRiKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBv
cnQpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5wYXRoX3RvX2ZvcndhcmRlcik6Cisg
ICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0LnBhdGhfdG9fbWQ1c3VtKToKKyAgICAgICAgKENo
cm9taXVtQW5kcm9pZFBvcnQuX3BhdGhfdG9faGVscGVyKToKKyAgICAgICAgKENocm9taXVtQW5k
cm9pZFBvcnQuX2RldGVybWluZV9hZGJfdmVyc2lvbik6CisgICAgICAgIChDaHJvbWl1bUFuZHJv
aWRQb3J0Ll9nZXRfZGV2aWNlcyk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX19p
bml0X18pOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9zZXR1cF9tZDVzdW1fYW5k
X3B1c2hfZGF0YV9pZl9uZWVkZWQpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9w
dXNoX2V4ZWN1dGFibGUpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9yZXN0YXJ0
X2FkYl9hc19yb290KToKKwogMjAxMi0xMS0yOSAgU3VkYXJzYW5hIE5hZ2luZW5pICA8c3VkYXJz
YW5hLm5hZ2luZW5pQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFkZCBzdXBwb3J0
IGZvciBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlTW91c2VNb3ZlKCkgaW4gVGVzdFdlYktpdEFQ
SQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV9hbmRyb2lkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CmluZGV4IGMxOGNkMDk0MTg0M2IwMzA1MTM0NGM4NWU2
NTQxOGIwMDU3ZmQwODAuLjkxY2QzMTAwYzA4YWUwNzYwMzEyNGM2NjRkYTJiZmE4MGZiNDdhNmMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fYW5kcm9pZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKQEAgLTMyLDYgKzMyLDcgQEAgaW1wb3J0IGxvZ2dp
bmcKIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cwog
aW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRpbWUKIApAQCAtNDMsNyArNDQsNiBAQCBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBzZXJ2ZXJfcHJvY2VzcwogCiBfbG9nID0g
bG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKLQogIyBUaGUgcm9vdCBkaXJlY3RvcnkgZm9y
IHRlc3QgcmVzb3VyY2VzLCB3aGljaCBoYXMgdGhlIHNhbWUgc3RydWN0dXJlIGFzIHRoZQogIyBz
b3VyY2Ugcm9vdCBkaXJlY3Rvcnkgb2YgQ2hyb21pdW0uCiAjIFRoaXMgcGF0aCBpcyBkZWZpbmVk
IGluIENocm9taXVtJ3MgYmFzZS90ZXN0L3Rlc3Rfc3VwcG9ydF9hbmRyb2lkLmNjLgpAQCAtMTU1
LDYgKzE1NSw5IEBAIE1ENVNVTV9ERVZJQ0VfUEFUSCA9ICcvZGF0YS9sb2NhbC90bXAvJyArIE1E
NVNVTV9ERVZJQ0VfRklMRV9OQU1FCiBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVt
LkNocm9taXVtUG9ydCk6CiAgICAgcG9ydF9uYW1lID0gJ2Nocm9taXVtLWFuZHJvaWQnCiAKKyAg
ICAjIEF2b2lkIGluaXRpYWxpemluZyB0aGUgYWRiIHBhdGggW3dvcmtlciBjb3VudF0rMSB0aW1l
cyBieSBzdG9yaW5nIGl0IGFzIGEgc3RhdGljIG1lbWJlci4KKyAgICBfYWRiX3BhdGggPSBOb25l
CisKICAgICBGQUxMQkFDS19QQVRIUyA9IFsKICAgICAgICAgJ2Nocm9taXVtLWFuZHJvaWQnLAog
ICAgICAgICAnY2hyb21pdW0tbGludXgnLApAQCAtMjA4LDggKzIxMSw4IEBAIGNsYXNzIENocm9t
aXVtQW5kcm9pZFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKIAogICAgIGRlZiBjaGVja19i
dWlsZChzZWxmLCBuZWVkc19odHRwKToKICAgICAgICAgcmVzdWx0ID0gc3VwZXIoQ2hyb21pdW1B
bmRyb2lkUG9ydCwgc2VsZikuY2hlY2tfYnVpbGQobmVlZHNfaHR0cCkKLSAgICAgICAgcmVzdWx0
ID0gc2VsZi5fY2hlY2tfZmlsZV9leGlzdHMoc2VsZi5fcGF0aF90b19tZDVzdW0oKSwgJ21kNXN1
bSB1dGlsaXR5JykgYW5kIHJlc3VsdAotICAgICAgICByZXN1bHQgPSBzZWxmLl9jaGVja19maWxl
X2V4aXN0cyhzZWxmLl9wYXRoX3RvX2ZvcndhcmRlcigpLCAnZm9yd2FyZGVyIHV0aWxpdHknKSBh
bmQgcmVzdWx0CisgICAgICAgIHJlc3VsdCA9IHNlbGYuX2NoZWNrX2ZpbGVfZXhpc3RzKHNlbGYu
cGF0aF90b19tZDVzdW0oKSwgJ21kNXN1bSB1dGlsaXR5JykgYW5kIHJlc3VsdAorICAgICAgICBy
ZXN1bHQgPSBzZWxmLl9jaGVja19maWxlX2V4aXN0cyhzZWxmLnBhdGhfdG9fZm9yd2FyZGVyKCks
ICdmb3J3YXJkZXIgdXRpbGl0eScpIGFuZCByZXN1bHQKICAgICAgICAgaWYgbm90IHJlc3VsdDoK
ICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0ZvciBjb21wbGV0ZSBBbmRyb2lkIGJ1aWxkIHJlcXVp
cmVtZW50cywgcGxlYXNlIHNlZTonKQogICAgICAgICAgICAgX2xvZy5lcnJvcignJykKQEAgLTI2
MCw2ICsyNjMsMzMgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbWl1
bVBvcnQpOgogICAgICAgICAjIE92ZXJyaWRlIHRvIHJldHVybiB0aGUgYWN0dWFsIER1bXBSZW5k
ZXJUcmVlIGNvbW1hbmQgbGluZS4KICAgICAgICAgcmV0dXJuIHNlbGYuY3JlYXRlX2RyaXZlcigw
KS5fZHJ0X2NtZF9saW5lKHNlbGYuZ2V0X29wdGlvbigncGl4ZWxfdGVzdHMnKSwgW10pCiAKKyAg
ICBkZWYgcGF0aF90b19hZGIoc2VsZik6CisgICAgICAgIGlmIENocm9taXVtQW5kcm9pZFBvcnQu
X2FkYl9wYXRoOgorICAgICAgICAgICAgcmV0dXJuIENocm9taXVtQW5kcm9pZFBvcnQuX2FkYl9w
YXRoCisKKyAgICAgICAgcHJvdmlkZWRfYWRiX3BhdGggPSBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1
bV9iYXNlKCd0aGlyZF9wYXJ0eScsICdhbmRyb2lkX3Rvb2xzJywgJ3NkaycsICdwbGF0Zm9ybS10
b29scycsICdhZGInKQorCisgICAgICAgIHBhdGhfdmVyc2lvbiA9IHNlbGYuX2RldGVybWluZV9h
ZGJfdmVyc2lvbignYWRiJykKKyAgICAgICAgcHJvdmlkZWRfdmVyc2lvbiA9IHNlbGYuX2RldGVy
bWluZV9hZGJfdmVyc2lvbihwcm92aWRlZF9hZGJfcGF0aCkKKyAgICAgICAgYXNzZXJ0IHByb3Zp
ZGVkX3ZlcnNpb24sICdUaGUgY2hlY2tlZCBpbiBBbmRyb2lkIFNESyBpcyBtaXNzaW5nLiBBcmUg
eW91IHN1cmUgeW91IHJhbiB1cGRhdGUtd2Via2l0IC0tY2hyb21pdW0tYW5kcm9pZD8nCisKKyAg
ICAgICAgaWYgbm90IHBhdGhfdmVyc2lvbjoKKyAgICAgICAgICAgIENocm9taXVtQW5kcm9pZFBv
cnQuX2FkYl9wYXRoID0gcHJvdmlkZWRfYWRiX3BhdGgKKyAgICAgICAgZWxpZiBwcm92aWRlZF92
ZXJzaW9uID4gcGF0aF92ZXJzaW9uOgorICAgICAgICAgICAgIyBGSVhNRTogVGhlIFByaW50ZXIg
aXNuJ3QgaW5pdGlhbGl6ZWQgd2hlbiB0aGlzIGlzIGNhbGxlZCwgc28gdXNpbmcgX2xvZyB3b3Vs
ZCBqdXN0IHNob3cgYW4gdW5pdGlhbGl6ZWQgbG9nZ2VyIGVycm9yLgorICAgICAgICAgICAgcHJp
bnQgPj4gc3lzLnN0ZGVyciwgJ1RoZSAiYWRiIiB2ZXJzaW9uIGluIHlvdXIgcGF0aCBpcyBvbGRl
ciB0aGFuIHRoZSBvbmUgY2hlY2tlZCBpbiwgY29uc2lkZXIgdXBkYXRpbmcgeW91ciBsb2NhbCBB
bmRyb2lkIFNESy4gVXNpbmcgdGhlIGNoZWNrZWQgaW4gb25lLicKKyAgICAgICAgICAgIENocm9t
aXVtQW5kcm9pZFBvcnQuX2FkYl9wYXRoID0gcHJvdmlkZWRfYWRiX3BhdGgKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIENocm9taXVtQW5kcm9pZFBvcnQuX2FkYl9wYXRoID0gJ2FkYicKKwor
ICAgICAgICByZXR1cm4gQ2hyb21pdW1BbmRyb2lkUG9ydC5fYWRiX3BhdGgKKworICAgIGRlZiBw
YXRoX3RvX2ZvcndhcmRlcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgo
J2ZvcndhcmRlcicpCisKKyAgICBkZWYgcGF0aF90b19tZDVzdW0oc2VsZik6CisgICAgICAgIHJl
dHVybiBzZWxmLl9idWlsZF9wYXRoKE1ENVNVTV9ERVZJQ0VfRklMRV9OQU1FKQorCiAgICAgIyBP
dmVycmlkZGVuIHByaXZhdGUgZnVuY3Rpb25zLgogCiAgICAgZGVmIF9idWlsZF9wYXRoKHNlbGYs
ICpjb21wcyk6CkBAIC0yODAsMTIgKzMxMCw2IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQo
Y2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICBkZWYgX3BhdGhfdG9faGVscGVyKHNlbGYpOgog
ICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVmIF9wYXRoX3RvX2ZvcndhcmRlcihzZWxmKToK
LSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoJ2ZvcndhcmRlcicpCi0KLSAgICBkZWYg
X3BhdGhfdG9fbWQ1c3VtKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChN
RDVTVU1fREVWSUNFX0ZJTEVfTkFNRSkKLQogICAgIGRlZiBfcGF0aF90b19pbWFnZV9kaWZmKHNl
bGYpOgogICAgICAgICByZXR1cm4gc2VsZi5faG9zdF9wb3J0Ll9wYXRoX3RvX2ltYWdlX2RpZmYo
KQogCkBAIC0zMDksMTAgKzMzMywyMSBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9t
aXVtLkNocm9taXVtUG9ydCk6CiAKICAgICAjIExvY2FsIHByaXZhdGUgZnVuY3Rpb25zLgogCisg
ICAgZGVmIF9kZXRlcm1pbmVfYWRiX3ZlcnNpb24oc2VsZiwgYWRiX3BhdGgpOgorICAgICAgICBy
ZV92ZXJzaW9uID0gcmUuY29tcGlsZSgnXi4qdmVyc2lvbiAoW1xkXC5dKykkJykKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFth
ZGJfcGF0aCwgJ3ZlcnNpb24nXSwgZXJyb3JfaGFuZGxlcj1zZWxmLl9leGVjdXRpdmUuaWdub3Jl
X2Vycm9yKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25l
CisgICAgICAgIHJlc3VsdCA9IHJlX3ZlcnNpb24ubWF0Y2gob3V0cHV0KQorICAgICAgICBpZiBu
b3Qgb3V0cHV0IG9yIG5vdCByZXN1bHQ6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAg
ICByZXR1cm4gW2ludChuKSBmb3IgbiBpbiByZXN1bHQuZ3JvdXAoMSkuc3BsaXQoJy4nKV0KKwog
ICAgIGRlZiBfZ2V0X2RldmljZXMoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9kZXZpY2Vz
OgogICAgICAgICAgICAgcmVfZGV2aWNlID0gcmUuY29tcGlsZSgnXihbYS16QS1aMC05XzouLV0r
KVx0ZGV2aWNlJCcsIHJlLk1VTFRJTElORSkKLSAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2V4
ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ2FkYicsICdkZXZpY2VzJ10sIGVycm9yX2hhbmRsZXI9c2Vs
Zi5fZXhlY3V0aXZlLmlnbm9yZV9lcnJvcikKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2V4
ZWN1dGl2ZS5ydW5fY29tbWFuZChbc2VsZi5wYXRoX3RvX2FkYigpLCAnZGV2aWNlcyddLCBlcnJv
cl9oYW5kbGVyPXNlbGYuX2V4ZWN1dGl2ZS5pZ25vcmVfZXJyb3IpCiAgICAgICAgICAgICBzZWxm
Ll9kZXZpY2VzID0gcmVfZGV2aWNlLmZpbmRhbGwocmVzdWx0KQogICAgICAgICAgICAgaWYgbm90
IHNlbGYuX2RldmljZXM6CiAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ05v
IGRldmljZXMgYXR0YWNoZWQuIFJlc3VsdCBvZiAiYWRiIGRldmljZXMiOiAlcycgJSByZXN1bHQp
CkBAIC0zMzgsMTQgKzM3MywxNCBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVy
LkRyaXZlcik6CiAgICAgICAgIHNlbGYuX2hhc19zZXR1cCA9IEZhbHNlCiAgICAgICAgIHNlbGYu
X29yaWdpbmFsX2dvdmVybm9ycyA9IHt9CiAgICAgICAgIHNlbGYuX2RldmljZV9zZXJpYWwgPSBw
b3J0Ll9nZXRfZGV2aWNlX3NlcmlhbCh3b3JrZXJfbnVtYmVyKQotICAgICAgICBzZWxmLl9hZGJf
Y29tbWFuZCA9IFsnYWRiJywgJy1zJywgc2VsZi5fZGV2aWNlX3NlcmlhbF0KKyAgICAgICAgc2Vs
Zi5fYWRiX2NvbW1hbmQgPSBbcG9ydC5wYXRoX3RvX2FkYigpLCAnLXMnLCBzZWxmLl9kZXZpY2Vf
c2VyaWFsXQogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgIHNlbGYuX3RlYXJkb3du
X3BlcmZvcm1hbmNlKCkKICAgICAgICAgc3VwZXIoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLCBzZWxm
KS5fX2RlbF9fKCkKIAogICAgIGRlZiBfc2V0dXBfbWQ1c3VtX2FuZF9wdXNoX2RhdGFfaWZfbmVl
ZGVkKHNlbGYpOgotICAgICAgICBzZWxmLl9tZDVzdW1fcGF0aCA9IHNlbGYuX3BvcnQuX3BhdGhf
dG9fbWQ1c3VtKCkKKyAgICAgICAgc2VsZi5fbWQ1c3VtX3BhdGggPSBzZWxmLl9wb3J0LnBhdGhf
dG9fbWQ1c3VtKCkKICAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVfZXhpc3RzX29uX2RldmljZShN
RDVTVU1fREVWSUNFX1BBVEgpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX3B1c2hfdG9fZGV2
aWNlKHNlbGYuX21kNXN1bV9wYXRoLCBNRDVTVU1fREVWSUNFX1BBVEgpOgogICAgICAgICAgICAg
ICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdDb3VsZCBub3QgcHVzaCBtZDVzdW0gdG8gZGV2aWNl
JykKQEAgLTQwMyw3ICs0MzgsNyBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVy
LkRyaXZlcik6CiAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKGhvc3RfZmlsZSwgZGV2aWNl
X2ZpbGUpCiAKICAgICBkZWYgX3B1c2hfZXhlY3V0YWJsZShzZWxmKToKLSAgICAgICAgc2VsZi5f
cHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9wb3J0Ll9wYXRoX3RvX2ZvcndhcmRlcigpLCBERVZJ
Q0VfRk9SV0FSREVSX1BBVEgpCisgICAgICAgIHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2Vs
Zi5fcG9ydC5wYXRoX3RvX2ZvcndhcmRlcigpLCBERVZJQ0VfRk9SV0FSREVSX1BBVEgpCiAgICAg
ICAgIHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnRHVt
cFJlbmRlclRyZWUucGFrJyksIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlLnBhaycp
CiAgICAgICAgIHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2VsZi5fcG9ydC5fYnVpbGRfcGF0
aCgnRHVtcFJlbmRlclRyZWVfcmVzb3VyY2VzJyksIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5k
ZXJUcmVlX3Jlc291cmNlcycpCiAgICAgICAgIHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2Vs
Zi5fcG9ydC5fYnVpbGRfcGF0aCgnYW5kcm9pZF9tYWluX2ZvbnRzLnhtbCcpLCBERVZJQ0VfRFJU
X0RJUiArICdhbmRyb2lkX21haW5fZm9udHMueG1sJykKQEAgLTQzMywxMSArNDY4LDEyIEBAIGNs
YXNzIENocm9taXVtQW5kcm9pZERyaXZlcihkcml2ZXIuRHJpdmVyKToKICAgICAgICAgb3V0cHV0
ID0gc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsncm9vdCddKQogICAgICAgICBpZiAnYWRiZCBpcyBh
bHJlYWR5IHJ1bm5pbmcgYXMgcm9vdCcgaW4gb3V0cHV0OgogICAgICAgICAgICAgcmV0dXJuCi0g
ICAgICAgIGVsaWYgJ3Jlc3RhcnRpbmcgYWRiZCBhcyByb290JyBpbiBvdXRwdXQ6Ci0gICAgICAg
ICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWyd3YWl0LWZvci1kZXZpY2UnXSkKLSAgICAgICAg
ZWxzZToKKyAgICAgICAgZWxpZiBub3QgJ3Jlc3RhcnRpbmcgYWRiZCBhcyByb290JyBpbiBvdXRw
dXQ6CiAgICAgICAgICAgICBzZWxmLl9sb2dfZXJyb3IoJ1VucmVjb2duaXplZCBvdXRwdXQgZnJv
bSBhZGIgcm9vdDogJXMnICUgb3V0cHV0KQogCisgICAgICAgICMgUmVnYXJkbGVzcyB0aGUgb3V0
cHV0LCBnaXZlIHRoZSBkZXZpY2UgYSBtb21lbnQgdG8gY29tZSBiYWNrIG9ubGluZS4KKyAgICAg
ICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnd2FpdC1mb3ItZGV2aWNlJ10pCisKICAgICBkZWYg
X3J1bl9hZGJfY29tbWFuZChzZWxmLCBjbWQsIGlnbm9yZV9lcnJvcj1GYWxzZSk6CiAgICAgICAg
IHNlbGYuX2xvZ19kZWJ1ZygnUnVuIGFkYiBjb21tYW5kOiAnICsgc3RyKGNtZCkpCiAgICAgICAg
IGlmIGlnbm9yZV9lcnJvcjoK
</data>

          </attachment>
      

    </bug>

</bugzilla>