<?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>95346</bug_id>
          
          <creation_ts>2012-08-29 08:18:35 -0700</creation_ts>
          <short_desc>Get rid of device/host clock synchronization.</short_desc>
          <delta_ts>2012-09-11 10:27:42 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Android</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>
          <dependson>96393</dependson>
          <blocked>91872</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Philippe Liard">pliard</reporter>
          <assigned_to name="Peter Beverloo">peter</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dpranke</cc>
    
    <cc>jamesr</cc>
    
    <cc>ojan</cc>
    
    <cc>peter</cc>
    
    <cc>peter+ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>707462</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-08-29 08:18:35 -0700</bug_when>
    <thetext>This prevents us from running tests on non-rooted devices.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707470</commentid>
    <comment_count>1</comment_count>
      <attachid>161233</attachid>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-08-29 08:27:31 -0700</bug_when>
    <thetext>Created attachment 161233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707492</commentid>
    <comment_count>2</comment_count>
      <attachid>161233</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-08-29 08:47:16 -0700</bug_when>
    <thetext>Comment on attachment 161233
Patch

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

Thank you Philippe! A few more comments.

&gt; Tools/ChangeLog:3
&gt; +        Support LayoutTests on non-rooted devices for Chromium Android.

This should be equal to the bug&apos;s title. Maybe this would work?

Get rid of device/host clock synchronization for Chromium Android.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:44
&gt; +    os.path.join(os.environ[&apos;CHROME_SRC&apos;], &apos;build&apos;, &apos;android&apos;, &apos;pylib&apos;))

Peter:
I&apos;m not comfortable introducing this dependency. We&apos;re trying to get rid of dependencies on environment variable (like CHROME_SRC), and since we need adb commands in order parts of WebKit as well, I&apos;d prefer to have a smaller but similar runner on the WebKit side. This is out of scope, but is there any way we can work around needing this right now?

Philippe:
I can avoid relying on $CHROME_SRC and use a relative path assuming that this file won&apos;t be moved. Regarding the use of android_commands, AndroidCommands.PushIfNeeded() provides a way to sync data files with the device by using a custom implementation of md5sum (written in C++ and depending on Chromium&apos;s base/). Although we could have our own Python layer for that in WebKit, we can hardly do the same for md5sum (I don&apos;t think you want to duplicate it either). So it seems that we would have to use Chromium&apos;s md5sum (being submitted under tools/android/md5sum) anyway.

Since we own that file, which is Chromium-specific, I think that preventing us from depending on Chromium might be an unnecessary constraint. I agree that we could introduce at least a thin layer in WebKit, calling Chromium&apos;s python, rather than calling it directly though.
But I&apos;m sure that I don&apos;t see the full picture since this is my first WebKit contribution. What do you think? Is this dependency to Chromium the only one?

Peter:
The relative path would be different depending on whether layout tests are being run in a Chromium or WebKit environment (from WebKit&apos;s root: ../../build/android/pylib/ for Chromium versus Source/WebKit/chromium/build/android/pylib/ for WebKit). I don&apos;t think anything else in the layout tests runners depend on Chromium code right now, which also is the reason we have our own adb interface. Since we only need a subset of functionality here, and we need it for running other targets as well, eventually we&apos;ll probably end up with a script of our own.

Going back to this case: CHROME_SRC will not be available when running layout tests in a WebKit environment, which is my worry. If we can add the md5sum target as a dependency of DumpRenderTree, will that allow you to implement a similar PushIfNeeded method in the ChromiumAndroidDriver?

&gt; LayoutTests/http/tests/cache/resources/current-time.cgi:5
&gt; +print time()

nit: statements end with a semi-colon.

&gt; LayoutTests/http/tests/cache/resources/subresource-test.js:28
&gt; +var serverClientTimeDelta = getServerDate().getTime() - new Date().getTime();

Thanks! Very minor nit for readability: maybe define this property after the getServerDate() function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707529</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-08-29 09:36:00 -0700</bug_when>
    <thetext>Note that you can use self.path_from_chromium_base() in the python code instead of relying on CHROME_SRC. That will work reliably in both a webkit-in-chromium or chromium-in-webkit checkout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707547</commentid>
    <comment_count>4</comment_count>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-08-29 09:52:02 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Note that you can use self.path_from_chromium_base() in the python code instead of relying on CHROME_SRC. That will work reliably in both a webkit-in-chromium or chromium-in-webkit checkout.

Nice. Going back to your comment Peter, can I use what Dirk suggested to include the android_commands module and use AndroidCommands.PushIfNeeded() or do we still really want to avoid this dependency (which would make this patch much larger)? My understanding is that if we have a way to fetch chromium&apos;s path, it might not be totally alien to depend on some code coming from it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708539</commentid>
    <comment_count>5</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-08-30 05:56:27 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Note that you can use self.path_from_chromium_base() in the python code instead of relying on CHROME_SRC. That will work reliably in both a webkit-in-chromium or chromium-in-webkit checkout.
&gt; 
&gt; Nice. Going back to your comment Peter, can I use what Dirk suggested to include the android_commands module and use AndroidCommands.PushIfNeeded() or do we still really want to avoid this dependency (which would make this patch much larger)? My understanding is that if we have a way to fetch chromium&apos;s path, it might not be totally alien to depend on some code coming from it.

There are a number of similar dependencies WebKit has on Chromium already. The implication of starting to rely on test-runner scripts is that refactoring / &quot;API&quot; changes would need the new method to be introduced on the Chromium side, then usage of the old versions removed within WebKit, before the old code can be removed. A cross-project three-way patch is significantly more painful than a single patch.

Given the amount of random build breakages due to Chromium infrastructure changes recently, we should try to minimize the number of dependencies until the code stabilizes. While android_commands.py probably will be more stable, our branch still has a 165 line diff and it&apos;s not unthinkable more refactoring will happen too.

As discussed on chat, adding a dependency to md5sum in DumpRenderTree&apos;s gyp configuration is perfectly fine. It&apos;ll introduce some additional code for now, but we&apos;ll be able to clean that up later again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709518</commentid>
    <comment_count>6</comment_count>
      <attachid>161674</attachid>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-08-31 05:39:45 -0700</bug_when>
    <thetext>Created attachment 161674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709526</commentid>
    <comment_count>7</comment_count>
      <attachid>161674</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-31 05:46:58 -0700</bug_when>
    <thetext>Comment on attachment 161674
Patch

Attachment 161674 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13725122</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709533</commentid>
    <comment_count>8</comment_count>
      <attachid>161674</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-08-31 05:51:26 -0700</bug_when>
    <thetext>Comment on attachment 161674
Patch

Attachment 161674 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13728063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709536</commentid>
    <comment_count>9</comment_count>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-08-31 05:52:41 -0700</bug_when>
    <thetext>FYI, the try bots fail because this CL depends on https://chromiumcodereview.appspot.com/10867008/ which is not submitted yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709539</commentid>
    <comment_count>10</comment_count>
      <attachid>161680</attachid>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-08-31 05:55:33 -0700</bug_when>
    <thetext>Created attachment 161680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709543</commentid>
    <comment_count>11</comment_count>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-08-31 05:57:29 -0700</bug_when>
    <thetext>I uploaded a new patch. Is that the right way to iterate on a CL? I&apos;m still new to the WebKit contribution process :)

Quick question: does ChromiumAndroidDriver need to be thread safe? I added a static variable which is not guarded by any lock at the moment. I supposed that the class was accessed from a single thread. Is that correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709549</commentid>
    <comment_count>12</comment_count>
      <attachid>161680</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-31 06:03:34 -0700</bug_when>
    <thetext>Comment on attachment 161680
Patch

Attachment 161680 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13728069</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709561</commentid>
    <comment_count>13</comment_count>
      <attachid>161680</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-08-31 06:13:40 -0700</bug_when>
    <thetext>Comment on attachment 161680
Patch

Attachment 161680 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13721160</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711867</commentid>
    <comment_count>14</comment_count>
      <attachid>162197</attachid>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-09-05 02:36:00 -0700</bug_when>
    <thetext>Created attachment 162197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711868</commentid>
    <comment_count>15</comment_count>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-09-05 02:38:29 -0700</bug_when>
    <thetext>I&apos;ve just re-uploaded the exact same patch now that the other CL on the chromium side has landed. This will re-trigger the try bots which will be green hopefully this time.

This is also a way to be back to the top of your inbox :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711956</commentid>
    <comment_count>16</comment_count>
      <attachid>162220</attachid>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-09-05 04:55:30 -0700</bug_when>
    <thetext>Created attachment 162220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711959</commentid>
    <comment_count>17</comment_count>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-09-05 05:06:03 -0700</bug_when>
    <thetext>I uploaded a new patch since the old one didn&apos;t apply correctly anymore to the current master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711995</commentid>
    <comment_count>18</comment_count>
      <attachid>162220</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-05 06:04:24 -0700</bug_when>
    <thetext>Comment on attachment 162220
Patch

Attachment 162220 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13753767</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712002</commentid>
    <comment_count>19</comment_count>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-09-05 06:12:29 -0700</bug_when>
    <thetext>Ah I forgot that we need to roll a new revision of Chromium too. I will re-trigger the try bots by uploading a new patch once we did that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712116</commentid>
    <comment_count>20</comment_count>
      <attachid>162220</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-05 09:10:18 -0700</bug_when>
    <thetext>Comment on attachment 162220
Patch

Attachment 162220 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13744971</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715965</commentid>
    <comment_count>21</comment_count>
      <attachid>163098</attachid>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-09-10 05:31:43 -0700</bug_when>
    <thetext>Created attachment 163098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715968</commentid>
    <comment_count>22</comment_count>
      <attachid>163098</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-10 05:34:43 -0700</bug_when>
    <thetext>Comment on attachment 163098
Patch

Attachment 163098 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13804539</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715971</commentid>
    <comment_count>23</comment_count>
      <attachid>163098</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-09-10 05:44:43 -0700</bug_when>
    <thetext>Comment on attachment 163098
Patch

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

A few minor nits. Looks fine overall, except for the build failure (I commented on that later on).

&gt; Tools/DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:128
&gt; +                &apos;&lt;(chromium_src_dir)/tools/android/md5sum/md5sum.gyp:md5sum&apos;,

This needs to be specific to Android, i.e. in a conditional block.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:328
&gt; +        if not worker_number in self._data_already_pushed_for_worker:

The _data_already_pushed_for_worker variable is a member of this class, and since this is the __init__ method, won&apos;t it always be empty at this point?

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:385
&gt; +                                 stdout=subprocess.PIPE).stdout)

nit: It&apos;s fine to leave it like this (since it may become unreadable otherwise), but WebKit has no limit on line lengths.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:677
&gt; +                if last_char in [&apos;#&apos;, &apos;$&apos;]:

nit: could use a tuple here (which is preferred for lists in gyp).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715984</commentid>
    <comment_count>24</comment_count>
      <attachid>163105</attachid>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-09-10 05:54:32 -0700</bug_when>
    <thetext>Created attachment 163105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716014</commentid>
    <comment_count>25</comment_count>
      <attachid>163098</attachid>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-09-10 06:23:43 -0700</bug_when>
    <thetext>Comment on attachment 163098
Patch

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

&gt;&gt; Tools/DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:128
&gt;&gt; +                &apos;&lt;(chromium_src_dir)/tools/android/md5sum/md5sum.gyp:md5sum&apos;,
&gt; 
&gt; This needs to be specific to Android, i.e. in a conditional block.

Indeed.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:328
&gt;&gt; +        if not worker_number in self._data_already_pushed_for_worker:
&gt; 
&gt; The _data_already_pushed_for_worker variable is a member of this class, and since this is the __init__ method, won&apos;t it always be empty at this point?

I&apos;m still quite new to Python. I wanted to make it a static member. Isn&apos;t that the case? I read somewhere that member variables declared in the non-method scope are static.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716017</commentid>
    <comment_count>26</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-09-10 06:27:50 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 163098 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163098&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:128
&gt; &gt;&gt; +                &apos;&lt;(chromium_src_dir)/tools/android/md5sum/md5sum.gyp:md5sum&apos;,
&gt; &gt; 
&gt; &gt; This needs to be specific to Android, i.e. in a conditional block.
&gt; 
&gt; Indeed.
&gt; 
&gt; &gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:328
&gt; &gt;&gt; +        if not worker_number in self._data_already_pushed_for_worker:
&gt; &gt; 
&gt; &gt; The _data_already_pushed_for_worker variable is a member of this class, and since this is the __init__ method, won&apos;t it always be empty at this point?
&gt; 
&gt; I&apos;m still quite new to Python. I wanted to make it a static member. Isn&apos;t that the case? I read somewhere that member variables declared in the non-method scope are static.

Ah, I see. You probably should be using &quot;ChromiumAndroidDriver._data_already_pushed_for_worker&quot; to access the variable, then.

The rest LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716055</commentid>
    <comment_count>27</comment_count>
      <attachid>163125</attachid>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-09-10 07:16:04 -0700</bug_when>
    <thetext>Created attachment 163125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716057</commentid>
    <comment_count>28</comment_count>
      <attachid>163098</attachid>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-09-10 07:18:06 -0700</bug_when>
    <thetext>Comment on attachment 163098
Patch

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:328
&gt;&gt;&gt; +        if not worker_number in self._data_already_pushed_for_worker:
&gt;&gt; 
&gt;&gt; The _data_already_pushed_for_worker variable is a member of this class, and since this is the __init__ method, won&apos;t it always be empty at this point?
&gt; 
&gt; I&apos;m still quite new to Python. I wanted to make it a static member. Isn&apos;t that the case? I read somewhere that member variables declared in the non-method scope are static.

I have updated this part to refer to the static variable through &apos;ChromiumAndroidDriver&apos; rather than &apos;self&apos; which doesn&apos;t make sense for a non-instance member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716058</commentid>
    <comment_count>29</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-09-10 07:22:02 -0700</bug_when>
    <thetext>Thanks! Adam, could you do a formal review please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716081</commentid>
    <comment_count>30</comment_count>
      <attachid>163125</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-10 08:03:33 -0700</bug_when>
    <thetext>Comment on attachment 163125
Patch

Attachment 163125 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13796915

New failing tests:
http/tests/cache/subresource-expiration-2.html
http/tests/cache/subresource-expiration-1.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716083</commentid>
    <comment_count>31</comment_count>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-09-10 08:06:06 -0700</bug_when>
    <thetext>I&apos;m looking at the test failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716093</commentid>
    <comment_count>32</comment_count>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-09-10 08:20:06 -0700</bug_when>
    <thetext>I believe the failure is due to the missing execution permission on current-time.cgi. I will re-upload a patch right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716095</commentid>
    <comment_count>33</comment_count>
      <attachid>163137</attachid>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-09-10 08:22:40 -0700</bug_when>
    <thetext>Created attachment 163137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716573</commentid>
    <comment_count>34</comment_count>
      <attachid>163137</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-09-10 15:11:07 -0700</bug_when>
    <thetext>Comment on attachment 163137
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:410
&gt; +                                 &apos;Please pass --%s.&apos;, configuration, most_recent_binary, most_recent_binary.lower())

As an aside, this warning has always kinda annoyed me since there&apos;s no way to make it go away; if you&apos;re trying to run both Release and Debug, one will always be newer than the other (unless you hack the mtime, of course). I wonder how much this warning actually helps people.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:385
&gt; +                                 stdout=subprocess.PIPE).stdout)

You can use self._port.host.executive.popen() here and below -  that&apos;s slightly preferred to calling subprocess.Popen() directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716988</commentid>
    <comment_count>35</comment_count>
      <attachid>163313</attachid>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-09-11 02:40:43 -0700</bug_when>
    <thetext>Created attachment 163313
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716993</commentid>
    <comment_count>36</comment_count>
      <attachid>163137</attachid>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-09-11 02:47:17 -0700</bug_when>
    <thetext>Comment on attachment 163137
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:410
&gt;&gt; +                                 &apos;Please pass --%s.&apos;, configuration, most_recent_binary, most_recent_binary.lower())
&gt; 
&gt; As an aside, this warning has always kinda annoyed me since there&apos;s no way to make it go away; if you&apos;re trying to run both Release and Debug, one will always be newer than the other (unless you hack the mtime, of course). I wonder how much this warning actually helps people.

This kind of code is duplicated across multiple places in the Chromium Android Python codebase. We clearly miss a way to figure out the build type in a single line regardless of the language (Python or Shell). I think we have a bug tracking that. If I remember correctly we plan to make GYP output the build type to a file in out/. This code can be updated once we landed that change.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:385
&gt;&gt; +                                 stdout=subprocess.PIPE).stdout)
&gt; 
&gt; You can use self._port.host.executive.popen() here and below -  that&apos;s slightly preferred to calling subprocess.Popen() directly.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717013</commentid>
    <comment_count>37</comment_count>
      <attachid>163313</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-09-11 03:18:30 -0700</bug_when>
    <thetext>Comment on attachment 163313
Patch

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

Thanks Philippe!

&gt; Tools/ChangeLog:5
&gt; +

This needs a &quot;Reviewed by&quot; line. As Dirk already reviewed it, it&apos;s fine to add &quot;Reviewed by Dirk Pranke&quot;.

&gt; LayoutTests/ChangeLog:5
&gt; +

dito.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717080</commentid>
    <comment_count>38</comment_count>
      <attachid>163341</attachid>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-09-11 05:35:10 -0700</bug_when>
    <thetext>Created attachment 163341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717082</commentid>
    <comment_count>39</comment_count>
      <attachid>163313</attachid>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-09-11 05:37:27 -0700</bug_when>
    <thetext>Comment on attachment 163313
Patch

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

&gt;&gt; Tools/ChangeLog:5
&gt;&gt; +
&gt; 
&gt; This needs a &quot;Reviewed by&quot; line. As Dirk already reviewed it, it&apos;s fine to add &quot;Reviewed by Dirk Pranke&quot;.

Done.

&gt;&gt; LayoutTests/ChangeLog:5
&gt;&gt; +
&gt; 
&gt; dito.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717099</commentid>
    <comment_count>40</comment_count>
      <attachid>163345</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-09-11 06:17:27 -0700</bug_when>
    <thetext>Created attachment 163345
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717101</commentid>
    <comment_count>41</comment_count>
      <attachid>163345</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-09-11 06:18:24 -0700</bug_when>
    <thetext>Comment on attachment 163345
Patch for landing

Putting on the queue. I only touched _setup_md5sum() to make sure it works both on Chromium and on WebKit, of course with Philippe&apos;s consent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717131</commentid>
    <comment_count>42</comment_count>
      <attachid>163345</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-11 07:10:25 -0700</bug_when>
    <thetext>Comment on attachment 163345
Patch for landing

Clearing flags on attachment: 163345

Committed r128181: &lt;http://trac.webkit.org/changeset/128181&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717132</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-11 07:10:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717285</commentid>
    <comment_count>44</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-11 09:45:13 -0700</bug_when>
    <thetext>This broke webkitpy-test, at least on mac:

http://build.webkit.org/builders/Chromium%20Linux%20Release%20%28Tests%29/builds/38183/steps/webkitpy-test/logs/stdio

[462/1616] webkitpy.layout_tests.port.chromium_android_unittest.ChromiumAndroidDriverTest.test_cmd_line erred:
  Traceback (most recent call last):
    File &quot;/mnt/data/b/WebKit-BuildSlave/chromium-linux-release-tests/build/Tools/Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py&quot;, line 175, in setUp
      self.driver = chromium_android.ChromiumAndroidDriver(self.port, worker_number=0, pixel_tests=True)
    File &quot;/mnt/data/b/WebKit-BuildSlave/chromium-linux-release-tests/build/Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py&quot;, line 327, in __init__
      self._setup_md5sum()
    File &quot;/mnt/data/b/WebKit-BuildSlave/chromium-linux-release-tests/build/Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py&quot;, line 340, in _setup_md5sum
      assert os.path.exists(self._md5sum_path)
  AssertionError</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717287</commentid>
    <comment_count>45</comment_count>
    <who name="Philippe Liard">pliard</who>
    <bug_when>2012-09-11 09:46:38 -0700</bug_when>
    <thetext>Yeah it did. Sorry for the inconvenience. The fix has just landed: https://bugs.webkit.org/show_bug.cgi?id=96393.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717297</commentid>
    <comment_count>46</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-09-11 09:53:25 -0700</bug_when>
    <thetext>The Qt bot is happy again:
http://build.webkit.org/builders/GTK%20Linux%2032-bit%20Release/builds/26726/steps/webkitpy-test/logs/stdio

Closing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717341</commentid>
    <comment_count>47</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-09-11 10:27:42 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (From update of attachment 163137 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163137&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:410
&gt; &gt;&gt; +                                 &apos;Please pass --%s.&apos;, configuration, most_recent_binary, most_recent_binary.lower())
&gt; &gt; 
&gt; &gt; As an aside, this warning has always kinda annoyed me since there&apos;s no way to make it go away; if you&apos;re trying to run both Release and Debug, one will always be newer than the other (unless you hack the mtime, of course). I wonder how much this warning actually helps people.
&gt; 
&gt; This kind of code is duplicated across multiple places in the Chromium Android Python codebase. We clearly miss a way to figure out the build type in a single line regardless of the language (Python or Shell). I think we have a bug tracking that. If I remember correctly we plan to make GYP output the build type to a file in out/. This code can be updated once we landed that change.
&gt; 

You lost me here. I think you&apos;re talking about something different from what I&apos;m talking about; are you talking about picking the &quot;correct&quot; configuration by default so that you don&apos;t have to specify either --release or --debug to get the one you want? You can use set-webkit-configuration to specify that. I&apos;m talking about what happens when you have *both* release and debug configurations and are alternating between them - one of them will *always* produce this error.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161233</attachid>
            <date>2012-08-29 08:27:31 -0700</date>
            <delta_ts>2012-08-31 05:39:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95346-20120829172720.patch</filename>
            <type>text/plain</type>
            <size>13279</size>
            <attacher name="Philippe Liard">pliard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODc1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTM2Yzc1MWQ4ZWEyOWU3MGI1YmZhYWY4MWFmNTQxZDUz
MzM1MmNlMy4uMjE4ODU4NGVkNTNkNzExYTMyYTgwMzMxZjY3ZmYwNWRjZDEyZjAyMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDEyLTA4LTI4ICBQaGlsaXBwZSBMaWFyZCAgPHBsaWFyZEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3VwcG9ydCBMYXlvdXRUZXN0cyBvbiBub24tcm9vdGVkIGRldmljZXMgZm9yIENo
cm9taXVtIEFuZHJvaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTM0NgorCisgICAgICAgIFdlIHdlcmUgcmVxdWlyaW5nIHJvb3QgcGVybWlzc2lv
bnMgdG8gc3luYyByZXNvdXJjZSBmaWxlcyB3aXRoIHRoZQorICAgICAgICBkZXZpY2UgYnkgY29t
cGFyaW5nIGhvc3QgYW5kIGRldmljZSBmaWxlcycgdGltZXN0YW1wIGFmdGVyIHdlCisgICAgICAg
IHN5bmNocm9uaXplZCB0aGUgZGV2aWNlIGFuZCBob3N0IGNsb2Nrcy4KKyAgICAgICAgV2Ugbm93
IHJlbHkgb24gQW5kcm9pZENvbW1hbmRzLlB1c2hJZk5lZWRlZCgpIHByb3ZpZGVkIGJ5IENocm9t
aXVtIHRvCisgICAgICAgIGhhbmRsZSBkYXRhIGZpbGVzIHN5bmNocm9uaXphdGlvbi4gSXQgdXNl
cyBtZDUgdW5kZXIgdGhlIGhvb2Qgd2hpY2gKKyAgICAgICAgZG9lc24ndCBuZWVkIHJvb3QgcGVy
bWlzc2lvbnMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtLnB5OgorICAgICAgICAoQ2hyb21pdW1Qb3J0Ll9jaGVja19kcml2ZXJfYnVpbGRf
dXBfdG9fZGF0ZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV9hbmRyb2lkLnB5OgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9f
aW5pdF9fKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fc2V0dXBfdGVzdCk6Cisg
ICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX3B1c2hfZXhlY3V0YWJsZSk6CisgICAgICAg
IChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX3B1c2hfdGVzdF9yZXNvdXJjZXMpOgorICAgICAgICAo
Q2hyb21pdW1BbmRyb2lkRHJpdmVyLl9yZWFkX3Byb21wdCk6CisKIDIwMTItMDgtMjggIEFuZHJh
cyBCZWNzaSAgPGFuZHJhcy5iZWNzaUBub2tpYS5jb20+CiAKICAgICAgICAgW3dhdGNobGlzdF0g
VW5yZXZpZXdlZCwgc3Vic2NyaWJlIHRvIFF0IGJ1Z3MuCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQppbmRleCBlNjZiMGEyMDQz
MTlkMWY4ODY5NGUzNzZjNzBhY2M3YTBlOGEzZTVhLi4yMDYyMTljNGMwYTAwODRhMzY3NmIwMGIw
Zjg5OWExZDAxNmE4OWYzIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKQEAgLTQwNSwxMCArNDA1LDkgQEAgY2xhc3MgQ2hy
b21pdW1Qb3J0KFBvcnQpOgogCiAgICAgICAgICAgICAgICAgaWYgKGRlYnVnX210aW1lID4gcmVs
ZWFzZV9tdGltZSBhbmQgY29uZmlndXJhdGlvbiA9PSAnUmVsZWFzZScgb3IKICAgICAgICAgICAg
ICAgICAgICAgcmVsZWFzZV9tdGltZSA+IGRlYnVnX210aW1lIGFuZCBjb25maWd1cmF0aW9uID09
ICdEZWJ1ZycpOgotICAgICAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ1lvdSBhcmUgbm90
IHJ1bm5pbmcgdGhlIG1vc3QgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jl
Y2VudCBEdW1wUmVuZGVyVHJlZSBiaW5hcnkuIFlvdSBuZWVkIHRvICcKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdwYXNzIC0tZGVidWcgb3Igbm90IHRvIHNlbGVjdCBiZXR3ZWVu
ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEZWJ1ZyBhbmQgUmVsZWFzZS4n
KQorICAgICAgICAgICAgICAgICAgICBtb3N0X3JlY2VudF9iaW5hcnkgPSAnUmVsZWFzZScgaWYg
Y29uZmlndXJhdGlvbiA9PSAnRGVidWcnIGVsc2UgJ0RlYnVnJworICAgICAgICAgICAgICAgICAg
ICBfbG9nLndhcm5pbmcoJ1lvdSBhcmUgcnVubmluZyB0aGUgJXMgYmluYXJ5LiBIb3dldmVyIHRo
ZSAlcyBiaW5hcnkgYXBwZWFycyB0byBiZSBtb3JlIHJlY2VudC4gJworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBwYXNzIC0tJXMuJywgY29uZmlndXJhdGlvbiwgbW9z
dF9yZWNlbnRfYmluYXJ5LCBtb3N0X3JlY2VudF9iaW5hcnkubG93ZXIoKSkKICAgICAgICAgICAg
ICAgICAgICAgX2xvZy53YXJuaW5nKCcnKQogICAgICAgICAgICAgIyBUaGlzIHdpbGwgZmFpbCBp
ZiB3ZSBkb24ndCBoYXZlIGJvdGggYSBkZWJ1ZyBhbmQgcmVsZWFzZSBiaW5hcnkuCiAgICAgICAg
ICAgICAjIFRoYXQncyBmaW5lIGJlY2F1c2UsIGluIHRoaXMgY2FzZSwgd2UgbXVzdCBhbHJlYWR5
IGJlIHJ1bm5pbmcgdGhlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKaW5kZXggODhlZWI0ZDc1YjJi
Y2RiZWUwNWRmMWI5YmYyOTZiNGU0NmMwYjBhZS4uOGU3Y2U5ODA1MTc3NzM1YzMyODY0N2M1ODBj
OGY1NjUyOWJlZGQxMiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQpAQCAtMzEsNiArMzEsNyBA
QCBpbXBvcnQgY29weQogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1wb3J0IHJlCitpbXBv
cnQgc3lzCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQogCkBAIC0zOSw2ICs0MCw5IEBA
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGRyaXZlcgogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgZmFjdG9yeQogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMucG9ydCBpbXBvcnQgc2VydmVyX3Byb2Nlc3MKIAorc3lzLnBhdGguYXBwZW5kKAor
ICAgIG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydDSFJPTUVfU1JDJ10sICdidWlsZCcsICdhbmRy
b2lkJywgJ3B5bGliJykpCitpbXBvcnQgYW5kcm9pZF9jb21tYW5kcwogCiBfbG9nID0gbG9nZ2lu
Zy5nZXRMb2dnZXIoX19uYW1lX18pCiAKQEAgLTU0LDcgKzU4LDYgQEAgQ09NTUFORF9MSU5FX0ZJ
TEUgPSBERVZJQ0VfU09VUkNFX1JPT1RfRElSICsgJ2Nocm9tZS1uYXRpdmUtdGVzdHMtY29tbWFu
ZC1saW5lJwogIyBhbmQgQ2hyb21pdW0ncyB3ZWJraXQvc3VwcG9ydC9wbGF0Zm9ybV9zdXBwb3J0
X2FuZHJvaWQuY2MuCiBERVZJQ0VfRFJUX0RJUiA9IERFVklDRV9TT1VSQ0VfUk9PVF9ESVIgKyAn
ZHJ0LycKIERFVklDRV9GT1JXQVJERVJfUEFUSCA9IERFVklDRV9EUlRfRElSICsgJ2ZvcndhcmRl
cicKLURFVklDRV9EUlRfU1RBTVBfUEFUSCA9IERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJU
cmVlLnN0YW1wJwogCiBEUlRfQVBQX1BBQ0tBR0UgPSAnb3JnLmNocm9taXVtLm5hdGl2ZV90ZXN0
JwogRFJUX0FDVElWSVRZX0ZVTExfTkFNRSA9IERSVF9BUFBfUEFDS0FHRSArICcvLkNocm9tZU5h
dGl2ZVRlc3RBY3Rpdml0eScKQEAgLTM1NSw2ICszNTgsMTAgQEAgY2xhc3MgQ2hyb21pdW1BbmRy
b2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgICAgICBzZWxmLl9oYXNfc2V0dXAgPSBGYWxz
ZQogICAgICAgICBzZWxmLl9vcmlnaW5hbF9nb3Zlcm5vcnMgPSB7fQogICAgICAgICBzZWxmLl9h
ZGJfY29tbWFuZCA9IFsnYWRiJywgJy1zJywgcG9ydC5fZ2V0X2RldmljZV9zZXJpYWwod29ya2Vy
X251bWJlcildCisgICAgICAgIHNlbGYuX2FkYiA9IGFuZHJvaWRfY29tbWFuZHMuQW5kcm9pZENv
bW1hbmRzKCkKKyAgICAgICAgc2VsZi5fcHVzaF9leGVjdXRhYmxlKCkKKyAgICAgICAgc2VsZi5f
cHVzaF9mb250cygpCisgICAgICAgIHNlbGYuX3B1c2hfdGVzdF9yZXNvdXJjZXMoKQogCiAgICAg
ZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgIHNlbGYuX3RlYXJkb3duX3BlcmZvcm1hbmNlKCkK
QEAgLTM3NiwzNyArMzgzLDIyIEBAIGNsYXNzIENocm9taXVtQW5kcm9pZERyaXZlcihkcml2ZXIu
RHJpdmVyKToKICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAnbWtkaXIn
LCAnLXAnLCBERVZJQ0VfRFJUX0RJUl0pCiAgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChb
J3NoZWxsJywgJ2NobW9kJywgJzc3NycsIERFVklDRV9EUlRfRElSXSkKIAotICAgICAgICBzZWxm
Ll9wdXNoX2V4ZWN1dGFibGUoKQotICAgICAgICBzZWxmLl9wdXNoX2ZvbnRzKCkKLSAgICAgICAg
c2VsZi5fc3luY2hyb25pemVfZGF0ZXRpbWUoKQotCiAgICAgICAgICMgRGVsZXRlIHRoZSBkaXNr
IGNhY2hlIGlmIGFueSB0byBlbnN1cmUgYSBjbGVhbiB0ZXN0IHJ1bi4KICAgICAgICAgIyBUaGlz
IGlzIGxpa2Ugd2hhdCdzIGRvbmUgaW4gQ2hyb21pdW1Qb3J0LnNldHVwX3Rlc3RfcnVuIGJ1dCBv
biB0aGUgZGV2aWNlLgogICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcsICdy
bScsICctcicsIERSVF9BUFBfQ0FDSEVfRElSXSkKIAogICAgIGRlZiBfcHVzaF9leGVjdXRhYmxl
KHNlbGYpOgorICAgICAgICBzZWxmLl9hZGIuUHVzaElmTmVlZGVkKHNlbGYuX3BvcnQuX3BhdGhf
dG9fZm9yd2FyZGVyKCksIERFVklDRV9GT1JXQVJERVJfUEFUSCkKKyAgICAgICAgc2VsZi5fYWRi
LlB1c2hJZk5lZWRlZChzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdEdW1wUmVuZGVyVHJlZS5wYWsn
KSwgREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWUucGFrJykKKyAgICAgICAgc2VsZi5f
YWRiLlB1c2hJZk5lZWRlZChzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdEdW1wUmVuZGVyVHJlZV9y
ZXNvdXJjZXMnKSwgREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWVfcmVzb3VyY2VzJykK
KyAgICAgICAgc2VsZi5fYWRiLlB1c2hJZk5lZWRlZChzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdh
bmRyb2lkX21haW5fZm9udHMueG1sJyksIERFVklDRV9EUlRfRElSICsgJ2FuZHJvaWRfbWFpbl9m
b250cy54bWwnKQorICAgICAgICBzZWxmLl9hZGIuUHVzaElmTmVlZGVkKHNlbGYuX3BvcnQuX2J1
aWxkX3BhdGgoJ2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sJyksIERFVklDRV9EUlRfRElSICsg
J2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sJykKKyAgICAgICAgX2xvZy5kZWJ1ZygnUHVzaGlu
ZyBleGVjdXRhYmxlJykKKyAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsndW5pbnN0YWxs
JywgRFJUX0FQUF9QQUNLQUdFXSkKICAgICAgICAgZHJ0X2hvc3RfcGF0aCA9IHNlbGYuX3BvcnQu
X3BhdGhfdG9fZHJpdmVyKCkKLSAgICAgICAgZm9yd2FyZGVyX2hvc3RfcGF0aCA9IHNlbGYuX3Bv
cnQuX3BhdGhfdG9fZm9yd2FyZGVyKCkKLSAgICAgICAgaG9zdF9zdGFtcCA9IGludChmbG9hdCht
YXgob3Muc3RhdChkcnRfaG9zdF9wYXRoKS5zdF9tdGltZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3Muc3RhdChmb3J3YXJkZXJfaG9zdF9wYXRoKS5zdF9tdGltZSkpKQot
ICAgICAgICBkZXZpY2Vfc3RhbXAgPSBpbnQoZmxvYXQoc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsK
LSAgICAgICAgICAgICdzaGVsbCcsICdjYXQgJXMgMj4vZGV2L251bGwgfHwgZWNobyAwJyAlIERF
VklDRV9EUlRfU1RBTVBfUEFUSF0pKSkKLSAgICAgICAgaWYgZGV2aWNlX3N0YW1wICE9IGhvc3Rf
c3RhbXA6Ci0gICAgICAgICAgICBfbG9nLmRlYnVnKCdQdXNoaW5nIGV4ZWN1dGFibGUnKQotICAg
ICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2UoZm9yd2FyZGVyX2hvc3RfcGF0aCwgREVWSUNF
X0ZPUldBUkRFUl9QQVRIKQotICAgICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsndW5p
bnN0YWxsJywgRFJUX0FQUF9QQUNLQUdFXSkKLSAgICAgICAgICAgIGluc3RhbGxfcmVzdWx0ID0g
c2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnaW5zdGFsbCcsIGRydF9ob3N0X3BhdGhdKQotICAgICAg
ICAgICAgaWYgaW5zdGFsbF9yZXN1bHQuZmluZCgnU3VjY2VzcycpID09IC0xOgotICAgICAgICAg
ICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdGYWlsZWQgdG8gaW5zdGFsbCAlcyBvbnRvIGRl
dmljZTogJXMnICUgKGRydF9ob3N0X3BhdGgsIGluc3RhbGxfcmVzdWx0KSkKLSAgICAgICAgICAg
IHNlbGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ0R1bXBSZW5kZXJU
cmVlLnBhaycpLCBERVZJQ0VfRFJUX0RJUiArICdEdW1wUmVuZGVyVHJlZS5wYWsnKQotICAgICAg
ICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnRHVtcFJl
bmRlclRyZWVfcmVzb3VyY2VzJyksIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlX3Jl
c291cmNlcycpCi0gICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9wb3J0Ll9i
dWlsZF9wYXRoKCdhbmRyb2lkX21haW5fZm9udHMueG1sJyksIERFVklDRV9EUlRfRElSICsgJ2Fu
ZHJvaWRfbWFpbl9mb250cy54bWwnKQotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uo
c2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnYW5kcm9pZF9mYWxsYmFja19mb250cy54bWwnKSwgREVW
SUNFX0RSVF9ESVIgKyAnYW5kcm9pZF9mYWxsYmFja19mb250cy54bWwnKQotICAgICAgICAgICAg
IyBWZXJzaW9uIGNvbnRyb2wgb2YgdGVzdCByZXNvdXJjZXMgaXMgZGVwZW5kZW50IG9uIGV4ZWN1
dGFibGVzLAotICAgICAgICAgICAgIyBiZWNhdXNlIHdlIHdpbGwgYWx3YXlzIHJlYnVpbGQgZXhl
Y3V0YWJsZXMgd2hlbiByZXNvdXJjZXMgYXJlCi0gICAgICAgICAgICAjIHVwZGF0ZWQuCi0gICAg
ICAgICAgICBzZWxmLl9wdXNoX3Rlc3RfcmVzb3VyY2VzKCkKLSAgICAgICAgICAgIHNlbGYuX3J1
bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ2VjaG8gJWQgPiVzJyAlIChob3N0X3N0YW1wLCBERVZJ
Q0VfRFJUX1NUQU1QX1BBVEgpXSkKKyAgICAgICAgaW5zdGFsbF9yZXN1bHQgPSBzZWxmLl9ydW5f
YWRiX2NvbW1hbmQoWydpbnN0YWxsJywgZHJ0X2hvc3RfcGF0aF0pCisgICAgICAgIGlmIGluc3Rh
bGxfcmVzdWx0LmZpbmQoJ1N1Y2Nlc3MnKSA9PSAtMToKKyAgICAgICAgICAgIHJhaXNlIEFzc2Vy
dGlvbkVycm9yKCdGYWlsZWQgdG8gaW5zdGFsbCAlcyBvbnRvIGRldmljZTogJXMnICUgKGRydF9o
b3N0X3BhdGgsIGluc3RhbGxfcmVzdWx0KSkKIAogICAgIGRlZiBfcHVzaF9mb250cyhzZWxmKToK
ICAgICAgICAgaWYgbm90IHNlbGYuX2NoZWNrX3ZlcnNpb24oREVWSUNFX0ZPTlRTX0RJUiwgRk9O
VF9GSUxFU19WRVJTSU9OKToKQEAgLTQyMSwxOCArNDEzLDcgQEAgY2xhc3MgQ2hyb21pdW1BbmRy
b2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgIGRlZiBfcHVzaF90ZXN0X3Jlc291cmNlcyhz
ZWxmKToKICAgICAgICAgX2xvZy5kZWJ1ZygnUHVzaGluZyB0ZXN0IHJlc291cmNlcycpCiAgICAg
ICAgIGZvciByZXNvdXJjZSBpbiBURVNUX1JFU09VUkNFU19UT19QVVNIOgotICAgICAgICAgICAg
c2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkgKyAnLycg
KyByZXNvdXJjZSwgREVWSUNFX0xBWU9VVF9URVNUU19ESVIgKyByZXNvdXJjZSkKLQotICAgIGRl
ZiBfc3luY2hyb25pemVfZGF0ZXRpbWUoc2VsZik6Ci0gICAgICAgICMgVGhlIGRhdGUvdGltZSBi
ZXR3ZWVuIGhvc3QgYW5kIGRldmljZSBtYXkgbm90IGJlIHN5bmNocm9uaXplZC4KLSAgICAgICAg
IyBXZSBuZWVkIHRvIG1ha2UgdGhlbSBzeW5jaHJvbml6ZWQsIG90aGVyd2lzZSB0ZXN0cyBtaWdo
dCBmYWlsLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIEdldCBzZWNvbmRzIHNpbmNlIDE5
NzAtMDEtMDEgMDA6MDA6MDAgVVRDLgotICAgICAgICAgICAgaG9zdF9kYXRldGltZSA9IHNlbGYu
X3BvcnQuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ2RhdGUnLCAnLXUnLCAnKyVzJ10pCi0gICAg
ICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICMgUmVzZXQgdG8gMTk3MC0wMS0wMSAwMDowMDowMCBV
VEMuCi0gICAgICAgICAgICBob3N0X2RhdGV0aW1lID0gMAotICAgICAgICBzZWxmLl9ydW5fYWRi
X2NvbW1hbmQoWydzaGVsbCcsICdkYXRlIC11ICVzJyAlIChob3N0X2RhdGV0aW1lKV0pCisgICAg
ICAgICAgICBzZWxmLl9hZGIuUHVzaElmTmVlZGVkKHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2Rp
cigpICsgJy8nICsgcmVzb3VyY2UsIERFVklDRV9MQVlPVVRfVEVTVFNfRElSICsgcmVzb3VyY2Up
CiAKICAgICBkZWYgX2NoZWNrX3ZlcnNpb24oc2VsZiwgZGlyLCB2ZXJzaW9uKToKICAgICAgICAg
YXNzZXJ0KGRpci5lbmRzd2l0aCgnLycpKQpAQCAtNjkxLDggKzY3Miw2IEBAIGNsYXNzIENocm9t
aXVtQW5kcm9pZERyaXZlcihkcml2ZXIuRHJpdmVyKToKICAgICAgICAgd2hpbGUgVHJ1ZToKICAg
ICAgICAgICAgIGN1cnJlbnRfY2hhciA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfc3Rkb3V0
KGRlYWRsaW5lLCAxKQogICAgICAgICAgICAgaWYgY3VycmVudF9jaGFyID09ICcgJzoKLSAgICAg
ICAgICAgICAgICBpZiBsYXN0X2NoYXIgPT0gJyMnOgorICAgICAgICAgICAgICAgIGlmIGxhc3Rf
Y2hhciBpbiBbJyMnLCAnJCddOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAg
ICAgICAgICBpZiBsYXN0X2NoYXIgPT0gJyQnOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBB
c3NlcnRpb25FcnJvcignQWRiZCBpcyBub3QgcnVubmluZyBhcyByb290JykKICAgICAgICAgICAg
IGxhc3RfY2hhciA9IGN1cnJlbnRfY2hhcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhmMDdhYTQzMDAyNTQ5NTM3Mjk4YzNl
YzgwZWJiOTkxMGRiYzgzZTEuLmNjZjU0ZDhkNWJjOGFiM2Y3ZmVlOGE0NDdkM2Y3NTQ2OWNkNDlk
YjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wOC0yOCAgUGhpbGlwcGUgTGlhcmQgIDxw
bGlhcmRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgTGF5b3V0VGVzdHMgb24gbm9u
LXJvb3RlZCBBbmRyb2lkIGRldmljZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NTM0NgorCisgICAgICAgIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3Vy
Y2VzL3N1YnJlc291cmNlLXRlc3QuanMgd2FzIGFzc3VtaW5nIHRoYXQgdGhlCisgICAgICAgIGNs
aWVudCBhbmQgc2VydmVyIGNsb2NrcyBhcmUgdGhlIHNhbWUgd2hpY2ggaXMgbm8gbG9uZ2VyIHRy
dWUgc2luY2Ugd2UKKyAgICAgICAgYXJlIGdldHRpbmcgcmlkIG9mIGhvc3QvZGV2aWNlIGNsb2Nr
IHN5bmNocm9uaXphdGlvbi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2Vz
L2NhY2hlLXNpbXVsYXRvci5jZ2k6CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJj
ZXMvY3VycmVudC10aW1lLmNnaTogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9y
ZXNvdXJjZXMvc3VicmVzb3VyY2UtdGVzdC5qczoKKyAgICAgICAgKGdldFNlcnZlckRhdGUpOgor
ICAgICAgICAobmV4dFRlc3QpOgorICAgICAgICAodGVzdENvbXBsZXRlKToKKyAgICAgICAgKHJ1
blRlc3RzKToKKwogMjAxMi0wOC0yOCAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW0VGTF1bV0syXVtXVFJdIFJlYmFzZWxpbmUgbmV3bHkgYWRkZWQgU1ZH
IHRleHQgdGVzdCBjYXNlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNo
ZS9yZXNvdXJjZXMvY3VycmVudC10aW1lLmNnaSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2Fj
aGUvcmVzb3VyY2VzL2N1cnJlbnQtdGltZS5jZ2kKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJjODkxYjIyMmM2NTU2
NzhiNGU5ZmUwNzA5MzgxMDc4NzVmMWRhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2N1cnJlbnQtdGltZS5jZ2kKQEAgLTAsMCArMSw1
IEBACisjIS91c3IvYmluL3BlcmwgLXcKKworcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9wbGFp
blxuIjsKK3ByaW50ICJcbiI7CitwcmludCB0aW1lKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3N1YnJlc291cmNlLXRlc3QuanMgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9zdWJyZXNvdXJjZS10ZXN0LmpzCmluZGV4
IGNlNGJiMTI5NTAzMjZhYWMyNmY3Yzk5YWQzMGE0MTJhNDdmOWM5NjMuLmQ3NmVjMTU4OTM5ZTAx
ZjlkNTEzNjIxYTIzM2JkMTY1ODVhYjg3NzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY2FjaGUvcmVzb3VyY2VzL3N1YnJlc291cmNlLXRlc3QuanMKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3VyY2UtdGVzdC5qcwpAQCAtMjUs
NiArMjUsMjIgQEAgdmFyIGNvbnNvbGVEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29uc29sZURpdik7CiBmcmFtZTIub25sb2Fk
ID0gZnVuY3Rpb24gKCkgeyBsb2FkZWRGcmFtZUNvdW50Kys7IH0KIAordmFyIHNlcnZlckNsaWVu
dFRpbWVEZWx0YSA9IGdldFNlcnZlckRhdGUoKS5nZXRUaW1lKCkgLSBuZXcgRGF0ZSgpLmdldFRp
bWUoKTsKKworZnVuY3Rpb24gZ2V0U2VydmVyRGF0ZSgpCit7CisgICAgdmFyIHJlcSA9IG5ldyBY
TUxIdHRwUmVxdWVzdCgpOworICAgIHZhciB0MCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOworICAg
IHJlcS5vcGVuKCdHRVQnLCAiL2NhY2hlL3Jlc291cmNlcy9jdXJyZW50LXRpbWUuY2dpIiwgZmFs
c2UgLyogYmxvY2tpbmcgKi8pOworICAgIHJlcS5zZW5kKCk7CisgICAgdmFyIHNlcnZlclRvQ2xp
ZW50VGltZSA9IChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHQwKSAvIDI7CisgICAgaWYgKHJlcS5z
dGF0dXMgIT0gMjAwKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCJ1bmV4cGVjdGVkIHN0YXR1cyBj
b2RlICIgKyByZXEuc3RhdHVzICsgIiwgZXhwZWN0ZWQgMjAwLiIpOworICAgICAgICByZXR1cm4g
bmV3IERhdGUoKTsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBEYXRlKChwYXJzZUludChyZXEucmVz
cG9uc2VUZXh0KSAqIDEwMDApICsgc2VydmVyVG9DbGllbnRUaW1lKTsKK30KKwogZnVuY3Rpb24g
bG9hZFRlc3RGcmFtZShmcmFtZSwgdGVzdFNwZWMpCiB7CiAgICAgdmFyIGZpcnN0ID0gdHJ1ZTsK
QEAgLTY3LDcgKzgzLDcgQEAgZnVuY3Rpb24gbmV4dFRlc3QoKQogewogICAgIHZhciB0ZXN0U3Bl
YyA9IHRlc3RzW2N1cnJlbnRUZXN0XTsKICAgICB1bmlxdWVJZCA9IE1hdGguZmxvb3IoMTAwMDAw
MDAwICogTWF0aC5yYW5kb20oKSk7Ci0gICAgbm93ID0gbmV3IERhdGUoKTsKKyAgICBub3cgPSBu
ZXcgRGF0ZShuZXcgRGF0ZSgpLmdldFRpbWUoKSArIHNlcnZlckNsaWVudFRpbWVEZWx0YSk7CiAg
ICAgaWYgKCF0ZXN0U3BlYykgewogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKQEAgLTgwLDIyICs5NiwyMiBAQCBmdW5j
dGlvbiBuZXh0VGVzdCgpCiBmdW5jdGlvbiB0ZXN0Q29tcGxldGUodGVzdFNwZWMpCiB7CiAgICAg
dmFyIGxpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICB2YXIgcmVzdWx0
ID0gZnJhbWUxLmNvbnRlbnRXaW5kb3cucmFuZG9tTnVtYmVyID09IGZyYW1lMi5jb250ZW50V2lu
ZG93LnJhbmRvbU51bWJlciA/ICdDYWNoZWQnIDogJ1VuY2FjaGVkJzsgICAgCisgICAgdmFyIHJl
c3VsdCA9IGZyYW1lMS5jb250ZW50V2luZG93LnJhbmRvbU51bWJlciA9PSBmcmFtZTIuY29udGVu
dFdpbmRvdy5yYW5kb21OdW1iZXIgPyAnQ2FjaGVkJyA6ICdVbmNhY2hlZCc7CiAgICAgdmFyIHBh
c3NlZCA9IHJlc3VsdCA9PSB0ZXN0U3BlYy5leHBlY3RlZFJlc3VsdDsKIAogICAgIGlmICh0ZXN0
U3BlYy5kZXNjcmlwdGlvbikKICAgICAgICAgbGluZS5pbm5lckhUTUwgKz0gdGVzdFNwZWMuZGVz
Y3JpcHRpb247CiAgICAgZWxzZSB7Ci0gICAgICAgIGZvciAodmFyIGhlYWRlciBpbiB0ZXN0U3Bl
Yy50ZXN0SGVhZGVycykgCisgICAgICAgIGZvciAodmFyIGhlYWRlciBpbiB0ZXN0U3BlYy50ZXN0
SGVhZGVycykKICAgICAgICAgICAgIGxpbmUuaW5uZXJIVE1MICs9IGhlYWRlciArICI6ICIgKyB0
ZXN0U3BlYy50ZXN0SGVhZGVyc1toZWFkZXJdICsgIjsgIjsKICAgICB9CiAgICAgaWYgKHRlc3RT
cGVjLmRlbGF5KQogICAgICAgICBsaW5lLmlubmVySFRNTCArPSAiW2RlbGF5PSIgKyB0ZXN0U3Bl
Yy5kZWxheSArICJzXSAiCiAgICAgbGluZS5pbm5lckhUTUwgKz0gIiAgKHJlc3VsdD0iICsgcmVz
dWx0ICsgIiBleHBlY3RlZD0iICsgdGVzdFNwZWMuZXhwZWN0ZWRSZXN1bHQgKyAiKSAiOwogICAg
IGxpbmUuaW5uZXJIVE1MICs9IHBhc3NlZCA/ICI8Zm9udCBjb2xvcj1ncmVlbj5QQVNTPC9mb250
PiAiIDogIjxmb250IGNvbG9yPXJlZD5GQUlMPC9mb250PiAiCi0gICAgICAgIAorCiAgICAgY29u
c29sZURpdi5hcHBlbmRDaGlsZChsaW5lKTsKLSAgICAKKwogICAgIG5leHRUZXN0KCk7CiB9CiAK
QEAgLTEwNiw1ICsxMjIsNCBAQCBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgICAgIG5leHRUZXN0
KCk7CiAgICAgZWxzZQogICAgICAgICBzZXRUaW1lb3V0KHJ1blRlc3RzLCAxMDApOwotCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161674</attachid>
            <date>2012-08-31 05:39:45 -0700</date>
            <delta_ts>2012-08-31 05:55:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95346-20120831143932.patch</filename>
            <type>text/plain</type>
            <size>16456</size>
            <attacher name="Philippe Liard">pliard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODc1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTM2Yzc1MWQ4ZWEyOWU3MGI1YmZhYWY4MWFmNTQxZDUz
MzM1MmNlMy4uYjU5ZTZlNzRkYTZmYTUzY2U0MWM4ODc0ZTU0NTJjZDg2ZWU4ZWQwZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDEyLTA4LTI4ICBQaGlsaXBwZSBMaWFyZCAgPHBsaWFyZEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3VwcG9ydCBMYXlvdXRUZXN0cyBvbiBub24tcm9vdGVkIGRldmljZXMgZm9yIENo
cm9taXVtIEFuZHJvaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTM0NgorCisgICAgICAgIFdlIHdlcmUgcmVxdWlyaW5nIHJvb3QgcGVybWlzc2lv
bnMgdG8gc3luYyByZXNvdXJjZSBmaWxlcyB3aXRoIHRoZQorICAgICAgICBkZXZpY2UgYnkgY29t
cGFyaW5nIGhvc3QgYW5kIGRldmljZSBmaWxlcycgdGltZXN0YW1wIGFmdGVyIHdlCisgICAgICAg
IHN5bmNocm9uaXplZCB0aGUgZGV2aWNlIGFuZCBob3N0IGNsb2Nrcy4KKyAgICAgICAgV2Ugbm93
IHJlbHkgb24gbWQ1c3VtIHByb3ZpZGVkIGJ5IENocm9taXVtIHRvIGhhbmRsZSBkYXRhIGZpbGVz
CisgICAgICAgIHN5bmNocm9uaXphdGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgIChDaHJvbWl1bVBvcnQuX2No
ZWNrX2RyaXZlcl9idWlsZF91cF90b19kYXRlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHk6CisgICAgICAgIChDaHJvbWl1
bUFuZHJvaWREcml2ZXIuX19pbml0X18pOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVy
Ll9zZXR1cF90ZXN0KToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF9leGVj
dXRhYmxlKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF90ZXN0X3Jlc291
cmNlcyk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX3JlYWRfcHJvbXB0KToKKwog
MjAxMi0wOC0yOCAgQW5kcmFzIEJlY3NpICA8YW5kcmFzLmJlY3NpQG5va2lhLmNvbT4KIAogICAg
ICAgICBbd2F0Y2hsaXN0XSBVbnJldmlld2VkLCBzdWJzY3JpYmUgdG8gUXQgYnVncy4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVy
VHJlZS5neXAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJl
bmRlclRyZWUuZ3lwCmluZGV4IDgyNzdjZTM1ZjJiMGFhOGRmODZlYzljMjNlYzhiMGFhZTAwNWEw
OWEuLjQ5ZmI5N2VlZDYzMTFhY2Q4NWU5OWM5MGFjODNlODdkNDEwZmQ5ZjYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5n
eXAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5k
ZXJUcmVlLmd5cApAQCAtMTIxLDExICsxMjEsMTIgQEAKICAgICAgICAgICAgICAgICAnPChzb3Vy
Y2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDppbnNwZWN0b3JfcmVzb3VyY2VzJywK
ICAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cDp3ZWJraXQnLAogICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dURi9XVEYuZ3lwL1dU
Ri5neXA6d3RmJywKKyAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNlL2Jh
c2UuZ3lwOnRlc3Rfc3VwcG9ydF9iYXNlJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9z
cmNfZGlyKS9idWlsZC90ZW1wX2d5cC9nb29nbGV1cmwuZ3lwOmdvb2dsZXVybCcsCiAgICAgICAg
ICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvaWN1L2ljdS5neXA6aWN1
dWMnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L21l
c2EvbWVzYS5neXA6b3NtZXNhJywKKyAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGly
KS90b29scy9hbmRyb2lkL21kNXN1bS9tZDVzdW0uZ3lwOm1kNXN1bScsCiAgICAgICAgICAgICAg
ICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdjgvdG9vbHMvZ3lwL3Y4Lmd5cDp2OCcsCi0gICAgICAg
ICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYmFzZS9iYXNlLmd5cDp0ZXN0X3N1cHBvcnRf
YmFzZScsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L3N1cHBv
cnQvd2Via2l0X3N1cHBvcnQuZ3lwOmJsb2InLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVt
X3NyY19kaXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmd5cDp3ZWJraXRfc3VwcG9y
dCcsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L3N1cHBvcnQv
d2Via2l0X3N1cHBvcnQuZ3lwOndlYmtpdF91c2VyX2FnZW50JywKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IGU2NmIw
YTIwNDMxOWQxZjg4Njk0ZTM3NmM3MGFjYzdhMGU4YTNlNWEuLjIwNjIxOWM0YzBhMDA4NGEzNjc2
YjAwYjBmODk5YTFkMDE2YTg5ZjMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNDA1LDEwICs0MDUsOSBAQCBjbGFz
cyBDaHJvbWl1bVBvcnQoUG9ydCk6CiAKICAgICAgICAgICAgICAgICBpZiAoZGVidWdfbXRpbWUg
PiByZWxlYXNlX210aW1lIGFuZCBjb25maWd1cmF0aW9uID09ICdSZWxlYXNlJyBvcgogICAgICAg
ICAgICAgICAgICAgICByZWxlYXNlX210aW1lID4gZGVidWdfbXRpbWUgYW5kIGNvbmZpZ3VyYXRp
b24gPT0gJ0RlYnVnJyk6Ci0gICAgICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygnWW91IGFy
ZSBub3QgcnVubmluZyB0aGUgbW9zdCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAncmVjZW50IER1bXBSZW5kZXJUcmVlIGJpbmFyeS4gWW91IG5lZWQgdG8gJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3MgLS1kZWJ1ZyBvciBub3QgdG8gc2VsZWN0IGJl
dHdlZW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlYnVnIGFuZCBSZWxl
YXNlLicpCisgICAgICAgICAgICAgICAgICAgIG1vc3RfcmVjZW50X2JpbmFyeSA9ICdSZWxlYXNl
JyBpZiBjb25maWd1cmF0aW9uID09ICdEZWJ1ZycgZWxzZSAnRGVidWcnCisgICAgICAgICAgICAg
ICAgICAgIF9sb2cud2FybmluZygnWW91IGFyZSBydW5uaW5nIHRoZSAlcyBiaW5hcnkuIEhvd2V2
ZXIgdGhlICVzIGJpbmFyeSBhcHBlYXJzIHRvIGJlIG1vcmUgcmVjZW50LiAnCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIHBhc3MgLS0lcy4nLCBjb25maWd1cmF0aW9u
LCBtb3N0X3JlY2VudF9iaW5hcnksIG1vc3RfcmVjZW50X2JpbmFyeS5sb3dlcigpKQogICAgICAg
ICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJycpCiAgICAgICAgICAgICAjIFRoaXMgd2lsbCBm
YWlsIGlmIHdlIGRvbid0IGhhdmUgYm90aCBhIGRlYnVnIGFuZCByZWxlYXNlIGJpbmFyeS4KICAg
ICAgICAgICAgICMgVGhhdCdzIGZpbmUgYmVjYXVzZSwgaW4gdGhpcyBjYXNlLCB3ZSBtdXN0IGFs
cmVhZHkgYmUgcnVubmluZyB0aGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQppbmRleCA4OGVlYjRk
NzViMmJjZGJlZTA1ZGYxYjliZjI5NmI0ZTQ2YzBiMGFlLi40M2VkZjJlYTFiZTA0M2NkMjY0MDFi
MjE4YzZkYWYzNDgwYTliN2ZkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CkBAIC0zMSw2ICsz
MSw4IEBAIGltcG9ydCBjb3B5CiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgcmUK
K2ltcG9ydCBzZXRzCitpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0
IHRpbWUKIApAQCAtNTQsNyArNTYsNiBAQCBDT01NQU5EX0xJTkVfRklMRSA9IERFVklDRV9TT1VS
Q0VfUk9PVF9ESVIgKyAnY2hyb21lLW5hdGl2ZS10ZXN0cy1jb21tYW5kLWxpbmUnCiAjIGFuZCBD
aHJvbWl1bSdzIHdlYmtpdC9zdXBwb3J0L3BsYXRmb3JtX3N1cHBvcnRfYW5kcm9pZC5jYy4KIERF
VklDRV9EUlRfRElSID0gREVWSUNFX1NPVVJDRV9ST09UX0RJUiArICdkcnQvJwogREVWSUNFX0ZP
UldBUkRFUl9QQVRIID0gREVWSUNFX0RSVF9ESVIgKyAnZm9yd2FyZGVyJwotREVWSUNFX0RSVF9T
VEFNUF9QQVRIID0gREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWUuc3RhbXAnCiAKIERS
VF9BUFBfUEFDS0FHRSA9ICdvcmcuY2hyb21pdW0ubmF0aXZlX3Rlc3QnCiBEUlRfQUNUSVZJVFlf
RlVMTF9OQU1FID0gRFJUX0FQUF9QQUNLQUdFICsgJy8uQ2hyb21lTmF0aXZlVGVzdEFjdGl2aXR5
JwpAQCAtMTM3LDYgKzEzOCw4IEBAIFRFU1RfUkVTT1VSQ0VTX1RPX1BVU0ggPSBbCiAgICAgJ2Nv
bXBvc2l0aW5nL3Jlc291cmNlcy92aWRlby5tcDQnLAogXQogCitNRDVTVU1fREVWSUNFX0ZJTEVf
TkFNRSA9ICdtZDVzdW1fYmluJworTUQ1U1VNX0RFVklDRV9QQVRIID0gJy9kYXRhL2xvY2FsL3Rt
cC8nICsgTUQ1U1VNX0RFVklDRV9GSUxFX05BTUUKIAogY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9y
dChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgIHBvcnRfbmFtZSA9ICdjaHJvbWl1bS1hbmRy
b2lkJwpAQCAtMzQzLDYgKzM0Niw4IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQoY2hyb21p
dW0uQ2hyb21pdW1Qb3J0KToKIAogCiBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVy
LkRyaXZlcik6CisgICAgX2RhdGFfYWxyZWFkeV9wdXNoZWRfZm9yX3dvcmtlciA9IHNldHMuU2V0
KCkKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCB3b3JrZXJfbnVtYmVyLCBwaXhlbF90
ZXN0cywgbm9fdGltZW91dD1GYWxzZSk6CiAgICAgICAgIHN1cGVyKENocm9taXVtQW5kcm9pZERy
aXZlciwgc2VsZikuX19pbml0X18ocG9ydCwgd29ya2VyX251bWJlciwgcGl4ZWxfdGVzdHMsIG5v
X3RpbWVvdXQpCiAgICAgICAgIHNlbGYuX2NtZF9saW5lID0gTm9uZQpAQCAtMzU1LDExICszNjAs
MjYgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgICAg
ICBzZWxmLl9oYXNfc2V0dXAgPSBGYWxzZQogICAgICAgICBzZWxmLl9vcmlnaW5hbF9nb3Zlcm5v
cnMgPSB7fQogICAgICAgICBzZWxmLl9hZGJfY29tbWFuZCA9IFsnYWRiJywgJy1zJywgcG9ydC5f
Z2V0X2RldmljZV9zZXJpYWwod29ya2VyX251bWJlcildCisgICAgICAgIHNlbGYuX3NldHVwX21k
NXN1bSgpCisgICAgICAgIGlmIG5vdCB3b3JrZXJfbnVtYmVyIGluIHNlbGYuX2RhdGFfYWxyZWFk
eV9wdXNoZWRfZm9yX3dvcmtlcjoKKyAgICAgICAgICAgIHNlbGYuX3B1c2hfZXhlY3V0YWJsZSgp
CisgICAgICAgICAgICBzZWxmLl9wdXNoX2ZvbnRzKCkKKyAgICAgICAgICAgIHNlbGYuX3B1c2hf
dGVzdF9yZXNvdXJjZXMoKQorICAgICAgICAgICAgc2VsZi5fZGF0YV9hbHJlYWR5X3B1c2hlZF9m
b3Jfd29ya2VyLmFkZCh3b3JrZXJfbnVtYmVyKQogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAg
ICAgICAgIHNlbGYuX3RlYXJkb3duX3BlcmZvcm1hbmNlKCkKICAgICAgICAgc3VwZXIoQ2hyb21p
dW1BbmRyb2lkRHJpdmVyLCBzZWxmKS5fX2RlbF9fKCkKIAorICAgIGRlZiBfc2V0dXBfbWQ1c3Vt
KHNlbGYpOgorICAgICAgICBzZWxmLl9tZDVzdW1fcGF0aCA9ICclcy9vdXQvJXMvJXMnICUgKAor
ICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoKSwgc2Vs
Zi5fcG9ydC5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIE1ENVNVTV9ERVZJQ0VfRklMRV9O
QU1FKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoc2VsZi5fbWQ1c3VtX3BhdGgpCisg
ICAgICAgIGlmIHNlbGYuX2ZpbGVfZXhpc3RzX29uX2RldmljZShNRDVTVU1fREVWSUNFX1BBVEgp
OgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIG5vdCBzZWxmLl9wdXNoX3RvX2Rldmlj
ZShzZWxmLl9tZDVzdW1fcGF0aCwgTUQ1U1VNX0RFVklDRV9QQVRIKToKKyAgICAgICAgICAgIF9s
b2cuZXJyb3IoJ0NvdWxkIG5vdCBwdXNoIG1kNXN1bSB0byBkZXZpY2UnKQorCiAgICAgZGVmIF9z
ZXR1cF90ZXN0KHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9oYXNfc2V0dXA6CiAgICAgICAgICAg
ICByZXR1cm4KQEAgLTM3NiwzNyArMzk2LDM4IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZERyaXZl
cihkcml2ZXIuRHJpdmVyKToKICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwn
LCAnbWtkaXInLCAnLXAnLCBERVZJQ0VfRFJUX0RJUl0pCiAgICAgICAgIHNlbGYuX3J1bl9hZGJf
Y29tbWFuZChbJ3NoZWxsJywgJ2NobW9kJywgJzc3NycsIERFVklDRV9EUlRfRElSXSkKIAotICAg
ICAgICBzZWxmLl9wdXNoX2V4ZWN1dGFibGUoKQotICAgICAgICBzZWxmLl9wdXNoX2ZvbnRzKCkK
LSAgICAgICAgc2VsZi5fc3luY2hyb25pemVfZGF0ZXRpbWUoKQotCiAgICAgICAgICMgRGVsZXRl
IHRoZSBkaXNrIGNhY2hlIGlmIGFueSB0byBlbnN1cmUgYSBjbGVhbiB0ZXN0IHJ1bi4KICAgICAg
ICAgIyBUaGlzIGlzIGxpa2Ugd2hhdCdzIGRvbmUgaW4gQ2hyb21pdW1Qb3J0LnNldHVwX3Rlc3Rf
cnVuIGJ1dCBvbiB0aGUgZGV2aWNlLgogICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydz
aGVsbCcsICdybScsICctcicsIERSVF9BUFBfQ0FDSEVfRElSXSkKIAorICAgIEBzdGF0aWNtZXRo
b2QKKyAgICBkZWYgX2V4dHJhY3RfaGFzaGVzX2Zyb21fbWQ1c3VtX291dHB1dChtZDVzdW1fb3V0
cHV0KToKKyAgICAgICAgYXNzZXJ0IG1kNXN1bV9vdXRwdXQKKyAgICAgICAgcmV0dXJuIFtsaW5l
LnNwbGl0KCcgICcpWzBdIGZvciBsaW5lIGluIG1kNXN1bV9vdXRwdXRdCisKKyAgICBkZWYgX3B1
c2hfZmlsZV9pZl9uZWVkZWQoc2VsZiwgaG9zdF9maWxlLCBkZXZpY2VfZmlsZSk6CisgICAgICAg
IGFzc2VydCBvcy5wYXRoLmV4aXN0cyhob3N0X2ZpbGUpCisgICAgICAgIGRldmljZV9oYXNoZXMg
PSBzZWxmLl9leHRyYWN0X2hhc2hlc19mcm9tX21kNXN1bV9vdXRwdXQoCisgICAgICAgICAgICAg
ICAgc3VicHJvY2Vzcy5Qb3BlbihzZWxmLl9hZGJfY29tbWFuZCArIFsnc2hlbGwnLCBNRDVTVU1f
REVWSUNFX1BBVEgsIGRldmljZV9maWxlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dCkKKyAgICAgICAgaG9zdF9oYXNoZXMg
PSBzZWxmLl9leHRyYWN0X2hhc2hlc19mcm9tX21kNXN1bV9vdXRwdXQoCisgICAgICAgICAgICAg
ICAgc3VicHJvY2Vzcy5Qb3BlbihhcmdzPVsnJXNfaG9zdCcgJSBzZWxmLl9tZDVzdW1fcGF0aCwg
aG9zdF9maWxlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJw
cm9jZXNzLlBJUEUpLnN0ZG91dCkKKyAgICAgICAgaWYgaG9zdF9oYXNoZXMgYW5kIGRldmljZV9o
YXNoZXMgPT0gaG9zdF9oYXNoZXM6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5f
cHVzaF90b19kZXZpY2UoaG9zdF9maWxlLCBkZXZpY2VfZmlsZSkKKwogICAgIGRlZiBfcHVzaF9l
eGVjdXRhYmxlKHNlbGYpOgorICAgICAgICBzZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYu
X3BvcnQuX3BhdGhfdG9fZm9yd2FyZGVyKCksIERFVklDRV9GT1JXQVJERVJfUEFUSCkKKyAgICAg
ICAgc2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdEdW1w
UmVuZGVyVHJlZS5wYWsnKSwgREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWUucGFrJykK
KyAgICAgICAgc2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9wb3J0Ll9idWlsZF9wYXRo
KCdEdW1wUmVuZGVyVHJlZV9yZXNvdXJjZXMnKSwgREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRl
clRyZWVfcmVzb3VyY2VzJykKKyAgICAgICAgc2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxm
Ll9wb3J0Ll9idWlsZF9wYXRoKCdhbmRyb2lkX21haW5fZm9udHMueG1sJyksIERFVklDRV9EUlRf
RElSICsgJ2FuZHJvaWRfbWFpbl9mb250cy54bWwnKQorICAgICAgICBzZWxmLl9wdXNoX2ZpbGVf
aWZfbmVlZGVkKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ2FuZHJvaWRfZmFsbGJhY2tfZm9udHMu
eG1sJyksIERFVklDRV9EUlRfRElSICsgJ2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sJykKKyAg
ICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsndW5pbnN0YWxsJywgRFJUX0FQUF9QQUNLQUdF
XSkKICAgICAgICAgZHJ0X2hvc3RfcGF0aCA9IHNlbGYuX3BvcnQuX3BhdGhfdG9fZHJpdmVyKCkK
LSAgICAgICAgZm9yd2FyZGVyX2hvc3RfcGF0aCA9IHNlbGYuX3BvcnQuX3BhdGhfdG9fZm9yd2Fy
ZGVyKCkKLSAgICAgICAgaG9zdF9zdGFtcCA9IGludChmbG9hdChtYXgob3Muc3RhdChkcnRfaG9z
dF9wYXRoKS5zdF9tdGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mu
c3RhdChmb3J3YXJkZXJfaG9zdF9wYXRoKS5zdF9tdGltZSkpKQotICAgICAgICBkZXZpY2Vfc3Rh
bXAgPSBpbnQoZmxvYXQoc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsKLSAgICAgICAgICAgICdzaGVs
bCcsICdjYXQgJXMgMj4vZGV2L251bGwgfHwgZWNobyAwJyAlIERFVklDRV9EUlRfU1RBTVBfUEFU
SF0pKSkKLSAgICAgICAgaWYgZGV2aWNlX3N0YW1wICE9IGhvc3Rfc3RhbXA6Ci0gICAgICAgICAg
ICBfbG9nLmRlYnVnKCdQdXNoaW5nIGV4ZWN1dGFibGUnKQotICAgICAgICAgICAgc2VsZi5fcHVz
aF90b19kZXZpY2UoZm9yd2FyZGVyX2hvc3RfcGF0aCwgREVWSUNFX0ZPUldBUkRFUl9QQVRIKQot
ICAgICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsndW5pbnN0YWxsJywgRFJUX0FQUF9Q
QUNLQUdFXSkKLSAgICAgICAgICAgIGluc3RhbGxfcmVzdWx0ID0gc2VsZi5fcnVuX2FkYl9jb21t
YW5kKFsnaW5zdGFsbCcsIGRydF9ob3N0X3BhdGhdKQotICAgICAgICAgICAgaWYgaW5zdGFsbF9y
ZXN1bHQuZmluZCgnU3VjY2VzcycpID09IC0xOgotICAgICAgICAgICAgICAgIHJhaXNlIEFzc2Vy
dGlvbkVycm9yKCdGYWlsZWQgdG8gaW5zdGFsbCAlcyBvbnRvIGRldmljZTogJXMnICUgKGRydF9o
b3N0X3BhdGgsIGluc3RhbGxfcmVzdWx0KSkKLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2
aWNlKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ0R1bXBSZW5kZXJUcmVlLnBhaycpLCBERVZJQ0Vf
RFJUX0RJUiArICdEdW1wUmVuZGVyVHJlZS5wYWsnKQotICAgICAgICAgICAgc2VsZi5fcHVzaF90
b19kZXZpY2Uoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnRHVtcFJlbmRlclRyZWVfcmVzb3VyY2Vz
JyksIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlX3Jlc291cmNlcycpCi0gICAgICAg
ICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdhbmRyb2lk
X21haW5fZm9udHMueG1sJyksIERFVklDRV9EUlRfRElSICsgJ2FuZHJvaWRfbWFpbl9mb250cy54
bWwnKQotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fcG9ydC5fYnVpbGRf
cGF0aCgnYW5kcm9pZF9mYWxsYmFja19mb250cy54bWwnKSwgREVWSUNFX0RSVF9ESVIgKyAnYW5k
cm9pZF9mYWxsYmFja19mb250cy54bWwnKQotICAgICAgICAgICAgIyBWZXJzaW9uIGNvbnRyb2wg
b2YgdGVzdCByZXNvdXJjZXMgaXMgZGVwZW5kZW50IG9uIGV4ZWN1dGFibGVzLAotICAgICAgICAg
ICAgIyBiZWNhdXNlIHdlIHdpbGwgYWx3YXlzIHJlYnVpbGQgZXhlY3V0YWJsZXMgd2hlbiByZXNv
dXJjZXMgYXJlCi0gICAgICAgICAgICAjIHVwZGF0ZWQuCi0gICAgICAgICAgICBzZWxmLl9wdXNo
X3Rlc3RfcmVzb3VyY2VzKCkKLSAgICAgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3No
ZWxsJywgJ2VjaG8gJWQgPiVzJyAlIChob3N0X3N0YW1wLCBERVZJQ0VfRFJUX1NUQU1QX1BBVEgp
XSkKKyAgICAgICAgaW5zdGFsbF9yZXN1bHQgPSBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydpbnN0
YWxsJywgZHJ0X2hvc3RfcGF0aF0pCisgICAgICAgIGlmIGluc3RhbGxfcmVzdWx0LmZpbmQoJ1N1
Y2Nlc3MnKSA9PSAtMToKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdGYWlsZWQg
dG8gaW5zdGFsbCAlcyBvbnRvIGRldmljZTogJXMnICUgKGRydF9ob3N0X3BhdGgsIGluc3RhbGxf
cmVzdWx0KSkKIAogICAgIGRlZiBfcHVzaF9mb250cyhzZWxmKToKICAgICAgICAgaWYgbm90IHNl
bGYuX2NoZWNrX3ZlcnNpb24oREVWSUNFX0ZPTlRTX0RJUiwgRk9OVF9GSUxFU19WRVJTSU9OKToK
QEAgLTQyMSwxOCArNDQyLDcgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkRHJpdmVyKGRyaXZlci5E
cml2ZXIpOgogICAgIGRlZiBfcHVzaF90ZXN0X3Jlc291cmNlcyhzZWxmKToKICAgICAgICAgX2xv
Zy5kZWJ1ZygnUHVzaGluZyB0ZXN0IHJlc291cmNlcycpCiAgICAgICAgIGZvciByZXNvdXJjZSBp
biBURVNUX1JFU09VUkNFU19UT19QVVNIOgotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZp
Y2Uoc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkgKyAnLycgKyByZXNvdXJjZSwgREVWSUNF
X0xBWU9VVF9URVNUU19ESVIgKyByZXNvdXJjZSkKLQotICAgIGRlZiBfc3luY2hyb25pemVfZGF0
ZXRpbWUoc2VsZik6Ci0gICAgICAgICMgVGhlIGRhdGUvdGltZSBiZXR3ZWVuIGhvc3QgYW5kIGRl
dmljZSBtYXkgbm90IGJlIHN5bmNocm9uaXplZC4KLSAgICAgICAgIyBXZSBuZWVkIHRvIG1ha2Ug
dGhlbSBzeW5jaHJvbml6ZWQsIG90aGVyd2lzZSB0ZXN0cyBtaWdodCBmYWlsLgotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAjIEdldCBzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEgMDA6MDA6MDAg
VVRDLgotICAgICAgICAgICAgaG9zdF9kYXRldGltZSA9IHNlbGYuX3BvcnQuX2V4ZWN1dGl2ZS5y
dW5fY29tbWFuZChbJ2RhdGUnLCAnLXUnLCAnKyVzJ10pCi0gICAgICAgIGV4Y2VwdDoKLSAgICAg
ICAgICAgICMgUmVzZXQgdG8gMTk3MC0wMS0wMSAwMDowMDowMCBVVEMuCi0gICAgICAgICAgICBo
b3N0X2RhdGV0aW1lID0gMAotICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcs
ICdkYXRlIC11ICVzJyAlIChob3N0X2RhdGV0aW1lKV0pCisgICAgICAgICAgICBzZWxmLl9wdXNo
X2ZpbGVfaWZfbmVlZGVkKHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy8nICsgcmVz
b3VyY2UsIERFVklDRV9MQVlPVVRfVEVTVFNfRElSICsgcmVzb3VyY2UpCiAKICAgICBkZWYgX2No
ZWNrX3ZlcnNpb24oc2VsZiwgZGlyLCB2ZXJzaW9uKToKICAgICAgICAgYXNzZXJ0KGRpci5lbmRz
d2l0aCgnLycpKQpAQCAtNjkxLDggKzcwMSw2IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZERyaXZl
cihkcml2ZXIuRHJpdmVyKToKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIGN1cnJl
bnRfY2hhciA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfc3Rkb3V0KGRlYWRsaW5lLCAxKQog
ICAgICAgICAgICAgaWYgY3VycmVudF9jaGFyID09ICcgJzoKLSAgICAgICAgICAgICAgICBpZiBs
YXN0X2NoYXIgPT0gJyMnOgorICAgICAgICAgICAgICAgIGlmIGxhc3RfY2hhciBpbiBbJyMnLCAn
JCddOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBpZiBsYXN0
X2NoYXIgPT0gJyQnOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcign
QWRiZCBpcyBub3QgcnVubmluZyBhcyByb290JykKICAgICAgICAgICAgIGxhc3RfY2hhciA9IGN1
cnJlbnRfY2hhcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDhmMDdhYTQzMDAyNTQ5NTM3Mjk4YzNlYzgwZWJiOTkxMGRiYzgz
ZTEuLmNjZjU0ZDhkNWJjOGFiM2Y3ZmVlOGE0NDdkM2Y3NTQ2OWNkNDlkYjMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxMi0wOC0yOCAgUGhpbGlwcGUgTGlhcmQgIDxwbGlhcmRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFN1cHBvcnQgTGF5b3V0VGVzdHMgb24gbm9uLXJvb3RlZCBBbmRyb2lk
IGRldmljZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NTM0NgorCisgICAgICAgIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3N1YnJlc291cmNl
LXRlc3QuanMgd2FzIGFzc3VtaW5nIHRoYXQgdGhlCisgICAgICAgIGNsaWVudCBhbmQgc2VydmVy
IGNsb2NrcyBhcmUgdGhlIHNhbWUgd2hpY2ggaXMgbm8gbG9uZ2VyIHRydWUgc2luY2Ugd2UKKyAg
ICAgICAgYXJlIGdldHRpbmcgcmlkIG9mIGhvc3QvZGV2aWNlIGNsb2NrIHN5bmNocm9uaXphdGlv
bi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2NhY2hlLXNpbXVsYXRv
ci5jZ2k6CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY3VycmVudC10aW1l
LmNnaTogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVz
b3VyY2UtdGVzdC5qczoKKyAgICAgICAgKGdldFNlcnZlckRhdGUpOgorICAgICAgICAobmV4dFRl
c3QpOgorICAgICAgICAodGVzdENvbXBsZXRlKToKKyAgICAgICAgKHJ1blRlc3RzKToKKwogMjAx
Mi0wOC0yOCAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAg
W0VGTF1bV0syXVtXVFJdIFJlYmFzZWxpbmUgbmV3bHkgYWRkZWQgU1ZHIHRleHQgdGVzdCBjYXNl
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY3Vy
cmVudC10aW1lLmNnaSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2N1
cnJlbnQtdGltZS5jZ2kKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJjODkxYjIyMmM2NTU2NzhiNGU5ZmUwNzA5Mzgx
MDc4NzVmMWRhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2Fj
aGUvcmVzb3VyY2VzL2N1cnJlbnQtdGltZS5jZ2kKQEAgLTAsMCArMSw1IEBACisjIS91c3IvYmlu
L3BlcmwgLXcKKworcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9wbGFpblxuIjsKK3ByaW50ICJc
biI7CitwcmludCB0aW1lKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2Fj
aGUvcmVzb3VyY2VzL3N1YnJlc291cmNlLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2NhY2hlL3Jlc291cmNlcy9zdWJyZXNvdXJjZS10ZXN0LmpzCmluZGV4IGNlNGJiMTI5NTAzMjZh
YWMyNmY3Yzk5YWQzMGE0MTJhNDdmOWM5NjMuLmQ3NmVjMTU4OTM5ZTAxZjlkNTEzNjIxYTIzM2Jk
MTY1ODVhYjg3NzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVz
b3VyY2VzL3N1YnJlc291cmNlLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
YWNoZS9yZXNvdXJjZXMvc3VicmVzb3VyY2UtdGVzdC5qcwpAQCAtMjUsNiArMjUsMjIgQEAgdmFy
IGNvbnNvbGVEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoY29uc29sZURpdik7CiBmcmFtZTIub25sb2FkID0gZnVuY3Rpb24gKCkg
eyBsb2FkZWRGcmFtZUNvdW50Kys7IH0KIAordmFyIHNlcnZlckNsaWVudFRpbWVEZWx0YSA9IGdl
dFNlcnZlckRhdGUoKS5nZXRUaW1lKCkgLSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKKworZnVuY3Rp
b24gZ2V0U2VydmVyRGF0ZSgpCit7CisgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgp
OworICAgIHZhciB0MCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOworICAgIHJlcS5vcGVuKCdHRVQn
LCAiL2NhY2hlL3Jlc291cmNlcy9jdXJyZW50LXRpbWUuY2dpIiwgZmFsc2UgLyogYmxvY2tpbmcg
Ki8pOworICAgIHJlcS5zZW5kKCk7CisgICAgdmFyIHNlcnZlclRvQ2xpZW50VGltZSA9IChuZXcg
RGF0ZSgpLmdldFRpbWUoKSAtIHQwKSAvIDI7CisgICAgaWYgKHJlcS5zdGF0dXMgIT0gMjAwKSB7
CisgICAgICAgIGNvbnNvbGUubG9nKCJ1bmV4cGVjdGVkIHN0YXR1cyBjb2RlICIgKyByZXEuc3Rh
dHVzICsgIiwgZXhwZWN0ZWQgMjAwLiIpOworICAgICAgICByZXR1cm4gbmV3IERhdGUoKTsKKyAg
ICB9CisgICAgcmV0dXJuIG5ldyBEYXRlKChwYXJzZUludChyZXEucmVzcG9uc2VUZXh0KSAqIDEw
MDApICsgc2VydmVyVG9DbGllbnRUaW1lKTsKK30KKwogZnVuY3Rpb24gbG9hZFRlc3RGcmFtZShm
cmFtZSwgdGVzdFNwZWMpCiB7CiAgICAgdmFyIGZpcnN0ID0gdHJ1ZTsKQEAgLTY3LDcgKzgzLDcg
QEAgZnVuY3Rpb24gbmV4dFRlc3QoKQogewogICAgIHZhciB0ZXN0U3BlYyA9IHRlc3RzW2N1cnJl
bnRUZXN0XTsKICAgICB1bmlxdWVJZCA9IE1hdGguZmxvb3IoMTAwMDAwMDAwICogTWF0aC5yYW5k
b20oKSk7Ci0gICAgbm93ID0gbmV3IERhdGUoKTsKKyAgICBub3cgPSBuZXcgRGF0ZShuZXcgRGF0
ZSgpLmdldFRpbWUoKSArIHNlcnZlckNsaWVudFRpbWVEZWx0YSk7CiAgICAgaWYgKCF0ZXN0U3Bl
YykgewogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKQEAgLTgwLDIyICs5NiwyMiBAQCBmdW5jdGlvbiBuZXh0VGVzdCgp
CiBmdW5jdGlvbiB0ZXN0Q29tcGxldGUodGVzdFNwZWMpCiB7CiAgICAgdmFyIGxpbmUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICB2YXIgcmVzdWx0ID0gZnJhbWUxLmNvbnRl
bnRXaW5kb3cucmFuZG9tTnVtYmVyID09IGZyYW1lMi5jb250ZW50V2luZG93LnJhbmRvbU51bWJl
ciA/ICdDYWNoZWQnIDogJ1VuY2FjaGVkJzsgICAgCisgICAgdmFyIHJlc3VsdCA9IGZyYW1lMS5j
b250ZW50V2luZG93LnJhbmRvbU51bWJlciA9PSBmcmFtZTIuY29udGVudFdpbmRvdy5yYW5kb21O
dW1iZXIgPyAnQ2FjaGVkJyA6ICdVbmNhY2hlZCc7CiAgICAgdmFyIHBhc3NlZCA9IHJlc3VsdCA9
PSB0ZXN0U3BlYy5leHBlY3RlZFJlc3VsdDsKIAogICAgIGlmICh0ZXN0U3BlYy5kZXNjcmlwdGlv
bikKICAgICAgICAgbGluZS5pbm5lckhUTUwgKz0gdGVzdFNwZWMuZGVzY3JpcHRpb247CiAgICAg
ZWxzZSB7Ci0gICAgICAgIGZvciAodmFyIGhlYWRlciBpbiB0ZXN0U3BlYy50ZXN0SGVhZGVycykg
CisgICAgICAgIGZvciAodmFyIGhlYWRlciBpbiB0ZXN0U3BlYy50ZXN0SGVhZGVycykKICAgICAg
ICAgICAgIGxpbmUuaW5uZXJIVE1MICs9IGhlYWRlciArICI6ICIgKyB0ZXN0U3BlYy50ZXN0SGVh
ZGVyc1toZWFkZXJdICsgIjsgIjsKICAgICB9CiAgICAgaWYgKHRlc3RTcGVjLmRlbGF5KQogICAg
ICAgICBsaW5lLmlubmVySFRNTCArPSAiW2RlbGF5PSIgKyB0ZXN0U3BlYy5kZWxheSArICJzXSAi
CiAgICAgbGluZS5pbm5lckhUTUwgKz0gIiAgKHJlc3VsdD0iICsgcmVzdWx0ICsgIiBleHBlY3Rl
ZD0iICsgdGVzdFNwZWMuZXhwZWN0ZWRSZXN1bHQgKyAiKSAiOwogICAgIGxpbmUuaW5uZXJIVE1M
ICs9IHBhc3NlZCA/ICI8Zm9udCBjb2xvcj1ncmVlbj5QQVNTPC9mb250PiAiIDogIjxmb250IGNv
bG9yPXJlZD5GQUlMPC9mb250PiAiCi0gICAgICAgIAorCiAgICAgY29uc29sZURpdi5hcHBlbmRD
aGlsZChsaW5lKTsKLSAgICAKKwogICAgIG5leHRUZXN0KCk7CiB9CiAKQEAgLTEwNiw1ICsxMjIs
NCBAQCBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgICAgIG5leHRUZXN0KCk7CiAgICAgZWxzZQog
ICAgICAgICBzZXRUaW1lb3V0KHJ1blRlc3RzLCAxMDApOwotCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161680</attachid>
            <date>2012-08-31 05:55:33 -0700</date>
            <delta_ts>2012-09-05 02:35:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95346-20120831145520.patch</filename>
            <type>text/plain</type>
            <size>16457</size>
            <attacher name="Philippe Liard">pliard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODc1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTM2Yzc1MWQ4ZWEyOWU3MGI1YmZhYWY4MWFmNTQxZDUz
MzM1MmNlMy4uYjU5ZTZlNzRkYTZmYTUzY2U0MWM4ODc0ZTU0NTJjZDg2ZWU4ZWQwZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDEyLTA4LTI4ICBQaGlsaXBwZSBMaWFyZCAgPHBsaWFyZEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3VwcG9ydCBMYXlvdXRUZXN0cyBvbiBub24tcm9vdGVkIGRldmljZXMgZm9yIENo
cm9taXVtIEFuZHJvaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTM0NgorCisgICAgICAgIFdlIHdlcmUgcmVxdWlyaW5nIHJvb3QgcGVybWlzc2lv
bnMgdG8gc3luYyByZXNvdXJjZSBmaWxlcyB3aXRoIHRoZQorICAgICAgICBkZXZpY2UgYnkgY29t
cGFyaW5nIGhvc3QgYW5kIGRldmljZSBmaWxlcycgdGltZXN0YW1wIGFmdGVyIHdlCisgICAgICAg
IHN5bmNocm9uaXplZCB0aGUgZGV2aWNlIGFuZCBob3N0IGNsb2Nrcy4KKyAgICAgICAgV2Ugbm93
IHJlbHkgb24gbWQ1c3VtIHByb3ZpZGVkIGJ5IENocm9taXVtIHRvIGhhbmRsZSBkYXRhIGZpbGVz
CisgICAgICAgIHN5bmNocm9uaXphdGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgIChDaHJvbWl1bVBvcnQuX2No
ZWNrX2RyaXZlcl9idWlsZF91cF90b19kYXRlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHk6CisgICAgICAgIChDaHJvbWl1
bUFuZHJvaWREcml2ZXIuX19pbml0X18pOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVy
Ll9zZXR1cF90ZXN0KToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF9leGVj
dXRhYmxlKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF90ZXN0X3Jlc291
cmNlcyk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX3JlYWRfcHJvbXB0KToKKwog
MjAxMi0wOC0yOCAgQW5kcmFzIEJlY3NpICA8YW5kcmFzLmJlY3NpQG5va2lhLmNvbT4KIAogICAg
ICAgICBbd2F0Y2hsaXN0XSBVbnJldmlld2VkLCBzdWJzY3JpYmUgdG8gUXQgYnVncy4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVy
VHJlZS5neXAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJl
bmRlclRyZWUuZ3lwCmluZGV4IDgyNzdjZTM1ZjJiMGFhOGRmODZlYzljMjNlYzhiMGFhZTAwNWEw
OWEuLjQ5ZmI5N2VlZDYzMTFhY2Q4NWU5OWM5MGFjODNlODdkNDEwZmQ5ZjYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5n
eXAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5k
ZXJUcmVlLmd5cApAQCAtMTIxLDExICsxMjEsMTIgQEAKICAgICAgICAgICAgICAgICAnPChzb3Vy
Y2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDppbnNwZWN0b3JfcmVzb3VyY2VzJywK
ICAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cDp3ZWJraXQnLAogICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dURi9XVEYuZ3lwL1dU
Ri5neXA6d3RmJywKKyAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNlL2Jh
c2UuZ3lwOnRlc3Rfc3VwcG9ydF9iYXNlJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9z
cmNfZGlyKS9idWlsZC90ZW1wX2d5cC9nb29nbGV1cmwuZ3lwOmdvb2dsZXVybCcsCiAgICAgICAg
ICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvaWN1L2ljdS5neXA6aWN1
dWMnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L21l
c2EvbWVzYS5neXA6b3NtZXNhJywKKyAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGly
KS90b29scy9hbmRyb2lkL21kNXN1bS9tZDVzdW0uZ3lwOm1kNXN1bScsCiAgICAgICAgICAgICAg
ICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdjgvdG9vbHMvZ3lwL3Y4Lmd5cDp2OCcsCi0gICAgICAg
ICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYmFzZS9iYXNlLmd5cDp0ZXN0X3N1cHBvcnRf
YmFzZScsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L3N1cHBv
cnQvd2Via2l0X3N1cHBvcnQuZ3lwOmJsb2InLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVt
X3NyY19kaXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmd5cDp3ZWJraXRfc3VwcG9y
dCcsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L3N1cHBvcnQv
d2Via2l0X3N1cHBvcnQuZ3lwOndlYmtpdF91c2VyX2FnZW50JywKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IGU2NmIw
YTIwNDMxOWQxZjg4Njk0ZTM3NmM3MGFjYzdhMGU4YTNlNWEuLjIwNjIxOWM0YzBhMDA4NGEzNjc2
YjAwYjBmODk5YTFkMDE2YTg5ZjMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNDA1LDEwICs0MDUsOSBAQCBjbGFz
cyBDaHJvbWl1bVBvcnQoUG9ydCk6CiAKICAgICAgICAgICAgICAgICBpZiAoZGVidWdfbXRpbWUg
PiByZWxlYXNlX210aW1lIGFuZCBjb25maWd1cmF0aW9uID09ICdSZWxlYXNlJyBvcgogICAgICAg
ICAgICAgICAgICAgICByZWxlYXNlX210aW1lID4gZGVidWdfbXRpbWUgYW5kIGNvbmZpZ3VyYXRp
b24gPT0gJ0RlYnVnJyk6Ci0gICAgICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygnWW91IGFy
ZSBub3QgcnVubmluZyB0aGUgbW9zdCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAncmVjZW50IER1bXBSZW5kZXJUcmVlIGJpbmFyeS4gWW91IG5lZWQgdG8gJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3MgLS1kZWJ1ZyBvciBub3QgdG8gc2VsZWN0IGJl
dHdlZW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlYnVnIGFuZCBSZWxl
YXNlLicpCisgICAgICAgICAgICAgICAgICAgIG1vc3RfcmVjZW50X2JpbmFyeSA9ICdSZWxlYXNl
JyBpZiBjb25maWd1cmF0aW9uID09ICdEZWJ1ZycgZWxzZSAnRGVidWcnCisgICAgICAgICAgICAg
ICAgICAgIF9sb2cud2FybmluZygnWW91IGFyZSBydW5uaW5nIHRoZSAlcyBiaW5hcnkuIEhvd2V2
ZXIgdGhlICVzIGJpbmFyeSBhcHBlYXJzIHRvIGJlIG1vcmUgcmVjZW50LiAnCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIHBhc3MgLS0lcy4nLCBjb25maWd1cmF0aW9u
LCBtb3N0X3JlY2VudF9iaW5hcnksIG1vc3RfcmVjZW50X2JpbmFyeS5sb3dlcigpKQogICAgICAg
ICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJycpCiAgICAgICAgICAgICAjIFRoaXMgd2lsbCBm
YWlsIGlmIHdlIGRvbid0IGhhdmUgYm90aCBhIGRlYnVnIGFuZCByZWxlYXNlIGJpbmFyeS4KICAg
ICAgICAgICAgICMgVGhhdCdzIGZpbmUgYmVjYXVzZSwgaW4gdGhpcyBjYXNlLCB3ZSBtdXN0IGFs
cmVhZHkgYmUgcnVubmluZyB0aGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQppbmRleCA4OGVlYjRk
NzViMmJjZGJlZTA1ZGYxYjliZjI5NmI0ZTQ2YzBiMGFlLi40M2VkZjJlYTFiZTA0M2NkMjY0MDFi
MjE4YzZkYWYzNDgwYTliN2ZkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CkBAIC0zMSw2ICsz
MSw4IEBAIGltcG9ydCBjb3B5CiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgcmUK
K2ltcG9ydCBzZXRzCitpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0
IHRpbWUKIApAQCAtNTQsNyArNTYsNiBAQCBDT01NQU5EX0xJTkVfRklMRSA9IERFVklDRV9TT1VS
Q0VfUk9PVF9ESVIgKyAnY2hyb21lLW5hdGl2ZS10ZXN0cy1jb21tYW5kLWxpbmUnCiAjIGFuZCBD
aHJvbWl1bSdzIHdlYmtpdC9zdXBwb3J0L3BsYXRmb3JtX3N1cHBvcnRfYW5kcm9pZC5jYy4KIERF
VklDRV9EUlRfRElSID0gREVWSUNFX1NPVVJDRV9ST09UX0RJUiArICdkcnQvJwogREVWSUNFX0ZP
UldBUkRFUl9QQVRIID0gREVWSUNFX0RSVF9ESVIgKyAnZm9yd2FyZGVyJwotREVWSUNFX0RSVF9T
VEFNUF9QQVRIID0gREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWUuc3RhbXAnCiAKIERS
VF9BUFBfUEFDS0FHRSA9ICdvcmcuY2hyb21pdW0ubmF0aXZlX3Rlc3QnCiBEUlRfQUNUSVZJVFlf
RlVMTF9OQU1FID0gRFJUX0FQUF9QQUNLQUdFICsgJy8uQ2hyb21lTmF0aXZlVGVzdEFjdGl2aXR5
JwpAQCAtMTM3LDYgKzEzOCw4IEBAIFRFU1RfUkVTT1VSQ0VTX1RPX1BVU0ggPSBbCiAgICAgJ2Nv
bXBvc2l0aW5nL3Jlc291cmNlcy92aWRlby5tcDQnLAogXQogCitNRDVTVU1fREVWSUNFX0ZJTEVf
TkFNRSA9ICdtZDVzdW1fYmluJworTUQ1U1VNX0RFVklDRV9QQVRIID0gJy9kYXRhL2xvY2FsL3Rt
cC8nICsgTUQ1U1VNX0RFVklDRV9GSUxFX05BTUUKIAogY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9y
dChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgIHBvcnRfbmFtZSA9ICdjaHJvbWl1bS1hbmRy
b2lkJwpAQCAtMzQzLDYgKzM0Niw4IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQoY2hyb21p
dW0uQ2hyb21pdW1Qb3J0KToKIAogCiBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVy
LkRyaXZlcik6CisgICAgX2RhdGFfYWxyZWFkeV9wdXNoZWRfZm9yX3dvcmtlciA9IHNldHMuU2V0
KCkKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCB3b3JrZXJfbnVtYmVyLCBwaXhlbF90
ZXN0cywgbm9fdGltZW91dD1GYWxzZSk6CiAgICAgICAgIHN1cGVyKENocm9taXVtQW5kcm9pZERy
aXZlciwgc2VsZikuX19pbml0X18ocG9ydCwgd29ya2VyX251bWJlciwgcGl4ZWxfdGVzdHMsIG5v
X3RpbWVvdXQpCiAgICAgICAgIHNlbGYuX2NtZF9saW5lID0gTm9uZQpAQCAtMzU1LDExICszNjAs
MjYgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgICAg
ICBzZWxmLl9oYXNfc2V0dXAgPSBGYWxzZQogICAgICAgICBzZWxmLl9vcmlnaW5hbF9nb3Zlcm5v
cnMgPSB7fQogICAgICAgICBzZWxmLl9hZGJfY29tbWFuZCA9IFsnYWRiJywgJy1zJywgcG9ydC5f
Z2V0X2RldmljZV9zZXJpYWwod29ya2VyX251bWJlcildCisgICAgICAgIHNlbGYuX3NldHVwX21k
NXN1bSgpCisgICAgICAgIGlmIG5vdCB3b3JrZXJfbnVtYmVyIGluIHNlbGYuX2RhdGFfYWxyZWFk
eV9wdXNoZWRfZm9yX3dvcmtlcjoKKyAgICAgICAgICAgIHNlbGYuX3B1c2hfZXhlY3V0YWJsZSgp
CisgICAgICAgICAgICBzZWxmLl9wdXNoX2ZvbnRzKCkKKyAgICAgICAgICAgIHNlbGYuX3B1c2hf
dGVzdF9yZXNvdXJjZXMoKQorICAgICAgICAgICAgc2VsZi5fZGF0YV9hbHJlYWR5X3B1c2hlZF9m
b3Jfd29ya2VyLmFkZCh3b3JrZXJfbnVtYmVyKQogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAg
ICAgICAgIHNlbGYuX3RlYXJkb3duX3BlcmZvcm1hbmNlKCkKICAgICAgICAgc3VwZXIoQ2hyb21p
dW1BbmRyb2lkRHJpdmVyLCBzZWxmKS5fX2RlbF9fKCkKIAorICAgIGRlZiBfc2V0dXBfbWQ1c3Vt
KHNlbGYpOgorICAgICAgICBzZWxmLl9tZDVzdW1fcGF0aCA9ICclcy9vdXQvJXMvJXMnICUgKAor
ICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoKSwgc2Vs
Zi5fcG9ydC5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIE1ENVNVTV9ERVZJQ0VfRklMRV9O
QU1FKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoc2VsZi5fbWQ1c3VtX3BhdGgpCisg
ICAgICAgIGlmIHNlbGYuX2ZpbGVfZXhpc3RzX29uX2RldmljZShNRDVTVU1fREVWSUNFX1BBVEgp
OgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIG5vdCBzZWxmLl9wdXNoX3RvX2Rldmlj
ZShzZWxmLl9tZDVzdW1fcGF0aCwgTUQ1U1VNX0RFVklDRV9QQVRIKToKKyAgICAgICAgICAgIF9s
b2cuZXJyb3IoJ0NvdWxkIG5vdCBwdXNoIG1kNXN1bSB0byBkZXZpY2UnKQorCiAgICAgZGVmIF9z
ZXR1cF90ZXN0KHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9oYXNfc2V0dXA6CiAgICAgICAgICAg
ICByZXR1cm4KQEAgLTM3NiwzNyArMzk2LDM4IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZERyaXZl
cihkcml2ZXIuRHJpdmVyKToKICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwn
LCAnbWtkaXInLCAnLXAnLCBERVZJQ0VfRFJUX0RJUl0pCiAgICAgICAgIHNlbGYuX3J1bl9hZGJf
Y29tbWFuZChbJ3NoZWxsJywgJ2NobW9kJywgJzc3NycsIERFVklDRV9EUlRfRElSXSkKIAotICAg
ICAgICBzZWxmLl9wdXNoX2V4ZWN1dGFibGUoKQotICAgICAgICBzZWxmLl9wdXNoX2ZvbnRzKCkK
LSAgICAgICAgc2VsZi5fc3luY2hyb25pemVfZGF0ZXRpbWUoKQotCiAgICAgICAgICMgRGVsZXRl
IHRoZSBkaXNrIGNhY2hlIGlmIGFueSB0byBlbnN1cmUgYSBjbGVhbiB0ZXN0IHJ1bi4KICAgICAg
ICAgIyBUaGlzIGlzIGxpa2Ugd2hhdCdzIGRvbmUgaW4gQ2hyb21pdW1Qb3J0LnNldHVwX3Rlc3Rf
cnVuIGJ1dCBvbiB0aGUgZGV2aWNlLgogICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydz
aGVsbCcsICdybScsICctcicsIERSVF9BUFBfQ0FDSEVfRElSXSkKIAorICAgIEBzdGF0aWNtZXRo
b2QKKyAgICBkZWYgX2V4dHJhY3RfaGFzaGVzX2Zyb21fbWQ1c3VtX291dHB1dChtZDVzdW1fb3V0
cHV0KToKKyAgICAgICAgYXNzZXJ0IG1kNXN1bV9vdXRwdXQKKyAgICAgICAgcmV0dXJuIFtsaW5l
LnNwbGl0KCcgICcpWzBdIGZvciBsaW5lIGluIG1kNXN1bV9vdXRwdXRdCisKKyAgICBkZWYgX3B1
c2hfZmlsZV9pZl9uZWVkZWQoc2VsZiwgaG9zdF9maWxlLCBkZXZpY2VfZmlsZSk6CisgICAgICAg
IGFzc2VydCBvcy5wYXRoLmV4aXN0cyhob3N0X2ZpbGUpCisgICAgICAgIGRldmljZV9oYXNoZXMg
PSBzZWxmLl9leHRyYWN0X2hhc2hlc19mcm9tX21kNXN1bV9vdXRwdXQoCisgICAgICAgICAgICAg
ICAgc3VicHJvY2Vzcy5Qb3BlbihzZWxmLl9hZGJfY29tbWFuZCArIFsnc2hlbGwnLCBNRDVTVU1f
REVWSUNFX1BBVEgsIGRldmljZV9maWxlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dCkKKyAgICAgICAgaG9zdF9oYXNoZXMg
PSBzZWxmLl9leHRyYWN0X2hhc2hlc19mcm9tX21kNXN1bV9vdXRwdXQoCisgICAgICAgICAgICAg
ICAgc3VicHJvY2Vzcy5Qb3BlbihhcmdzPVsnJXNfaG9zdCcgJSBzZWxmLl9tZDVzdW1fcGF0aCwg
aG9zdF9maWxlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJw
cm9jZXNzLlBJUEUpLnN0ZG91dCkKKyAgICAgICAgaWYgaG9zdF9oYXNoZXMgYW5kIGRldmljZV9o
YXNoZXMgPT0gaG9zdF9oYXNoZXM6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5f
cHVzaF90b19kZXZpY2UoaG9zdF9maWxlLCBkZXZpY2VfZmlsZSkKKwogICAgIGRlZiBfcHVzaF9l
eGVjdXRhYmxlKHNlbGYpOgorICAgICAgICBzZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYu
X3BvcnQuX3BhdGhfdG9fZm9yd2FyZGVyKCksIERFVklDRV9GT1JXQVJERVJfUEFUSCkKKyAgICAg
ICAgc2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdEdW1w
UmVuZGVyVHJlZS5wYWsnKSwgREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWUucGFrJykK
KyAgICAgICAgc2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9wb3J0Ll9idWlsZF9wYXRo
KCdEdW1wUmVuZGVyVHJlZV9yZXNvdXJjZXMnKSwgREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRl
clRyZWVfcmVzb3VyY2VzJykKKyAgICAgICAgc2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxm
Ll9wb3J0Ll9idWlsZF9wYXRoKCdhbmRyb2lkX21haW5fZm9udHMueG1sJyksIERFVklDRV9EUlRf
RElSICsgJ2FuZHJvaWRfbWFpbl9mb250cy54bWwnKQorICAgICAgICBzZWxmLl9wdXNoX2ZpbGVf
aWZfbmVlZGVkKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ2FuZHJvaWRfZmFsbGJhY2tfZm9udHMu
eG1sJyksIERFVklDRV9EUlRfRElSICsgJ2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sJykKKyAg
ICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsndW5pbnN0YWxsJywgRFJUX0FQUF9QQUNLQUdF
XSkKICAgICAgICAgZHJ0X2hvc3RfcGF0aCA9IHNlbGYuX3BvcnQuX3BhdGhfdG9fZHJpdmVyKCkK
LSAgICAgICAgZm9yd2FyZGVyX2hvc3RfcGF0aCA9IHNlbGYuX3BvcnQuX3BhdGhfdG9fZm9yd2Fy
ZGVyKCkKLSAgICAgICAgaG9zdF9zdGFtcCA9IGludChmbG9hdChtYXgob3Muc3RhdChkcnRfaG9z
dF9wYXRoKS5zdF9tdGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mu
c3RhdChmb3J3YXJkZXJfaG9zdF9wYXRoKS5zdF9tdGltZSkpKQotICAgICAgICBkZXZpY2Vfc3Rh
bXAgPSBpbnQoZmxvYXQoc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsKLSAgICAgICAgICAgICdzaGVs
bCcsICdjYXQgJXMgMj4vZGV2L251bGwgfHwgZWNobyAwJyAlIERFVklDRV9EUlRfU1RBTVBfUEFU
SF0pKSkKLSAgICAgICAgaWYgZGV2aWNlX3N0YW1wICE9IGhvc3Rfc3RhbXA6Ci0gICAgICAgICAg
ICBfbG9nLmRlYnVnKCdQdXNoaW5nIGV4ZWN1dGFibGUnKQotICAgICAgICAgICAgc2VsZi5fcHVz
aF90b19kZXZpY2UoZm9yd2FyZGVyX2hvc3RfcGF0aCwgREVWSUNFX0ZPUldBUkRFUl9QQVRIKQot
ICAgICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsndW5pbnN0YWxsJywgRFJUX0FQUF9Q
QUNLQUdFXSkKLSAgICAgICAgICAgIGluc3RhbGxfcmVzdWx0ID0gc2VsZi5fcnVuX2FkYl9jb21t
YW5kKFsnaW5zdGFsbCcsIGRydF9ob3N0X3BhdGhdKQotICAgICAgICAgICAgaWYgaW5zdGFsbF9y
ZXN1bHQuZmluZCgnU3VjY2VzcycpID09IC0xOgotICAgICAgICAgICAgICAgIHJhaXNlIEFzc2Vy
dGlvbkVycm9yKCdGYWlsZWQgdG8gaW5zdGFsbCAlcyBvbnRvIGRldmljZTogJXMnICUgKGRydF9o
b3N0X3BhdGgsIGluc3RhbGxfcmVzdWx0KSkKLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2
aWNlKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ0R1bXBSZW5kZXJUcmVlLnBhaycpLCBERVZJQ0Vf
RFJUX0RJUiArICdEdW1wUmVuZGVyVHJlZS5wYWsnKQotICAgICAgICAgICAgc2VsZi5fcHVzaF90
b19kZXZpY2Uoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnRHVtcFJlbmRlclRyZWVfcmVzb3VyY2Vz
JyksIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlX3Jlc291cmNlcycpCi0gICAgICAg
ICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdhbmRyb2lk
X21haW5fZm9udHMueG1sJyksIERFVklDRV9EUlRfRElSICsgJ2FuZHJvaWRfbWFpbl9mb250cy54
bWwnKQotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fcG9ydC5fYnVpbGRf
cGF0aCgnYW5kcm9pZF9mYWxsYmFja19mb250cy54bWwnKSwgREVWSUNFX0RSVF9ESVIgKyAnYW5k
cm9pZF9mYWxsYmFja19mb250cy54bWwnKQotICAgICAgICAgICAgIyBWZXJzaW9uIGNvbnRyb2wg
b2YgdGVzdCByZXNvdXJjZXMgaXMgZGVwZW5kZW50IG9uIGV4ZWN1dGFibGVzLAotICAgICAgICAg
ICAgIyBiZWNhdXNlIHdlIHdpbGwgYWx3YXlzIHJlYnVpbGQgZXhlY3V0YWJsZXMgd2hlbiByZXNv
dXJjZXMgYXJlCi0gICAgICAgICAgICAjIHVwZGF0ZWQuCi0gICAgICAgICAgICBzZWxmLl9wdXNo
X3Rlc3RfcmVzb3VyY2VzKCkKLSAgICAgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3No
ZWxsJywgJ2VjaG8gJWQgPiVzJyAlIChob3N0X3N0YW1wLCBERVZJQ0VfRFJUX1NUQU1QX1BBVEgp
XSkKKyAgICAgICAgaW5zdGFsbF9yZXN1bHQgPSBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydpbnN0
YWxsJywgZHJ0X2hvc3RfcGF0aF0pCisgICAgICAgIGlmIGluc3RhbGxfcmVzdWx0LmZpbmQoJ1N1
Y2Nlc3MnKSA9PSAtMToKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdGYWlsZWQg
dG8gaW5zdGFsbCAlcyBvbnRvIGRldmljZTogJXMnICUgKGRydF9ob3N0X3BhdGgsIGluc3RhbGxf
cmVzdWx0KSkKIAogICAgIGRlZiBfcHVzaF9mb250cyhzZWxmKToKICAgICAgICAgaWYgbm90IHNl
bGYuX2NoZWNrX3ZlcnNpb24oREVWSUNFX0ZPTlRTX0RJUiwgRk9OVF9GSUxFU19WRVJTSU9OKToK
QEAgLTQyMSwxOCArNDQyLDcgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkRHJpdmVyKGRyaXZlci5E
cml2ZXIpOgogICAgIGRlZiBfcHVzaF90ZXN0X3Jlc291cmNlcyhzZWxmKToKICAgICAgICAgX2xv
Zy5kZWJ1ZygnUHVzaGluZyB0ZXN0IHJlc291cmNlcycpCiAgICAgICAgIGZvciByZXNvdXJjZSBp
biBURVNUX1JFU09VUkNFU19UT19QVVNIOgotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZp
Y2Uoc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkgKyAnLycgKyByZXNvdXJjZSwgREVWSUNF
X0xBWU9VVF9URVNUU19ESVIgKyByZXNvdXJjZSkKLQotICAgIGRlZiBfc3luY2hyb25pemVfZGF0
ZXRpbWUoc2VsZik6Ci0gICAgICAgICMgVGhlIGRhdGUvdGltZSBiZXR3ZWVuIGhvc3QgYW5kIGRl
dmljZSBtYXkgbm90IGJlIHN5bmNocm9uaXplZC4KLSAgICAgICAgIyBXZSBuZWVkIHRvIG1ha2Ug
dGhlbSBzeW5jaHJvbml6ZWQsIG90aGVyd2lzZSB0ZXN0cyBtaWdodCBmYWlsLgotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAjIEdldCBzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEgMDA6MDA6MDAg
VVRDLgotICAgICAgICAgICAgaG9zdF9kYXRldGltZSA9IHNlbGYuX3BvcnQuX2V4ZWN1dGl2ZS5y
dW5fY29tbWFuZChbJ2RhdGUnLCAnLXUnLCAnKyVzJ10pCi0gICAgICAgIGV4Y2VwdDoKLSAgICAg
ICAgICAgICMgUmVzZXQgdG8gMTk3MC0wMS0wMSAwMDowMDowMCBVVEMuCi0gICAgICAgICAgICBo
b3N0X2RhdGV0aW1lID0gMAotICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcs
ICdkYXRlIC11ICVzJyAlIChob3N0X2RhdGV0aW1lKV0pCisgICAgICAgICAgICBzZWxmLl9wdXNo
X2ZpbGVfaWZfbmVlZGVkKHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy8nICsgcmVz
b3VyY2UsIERFVklDRV9MQVlPVVRfVEVTVFNfRElSICsgcmVzb3VyY2UpCiAKICAgICBkZWYgX2No
ZWNrX3ZlcnNpb24oc2VsZiwgZGlyLCB2ZXJzaW9uKToKICAgICAgICAgYXNzZXJ0KGRpci5lbmRz
d2l0aCgnLycpKQpAQCAtNjkxLDggKzcwMSw2IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZERyaXZl
cihkcml2ZXIuRHJpdmVyKToKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIGN1cnJl
bnRfY2hhciA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfc3Rkb3V0KGRlYWRsaW5lLCAxKQog
ICAgICAgICAgICAgaWYgY3VycmVudF9jaGFyID09ICcgJzoKLSAgICAgICAgICAgICAgICBpZiBs
YXN0X2NoYXIgPT0gJyMnOgorICAgICAgICAgICAgICAgIGlmIGxhc3RfY2hhciBpbiBbJyMnLCAn
JCddOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBpZiBsYXN0
X2NoYXIgPT0gJyQnOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcign
QWRiZCBpcyBub3QgcnVubmluZyBhcyByb290JykKICAgICAgICAgICAgIGxhc3RfY2hhciA9IGN1
cnJlbnRfY2hhcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDhmMDdhYTQzMDAyNTQ5NTM3Mjk4YzNlYzgwZWJiOTkxMGRiYzgz
ZTEuLmNjZjU0ZDhkNWJjOGFiM2Y3ZmVlOGE0NDdkM2Y3NTQ2OWNkNDlkYjMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxMi0wOC0yOCAgUGhpbGlwcGUgTGlhcmQgIDxwbGlhcmRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFN1cHBvcnQgTGF5b3V0VGVzdHMgb24gbm9uLXJvb3RlZCBBbmRyb2lk
IGRldmljZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NTM0NgorCisgICAgICAgIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3N1YnJlc291cmNl
LXRlc3QuanMgd2FzIGFzc3VtaW5nIHRoYXQgdGhlCisgICAgICAgIGNsaWVudCBhbmQgc2VydmVy
IGNsb2NrcyBhcmUgdGhlIHNhbWUgd2hpY2ggaXMgbm8gbG9uZ2VyIHRydWUgc2luY2Ugd2UKKyAg
ICAgICAgYXJlIGdldHRpbmcgcmlkIG9mIGhvc3QvZGV2aWNlIGNsb2NrIHN5bmNocm9uaXphdGlv
bi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2NhY2hlLXNpbXVsYXRv
ci5jZ2k6CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY3VycmVudC10aW1l
LmNnaTogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVz
b3VyY2UtdGVzdC5qczoKKyAgICAgICAgKGdldFNlcnZlckRhdGUpOgorICAgICAgICAobmV4dFRl
c3QpOgorICAgICAgICAodGVzdENvbXBsZXRlKToKKyAgICAgICAgKHJ1blRlc3RzKToKKwogMjAx
Mi0wOC0yOCAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAg
W0VGTF1bV0syXVtXVFJdIFJlYmFzZWxpbmUgbmV3bHkgYWRkZWQgU1ZHIHRleHQgdGVzdCBjYXNl
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY3Vy
cmVudC10aW1lLmNnaSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2N1
cnJlbnQtdGltZS5jZ2kKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU0MjY1ZjM3MzFlYTE4Mzk4Yzk1NGYyYzgxZWNl
YzI5NmVjNjMwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2Fj
aGUvcmVzb3VyY2VzL2N1cnJlbnQtdGltZS5jZ2kKQEAgLTAsMCArMSw1IEBACisjIS91c3IvYmlu
L3BlcmwgLXcKKworcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9wbGFpblxuIjsKK3ByaW50ICJc
biI7CitwcmludCB0aW1lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nh
Y2hlL3Jlc291cmNlcy9zdWJyZXNvdXJjZS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3VyY2UtdGVzdC5qcwppbmRleCBjZTRiYjEyOTUwMzI2
YWFjMjZmN2M5OWFkMzBhNDEyYTQ3ZjljOTYzLi5lNGM4ZmU1MjU2YTBkNDI1YjBlOGM5YmE3NWM3
ZGZmNGQ1ZWMxZjFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jl
c291cmNlcy9zdWJyZXNvdXJjZS10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y2FjaGUvcmVzb3VyY2VzL3N1YnJlc291cmNlLXRlc3QuanMKQEAgLTI1LDYgKzI1LDIyIEBAIHZh
ciBjb25zb2xlRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGNvbnNvbGVEaXYpOwogZnJhbWUyLm9ubG9hZCA9IGZ1bmN0aW9uICgp
IHsgbG9hZGVkRnJhbWVDb3VudCsrOyB9CiAKK2Z1bmN0aW9uIGdldFNlcnZlckRhdGUoKQorewor
ICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICB2YXIgdDAgPSBuZXcgRGF0
ZSgpLmdldFRpbWUoKTsKKyAgICByZXEub3BlbignR0VUJywgIi9jYWNoZS9yZXNvdXJjZXMvY3Vy
cmVudC10aW1lLmNnaSIsIGZhbHNlIC8qIGJsb2NraW5nICovKTsKKyAgICByZXEuc2VuZCgpOwor
ICAgIHZhciBzZXJ2ZXJUb0NsaWVudFRpbWUgPSAobmV3IERhdGUoKS5nZXRUaW1lKCkgLSB0MCkg
LyAyOworICAgIGlmIChyZXEuc3RhdHVzICE9IDIwMCkgeworICAgICAgICBjb25zb2xlLmxvZygi
dW5leHBlY3RlZCBzdGF0dXMgY29kZSAiICsgcmVxLnN0YXR1cyArICIsIGV4cGVjdGVkIDIwMC4i
KTsKKyAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7CisgICAgfQorICAgIHJldHVybiBuZXcgRGF0
ZSgocGFyc2VJbnQocmVxLnJlc3BvbnNlVGV4dCkgKiAxMDAwKSArIHNlcnZlclRvQ2xpZW50VGlt
ZSk7Cit9CisKK3ZhciBzZXJ2ZXJDbGllbnRUaW1lRGVsdGEgPSBnZXRTZXJ2ZXJEYXRlKCkuZ2V0
VGltZSgpIC0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CisKIGZ1bmN0aW9uIGxvYWRUZXN0RnJhbWUo
ZnJhbWUsIHRlc3RTcGVjKQogewogICAgIHZhciBmaXJzdCA9IHRydWU7CkBAIC02Nyw3ICs4Myw3
IEBAIGZ1bmN0aW9uIG5leHRUZXN0KCkKIHsKICAgICB2YXIgdGVzdFNwZWMgPSB0ZXN0c1tjdXJy
ZW50VGVzdF07CiAgICAgdW5pcXVlSWQgPSBNYXRoLmZsb29yKDEwMDAwMDAwMCAqIE1hdGgucmFu
ZG9tKCkpOwotICAgIG5vdyA9IG5ldyBEYXRlKCk7CisgICAgbm93ID0gbmV3IERhdGUobmV3IERh
dGUoKS5nZXRUaW1lKCkgKyBzZXJ2ZXJDbGllbnRUaW1lRGVsdGEpOwogICAgIGlmICghdGVzdFNw
ZWMpIHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CkBAIC04MCwyMiArOTYsMjIgQEAgZnVuY3Rpb24gbmV4dFRlc3Qo
KQogZnVuY3Rpb24gdGVzdENvbXBsZXRlKHRlc3RTcGVjKQogewogICAgIHZhciBsaW5lID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgdmFyIHJlc3VsdCA9IGZyYW1lMS5jb250
ZW50V2luZG93LnJhbmRvbU51bWJlciA9PSBmcmFtZTIuY29udGVudFdpbmRvdy5yYW5kb21OdW1i
ZXIgPyAnQ2FjaGVkJyA6ICdVbmNhY2hlZCc7ICAgIAorICAgIHZhciByZXN1bHQgPSBmcmFtZTEu
Y29udGVudFdpbmRvdy5yYW5kb21OdW1iZXIgPT0gZnJhbWUyLmNvbnRlbnRXaW5kb3cucmFuZG9t
TnVtYmVyID8gJ0NhY2hlZCcgOiAnVW5jYWNoZWQnOwogICAgIHZhciBwYXNzZWQgPSByZXN1bHQg
PT0gdGVzdFNwZWMuZXhwZWN0ZWRSZXN1bHQ7CiAKICAgICBpZiAodGVzdFNwZWMuZGVzY3JpcHRp
b24pCiAgICAgICAgIGxpbmUuaW5uZXJIVE1MICs9IHRlc3RTcGVjLmRlc2NyaXB0aW9uOwogICAg
IGVsc2UgewotICAgICAgICBmb3IgKHZhciBoZWFkZXIgaW4gdGVzdFNwZWMudGVzdEhlYWRlcnMp
IAorICAgICAgICBmb3IgKHZhciBoZWFkZXIgaW4gdGVzdFNwZWMudGVzdEhlYWRlcnMpCiAgICAg
ICAgICAgICBsaW5lLmlubmVySFRNTCArPSBoZWFkZXIgKyAiOiAiICsgdGVzdFNwZWMudGVzdEhl
YWRlcnNbaGVhZGVyXSArICI7ICI7CiAgICAgfQogICAgIGlmICh0ZXN0U3BlYy5kZWxheSkKICAg
ICAgICAgbGluZS5pbm5lckhUTUwgKz0gIltkZWxheT0iICsgdGVzdFNwZWMuZGVsYXkgKyAic10g
IgogICAgIGxpbmUuaW5uZXJIVE1MICs9ICIgIChyZXN1bHQ9IiArIHJlc3VsdCArICIgZXhwZWN0
ZWQ9IiArIHRlc3RTcGVjLmV4cGVjdGVkUmVzdWx0ICsgIikgIjsKICAgICBsaW5lLmlubmVySFRN
TCArPSBwYXNzZWQgPyAiPGZvbnQgY29sb3I9Z3JlZW4+UEFTUzwvZm9udD4gIiA6ICI8Zm9udCBj
b2xvcj1yZWQ+RkFJTDwvZm9udD4gIgotICAgICAgICAKKwogICAgIGNvbnNvbGVEaXYuYXBwZW5k
Q2hpbGQobGluZSk7Ci0gICAgCisKICAgICBuZXh0VGVzdCgpOwogfQogCkBAIC0xMDYsNSArMTIy
LDQgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAgICBuZXh0VGVzdCgpOwogICAgIGVsc2UK
ICAgICAgICAgc2V0VGltZW91dChydW5UZXN0cywgMTAwKTsKLQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162197</attachid>
            <date>2012-09-05 02:36:00 -0700</date>
            <delta_ts>2012-09-05 04:55:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95346-20120905113541.patch</filename>
            <type>text/plain</type>
            <size>16457</size>
            <attacher name="Philippe Liard">pliard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODc1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTM2Yzc1MWQ4ZWEyOWU3MGI1YmZhYWY4MWFmNTQxZDUz
MzM1MmNlMy4uYjU5ZTZlNzRkYTZmYTUzY2U0MWM4ODc0ZTU0NTJjZDg2ZWU4ZWQwZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDEyLTA4LTI4ICBQaGlsaXBwZSBMaWFyZCAgPHBsaWFyZEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3VwcG9ydCBMYXlvdXRUZXN0cyBvbiBub24tcm9vdGVkIGRldmljZXMgZm9yIENo
cm9taXVtIEFuZHJvaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTM0NgorCisgICAgICAgIFdlIHdlcmUgcmVxdWlyaW5nIHJvb3QgcGVybWlzc2lv
bnMgdG8gc3luYyByZXNvdXJjZSBmaWxlcyB3aXRoIHRoZQorICAgICAgICBkZXZpY2UgYnkgY29t
cGFyaW5nIGhvc3QgYW5kIGRldmljZSBmaWxlcycgdGltZXN0YW1wIGFmdGVyIHdlCisgICAgICAg
IHN5bmNocm9uaXplZCB0aGUgZGV2aWNlIGFuZCBob3N0IGNsb2Nrcy4KKyAgICAgICAgV2Ugbm93
IHJlbHkgb24gbWQ1c3VtIHByb3ZpZGVkIGJ5IENocm9taXVtIHRvIGhhbmRsZSBkYXRhIGZpbGVz
CisgICAgICAgIHN5bmNocm9uaXphdGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgIChDaHJvbWl1bVBvcnQuX2No
ZWNrX2RyaXZlcl9idWlsZF91cF90b19kYXRlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHk6CisgICAgICAgIChDaHJvbWl1
bUFuZHJvaWREcml2ZXIuX19pbml0X18pOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVy
Ll9zZXR1cF90ZXN0KToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF9leGVj
dXRhYmxlKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF90ZXN0X3Jlc291
cmNlcyk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX3JlYWRfcHJvbXB0KToKKwog
MjAxMi0wOC0yOCAgQW5kcmFzIEJlY3NpICA8YW5kcmFzLmJlY3NpQG5va2lhLmNvbT4KIAogICAg
ICAgICBbd2F0Y2hsaXN0XSBVbnJldmlld2VkLCBzdWJzY3JpYmUgdG8gUXQgYnVncy4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVy
VHJlZS5neXAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJl
bmRlclRyZWUuZ3lwCmluZGV4IDgyNzdjZTM1ZjJiMGFhOGRmODZlYzljMjNlYzhiMGFhZTAwNWEw
OWEuLjQ5ZmI5N2VlZDYzMTFhY2Q4NWU5OWM5MGFjODNlODdkNDEwZmQ5ZjYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5n
eXAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5k
ZXJUcmVlLmd5cApAQCAtMTIxLDExICsxMjEsMTIgQEAKICAgICAgICAgICAgICAgICAnPChzb3Vy
Y2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDppbnNwZWN0b3JfcmVzb3VyY2VzJywK
ICAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cDp3ZWJraXQnLAogICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dURi9XVEYuZ3lwL1dU
Ri5neXA6d3RmJywKKyAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNlL2Jh
c2UuZ3lwOnRlc3Rfc3VwcG9ydF9iYXNlJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9z
cmNfZGlyKS9idWlsZC90ZW1wX2d5cC9nb29nbGV1cmwuZ3lwOmdvb2dsZXVybCcsCiAgICAgICAg
ICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvaWN1L2ljdS5neXA6aWN1
dWMnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L21l
c2EvbWVzYS5neXA6b3NtZXNhJywKKyAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGly
KS90b29scy9hbmRyb2lkL21kNXN1bS9tZDVzdW0uZ3lwOm1kNXN1bScsCiAgICAgICAgICAgICAg
ICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdjgvdG9vbHMvZ3lwL3Y4Lmd5cDp2OCcsCi0gICAgICAg
ICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYmFzZS9iYXNlLmd5cDp0ZXN0X3N1cHBvcnRf
YmFzZScsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L3N1cHBv
cnQvd2Via2l0X3N1cHBvcnQuZ3lwOmJsb2InLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVt
X3NyY19kaXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmd5cDp3ZWJraXRfc3VwcG9y
dCcsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L3N1cHBvcnQv
d2Via2l0X3N1cHBvcnQuZ3lwOndlYmtpdF91c2VyX2FnZW50JywKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IGU2NmIw
YTIwNDMxOWQxZjg4Njk0ZTM3NmM3MGFjYzdhMGU4YTNlNWEuLjIwNjIxOWM0YzBhMDA4NGEzNjc2
YjAwYjBmODk5YTFkMDE2YTg5ZjMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNDA1LDEwICs0MDUsOSBAQCBjbGFz
cyBDaHJvbWl1bVBvcnQoUG9ydCk6CiAKICAgICAgICAgICAgICAgICBpZiAoZGVidWdfbXRpbWUg
PiByZWxlYXNlX210aW1lIGFuZCBjb25maWd1cmF0aW9uID09ICdSZWxlYXNlJyBvcgogICAgICAg
ICAgICAgICAgICAgICByZWxlYXNlX210aW1lID4gZGVidWdfbXRpbWUgYW5kIGNvbmZpZ3VyYXRp
b24gPT0gJ0RlYnVnJyk6Ci0gICAgICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygnWW91IGFy
ZSBub3QgcnVubmluZyB0aGUgbW9zdCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAncmVjZW50IER1bXBSZW5kZXJUcmVlIGJpbmFyeS4gWW91IG5lZWQgdG8gJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3MgLS1kZWJ1ZyBvciBub3QgdG8gc2VsZWN0IGJl
dHdlZW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlYnVnIGFuZCBSZWxl
YXNlLicpCisgICAgICAgICAgICAgICAgICAgIG1vc3RfcmVjZW50X2JpbmFyeSA9ICdSZWxlYXNl
JyBpZiBjb25maWd1cmF0aW9uID09ICdEZWJ1ZycgZWxzZSAnRGVidWcnCisgICAgICAgICAgICAg
ICAgICAgIF9sb2cud2FybmluZygnWW91IGFyZSBydW5uaW5nIHRoZSAlcyBiaW5hcnkuIEhvd2V2
ZXIgdGhlICVzIGJpbmFyeSBhcHBlYXJzIHRvIGJlIG1vcmUgcmVjZW50LiAnCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIHBhc3MgLS0lcy4nLCBjb25maWd1cmF0aW9u
LCBtb3N0X3JlY2VudF9iaW5hcnksIG1vc3RfcmVjZW50X2JpbmFyeS5sb3dlcigpKQogICAgICAg
ICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJycpCiAgICAgICAgICAgICAjIFRoaXMgd2lsbCBm
YWlsIGlmIHdlIGRvbid0IGhhdmUgYm90aCBhIGRlYnVnIGFuZCByZWxlYXNlIGJpbmFyeS4KICAg
ICAgICAgICAgICMgVGhhdCdzIGZpbmUgYmVjYXVzZSwgaW4gdGhpcyBjYXNlLCB3ZSBtdXN0IGFs
cmVhZHkgYmUgcnVubmluZyB0aGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQppbmRleCA4OGVlYjRk
NzViMmJjZGJlZTA1ZGYxYjliZjI5NmI0ZTQ2YzBiMGFlLi40M2VkZjJlYTFiZTA0M2NkMjY0MDFi
MjE4YzZkYWYzNDgwYTliN2ZkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CkBAIC0zMSw2ICsz
MSw4IEBAIGltcG9ydCBjb3B5CiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgcmUK
K2ltcG9ydCBzZXRzCitpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0
IHRpbWUKIApAQCAtNTQsNyArNTYsNiBAQCBDT01NQU5EX0xJTkVfRklMRSA9IERFVklDRV9TT1VS
Q0VfUk9PVF9ESVIgKyAnY2hyb21lLW5hdGl2ZS10ZXN0cy1jb21tYW5kLWxpbmUnCiAjIGFuZCBD
aHJvbWl1bSdzIHdlYmtpdC9zdXBwb3J0L3BsYXRmb3JtX3N1cHBvcnRfYW5kcm9pZC5jYy4KIERF
VklDRV9EUlRfRElSID0gREVWSUNFX1NPVVJDRV9ST09UX0RJUiArICdkcnQvJwogREVWSUNFX0ZP
UldBUkRFUl9QQVRIID0gREVWSUNFX0RSVF9ESVIgKyAnZm9yd2FyZGVyJwotREVWSUNFX0RSVF9T
VEFNUF9QQVRIID0gREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWUuc3RhbXAnCiAKIERS
VF9BUFBfUEFDS0FHRSA9ICdvcmcuY2hyb21pdW0ubmF0aXZlX3Rlc3QnCiBEUlRfQUNUSVZJVFlf
RlVMTF9OQU1FID0gRFJUX0FQUF9QQUNLQUdFICsgJy8uQ2hyb21lTmF0aXZlVGVzdEFjdGl2aXR5
JwpAQCAtMTM3LDYgKzEzOCw4IEBAIFRFU1RfUkVTT1VSQ0VTX1RPX1BVU0ggPSBbCiAgICAgJ2Nv
bXBvc2l0aW5nL3Jlc291cmNlcy92aWRlby5tcDQnLAogXQogCitNRDVTVU1fREVWSUNFX0ZJTEVf
TkFNRSA9ICdtZDVzdW1fYmluJworTUQ1U1VNX0RFVklDRV9QQVRIID0gJy9kYXRhL2xvY2FsL3Rt
cC8nICsgTUQ1U1VNX0RFVklDRV9GSUxFX05BTUUKIAogY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9y
dChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgIHBvcnRfbmFtZSA9ICdjaHJvbWl1bS1hbmRy
b2lkJwpAQCAtMzQzLDYgKzM0Niw4IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQoY2hyb21p
dW0uQ2hyb21pdW1Qb3J0KToKIAogCiBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVy
LkRyaXZlcik6CisgICAgX2RhdGFfYWxyZWFkeV9wdXNoZWRfZm9yX3dvcmtlciA9IHNldHMuU2V0
KCkKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCB3b3JrZXJfbnVtYmVyLCBwaXhlbF90
ZXN0cywgbm9fdGltZW91dD1GYWxzZSk6CiAgICAgICAgIHN1cGVyKENocm9taXVtQW5kcm9pZERy
aXZlciwgc2VsZikuX19pbml0X18ocG9ydCwgd29ya2VyX251bWJlciwgcGl4ZWxfdGVzdHMsIG5v
X3RpbWVvdXQpCiAgICAgICAgIHNlbGYuX2NtZF9saW5lID0gTm9uZQpAQCAtMzU1LDExICszNjAs
MjYgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgICAg
ICBzZWxmLl9oYXNfc2V0dXAgPSBGYWxzZQogICAgICAgICBzZWxmLl9vcmlnaW5hbF9nb3Zlcm5v
cnMgPSB7fQogICAgICAgICBzZWxmLl9hZGJfY29tbWFuZCA9IFsnYWRiJywgJy1zJywgcG9ydC5f
Z2V0X2RldmljZV9zZXJpYWwod29ya2VyX251bWJlcildCisgICAgICAgIHNlbGYuX3NldHVwX21k
NXN1bSgpCisgICAgICAgIGlmIG5vdCB3b3JrZXJfbnVtYmVyIGluIHNlbGYuX2RhdGFfYWxyZWFk
eV9wdXNoZWRfZm9yX3dvcmtlcjoKKyAgICAgICAgICAgIHNlbGYuX3B1c2hfZXhlY3V0YWJsZSgp
CisgICAgICAgICAgICBzZWxmLl9wdXNoX2ZvbnRzKCkKKyAgICAgICAgICAgIHNlbGYuX3B1c2hf
dGVzdF9yZXNvdXJjZXMoKQorICAgICAgICAgICAgc2VsZi5fZGF0YV9hbHJlYWR5X3B1c2hlZF9m
b3Jfd29ya2VyLmFkZCh3b3JrZXJfbnVtYmVyKQogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAg
ICAgICAgIHNlbGYuX3RlYXJkb3duX3BlcmZvcm1hbmNlKCkKICAgICAgICAgc3VwZXIoQ2hyb21p
dW1BbmRyb2lkRHJpdmVyLCBzZWxmKS5fX2RlbF9fKCkKIAorICAgIGRlZiBfc2V0dXBfbWQ1c3Vt
KHNlbGYpOgorICAgICAgICBzZWxmLl9tZDVzdW1fcGF0aCA9ICclcy9vdXQvJXMvJXMnICUgKAor
ICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoKSwgc2Vs
Zi5fcG9ydC5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIE1ENVNVTV9ERVZJQ0VfRklMRV9O
QU1FKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoc2VsZi5fbWQ1c3VtX3BhdGgpCisg
ICAgICAgIGlmIHNlbGYuX2ZpbGVfZXhpc3RzX29uX2RldmljZShNRDVTVU1fREVWSUNFX1BBVEgp
OgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIG5vdCBzZWxmLl9wdXNoX3RvX2Rldmlj
ZShzZWxmLl9tZDVzdW1fcGF0aCwgTUQ1U1VNX0RFVklDRV9QQVRIKToKKyAgICAgICAgICAgIF9s
b2cuZXJyb3IoJ0NvdWxkIG5vdCBwdXNoIG1kNXN1bSB0byBkZXZpY2UnKQorCiAgICAgZGVmIF9z
ZXR1cF90ZXN0KHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9oYXNfc2V0dXA6CiAgICAgICAgICAg
ICByZXR1cm4KQEAgLTM3NiwzNyArMzk2LDM4IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZERyaXZl
cihkcml2ZXIuRHJpdmVyKToKICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwn
LCAnbWtkaXInLCAnLXAnLCBERVZJQ0VfRFJUX0RJUl0pCiAgICAgICAgIHNlbGYuX3J1bl9hZGJf
Y29tbWFuZChbJ3NoZWxsJywgJ2NobW9kJywgJzc3NycsIERFVklDRV9EUlRfRElSXSkKIAotICAg
ICAgICBzZWxmLl9wdXNoX2V4ZWN1dGFibGUoKQotICAgICAgICBzZWxmLl9wdXNoX2ZvbnRzKCkK
LSAgICAgICAgc2VsZi5fc3luY2hyb25pemVfZGF0ZXRpbWUoKQotCiAgICAgICAgICMgRGVsZXRl
IHRoZSBkaXNrIGNhY2hlIGlmIGFueSB0byBlbnN1cmUgYSBjbGVhbiB0ZXN0IHJ1bi4KICAgICAg
ICAgIyBUaGlzIGlzIGxpa2Ugd2hhdCdzIGRvbmUgaW4gQ2hyb21pdW1Qb3J0LnNldHVwX3Rlc3Rf
cnVuIGJ1dCBvbiB0aGUgZGV2aWNlLgogICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydz
aGVsbCcsICdybScsICctcicsIERSVF9BUFBfQ0FDSEVfRElSXSkKIAorICAgIEBzdGF0aWNtZXRo
b2QKKyAgICBkZWYgX2V4dHJhY3RfaGFzaGVzX2Zyb21fbWQ1c3VtX291dHB1dChtZDVzdW1fb3V0
cHV0KToKKyAgICAgICAgYXNzZXJ0IG1kNXN1bV9vdXRwdXQKKyAgICAgICAgcmV0dXJuIFtsaW5l
LnNwbGl0KCcgICcpWzBdIGZvciBsaW5lIGluIG1kNXN1bV9vdXRwdXRdCisKKyAgICBkZWYgX3B1
c2hfZmlsZV9pZl9uZWVkZWQoc2VsZiwgaG9zdF9maWxlLCBkZXZpY2VfZmlsZSk6CisgICAgICAg
IGFzc2VydCBvcy5wYXRoLmV4aXN0cyhob3N0X2ZpbGUpCisgICAgICAgIGRldmljZV9oYXNoZXMg
PSBzZWxmLl9leHRyYWN0X2hhc2hlc19mcm9tX21kNXN1bV9vdXRwdXQoCisgICAgICAgICAgICAg
ICAgc3VicHJvY2Vzcy5Qb3BlbihzZWxmLl9hZGJfY29tbWFuZCArIFsnc2hlbGwnLCBNRDVTVU1f
REVWSUNFX1BBVEgsIGRldmljZV9maWxlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dCkKKyAgICAgICAgaG9zdF9oYXNoZXMg
PSBzZWxmLl9leHRyYWN0X2hhc2hlc19mcm9tX21kNXN1bV9vdXRwdXQoCisgICAgICAgICAgICAg
ICAgc3VicHJvY2Vzcy5Qb3BlbihhcmdzPVsnJXNfaG9zdCcgJSBzZWxmLl9tZDVzdW1fcGF0aCwg
aG9zdF9maWxlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJw
cm9jZXNzLlBJUEUpLnN0ZG91dCkKKyAgICAgICAgaWYgaG9zdF9oYXNoZXMgYW5kIGRldmljZV9o
YXNoZXMgPT0gaG9zdF9oYXNoZXM6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5f
cHVzaF90b19kZXZpY2UoaG9zdF9maWxlLCBkZXZpY2VfZmlsZSkKKwogICAgIGRlZiBfcHVzaF9l
eGVjdXRhYmxlKHNlbGYpOgorICAgICAgICBzZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYu
X3BvcnQuX3BhdGhfdG9fZm9yd2FyZGVyKCksIERFVklDRV9GT1JXQVJERVJfUEFUSCkKKyAgICAg
ICAgc2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdEdW1w
UmVuZGVyVHJlZS5wYWsnKSwgREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWUucGFrJykK
KyAgICAgICAgc2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9wb3J0Ll9idWlsZF9wYXRo
KCdEdW1wUmVuZGVyVHJlZV9yZXNvdXJjZXMnKSwgREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRl
clRyZWVfcmVzb3VyY2VzJykKKyAgICAgICAgc2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxm
Ll9wb3J0Ll9idWlsZF9wYXRoKCdhbmRyb2lkX21haW5fZm9udHMueG1sJyksIERFVklDRV9EUlRf
RElSICsgJ2FuZHJvaWRfbWFpbl9mb250cy54bWwnKQorICAgICAgICBzZWxmLl9wdXNoX2ZpbGVf
aWZfbmVlZGVkKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ2FuZHJvaWRfZmFsbGJhY2tfZm9udHMu
eG1sJyksIERFVklDRV9EUlRfRElSICsgJ2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sJykKKyAg
ICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsndW5pbnN0YWxsJywgRFJUX0FQUF9QQUNLQUdF
XSkKICAgICAgICAgZHJ0X2hvc3RfcGF0aCA9IHNlbGYuX3BvcnQuX3BhdGhfdG9fZHJpdmVyKCkK
LSAgICAgICAgZm9yd2FyZGVyX2hvc3RfcGF0aCA9IHNlbGYuX3BvcnQuX3BhdGhfdG9fZm9yd2Fy
ZGVyKCkKLSAgICAgICAgaG9zdF9zdGFtcCA9IGludChmbG9hdChtYXgob3Muc3RhdChkcnRfaG9z
dF9wYXRoKS5zdF9tdGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mu
c3RhdChmb3J3YXJkZXJfaG9zdF9wYXRoKS5zdF9tdGltZSkpKQotICAgICAgICBkZXZpY2Vfc3Rh
bXAgPSBpbnQoZmxvYXQoc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsKLSAgICAgICAgICAgICdzaGVs
bCcsICdjYXQgJXMgMj4vZGV2L251bGwgfHwgZWNobyAwJyAlIERFVklDRV9EUlRfU1RBTVBfUEFU
SF0pKSkKLSAgICAgICAgaWYgZGV2aWNlX3N0YW1wICE9IGhvc3Rfc3RhbXA6Ci0gICAgICAgICAg
ICBfbG9nLmRlYnVnKCdQdXNoaW5nIGV4ZWN1dGFibGUnKQotICAgICAgICAgICAgc2VsZi5fcHVz
aF90b19kZXZpY2UoZm9yd2FyZGVyX2hvc3RfcGF0aCwgREVWSUNFX0ZPUldBUkRFUl9QQVRIKQot
ICAgICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsndW5pbnN0YWxsJywgRFJUX0FQUF9Q
QUNLQUdFXSkKLSAgICAgICAgICAgIGluc3RhbGxfcmVzdWx0ID0gc2VsZi5fcnVuX2FkYl9jb21t
YW5kKFsnaW5zdGFsbCcsIGRydF9ob3N0X3BhdGhdKQotICAgICAgICAgICAgaWYgaW5zdGFsbF9y
ZXN1bHQuZmluZCgnU3VjY2VzcycpID09IC0xOgotICAgICAgICAgICAgICAgIHJhaXNlIEFzc2Vy
dGlvbkVycm9yKCdGYWlsZWQgdG8gaW5zdGFsbCAlcyBvbnRvIGRldmljZTogJXMnICUgKGRydF9o
b3N0X3BhdGgsIGluc3RhbGxfcmVzdWx0KSkKLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2
aWNlKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ0R1bXBSZW5kZXJUcmVlLnBhaycpLCBERVZJQ0Vf
RFJUX0RJUiArICdEdW1wUmVuZGVyVHJlZS5wYWsnKQotICAgICAgICAgICAgc2VsZi5fcHVzaF90
b19kZXZpY2Uoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnRHVtcFJlbmRlclRyZWVfcmVzb3VyY2Vz
JyksIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlX3Jlc291cmNlcycpCi0gICAgICAg
ICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdhbmRyb2lk
X21haW5fZm9udHMueG1sJyksIERFVklDRV9EUlRfRElSICsgJ2FuZHJvaWRfbWFpbl9mb250cy54
bWwnKQotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fcG9ydC5fYnVpbGRf
cGF0aCgnYW5kcm9pZF9mYWxsYmFja19mb250cy54bWwnKSwgREVWSUNFX0RSVF9ESVIgKyAnYW5k
cm9pZF9mYWxsYmFja19mb250cy54bWwnKQotICAgICAgICAgICAgIyBWZXJzaW9uIGNvbnRyb2wg
b2YgdGVzdCByZXNvdXJjZXMgaXMgZGVwZW5kZW50IG9uIGV4ZWN1dGFibGVzLAotICAgICAgICAg
ICAgIyBiZWNhdXNlIHdlIHdpbGwgYWx3YXlzIHJlYnVpbGQgZXhlY3V0YWJsZXMgd2hlbiByZXNv
dXJjZXMgYXJlCi0gICAgICAgICAgICAjIHVwZGF0ZWQuCi0gICAgICAgICAgICBzZWxmLl9wdXNo
X3Rlc3RfcmVzb3VyY2VzKCkKLSAgICAgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3No
ZWxsJywgJ2VjaG8gJWQgPiVzJyAlIChob3N0X3N0YW1wLCBERVZJQ0VfRFJUX1NUQU1QX1BBVEgp
XSkKKyAgICAgICAgaW5zdGFsbF9yZXN1bHQgPSBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydpbnN0
YWxsJywgZHJ0X2hvc3RfcGF0aF0pCisgICAgICAgIGlmIGluc3RhbGxfcmVzdWx0LmZpbmQoJ1N1
Y2Nlc3MnKSA9PSAtMToKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdGYWlsZWQg
dG8gaW5zdGFsbCAlcyBvbnRvIGRldmljZTogJXMnICUgKGRydF9ob3N0X3BhdGgsIGluc3RhbGxf
cmVzdWx0KSkKIAogICAgIGRlZiBfcHVzaF9mb250cyhzZWxmKToKICAgICAgICAgaWYgbm90IHNl
bGYuX2NoZWNrX3ZlcnNpb24oREVWSUNFX0ZPTlRTX0RJUiwgRk9OVF9GSUxFU19WRVJTSU9OKToK
QEAgLTQyMSwxOCArNDQyLDcgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkRHJpdmVyKGRyaXZlci5E
cml2ZXIpOgogICAgIGRlZiBfcHVzaF90ZXN0X3Jlc291cmNlcyhzZWxmKToKICAgICAgICAgX2xv
Zy5kZWJ1ZygnUHVzaGluZyB0ZXN0IHJlc291cmNlcycpCiAgICAgICAgIGZvciByZXNvdXJjZSBp
biBURVNUX1JFU09VUkNFU19UT19QVVNIOgotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZp
Y2Uoc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkgKyAnLycgKyByZXNvdXJjZSwgREVWSUNF
X0xBWU9VVF9URVNUU19ESVIgKyByZXNvdXJjZSkKLQotICAgIGRlZiBfc3luY2hyb25pemVfZGF0
ZXRpbWUoc2VsZik6Ci0gICAgICAgICMgVGhlIGRhdGUvdGltZSBiZXR3ZWVuIGhvc3QgYW5kIGRl
dmljZSBtYXkgbm90IGJlIHN5bmNocm9uaXplZC4KLSAgICAgICAgIyBXZSBuZWVkIHRvIG1ha2Ug
dGhlbSBzeW5jaHJvbml6ZWQsIG90aGVyd2lzZSB0ZXN0cyBtaWdodCBmYWlsLgotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAjIEdldCBzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEgMDA6MDA6MDAg
VVRDLgotICAgICAgICAgICAgaG9zdF9kYXRldGltZSA9IHNlbGYuX3BvcnQuX2V4ZWN1dGl2ZS5y
dW5fY29tbWFuZChbJ2RhdGUnLCAnLXUnLCAnKyVzJ10pCi0gICAgICAgIGV4Y2VwdDoKLSAgICAg
ICAgICAgICMgUmVzZXQgdG8gMTk3MC0wMS0wMSAwMDowMDowMCBVVEMuCi0gICAgICAgICAgICBo
b3N0X2RhdGV0aW1lID0gMAotICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcs
ICdkYXRlIC11ICVzJyAlIChob3N0X2RhdGV0aW1lKV0pCisgICAgICAgICAgICBzZWxmLl9wdXNo
X2ZpbGVfaWZfbmVlZGVkKHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy8nICsgcmVz
b3VyY2UsIERFVklDRV9MQVlPVVRfVEVTVFNfRElSICsgcmVzb3VyY2UpCiAKICAgICBkZWYgX2No
ZWNrX3ZlcnNpb24oc2VsZiwgZGlyLCB2ZXJzaW9uKToKICAgICAgICAgYXNzZXJ0KGRpci5lbmRz
d2l0aCgnLycpKQpAQCAtNjkxLDggKzcwMSw2IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZERyaXZl
cihkcml2ZXIuRHJpdmVyKToKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIGN1cnJl
bnRfY2hhciA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfc3Rkb3V0KGRlYWRsaW5lLCAxKQog
ICAgICAgICAgICAgaWYgY3VycmVudF9jaGFyID09ICcgJzoKLSAgICAgICAgICAgICAgICBpZiBs
YXN0X2NoYXIgPT0gJyMnOgorICAgICAgICAgICAgICAgIGlmIGxhc3RfY2hhciBpbiBbJyMnLCAn
JCddOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBpZiBsYXN0
X2NoYXIgPT0gJyQnOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcign
QWRiZCBpcyBub3QgcnVubmluZyBhcyByb290JykKICAgICAgICAgICAgIGxhc3RfY2hhciA9IGN1
cnJlbnRfY2hhcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDhmMDdhYTQzMDAyNTQ5NTM3Mjk4YzNlYzgwZWJiOTkxMGRiYzgz
ZTEuLmNjZjU0ZDhkNWJjOGFiM2Y3ZmVlOGE0NDdkM2Y3NTQ2OWNkNDlkYjMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxMi0wOC0yOCAgUGhpbGlwcGUgTGlhcmQgIDxwbGlhcmRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFN1cHBvcnQgTGF5b3V0VGVzdHMgb24gbm9uLXJvb3RlZCBBbmRyb2lk
IGRldmljZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NTM0NgorCisgICAgICAgIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3N1YnJlc291cmNl
LXRlc3QuanMgd2FzIGFzc3VtaW5nIHRoYXQgdGhlCisgICAgICAgIGNsaWVudCBhbmQgc2VydmVy
IGNsb2NrcyBhcmUgdGhlIHNhbWUgd2hpY2ggaXMgbm8gbG9uZ2VyIHRydWUgc2luY2Ugd2UKKyAg
ICAgICAgYXJlIGdldHRpbmcgcmlkIG9mIGhvc3QvZGV2aWNlIGNsb2NrIHN5bmNocm9uaXphdGlv
bi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2NhY2hlLXNpbXVsYXRv
ci5jZ2k6CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY3VycmVudC10aW1l
LmNnaTogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVz
b3VyY2UtdGVzdC5qczoKKyAgICAgICAgKGdldFNlcnZlckRhdGUpOgorICAgICAgICAobmV4dFRl
c3QpOgorICAgICAgICAodGVzdENvbXBsZXRlKToKKyAgICAgICAgKHJ1blRlc3RzKToKKwogMjAx
Mi0wOC0yOCAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAg
W0VGTF1bV0syXVtXVFJdIFJlYmFzZWxpbmUgbmV3bHkgYWRkZWQgU1ZHIHRleHQgdGVzdCBjYXNl
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY3Vy
cmVudC10aW1lLmNnaSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2N1
cnJlbnQtdGltZS5jZ2kKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU0MjY1ZjM3MzFlYTE4Mzk4Yzk1NGYyYzgxZWNl
YzI5NmVjNjMwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2Fj
aGUvcmVzb3VyY2VzL2N1cnJlbnQtdGltZS5jZ2kKQEAgLTAsMCArMSw1IEBACisjIS91c3IvYmlu
L3BlcmwgLXcKKworcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9wbGFpblxuIjsKK3ByaW50ICJc
biI7CitwcmludCB0aW1lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nh
Y2hlL3Jlc291cmNlcy9zdWJyZXNvdXJjZS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3VyY2UtdGVzdC5qcwppbmRleCBjZTRiYjEyOTUwMzI2
YWFjMjZmN2M5OWFkMzBhNDEyYTQ3ZjljOTYzLi5lNGM4ZmU1MjU2YTBkNDI1YjBlOGM5YmE3NWM3
ZGZmNGQ1ZWMxZjFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jl
c291cmNlcy9zdWJyZXNvdXJjZS10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y2FjaGUvcmVzb3VyY2VzL3N1YnJlc291cmNlLXRlc3QuanMKQEAgLTI1LDYgKzI1LDIyIEBAIHZh
ciBjb25zb2xlRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGNvbnNvbGVEaXYpOwogZnJhbWUyLm9ubG9hZCA9IGZ1bmN0aW9uICgp
IHsgbG9hZGVkRnJhbWVDb3VudCsrOyB9CiAKK2Z1bmN0aW9uIGdldFNlcnZlckRhdGUoKQorewor
ICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICB2YXIgdDAgPSBuZXcgRGF0
ZSgpLmdldFRpbWUoKTsKKyAgICByZXEub3BlbignR0VUJywgIi9jYWNoZS9yZXNvdXJjZXMvY3Vy
cmVudC10aW1lLmNnaSIsIGZhbHNlIC8qIGJsb2NraW5nICovKTsKKyAgICByZXEuc2VuZCgpOwor
ICAgIHZhciBzZXJ2ZXJUb0NsaWVudFRpbWUgPSAobmV3IERhdGUoKS5nZXRUaW1lKCkgLSB0MCkg
LyAyOworICAgIGlmIChyZXEuc3RhdHVzICE9IDIwMCkgeworICAgICAgICBjb25zb2xlLmxvZygi
dW5leHBlY3RlZCBzdGF0dXMgY29kZSAiICsgcmVxLnN0YXR1cyArICIsIGV4cGVjdGVkIDIwMC4i
KTsKKyAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7CisgICAgfQorICAgIHJldHVybiBuZXcgRGF0
ZSgocGFyc2VJbnQocmVxLnJlc3BvbnNlVGV4dCkgKiAxMDAwKSArIHNlcnZlclRvQ2xpZW50VGlt
ZSk7Cit9CisKK3ZhciBzZXJ2ZXJDbGllbnRUaW1lRGVsdGEgPSBnZXRTZXJ2ZXJEYXRlKCkuZ2V0
VGltZSgpIC0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CisKIGZ1bmN0aW9uIGxvYWRUZXN0RnJhbWUo
ZnJhbWUsIHRlc3RTcGVjKQogewogICAgIHZhciBmaXJzdCA9IHRydWU7CkBAIC02Nyw3ICs4Myw3
IEBAIGZ1bmN0aW9uIG5leHRUZXN0KCkKIHsKICAgICB2YXIgdGVzdFNwZWMgPSB0ZXN0c1tjdXJy
ZW50VGVzdF07CiAgICAgdW5pcXVlSWQgPSBNYXRoLmZsb29yKDEwMDAwMDAwMCAqIE1hdGgucmFu
ZG9tKCkpOwotICAgIG5vdyA9IG5ldyBEYXRlKCk7CisgICAgbm93ID0gbmV3IERhdGUobmV3IERh
dGUoKS5nZXRUaW1lKCkgKyBzZXJ2ZXJDbGllbnRUaW1lRGVsdGEpOwogICAgIGlmICghdGVzdFNw
ZWMpIHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CkBAIC04MCwyMiArOTYsMjIgQEAgZnVuY3Rpb24gbmV4dFRlc3Qo
KQogZnVuY3Rpb24gdGVzdENvbXBsZXRlKHRlc3RTcGVjKQogewogICAgIHZhciBsaW5lID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgdmFyIHJlc3VsdCA9IGZyYW1lMS5jb250
ZW50V2luZG93LnJhbmRvbU51bWJlciA9PSBmcmFtZTIuY29udGVudFdpbmRvdy5yYW5kb21OdW1i
ZXIgPyAnQ2FjaGVkJyA6ICdVbmNhY2hlZCc7ICAgIAorICAgIHZhciByZXN1bHQgPSBmcmFtZTEu
Y29udGVudFdpbmRvdy5yYW5kb21OdW1iZXIgPT0gZnJhbWUyLmNvbnRlbnRXaW5kb3cucmFuZG9t
TnVtYmVyID8gJ0NhY2hlZCcgOiAnVW5jYWNoZWQnOwogICAgIHZhciBwYXNzZWQgPSByZXN1bHQg
PT0gdGVzdFNwZWMuZXhwZWN0ZWRSZXN1bHQ7CiAKICAgICBpZiAodGVzdFNwZWMuZGVzY3JpcHRp
b24pCiAgICAgICAgIGxpbmUuaW5uZXJIVE1MICs9IHRlc3RTcGVjLmRlc2NyaXB0aW9uOwogICAg
IGVsc2UgewotICAgICAgICBmb3IgKHZhciBoZWFkZXIgaW4gdGVzdFNwZWMudGVzdEhlYWRlcnMp
IAorICAgICAgICBmb3IgKHZhciBoZWFkZXIgaW4gdGVzdFNwZWMudGVzdEhlYWRlcnMpCiAgICAg
ICAgICAgICBsaW5lLmlubmVySFRNTCArPSBoZWFkZXIgKyAiOiAiICsgdGVzdFNwZWMudGVzdEhl
YWRlcnNbaGVhZGVyXSArICI7ICI7CiAgICAgfQogICAgIGlmICh0ZXN0U3BlYy5kZWxheSkKICAg
ICAgICAgbGluZS5pbm5lckhUTUwgKz0gIltkZWxheT0iICsgdGVzdFNwZWMuZGVsYXkgKyAic10g
IgogICAgIGxpbmUuaW5uZXJIVE1MICs9ICIgIChyZXN1bHQ9IiArIHJlc3VsdCArICIgZXhwZWN0
ZWQ9IiArIHRlc3RTcGVjLmV4cGVjdGVkUmVzdWx0ICsgIikgIjsKICAgICBsaW5lLmlubmVySFRN
TCArPSBwYXNzZWQgPyAiPGZvbnQgY29sb3I9Z3JlZW4+UEFTUzwvZm9udD4gIiA6ICI8Zm9udCBj
b2xvcj1yZWQ+RkFJTDwvZm9udD4gIgotICAgICAgICAKKwogICAgIGNvbnNvbGVEaXYuYXBwZW5k
Q2hpbGQobGluZSk7Ci0gICAgCisKICAgICBuZXh0VGVzdCgpOwogfQogCkBAIC0xMDYsNSArMTIy
LDQgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAgICBuZXh0VGVzdCgpOwogICAgIGVsc2UK
ICAgICAgICAgc2V0VGltZW91dChydW5UZXN0cywgMTAwKTsKLQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162220</attachid>
            <date>2012-09-05 04:55:30 -0700</date>
            <delta_ts>2012-09-10 05:31:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95346-20120905135511.patch</filename>
            <type>text/plain</type>
            <size>16703</size>
            <attacher name="Philippe Liard">pliard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTc3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2EyY2QxNzM4MDQ5MjNhOGU1ZDgyOTkzYWZjMWQ1NTU2
OTliNmViMy4uMzZjMDBkYjA4NGNlYWFjYWIyY2MxZjllNjU1NzllMzgwNGE3OGI5YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDEyLTA5LTA1ICBQaGlsaXBwZSBMaWFyZCAgPHBsaWFyZEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3VwcG9ydCBMYXlvdXRUZXN0cyBvbiBub24tcm9vdGVkIGRldmljZXMgZm9yIENo
cm9taXVtIEFuZHJvaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTM0NgorCisgICAgICAgIFdlIHdlcmUgcmVxdWlyaW5nIHJvb3QgcGVybWlzc2lv
bnMgdG8gc3luYyByZXNvdXJjZSBmaWxlcyB3aXRoIHRoZQorICAgICAgICBkZXZpY2UgYnkgY29t
cGFyaW5nIGhvc3QgYW5kIGRldmljZSBmaWxlcycgdGltZXN0YW1wIGFmdGVyIHdlCisgICAgICAg
IHN5bmNocm9uaXplZCB0aGUgZGV2aWNlIGFuZCBob3N0IGNsb2Nrcy4KKyAgICAgICAgV2Ugbm93
IHJlbHkgb24gbWQ1c3VtIHByb3ZpZGVkIGJ5IENocm9taXVtIHRvIGhhbmRsZSBkYXRhIGZpbGVz
CisgICAgICAgIHN5bmNocm9uaXphdGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgIChDaHJvbWl1bVBvcnQuX2No
ZWNrX2RyaXZlcl9idWlsZF91cF90b19kYXRlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHk6CisgICAgICAgIChDaHJvbWl1
bUFuZHJvaWREcml2ZXIuX19pbml0X18pOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVy
Ll9zZXR1cF90ZXN0KToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF9leGVj
dXRhYmxlKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF90ZXN0X3Jlc291
cmNlcyk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX3JlYWRfcHJvbXB0KToKKwog
MjAxMi0wOS0wNSAgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4K
IAogICAgICAgICBbRFJUXSBMVEM6OiBNb3ZlIHByaW50aW5nIHJlbGF0ZWQgQVBJcyBmcm9tIExh
eW91dFRlc3RDb250cm9sbGVyIHRvIEludGVybmFscwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKaW5kZXgg
M2Y3NDIyOTc4YzlmZGMzZmQzMTdhMzJiNzExNjBkMTI4ZjQ0ZWIxZS4uMDVmMGJjNmM2YmJhZmNl
YTU5Y2M5YTdmMDZhMWVjN2QwZWIyNzg2MyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwCkBAIC0xMjEs
MTEgKzEyMSwxMiBAQAogICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwOmluc3BlY3Rvcl9yZXNvdXJjZXMnLAogICAgICAgICAgICAgICAgICc8
KHNvdXJjZV9kaXIpL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwOndlYmtpdCcsCiAgICAgICAg
ICAgICAgICAgJzwoc291cmNlX2RpcikvV1RGL1dURi5neXAvV1RGLmd5cDp3dGYnLAorICAgICAg
ICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2Jhc2UvYmFzZS5neXA6dGVzdF9zdXBwb3J0
X2Jhc2UnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2J1aWxkL3RlbXBf
Z3lwL2dvb2dsZXVybC5neXA6Z29vZ2xldXJsJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1
bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9pY3UvaWN1Lmd5cDppY3V1YycsCiAgICAgICAgICAgICAg
ICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvbWVzYS9tZXNhLmd5cDpvc21lc2En
LAorICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3Rvb2xzL2FuZHJvaWQvbWQ1
c3VtL21kNXN1bS5neXA6bWQ1c3VtJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNf
ZGlyKS92OC90b29scy9neXAvdjguZ3lwOnY4JywKLSAgICAgICAgICAgICAgICAnPChjaHJvbWl1
bV9zcmNfZGlyKS9iYXNlL2Jhc2UuZ3lwOnRlc3Rfc3VwcG9ydF9iYXNlJywKICAgICAgICAgICAg
ICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS93ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5n
eXA6YmxvYicsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L3N1
cHBvcnQvd2Via2l0X3N1cHBvcnQuZ3lwOndlYmtpdF9zdXBwb3J0JywKICAgICAgICAgICAgICAg
ICAnPChjaHJvbWl1bV9zcmNfZGlyKS93ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5neXA6
d2Via2l0X3VzZXJfYWdlbnQnLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggZTY2YjBhMjA0MzE5ZDFmODg2OTRlMzc2
YzcwYWNjN2EwZThhM2U1YS4uMjA2MjE5YzRjMGEwMDg0YTM2NzZiMDBiMGY4OTlhMWQwMTZhODlm
MyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtLnB5CkBAIC00MDUsMTAgKzQwNSw5IEBAIGNsYXNzIENocm9taXVtUG9ydChQb3J0
KToKIAogICAgICAgICAgICAgICAgIGlmIChkZWJ1Z19tdGltZSA+IHJlbGVhc2VfbXRpbWUgYW5k
IGNvbmZpZ3VyYXRpb24gPT0gJ1JlbGVhc2UnIG9yCiAgICAgICAgICAgICAgICAgICAgIHJlbGVh
c2VfbXRpbWUgPiBkZWJ1Z19tdGltZSBhbmQgY29uZmlndXJhdGlvbiA9PSAnRGVidWcnKToKLSAg
ICAgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdZb3UgYXJlIG5vdCBydW5uaW5nIHRoZSBt
b3N0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWNlbnQgRHVtcFJlbmRl
clRyZWUgYmluYXJ5LiBZb3UgbmVlZCB0byAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAncGFzcyAtLWRlYnVnIG9yIG5vdCB0byBzZWxlY3QgYmV0d2VlbiAnCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnRGVidWcgYW5kIFJlbGVhc2UuJykKKyAgICAgICAgICAg
ICAgICAgICAgbW9zdF9yZWNlbnRfYmluYXJ5ID0gJ1JlbGVhc2UnIGlmIGNvbmZpZ3VyYXRpb24g
PT0gJ0RlYnVnJyBlbHNlICdEZWJ1ZycKKyAgICAgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5n
KCdZb3UgYXJlIHJ1bm5pbmcgdGhlICVzIGJpbmFyeS4gSG93ZXZlciB0aGUgJXMgYmluYXJ5IGFw
cGVhcnMgdG8gYmUgbW9yZSByZWNlbnQuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdQbGVhc2UgcGFzcyAtLSVzLicsIGNvbmZpZ3VyYXRpb24sIG1vc3RfcmVjZW50X2JpbmFy
eSwgbW9zdF9yZWNlbnRfYmluYXJ5Lmxvd2VyKCkpCiAgICAgICAgICAgICAgICAgICAgIF9sb2cu
d2FybmluZygnJykKICAgICAgICAgICAgICMgVGhpcyB3aWxsIGZhaWwgaWYgd2UgZG9uJ3QgaGF2
ZSBib3RoIGEgZGVidWcgYW5kIHJlbGVhc2UgYmluYXJ5LgogICAgICAgICAgICAgIyBUaGF0J3Mg
ZmluZSBiZWNhdXNlLCBpbiB0aGlzIGNhc2UsIHdlIG11c3QgYWxyZWFkeSBiZSBydW5uaW5nIHRo
ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV9hbmRyb2lkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CmluZGV4IGQyYjI2ODcwZWE4YzA4ZTc5MzhlYzA0Mzhl
MmQ3YjczZWNmMjk2ZTIuLjc3OTBmMTg4NzUxYTYwZjllN2ZkNWJhNzIyYjFmZDc5MTI0ODRhMjIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fYW5kcm9pZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKQEAgLTMxLDYgKzMxLDggQEAgaW1wb3J0IGNvcHkK
IGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCByZQoraW1wb3J0IHNldHMKK2ltcG9y
dCBzdWJwcm9jZXNzCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQogCkBAIC01NCw3ICs1
Niw2IEBAIENPTU1BTkRfTElORV9GSUxFID0gREVWSUNFX1NPVVJDRV9ST09UX0RJUiArICdjaHJv
bWUtbmF0aXZlLXRlc3RzLWNvbW1hbmQtbGluZScKICMgYW5kIENocm9taXVtJ3Mgd2Via2l0L3N1
cHBvcnQvcGxhdGZvcm1fc3VwcG9ydF9hbmRyb2lkLmNjLgogREVWSUNFX0RSVF9ESVIgPSBERVZJ
Q0VfU09VUkNFX1JPT1RfRElSICsgJ2RydC8nCiBERVZJQ0VfRk9SV0FSREVSX1BBVEggPSBERVZJ
Q0VfRFJUX0RJUiArICdmb3J3YXJkZXInCi1ERVZJQ0VfRFJUX1NUQU1QX1BBVEggPSBERVZJQ0Vf
RFJUX0RJUiArICdEdW1wUmVuZGVyVHJlZS5zdGFtcCcKIAogRFJUX0FQUF9QQUNLQUdFID0gJ29y
Zy5jaHJvbWl1bS5uYXRpdmVfdGVzdCcKIERSVF9BQ1RJVklUWV9GVUxMX05BTUUgPSBEUlRfQVBQ
X1BBQ0tBR0UgKyAnLy5DaHJvbWVOYXRpdmVUZXN0QWN0aXZpdHknCkBAIC0xMzcsNiArMTM4LDgg
QEAgVEVTVF9SRVNPVVJDRVNfVE9fUFVTSCA9IFsKICAgICAnY29tcG9zaXRpbmcvcmVzb3VyY2Vz
L3ZpZGVvLm1wNCcsCiBdCiAKK01ENVNVTV9ERVZJQ0VfRklMRV9OQU1FID0gJ21kNXN1bV9iaW4n
CitNRDVTVU1fREVWSUNFX1BBVEggPSAnL2RhdGEvbG9jYWwvdG1wLycgKyBNRDVTVU1fREVWSUNF
X0ZJTEVfTkFNRQogCiBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVt
UG9ydCk6CiAgICAgcG9ydF9uYW1lID0gJ2Nocm9taXVtLWFuZHJvaWQnCkBAIC0zMDYsNiArMzA5
LDggQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgog
CiAKIGNsYXNzIENocm9taXVtQW5kcm9pZERyaXZlcihkcml2ZXIuRHJpdmVyKToKKyAgICBfZGF0
YV9hbHJlYWR5X3B1c2hlZF9mb3Jfd29ya2VyID0gc2V0cy5TZXQoKQorCiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHBvcnQsIHdvcmtlcl9udW1iZXIsIHBpeGVsX3Rlc3RzLCBub190aW1lb3V0PUZh
bHNlKToKICAgICAgICAgc3VwZXIoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLCBzZWxmKS5fX2luaXRf
Xyhwb3J0LCB3b3JrZXJfbnVtYmVyLCBwaXhlbF90ZXN0cywgbm9fdGltZW91dCkKICAgICAgICAg
c2VsZi5fY21kX2xpbmUgPSBOb25lCkBAIC0zMTksMTEgKzMyNCwyNiBAQCBjbGFzcyBDaHJvbWl1
bUFuZHJvaWREcml2ZXIoZHJpdmVyLkRyaXZlcik6CiAgICAgICAgIHNlbGYuX29yaWdpbmFsX2dv
dmVybm9ycyA9IHt9CiAgICAgICAgIHNlbGYuX2RldmljZV9zZXJpYWwgPSBwb3J0Ll9nZXRfZGV2
aWNlX3NlcmlhbCh3b3JrZXJfbnVtYmVyKQogICAgICAgICBzZWxmLl9hZGJfY29tbWFuZCA9IFsn
YWRiJywgJy1zJywgc2VsZi5fZGV2aWNlX3NlcmlhbF0KKyAgICAgICAgc2VsZi5fc2V0dXBfbWQ1
c3VtKCkKKyAgICAgICAgaWYgbm90IHdvcmtlcl9udW1iZXIgaW4gc2VsZi5fZGF0YV9hbHJlYWR5
X3B1c2hlZF9mb3Jfd29ya2VyOgorICAgICAgICAgICAgc2VsZi5fcHVzaF9leGVjdXRhYmxlKCkK
KyAgICAgICAgICAgIHNlbGYuX3B1c2hfZm9udHMoKQorICAgICAgICAgICAgc2VsZi5fcHVzaF90
ZXN0X3Jlc291cmNlcygpCisgICAgICAgICAgICBzZWxmLl9kYXRhX2FscmVhZHlfcHVzaGVkX2Zv
cl93b3JrZXIuYWRkKHdvcmtlcl9udW1iZXIpCiAKICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAg
ICAgICAgc2VsZi5fdGVhcmRvd25fcGVyZm9ybWFuY2UoKQogICAgICAgICBzdXBlcihDaHJvbWl1
bUFuZHJvaWREcml2ZXIsIHNlbGYpLl9fZGVsX18oKQogCisgICAgZGVmIF9zZXR1cF9tZDVzdW0o
c2VsZik6CisgICAgICAgIHNlbGYuX21kNXN1bV9wYXRoID0gJyVzL291dC8lcy8lcycgJSAoCisg
ICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgpLCBzZWxm
Ll9wb3J0LmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgTUQ1U1VNX0RFVklDRV9GSUxFX05B
TUUpCisgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhzZWxmLl9tZDVzdW1fcGF0aCkKKyAg
ICAgICAgaWYgc2VsZi5fZmlsZV9leGlzdHNfb25fZGV2aWNlKE1ENVNVTV9ERVZJQ0VfUEFUSCk6
CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbm90IHNlbGYuX3B1c2hfdG9fZGV2aWNl
KHNlbGYuX21kNXN1bV9wYXRoLCBNRDVTVU1fREVWSUNFX1BBVEgpOgorICAgICAgICAgICAgX2xv
Zy5lcnJvcignQ291bGQgbm90IHB1c2ggbWQ1c3VtIHRvIGRldmljZScpCisKICAgICBkZWYgX3Nl
dHVwX3Rlc3Qoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2hhc19zZXR1cDoKICAgICAgICAgICAg
IHJldHVybgpAQCAtMzQwLDEwICszNjAsNiBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIo
ZHJpdmVyLkRyaXZlcik6CiAgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywg
J21rZGlyJywgJy1wJywgREVWSUNFX0RSVF9ESVJdKQogICAgICAgICBzZWxmLl9ydW5fYWRiX2Nv
bW1hbmQoWydzaGVsbCcsICdjaG1vZCcsICc3NzcnLCBERVZJQ0VfRFJUX0RJUl0pCiAKLSAgICAg
ICAgc2VsZi5fcHVzaF9leGVjdXRhYmxlKCkKLSAgICAgICAgc2VsZi5fcHVzaF9mb250cygpCi0g
ICAgICAgIHNlbGYuX3N5bmNocm9uaXplX2RhdGV0aW1lKCkKLQogICAgICAgICAjIERlbGV0ZSB0
aGUgZGlzayBjYWNoZSBpZiBhbnkgdG8gZW5zdXJlIGEgY2xlYW4gdGVzdCBydW4uCiAgICAgICAg
ICMgVGhpcyBpcyBsaWtlIHdoYXQncyBkb25lIGluIENocm9taXVtUG9ydC5zZXR1cF90ZXN0X3J1
biBidXQgb24gdGhlIGRldmljZS4KICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hl
bGwnLCAncm0nLCAnLXInLCBEUlRfQVBQX0NBQ0hFX0RJUl0pCkBAIC0zNTcsMjkgKzM3MywzNCBA
QCBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVyLkRyaXZlcik6CiAgICAgZGVmIF9h
Ym9ydChzZWxmLCBtZXNzYWdlKToKICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ1slc10g
JXMnICUgKHNlbGYuX2RldmljZV9zZXJpYWwsIG1lc3NhZ2UpKQogCisgICAgQHN0YXRpY21ldGhv
ZAorICAgIGRlZiBfZXh0cmFjdF9oYXNoZXNfZnJvbV9tZDVzdW1fb3V0cHV0KG1kNXN1bV9vdXRw
dXQpOgorICAgICAgICBhc3NlcnQgbWQ1c3VtX291dHB1dAorICAgICAgICByZXR1cm4gW2xpbmUu
c3BsaXQoJyAgJylbMF0gZm9yIGxpbmUgaW4gbWQ1c3VtX291dHB1dF0KKworICAgIGRlZiBfcHVz
aF9maWxlX2lmX25lZWRlZChzZWxmLCBob3N0X2ZpbGUsIGRldmljZV9maWxlKToKKyAgICAgICAg
YXNzZXJ0IG9zLnBhdGguZXhpc3RzKGhvc3RfZmlsZSkKKyAgICAgICAgZGV2aWNlX2hhc2hlcyA9
IHNlbGYuX2V4dHJhY3RfaGFzaGVzX2Zyb21fbWQ1c3VtX291dHB1dCgKKyAgICAgICAgICAgICAg
ICBzdWJwcm9jZXNzLlBvcGVuKHNlbGYuX2FkYl9jb21tYW5kICsgWydzaGVsbCcsIE1ENVNVTV9E
RVZJQ0VfUEFUSCwgZGV2aWNlX2ZpbGVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuc3Rkb3V0KQorICAgICAgICBob3N0X2hhc2hlcyA9
IHNlbGYuX2V4dHJhY3RfaGFzaGVzX2Zyb21fbWQ1c3VtX291dHB1dCgKKyAgICAgICAgICAgICAg
ICBzdWJwcm9jZXNzLlBvcGVuKGFyZ3M9Wyclc19ob3N0JyAlIHNlbGYuX21kNXN1bV9wYXRoLCBo
b3N0X2ZpbGVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnBy
b2Nlc3MuUElQRSkuc3Rkb3V0KQorICAgICAgICBpZiBob3N0X2hhc2hlcyBhbmQgZGV2aWNlX2hh
c2hlcyA9PSBob3N0X2hhc2hlczoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLl9w
dXNoX3RvX2RldmljZShob3N0X2ZpbGUsIGRldmljZV9maWxlKQorCiAgICAgZGVmIF9wdXNoX2V4
ZWN1dGFibGUoc2VsZik6CisgICAgICAgIHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2VsZi5f
cG9ydC5fcGF0aF90b19mb3J3YXJkZXIoKSwgREVWSUNFX0ZPUldBUkRFUl9QQVRIKQorICAgICAg
ICBzZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ0R1bXBS
ZW5kZXJUcmVlLnBhaycpLCBERVZJQ0VfRFJUX0RJUiArICdEdW1wUmVuZGVyVHJlZS5wYWsnKQor
ICAgICAgICBzZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgo
J0R1bXBSZW5kZXJUcmVlX3Jlc291cmNlcycpLCBERVZJQ0VfRFJUX0RJUiArICdEdW1wUmVuZGVy
VHJlZV9yZXNvdXJjZXMnKQorICAgICAgICBzZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYu
X3BvcnQuX2J1aWxkX3BhdGgoJ2FuZHJvaWRfbWFpbl9mb250cy54bWwnKSwgREVWSUNFX0RSVF9E
SVIgKyAnYW5kcm9pZF9tYWluX2ZvbnRzLnhtbCcpCisgICAgICAgIHNlbGYuX3B1c2hfZmlsZV9p
Zl9uZWVkZWQoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnYW5kcm9pZF9mYWxsYmFja19mb250cy54
bWwnKSwgREVWSUNFX0RSVF9ESVIgKyAnYW5kcm9pZF9mYWxsYmFja19mb250cy54bWwnKQorICAg
ICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWyd1bmluc3RhbGwnLCBEUlRfQVBQX1BBQ0tBR0Vd
KQogICAgICAgICBkcnRfaG9zdF9wYXRoID0gc2VsZi5fcG9ydC5fcGF0aF90b19kcml2ZXIoKQot
ICAgICAgICBmb3J3YXJkZXJfaG9zdF9wYXRoID0gc2VsZi5fcG9ydC5fcGF0aF90b19mb3J3YXJk
ZXIoKQotICAgICAgICBob3N0X3N0YW1wID0gaW50KGZsb2F0KG1heChvcy5zdGF0KGRydF9ob3N0
X3BhdGgpLnN0X210aW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5z
dGF0KGZvcndhcmRlcl9ob3N0X3BhdGgpLnN0X210aW1lKSkpCi0gICAgICAgIGRldmljZV9zdGFt
cCA9IGludChmbG9hdChzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWwotICAgICAgICAgICAgJ3NoZWxs
JywgJ2NhdCAlcyAyPi9kZXYvbnVsbCB8fCBlY2hvIDAnICUgREVWSUNFX0RSVF9TVEFNUF9QQVRI
XSkpKQotICAgICAgICBpZiBkZXZpY2Vfc3RhbXAgIT0gaG9zdF9zdGFtcDoKLSAgICAgICAgICAg
IHNlbGYuX2xvZ19kZWJ1ZygnUHVzaGluZyBleGVjdXRhYmxlJykKLSAgICAgICAgICAgIHNlbGYu
X3B1c2hfdG9fZGV2aWNlKGZvcndhcmRlcl9ob3N0X3BhdGgsIERFVklDRV9GT1JXQVJERVJfUEFU
SCkKLSAgICAgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3VuaW5zdGFsbCcsIERSVF9B
UFBfUEFDS0FHRV0pCi0gICAgICAgICAgICBpbnN0YWxsX3Jlc3VsdCA9IHNlbGYuX3J1bl9hZGJf
Y29tbWFuZChbJ2luc3RhbGwnLCBkcnRfaG9zdF9wYXRoXSkKLSAgICAgICAgICAgIGlmIGluc3Rh
bGxfcmVzdWx0LmZpbmQoJ1N1Y2Nlc3MnKSA9PSAtMToKLSAgICAgICAgICAgICAgICBzZWxmLl9h
Ym9ydCgnRmFpbGVkIHRvIGluc3RhbGwgJXMgb250byBkZXZpY2U6ICVzJyAlIChkcnRfaG9zdF9w
YXRoLCBpbnN0YWxsX3Jlc3VsdCkpCi0gICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShz
ZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdEdW1wUmVuZGVyVHJlZS5wYWsnKSwgREVWSUNFX0RSVF9E
SVIgKyAnRHVtcFJlbmRlclRyZWUucGFrJykKLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2
aWNlKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ0R1bXBSZW5kZXJUcmVlX3Jlc291cmNlcycpLCBE
RVZJQ0VfRFJUX0RJUiArICdEdW1wUmVuZGVyVHJlZV9yZXNvdXJjZXMnKQotICAgICAgICAgICAg
c2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnYW5kcm9pZF9tYWlu
X2ZvbnRzLnhtbCcpLCBERVZJQ0VfRFJUX0RJUiArICdhbmRyb2lkX21haW5fZm9udHMueG1sJykK
LSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgo
J2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sJyksIERFVklDRV9EUlRfRElSICsgJ2FuZHJvaWRf
ZmFsbGJhY2tfZm9udHMueG1sJykKLSAgICAgICAgICAgICMgVmVyc2lvbiBjb250cm9sIG9mIHRl
c3QgcmVzb3VyY2VzIGlzIGRlcGVuZGVudCBvbiBleGVjdXRhYmxlcywKLSAgICAgICAgICAgICMg
YmVjYXVzZSB3ZSB3aWxsIGFsd2F5cyByZWJ1aWxkIGV4ZWN1dGFibGVzIHdoZW4gcmVzb3VyY2Vz
IGFyZQotICAgICAgICAgICAgIyB1cGRhdGVkLgotICAgICAgICAgICAgc2VsZi5fcHVzaF90ZXN0
X3Jlc291cmNlcygpCi0gICAgICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcs
ICdlY2hvICVkID4lcycgJSAoaG9zdF9zdGFtcCwgREVWSUNFX0RSVF9TVEFNUF9QQVRIKV0pCisg
ICAgICAgIGluc3RhbGxfcmVzdWx0ID0gc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnaW5zdGFsbCcs
IGRydF9ob3N0X3BhdGhdKQorICAgICAgICBpZiBpbnN0YWxsX3Jlc3VsdC5maW5kKCdTdWNjZXNz
JykgPT0gLTE6CisgICAgICAgICAgICBzZWxmLl9hYm9ydCgnRmFpbGVkIHRvIGluc3RhbGwgJXMg
b250byBkZXZpY2U6ICVzJyAlIChkcnRfaG9zdF9wYXRoLCBpbnN0YWxsX3Jlc3VsdCkpCiAKICAg
ICBkZWYgX3B1c2hfZm9udHMoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9jaGVja192ZXJz
aW9uKERFVklDRV9GT05UU19ESVIsIEZPTlRfRklMRVNfVkVSU0lPTik6CkBAIC0zOTQsMTggKzQx
NSw3IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZERyaXZlcihkcml2ZXIuRHJpdmVyKToKICAgICBk
ZWYgX3B1c2hfdGVzdF9yZXNvdXJjZXMoc2VsZik6CiAgICAgICAgIHNlbGYuX2xvZ19kZWJ1Zygn
UHVzaGluZyB0ZXN0IHJlc291cmNlcycpCiAgICAgICAgIGZvciByZXNvdXJjZSBpbiBURVNUX1JF
U09VUkNFU19UT19QVVNIOgotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5f
cG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkgKyAnLycgKyByZXNvdXJjZSwgREVWSUNFX0xBWU9VVF9U
RVNUU19ESVIgKyByZXNvdXJjZSkKLQotICAgIGRlZiBfc3luY2hyb25pemVfZGF0ZXRpbWUoc2Vs
Zik6Ci0gICAgICAgICMgVGhlIGRhdGUvdGltZSBiZXR3ZWVuIGhvc3QgYW5kIGRldmljZSBtYXkg
bm90IGJlIHN5bmNocm9uaXplZC4KLSAgICAgICAgIyBXZSBuZWVkIHRvIG1ha2UgdGhlbSBzeW5j
aHJvbml6ZWQsIG90aGVyd2lzZSB0ZXN0cyBtaWdodCBmYWlsLgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICAjIEdldCBzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEgMDA6MDA6MDAgVVRDLgotICAg
ICAgICAgICAgaG9zdF9kYXRldGltZSA9IHNlbGYuX3BvcnQuX2V4ZWN1dGl2ZS5ydW5fY29tbWFu
ZChbJ2RhdGUnLCAnLXUnLCAnKyVzJ10pCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICMg
UmVzZXQgdG8gMTk3MC0wMS0wMSAwMDowMDowMCBVVEMuCi0gICAgICAgICAgICBob3N0X2RhdGV0
aW1lID0gMAotICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcsICdkYXRlIC11
ICVzJyAlIChob3N0X2RhdGV0aW1lKV0pCisgICAgICAgICAgICBzZWxmLl9wdXNoX2ZpbGVfaWZf
bmVlZGVkKHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy8nICsgcmVzb3VyY2UsIERF
VklDRV9MQVlPVVRfVEVTVFNfRElSICsgcmVzb3VyY2UpCiAKICAgICBkZWYgX2NoZWNrX3ZlcnNp
b24oc2VsZiwgZGlyLCB2ZXJzaW9uKToKICAgICAgICAgYXNzZXJ0KGRpci5lbmRzd2l0aCgnLycp
KQpAQCAtNjY0LDggKzY3NCw2IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZERyaXZlcihkcml2ZXIu
RHJpdmVyKToKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIGN1cnJlbnRfY2hhciA9
IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfc3Rkb3V0KGRlYWRsaW5lLCAxKQogICAgICAgICAg
ICAgaWYgY3VycmVudF9jaGFyID09ICcgJzoKLSAgICAgICAgICAgICAgICBpZiBsYXN0X2NoYXIg
PT0gJyMnOgorICAgICAgICAgICAgICAgIGlmIGxhc3RfY2hhciBpbiBbJyMnLCAnJCddOgogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBpZiBsYXN0X2NoYXIgPT0g
JyQnOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignQWRiZCBpcyBu
b3QgcnVubmluZyBhcyByb290JykKICAgICAgICAgICAgIGxhc3RfY2hhciA9IGN1cnJlbnRfY2hh
cgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDc0ZDAzZjUzYWM0ZDNmN2RkNWVlOGIwMDYxMWYzMDM1ZjQxMThiMWIuLjk2ZDVi
M2U4MjZiMTgzZDdjZjQ2NDU4ZTM4YjNkZDhkMGUzNjQ4ZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAxMi0wOS0wNSAgUGhpbGlwcGUgTGlhcmQgIDxwbGlhcmRAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFN1cHBvcnQgTGF5b3V0VGVzdHMgb24gbm9uLXJvb3RlZCBBbmRyb2lkIGRldmljZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTM0Ngor
CisgICAgICAgIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3N1YnJlc291cmNlLXRlc3QuanMg
d2FzIGFzc3VtaW5nIHRoYXQgdGhlCisgICAgICAgIGNsaWVudCBhbmQgc2VydmVyIGNsb2NrcyBh
cmUgdGhlIHNhbWUgd2hpY2ggaXMgbm8gbG9uZ2VyIHRydWUgc2luY2Ugd2UKKyAgICAgICAgYXJl
IGdldHRpbmcgcmlkIG9mIGhvc3QvZGV2aWNlIGNsb2NrIHN5bmNocm9uaXphdGlvbi4KKworICAg
ICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2NhY2hlLXNpbXVsYXRvci5jZ2k6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY3VycmVudC10aW1lLmNnaTogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3VyY2UtdGVz
dC5qczoKKyAgICAgICAgKGdldFNlcnZlckRhdGUpOgorICAgICAgICAobmV4dFRlc3QpOgorICAg
ICAgICAodGVzdENvbXBsZXRlKToKKyAgICAgICAgKHJ1blRlc3RzKToKKwogMjAxMi0wOS0wNSAg
S2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBb
RFJUXSBMVEM6OiBNb3ZlIHByaW50aW5nIHJlbGF0ZWQgQVBJcyBmcm9tIExheW91dFRlc3RDb250
cm9sbGVyIHRvIEludGVybmFscwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
YWNoZS9yZXNvdXJjZXMvY3VycmVudC10aW1lLmNnaSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y2FjaGUvcmVzb3VyY2VzL2N1cnJlbnQtdGltZS5jZ2kKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU0MjY1ZjM3MzFl
YTE4Mzk4Yzk1NGYyYzgxZWNlYzI5NmVjNjMwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2N1cnJlbnQtdGltZS5jZ2kKQEAgLTAsMCAr
MSw1IEBACisjIS91c3IvYmluL3BlcmwgLXcKKworcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9w
bGFpblxuIjsKK3ByaW50ICJcbiI7CitwcmludCB0aW1lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9zdWJyZXNvdXJjZS10ZXN0LmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3VyY2UtdGVzdC5qcwpp
bmRleCBjZTRiYjEyOTUwMzI2YWFjMjZmN2M5OWFkMzBhNDEyYTQ3ZjljOTYzLi5lNGM4ZmU1MjU2
YTBkNDI1YjBlOGM5YmE3NWM3ZGZmNGQ1ZWMxZjFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9zdWJyZXNvdXJjZS10ZXN0LmpzCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3N1YnJlc291cmNlLXRlc3QuanMKQEAg
LTI1LDYgKzI1LDIyIEBAIHZhciBjb25zb2xlRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CiBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGVEaXYpOwogZnJhbWUyLm9u
bG9hZCA9IGZ1bmN0aW9uICgpIHsgbG9hZGVkRnJhbWVDb3VudCsrOyB9CiAKK2Z1bmN0aW9uIGdl
dFNlcnZlckRhdGUoKQoreworICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAg
ICB2YXIgdDAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKKyAgICByZXEub3BlbignR0VUJywgIi9j
YWNoZS9yZXNvdXJjZXMvY3VycmVudC10aW1lLmNnaSIsIGZhbHNlIC8qIGJsb2NraW5nICovKTsK
KyAgICByZXEuc2VuZCgpOworICAgIHZhciBzZXJ2ZXJUb0NsaWVudFRpbWUgPSAobmV3IERhdGUo
KS5nZXRUaW1lKCkgLSB0MCkgLyAyOworICAgIGlmIChyZXEuc3RhdHVzICE9IDIwMCkgeworICAg
ICAgICBjb25zb2xlLmxvZygidW5leHBlY3RlZCBzdGF0dXMgY29kZSAiICsgcmVxLnN0YXR1cyAr
ICIsIGV4cGVjdGVkIDIwMC4iKTsKKyAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7CisgICAgfQor
ICAgIHJldHVybiBuZXcgRGF0ZSgocGFyc2VJbnQocmVxLnJlc3BvbnNlVGV4dCkgKiAxMDAwKSAr
IHNlcnZlclRvQ2xpZW50VGltZSk7Cit9CisKK3ZhciBzZXJ2ZXJDbGllbnRUaW1lRGVsdGEgPSBn
ZXRTZXJ2ZXJEYXRlKCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CisKIGZ1bmN0
aW9uIGxvYWRUZXN0RnJhbWUoZnJhbWUsIHRlc3RTcGVjKQogewogICAgIHZhciBmaXJzdCA9IHRy
dWU7CkBAIC02Nyw3ICs4Myw3IEBAIGZ1bmN0aW9uIG5leHRUZXN0KCkKIHsKICAgICB2YXIgdGVz
dFNwZWMgPSB0ZXN0c1tjdXJyZW50VGVzdF07CiAgICAgdW5pcXVlSWQgPSBNYXRoLmZsb29yKDEw
MDAwMDAwMCAqIE1hdGgucmFuZG9tKCkpOwotICAgIG5vdyA9IG5ldyBEYXRlKCk7CisgICAgbm93
ID0gbmV3IERhdGUobmV3IERhdGUoKS5nZXRUaW1lKCkgKyBzZXJ2ZXJDbGllbnRUaW1lRGVsdGEp
OwogICAgIGlmICghdGVzdFNwZWMpIHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQog
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CkBAIC04MCwyMiArOTYsMjIgQEAg
ZnVuY3Rpb24gbmV4dFRlc3QoKQogZnVuY3Rpb24gdGVzdENvbXBsZXRlKHRlc3RTcGVjKQogewog
ICAgIHZhciBsaW5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgdmFyIHJl
c3VsdCA9IGZyYW1lMS5jb250ZW50V2luZG93LnJhbmRvbU51bWJlciA9PSBmcmFtZTIuY29udGVu
dFdpbmRvdy5yYW5kb21OdW1iZXIgPyAnQ2FjaGVkJyA6ICdVbmNhY2hlZCc7ICAgIAorICAgIHZh
ciByZXN1bHQgPSBmcmFtZTEuY29udGVudFdpbmRvdy5yYW5kb21OdW1iZXIgPT0gZnJhbWUyLmNv
bnRlbnRXaW5kb3cucmFuZG9tTnVtYmVyID8gJ0NhY2hlZCcgOiAnVW5jYWNoZWQnOwogICAgIHZh
ciBwYXNzZWQgPSByZXN1bHQgPT0gdGVzdFNwZWMuZXhwZWN0ZWRSZXN1bHQ7CiAKICAgICBpZiAo
dGVzdFNwZWMuZGVzY3JpcHRpb24pCiAgICAgICAgIGxpbmUuaW5uZXJIVE1MICs9IHRlc3RTcGVj
LmRlc2NyaXB0aW9uOwogICAgIGVsc2UgewotICAgICAgICBmb3IgKHZhciBoZWFkZXIgaW4gdGVz
dFNwZWMudGVzdEhlYWRlcnMpIAorICAgICAgICBmb3IgKHZhciBoZWFkZXIgaW4gdGVzdFNwZWMu
dGVzdEhlYWRlcnMpCiAgICAgICAgICAgICBsaW5lLmlubmVySFRNTCArPSBoZWFkZXIgKyAiOiAi
ICsgdGVzdFNwZWMudGVzdEhlYWRlcnNbaGVhZGVyXSArICI7ICI7CiAgICAgfQogICAgIGlmICh0
ZXN0U3BlYy5kZWxheSkKICAgICAgICAgbGluZS5pbm5lckhUTUwgKz0gIltkZWxheT0iICsgdGVz
dFNwZWMuZGVsYXkgKyAic10gIgogICAgIGxpbmUuaW5uZXJIVE1MICs9ICIgIChyZXN1bHQ9IiAr
IHJlc3VsdCArICIgZXhwZWN0ZWQ9IiArIHRlc3RTcGVjLmV4cGVjdGVkUmVzdWx0ICsgIikgIjsK
ICAgICBsaW5lLmlubmVySFRNTCArPSBwYXNzZWQgPyAiPGZvbnQgY29sb3I9Z3JlZW4+UEFTUzwv
Zm9udD4gIiA6ICI8Zm9udCBjb2xvcj1yZWQ+RkFJTDwvZm9udD4gIgotICAgICAgICAKKwogICAg
IGNvbnNvbGVEaXYuYXBwZW5kQ2hpbGQobGluZSk7Ci0gICAgCisKICAgICBuZXh0VGVzdCgpOwog
fQogCkBAIC0xMDYsNSArMTIyLDQgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAgICBuZXh0
VGVzdCgpOwogICAgIGVsc2UKICAgICAgICAgc2V0VGltZW91dChydW5UZXN0cywgMTAwKTsKLQog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163098</attachid>
            <date>2012-09-10 05:31:43 -0700</date>
            <delta_ts>2012-09-10 07:18:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95346-20120910143118.patch</filename>
            <type>text/plain</type>
            <size>16524</size>
            <attacher name="Philippe Liard">pliard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MDQ1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmE1ZDVhNWJkYWU3MDQwMDA2ZjdmOGVjNTk3MGQ1NDE5
OThiZDI3MC4uOGUxM2ZlZTdjMWRkZWU4YTk5Y2YwZTFiNWU2YTBkODM0YWM2ODUwNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDEyLTA5LTEwICBQaGlsaXBwZSBMaWFyZCAgPHBsaWFyZEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3VwcG9ydCBMYXlvdXRUZXN0cyBvbiBub24tcm9vdGVkIGRldmljZXMgZm9yIENo
cm9taXVtIEFuZHJvaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTM0NgorCisgICAgICAgIFdlIHdlcmUgcmVxdWlyaW5nIHJvb3QgcGVybWlzc2lv
bnMgdG8gc3luYyByZXNvdXJjZSBmaWxlcyB3aXRoIHRoZQorICAgICAgICBkZXZpY2UgYnkgY29t
cGFyaW5nIGhvc3QgYW5kIGRldmljZSBmaWxlcycgdGltZXN0YW1wIGFmdGVyIHdlCisgICAgICAg
IHN5bmNocm9uaXplZCB0aGUgZGV2aWNlIGFuZCBob3N0IGNsb2Nrcy4KKyAgICAgICAgV2Ugbm93
IHJlbHkgb24gbWQ1c3VtIHByb3ZpZGVkIGJ5IENocm9taXVtIHRvIGhhbmRsZSBkYXRhIGZpbGVz
CisgICAgICAgIHN5bmNocm9uaXphdGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgIChDaHJvbWl1bVBvcnQuX2No
ZWNrX2RyaXZlcl9idWlsZF91cF90b19kYXRlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHk6CisgICAgICAgIChDaHJvbWl1
bUFuZHJvaWREcml2ZXIuX19pbml0X18pOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVy
Ll9zZXR1cF90ZXN0KToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF9leGVj
dXRhYmxlKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF90ZXN0X3Jlc291
cmNlcyk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX3JlYWRfcHJvbXB0KToKKwog
MjAxMi0wOS0xMCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAK
ICAgICAgICAgRml4IGJ1aWxkIG9mIFdUUiB3aXRoIFF0IG9uIFdpbmRvd3MKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5n
eXAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRy
ZWUuZ3lwCmluZGV4IGFlODZiNTdmZmVkNGE5YmU1Y2JmM2QxNGI0NjQwZDZlMjVjZTA5NGUuLmZh
OTNlN2U4YzJhNzMzZGVmMmNjNGFmNDc0MmQxYTFlYmEyMGJkZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVl
Lmd5cApAQCAtMTIxLDExICsxMjEsMTIgQEAKICAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGly
KS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDppbnNwZWN0b3JfcmVzb3VyY2VzJywKICAgICAg
ICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDp3ZWJr
aXQnLAogICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dURi9XVEYuZ3lwL1dURi5neXA6
d3RmJywKKyAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNlL2Jhc2UuZ3lw
OnRlc3Rfc3VwcG9ydF9iYXNlJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGly
KS9idWlsZC90ZW1wX2d5cC9nb29nbGV1cmwuZ3lwOmdvb2dsZXVybCcsCiAgICAgICAgICAgICAg
ICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvaWN1L2ljdS5neXA6aWN1dWMnLAog
ICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L21lc2EvbWVz
YS5neXA6b3NtZXNhJywKKyAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90b29s
cy9hbmRyb2lkL21kNXN1bS9tZDVzdW0uZ3lwOm1kNXN1bScsCiAgICAgICAgICAgICAgICAgJzwo
Y2hyb21pdW1fc3JjX2RpcikvdjgvdG9vbHMvZ3lwL3Y4Lmd5cDp2OCcsCi0gICAgICAgICAgICAg
ICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYmFzZS9iYXNlLmd5cDp0ZXN0X3N1cHBvcnRfYmFzZScs
CiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L3N1cHBvcnQvd2Vi
a2l0X3N1cHBvcnQuZ3lwOmJsb2InLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19k
aXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmd5cDp3ZWJraXRfc3VwcG9ydCcsCiAg
ICAgICAgICAgICBdLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggZTY2YjBhMjA0MzE5ZDFmODg2OTRlMzc2YzcwYWNj
N2EwZThhM2U1YS4uMjA2MjE5YzRjMGEwMDg0YTM2NzZiMDBiMGY4OTlhMWQwMTZhODlmMyAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtLnB5CkBAIC00MDUsMTAgKzQwNSw5IEBAIGNsYXNzIENocm9taXVtUG9ydChQb3J0KToKIAog
ICAgICAgICAgICAgICAgIGlmIChkZWJ1Z19tdGltZSA+IHJlbGVhc2VfbXRpbWUgYW5kIGNvbmZp
Z3VyYXRpb24gPT0gJ1JlbGVhc2UnIG9yCiAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VfbXRp
bWUgPiBkZWJ1Z19tdGltZSBhbmQgY29uZmlndXJhdGlvbiA9PSAnRGVidWcnKToKLSAgICAgICAg
ICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdZb3UgYXJlIG5vdCBydW5uaW5nIHRoZSBtb3N0ICcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWNlbnQgRHVtcFJlbmRlclRyZWUg
YmluYXJ5LiBZb3UgbmVlZCB0byAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
cGFzcyAtLWRlYnVnIG9yIG5vdCB0byBzZWxlY3QgYmV0d2VlbiAnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnRGVidWcgYW5kIFJlbGVhc2UuJykKKyAgICAgICAgICAgICAgICAg
ICAgbW9zdF9yZWNlbnRfYmluYXJ5ID0gJ1JlbGVhc2UnIGlmIGNvbmZpZ3VyYXRpb24gPT0gJ0Rl
YnVnJyBlbHNlICdEZWJ1ZycKKyAgICAgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdZb3Ug
YXJlIHJ1bm5pbmcgdGhlICVzIGJpbmFyeS4gSG93ZXZlciB0aGUgJXMgYmluYXJ5IGFwcGVhcnMg
dG8gYmUgbW9yZSByZWNlbnQuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQ
bGVhc2UgcGFzcyAtLSVzLicsIGNvbmZpZ3VyYXRpb24sIG1vc3RfcmVjZW50X2JpbmFyeSwgbW9z
dF9yZWNlbnRfYmluYXJ5Lmxvd2VyKCkpCiAgICAgICAgICAgICAgICAgICAgIF9sb2cud2Fybmlu
ZygnJykKICAgICAgICAgICAgICMgVGhpcyB3aWxsIGZhaWwgaWYgd2UgZG9uJ3QgaGF2ZSBib3Ro
IGEgZGVidWcgYW5kIHJlbGVhc2UgYmluYXJ5LgogICAgICAgICAgICAgIyBUaGF0J3MgZmluZSBi
ZWNhdXNlLCBpbiB0aGlzIGNhc2UsIHdlIG11c3QgYWxyZWFkeSBiZSBydW5uaW5nIHRoZQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV9hbmRyb2lkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV9hbmRyb2lkLnB5CmluZGV4IGQyYjI2ODcwZWE4YzA4ZTc5MzhlYzA0MzhlMmQ3Yjcz
ZWNmMjk2ZTIuLjc3OTBmMTg4NzUxYTYwZjllN2ZkNWJhNzIyYjFmZDc5MTI0ODRhMjIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1f
YW5kcm9pZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtX2FuZHJvaWQucHkKQEAgLTMxLDYgKzMxLDggQEAgaW1wb3J0IGNvcHkKIGltcG9y
dCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCByZQoraW1wb3J0IHNldHMKK2ltcG9ydCBzdWJw
cm9jZXNzCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQogCkBAIC01NCw3ICs1Niw2IEBA
IENPTU1BTkRfTElORV9GSUxFID0gREVWSUNFX1NPVVJDRV9ST09UX0RJUiArICdjaHJvbWUtbmF0
aXZlLXRlc3RzLWNvbW1hbmQtbGluZScKICMgYW5kIENocm9taXVtJ3Mgd2Via2l0L3N1cHBvcnQv
cGxhdGZvcm1fc3VwcG9ydF9hbmRyb2lkLmNjLgogREVWSUNFX0RSVF9ESVIgPSBERVZJQ0VfU09V
UkNFX1JPT1RfRElSICsgJ2RydC8nCiBERVZJQ0VfRk9SV0FSREVSX1BBVEggPSBERVZJQ0VfRFJU
X0RJUiArICdmb3J3YXJkZXInCi1ERVZJQ0VfRFJUX1NUQU1QX1BBVEggPSBERVZJQ0VfRFJUX0RJ
UiArICdEdW1wUmVuZGVyVHJlZS5zdGFtcCcKIAogRFJUX0FQUF9QQUNLQUdFID0gJ29yZy5jaHJv
bWl1bS5uYXRpdmVfdGVzdCcKIERSVF9BQ1RJVklUWV9GVUxMX05BTUUgPSBEUlRfQVBQX1BBQ0tB
R0UgKyAnLy5DaHJvbWVOYXRpdmVUZXN0QWN0aXZpdHknCkBAIC0xMzcsNiArMTM4LDggQEAgVEVT
VF9SRVNPVVJDRVNfVE9fUFVTSCA9IFsKICAgICAnY29tcG9zaXRpbmcvcmVzb3VyY2VzL3ZpZGVv
Lm1wNCcsCiBdCiAKK01ENVNVTV9ERVZJQ0VfRklMRV9OQU1FID0gJ21kNXN1bV9iaW4nCitNRDVT
VU1fREVWSUNFX1BBVEggPSAnL2RhdGEvbG9jYWwvdG1wLycgKyBNRDVTVU1fREVWSUNFX0ZJTEVf
TkFNRQogCiBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6
CiAgICAgcG9ydF9uYW1lID0gJ2Nocm9taXVtLWFuZHJvaWQnCkBAIC0zMDYsNiArMzA5LDggQEAg
Y2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogCiAKIGNs
YXNzIENocm9taXVtQW5kcm9pZERyaXZlcihkcml2ZXIuRHJpdmVyKToKKyAgICBfZGF0YV9hbHJl
YWR5X3B1c2hlZF9mb3Jfd29ya2VyID0gc2V0cy5TZXQoKQorCiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHBvcnQsIHdvcmtlcl9udW1iZXIsIHBpeGVsX3Rlc3RzLCBub190aW1lb3V0PUZhbHNlKToK
ICAgICAgICAgc3VwZXIoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLCBzZWxmKS5fX2luaXRfXyhwb3J0
LCB3b3JrZXJfbnVtYmVyLCBwaXhlbF90ZXN0cywgbm9fdGltZW91dCkKICAgICAgICAgc2VsZi5f
Y21kX2xpbmUgPSBOb25lCkBAIC0zMTksMTEgKzMyNCwyNiBAQCBjbGFzcyBDaHJvbWl1bUFuZHJv
aWREcml2ZXIoZHJpdmVyLkRyaXZlcik6CiAgICAgICAgIHNlbGYuX29yaWdpbmFsX2dvdmVybm9y
cyA9IHt9CiAgICAgICAgIHNlbGYuX2RldmljZV9zZXJpYWwgPSBwb3J0Ll9nZXRfZGV2aWNlX3Nl
cmlhbCh3b3JrZXJfbnVtYmVyKQogICAgICAgICBzZWxmLl9hZGJfY29tbWFuZCA9IFsnYWRiJywg
Jy1zJywgc2VsZi5fZGV2aWNlX3NlcmlhbF0KKyAgICAgICAgc2VsZi5fc2V0dXBfbWQ1c3VtKCkK
KyAgICAgICAgaWYgbm90IHdvcmtlcl9udW1iZXIgaW4gc2VsZi5fZGF0YV9hbHJlYWR5X3B1c2hl
ZF9mb3Jfd29ya2VyOgorICAgICAgICAgICAgc2VsZi5fcHVzaF9leGVjdXRhYmxlKCkKKyAgICAg
ICAgICAgIHNlbGYuX3B1c2hfZm9udHMoKQorICAgICAgICAgICAgc2VsZi5fcHVzaF90ZXN0X3Jl
c291cmNlcygpCisgICAgICAgICAgICBzZWxmLl9kYXRhX2FscmVhZHlfcHVzaGVkX2Zvcl93b3Jr
ZXIuYWRkKHdvcmtlcl9udW1iZXIpCiAKICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAg
c2VsZi5fdGVhcmRvd25fcGVyZm9ybWFuY2UoKQogICAgICAgICBzdXBlcihDaHJvbWl1bUFuZHJv
aWREcml2ZXIsIHNlbGYpLl9fZGVsX18oKQogCisgICAgZGVmIF9zZXR1cF9tZDVzdW0oc2VsZik6
CisgICAgICAgIHNlbGYuX21kNXN1bV9wYXRoID0gJyVzL291dC8lcy8lcycgJSAoCisgICAgICAg
ICAgICAgICAgc2VsZi5fcG9ydC5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgpLCBzZWxmLl9wb3J0
LmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgTUQ1U1VNX0RFVklDRV9GSUxFX05BTUUpCisg
ICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhzZWxmLl9tZDVzdW1fcGF0aCkKKyAgICAgICAg
aWYgc2VsZi5fZmlsZV9leGlzdHNfb25fZGV2aWNlKE1ENVNVTV9ERVZJQ0VfUEFUSCk6CisgICAg
ICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbm90IHNlbGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYu
X21kNXN1bV9wYXRoLCBNRDVTVU1fREVWSUNFX1BBVEgpOgorICAgICAgICAgICAgX2xvZy5lcnJv
cignQ291bGQgbm90IHB1c2ggbWQ1c3VtIHRvIGRldmljZScpCisKICAgICBkZWYgX3NldHVwX3Rl
c3Qoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2hhc19zZXR1cDoKICAgICAgICAgICAgIHJldHVy
bgpAQCAtMzQwLDEwICszNjAsNiBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVy
LkRyaXZlcik6CiAgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ21rZGly
JywgJy1wJywgREVWSUNFX0RSVF9ESVJdKQogICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQo
WydzaGVsbCcsICdjaG1vZCcsICc3NzcnLCBERVZJQ0VfRFJUX0RJUl0pCiAKLSAgICAgICAgc2Vs
Zi5fcHVzaF9leGVjdXRhYmxlKCkKLSAgICAgICAgc2VsZi5fcHVzaF9mb250cygpCi0gICAgICAg
IHNlbGYuX3N5bmNocm9uaXplX2RhdGV0aW1lKCkKLQogICAgICAgICAjIERlbGV0ZSB0aGUgZGlz
ayBjYWNoZSBpZiBhbnkgdG8gZW5zdXJlIGEgY2xlYW4gdGVzdCBydW4uCiAgICAgICAgICMgVGhp
cyBpcyBsaWtlIHdoYXQncyBkb25lIGluIENocm9taXVtUG9ydC5zZXR1cF90ZXN0X3J1biBidXQg
b24gdGhlIGRldmljZS4KICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAn
cm0nLCAnLXInLCBEUlRfQVBQX0NBQ0hFX0RJUl0pCkBAIC0zNTcsMjkgKzM3MywzNCBAQCBjbGFz
cyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVyLkRyaXZlcik6CiAgICAgZGVmIF9hYm9ydChz
ZWxmLCBtZXNzYWdlKToKICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ1slc10gJXMnICUg
KHNlbGYuX2RldmljZV9zZXJpYWwsIG1lc3NhZ2UpKQogCisgICAgQHN0YXRpY21ldGhvZAorICAg
IGRlZiBfZXh0cmFjdF9oYXNoZXNfZnJvbV9tZDVzdW1fb3V0cHV0KG1kNXN1bV9vdXRwdXQpOgor
ICAgICAgICBhc3NlcnQgbWQ1c3VtX291dHB1dAorICAgICAgICByZXR1cm4gW2xpbmUuc3BsaXQo
JyAgJylbMF0gZm9yIGxpbmUgaW4gbWQ1c3VtX291dHB1dF0KKworICAgIGRlZiBfcHVzaF9maWxl
X2lmX25lZWRlZChzZWxmLCBob3N0X2ZpbGUsIGRldmljZV9maWxlKToKKyAgICAgICAgYXNzZXJ0
IG9zLnBhdGguZXhpc3RzKGhvc3RfZmlsZSkKKyAgICAgICAgZGV2aWNlX2hhc2hlcyA9IHNlbGYu
X2V4dHJhY3RfaGFzaGVzX2Zyb21fbWQ1c3VtX291dHB1dCgKKyAgICAgICAgICAgICAgICBzdWJw
cm9jZXNzLlBvcGVuKHNlbGYuX2FkYl9jb21tYW5kICsgWydzaGVsbCcsIE1ENVNVTV9ERVZJQ0Vf
UEFUSCwgZGV2aWNlX2ZpbGVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
b3V0PXN1YnByb2Nlc3MuUElQRSkuc3Rkb3V0KQorICAgICAgICBob3N0X2hhc2hlcyA9IHNlbGYu
X2V4dHJhY3RfaGFzaGVzX2Zyb21fbWQ1c3VtX291dHB1dCgKKyAgICAgICAgICAgICAgICBzdWJw
cm9jZXNzLlBvcGVuKGFyZ3M9Wyclc19ob3N0JyAlIHNlbGYuX21kNXN1bV9wYXRoLCBob3N0X2Zp
bGVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3Mu
UElQRSkuc3Rkb3V0KQorICAgICAgICBpZiBob3N0X2hhc2hlcyBhbmQgZGV2aWNlX2hhc2hlcyA9
PSBob3N0X2hhc2hlczoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLl9wdXNoX3Rv
X2RldmljZShob3N0X2ZpbGUsIGRldmljZV9maWxlKQorCiAgICAgZGVmIF9wdXNoX2V4ZWN1dGFi
bGUoc2VsZik6CisgICAgICAgIHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2VsZi5fcG9ydC5f
cGF0aF90b19mb3J3YXJkZXIoKSwgREVWSUNFX0ZPUldBUkRFUl9QQVRIKQorICAgICAgICBzZWxm
Ll9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ0R1bXBSZW5kZXJU
cmVlLnBhaycpLCBERVZJQ0VfRFJUX0RJUiArICdEdW1wUmVuZGVyVHJlZS5wYWsnKQorICAgICAg
ICBzZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ0R1bXBS
ZW5kZXJUcmVlX3Jlc291cmNlcycpLCBERVZJQ0VfRFJUX0RJUiArICdEdW1wUmVuZGVyVHJlZV9y
ZXNvdXJjZXMnKQorICAgICAgICBzZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYuX3BvcnQu
X2J1aWxkX3BhdGgoJ2FuZHJvaWRfbWFpbl9mb250cy54bWwnKSwgREVWSUNFX0RSVF9ESVIgKyAn
YW5kcm9pZF9tYWluX2ZvbnRzLnhtbCcpCisgICAgICAgIHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVk
ZWQoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnYW5kcm9pZF9mYWxsYmFja19mb250cy54bWwnKSwg
REVWSUNFX0RSVF9ESVIgKyAnYW5kcm9pZF9mYWxsYmFja19mb250cy54bWwnKQorICAgICAgICBz
ZWxmLl9ydW5fYWRiX2NvbW1hbmQoWyd1bmluc3RhbGwnLCBEUlRfQVBQX1BBQ0tBR0VdKQogICAg
ICAgICBkcnRfaG9zdF9wYXRoID0gc2VsZi5fcG9ydC5fcGF0aF90b19kcml2ZXIoKQotICAgICAg
ICBmb3J3YXJkZXJfaG9zdF9wYXRoID0gc2VsZi5fcG9ydC5fcGF0aF90b19mb3J3YXJkZXIoKQot
ICAgICAgICBob3N0X3N0YW1wID0gaW50KGZsb2F0KG1heChvcy5zdGF0KGRydF9ob3N0X3BhdGgp
LnN0X210aW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KGZv
cndhcmRlcl9ob3N0X3BhdGgpLnN0X210aW1lKSkpCi0gICAgICAgIGRldmljZV9zdGFtcCA9IGlu
dChmbG9hdChzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWwotICAgICAgICAgICAgJ3NoZWxsJywgJ2Nh
dCAlcyAyPi9kZXYvbnVsbCB8fCBlY2hvIDAnICUgREVWSUNFX0RSVF9TVEFNUF9QQVRIXSkpKQot
ICAgICAgICBpZiBkZXZpY2Vfc3RhbXAgIT0gaG9zdF9zdGFtcDoKLSAgICAgICAgICAgIHNlbGYu
X2xvZ19kZWJ1ZygnUHVzaGluZyBleGVjdXRhYmxlJykKLSAgICAgICAgICAgIHNlbGYuX3B1c2hf
dG9fZGV2aWNlKGZvcndhcmRlcl9ob3N0X3BhdGgsIERFVklDRV9GT1JXQVJERVJfUEFUSCkKLSAg
ICAgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3VuaW5zdGFsbCcsIERSVF9BUFBfUEFD
S0FHRV0pCi0gICAgICAgICAgICBpbnN0YWxsX3Jlc3VsdCA9IHNlbGYuX3J1bl9hZGJfY29tbWFu
ZChbJ2luc3RhbGwnLCBkcnRfaG9zdF9wYXRoXSkKLSAgICAgICAgICAgIGlmIGluc3RhbGxfcmVz
dWx0LmZpbmQoJ1N1Y2Nlc3MnKSA9PSAtMToKLSAgICAgICAgICAgICAgICBzZWxmLl9hYm9ydCgn
RmFpbGVkIHRvIGluc3RhbGwgJXMgb250byBkZXZpY2U6ICVzJyAlIChkcnRfaG9zdF9wYXRoLCBp
bnN0YWxsX3Jlc3VsdCkpCi0gICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9w
b3J0Ll9idWlsZF9wYXRoKCdEdW1wUmVuZGVyVHJlZS5wYWsnKSwgREVWSUNFX0RSVF9ESVIgKyAn
RHVtcFJlbmRlclRyZWUucGFrJykKLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKHNl
bGYuX3BvcnQuX2J1aWxkX3BhdGgoJ0R1bXBSZW5kZXJUcmVlX3Jlc291cmNlcycpLCBERVZJQ0Vf
RFJUX0RJUiArICdEdW1wUmVuZGVyVHJlZV9yZXNvdXJjZXMnKQotICAgICAgICAgICAgc2VsZi5f
cHVzaF90b19kZXZpY2Uoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnYW5kcm9pZF9tYWluX2ZvbnRz
LnhtbCcpLCBERVZJQ0VfRFJUX0RJUiArICdhbmRyb2lkX21haW5fZm9udHMueG1sJykKLSAgICAg
ICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ2FuZHJv
aWRfZmFsbGJhY2tfZm9udHMueG1sJyksIERFVklDRV9EUlRfRElSICsgJ2FuZHJvaWRfZmFsbGJh
Y2tfZm9udHMueG1sJykKLSAgICAgICAgICAgICMgVmVyc2lvbiBjb250cm9sIG9mIHRlc3QgcmVz
b3VyY2VzIGlzIGRlcGVuZGVudCBvbiBleGVjdXRhYmxlcywKLSAgICAgICAgICAgICMgYmVjYXVz
ZSB3ZSB3aWxsIGFsd2F5cyByZWJ1aWxkIGV4ZWN1dGFibGVzIHdoZW4gcmVzb3VyY2VzIGFyZQot
ICAgICAgICAgICAgIyB1cGRhdGVkLgotICAgICAgICAgICAgc2VsZi5fcHVzaF90ZXN0X3Jlc291
cmNlcygpCi0gICAgICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcsICdlY2hv
ICVkID4lcycgJSAoaG9zdF9zdGFtcCwgREVWSUNFX0RSVF9TVEFNUF9QQVRIKV0pCisgICAgICAg
IGluc3RhbGxfcmVzdWx0ID0gc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnaW5zdGFsbCcsIGRydF9o
b3N0X3BhdGhdKQorICAgICAgICBpZiBpbnN0YWxsX3Jlc3VsdC5maW5kKCdTdWNjZXNzJykgPT0g
LTE6CisgICAgICAgICAgICBzZWxmLl9hYm9ydCgnRmFpbGVkIHRvIGluc3RhbGwgJXMgb250byBk
ZXZpY2U6ICVzJyAlIChkcnRfaG9zdF9wYXRoLCBpbnN0YWxsX3Jlc3VsdCkpCiAKICAgICBkZWYg
X3B1c2hfZm9udHMoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9jaGVja192ZXJzaW9uKERF
VklDRV9GT05UU19ESVIsIEZPTlRfRklMRVNfVkVSU0lPTik6CkBAIC0zOTQsMTggKzQxNSw3IEBA
IGNsYXNzIENocm9taXVtQW5kcm9pZERyaXZlcihkcml2ZXIuRHJpdmVyKToKICAgICBkZWYgX3B1
c2hfdGVzdF9yZXNvdXJjZXMoc2VsZik6CiAgICAgICAgIHNlbGYuX2xvZ19kZWJ1ZygnUHVzaGlu
ZyB0ZXN0IHJlc291cmNlcycpCiAgICAgICAgIGZvciByZXNvdXJjZSBpbiBURVNUX1JFU09VUkNF
U19UT19QVVNIOgotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fcG9ydC5s
YXlvdXRfdGVzdHNfZGlyKCkgKyAnLycgKyByZXNvdXJjZSwgREVWSUNFX0xBWU9VVF9URVNUU19E
SVIgKyByZXNvdXJjZSkKLQotICAgIGRlZiBfc3luY2hyb25pemVfZGF0ZXRpbWUoc2VsZik6Ci0g
ICAgICAgICMgVGhlIGRhdGUvdGltZSBiZXR3ZWVuIGhvc3QgYW5kIGRldmljZSBtYXkgbm90IGJl
IHN5bmNocm9uaXplZC4KLSAgICAgICAgIyBXZSBuZWVkIHRvIG1ha2UgdGhlbSBzeW5jaHJvbml6
ZWQsIG90aGVyd2lzZSB0ZXN0cyBtaWdodCBmYWlsLgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAjIEdldCBzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEgMDA6MDA6MDAgVVRDLgotICAgICAgICAg
ICAgaG9zdF9kYXRldGltZSA9IHNlbGYuX3BvcnQuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ2Rh
dGUnLCAnLXUnLCAnKyVzJ10pCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICMgUmVzZXQg
dG8gMTk3MC0wMS0wMSAwMDowMDowMCBVVEMuCi0gICAgICAgICAgICBob3N0X2RhdGV0aW1lID0g
MAotICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcsICdkYXRlIC11ICVzJyAl
IChob3N0X2RhdGV0aW1lKV0pCisgICAgICAgICAgICBzZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVk
KHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy8nICsgcmVzb3VyY2UsIERFVklDRV9M
QVlPVVRfVEVTVFNfRElSICsgcmVzb3VyY2UpCiAKICAgICBkZWYgX2NoZWNrX3ZlcnNpb24oc2Vs
ZiwgZGlyLCB2ZXJzaW9uKToKICAgICAgICAgYXNzZXJ0KGRpci5lbmRzd2l0aCgnLycpKQpAQCAt
NjY0LDggKzY3NCw2IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZERyaXZlcihkcml2ZXIuRHJpdmVy
KToKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIGN1cnJlbnRfY2hhciA9IHNlbGYu
X3NlcnZlcl9wcm9jZXNzLnJlYWRfc3Rkb3V0KGRlYWRsaW5lLCAxKQogICAgICAgICAgICAgaWYg
Y3VycmVudF9jaGFyID09ICcgJzoKLSAgICAgICAgICAgICAgICBpZiBsYXN0X2NoYXIgPT0gJyMn
OgorICAgICAgICAgICAgICAgIGlmIGxhc3RfY2hhciBpbiBbJyMnLCAnJCddOgogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBpZiBsYXN0X2NoYXIgPT0gJyQnOgot
ICAgICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignQWRiZCBpcyBub3QgcnVu
bmluZyBhcyByb290JykKICAgICAgICAgICAgIGxhc3RfY2hhciA9IGN1cnJlbnRfY2hhcgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGMxODg1NjM3MmZiMGZhODY5YmI3MjAyMDM2MWFhNmI3NDdhZTA5NGEuLmRmODA2NTBmMzA2
ODgxNjg3MTQyOTY1MTRhZmI2MjQ3MjQxNWYyMDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAx
Mi0wOS0xMCAgUGhpbGlwcGUgTGlhcmQgIDxwbGlhcmRAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFN1cHBvcnQgTGF5b3V0VGVzdHMgb24gbm9uLXJvb3RlZCBBbmRyb2lkIGRldmljZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTM0NgorCisgICAg
ICAgIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3N1YnJlc291cmNlLXRlc3QuanMgd2FzIGFz
c3VtaW5nIHRoYXQgdGhlCisgICAgICAgIGNsaWVudCBhbmQgc2VydmVyIGNsb2NrcyBhcmUgdGhl
IHNhbWUgd2hpY2ggaXMgbm8gbG9uZ2VyIHRydWUgc2luY2Ugd2UKKyAgICAgICAgYXJlIGdldHRp
bmcgcmlkIG9mIGhvc3QvZGV2aWNlIGNsb2NrIHN5bmNocm9uaXphdGlvbi4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2NhY2hlLXNpbXVsYXRvci5jZ2k6CisgICAgICAg
ICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY3VycmVudC10aW1lLmNnaTogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3VyY2UtdGVzdC5qczoK
KyAgICAgICAgKGdldFNlcnZlckRhdGUpOgorICAgICAgICAobmV4dFRlc3QpOgorICAgICAgICAo
dGVzdENvbXBsZXRlKToKKyAgICAgICAgKHJ1blRlc3RzKToKKwogMjAxMi0wOS0xMCAgWmFuIERv
YmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RL
IGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVz
b3VyY2VzL2N1cnJlbnQtdGltZS5jZ2kgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jl
c291cmNlcy9jdXJyZW50LXRpbWUuY2dpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1NDI2NWYzNzMxZWExODM5OGM5
NTRmMmM4MWVjZWMyOTZlYzYzMDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9jdXJyZW50LXRpbWUuY2dpCkBAIC0wLDAgKzEsNSBAQAor
IyEvdXNyL2Jpbi9wZXJsIC13CisKK3ByaW50ICJDb250ZW50LXR5cGU6IHRleHQvcGxhaW5cbiI7
CitwcmludCAiXG4iOworcHJpbnQgdGltZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3VyY2UtdGVzdC5qcyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3N1YnJlc291cmNlLXRlc3QuanMKaW5kZXggY2U0
YmIxMjk1MDMyNmFhYzI2ZjdjOTlhZDMwYTQxMmE0N2Y5Yzk2My4uZTRjOGZlNTI1NmEwZDQyNWIw
ZThjOWJhNzVjN2RmZjRkNWVjMWYxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3VyY2UtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9zdWJyZXNvdXJjZS10ZXN0LmpzCkBAIC0yNSw2ICsy
NSwyMiBAQCB2YXIgY29uc29sZURpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwog
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xlRGl2KTsKIGZyYW1lMi5vbmxvYWQgPSBm
dW5jdGlvbiAoKSB7IGxvYWRlZEZyYW1lQ291bnQrKzsgfQogCitmdW5jdGlvbiBnZXRTZXJ2ZXJE
YXRlKCkKK3sKKyAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgdmFyIHQw
ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CisgICAgcmVxLm9wZW4oJ0dFVCcsICIvY2FjaGUvcmVz
b3VyY2VzL2N1cnJlbnQtdGltZS5jZ2kiLCBmYWxzZSAvKiBibG9ja2luZyAqLyk7CisgICAgcmVx
LnNlbmQoKTsKKyAgICB2YXIgc2VydmVyVG9DbGllbnRUaW1lID0gKG5ldyBEYXRlKCkuZ2V0VGlt
ZSgpIC0gdDApIC8gMjsKKyAgICBpZiAocmVxLnN0YXR1cyAhPSAyMDApIHsKKyAgICAgICAgY29u
c29sZS5sb2coInVuZXhwZWN0ZWQgc3RhdHVzIGNvZGUgIiArIHJlcS5zdGF0dXMgKyAiLCBleHBl
Y3RlZCAyMDAuIik7CisgICAgICAgIHJldHVybiBuZXcgRGF0ZSgpOworICAgIH0KKyAgICByZXR1
cm4gbmV3IERhdGUoKHBhcnNlSW50KHJlcS5yZXNwb25zZVRleHQpICogMTAwMCkgKyBzZXJ2ZXJU
b0NsaWVudFRpbWUpOworfQorCit2YXIgc2VydmVyQ2xpZW50VGltZURlbHRhID0gZ2V0U2VydmVy
RGF0ZSgpLmdldFRpbWUoKSAtIG5ldyBEYXRlKCkuZ2V0VGltZSgpOworCiBmdW5jdGlvbiBsb2Fk
VGVzdEZyYW1lKGZyYW1lLCB0ZXN0U3BlYykKIHsKICAgICB2YXIgZmlyc3QgPSB0cnVlOwpAQCAt
NjcsNyArODMsNyBAQCBmdW5jdGlvbiBuZXh0VGVzdCgpCiB7CiAgICAgdmFyIHRlc3RTcGVjID0g
dGVzdHNbY3VycmVudFRlc3RdOwogICAgIHVuaXF1ZUlkID0gTWF0aC5mbG9vcigxMDAwMDAwMDAg
KiBNYXRoLnJhbmRvbSgpKTsKLSAgICBub3cgPSBuZXcgRGF0ZSgpOworICAgIG5vdyA9IG5ldyBE
YXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgc2VydmVyQ2xpZW50VGltZURlbHRhKTsKICAgICBp
ZiAoIXRlc3RTcGVjKSB7CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwpAQCAtODAsMjIgKzk2LDIyIEBAIGZ1bmN0aW9u
IG5leHRUZXN0KCkKIGZ1bmN0aW9uIHRlc3RDb21wbGV0ZSh0ZXN0U3BlYykKIHsKICAgICB2YXIg
bGluZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgIHZhciByZXN1bHQgPSBm
cmFtZTEuY29udGVudFdpbmRvdy5yYW5kb21OdW1iZXIgPT0gZnJhbWUyLmNvbnRlbnRXaW5kb3cu
cmFuZG9tTnVtYmVyID8gJ0NhY2hlZCcgOiAnVW5jYWNoZWQnOyAgICAKKyAgICB2YXIgcmVzdWx0
ID0gZnJhbWUxLmNvbnRlbnRXaW5kb3cucmFuZG9tTnVtYmVyID09IGZyYW1lMi5jb250ZW50V2lu
ZG93LnJhbmRvbU51bWJlciA/ICdDYWNoZWQnIDogJ1VuY2FjaGVkJzsKICAgICB2YXIgcGFzc2Vk
ID0gcmVzdWx0ID09IHRlc3RTcGVjLmV4cGVjdGVkUmVzdWx0OwogCiAgICAgaWYgKHRlc3RTcGVj
LmRlc2NyaXB0aW9uKQogICAgICAgICBsaW5lLmlubmVySFRNTCArPSB0ZXN0U3BlYy5kZXNjcmlw
dGlvbjsKICAgICBlbHNlIHsKLSAgICAgICAgZm9yICh2YXIgaGVhZGVyIGluIHRlc3RTcGVjLnRl
c3RIZWFkZXJzKSAKKyAgICAgICAgZm9yICh2YXIgaGVhZGVyIGluIHRlc3RTcGVjLnRlc3RIZWFk
ZXJzKQogICAgICAgICAgICAgbGluZS5pbm5lckhUTUwgKz0gaGVhZGVyICsgIjogIiArIHRlc3RT
cGVjLnRlc3RIZWFkZXJzW2hlYWRlcl0gKyAiOyAiOwogICAgIH0KICAgICBpZiAodGVzdFNwZWMu
ZGVsYXkpCiAgICAgICAgIGxpbmUuaW5uZXJIVE1MICs9ICJbZGVsYXk9IiArIHRlc3RTcGVjLmRl
bGF5ICsgInNdICIKICAgICBsaW5lLmlubmVySFRNTCArPSAiICAocmVzdWx0PSIgKyByZXN1bHQg
KyAiIGV4cGVjdGVkPSIgKyB0ZXN0U3BlYy5leHBlY3RlZFJlc3VsdCArICIpICI7CiAgICAgbGlu
ZS5pbm5lckhUTUwgKz0gcGFzc2VkID8gIjxmb250IGNvbG9yPWdyZWVuPlBBU1M8L2ZvbnQ+ICIg
OiAiPGZvbnQgY29sb3I9cmVkPkZBSUw8L2ZvbnQ+ICIKLSAgICAgICAgCisKICAgICBjb25zb2xl
RGl2LmFwcGVuZENoaWxkKGxpbmUpOwotICAgIAorCiAgICAgbmV4dFRlc3QoKTsKIH0KIApAQCAt
MTA2LDUgKzEyMiw0IEBAIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICAgICAgbmV4dFRlc3QoKTsK
ICAgICBlbHNlCiAgICAgICAgIHNldFRpbWVvdXQocnVuVGVzdHMsIDEwMCk7Ci0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163105</attachid>
            <date>2012-09-10 05:54:32 -0700</date>
            <delta_ts>2012-09-10 07:15:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95346-20120910145408.patch</filename>
            <type>text/plain</type>
            <size>17116</size>
            <attacher name="Philippe Liard">pliard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MDQ1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmE1ZDVhNWJkYWU3MDQwMDA2ZjdmOGVjNTk3MGQ1NDE5
OThiZDI3MC4uOGUxM2ZlZTdjMWRkZWU4YTk5Y2YwZTFiNWU2YTBkODM0YWM2ODUwNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDEyLTA5LTEwICBQaGlsaXBwZSBMaWFyZCAgPHBsaWFyZEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3VwcG9ydCBMYXlvdXRUZXN0cyBvbiBub24tcm9vdGVkIGRldmljZXMgZm9yIENo
cm9taXVtIEFuZHJvaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTM0NgorCisgICAgICAgIFdlIHdlcmUgcmVxdWlyaW5nIHJvb3QgcGVybWlzc2lv
bnMgdG8gc3luYyByZXNvdXJjZSBmaWxlcyB3aXRoIHRoZQorICAgICAgICBkZXZpY2UgYnkgY29t
cGFyaW5nIGhvc3QgYW5kIGRldmljZSBmaWxlcycgdGltZXN0YW1wIGFmdGVyIHdlCisgICAgICAg
IHN5bmNocm9uaXplZCB0aGUgZGV2aWNlIGFuZCBob3N0IGNsb2Nrcy4KKyAgICAgICAgV2Ugbm93
IHJlbHkgb24gbWQ1c3VtIHByb3ZpZGVkIGJ5IENocm9taXVtIHRvIGhhbmRsZSBkYXRhIGZpbGVz
CisgICAgICAgIHN5bmNocm9uaXphdGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgIChDaHJvbWl1bVBvcnQuX2No
ZWNrX2RyaXZlcl9idWlsZF91cF90b19kYXRlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHk6CisgICAgICAgIChDaHJvbWl1
bUFuZHJvaWREcml2ZXIuX19pbml0X18pOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVy
Ll9zZXR1cF90ZXN0KToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF9leGVj
dXRhYmxlKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF90ZXN0X3Jlc291
cmNlcyk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX3JlYWRfcHJvbXB0KToKKwog
MjAxMi0wOS0xMCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAK
ICAgICAgICAgRml4IGJ1aWxkIG9mIFdUUiB3aXRoIFF0IG9uIFdpbmRvd3MKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5n
eXAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRy
ZWUuZ3lwCmluZGV4IGFlODZiNTdmZmVkNGE5YmU1Y2JmM2QxNGI0NjQwZDZlMjVjZTA5NGUuLmRm
NjhjZWQ5NDQ1OTg0N2Q1ZjViY2I1NTFkMTFmZGY3OWRiMDNlOGMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVl
Lmd5cApAQCAtMTIxLDExICsxMjEsMTEgQEAKICAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGly
KS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDppbnNwZWN0b3JfcmVzb3VyY2VzJywKICAgICAg
ICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDp3ZWJr
aXQnLAogICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dURi9XVEYuZ3lwL1dURi5neXA6
d3RmJywKKyAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNlL2Jhc2UuZ3lw
OnRlc3Rfc3VwcG9ydF9iYXNlJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGly
KS9idWlsZC90ZW1wX2d5cC9nb29nbGV1cmwuZ3lwOmdvb2dsZXVybCcsCiAgICAgICAgICAgICAg
ICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvaWN1L2ljdS5neXA6aWN1dWMnLAog
ICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L21lc2EvbWVz
YS5neXA6b3NtZXNhJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS92OC90
b29scy9neXAvdjguZ3lwOnY4JywKLSAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGly
KS9iYXNlL2Jhc2UuZ3lwOnRlc3Rfc3VwcG9ydF9iYXNlJywKICAgICAgICAgICAgICAgICAnPChj
aHJvbWl1bV9zcmNfZGlyKS93ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5neXA6YmxvYics
CiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L3N1cHBvcnQvd2Vi
a2l0X3N1cHBvcnQuZ3lwOndlYmtpdF9zdXBwb3J0JywKICAgICAgICAgICAgIF0sCkBAIC0yODIs
OCArMjgyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnc2hhcmVkX2xpYnJhcnkn
LAogICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWwogICAgICAgICAgICAgICAg
ICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYmFzZS9iYXNlLmd5cDp0ZXN0X3N1cHBvcnRf
YmFzZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90b29s
cy9hbmRyb2lkL2ZvcndhcmRlci9mb3J3YXJkZXIuZ3lwOmZvcndhcmRlcicsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90ZXN0aW5nL2FuZHJvaWQvbmF0aXZl
X3Rlc3QuZ3lwOm5hdGl2ZV90ZXN0X25hdGl2ZV9jb2RlJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICc8KGNocm9taXVtX3NyY19kaXIpL3Rvb2xzL2FuZHJvaWQvZm9yd2FyZGVyL2ZvcndhcmRl
ci5neXA6Zm9yd2FyZGVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3Ny
Y19kaXIpL3Rvb2xzL2FuZHJvaWQvbWQ1c3VtL21kNXN1bS5neXA6bWQ1c3VtJywKICAgICAgICAg
ICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyEnOiBbCiAg
ICAgICAgICAgICAgICAgICAgICAgICAnSW1hZ2VEaWZmJywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IGU2NmIwYTIw
NDMxOWQxZjg4Njk0ZTM3NmM3MGFjYzdhMGU4YTNlNWEuLjIwNjIxOWM0YzBhMDA4NGEzNjc2YjAw
YjBmODk5YTFkMDE2YTg5ZjMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNDA1LDEwICs0MDUsOSBAQCBjbGFzcyBD
aHJvbWl1bVBvcnQoUG9ydCk6CiAKICAgICAgICAgICAgICAgICBpZiAoZGVidWdfbXRpbWUgPiBy
ZWxlYXNlX210aW1lIGFuZCBjb25maWd1cmF0aW9uID09ICdSZWxlYXNlJyBvcgogICAgICAgICAg
ICAgICAgICAgICByZWxlYXNlX210aW1lID4gZGVidWdfbXRpbWUgYW5kIGNvbmZpZ3VyYXRpb24g
PT0gJ0RlYnVnJyk6Ci0gICAgICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygnWW91IGFyZSBu
b3QgcnVubmluZyB0aGUgbW9zdCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
cmVjZW50IER1bXBSZW5kZXJUcmVlIGJpbmFyeS4gWW91IG5lZWQgdG8gJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3Bhc3MgLS1kZWJ1ZyBvciBub3QgdG8gc2VsZWN0IGJldHdl
ZW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlYnVnIGFuZCBSZWxlYXNl
LicpCisgICAgICAgICAgICAgICAgICAgIG1vc3RfcmVjZW50X2JpbmFyeSA9ICdSZWxlYXNlJyBp
ZiBjb25maWd1cmF0aW9uID09ICdEZWJ1ZycgZWxzZSAnRGVidWcnCisgICAgICAgICAgICAgICAg
ICAgIF9sb2cud2FybmluZygnWW91IGFyZSBydW5uaW5nIHRoZSAlcyBiaW5hcnkuIEhvd2V2ZXIg
dGhlICVzIGJpbmFyeSBhcHBlYXJzIHRvIGJlIG1vcmUgcmVjZW50LiAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIHBhc3MgLS0lcy4nLCBjb25maWd1cmF0aW9uLCBt
b3N0X3JlY2VudF9iaW5hcnksIG1vc3RfcmVjZW50X2JpbmFyeS5sb3dlcigpKQogICAgICAgICAg
ICAgICAgICAgICBfbG9nLndhcm5pbmcoJycpCiAgICAgICAgICAgICAjIFRoaXMgd2lsbCBmYWls
IGlmIHdlIGRvbid0IGhhdmUgYm90aCBhIGRlYnVnIGFuZCByZWxlYXNlIGJpbmFyeS4KICAgICAg
ICAgICAgICMgVGhhdCdzIGZpbmUgYmVjYXVzZSwgaW4gdGhpcyBjYXNlLCB3ZSBtdXN0IGFscmVh
ZHkgYmUgcnVubmluZyB0aGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQppbmRleCBkMmIyNjg3MGVh
OGMwOGU3OTM4ZWMwNDM4ZTJkN2I3M2VjZjI5NmUyLi43NDUyMjg4ZGEwY2IyYTU1MTIyYzNjYmY4
Mzk4NTUzYWMwNDc2NWVkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CkBAIC0zMSw2ICszMSw4
IEBAIGltcG9ydCBjb3B5CiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgcmUKK2lt
cG9ydCBzZXRzCitpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRp
bWUKIApAQCAtNTQsNyArNTYsNiBAQCBDT01NQU5EX0xJTkVfRklMRSA9IERFVklDRV9TT1VSQ0Vf
Uk9PVF9ESVIgKyAnY2hyb21lLW5hdGl2ZS10ZXN0cy1jb21tYW5kLWxpbmUnCiAjIGFuZCBDaHJv
bWl1bSdzIHdlYmtpdC9zdXBwb3J0L3BsYXRmb3JtX3N1cHBvcnRfYW5kcm9pZC5jYy4KIERFVklD
RV9EUlRfRElSID0gREVWSUNFX1NPVVJDRV9ST09UX0RJUiArICdkcnQvJwogREVWSUNFX0ZPUldB
UkRFUl9QQVRIID0gREVWSUNFX0RSVF9ESVIgKyAnZm9yd2FyZGVyJwotREVWSUNFX0RSVF9TVEFN
UF9QQVRIID0gREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWUuc3RhbXAnCiAKIERSVF9B
UFBfUEFDS0FHRSA9ICdvcmcuY2hyb21pdW0ubmF0aXZlX3Rlc3QnCiBEUlRfQUNUSVZJVFlfRlVM
TF9OQU1FID0gRFJUX0FQUF9QQUNLQUdFICsgJy8uQ2hyb21lTmF0aXZlVGVzdEFjdGl2aXR5JwpA
QCAtMTM3LDYgKzEzOCw4IEBAIFRFU1RfUkVTT1VSQ0VTX1RPX1BVU0ggPSBbCiAgICAgJ2NvbXBv
c2l0aW5nL3Jlc291cmNlcy92aWRlby5tcDQnLAogXQogCitNRDVTVU1fREVWSUNFX0ZJTEVfTkFN
RSA9ICdtZDVzdW1fYmluJworTUQ1U1VNX0RFVklDRV9QQVRIID0gJy9kYXRhL2xvY2FsL3RtcC8n
ICsgTUQ1U1VNX0RFVklDRV9GSUxFX05BTUUKIAogY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9ydChj
aHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgIHBvcnRfbmFtZSA9ICdjaHJvbWl1bS1hbmRyb2lk
JwpAQCAtMzA2LDYgKzMwOSw4IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQoY2hyb21pdW0u
Q2hyb21pdW1Qb3J0KToKIAogCiBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVyLkRy
aXZlcik6CisgICAgX2RhdGFfYWxyZWFkeV9wdXNoZWRfZm9yX3dvcmtlciA9IHNldHMuU2V0KCkK
KwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCB3b3JrZXJfbnVtYmVyLCBwaXhlbF90ZXN0
cywgbm9fdGltZW91dD1GYWxzZSk6CiAgICAgICAgIHN1cGVyKENocm9taXVtQW5kcm9pZERyaXZl
ciwgc2VsZikuX19pbml0X18ocG9ydCwgd29ya2VyX251bWJlciwgcGl4ZWxfdGVzdHMsIG5vX3Rp
bWVvdXQpCiAgICAgICAgIHNlbGYuX2NtZF9saW5lID0gTm9uZQpAQCAtMzE5LDExICszMjQsMjYg
QEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgICAgICBz
ZWxmLl9vcmlnaW5hbF9nb3Zlcm5vcnMgPSB7fQogICAgICAgICBzZWxmLl9kZXZpY2Vfc2VyaWFs
ID0gcG9ydC5fZ2V0X2RldmljZV9zZXJpYWwod29ya2VyX251bWJlcikKICAgICAgICAgc2VsZi5f
YWRiX2NvbW1hbmQgPSBbJ2FkYicsICctcycsIHNlbGYuX2RldmljZV9zZXJpYWxdCisgICAgICAg
IHNlbGYuX3NldHVwX21kNXN1bSgpCisgICAgICAgIGlmIG5vdCB3b3JrZXJfbnVtYmVyIGluIHNl
bGYuX2RhdGFfYWxyZWFkeV9wdXNoZWRfZm9yX3dvcmtlcjoKKyAgICAgICAgICAgIHNlbGYuX3B1
c2hfZXhlY3V0YWJsZSgpCisgICAgICAgICAgICBzZWxmLl9wdXNoX2ZvbnRzKCkKKyAgICAgICAg
ICAgIHNlbGYuX3B1c2hfdGVzdF9yZXNvdXJjZXMoKQorICAgICAgICAgICAgc2VsZi5fZGF0YV9h
bHJlYWR5X3B1c2hlZF9mb3Jfd29ya2VyLmFkZCh3b3JrZXJfbnVtYmVyKQogCiAgICAgZGVmIF9f
ZGVsX18oc2VsZik6CiAgICAgICAgIHNlbGYuX3RlYXJkb3duX3BlcmZvcm1hbmNlKCkKICAgICAg
ICAgc3VwZXIoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLCBzZWxmKS5fX2RlbF9fKCkKIAorICAgIGRl
ZiBfc2V0dXBfbWQ1c3VtKHNlbGYpOgorICAgICAgICBzZWxmLl9tZDVzdW1fcGF0aCA9ICclcy9v
dXQvJXMvJXMnICUgKAorICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQucGF0aF9mcm9tX2Nocm9t
aXVtX2Jhc2UoKSwgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIE1ENVNV
TV9ERVZJQ0VfRklMRV9OQU1FKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoc2VsZi5f
bWQ1c3VtX3BhdGgpCisgICAgICAgIGlmIHNlbGYuX2ZpbGVfZXhpc3RzX29uX2RldmljZShNRDVT
VU1fREVWSUNFX1BBVEgpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIG5vdCBzZWxm
Ll9wdXNoX3RvX2RldmljZShzZWxmLl9tZDVzdW1fcGF0aCwgTUQ1U1VNX0RFVklDRV9QQVRIKToK
KyAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0NvdWxkIG5vdCBwdXNoIG1kNXN1bSB0byBkZXZpY2Un
KQorCiAgICAgZGVmIF9zZXR1cF90ZXN0KHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9oYXNfc2V0
dXA6CiAgICAgICAgICAgICByZXR1cm4KQEAgLTM0MCwxMCArMzYwLDYgQEAgY2xhc3MgQ2hyb21p
dW1BbmRyb2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgICAgICBzZWxmLl9ydW5fYWRiX2Nv
bW1hbmQoWydzaGVsbCcsICdta2RpcicsICctcCcsIERFVklDRV9EUlRfRElSXSkKICAgICAgICAg
c2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAnY2htb2QnLCAnNzc3JywgREVWSUNFX0RS
VF9ESVJdKQogCi0gICAgICAgIHNlbGYuX3B1c2hfZXhlY3V0YWJsZSgpCi0gICAgICAgIHNlbGYu
X3B1c2hfZm9udHMoKQotICAgICAgICBzZWxmLl9zeW5jaHJvbml6ZV9kYXRldGltZSgpCi0KICAg
ICAgICAgIyBEZWxldGUgdGhlIGRpc2sgY2FjaGUgaWYgYW55IHRvIGVuc3VyZSBhIGNsZWFuIHRl
c3QgcnVuLgogICAgICAgICAjIFRoaXMgaXMgbGlrZSB3aGF0J3MgZG9uZSBpbiBDaHJvbWl1bVBv
cnQuc2V0dXBfdGVzdF9ydW4gYnV0IG9uIHRoZSBkZXZpY2UuCiAgICAgICAgIHNlbGYuX3J1bl9h
ZGJfY29tbWFuZChbJ3NoZWxsJywgJ3JtJywgJy1yJywgRFJUX0FQUF9DQUNIRV9ESVJdKQpAQCAt
MzU3LDI5ICszNzMsMzQgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkRHJpdmVyKGRyaXZlci5Ecml2
ZXIpOgogICAgIGRlZiBfYWJvcnQoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHJhaXNlIEFzc2Vy
dGlvbkVycm9yKCdbJXNdICVzJyAlIChzZWxmLl9kZXZpY2Vfc2VyaWFsLCBtZXNzYWdlKSkKIAor
ICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2V4dHJhY3RfaGFzaGVzX2Zyb21fbWQ1c3VtX291
dHB1dChtZDVzdW1fb3V0cHV0KToKKyAgICAgICAgYXNzZXJ0IG1kNXN1bV9vdXRwdXQKKyAgICAg
ICAgcmV0dXJuIFtsaW5lLnNwbGl0KCcgICcpWzBdIGZvciBsaW5lIGluIG1kNXN1bV9vdXRwdXRd
CisKKyAgICBkZWYgX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2VsZiwgaG9zdF9maWxlLCBkZXZpY2Vf
ZmlsZSk6CisgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhob3N0X2ZpbGUpCisgICAgICAg
IGRldmljZV9oYXNoZXMgPSBzZWxmLl9leHRyYWN0X2hhc2hlc19mcm9tX21kNXN1bV9vdXRwdXQo
CisgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5Qb3BlbihzZWxmLl9hZGJfY29tbWFuZCArIFsn
c2hlbGwnLCBNRDVTVU1fREVWSUNFX1BBVEgsIGRldmljZV9maWxlXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dCkKKyAgICAg
ICAgaG9zdF9oYXNoZXMgPSBzZWxmLl9leHRyYWN0X2hhc2hlc19mcm9tX21kNXN1bV9vdXRwdXQo
CisgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5Qb3BlbihhcmdzPVsnJXNfaG9zdCcgJSBzZWxm
Ll9tZDVzdW1fcGF0aCwgaG9zdF9maWxlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dCkKKyAgICAgICAgaWYgaG9zdF9oYXNo
ZXMgYW5kIGRldmljZV9oYXNoZXMgPT0gaG9zdF9oYXNoZXM6CisgICAgICAgICAgICByZXR1cm4K
KyAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2UoaG9zdF9maWxlLCBkZXZpY2VfZmlsZSkKKwog
ICAgIGRlZiBfcHVzaF9leGVjdXRhYmxlKHNlbGYpOgorICAgICAgICBzZWxmLl9wdXNoX2ZpbGVf
aWZfbmVlZGVkKHNlbGYuX3BvcnQuX3BhdGhfdG9fZm9yd2FyZGVyKCksIERFVklDRV9GT1JXQVJE
RVJfUEFUSCkKKyAgICAgICAgc2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9wb3J0Ll9i
dWlsZF9wYXRoKCdEdW1wUmVuZGVyVHJlZS5wYWsnKSwgREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJl
bmRlclRyZWUucGFrJykKKyAgICAgICAgc2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9w
b3J0Ll9idWlsZF9wYXRoKCdEdW1wUmVuZGVyVHJlZV9yZXNvdXJjZXMnKSwgREVWSUNFX0RSVF9E
SVIgKyAnRHVtcFJlbmRlclRyZWVfcmVzb3VyY2VzJykKKyAgICAgICAgc2VsZi5fcHVzaF9maWxl
X2lmX25lZWRlZChzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdhbmRyb2lkX21haW5fZm9udHMueG1s
JyksIERFVklDRV9EUlRfRElSICsgJ2FuZHJvaWRfbWFpbl9mb250cy54bWwnKQorICAgICAgICBz
ZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ2FuZHJvaWRf
ZmFsbGJhY2tfZm9udHMueG1sJyksIERFVklDRV9EUlRfRElSICsgJ2FuZHJvaWRfZmFsbGJhY2tf
Zm9udHMueG1sJykKKyAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsndW5pbnN0YWxsJywg
RFJUX0FQUF9QQUNLQUdFXSkKICAgICAgICAgZHJ0X2hvc3RfcGF0aCA9IHNlbGYuX3BvcnQuX3Bh
dGhfdG9fZHJpdmVyKCkKLSAgICAgICAgZm9yd2FyZGVyX2hvc3RfcGF0aCA9IHNlbGYuX3BvcnQu
X3BhdGhfdG9fZm9yd2FyZGVyKCkKLSAgICAgICAgaG9zdF9zdGFtcCA9IGludChmbG9hdChtYXgo
b3Muc3RhdChkcnRfaG9zdF9wYXRoKS5zdF9tdGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3Muc3RhdChmb3J3YXJkZXJfaG9zdF9wYXRoKS5zdF9tdGltZSkpKQotICAg
ICAgICBkZXZpY2Vfc3RhbXAgPSBpbnQoZmxvYXQoc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsKLSAg
ICAgICAgICAgICdzaGVsbCcsICdjYXQgJXMgMj4vZGV2L251bGwgfHwgZWNobyAwJyAlIERFVklD
RV9EUlRfU1RBTVBfUEFUSF0pKSkKLSAgICAgICAgaWYgZGV2aWNlX3N0YW1wICE9IGhvc3Rfc3Rh
bXA6Ci0gICAgICAgICAgICBzZWxmLl9sb2dfZGVidWcoJ1B1c2hpbmcgZXhlY3V0YWJsZScpCi0g
ICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShmb3J3YXJkZXJfaG9zdF9wYXRoLCBERVZJ
Q0VfRk9SV0FSREVSX1BBVEgpCi0gICAgICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWyd1
bmluc3RhbGwnLCBEUlRfQVBQX1BBQ0tBR0VdKQotICAgICAgICAgICAgaW5zdGFsbF9yZXN1bHQg
PSBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydpbnN0YWxsJywgZHJ0X2hvc3RfcGF0aF0pCi0gICAg
ICAgICAgICBpZiBpbnN0YWxsX3Jlc3VsdC5maW5kKCdTdWNjZXNzJykgPT0gLTE6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5fYWJvcnQoJ0ZhaWxlZCB0byBpbnN0YWxsICVzIG9udG8gZGV2aWNlOiAl
cycgJSAoZHJ0X2hvc3RfcGF0aCwgaW5zdGFsbF9yZXN1bHQpKQotICAgICAgICAgICAgc2VsZi5f
cHVzaF90b19kZXZpY2Uoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnRHVtcFJlbmRlclRyZWUucGFr
JyksIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlLnBhaycpCi0gICAgICAgICAgICBz
ZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdEdW1wUmVuZGVyVHJl
ZV9yZXNvdXJjZXMnKSwgREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWVfcmVzb3VyY2Vz
JykKLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYuX3BvcnQuX2J1aWxkX3Bh
dGgoJ2FuZHJvaWRfbWFpbl9mb250cy54bWwnKSwgREVWSUNFX0RSVF9ESVIgKyAnYW5kcm9pZF9t
YWluX2ZvbnRzLnhtbCcpCi0gICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9w
b3J0Ll9idWlsZF9wYXRoKCdhbmRyb2lkX2ZhbGxiYWNrX2ZvbnRzLnhtbCcpLCBERVZJQ0VfRFJU
X0RJUiArICdhbmRyb2lkX2ZhbGxiYWNrX2ZvbnRzLnhtbCcpCi0gICAgICAgICAgICAjIFZlcnNp
b24gY29udHJvbCBvZiB0ZXN0IHJlc291cmNlcyBpcyBkZXBlbmRlbnQgb24gZXhlY3V0YWJsZXMs
Ci0gICAgICAgICAgICAjIGJlY2F1c2Ugd2Ugd2lsbCBhbHdheXMgcmVidWlsZCBleGVjdXRhYmxl
cyB3aGVuIHJlc291cmNlcyBhcmUKLSAgICAgICAgICAgICMgdXBkYXRlZC4KLSAgICAgICAgICAg
IHNlbGYuX3B1c2hfdGVzdF9yZXNvdXJjZXMoKQotICAgICAgICAgICAgc2VsZi5fcnVuX2FkYl9j
b21tYW5kKFsnc2hlbGwnLCAnZWNobyAlZCA+JXMnICUgKGhvc3Rfc3RhbXAsIERFVklDRV9EUlRf
U1RBTVBfUEFUSCldKQorICAgICAgICBpbnN0YWxsX3Jlc3VsdCA9IHNlbGYuX3J1bl9hZGJfY29t
bWFuZChbJ2luc3RhbGwnLCBkcnRfaG9zdF9wYXRoXSkKKyAgICAgICAgaWYgaW5zdGFsbF9yZXN1
bHQuZmluZCgnU3VjY2VzcycpID09IC0xOgorICAgICAgICAgICAgc2VsZi5fYWJvcnQoJ0ZhaWxl
ZCB0byBpbnN0YWxsICVzIG9udG8gZGV2aWNlOiAlcycgJSAoZHJ0X2hvc3RfcGF0aCwgaW5zdGFs
bF9yZXN1bHQpKQogCiAgICAgZGVmIF9wdXNoX2ZvbnRzKHNlbGYpOgogICAgICAgICBpZiBub3Qg
c2VsZi5fY2hlY2tfdmVyc2lvbihERVZJQ0VfRk9OVFNfRElSLCBGT05UX0ZJTEVTX1ZFUlNJT04p
OgpAQCAtMzk0LDE4ICs0MTUsNyBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVy
LkRyaXZlcik6CiAgICAgZGVmIF9wdXNoX3Rlc3RfcmVzb3VyY2VzKHNlbGYpOgogICAgICAgICBz
ZWxmLl9sb2dfZGVidWcoJ1B1c2hpbmcgdGVzdCByZXNvdXJjZXMnKQogICAgICAgICBmb3IgcmVz
b3VyY2UgaW4gVEVTVF9SRVNPVVJDRVNfVE9fUFVTSDoKLSAgICAgICAgICAgIHNlbGYuX3B1c2hf
dG9fZGV2aWNlKHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy8nICsgcmVzb3VyY2Us
IERFVklDRV9MQVlPVVRfVEVTVFNfRElSICsgcmVzb3VyY2UpCi0KLSAgICBkZWYgX3N5bmNocm9u
aXplX2RhdGV0aW1lKHNlbGYpOgotICAgICAgICAjIFRoZSBkYXRlL3RpbWUgYmV0d2VlbiBob3N0
IGFuZCBkZXZpY2UgbWF5IG5vdCBiZSBzeW5jaHJvbml6ZWQuCi0gICAgICAgICMgV2UgbmVlZCB0
byBtYWtlIHRoZW0gc3luY2hyb25pemVkLCBvdGhlcndpc2UgdGVzdHMgbWlnaHQgZmFpbC4KLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgIyBHZXQgc2Vjb25kcyBzaW5jZSAxOTcwLTAxLTAxIDAw
OjAwOjAwIFVUQy4KLSAgICAgICAgICAgIGhvc3RfZGF0ZXRpbWUgPSBzZWxmLl9wb3J0Ll9leGVj
dXRpdmUucnVuX2NvbW1hbmQoWydkYXRlJywgJy11JywgJyslcyddKQotICAgICAgICBleGNlcHQ6
Ci0gICAgICAgICAgICAjIFJlc2V0IHRvIDE5NzAtMDEtMDEgMDA6MDA6MDAgVVRDLgotICAgICAg
ICAgICAgaG9zdF9kYXRldGltZSA9IDAKLSAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsn
c2hlbGwnLCAnZGF0ZSAtdSAlcycgJSAoaG9zdF9kYXRldGltZSldKQorICAgICAgICAgICAgc2Vs
Zi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSArICcv
JyArIHJlc291cmNlLCBERVZJQ0VfTEFZT1VUX1RFU1RTX0RJUiArIHJlc291cmNlKQogCiAgICAg
ZGVmIF9jaGVja192ZXJzaW9uKHNlbGYsIGRpciwgdmVyc2lvbik6CiAgICAgICAgIGFzc2VydChk
aXIuZW5kc3dpdGgoJy8nKSkKQEAgLTY2NCw4ICs2NzQsNiBAQCBjbGFzcyBDaHJvbWl1bUFuZHJv
aWREcml2ZXIoZHJpdmVyLkRyaXZlcik6CiAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAg
ICBjdXJyZW50X2NoYXIgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX3N0ZG91dChkZWFkbGlu
ZSwgMSkKICAgICAgICAgICAgIGlmIGN1cnJlbnRfY2hhciA9PSAnICc6Ci0gICAgICAgICAgICAg
ICAgaWYgbGFzdF9jaGFyID09ICcjJzoKKyAgICAgICAgICAgICAgICBpZiBsYXN0X2NoYXIgaW4g
KCcjJywgJyQnKToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAg
aWYgbGFzdF9jaGFyID09ICckJzoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9u
RXJyb3IoJ0FkYmQgaXMgbm90IHJ1bm5pbmcgYXMgcm9vdCcpCiAgICAgICAgICAgICBsYXN0X2No
YXIgPSBjdXJyZW50X2NoYXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMTg4NTYzNzJmYjBmYTg2OWJiNzIwMjAzNjFhYTZi
NzQ3YWUwOTRhLi5kZjgwNjUwZjMwNjg4MTY4NzE0Mjk2NTE0YWZiNjI0NzI0MTVmMjA1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDktMTAgIFBoaWxpcHBlIExpYXJkICA8cGxpYXJkQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IExheW91dFRlc3RzIG9uIG5vbi1yb290ZWQg
QW5kcm9pZCBkZXZpY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTUzNDYKKworICAgICAgICBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9zdWJy
ZXNvdXJjZS10ZXN0LmpzIHdhcyBhc3N1bWluZyB0aGF0IHRoZQorICAgICAgICBjbGllbnQgYW5k
IHNlcnZlciBjbG9ja3MgYXJlIHRoZSBzYW1lIHdoaWNoIGlzIG5vIGxvbmdlciB0cnVlIHNpbmNl
IHdlCisgICAgICAgIGFyZSBnZXR0aW5nIHJpZCBvZiBob3N0L2RldmljZSBjbG9jayBzeW5jaHJv
bml6YXRpb24uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9jYWNoZS1z
aW11bGF0b3IuY2dpOgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2N1cnJl
bnQtdGltZS5jZ2k6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2Vz
L3N1YnJlc291cmNlLXRlc3QuanM6CisgICAgICAgIChnZXRTZXJ2ZXJEYXRlKToKKyAgICAgICAg
KG5leHRUZXN0KToKKyAgICAgICAgKHRlc3RDb21wbGV0ZSk6CisgICAgICAgIChydW5UZXN0cyk6
CisKIDIwMTItMDktMTAgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkIEdUSyBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9jdXJyZW50LXRpbWUuY2dpIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY3VycmVudC10aW1lLmNnaQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNTQyNjVmMzczMWVhMTgzOThjOTU0ZjJjODFlY2VjMjk2ZWM2MzAzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY3VycmVudC10aW1l
LmNnaQpAQCAtMCwwICsxLDUgQEAKKyMhL3Vzci9iaW4vcGVybCAtdworCitwcmludCAiQ29udGVu
dC10eXBlOiB0ZXh0L3BsYWluXG4iOworcHJpbnQgIlxuIjsKK3ByaW50IHRpbWUoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3N1YnJlc291cmNl
LXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9zdWJyZXNv
dXJjZS10ZXN0LmpzCmluZGV4IGNlNGJiMTI5NTAzMjZhYWMyNmY3Yzk5YWQzMGE0MTJhNDdmOWM5
NjMuLmU0YzhmZTUyNTZhMGQ0MjViMGU4YzliYTc1YzdkZmY0ZDVlYzFmMWUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3N1YnJlc291cmNlLXRlc3Qu
anMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3Vy
Y2UtdGVzdC5qcwpAQCAtMjUsNiArMjUsMjIgQEAgdmFyIGNvbnNvbGVEaXYgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29uc29sZURp
dik7CiBmcmFtZTIub25sb2FkID0gZnVuY3Rpb24gKCkgeyBsb2FkZWRGcmFtZUNvdW50Kys7IH0K
IAorZnVuY3Rpb24gZ2V0U2VydmVyRGF0ZSgpCit7CisgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRw
UmVxdWVzdCgpOworICAgIHZhciB0MCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOworICAgIHJlcS5v
cGVuKCdHRVQnLCAiL2NhY2hlL3Jlc291cmNlcy9jdXJyZW50LXRpbWUuY2dpIiwgZmFsc2UgLyog
YmxvY2tpbmcgKi8pOworICAgIHJlcS5zZW5kKCk7CisgICAgdmFyIHNlcnZlclRvQ2xpZW50VGlt
ZSA9IChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHQwKSAvIDI7CisgICAgaWYgKHJlcS5zdGF0dXMg
IT0gMjAwKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCJ1bmV4cGVjdGVkIHN0YXR1cyBjb2RlICIg
KyByZXEuc3RhdHVzICsgIiwgZXhwZWN0ZWQgMjAwLiIpOworICAgICAgICByZXR1cm4gbmV3IERh
dGUoKTsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBEYXRlKChwYXJzZUludChyZXEucmVzcG9uc2VU
ZXh0KSAqIDEwMDApICsgc2VydmVyVG9DbGllbnRUaW1lKTsKK30KKwordmFyIHNlcnZlckNsaWVu
dFRpbWVEZWx0YSA9IGdldFNlcnZlckRhdGUoKS5nZXRUaW1lKCkgLSBuZXcgRGF0ZSgpLmdldFRp
bWUoKTsKKwogZnVuY3Rpb24gbG9hZFRlc3RGcmFtZShmcmFtZSwgdGVzdFNwZWMpCiB7CiAgICAg
dmFyIGZpcnN0ID0gdHJ1ZTsKQEAgLTY3LDcgKzgzLDcgQEAgZnVuY3Rpb24gbmV4dFRlc3QoKQog
ewogICAgIHZhciB0ZXN0U3BlYyA9IHRlc3RzW2N1cnJlbnRUZXN0XTsKICAgICB1bmlxdWVJZCA9
IE1hdGguZmxvb3IoMTAwMDAwMDAwICogTWF0aC5yYW5kb20oKSk7Ci0gICAgbm93ID0gbmV3IERh
dGUoKTsKKyAgICBub3cgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLmdldFRpbWUoKSArIHNlcnZlckNs
aWVudFRpbWVEZWx0YSk7CiAgICAgaWYgKCF0ZXN0U3BlYykgewogICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKQEAgLTgw
LDIyICs5NiwyMiBAQCBmdW5jdGlvbiBuZXh0VGVzdCgpCiBmdW5jdGlvbiB0ZXN0Q29tcGxldGUo
dGVzdFNwZWMpCiB7CiAgICAgdmFyIGxpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKLSAgICB2YXIgcmVzdWx0ID0gZnJhbWUxLmNvbnRlbnRXaW5kb3cucmFuZG9tTnVtYmVyID09
IGZyYW1lMi5jb250ZW50V2luZG93LnJhbmRvbU51bWJlciA/ICdDYWNoZWQnIDogJ1VuY2FjaGVk
JzsgICAgCisgICAgdmFyIHJlc3VsdCA9IGZyYW1lMS5jb250ZW50V2luZG93LnJhbmRvbU51bWJl
ciA9PSBmcmFtZTIuY29udGVudFdpbmRvdy5yYW5kb21OdW1iZXIgPyAnQ2FjaGVkJyA6ICdVbmNh
Y2hlZCc7CiAgICAgdmFyIHBhc3NlZCA9IHJlc3VsdCA9PSB0ZXN0U3BlYy5leHBlY3RlZFJlc3Vs
dDsKIAogICAgIGlmICh0ZXN0U3BlYy5kZXNjcmlwdGlvbikKICAgICAgICAgbGluZS5pbm5lckhU
TUwgKz0gdGVzdFNwZWMuZGVzY3JpcHRpb247CiAgICAgZWxzZSB7Ci0gICAgICAgIGZvciAodmFy
IGhlYWRlciBpbiB0ZXN0U3BlYy50ZXN0SGVhZGVycykgCisgICAgICAgIGZvciAodmFyIGhlYWRl
ciBpbiB0ZXN0U3BlYy50ZXN0SGVhZGVycykKICAgICAgICAgICAgIGxpbmUuaW5uZXJIVE1MICs9
IGhlYWRlciArICI6ICIgKyB0ZXN0U3BlYy50ZXN0SGVhZGVyc1toZWFkZXJdICsgIjsgIjsKICAg
ICB9CiAgICAgaWYgKHRlc3RTcGVjLmRlbGF5KQogICAgICAgICBsaW5lLmlubmVySFRNTCArPSAi
W2RlbGF5PSIgKyB0ZXN0U3BlYy5kZWxheSArICJzXSAiCiAgICAgbGluZS5pbm5lckhUTUwgKz0g
IiAgKHJlc3VsdD0iICsgcmVzdWx0ICsgIiBleHBlY3RlZD0iICsgdGVzdFNwZWMuZXhwZWN0ZWRS
ZXN1bHQgKyAiKSAiOwogICAgIGxpbmUuaW5uZXJIVE1MICs9IHBhc3NlZCA/ICI8Zm9udCBjb2xv
cj1ncmVlbj5QQVNTPC9mb250PiAiIDogIjxmb250IGNvbG9yPXJlZD5GQUlMPC9mb250PiAiCi0g
ICAgICAgIAorCiAgICAgY29uc29sZURpdi5hcHBlbmRDaGlsZChsaW5lKTsKLSAgICAKKwogICAg
IG5leHRUZXN0KCk7CiB9CiAKQEAgLTEwNiw1ICsxMjIsNCBAQCBmdW5jdGlvbiBydW5UZXN0cygp
CiAgICAgICAgIG5leHRUZXN0KCk7CiAgICAgZWxzZQogICAgICAgICBzZXRUaW1lb3V0KHJ1blRl
c3RzLCAxMDApOwotCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163125</attachid>
            <date>2012-09-10 07:16:04 -0700</date>
            <delta_ts>2012-09-10 08:22:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95346-20120910161539.patch</filename>
            <type>text/plain</type>
            <size>17209</size>
            <attacher name="Philippe Liard">pliard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MDU1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTdlM2M0YTAyODQ4YzY1YjVlOGZlYjUwMWYwZGU1NTlh
ODA3MzhkZC4uZjFiYjk3NTU4ZjcwYjE3MTNhNjYwZjk3NGI0NThjZmJhMzJiNzM3ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDEyLTA5LTEwICBQaGlsaXBwZSBMaWFyZCAgPHBsaWFyZEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3VwcG9ydCBMYXlvdXRUZXN0cyBvbiBub24tcm9vdGVkIGRldmljZXMgZm9yIENo
cm9taXVtIEFuZHJvaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTM0NgorCisgICAgICAgIFdlIHdlcmUgcmVxdWlyaW5nIHJvb3QgcGVybWlzc2lv
bnMgdG8gc3luYyByZXNvdXJjZSBmaWxlcyB3aXRoIHRoZQorICAgICAgICBkZXZpY2UgYnkgY29t
cGFyaW5nIGhvc3QgYW5kIGRldmljZSBmaWxlcycgdGltZXN0YW1wIGFmdGVyIHdlCisgICAgICAg
IHN5bmNocm9uaXplZCB0aGUgZGV2aWNlIGFuZCBob3N0IGNsb2Nrcy4KKyAgICAgICAgV2Ugbm93
IHJlbHkgb24gbWQ1c3VtIHByb3ZpZGVkIGJ5IENocm9taXVtIHRvIGhhbmRsZSBkYXRhIGZpbGVz
CisgICAgICAgIHN5bmNocm9uaXphdGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgIChDaHJvbWl1bVBvcnQuX2No
ZWNrX2RyaXZlcl9idWlsZF91cF90b19kYXRlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHk6CisgICAgICAgIChDaHJvbWl1
bUFuZHJvaWREcml2ZXIuX19pbml0X18pOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVy
Ll9zZXR1cF90ZXN0KToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF9leGVj
dXRhYmxlKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF90ZXN0X3Jlc291
cmNlcyk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX3JlYWRfcHJvbXB0KToKKwog
MjAxMi0wOS0xMCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29t
PgogCiAgICAgICAgIFtFRkxdW0RSVF0gRW5jb2RpbmcgaXNzdWUgaW4gcHJpbnRlZCBjb25zb2xl
IG1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cAppbmRleCBhZTg2YjU3ZmZlZDRhOWJlNWNiZjNk
MTRiNDY0MGQ2ZTI1Y2UwOTRlLi5kZjY4Y2VkOTQ0NTk4NDdkNWY1YmNiNTUxZDExZmRmNzlkYjAz
ZThjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAv
RHVtcFJlbmRlclRyZWUuZ3lwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKQEAgLTEyMSwxMSArMTIxLDExIEBACiAgICAgICAg
ICAgICAgICAgJzwoc291cmNlX2RpcikvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXA6aW5zcGVj
dG9yX3Jlc291cmNlcycsCiAgICAgICAgICAgICAgICAgJzwoc291cmNlX2RpcikvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXA6d2Via2l0JywKICAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGly
KS9XVEYvV1RGLmd5cC9XVEYuZ3lwOnd0ZicsCisgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1f
c3JjX2RpcikvYmFzZS9iYXNlLmd5cDp0ZXN0X3N1cHBvcnRfYmFzZScsCiAgICAgICAgICAgICAg
ICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYnVpbGQvdGVtcF9neXAvZ29vZ2xldXJsLmd5cDpnb29n
bGV1cmwnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5
L2ljdS9pY3UuZ3lwOmljdXVjJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGly
KS90aGlyZF9wYXJ0eS9tZXNhL21lc2EuZ3lwOm9zbWVzYScsCiAgICAgICAgICAgICAgICAgJzwo
Y2hyb21pdW1fc3JjX2RpcikvdjgvdG9vbHMvZ3lwL3Y4Lmd5cDp2OCcsCi0gICAgICAgICAgICAg
ICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYmFzZS9iYXNlLmd5cDp0ZXN0X3N1cHBvcnRfYmFzZScs
CiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L3N1cHBvcnQvd2Vi
a2l0X3N1cHBvcnQuZ3lwOmJsb2InLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19k
aXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmd5cDp3ZWJraXRfc3VwcG9ydCcsCiAg
ICAgICAgICAgICBdLApAQCAtMjgyLDggKzI4Miw5IEBACiAgICAgICAgICAgICAgICAgICAgICd0
eXBlJzogJ3NoYXJlZF9saWJyYXJ5JywKICAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2ll
cyc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2Jhc2Uv
YmFzZS5neXA6dGVzdF9zdXBwb3J0X2Jhc2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzwo
Y2hyb21pdW1fc3JjX2RpcikvdG9vbHMvYW5kcm9pZC9mb3J3YXJkZXIvZm9yd2FyZGVyLmd5cDpm
b3J3YXJkZXInLAogICAgICAgICAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikv
dGVzdGluZy9hbmRyb2lkL25hdGl2ZV90ZXN0Lmd5cDpuYXRpdmVfdGVzdF9uYXRpdmVfY29kZScs
CisgICAgICAgICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90b29scy9hbmRy
b2lkL2ZvcndhcmRlci9mb3J3YXJkZXIuZ3lwOmZvcndhcmRlcicsCisgICAgICAgICAgICAgICAg
ICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90b29scy9hbmRyb2lkL21kNXN1bS9tZDVzdW0u
Z3lwOm1kNXN1bScsCiAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAg
ICdkZXBlbmRlbmNpZXMhJzogWwogICAgICAgICAgICAgICAgICAgICAgICAgJ0ltYWdlRGlmZics
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bS5weQppbmRleCBlNjZiMGEyMDQzMTlkMWY4ODY5NGUzNzZjNzBhY2M3YTBlOGEzZTVhLi4y
MDYyMTljNGMwYTAwODRhMzY3NmIwMGIwZjg5OWExZDAxNmE4OWYzIDEwMDc1NQotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKQEAgLTQw
NSwxMCArNDA1LDkgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KFBvcnQpOgogCiAgICAgICAgICAgICAg
ICAgaWYgKGRlYnVnX210aW1lID4gcmVsZWFzZV9tdGltZSBhbmQgY29uZmlndXJhdGlvbiA9PSAn
UmVsZWFzZScgb3IKICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZV9tdGltZSA+IGRlYnVnX210
aW1lIGFuZCBjb25maWd1cmF0aW9uID09ICdEZWJ1ZycpOgotICAgICAgICAgICAgICAgICAgICBf
bG9nLndhcm5pbmcoJ1lvdSBhcmUgbm90IHJ1bm5pbmcgdGhlIG1vc3QgJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3JlY2VudCBEdW1wUmVuZGVyVHJlZSBiaW5hcnkuIFlvdSBu
ZWVkIHRvICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzIC0tZGVidWcg
b3Igbm90IHRvIHNlbGVjdCBiZXR3ZWVuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdEZWJ1ZyBhbmQgUmVsZWFzZS4nKQorICAgICAgICAgICAgICAgICAgICBtb3N0X3JlY2Vu
dF9iaW5hcnkgPSAnUmVsZWFzZScgaWYgY29uZmlndXJhdGlvbiA9PSAnRGVidWcnIGVsc2UgJ0Rl
YnVnJworICAgICAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ1lvdSBhcmUgcnVubmluZyB0
aGUgJXMgYmluYXJ5LiBIb3dldmVyIHRoZSAlcyBiaW5hcnkgYXBwZWFycyB0byBiZSBtb3JlIHJl
Y2VudC4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBwYXNzIC0t
JXMuJywgY29uZmlndXJhdGlvbiwgbW9zdF9yZWNlbnRfYmluYXJ5LCBtb3N0X3JlY2VudF9iaW5h
cnkubG93ZXIoKSkKICAgICAgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCcnKQogICAgICAg
ICAgICAgIyBUaGlzIHdpbGwgZmFpbCBpZiB3ZSBkb24ndCBoYXZlIGJvdGggYSBkZWJ1ZyBhbmQg
cmVsZWFzZSBiaW5hcnkuCiAgICAgICAgICAgICAjIFRoYXQncyBmaW5lIGJlY2F1c2UsIGluIHRo
aXMgY2FzZSwgd2UgbXVzdCBhbHJlYWR5IGJlIHJ1bm5pbmcgdGhlCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJv
aWQucHkKaW5kZXggZDJiMjY4NzBlYThjMDhlNzkzOGVjMDQzOGUyZDdiNzNlY2YyOTZlMi4uZDQ4
MDVmZmFiNzYxYTZkZDUxNzNkODdhNmJlZWM4MDJhMWU4ZmZiZCAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5k
cm9pZC5weQpAQCAtMzEsNiArMzEsOCBAQCBpbXBvcnQgY29weQogaW1wb3J0IGxvZ2dpbmcKIGlt
cG9ydCBvcwogaW1wb3J0IHJlCitpbXBvcnQgc2V0cworaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9y
dCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCiAKQEAgLTU0LDcgKzU2LDYgQEAgQ09NTUFORF9MSU5F
X0ZJTEUgPSBERVZJQ0VfU09VUkNFX1JPT1RfRElSICsgJ2Nocm9tZS1uYXRpdmUtdGVzdHMtY29t
bWFuZC1saW5lJwogIyBhbmQgQ2hyb21pdW0ncyB3ZWJraXQvc3VwcG9ydC9wbGF0Zm9ybV9zdXBw
b3J0X2FuZHJvaWQuY2MuCiBERVZJQ0VfRFJUX0RJUiA9IERFVklDRV9TT1VSQ0VfUk9PVF9ESVIg
KyAnZHJ0LycKIERFVklDRV9GT1JXQVJERVJfUEFUSCA9IERFVklDRV9EUlRfRElSICsgJ2Zvcndh
cmRlcicKLURFVklDRV9EUlRfU1RBTVBfUEFUSCA9IERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5k
ZXJUcmVlLnN0YW1wJwogCiBEUlRfQVBQX1BBQ0tBR0UgPSAnb3JnLmNocm9taXVtLm5hdGl2ZV90
ZXN0JwogRFJUX0FDVElWSVRZX0ZVTExfTkFNRSA9IERSVF9BUFBfUEFDS0FHRSArICcvLkNocm9t
ZU5hdGl2ZVRlc3RBY3Rpdml0eScKQEAgLTEzNyw2ICsxMzgsOCBAQCBURVNUX1JFU09VUkNFU19U
T19QVVNIID0gWwogICAgICdjb21wb3NpdGluZy9yZXNvdXJjZXMvdmlkZW8ubXA0JywKIF0KIAor
TUQ1U1VNX0RFVklDRV9GSUxFX05BTUUgPSAnbWQ1c3VtX2JpbicKK01ENVNVTV9ERVZJQ0VfUEFU
SCA9ICcvZGF0YS9sb2NhbC90bXAvJyArIE1ENVNVTV9ERVZJQ0VfRklMRV9OQU1FCiAKIGNsYXNz
IENocm9taXVtQW5kcm9pZFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICBwb3J0X25h
bWUgPSAnY2hyb21pdW0tYW5kcm9pZCcKQEAgLTMwNiw2ICszMDksOCBAQCBjbGFzcyBDaHJvbWl1
bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAKIAogY2xhc3MgQ2hyb21pdW1B
bmRyb2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgorICAgIF9kYXRhX2FscmVhZHlfcHVzaGVkX2Zv
cl93b3JrZXIgPSBzZXRzLlNldCgpCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgd29y
a2VyX251bWJlciwgcGl4ZWxfdGVzdHMsIG5vX3RpbWVvdXQ9RmFsc2UpOgogICAgICAgICBzdXBl
cihDaHJvbWl1bUFuZHJvaWREcml2ZXIsIHNlbGYpLl9faW5pdF9fKHBvcnQsIHdvcmtlcl9udW1i
ZXIsIHBpeGVsX3Rlc3RzLCBub190aW1lb3V0KQogICAgICAgICBzZWxmLl9jbWRfbGluZSA9IE5v
bmUKQEAgLTMxOSwxMSArMzI0LDI2IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZERyaXZlcihkcml2
ZXIuRHJpdmVyKToKICAgICAgICAgc2VsZi5fb3JpZ2luYWxfZ292ZXJub3JzID0ge30KICAgICAg
ICAgc2VsZi5fZGV2aWNlX3NlcmlhbCA9IHBvcnQuX2dldF9kZXZpY2Vfc2VyaWFsKHdvcmtlcl9u
dW1iZXIpCiAgICAgICAgIHNlbGYuX2FkYl9jb21tYW5kID0gWydhZGInLCAnLXMnLCBzZWxmLl9k
ZXZpY2Vfc2VyaWFsXQorICAgICAgICBzZWxmLl9zZXR1cF9tZDVzdW0oKQorICAgICAgICBpZiBu
b3Qgd29ya2VyX251bWJlciBpbiBDaHJvbWl1bUFuZHJvaWREcml2ZXIuX2RhdGFfYWxyZWFkeV9w
dXNoZWRfZm9yX3dvcmtlcjoKKyAgICAgICAgICAgIHNlbGYuX3B1c2hfZXhlY3V0YWJsZSgpCisg
ICAgICAgICAgICBzZWxmLl9wdXNoX2ZvbnRzKCkKKyAgICAgICAgICAgIHNlbGYuX3B1c2hfdGVz
dF9yZXNvdXJjZXMoKQorICAgICAgICAgICAgQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9kYXRhX2Fs
cmVhZHlfcHVzaGVkX2Zvcl93b3JrZXIuYWRkKHdvcmtlcl9udW1iZXIpCiAKICAgICBkZWYgX19k
ZWxfXyhzZWxmKToKICAgICAgICAgc2VsZi5fdGVhcmRvd25fcGVyZm9ybWFuY2UoKQogICAgICAg
ICBzdXBlcihDaHJvbWl1bUFuZHJvaWREcml2ZXIsIHNlbGYpLl9fZGVsX18oKQogCisgICAgZGVm
IF9zZXR1cF9tZDVzdW0oc2VsZik6CisgICAgICAgIHNlbGYuX21kNXN1bV9wYXRoID0gJyVzL291
dC8lcy8lcycgJSAoCisgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5wYXRoX2Zyb21fY2hyb21p
dW1fYmFzZSgpLCBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgTUQ1U1VN
X0RFVklDRV9GSUxFX05BTUUpCisgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhzZWxmLl9t
ZDVzdW1fcGF0aCkKKyAgICAgICAgaWYgc2VsZi5fZmlsZV9leGlzdHNfb25fZGV2aWNlKE1ENVNV
TV9ERVZJQ0VfUEFUSCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbm90IHNlbGYu
X3B1c2hfdG9fZGV2aWNlKHNlbGYuX21kNXN1bV9wYXRoLCBNRDVTVU1fREVWSUNFX1BBVEgpOgor
ICAgICAgICAgICAgX2xvZy5lcnJvcignQ291bGQgbm90IHB1c2ggbWQ1c3VtIHRvIGRldmljZScp
CisKICAgICBkZWYgX3NldHVwX3Rlc3Qoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2hhc19zZXR1
cDoKICAgICAgICAgICAgIHJldHVybgpAQCAtMzQwLDEwICszNjAsNiBAQCBjbGFzcyBDaHJvbWl1
bUFuZHJvaWREcml2ZXIoZHJpdmVyLkRyaXZlcik6CiAgICAgICAgIHNlbGYuX3J1bl9hZGJfY29t
bWFuZChbJ3NoZWxsJywgJ21rZGlyJywgJy1wJywgREVWSUNFX0RSVF9ESVJdKQogICAgICAgICBz
ZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcsICdjaG1vZCcsICc3NzcnLCBERVZJQ0VfRFJU
X0RJUl0pCiAKLSAgICAgICAgc2VsZi5fcHVzaF9leGVjdXRhYmxlKCkKLSAgICAgICAgc2VsZi5f
cHVzaF9mb250cygpCi0gICAgICAgIHNlbGYuX3N5bmNocm9uaXplX2RhdGV0aW1lKCkKLQogICAg
ICAgICAjIERlbGV0ZSB0aGUgZGlzayBjYWNoZSBpZiBhbnkgdG8gZW5zdXJlIGEgY2xlYW4gdGVz
dCBydW4uCiAgICAgICAgICMgVGhpcyBpcyBsaWtlIHdoYXQncyBkb25lIGluIENocm9taXVtUG9y
dC5zZXR1cF90ZXN0X3J1biBidXQgb24gdGhlIGRldmljZS4KICAgICAgICAgc2VsZi5fcnVuX2Fk
Yl9jb21tYW5kKFsnc2hlbGwnLCAncm0nLCAnLXInLCBEUlRfQVBQX0NBQ0hFX0RJUl0pCkBAIC0z
NTcsMjkgKzM3MywzNCBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVyLkRyaXZl
cik6CiAgICAgZGVmIF9hYm9ydChzZWxmLCBtZXNzYWdlKToKICAgICAgICAgcmFpc2UgQXNzZXJ0
aW9uRXJyb3IoJ1slc10gJXMnICUgKHNlbGYuX2RldmljZV9zZXJpYWwsIG1lc3NhZ2UpKQogCisg
ICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfZXh0cmFjdF9oYXNoZXNfZnJvbV9tZDVzdW1fb3V0
cHV0KG1kNXN1bV9vdXRwdXQpOgorICAgICAgICBhc3NlcnQgbWQ1c3VtX291dHB1dAorICAgICAg
ICByZXR1cm4gW2xpbmUuc3BsaXQoJyAgJylbMF0gZm9yIGxpbmUgaW4gbWQ1c3VtX291dHB1dF0K
KworICAgIGRlZiBfcHVzaF9maWxlX2lmX25lZWRlZChzZWxmLCBob3N0X2ZpbGUsIGRldmljZV9m
aWxlKToKKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKGhvc3RfZmlsZSkKKyAgICAgICAg
ZGV2aWNlX2hhc2hlcyA9IHNlbGYuX2V4dHJhY3RfaGFzaGVzX2Zyb21fbWQ1c3VtX291dHB1dCgK
KyAgICAgICAgICAgICAgICBzdWJwcm9jZXNzLlBvcGVuKHNlbGYuX2FkYl9jb21tYW5kICsgWydz
aGVsbCcsIE1ENVNVTV9ERVZJQ0VfUEFUSCwgZGV2aWNlX2ZpbGVdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuc3Rkb3V0KQorICAgICAg
ICBob3N0X2hhc2hlcyA9IHNlbGYuX2V4dHJhY3RfaGFzaGVzX2Zyb21fbWQ1c3VtX291dHB1dCgK
KyAgICAgICAgICAgICAgICBzdWJwcm9jZXNzLlBvcGVuKGFyZ3M9Wyclc19ob3N0JyAlIHNlbGYu
X21kNXN1bV9wYXRoLCBob3N0X2ZpbGVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuc3Rkb3V0KQorICAgICAgICBpZiBob3N0X2hhc2hl
cyBhbmQgZGV2aWNlX2hhc2hlcyA9PSBob3N0X2hhc2hlczoKKyAgICAgICAgICAgIHJldHVybgor
ICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShob3N0X2ZpbGUsIGRldmljZV9maWxlKQorCiAg
ICAgZGVmIF9wdXNoX2V4ZWN1dGFibGUoc2VsZik6CisgICAgICAgIHNlbGYuX3B1c2hfZmlsZV9p
Zl9uZWVkZWQoc2VsZi5fcG9ydC5fcGF0aF90b19mb3J3YXJkZXIoKSwgREVWSUNFX0ZPUldBUkRF
Ul9QQVRIKQorICAgICAgICBzZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYuX3BvcnQuX2J1
aWxkX3BhdGgoJ0R1bXBSZW5kZXJUcmVlLnBhaycpLCBERVZJQ0VfRFJUX0RJUiArICdEdW1wUmVu
ZGVyVHJlZS5wYWsnKQorICAgICAgICBzZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYuX3Bv
cnQuX2J1aWxkX3BhdGgoJ0R1bXBSZW5kZXJUcmVlX3Jlc291cmNlcycpLCBERVZJQ0VfRFJUX0RJ
UiArICdEdW1wUmVuZGVyVHJlZV9yZXNvdXJjZXMnKQorICAgICAgICBzZWxmLl9wdXNoX2ZpbGVf
aWZfbmVlZGVkKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ2FuZHJvaWRfbWFpbl9mb250cy54bWwn
KSwgREVWSUNFX0RSVF9ESVIgKyAnYW5kcm9pZF9tYWluX2ZvbnRzLnhtbCcpCisgICAgICAgIHNl
bGYuX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnYW5kcm9pZF9m
YWxsYmFja19mb250cy54bWwnKSwgREVWSUNFX0RSVF9ESVIgKyAnYW5kcm9pZF9mYWxsYmFja19m
b250cy54bWwnKQorICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWyd1bmluc3RhbGwnLCBE
UlRfQVBQX1BBQ0tBR0VdKQogICAgICAgICBkcnRfaG9zdF9wYXRoID0gc2VsZi5fcG9ydC5fcGF0
aF90b19kcml2ZXIoKQotICAgICAgICBmb3J3YXJkZXJfaG9zdF9wYXRoID0gc2VsZi5fcG9ydC5f
cGF0aF90b19mb3J3YXJkZXIoKQotICAgICAgICBob3N0X3N0YW1wID0gaW50KGZsb2F0KG1heChv
cy5zdGF0KGRydF9ob3N0X3BhdGgpLnN0X210aW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcy5zdGF0KGZvcndhcmRlcl9ob3N0X3BhdGgpLnN0X210aW1lKSkpCi0gICAg
ICAgIGRldmljZV9zdGFtcCA9IGludChmbG9hdChzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWwotICAg
ICAgICAgICAgJ3NoZWxsJywgJ2NhdCAlcyAyPi9kZXYvbnVsbCB8fCBlY2hvIDAnICUgREVWSUNF
X0RSVF9TVEFNUF9QQVRIXSkpKQotICAgICAgICBpZiBkZXZpY2Vfc3RhbXAgIT0gaG9zdF9zdGFt
cDoKLSAgICAgICAgICAgIHNlbGYuX2xvZ19kZWJ1ZygnUHVzaGluZyBleGVjdXRhYmxlJykKLSAg
ICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKGZvcndhcmRlcl9ob3N0X3BhdGgsIERFVklD
RV9GT1JXQVJERVJfUEFUSCkKLSAgICAgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3Vu
aW5zdGFsbCcsIERSVF9BUFBfUEFDS0FHRV0pCi0gICAgICAgICAgICBpbnN0YWxsX3Jlc3VsdCA9
IHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ2luc3RhbGwnLCBkcnRfaG9zdF9wYXRoXSkKLSAgICAg
ICAgICAgIGlmIGluc3RhbGxfcmVzdWx0LmZpbmQoJ1N1Y2Nlc3MnKSA9PSAtMToKLSAgICAgICAg
ICAgICAgICBzZWxmLl9hYm9ydCgnRmFpbGVkIHRvIGluc3RhbGwgJXMgb250byBkZXZpY2U6ICVz
JyAlIChkcnRfaG9zdF9wYXRoLCBpbnN0YWxsX3Jlc3VsdCkpCi0gICAgICAgICAgICBzZWxmLl9w
dXNoX3RvX2RldmljZShzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdEdW1wUmVuZGVyVHJlZS5wYWsn
KSwgREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWUucGFrJykKLSAgICAgICAgICAgIHNl
bGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ0R1bXBSZW5kZXJUcmVl
X3Jlc291cmNlcycpLCBERVZJQ0VfRFJUX0RJUiArICdEdW1wUmVuZGVyVHJlZV9yZXNvdXJjZXMn
KQotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fcG9ydC5fYnVpbGRfcGF0
aCgnYW5kcm9pZF9tYWluX2ZvbnRzLnhtbCcpLCBERVZJQ0VfRFJUX0RJUiArICdhbmRyb2lkX21h
aW5fZm9udHMueG1sJykKLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYuX3Bv
cnQuX2J1aWxkX3BhdGgoJ2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sJyksIERFVklDRV9EUlRf
RElSICsgJ2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sJykKLSAgICAgICAgICAgICMgVmVyc2lv
biBjb250cm9sIG9mIHRlc3QgcmVzb3VyY2VzIGlzIGRlcGVuZGVudCBvbiBleGVjdXRhYmxlcywK
LSAgICAgICAgICAgICMgYmVjYXVzZSB3ZSB3aWxsIGFsd2F5cyByZWJ1aWxkIGV4ZWN1dGFibGVz
IHdoZW4gcmVzb3VyY2VzIGFyZQotICAgICAgICAgICAgIyB1cGRhdGVkLgotICAgICAgICAgICAg
c2VsZi5fcHVzaF90ZXN0X3Jlc291cmNlcygpCi0gICAgICAgICAgICBzZWxmLl9ydW5fYWRiX2Nv
bW1hbmQoWydzaGVsbCcsICdlY2hvICVkID4lcycgJSAoaG9zdF9zdGFtcCwgREVWSUNFX0RSVF9T
VEFNUF9QQVRIKV0pCisgICAgICAgIGluc3RhbGxfcmVzdWx0ID0gc2VsZi5fcnVuX2FkYl9jb21t
YW5kKFsnaW5zdGFsbCcsIGRydF9ob3N0X3BhdGhdKQorICAgICAgICBpZiBpbnN0YWxsX3Jlc3Vs
dC5maW5kKCdTdWNjZXNzJykgPT0gLTE6CisgICAgICAgICAgICBzZWxmLl9hYm9ydCgnRmFpbGVk
IHRvIGluc3RhbGwgJXMgb250byBkZXZpY2U6ICVzJyAlIChkcnRfaG9zdF9wYXRoLCBpbnN0YWxs
X3Jlc3VsdCkpCiAKICAgICBkZWYgX3B1c2hfZm9udHMoc2VsZik6CiAgICAgICAgIGlmIG5vdCBz
ZWxmLl9jaGVja192ZXJzaW9uKERFVklDRV9GT05UU19ESVIsIEZPTlRfRklMRVNfVkVSU0lPTik6
CkBAIC0zOTQsMTggKzQxNSw3IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZERyaXZlcihkcml2ZXIu
RHJpdmVyKToKICAgICBkZWYgX3B1c2hfdGVzdF9yZXNvdXJjZXMoc2VsZik6CiAgICAgICAgIHNl
bGYuX2xvZ19kZWJ1ZygnUHVzaGluZyB0ZXN0IHJlc291cmNlcycpCiAgICAgICAgIGZvciByZXNv
dXJjZSBpbiBURVNUX1JFU09VUkNFU19UT19QVVNIOgotICAgICAgICAgICAgc2VsZi5fcHVzaF90
b19kZXZpY2Uoc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkgKyAnLycgKyByZXNvdXJjZSwg
REVWSUNFX0xBWU9VVF9URVNUU19ESVIgKyByZXNvdXJjZSkKLQotICAgIGRlZiBfc3luY2hyb25p
emVfZGF0ZXRpbWUoc2VsZik6Ci0gICAgICAgICMgVGhlIGRhdGUvdGltZSBiZXR3ZWVuIGhvc3Qg
YW5kIGRldmljZSBtYXkgbm90IGJlIHN5bmNocm9uaXplZC4KLSAgICAgICAgIyBXZSBuZWVkIHRv
IG1ha2UgdGhlbSBzeW5jaHJvbml6ZWQsIG90aGVyd2lzZSB0ZXN0cyBtaWdodCBmYWlsLgotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICAjIEdldCBzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEgMDA6
MDA6MDAgVVRDLgotICAgICAgICAgICAgaG9zdF9kYXRldGltZSA9IHNlbGYuX3BvcnQuX2V4ZWN1
dGl2ZS5ydW5fY29tbWFuZChbJ2RhdGUnLCAnLXUnLCAnKyVzJ10pCi0gICAgICAgIGV4Y2VwdDoK
LSAgICAgICAgICAgICMgUmVzZXQgdG8gMTk3MC0wMS0wMSAwMDowMDowMCBVVEMuCi0gICAgICAg
ICAgICBob3N0X2RhdGV0aW1lID0gMAotICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydz
aGVsbCcsICdkYXRlIC11ICVzJyAlIChob3N0X2RhdGV0aW1lKV0pCisgICAgICAgICAgICBzZWxm
Ll9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy8n
ICsgcmVzb3VyY2UsIERFVklDRV9MQVlPVVRfVEVTVFNfRElSICsgcmVzb3VyY2UpCiAKICAgICBk
ZWYgX2NoZWNrX3ZlcnNpb24oc2VsZiwgZGlyLCB2ZXJzaW9uKToKICAgICAgICAgYXNzZXJ0KGRp
ci5lbmRzd2l0aCgnLycpKQpAQCAtNjY0LDggKzY3NCw2IEBAIGNsYXNzIENocm9taXVtQW5kcm9p
ZERyaXZlcihkcml2ZXIuRHJpdmVyKToKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAg
IGN1cnJlbnRfY2hhciA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfc3Rkb3V0KGRlYWRsaW5l
LCAxKQogICAgICAgICAgICAgaWYgY3VycmVudF9jaGFyID09ICcgJzoKLSAgICAgICAgICAgICAg
ICBpZiBsYXN0X2NoYXIgPT0gJyMnOgorICAgICAgICAgICAgICAgIGlmIGxhc3RfY2hhciBpbiAo
JyMnLCAnJCcpOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBp
ZiBsYXN0X2NoYXIgPT0gJyQnOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25F
cnJvcignQWRiZCBpcyBub3QgcnVubmluZyBhcyByb290JykKICAgICAgICAgICAgIGxhc3RfY2hh
ciA9IGN1cnJlbnRfY2hhcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ1Y2FjMDZiNWFlZGU1Yjk4YjI4MGNjYTRhOWRkMjhh
ZjBhMjY0NzIuLmUwYmZmYWM0ODQ3NjllYzgzNzIzMDBkODMyOTkwODA3OTFkZjBjZmYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxMi0wOS0xMCAgUGhpbGlwcGUgTGlhcmQgIDxwbGlhcmRAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgTGF5b3V0VGVzdHMgb24gbm9uLXJvb3RlZCBB
bmRyb2lkIGRldmljZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTM0NgorCisgICAgICAgIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3N1YnJl
c291cmNlLXRlc3QuanMgd2FzIGFzc3VtaW5nIHRoYXQgdGhlCisgICAgICAgIGNsaWVudCBhbmQg
c2VydmVyIGNsb2NrcyBhcmUgdGhlIHNhbWUgd2hpY2ggaXMgbm8gbG9uZ2VyIHRydWUgc2luY2Ug
d2UKKyAgICAgICAgYXJlIGdldHRpbmcgcmlkIG9mIGhvc3QvZGV2aWNlIGNsb2NrIHN5bmNocm9u
aXphdGlvbi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2NhY2hlLXNp
bXVsYXRvci5jZ2k6CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY3VycmVu
dC10aW1lLmNnaTogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMv
c3VicmVzb3VyY2UtdGVzdC5qczoKKyAgICAgICAgKGdldFNlcnZlckRhdGUpOgorICAgICAgICAo
bmV4dFRlc3QpOgorICAgICAgICAodGVzdENvbXBsZXRlKToKKyAgICAgICAgKHJ1blRlc3RzKToK
KwogMjAxMi0wOS0xMCAgSsOhbm9zIEJhZGljcyAgPGpiYWRpY3NAaW5mLnUtc3plZ2VkLmh1Pgog
CiAgICAgICAgIFtRdF0gR2FyZGVuaW5nIGFmdGVyIHIxMjgwNDIuIEFkZGVkIGJhc2VsaW5lIHRv
IG5ld2x5IGFkZGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jl
c291cmNlcy9jdXJyZW50LXRpbWUuY2dpIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9y
ZXNvdXJjZXMvY3VycmVudC10aW1lLmNnaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTQyNjVmMzczMWVhMTgzOThj
OTU0ZjJjODFlY2VjMjk2ZWM2MzAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY3VycmVudC10aW1lLmNnaQpAQCAtMCwwICsxLDUgQEAK
KyMhL3Vzci9iaW4vcGVybCAtdworCitwcmludCAiQ29udGVudC10eXBlOiB0ZXh0L3BsYWluXG4i
OworcHJpbnQgIlxuIjsKK3ByaW50IHRpbWUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3N1YnJlc291cmNlLXRlc3QuanMgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9zdWJyZXNvdXJjZS10ZXN0LmpzCmluZGV4IGNl
NGJiMTI5NTAzMjZhYWMyNmY3Yzk5YWQzMGE0MTJhNDdmOWM5NjMuLmU0YzhmZTUyNTZhMGQ0MjVi
MGU4YzliYTc1YzdkZmY0ZDVlYzFmMWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY2FjaGUvcmVzb3VyY2VzL3N1YnJlc291cmNlLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3VyY2UtdGVzdC5qcwpAQCAtMjUsNiAr
MjUsMjIgQEAgdmFyIGNvbnNvbGVEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29uc29sZURpdik7CiBmcmFtZTIub25sb2FkID0g
ZnVuY3Rpb24gKCkgeyBsb2FkZWRGcmFtZUNvdW50Kys7IH0KIAorZnVuY3Rpb24gZ2V0U2VydmVy
RGF0ZSgpCit7CisgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHZhciB0
MCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOworICAgIHJlcS5vcGVuKCdHRVQnLCAiL2NhY2hlL3Jl
c291cmNlcy9jdXJyZW50LXRpbWUuY2dpIiwgZmFsc2UgLyogYmxvY2tpbmcgKi8pOworICAgIHJl
cS5zZW5kKCk7CisgICAgdmFyIHNlcnZlclRvQ2xpZW50VGltZSA9IChuZXcgRGF0ZSgpLmdldFRp
bWUoKSAtIHQwKSAvIDI7CisgICAgaWYgKHJlcS5zdGF0dXMgIT0gMjAwKSB7CisgICAgICAgIGNv
bnNvbGUubG9nKCJ1bmV4cGVjdGVkIHN0YXR1cyBjb2RlICIgKyByZXEuc3RhdHVzICsgIiwgZXhw
ZWN0ZWQgMjAwLiIpOworICAgICAgICByZXR1cm4gbmV3IERhdGUoKTsKKyAgICB9CisgICAgcmV0
dXJuIG5ldyBEYXRlKChwYXJzZUludChyZXEucmVzcG9uc2VUZXh0KSAqIDEwMDApICsgc2VydmVy
VG9DbGllbnRUaW1lKTsKK30KKwordmFyIHNlcnZlckNsaWVudFRpbWVEZWx0YSA9IGdldFNlcnZl
ckRhdGUoKS5nZXRUaW1lKCkgLSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKKwogZnVuY3Rpb24gbG9h
ZFRlc3RGcmFtZShmcmFtZSwgdGVzdFNwZWMpCiB7CiAgICAgdmFyIGZpcnN0ID0gdHJ1ZTsKQEAg
LTY3LDcgKzgzLDcgQEAgZnVuY3Rpb24gbmV4dFRlc3QoKQogewogICAgIHZhciB0ZXN0U3BlYyA9
IHRlc3RzW2N1cnJlbnRUZXN0XTsKICAgICB1bmlxdWVJZCA9IE1hdGguZmxvb3IoMTAwMDAwMDAw
ICogTWF0aC5yYW5kb20oKSk7Ci0gICAgbm93ID0gbmV3IERhdGUoKTsKKyAgICBub3cgPSBuZXcg
RGF0ZShuZXcgRGF0ZSgpLmdldFRpbWUoKSArIHNlcnZlckNsaWVudFRpbWVEZWx0YSk7CiAgICAg
aWYgKCF0ZXN0U3BlYykgewogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKQEAgLTgwLDIyICs5NiwyMiBAQCBmdW5jdGlv
biBuZXh0VGVzdCgpCiBmdW5jdGlvbiB0ZXN0Q29tcGxldGUodGVzdFNwZWMpCiB7CiAgICAgdmFy
IGxpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICB2YXIgcmVzdWx0ID0g
ZnJhbWUxLmNvbnRlbnRXaW5kb3cucmFuZG9tTnVtYmVyID09IGZyYW1lMi5jb250ZW50V2luZG93
LnJhbmRvbU51bWJlciA/ICdDYWNoZWQnIDogJ1VuY2FjaGVkJzsgICAgCisgICAgdmFyIHJlc3Vs
dCA9IGZyYW1lMS5jb250ZW50V2luZG93LnJhbmRvbU51bWJlciA9PSBmcmFtZTIuY29udGVudFdp
bmRvdy5yYW5kb21OdW1iZXIgPyAnQ2FjaGVkJyA6ICdVbmNhY2hlZCc7CiAgICAgdmFyIHBhc3Nl
ZCA9IHJlc3VsdCA9PSB0ZXN0U3BlYy5leHBlY3RlZFJlc3VsdDsKIAogICAgIGlmICh0ZXN0U3Bl
Yy5kZXNjcmlwdGlvbikKICAgICAgICAgbGluZS5pbm5lckhUTUwgKz0gdGVzdFNwZWMuZGVzY3Jp
cHRpb247CiAgICAgZWxzZSB7Ci0gICAgICAgIGZvciAodmFyIGhlYWRlciBpbiB0ZXN0U3BlYy50
ZXN0SGVhZGVycykgCisgICAgICAgIGZvciAodmFyIGhlYWRlciBpbiB0ZXN0U3BlYy50ZXN0SGVh
ZGVycykKICAgICAgICAgICAgIGxpbmUuaW5uZXJIVE1MICs9IGhlYWRlciArICI6ICIgKyB0ZXN0
U3BlYy50ZXN0SGVhZGVyc1toZWFkZXJdICsgIjsgIjsKICAgICB9CiAgICAgaWYgKHRlc3RTcGVj
LmRlbGF5KQogICAgICAgICBsaW5lLmlubmVySFRNTCArPSAiW2RlbGF5PSIgKyB0ZXN0U3BlYy5k
ZWxheSArICJzXSAiCiAgICAgbGluZS5pbm5lckhUTUwgKz0gIiAgKHJlc3VsdD0iICsgcmVzdWx0
ICsgIiBleHBlY3RlZD0iICsgdGVzdFNwZWMuZXhwZWN0ZWRSZXN1bHQgKyAiKSAiOwogICAgIGxp
bmUuaW5uZXJIVE1MICs9IHBhc3NlZCA/ICI8Zm9udCBjb2xvcj1ncmVlbj5QQVNTPC9mb250PiAi
IDogIjxmb250IGNvbG9yPXJlZD5GQUlMPC9mb250PiAiCi0gICAgICAgIAorCiAgICAgY29uc29s
ZURpdi5hcHBlbmRDaGlsZChsaW5lKTsKLSAgICAKKwogICAgIG5leHRUZXN0KCk7CiB9CiAKQEAg
LTEwNiw1ICsxMjIsNCBAQCBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgICAgIG5leHRUZXN0KCk7
CiAgICAgZWxzZQogICAgICAgICBzZXRUaW1lb3V0KHJ1blRlc3RzLCAxMDApOwotCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163137</attachid>
            <date>2012-09-10 08:22:40 -0700</date>
            <delta_ts>2012-09-11 02:47:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95346-20120910172215.patch</filename>
            <type>text/plain</type>
            <size>17207</size>
            <attacher name="Philippe Liard">pliard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MDYzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2YyNTNkYzUzZDE4Y2Q5NTBiMDZkZmZiMGViNjE4NDRh
ZjE1NDRiNC4uODIyYWQyMDE1YThhZDE0Y2Y0MjI5Mjk2ZWIyOTlkYmE2OGFlZGVjMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDEyLTA5LTEwICBQaGlsaXBwZSBMaWFyZCAgPHBsaWFyZEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3VwcG9ydCBMYXlvdXRUZXN0cyBvbiBub24tcm9vdGVkIGRldmljZXMgZm9yIENo
cm9taXVtIEFuZHJvaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTM0NgorCisgICAgICAgIFdlIHdlcmUgcmVxdWlyaW5nIHJvb3QgcGVybWlzc2lv
bnMgdG8gc3luYyByZXNvdXJjZSBmaWxlcyB3aXRoIHRoZQorICAgICAgICBkZXZpY2UgYnkgY29t
cGFyaW5nIGhvc3QgYW5kIGRldmljZSBmaWxlcycgdGltZXN0YW1wIGFmdGVyIHdlCisgICAgICAg
IHN5bmNocm9uaXplZCB0aGUgZGV2aWNlIGFuZCBob3N0IGNsb2Nrcy4KKyAgICAgICAgV2Ugbm93
IHJlbHkgb24gbWQ1c3VtIHByb3ZpZGVkIGJ5IENocm9taXVtIHRvIGhhbmRsZSBkYXRhIGZpbGVz
CisgICAgICAgIHN5bmNocm9uaXphdGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgIChDaHJvbWl1bVBvcnQuX2No
ZWNrX2RyaXZlcl9idWlsZF91cF90b19kYXRlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHk6CisgICAgICAgIChDaHJvbWl1
bUFuZHJvaWREcml2ZXIuX19pbml0X18pOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVy
Ll9zZXR1cF90ZXN0KToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF9leGVj
dXRhYmxlKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF90ZXN0X3Jlc291
cmNlcyk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX3JlYWRfcHJvbXB0KToKKwog
MjAxMi0wOS0xMCAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1bmcuY29t
PgogCiAgICAgICAgIFtHdGtdIGZhaWx1cmUgdG8gYnVpbGQgamhidWlsZCBkZXBlbmRlbmNpZXMg
d2l0aCBjdXBzIDEuNgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKaW5kZXggYWU4NmI1N2ZmZWQ0YTliZTVj
YmYzZDE0YjQ2NDBkNmUyNWNlMDk0ZS4uZGY2OGNlZDk0NDU5ODQ3ZDVmNWJjYjU1MWQxMWZkZjc5
ZGIwM2U4YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUu
Z3lwL0R1bXBSZW5kZXJUcmVlLmd5cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwCkBAIC0xMjEsMTEgKzEyMSwxMSBAQAogICAg
ICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwOmlu
c3BlY3Rvcl9yZXNvdXJjZXMnLAogICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwOndlYmtpdCcsCiAgICAgICAgICAgICAgICAgJzwoc291cmNl
X2RpcikvV1RGL1dURi5neXAvV1RGLmd5cDp3dGYnLAorICAgICAgICAgICAgICAgICc8KGNocm9t
aXVtX3NyY19kaXIpL2Jhc2UvYmFzZS5neXA6dGVzdF9zdXBwb3J0X2Jhc2UnLAogICAgICAgICAg
ICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2J1aWxkL3RlbXBfZ3lwL2dvb2dsZXVybC5neXA6
Z29vZ2xldXJsJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9w
YXJ0eS9pY3UvaWN1Lmd5cDppY3V1YycsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3Jj
X2RpcikvdGhpcmRfcGFydHkvbWVzYS9tZXNhLmd5cDpvc21lc2EnLAogICAgICAgICAgICAgICAg
ICc8KGNocm9taXVtX3NyY19kaXIpL3Y4L3Rvb2xzL2d5cC92OC5neXA6djgnLAotICAgICAgICAg
ICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2Jhc2UvYmFzZS5neXA6dGVzdF9zdXBwb3J0X2Jh
c2UnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3dlYmtpdC9zdXBwb3J0
L3dlYmtpdF9zdXBwb3J0Lmd5cDpibG9iJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9z
cmNfZGlyKS93ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5neXA6d2Via2l0X3N1cHBvcnQn
LAogICAgICAgICAgICAgXSwKQEAgLTI4Miw4ICsyODIsOSBAQAogICAgICAgICAgICAgICAgICAg
ICAndHlwZSc6ICdzaGFyZWRfbGlicmFyeScsCiAgICAgICAgICAgICAgICAgICAgICdkZXBlbmRl
bmNpZXMnOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9i
YXNlL2Jhc2UuZ3lwOnRlc3Rfc3VwcG9ydF9iYXNlJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICc8KGNocm9taXVtX3NyY19kaXIpL3Rvb2xzL2FuZHJvaWQvZm9yd2FyZGVyL2ZvcndhcmRlci5n
eXA6Zm9yd2FyZGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19k
aXIpL3Rlc3RpbmcvYW5kcm9pZC9uYXRpdmVfdGVzdC5neXA6bmF0aXZlX3Rlc3RfbmF0aXZlX2Nv
ZGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdG9vbHMv
YW5kcm9pZC9mb3J3YXJkZXIvZm9yd2FyZGVyLmd5cDpmb3J3YXJkZXInLAorICAgICAgICAgICAg
ICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdG9vbHMvYW5kcm9pZC9tZDVzdW0vbWQ1
c3VtLmd5cDptZDVzdW0nLAogICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAg
ICAgICAnZGVwZW5kZW5jaWVzISc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICdJbWFnZURp
ZmYnLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW0ucHkKaW5kZXggZTY2YjBhMjA0MzE5ZDFmODg2OTRlMzc2YzcwYWNjN2EwZThhM2U1
YS4uMjA2MjE5YzRjMGEwMDg0YTM2NzZiMDBiMGY4OTlhMWQwMTZhODlmMyAxMDA3NTUKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBA
IC00MDUsMTAgKzQwNSw5IEBAIGNsYXNzIENocm9taXVtUG9ydChQb3J0KToKIAogICAgICAgICAg
ICAgICAgIGlmIChkZWJ1Z19tdGltZSA+IHJlbGVhc2VfbXRpbWUgYW5kIGNvbmZpZ3VyYXRpb24g
PT0gJ1JlbGVhc2UnIG9yCiAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VfbXRpbWUgPiBkZWJ1
Z19tdGltZSBhbmQgY29uZmlndXJhdGlvbiA9PSAnRGVidWcnKToKLSAgICAgICAgICAgICAgICAg
ICAgX2xvZy53YXJuaW5nKCdZb3UgYXJlIG5vdCBydW5uaW5nIHRoZSBtb3N0ICcKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdyZWNlbnQgRHVtcFJlbmRlclRyZWUgYmluYXJ5LiBZ
b3UgbmVlZCB0byAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFzcyAtLWRl
YnVnIG9yIG5vdCB0byBzZWxlY3QgYmV0d2VlbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnRGVidWcgYW5kIFJlbGVhc2UuJykKKyAgICAgICAgICAgICAgICAgICAgbW9zdF9y
ZWNlbnRfYmluYXJ5ID0gJ1JlbGVhc2UnIGlmIGNvbmZpZ3VyYXRpb24gPT0gJ0RlYnVnJyBlbHNl
ICdEZWJ1ZycKKyAgICAgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdZb3UgYXJlIHJ1bm5p
bmcgdGhlICVzIGJpbmFyeS4gSG93ZXZlciB0aGUgJXMgYmluYXJ5IGFwcGVhcnMgdG8gYmUgbW9y
ZSByZWNlbnQuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQbGVhc2UgcGFz
cyAtLSVzLicsIGNvbmZpZ3VyYXRpb24sIG1vc3RfcmVjZW50X2JpbmFyeSwgbW9zdF9yZWNlbnRf
YmluYXJ5Lmxvd2VyKCkpCiAgICAgICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygnJykKICAg
ICAgICAgICAgICMgVGhpcyB3aWxsIGZhaWwgaWYgd2UgZG9uJ3QgaGF2ZSBib3RoIGEgZGVidWcg
YW5kIHJlbGVhc2UgYmluYXJ5LgogICAgICAgICAgICAgIyBUaGF0J3MgZmluZSBiZWNhdXNlLCBp
biB0aGlzIGNhc2UsIHdlIG11c3QgYWxyZWFkeSBiZSBydW5uaW5nIHRoZQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lk
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9h
bmRyb2lkLnB5CmluZGV4IGQyYjI2ODcwZWE4YzA4ZTc5MzhlYzA0MzhlMmQ3YjczZWNmMjk2ZTIu
LmQ0ODA1ZmZhYjc2MWE2ZGQ1MTczZDg3YTZiZWVjODAyYTFlOGZmYmQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X2FuZHJvaWQucHkKQEAgLTMxLDYgKzMxLDggQEAgaW1wb3J0IGNvcHkKIGltcG9ydCBsb2dnaW5n
CiBpbXBvcnQgb3MKIGltcG9ydCByZQoraW1wb3J0IHNldHMKK2ltcG9ydCBzdWJwcm9jZXNzCiBp
bXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQogCkBAIC01NCw3ICs1Niw2IEBAIENPTU1BTkRf
TElORV9GSUxFID0gREVWSUNFX1NPVVJDRV9ST09UX0RJUiArICdjaHJvbWUtbmF0aXZlLXRlc3Rz
LWNvbW1hbmQtbGluZScKICMgYW5kIENocm9taXVtJ3Mgd2Via2l0L3N1cHBvcnQvcGxhdGZvcm1f
c3VwcG9ydF9hbmRyb2lkLmNjLgogREVWSUNFX0RSVF9ESVIgPSBERVZJQ0VfU09VUkNFX1JPT1Rf
RElSICsgJ2RydC8nCiBERVZJQ0VfRk9SV0FSREVSX1BBVEggPSBERVZJQ0VfRFJUX0RJUiArICdm
b3J3YXJkZXInCi1ERVZJQ0VfRFJUX1NUQU1QX1BBVEggPSBERVZJQ0VfRFJUX0RJUiArICdEdW1w
UmVuZGVyVHJlZS5zdGFtcCcKIAogRFJUX0FQUF9QQUNLQUdFID0gJ29yZy5jaHJvbWl1bS5uYXRp
dmVfdGVzdCcKIERSVF9BQ1RJVklUWV9GVUxMX05BTUUgPSBEUlRfQVBQX1BBQ0tBR0UgKyAnLy5D
aHJvbWVOYXRpdmVUZXN0QWN0aXZpdHknCkBAIC0xMzcsNiArMTM4LDggQEAgVEVTVF9SRVNPVVJD
RVNfVE9fUFVTSCA9IFsKICAgICAnY29tcG9zaXRpbmcvcmVzb3VyY2VzL3ZpZGVvLm1wNCcsCiBd
CiAKK01ENVNVTV9ERVZJQ0VfRklMRV9OQU1FID0gJ21kNXN1bV9iaW4nCitNRDVTVU1fREVWSUNF
X1BBVEggPSAnL2RhdGEvbG9jYWwvdG1wLycgKyBNRDVTVU1fREVWSUNFX0ZJTEVfTkFNRQogCiBj
bGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgcG9y
dF9uYW1lID0gJ2Nocm9taXVtLWFuZHJvaWQnCkBAIC0zMDYsNiArMzA5LDggQEAgY2xhc3MgQ2hy
b21pdW1BbmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogCiAKIGNsYXNzIENocm9t
aXVtQW5kcm9pZERyaXZlcihkcml2ZXIuRHJpdmVyKToKKyAgICBfZGF0YV9hbHJlYWR5X3B1c2hl
ZF9mb3Jfd29ya2VyID0gc2V0cy5TZXQoKQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQs
IHdvcmtlcl9udW1iZXIsIHBpeGVsX3Rlc3RzLCBub190aW1lb3V0PUZhbHNlKToKICAgICAgICAg
c3VwZXIoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLCBzZWxmKS5fX2luaXRfXyhwb3J0LCB3b3JrZXJf
bnVtYmVyLCBwaXhlbF90ZXN0cywgbm9fdGltZW91dCkKICAgICAgICAgc2VsZi5fY21kX2xpbmUg
PSBOb25lCkBAIC0zMTksMTEgKzMyNCwyNiBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIo
ZHJpdmVyLkRyaXZlcik6CiAgICAgICAgIHNlbGYuX29yaWdpbmFsX2dvdmVybm9ycyA9IHt9CiAg
ICAgICAgIHNlbGYuX2RldmljZV9zZXJpYWwgPSBwb3J0Ll9nZXRfZGV2aWNlX3NlcmlhbCh3b3Jr
ZXJfbnVtYmVyKQogICAgICAgICBzZWxmLl9hZGJfY29tbWFuZCA9IFsnYWRiJywgJy1zJywgc2Vs
Zi5fZGV2aWNlX3NlcmlhbF0KKyAgICAgICAgc2VsZi5fc2V0dXBfbWQ1c3VtKCkKKyAgICAgICAg
aWYgbm90IHdvcmtlcl9udW1iZXIgaW4gQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9kYXRhX2FscmVh
ZHlfcHVzaGVkX2Zvcl93b3JrZXI6CisgICAgICAgICAgICBzZWxmLl9wdXNoX2V4ZWN1dGFibGUo
KQorICAgICAgICAgICAgc2VsZi5fcHVzaF9mb250cygpCisgICAgICAgICAgICBzZWxmLl9wdXNo
X3Rlc3RfcmVzb3VyY2VzKCkKKyAgICAgICAgICAgIENocm9taXVtQW5kcm9pZERyaXZlci5fZGF0
YV9hbHJlYWR5X3B1c2hlZF9mb3Jfd29ya2VyLmFkZCh3b3JrZXJfbnVtYmVyKQogCiAgICAgZGVm
IF9fZGVsX18oc2VsZik6CiAgICAgICAgIHNlbGYuX3RlYXJkb3duX3BlcmZvcm1hbmNlKCkKICAg
ICAgICAgc3VwZXIoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLCBzZWxmKS5fX2RlbF9fKCkKIAorICAg
IGRlZiBfc2V0dXBfbWQ1c3VtKHNlbGYpOgorICAgICAgICBzZWxmLl9tZDVzdW1fcGF0aCA9ICcl
cy9vdXQvJXMvJXMnICUgKAorICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQucGF0aF9mcm9tX2No
cm9taXVtX2Jhc2UoKSwgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIE1E
NVNVTV9ERVZJQ0VfRklMRV9OQU1FKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoc2Vs
Zi5fbWQ1c3VtX3BhdGgpCisgICAgICAgIGlmIHNlbGYuX2ZpbGVfZXhpc3RzX29uX2RldmljZShN
RDVTVU1fREVWSUNFX1BBVEgpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIG5vdCBz
ZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9tZDVzdW1fcGF0aCwgTUQ1U1VNX0RFVklDRV9QQVRI
KToKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0NvdWxkIG5vdCBwdXNoIG1kNXN1bSB0byBkZXZp
Y2UnKQorCiAgICAgZGVmIF9zZXR1cF90ZXN0KHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9oYXNf
c2V0dXA6CiAgICAgICAgICAgICByZXR1cm4KQEAgLTM0MCwxMCArMzYwLDYgQEAgY2xhc3MgQ2hy
b21pdW1BbmRyb2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgICAgICBzZWxmLl9ydW5fYWRi
X2NvbW1hbmQoWydzaGVsbCcsICdta2RpcicsICctcCcsIERFVklDRV9EUlRfRElSXSkKICAgICAg
ICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAnY2htb2QnLCAnNzc3JywgREVWSUNF
X0RSVF9ESVJdKQogCi0gICAgICAgIHNlbGYuX3B1c2hfZXhlY3V0YWJsZSgpCi0gICAgICAgIHNl
bGYuX3B1c2hfZm9udHMoKQotICAgICAgICBzZWxmLl9zeW5jaHJvbml6ZV9kYXRldGltZSgpCi0K
ICAgICAgICAgIyBEZWxldGUgdGhlIGRpc2sgY2FjaGUgaWYgYW55IHRvIGVuc3VyZSBhIGNsZWFu
IHRlc3QgcnVuLgogICAgICAgICAjIFRoaXMgaXMgbGlrZSB3aGF0J3MgZG9uZSBpbiBDaHJvbWl1
bVBvcnQuc2V0dXBfdGVzdF9ydW4gYnV0IG9uIHRoZSBkZXZpY2UuCiAgICAgICAgIHNlbGYuX3J1
bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ3JtJywgJy1yJywgRFJUX0FQUF9DQUNIRV9ESVJdKQpA
QCAtMzU3LDI5ICszNzMsMzQgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkRHJpdmVyKGRyaXZlci5E
cml2ZXIpOgogICAgIGRlZiBfYWJvcnQoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHJhaXNlIEFz
c2VydGlvbkVycm9yKCdbJXNdICVzJyAlIChzZWxmLl9kZXZpY2Vfc2VyaWFsLCBtZXNzYWdlKSkK
IAorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2V4dHJhY3RfaGFzaGVzX2Zyb21fbWQ1c3Vt
X291dHB1dChtZDVzdW1fb3V0cHV0KToKKyAgICAgICAgYXNzZXJ0IG1kNXN1bV9vdXRwdXQKKyAg
ICAgICAgcmV0dXJuIFtsaW5lLnNwbGl0KCcgICcpWzBdIGZvciBsaW5lIGluIG1kNXN1bV9vdXRw
dXRdCisKKyAgICBkZWYgX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2VsZiwgaG9zdF9maWxlLCBkZXZp
Y2VfZmlsZSk6CisgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhob3N0X2ZpbGUpCisgICAg
ICAgIGRldmljZV9oYXNoZXMgPSBzZWxmLl9leHRyYWN0X2hhc2hlc19mcm9tX21kNXN1bV9vdXRw
dXQoCisgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5Qb3BlbihzZWxmLl9hZGJfY29tbWFuZCAr
IFsnc2hlbGwnLCBNRDVTVU1fREVWSUNFX1BBVEgsIGRldmljZV9maWxlXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dCkKKyAg
ICAgICAgaG9zdF9oYXNoZXMgPSBzZWxmLl9leHRyYWN0X2hhc2hlc19mcm9tX21kNXN1bV9vdXRw
dXQoCisgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5Qb3BlbihhcmdzPVsnJXNfaG9zdCcgJSBz
ZWxmLl9tZDVzdW1fcGF0aCwgaG9zdF9maWxlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dCkKKyAgICAgICAgaWYgaG9zdF9o
YXNoZXMgYW5kIGRldmljZV9oYXNoZXMgPT0gaG9zdF9oYXNoZXM6CisgICAgICAgICAgICByZXR1
cm4KKyAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2UoaG9zdF9maWxlLCBkZXZpY2VfZmlsZSkK
KwogICAgIGRlZiBfcHVzaF9leGVjdXRhYmxlKHNlbGYpOgorICAgICAgICBzZWxmLl9wdXNoX2Zp
bGVfaWZfbmVlZGVkKHNlbGYuX3BvcnQuX3BhdGhfdG9fZm9yd2FyZGVyKCksIERFVklDRV9GT1JX
QVJERVJfUEFUSCkKKyAgICAgICAgc2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9wb3J0
Ll9idWlsZF9wYXRoKCdEdW1wUmVuZGVyVHJlZS5wYWsnKSwgREVWSUNFX0RSVF9ESVIgKyAnRHVt
cFJlbmRlclRyZWUucGFrJykKKyAgICAgICAgc2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxm
Ll9wb3J0Ll9idWlsZF9wYXRoKCdEdW1wUmVuZGVyVHJlZV9yZXNvdXJjZXMnKSwgREVWSUNFX0RS
VF9ESVIgKyAnRHVtcFJlbmRlclRyZWVfcmVzb3VyY2VzJykKKyAgICAgICAgc2VsZi5fcHVzaF9m
aWxlX2lmX25lZWRlZChzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdhbmRyb2lkX21haW5fZm9udHMu
eG1sJyksIERFVklDRV9EUlRfRElSICsgJ2FuZHJvaWRfbWFpbl9mb250cy54bWwnKQorICAgICAg
ICBzZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ2FuZHJv
aWRfZmFsbGJhY2tfZm9udHMueG1sJyksIERFVklDRV9EUlRfRElSICsgJ2FuZHJvaWRfZmFsbGJh
Y2tfZm9udHMueG1sJykKKyAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsndW5pbnN0YWxs
JywgRFJUX0FQUF9QQUNLQUdFXSkKICAgICAgICAgZHJ0X2hvc3RfcGF0aCA9IHNlbGYuX3BvcnQu
X3BhdGhfdG9fZHJpdmVyKCkKLSAgICAgICAgZm9yd2FyZGVyX2hvc3RfcGF0aCA9IHNlbGYuX3Bv
cnQuX3BhdGhfdG9fZm9yd2FyZGVyKCkKLSAgICAgICAgaG9zdF9zdGFtcCA9IGludChmbG9hdCht
YXgob3Muc3RhdChkcnRfaG9zdF9wYXRoKS5zdF9tdGltZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3Muc3RhdChmb3J3YXJkZXJfaG9zdF9wYXRoKS5zdF9tdGltZSkpKQot
ICAgICAgICBkZXZpY2Vfc3RhbXAgPSBpbnQoZmxvYXQoc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsK
LSAgICAgICAgICAgICdzaGVsbCcsICdjYXQgJXMgMj4vZGV2L251bGwgfHwgZWNobyAwJyAlIERF
VklDRV9EUlRfU1RBTVBfUEFUSF0pKSkKLSAgICAgICAgaWYgZGV2aWNlX3N0YW1wICE9IGhvc3Rf
c3RhbXA6Ci0gICAgICAgICAgICBzZWxmLl9sb2dfZGVidWcoJ1B1c2hpbmcgZXhlY3V0YWJsZScp
Ci0gICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShmb3J3YXJkZXJfaG9zdF9wYXRoLCBE
RVZJQ0VfRk9SV0FSREVSX1BBVEgpCi0gICAgICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQo
Wyd1bmluc3RhbGwnLCBEUlRfQVBQX1BBQ0tBR0VdKQotICAgICAgICAgICAgaW5zdGFsbF9yZXN1
bHQgPSBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydpbnN0YWxsJywgZHJ0X2hvc3RfcGF0aF0pCi0g
ICAgICAgICAgICBpZiBpbnN0YWxsX3Jlc3VsdC5maW5kKCdTdWNjZXNzJykgPT0gLTE6Ci0gICAg
ICAgICAgICAgICAgc2VsZi5fYWJvcnQoJ0ZhaWxlZCB0byBpbnN0YWxsICVzIG9udG8gZGV2aWNl
OiAlcycgJSAoZHJ0X2hvc3RfcGF0aCwgaW5zdGFsbF9yZXN1bHQpKQotICAgICAgICAgICAgc2Vs
Zi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnRHVtcFJlbmRlclRyZWUu
cGFrJyksIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlLnBhaycpCi0gICAgICAgICAg
ICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdEdW1wUmVuZGVy
VHJlZV9yZXNvdXJjZXMnKSwgREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWVfcmVzb3Vy
Y2VzJykKLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYuX3BvcnQuX2J1aWxk
X3BhdGgoJ2FuZHJvaWRfbWFpbl9mb250cy54bWwnKSwgREVWSUNFX0RSVF9ESVIgKyAnYW5kcm9p
ZF9tYWluX2ZvbnRzLnhtbCcpCi0gICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxm
Ll9wb3J0Ll9idWlsZF9wYXRoKCdhbmRyb2lkX2ZhbGxiYWNrX2ZvbnRzLnhtbCcpLCBERVZJQ0Vf
RFJUX0RJUiArICdhbmRyb2lkX2ZhbGxiYWNrX2ZvbnRzLnhtbCcpCi0gICAgICAgICAgICAjIFZl
cnNpb24gY29udHJvbCBvZiB0ZXN0IHJlc291cmNlcyBpcyBkZXBlbmRlbnQgb24gZXhlY3V0YWJs
ZXMsCi0gICAgICAgICAgICAjIGJlY2F1c2Ugd2Ugd2lsbCBhbHdheXMgcmVidWlsZCBleGVjdXRh
YmxlcyB3aGVuIHJlc291cmNlcyBhcmUKLSAgICAgICAgICAgICMgdXBkYXRlZC4KLSAgICAgICAg
ICAgIHNlbGYuX3B1c2hfdGVzdF9yZXNvdXJjZXMoKQotICAgICAgICAgICAgc2VsZi5fcnVuX2Fk
Yl9jb21tYW5kKFsnc2hlbGwnLCAnZWNobyAlZCA+JXMnICUgKGhvc3Rfc3RhbXAsIERFVklDRV9E
UlRfU1RBTVBfUEFUSCldKQorICAgICAgICBpbnN0YWxsX3Jlc3VsdCA9IHNlbGYuX3J1bl9hZGJf
Y29tbWFuZChbJ2luc3RhbGwnLCBkcnRfaG9zdF9wYXRoXSkKKyAgICAgICAgaWYgaW5zdGFsbF9y
ZXN1bHQuZmluZCgnU3VjY2VzcycpID09IC0xOgorICAgICAgICAgICAgc2VsZi5fYWJvcnQoJ0Zh
aWxlZCB0byBpbnN0YWxsICVzIG9udG8gZGV2aWNlOiAlcycgJSAoZHJ0X2hvc3RfcGF0aCwgaW5z
dGFsbF9yZXN1bHQpKQogCiAgICAgZGVmIF9wdXNoX2ZvbnRzKHNlbGYpOgogICAgICAgICBpZiBu
b3Qgc2VsZi5fY2hlY2tfdmVyc2lvbihERVZJQ0VfRk9OVFNfRElSLCBGT05UX0ZJTEVTX1ZFUlNJ
T04pOgpAQCAtMzk0LDE4ICs0MTUsNyBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJp
dmVyLkRyaXZlcik6CiAgICAgZGVmIF9wdXNoX3Rlc3RfcmVzb3VyY2VzKHNlbGYpOgogICAgICAg
ICBzZWxmLl9sb2dfZGVidWcoJ1B1c2hpbmcgdGVzdCByZXNvdXJjZXMnKQogICAgICAgICBmb3Ig
cmVzb3VyY2UgaW4gVEVTVF9SRVNPVVJDRVNfVE9fUFVTSDoKLSAgICAgICAgICAgIHNlbGYuX3B1
c2hfdG9fZGV2aWNlKHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy8nICsgcmVzb3Vy
Y2UsIERFVklDRV9MQVlPVVRfVEVTVFNfRElSICsgcmVzb3VyY2UpCi0KLSAgICBkZWYgX3N5bmNo
cm9uaXplX2RhdGV0aW1lKHNlbGYpOgotICAgICAgICAjIFRoZSBkYXRlL3RpbWUgYmV0d2VlbiBo
b3N0IGFuZCBkZXZpY2UgbWF5IG5vdCBiZSBzeW5jaHJvbml6ZWQuCi0gICAgICAgICMgV2UgbmVl
ZCB0byBtYWtlIHRoZW0gc3luY2hyb25pemVkLCBvdGhlcndpc2UgdGVzdHMgbWlnaHQgZmFpbC4K
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBHZXQgc2Vjb25kcyBzaW5jZSAxOTcwLTAxLTAx
IDAwOjAwOjAwIFVUQy4KLSAgICAgICAgICAgIGhvc3RfZGF0ZXRpbWUgPSBzZWxmLl9wb3J0Ll9l
eGVjdXRpdmUucnVuX2NvbW1hbmQoWydkYXRlJywgJy11JywgJyslcyddKQotICAgICAgICBleGNl
cHQ6Ci0gICAgICAgICAgICAjIFJlc2V0IHRvIDE5NzAtMDEtMDEgMDA6MDA6MDAgVVRDLgotICAg
ICAgICAgICAgaG9zdF9kYXRldGltZSA9IDAKLSAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5k
KFsnc2hlbGwnLCAnZGF0ZSAtdSAlcycgJSAoaG9zdF9kYXRldGltZSldKQorICAgICAgICAgICAg
c2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSAr
ICcvJyArIHJlc291cmNlLCBERVZJQ0VfTEFZT1VUX1RFU1RTX0RJUiArIHJlc291cmNlKQogCiAg
ICAgZGVmIF9jaGVja192ZXJzaW9uKHNlbGYsIGRpciwgdmVyc2lvbik6CiAgICAgICAgIGFzc2Vy
dChkaXIuZW5kc3dpdGgoJy8nKSkKQEAgLTY2NCw4ICs2NzQsNiBAQCBjbGFzcyBDaHJvbWl1bUFu
ZHJvaWREcml2ZXIoZHJpdmVyLkRyaXZlcik6CiAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAg
ICAgICBjdXJyZW50X2NoYXIgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX3N0ZG91dChkZWFk
bGluZSwgMSkKICAgICAgICAgICAgIGlmIGN1cnJlbnRfY2hhciA9PSAnICc6Ci0gICAgICAgICAg
ICAgICAgaWYgbGFzdF9jaGFyID09ICcjJzoKKyAgICAgICAgICAgICAgICBpZiBsYXN0X2NoYXIg
aW4gKCcjJywgJyQnKToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAg
ICAgaWYgbGFzdF9jaGFyID09ICckJzoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0
aW9uRXJyb3IoJ0FkYmQgaXMgbm90IHJ1bm5pbmcgYXMgcm9vdCcpCiAgICAgICAgICAgICBsYXN0
X2NoYXIgPSBjdXJyZW50X2NoYXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YTNiYjkyODE1ZmNhMWVjYTUyM2E0MDliODM4
MzU4NWUyNGU1ODNiLi43NzkzM2U2ZTRiYmRlNGI1MjUzMTM2MmFhMzEyOGMzNThmOWNkZjI0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDktMTAgIFBoaWxpcHBlIExpYXJkICA8cGxpYXJk
QGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IExheW91dFRlc3RzIG9uIG5vbi1yb290
ZWQgQW5kcm9pZCBkZXZpY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTUzNDYKKworICAgICAgICBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9z
dWJyZXNvdXJjZS10ZXN0LmpzIHdhcyBhc3N1bWluZyB0aGF0IHRoZQorICAgICAgICBjbGllbnQg
YW5kIHNlcnZlciBjbG9ja3MgYXJlIHRoZSBzYW1lIHdoaWNoIGlzIG5vIGxvbmdlciB0cnVlIHNp
bmNlIHdlCisgICAgICAgIGFyZSBnZXR0aW5nIHJpZCBvZiBob3N0L2RldmljZSBjbG9jayBzeW5j
aHJvbml6YXRpb24uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9jYWNo
ZS1zaW11bGF0b3IuY2dpOgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2N1
cnJlbnQtdGltZS5jZ2k6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3Vy
Y2VzL3N1YnJlc291cmNlLXRlc3QuanM6CisgICAgICAgIChnZXRTZXJ2ZXJEYXRlKToKKyAgICAg
ICAgKG5leHRUZXN0KToKKyAgICAgICAgKHRlc3RDb21wbGV0ZSk6CisgICAgICAgIChydW5UZXN0
cyk6CisKIDIwMTItMDktMTAgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBlbXB0eSBlbnRyaWVzIGluIHNv
dXJjZSBtYXBzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNv
dXJjZXMvY3VycmVudC10aW1lLmNnaSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVz
b3VyY2VzL2N1cnJlbnQtdGltZS5jZ2kKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU0MjY1ZjM3MzFlYTE4Mzk4Yzk1
NGYyYzgxZWNlYzI5NmVjNjMwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY2FjaGUvcmVzb3VyY2VzL2N1cnJlbnQtdGltZS5jZ2kKQEAgLTAsMCArMSw1IEBACisj
IS91c3IvYmluL3BlcmwgLXcKKworcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9wbGFpblxuIjsK
K3ByaW50ICJcbiI7CitwcmludCB0aW1lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9zdWJyZXNvdXJjZS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3VyY2UtdGVzdC5qcwppbmRleCBjZTRi
YjEyOTUwMzI2YWFjMjZmN2M5OWFkMzBhNDEyYTQ3ZjljOTYzLi5lNGM4ZmU1MjU2YTBkNDI1YjBl
OGM5YmE3NWM3ZGZmNGQ1ZWMxZjFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2NhY2hlL3Jlc291cmNlcy9zdWJyZXNvdXJjZS10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3N1YnJlc291cmNlLXRlc3QuanMKQEAgLTI1LDYgKzI1
LDIyIEBAIHZhciBjb25zb2xlRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGVEaXYpOwogZnJhbWUyLm9ubG9hZCA9IGZ1
bmN0aW9uICgpIHsgbG9hZGVkRnJhbWVDb3VudCsrOyB9CiAKK2Z1bmN0aW9uIGdldFNlcnZlckRh
dGUoKQoreworICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICB2YXIgdDAg
PSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKKyAgICByZXEub3BlbignR0VUJywgIi9jYWNoZS9yZXNv
dXJjZXMvY3VycmVudC10aW1lLmNnaSIsIGZhbHNlIC8qIGJsb2NraW5nICovKTsKKyAgICByZXEu
c2VuZCgpOworICAgIHZhciBzZXJ2ZXJUb0NsaWVudFRpbWUgPSAobmV3IERhdGUoKS5nZXRUaW1l
KCkgLSB0MCkgLyAyOworICAgIGlmIChyZXEuc3RhdHVzICE9IDIwMCkgeworICAgICAgICBjb25z
b2xlLmxvZygidW5leHBlY3RlZCBzdGF0dXMgY29kZSAiICsgcmVxLnN0YXR1cyArICIsIGV4cGVj
dGVkIDIwMC4iKTsKKyAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7CisgICAgfQorICAgIHJldHVy
biBuZXcgRGF0ZSgocGFyc2VJbnQocmVxLnJlc3BvbnNlVGV4dCkgKiAxMDAwKSArIHNlcnZlclRv
Q2xpZW50VGltZSk7Cit9CisKK3ZhciBzZXJ2ZXJDbGllbnRUaW1lRGVsdGEgPSBnZXRTZXJ2ZXJE
YXRlKCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CisKIGZ1bmN0aW9uIGxvYWRU
ZXN0RnJhbWUoZnJhbWUsIHRlc3RTcGVjKQogewogICAgIHZhciBmaXJzdCA9IHRydWU7CkBAIC02
Nyw3ICs4Myw3IEBAIGZ1bmN0aW9uIG5leHRUZXN0KCkKIHsKICAgICB2YXIgdGVzdFNwZWMgPSB0
ZXN0c1tjdXJyZW50VGVzdF07CiAgICAgdW5pcXVlSWQgPSBNYXRoLmZsb29yKDEwMDAwMDAwMCAq
IE1hdGgucmFuZG9tKCkpOwotICAgIG5vdyA9IG5ldyBEYXRlKCk7CisgICAgbm93ID0gbmV3IERh
dGUobmV3IERhdGUoKS5nZXRUaW1lKCkgKyBzZXJ2ZXJDbGllbnRUaW1lRGVsdGEpOwogICAgIGlm
ICghdGVzdFNwZWMpIHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CkBAIC04MCwyMiArOTYsMjIgQEAgZnVuY3Rpb24g
bmV4dFRlc3QoKQogZnVuY3Rpb24gdGVzdENvbXBsZXRlKHRlc3RTcGVjKQogewogICAgIHZhciBs
aW5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgdmFyIHJlc3VsdCA9IGZy
YW1lMS5jb250ZW50V2luZG93LnJhbmRvbU51bWJlciA9PSBmcmFtZTIuY29udGVudFdpbmRvdy5y
YW5kb21OdW1iZXIgPyAnQ2FjaGVkJyA6ICdVbmNhY2hlZCc7ICAgIAorICAgIHZhciByZXN1bHQg
PSBmcmFtZTEuY29udGVudFdpbmRvdy5yYW5kb21OdW1iZXIgPT0gZnJhbWUyLmNvbnRlbnRXaW5k
b3cucmFuZG9tTnVtYmVyID8gJ0NhY2hlZCcgOiAnVW5jYWNoZWQnOwogICAgIHZhciBwYXNzZWQg
PSByZXN1bHQgPT0gdGVzdFNwZWMuZXhwZWN0ZWRSZXN1bHQ7CiAKICAgICBpZiAodGVzdFNwZWMu
ZGVzY3JpcHRpb24pCiAgICAgICAgIGxpbmUuaW5uZXJIVE1MICs9IHRlc3RTcGVjLmRlc2NyaXB0
aW9uOwogICAgIGVsc2UgewotICAgICAgICBmb3IgKHZhciBoZWFkZXIgaW4gdGVzdFNwZWMudGVz
dEhlYWRlcnMpIAorICAgICAgICBmb3IgKHZhciBoZWFkZXIgaW4gdGVzdFNwZWMudGVzdEhlYWRl
cnMpCiAgICAgICAgICAgICBsaW5lLmlubmVySFRNTCArPSBoZWFkZXIgKyAiOiAiICsgdGVzdFNw
ZWMudGVzdEhlYWRlcnNbaGVhZGVyXSArICI7ICI7CiAgICAgfQogICAgIGlmICh0ZXN0U3BlYy5k
ZWxheSkKICAgICAgICAgbGluZS5pbm5lckhUTUwgKz0gIltkZWxheT0iICsgdGVzdFNwZWMuZGVs
YXkgKyAic10gIgogICAgIGxpbmUuaW5uZXJIVE1MICs9ICIgIChyZXN1bHQ9IiArIHJlc3VsdCAr
ICIgZXhwZWN0ZWQ9IiArIHRlc3RTcGVjLmV4cGVjdGVkUmVzdWx0ICsgIikgIjsKICAgICBsaW5l
LmlubmVySFRNTCArPSBwYXNzZWQgPyAiPGZvbnQgY29sb3I9Z3JlZW4+UEFTUzwvZm9udD4gIiA6
ICI8Zm9udCBjb2xvcj1yZWQ+RkFJTDwvZm9udD4gIgotICAgICAgICAKKwogICAgIGNvbnNvbGVE
aXYuYXBwZW5kQ2hpbGQobGluZSk7Ci0gICAgCisKICAgICBuZXh0VGVzdCgpOwogfQogCkBAIC0x
MDYsNSArMTIyLDQgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAgICBuZXh0VGVzdCgpOwog
ICAgIGVsc2UKICAgICAgICAgc2V0VGltZW91dChydW5UZXN0cywgMTAwKTsKLQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163313</attachid>
            <date>2012-09-11 02:40:43 -0700</date>
            <delta_ts>2012-09-11 05:37:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95346-20120911114017.patch</filename>
            <type>text/plain</type>
            <size>17259</size>
            <attacher name="Philippe Liard">pliard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MTU4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjcyYzBhNzgxMGYwZDFkM2ZhYjA4YTc5YjAwZTM2ZGE2
YWM0MTI4ZS4uY2FjNjAwMjk5NGNmMTJlNzE5OTI1MjQwZThhYzljMWIyODI1ODdlOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDEyLTA5LTEwICBQaGlsaXBwZSBMaWFyZCAgPHBsaWFyZEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3VwcG9ydCBMYXlvdXRUZXN0cyBvbiBub24tcm9vdGVkIGRldmljZXMgZm9yIENo
cm9taXVtIEFuZHJvaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTM0NgorCisgICAgICAgIFdlIHdlcmUgcmVxdWlyaW5nIHJvb3QgcGVybWlzc2lv
bnMgdG8gc3luYyByZXNvdXJjZSBmaWxlcyB3aXRoIHRoZQorICAgICAgICBkZXZpY2UgYnkgY29t
cGFyaW5nIGhvc3QgYW5kIGRldmljZSBmaWxlcycgdGltZXN0YW1wIGFmdGVyIHdlCisgICAgICAg
IHN5bmNocm9uaXplZCB0aGUgZGV2aWNlIGFuZCBob3N0IGNsb2Nrcy4KKyAgICAgICAgV2Ugbm93
IHJlbHkgb24gbWQ1c3VtIHByb3ZpZGVkIGJ5IENocm9taXVtIHRvIGhhbmRsZSBkYXRhIGZpbGVz
CisgICAgICAgIHN5bmNocm9uaXphdGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgIChDaHJvbWl1bVBvcnQuX2No
ZWNrX2RyaXZlcl9idWlsZF91cF90b19kYXRlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHk6CisgICAgICAgIChDaHJvbWl1
bUFuZHJvaWREcml2ZXIuX19pbml0X18pOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVy
Ll9zZXR1cF90ZXN0KToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF9leGVj
dXRhYmxlKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF90ZXN0X3Jlc291
cmNlcyk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX3JlYWRfcHJvbXB0KToKKwog
MjAxMi0wOS0xMSAgQW5kcmFzIEJlY3NpICA8YW5kcmFzLmJlY3NpQG5va2lhLmNvbT4KIAogICAg
ICAgICBbUXRdW1dLMl0gRml4IHRoZSBidWlsZCB3aXRoIHJlY2VudCBRdDUKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5n
eXAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRy
ZWUuZ3lwCmluZGV4IGFlODZiNTdmZmVkNGE5YmU1Y2JmM2QxNGI0NjQwZDZlMjVjZTA5NGUuLmRm
NjhjZWQ5NDQ1OTg0N2Q1ZjViY2I1NTFkMTFmZGY3OWRiMDNlOGMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVl
Lmd5cApAQCAtMTIxLDExICsxMjEsMTEgQEAKICAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGly
KS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDppbnNwZWN0b3JfcmVzb3VyY2VzJywKICAgICAg
ICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDp3ZWJr
aXQnLAogICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dURi9XVEYuZ3lwL1dURi5neXA6
d3RmJywKKyAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNlL2Jhc2UuZ3lw
OnRlc3Rfc3VwcG9ydF9iYXNlJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGly
KS9idWlsZC90ZW1wX2d5cC9nb29nbGV1cmwuZ3lwOmdvb2dsZXVybCcsCiAgICAgICAgICAgICAg
ICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvaWN1L2ljdS5neXA6aWN1dWMnLAog
ICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L21lc2EvbWVz
YS5neXA6b3NtZXNhJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS92OC90
b29scy9neXAvdjguZ3lwOnY4JywKLSAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGly
KS9iYXNlL2Jhc2UuZ3lwOnRlc3Rfc3VwcG9ydF9iYXNlJywKICAgICAgICAgICAgICAgICAnPChj
aHJvbWl1bV9zcmNfZGlyKS93ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5neXA6YmxvYics
CiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L3N1cHBvcnQvd2Vi
a2l0X3N1cHBvcnQuZ3lwOndlYmtpdF9zdXBwb3J0JywKICAgICAgICAgICAgIF0sCkBAIC0yODIs
OCArMjgyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnc2hhcmVkX2xpYnJhcnkn
LAogICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWwogICAgICAgICAgICAgICAg
ICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYmFzZS9iYXNlLmd5cDp0ZXN0X3N1cHBvcnRf
YmFzZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90b29s
cy9hbmRyb2lkL2ZvcndhcmRlci9mb3J3YXJkZXIuZ3lwOmZvcndhcmRlcicsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90ZXN0aW5nL2FuZHJvaWQvbmF0aXZl
X3Rlc3QuZ3lwOm5hdGl2ZV90ZXN0X25hdGl2ZV9jb2RlJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICc8KGNocm9taXVtX3NyY19kaXIpL3Rvb2xzL2FuZHJvaWQvZm9yd2FyZGVyL2ZvcndhcmRl
ci5neXA6Zm9yd2FyZGVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3Ny
Y19kaXIpL3Rvb2xzL2FuZHJvaWQvbWQ1c3VtL21kNXN1bS5neXA6bWQ1c3VtJywKICAgICAgICAg
ICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyEnOiBbCiAg
ICAgICAgICAgICAgICAgICAgICAgICAnSW1hZ2VEaWZmJywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IGU2NmIwYTIw
NDMxOWQxZjg4Njk0ZTM3NmM3MGFjYzdhMGU4YTNlNWEuLjIwNjIxOWM0YzBhMDA4NGEzNjc2YjAw
YjBmODk5YTFkMDE2YTg5ZjMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNDA1LDEwICs0MDUsOSBAQCBjbGFzcyBD
aHJvbWl1bVBvcnQoUG9ydCk6CiAKICAgICAgICAgICAgICAgICBpZiAoZGVidWdfbXRpbWUgPiBy
ZWxlYXNlX210aW1lIGFuZCBjb25maWd1cmF0aW9uID09ICdSZWxlYXNlJyBvcgogICAgICAgICAg
ICAgICAgICAgICByZWxlYXNlX210aW1lID4gZGVidWdfbXRpbWUgYW5kIGNvbmZpZ3VyYXRpb24g
PT0gJ0RlYnVnJyk6Ci0gICAgICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygnWW91IGFyZSBu
b3QgcnVubmluZyB0aGUgbW9zdCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
cmVjZW50IER1bXBSZW5kZXJUcmVlIGJpbmFyeS4gWW91IG5lZWQgdG8gJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3Bhc3MgLS1kZWJ1ZyBvciBub3QgdG8gc2VsZWN0IGJldHdl
ZW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlYnVnIGFuZCBSZWxlYXNl
LicpCisgICAgICAgICAgICAgICAgICAgIG1vc3RfcmVjZW50X2JpbmFyeSA9ICdSZWxlYXNlJyBp
ZiBjb25maWd1cmF0aW9uID09ICdEZWJ1ZycgZWxzZSAnRGVidWcnCisgICAgICAgICAgICAgICAg
ICAgIF9sb2cud2FybmluZygnWW91IGFyZSBydW5uaW5nIHRoZSAlcyBiaW5hcnkuIEhvd2V2ZXIg
dGhlICVzIGJpbmFyeSBhcHBlYXJzIHRvIGJlIG1vcmUgcmVjZW50LiAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIHBhc3MgLS0lcy4nLCBjb25maWd1cmF0aW9uLCBt
b3N0X3JlY2VudF9iaW5hcnksIG1vc3RfcmVjZW50X2JpbmFyeS5sb3dlcigpKQogICAgICAgICAg
ICAgICAgICAgICBfbG9nLndhcm5pbmcoJycpCiAgICAgICAgICAgICAjIFRoaXMgd2lsbCBmYWls
IGlmIHdlIGRvbid0IGhhdmUgYm90aCBhIGRlYnVnIGFuZCByZWxlYXNlIGJpbmFyeS4KICAgICAg
ICAgICAgICMgVGhhdCdzIGZpbmUgYmVjYXVzZSwgaW4gdGhpcyBjYXNlLCB3ZSBtdXN0IGFscmVh
ZHkgYmUgcnVubmluZyB0aGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQppbmRleCBkMmIyNjg3MGVh
OGMwOGU3OTM4ZWMwNDM4ZTJkN2I3M2VjZjI5NmUyLi4xNDI4NjNlMTY4NDc2NWY0ZDY3Zjk0NzJm
NjMxNzFmNzJiMzNhYTgzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CkBAIC0zMSw2ICszMSw4
IEBAIGltcG9ydCBjb3B5CiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgcmUKK2lt
cG9ydCBzZXRzCitpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRp
bWUKIApAQCAtNTQsNyArNTYsNiBAQCBDT01NQU5EX0xJTkVfRklMRSA9IERFVklDRV9TT1VSQ0Vf
Uk9PVF9ESVIgKyAnY2hyb21lLW5hdGl2ZS10ZXN0cy1jb21tYW5kLWxpbmUnCiAjIGFuZCBDaHJv
bWl1bSdzIHdlYmtpdC9zdXBwb3J0L3BsYXRmb3JtX3N1cHBvcnRfYW5kcm9pZC5jYy4KIERFVklD
RV9EUlRfRElSID0gREVWSUNFX1NPVVJDRV9ST09UX0RJUiArICdkcnQvJwogREVWSUNFX0ZPUldB
UkRFUl9QQVRIID0gREVWSUNFX0RSVF9ESVIgKyAnZm9yd2FyZGVyJwotREVWSUNFX0RSVF9TVEFN
UF9QQVRIID0gREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWUuc3RhbXAnCiAKIERSVF9B
UFBfUEFDS0FHRSA9ICdvcmcuY2hyb21pdW0ubmF0aXZlX3Rlc3QnCiBEUlRfQUNUSVZJVFlfRlVM
TF9OQU1FID0gRFJUX0FQUF9QQUNLQUdFICsgJy8uQ2hyb21lTmF0aXZlVGVzdEFjdGl2aXR5JwpA
QCAtMTM3LDYgKzEzOCw4IEBAIFRFU1RfUkVTT1VSQ0VTX1RPX1BVU0ggPSBbCiAgICAgJ2NvbXBv
c2l0aW5nL3Jlc291cmNlcy92aWRlby5tcDQnLAogXQogCitNRDVTVU1fREVWSUNFX0ZJTEVfTkFN
RSA9ICdtZDVzdW1fYmluJworTUQ1U1VNX0RFVklDRV9QQVRIID0gJy9kYXRhL2xvY2FsL3RtcC8n
ICsgTUQ1U1VNX0RFVklDRV9GSUxFX05BTUUKIAogY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9ydChj
aHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgIHBvcnRfbmFtZSA9ICdjaHJvbWl1bS1hbmRyb2lk
JwpAQCAtMzA2LDYgKzMwOSw4IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQoY2hyb21pdW0u
Q2hyb21pdW1Qb3J0KToKIAogCiBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVyLkRy
aXZlcik6CisgICAgX2RhdGFfYWxyZWFkeV9wdXNoZWRfZm9yX3dvcmtlciA9IHNldHMuU2V0KCkK
KwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCB3b3JrZXJfbnVtYmVyLCBwaXhlbF90ZXN0
cywgbm9fdGltZW91dD1GYWxzZSk6CiAgICAgICAgIHN1cGVyKENocm9taXVtQW5kcm9pZERyaXZl
ciwgc2VsZikuX19pbml0X18ocG9ydCwgd29ya2VyX251bWJlciwgcGl4ZWxfdGVzdHMsIG5vX3Rp
bWVvdXQpCiAgICAgICAgIHNlbGYuX2NtZF9saW5lID0gTm9uZQpAQCAtMzE5LDExICszMjQsMjYg
QEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgICAgICBz
ZWxmLl9vcmlnaW5hbF9nb3Zlcm5vcnMgPSB7fQogICAgICAgICBzZWxmLl9kZXZpY2Vfc2VyaWFs
ID0gcG9ydC5fZ2V0X2RldmljZV9zZXJpYWwod29ya2VyX251bWJlcikKICAgICAgICAgc2VsZi5f
YWRiX2NvbW1hbmQgPSBbJ2FkYicsICctcycsIHNlbGYuX2RldmljZV9zZXJpYWxdCisgICAgICAg
IHNlbGYuX3NldHVwX21kNXN1bSgpCisgICAgICAgIGlmIG5vdCB3b3JrZXJfbnVtYmVyIGluIENo
cm9taXVtQW5kcm9pZERyaXZlci5fZGF0YV9hbHJlYWR5X3B1c2hlZF9mb3Jfd29ya2VyOgorICAg
ICAgICAgICAgc2VsZi5fcHVzaF9leGVjdXRhYmxlKCkKKyAgICAgICAgICAgIHNlbGYuX3B1c2hf
Zm9udHMoKQorICAgICAgICAgICAgc2VsZi5fcHVzaF90ZXN0X3Jlc291cmNlcygpCisgICAgICAg
ICAgICBDaHJvbWl1bUFuZHJvaWREcml2ZXIuX2RhdGFfYWxyZWFkeV9wdXNoZWRfZm9yX3dvcmtl
ci5hZGQod29ya2VyX251bWJlcikKIAogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICBz
ZWxmLl90ZWFyZG93bl9wZXJmb3JtYW5jZSgpCiAgICAgICAgIHN1cGVyKENocm9taXVtQW5kcm9p
ZERyaXZlciwgc2VsZikuX19kZWxfXygpCiAKKyAgICBkZWYgX3NldHVwX21kNXN1bShzZWxmKToK
KyAgICAgICAgc2VsZi5fbWQ1c3VtX3BhdGggPSAnJXMvb3V0LyVzLyVzJyAlICgKKyAgICAgICAg
ICAgICAgICBzZWxmLl9wb3J0LnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCksIHNlbGYuX3BvcnQu
Z2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCBNRDVTVU1fREVWSUNFX0ZJTEVfTkFNRSkKKyAg
ICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKHNlbGYuX21kNXN1bV9wYXRoKQorICAgICAgICBp
ZiBzZWxmLl9maWxlX2V4aXN0c19vbl9kZXZpY2UoTUQ1U1VNX0RFVklDRV9QQVRIKToKKyAgICAg
ICAgICAgIHJldHVybgorICAgICAgICBpZiBub3Qgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5f
bWQ1c3VtX3BhdGgsIE1ENVNVTV9ERVZJQ0VfUEFUSCk6CisgICAgICAgICAgICBfbG9nLmVycm9y
KCdDb3VsZCBub3QgcHVzaCBtZDVzdW0gdG8gZGV2aWNlJykKKwogICAgIGRlZiBfc2V0dXBfdGVz
dChzZWxmKToKICAgICAgICAgaWYgc2VsZi5faGFzX3NldHVwOgogICAgICAgICAgICAgcmV0dXJu
CkBAIC0zNDAsMTAgKzM2MCw2IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZERyaXZlcihkcml2ZXIu
RHJpdmVyKToKICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAnbWtkaXIn
LCAnLXAnLCBERVZJQ0VfRFJUX0RJUl0pCiAgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChb
J3NoZWxsJywgJ2NobW9kJywgJzc3NycsIERFVklDRV9EUlRfRElSXSkKIAotICAgICAgICBzZWxm
Ll9wdXNoX2V4ZWN1dGFibGUoKQotICAgICAgICBzZWxmLl9wdXNoX2ZvbnRzKCkKLSAgICAgICAg
c2VsZi5fc3luY2hyb25pemVfZGF0ZXRpbWUoKQotCiAgICAgICAgICMgRGVsZXRlIHRoZSBkaXNr
IGNhY2hlIGlmIGFueSB0byBlbnN1cmUgYSBjbGVhbiB0ZXN0IHJ1bi4KICAgICAgICAgIyBUaGlz
IGlzIGxpa2Ugd2hhdCdzIGRvbmUgaW4gQ2hyb21pdW1Qb3J0LnNldHVwX3Rlc3RfcnVuIGJ1dCBv
biB0aGUgZGV2aWNlLgogICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcsICdy
bScsICctcicsIERSVF9BUFBfQ0FDSEVfRElSXSkKQEAgLTM1NywyOSArMzczLDM0IEBAIGNsYXNz
IENocm9taXVtQW5kcm9pZERyaXZlcihkcml2ZXIuRHJpdmVyKToKICAgICBkZWYgX2Fib3J0KHNl
bGYsIG1lc3NhZ2UpOgogICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignWyVzXSAlcycgJSAo
c2VsZi5fZGV2aWNlX3NlcmlhbCwgbWVzc2FnZSkpCiAKKyAgICBAc3RhdGljbWV0aG9kCisgICAg
ZGVmIF9leHRyYWN0X2hhc2hlc19mcm9tX21kNXN1bV9vdXRwdXQobWQ1c3VtX291dHB1dCk6Cisg
ICAgICAgIGFzc2VydCBtZDVzdW1fb3V0cHV0CisgICAgICAgIHJldHVybiBbbGluZS5zcGxpdCgn
ICAnKVswXSBmb3IgbGluZSBpbiBtZDVzdW1fb3V0cHV0XQorCisgICAgZGVmIF9wdXNoX2ZpbGVf
aWZfbmVlZGVkKHNlbGYsIGhvc3RfZmlsZSwgZGV2aWNlX2ZpbGUpOgorICAgICAgICBhc3NlcnQg
b3MucGF0aC5leGlzdHMoaG9zdF9maWxlKQorICAgICAgICBkZXZpY2VfaGFzaGVzID0gc2VsZi5f
ZXh0cmFjdF9oYXNoZXNfZnJvbV9tZDVzdW1fb3V0cHV0KAorICAgICAgICAgICAgICAgIHNlbGYu
X3BvcnQuaG9zdC5leGVjdXRpdmUucG9wZW4oc2VsZi5fYWRiX2NvbW1hbmQgKyBbJ3NoZWxsJywg
TUQ1U1VNX0RFVklDRV9QQVRILCBkZXZpY2VfZmlsZV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5zdGRvdXQp
CisgICAgICAgIGhvc3RfaGFzaGVzID0gc2VsZi5fZXh0cmFjdF9oYXNoZXNfZnJvbV9tZDVzdW1f
b3V0cHV0KAorICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuaG9zdC5leGVjdXRpdmUucG9wZW4o
YXJncz1bJyVzX2hvc3QnICUgc2VsZi5fbWQ1c3VtX3BhdGgsIGhvc3RfZmlsZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vz
cy5QSVBFKS5zdGRvdXQpCisgICAgICAgIGlmIGhvc3RfaGFzaGVzIGFuZCBkZXZpY2VfaGFzaGVz
ID09IGhvc3RfaGFzaGVzOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuX3B1c2hf
dG9fZGV2aWNlKGhvc3RfZmlsZSwgZGV2aWNlX2ZpbGUpCisKICAgICBkZWYgX3B1c2hfZXhlY3V0
YWJsZShzZWxmKToKKyAgICAgICAgc2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9wb3J0
Ll9wYXRoX3RvX2ZvcndhcmRlcigpLCBERVZJQ0VfRk9SV0FSREVSX1BBVEgpCisgICAgICAgIHNl
bGYuX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnRHVtcFJlbmRl
clRyZWUucGFrJyksIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlLnBhaycpCisgICAg
ICAgIHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnRHVt
cFJlbmRlclRyZWVfcmVzb3VyY2VzJyksIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVl
X3Jlc291cmNlcycpCisgICAgICAgIHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2VsZi5fcG9y
dC5fYnVpbGRfcGF0aCgnYW5kcm9pZF9tYWluX2ZvbnRzLnhtbCcpLCBERVZJQ0VfRFJUX0RJUiAr
ICdhbmRyb2lkX21haW5fZm9udHMueG1sJykKKyAgICAgICAgc2VsZi5fcHVzaF9maWxlX2lmX25l
ZWRlZChzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdhbmRyb2lkX2ZhbGxiYWNrX2ZvbnRzLnhtbCcp
LCBERVZJQ0VfRFJUX0RJUiArICdhbmRyb2lkX2ZhbGxiYWNrX2ZvbnRzLnhtbCcpCisgICAgICAg
IHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3VuaW5zdGFsbCcsIERSVF9BUFBfUEFDS0FHRV0pCiAg
ICAgICAgIGRydF9ob3N0X3BhdGggPSBzZWxmLl9wb3J0Ll9wYXRoX3RvX2RyaXZlcigpCi0gICAg
ICAgIGZvcndhcmRlcl9ob3N0X3BhdGggPSBzZWxmLl9wb3J0Ll9wYXRoX3RvX2ZvcndhcmRlcigp
Ci0gICAgICAgIGhvc3Rfc3RhbXAgPSBpbnQoZmxvYXQobWF4KG9zLnN0YXQoZHJ0X2hvc3RfcGF0
aCkuc3RfbXRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQo
Zm9yd2FyZGVyX2hvc3RfcGF0aCkuc3RfbXRpbWUpKSkKLSAgICAgICAgZGV2aWNlX3N0YW1wID0g
aW50KGZsb2F0KHNlbGYuX3J1bl9hZGJfY29tbWFuZChbCi0gICAgICAgICAgICAnc2hlbGwnLCAn
Y2F0ICVzIDI+L2Rldi9udWxsIHx8IGVjaG8gMCcgJSBERVZJQ0VfRFJUX1NUQU1QX1BBVEhdKSkp
Ci0gICAgICAgIGlmIGRldmljZV9zdGFtcCAhPSBob3N0X3N0YW1wOgotICAgICAgICAgICAgc2Vs
Zi5fbG9nX2RlYnVnKCdQdXNoaW5nIGV4ZWN1dGFibGUnKQotICAgICAgICAgICAgc2VsZi5fcHVz
aF90b19kZXZpY2UoZm9yd2FyZGVyX2hvc3RfcGF0aCwgREVWSUNFX0ZPUldBUkRFUl9QQVRIKQot
ICAgICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsndW5pbnN0YWxsJywgRFJUX0FQUF9Q
QUNLQUdFXSkKLSAgICAgICAgICAgIGluc3RhbGxfcmVzdWx0ID0gc2VsZi5fcnVuX2FkYl9jb21t
YW5kKFsnaW5zdGFsbCcsIGRydF9ob3N0X3BhdGhdKQotICAgICAgICAgICAgaWYgaW5zdGFsbF9y
ZXN1bHQuZmluZCgnU3VjY2VzcycpID09IC0xOgotICAgICAgICAgICAgICAgIHNlbGYuX2Fib3J0
KCdGYWlsZWQgdG8gaW5zdGFsbCAlcyBvbnRvIGRldmljZTogJXMnICUgKGRydF9ob3N0X3BhdGgs
IGluc3RhbGxfcmVzdWx0KSkKLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYu
X3BvcnQuX2J1aWxkX3BhdGgoJ0R1bXBSZW5kZXJUcmVlLnBhaycpLCBERVZJQ0VfRFJUX0RJUiAr
ICdEdW1wUmVuZGVyVHJlZS5wYWsnKQotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uo
c2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnRHVtcFJlbmRlclRyZWVfcmVzb3VyY2VzJyksIERFVklD
RV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlX3Jlc291cmNlcycpCi0gICAgICAgICAgICBzZWxm
Ll9wdXNoX3RvX2RldmljZShzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdhbmRyb2lkX21haW5fZm9u
dHMueG1sJyksIERFVklDRV9EUlRfRElSICsgJ2FuZHJvaWRfbWFpbl9mb250cy54bWwnKQotICAg
ICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnYW5k
cm9pZF9mYWxsYmFja19mb250cy54bWwnKSwgREVWSUNFX0RSVF9ESVIgKyAnYW5kcm9pZF9mYWxs
YmFja19mb250cy54bWwnKQotICAgICAgICAgICAgIyBWZXJzaW9uIGNvbnRyb2wgb2YgdGVzdCBy
ZXNvdXJjZXMgaXMgZGVwZW5kZW50IG9uIGV4ZWN1dGFibGVzLAotICAgICAgICAgICAgIyBiZWNh
dXNlIHdlIHdpbGwgYWx3YXlzIHJlYnVpbGQgZXhlY3V0YWJsZXMgd2hlbiByZXNvdXJjZXMgYXJl
Ci0gICAgICAgICAgICAjIHVwZGF0ZWQuCi0gICAgICAgICAgICBzZWxmLl9wdXNoX3Rlc3RfcmVz
b3VyY2VzKCkKLSAgICAgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ2Vj
aG8gJWQgPiVzJyAlIChob3N0X3N0YW1wLCBERVZJQ0VfRFJUX1NUQU1QX1BBVEgpXSkKKyAgICAg
ICAgaW5zdGFsbF9yZXN1bHQgPSBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydpbnN0YWxsJywgZHJ0
X2hvc3RfcGF0aF0pCisgICAgICAgIGlmIGluc3RhbGxfcmVzdWx0LmZpbmQoJ1N1Y2Nlc3MnKSA9
PSAtMToKKyAgICAgICAgICAgIHNlbGYuX2Fib3J0KCdGYWlsZWQgdG8gaW5zdGFsbCAlcyBvbnRv
IGRldmljZTogJXMnICUgKGRydF9ob3N0X3BhdGgsIGluc3RhbGxfcmVzdWx0KSkKIAogICAgIGRl
ZiBfcHVzaF9mb250cyhzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuX2NoZWNrX3ZlcnNpb24o
REVWSUNFX0ZPTlRTX0RJUiwgRk9OVF9GSUxFU19WRVJTSU9OKToKQEAgLTM5NCwxOCArNDE1LDcg
QEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgIGRlZiBf
cHVzaF90ZXN0X3Jlc291cmNlcyhzZWxmKToKICAgICAgICAgc2VsZi5fbG9nX2RlYnVnKCdQdXNo
aW5nIHRlc3QgcmVzb3VyY2VzJykKICAgICAgICAgZm9yIHJlc291cmNlIGluIFRFU1RfUkVTT1VS
Q0VTX1RPX1BVU0g6Ci0gICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9wb3J0
LmxheW91dF90ZXN0c19kaXIoKSArICcvJyArIHJlc291cmNlLCBERVZJQ0VfTEFZT1VUX1RFU1RT
X0RJUiArIHJlc291cmNlKQotCi0gICAgZGVmIF9zeW5jaHJvbml6ZV9kYXRldGltZShzZWxmKToK
LSAgICAgICAgIyBUaGUgZGF0ZS90aW1lIGJldHdlZW4gaG9zdCBhbmQgZGV2aWNlIG1heSBub3Qg
YmUgc3luY2hyb25pemVkLgotICAgICAgICAjIFdlIG5lZWQgdG8gbWFrZSB0aGVtIHN5bmNocm9u
aXplZCwgb3RoZXJ3aXNlIHRlc3RzIG1pZ2h0IGZhaWwuCi0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgICMgR2V0IHNlY29uZHMgc2luY2UgMTk3MC0wMS0wMSAwMDowMDowMCBVVEMuCi0gICAgICAg
ICAgICBob3N0X2RhdGV0aW1lID0gc2VsZi5fcG9ydC5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsn
ZGF0ZScsICctdScsICcrJXMnXSkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgIyBSZXNl
dCB0byAxOTcwLTAxLTAxIDAwOjAwOjAwIFVUQy4KLSAgICAgICAgICAgIGhvc3RfZGF0ZXRpbWUg
PSAwCi0gICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ2RhdGUgLXUgJXMn
ICUgKGhvc3RfZGF0ZXRpbWUpXSkKKyAgICAgICAgICAgIHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVk
ZWQoc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkgKyAnLycgKyByZXNvdXJjZSwgREVWSUNF
X0xBWU9VVF9URVNUU19ESVIgKyByZXNvdXJjZSkKIAogICAgIGRlZiBfY2hlY2tfdmVyc2lvbihz
ZWxmLCBkaXIsIHZlcnNpb24pOgogICAgICAgICBhc3NlcnQoZGlyLmVuZHN3aXRoKCcvJykpCkBA
IC02NjQsOCArNjc0LDYgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkRHJpdmVyKGRyaXZlci5Ecml2
ZXIpOgogICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgY3VycmVudF9jaGFyID0gc2Vs
Zi5fc2VydmVyX3Byb2Nlc3MucmVhZF9zdGRvdXQoZGVhZGxpbmUsIDEpCiAgICAgICAgICAgICBp
ZiBjdXJyZW50X2NoYXIgPT0gJyAnOgotICAgICAgICAgICAgICAgIGlmIGxhc3RfY2hhciA9PSAn
Iyc6CisgICAgICAgICAgICAgICAgaWYgbGFzdF9jaGFyIGluICgnIycsICckJyk6CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgIGlmIGxhc3RfY2hhciA9PSAnJCc6
Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdBZGJkIGlzIG5vdCBy
dW5uaW5nIGFzIHJvb3QnKQogICAgICAgICAgICAgbGFzdF9jaGFyID0gY3VycmVudF9jaGFyCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMGI2ZTE1MzE3MjNmNWI2MWU2YmM0NjJiNGVlMTE1YzM2OWYzYzk1NC4uYzg2MzVhM2Vm
YzgyYjBlY2RhYzI0ODQxNGIyYjQ4NjVlZTMwMDlkYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisy
MDEyLTA5LTEwICBQaGlsaXBwZSBMaWFyZCAgPHBsaWFyZEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgU3VwcG9ydCBMYXlvdXRUZXN0cyBvbiBub24tcm9vdGVkIEFuZHJvaWQgZGV2aWNlcy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MzQ2CisKKyAg
ICAgICAgaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3VyY2UtdGVzdC5qcyB3YXMg
YXNzdW1pbmcgdGhhdCB0aGUKKyAgICAgICAgY2xpZW50IGFuZCBzZXJ2ZXIgY2xvY2tzIGFyZSB0
aGUgc2FtZSB3aGljaCBpcyBubyBsb25nZXIgdHJ1ZSBzaW5jZSB3ZQorICAgICAgICBhcmUgZ2V0
dGluZyByaWQgb2YgaG9zdC9kZXZpY2UgY2xvY2sgc3luY2hyb25pemF0aW9uLgorCisgICAgICAg
ICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY2FjaGUtc2ltdWxhdG9yLmNnaToKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9jdXJyZW50LXRpbWUuY2dpOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9zdWJyZXNvdXJjZS10ZXN0Lmpz
OgorICAgICAgICAoZ2V0U2VydmVyRGF0ZSk6CisgICAgICAgIChuZXh0VGVzdCk6CisgICAgICAg
ICh0ZXN0Q29tcGxldGUpOgorICAgICAgICAocnVuVGVzdHMpOgorCiAyMDEyLTA5LTExICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgV1RS
IG5lZWRzIGFuIGltcGxlbWVudGF0aW9uIG9mIGFwcGxpY2F0aW9uQ2FjaGVEaXNrVXNhZ2VGb3JP
cmlnaW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2Vz
L2N1cnJlbnQtdGltZS5jZ2kgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNl
cy9jdXJyZW50LXRpbWUuY2dpCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1NDI2NWYzNzMxZWExODM5OGM5NTRmMmM4
MWVjZWMyOTZlYzYzMDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2NhY2hlL3Jlc291cmNlcy9jdXJyZW50LXRpbWUuY2dpCkBAIC0wLDAgKzEsNSBAQAorIyEvdXNy
L2Jpbi9wZXJsIC13CisKK3ByaW50ICJDb250ZW50LXR5cGU6IHRleHQvcGxhaW5cbiI7Citwcmlu
dCAiXG4iOworcHJpbnQgdGltZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3VyY2UtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY2FjaGUvcmVzb3VyY2VzL3N1YnJlc291cmNlLXRlc3QuanMKaW5kZXggY2U0YmIxMjk1
MDMyNmFhYzI2ZjdjOTlhZDMwYTQxMmE0N2Y5Yzk2My4uZTRjOGZlNTI1NmEwZDQyNWIwZThjOWJh
NzVjN2RmZjRkNWVjMWYxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNo
ZS9yZXNvdXJjZXMvc3VicmVzb3VyY2UtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NhY2hlL3Jlc291cmNlcy9zdWJyZXNvdXJjZS10ZXN0LmpzCkBAIC0yNSw2ICsyNSwyMiBA
QCB2YXIgY29uc29sZURpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xlRGl2KTsKIGZyYW1lMi5vbmxvYWQgPSBmdW5jdGlv
biAoKSB7IGxvYWRlZEZyYW1lQ291bnQrKzsgfQogCitmdW5jdGlvbiBnZXRTZXJ2ZXJEYXRlKCkK
K3sKKyAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgdmFyIHQwID0gbmV3
IERhdGUoKS5nZXRUaW1lKCk7CisgICAgcmVxLm9wZW4oJ0dFVCcsICIvY2FjaGUvcmVzb3VyY2Vz
L2N1cnJlbnQtdGltZS5jZ2kiLCBmYWxzZSAvKiBibG9ja2luZyAqLyk7CisgICAgcmVxLnNlbmQo
KTsKKyAgICB2YXIgc2VydmVyVG9DbGllbnRUaW1lID0gKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0g
dDApIC8gMjsKKyAgICBpZiAocmVxLnN0YXR1cyAhPSAyMDApIHsKKyAgICAgICAgY29uc29sZS5s
b2coInVuZXhwZWN0ZWQgc3RhdHVzIGNvZGUgIiArIHJlcS5zdGF0dXMgKyAiLCBleHBlY3RlZCAy
MDAuIik7CisgICAgICAgIHJldHVybiBuZXcgRGF0ZSgpOworICAgIH0KKyAgICByZXR1cm4gbmV3
IERhdGUoKHBhcnNlSW50KHJlcS5yZXNwb25zZVRleHQpICogMTAwMCkgKyBzZXJ2ZXJUb0NsaWVu
dFRpbWUpOworfQorCit2YXIgc2VydmVyQ2xpZW50VGltZURlbHRhID0gZ2V0U2VydmVyRGF0ZSgp
LmdldFRpbWUoKSAtIG5ldyBEYXRlKCkuZ2V0VGltZSgpOworCiBmdW5jdGlvbiBsb2FkVGVzdEZy
YW1lKGZyYW1lLCB0ZXN0U3BlYykKIHsKICAgICB2YXIgZmlyc3QgPSB0cnVlOwpAQCAtNjcsNyAr
ODMsNyBAQCBmdW5jdGlvbiBuZXh0VGVzdCgpCiB7CiAgICAgdmFyIHRlc3RTcGVjID0gdGVzdHNb
Y3VycmVudFRlc3RdOwogICAgIHVuaXF1ZUlkID0gTWF0aC5mbG9vcigxMDAwMDAwMDAgKiBNYXRo
LnJhbmRvbSgpKTsKLSAgICBub3cgPSBuZXcgRGF0ZSgpOworICAgIG5vdyA9IG5ldyBEYXRlKG5l
dyBEYXRlKCkuZ2V0VGltZSgpICsgc2VydmVyQ2xpZW50VGltZURlbHRhKTsKICAgICBpZiAoIXRl
c3RTcGVjKSB7CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwpAQCAtODAsMjIgKzk2LDIyIEBAIGZ1bmN0aW9uIG5leHRU
ZXN0KCkKIGZ1bmN0aW9uIHRlc3RDb21wbGV0ZSh0ZXN0U3BlYykKIHsKICAgICB2YXIgbGluZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgIHZhciByZXN1bHQgPSBmcmFtZTEu
Y29udGVudFdpbmRvdy5yYW5kb21OdW1iZXIgPT0gZnJhbWUyLmNvbnRlbnRXaW5kb3cucmFuZG9t
TnVtYmVyID8gJ0NhY2hlZCcgOiAnVW5jYWNoZWQnOyAgICAKKyAgICB2YXIgcmVzdWx0ID0gZnJh
bWUxLmNvbnRlbnRXaW5kb3cucmFuZG9tTnVtYmVyID09IGZyYW1lMi5jb250ZW50V2luZG93LnJh
bmRvbU51bWJlciA/ICdDYWNoZWQnIDogJ1VuY2FjaGVkJzsKICAgICB2YXIgcGFzc2VkID0gcmVz
dWx0ID09IHRlc3RTcGVjLmV4cGVjdGVkUmVzdWx0OwogCiAgICAgaWYgKHRlc3RTcGVjLmRlc2Ny
aXB0aW9uKQogICAgICAgICBsaW5lLmlubmVySFRNTCArPSB0ZXN0U3BlYy5kZXNjcmlwdGlvbjsK
ICAgICBlbHNlIHsKLSAgICAgICAgZm9yICh2YXIgaGVhZGVyIGluIHRlc3RTcGVjLnRlc3RIZWFk
ZXJzKSAKKyAgICAgICAgZm9yICh2YXIgaGVhZGVyIGluIHRlc3RTcGVjLnRlc3RIZWFkZXJzKQog
ICAgICAgICAgICAgbGluZS5pbm5lckhUTUwgKz0gaGVhZGVyICsgIjogIiArIHRlc3RTcGVjLnRl
c3RIZWFkZXJzW2hlYWRlcl0gKyAiOyAiOwogICAgIH0KICAgICBpZiAodGVzdFNwZWMuZGVsYXkp
CiAgICAgICAgIGxpbmUuaW5uZXJIVE1MICs9ICJbZGVsYXk9IiArIHRlc3RTcGVjLmRlbGF5ICsg
InNdICIKICAgICBsaW5lLmlubmVySFRNTCArPSAiICAocmVzdWx0PSIgKyByZXN1bHQgKyAiIGV4
cGVjdGVkPSIgKyB0ZXN0U3BlYy5leHBlY3RlZFJlc3VsdCArICIpICI7CiAgICAgbGluZS5pbm5l
ckhUTUwgKz0gcGFzc2VkID8gIjxmb250IGNvbG9yPWdyZWVuPlBBU1M8L2ZvbnQ+ICIgOiAiPGZv
bnQgY29sb3I9cmVkPkZBSUw8L2ZvbnQ+ICIKLSAgICAgICAgCisKICAgICBjb25zb2xlRGl2LmFw
cGVuZENoaWxkKGxpbmUpOwotICAgIAorCiAgICAgbmV4dFRlc3QoKTsKIH0KIApAQCAtMTA2LDUg
KzEyMiw0IEBAIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICAgICAgbmV4dFRlc3QoKTsKICAgICBl
bHNlCiAgICAgICAgIHNldFRpbWVvdXQocnVuVGVzdHMsIDEwMCk7Ci0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163341</attachid>
            <date>2012-09-11 05:35:10 -0700</date>
            <delta_ts>2012-09-11 06:17:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95346-20120911143445.patch</filename>
            <type>text/plain</type>
            <size>17331</size>
            <attacher name="Philippe Liard">pliard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MTU4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjcyYzBhNzgxMGYwZDFkM2ZhYjA4YTc5YjAwZTM2ZGE2
YWM0MTI4ZS4uMTYzNjliMmQ5NmM1M2I0ZDc3ZDcyY2Q3ZmVjNTc3MjExZGVlZTM2MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDEyLTA5LTEwICBQaGlsaXBwZSBMaWFyZCAgPHBsaWFyZEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3VwcG9ydCBMYXlvdXRUZXN0cyBvbiBub24tcm9vdGVkIGRldmljZXMgZm9yIENo
cm9taXVtIEFuZHJvaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5IERpcmsgUHJhbmtlLgorCisgICAg
ICAgIFdlIHdlcmUgcmVxdWlyaW5nIHJvb3QgcGVybWlzc2lvbnMgdG8gc3luYyByZXNvdXJjZSBm
aWxlcyB3aXRoIHRoZQorICAgICAgICBkZXZpY2UgYnkgY29tcGFyaW5nIGhvc3QgYW5kIGRldmlj
ZSBmaWxlcycgdGltZXN0YW1wIGFmdGVyIHdlCisgICAgICAgIHN5bmNocm9uaXplZCB0aGUgZGV2
aWNlIGFuZCBob3N0IGNsb2Nrcy4KKyAgICAgICAgV2Ugbm93IHJlbHkgb24gbWQ1c3VtIHByb3Zp
ZGVkIGJ5IENocm9taXVtIHRvIGhhbmRsZSBkYXRhIGZpbGVzCisgICAgICAgIHN5bmNocm9uaXph
dGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW0ucHk6CisgICAgICAgIChDaHJvbWl1bVBvcnQuX2NoZWNrX2RyaXZlcl9idWlsZF91cF90
b19kYXRlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtX2FuZHJvaWQucHk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX19pbml0
X18pOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9zZXR1cF90ZXN0KToKKyAgICAg
ICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF9leGVjdXRhYmxlKToKKyAgICAgICAgKENo
cm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF90ZXN0X3Jlc291cmNlcyk6CisgICAgICAgIChDaHJv
bWl1bUFuZHJvaWREcml2ZXIuX3JlYWRfcHJvbXB0KToKKwogMjAxMi0wOS0xMSAgQW5kcmFzIEJl
Y3NpICA8YW5kcmFzLmJlY3NpQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dLMl0gRml4IHRo
ZSBidWlsZCB3aXRoIHJlY2VudCBRdDUKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwCmluZGV4IGFlODZiNTdm
ZmVkNGE5YmU1Y2JmM2QxNGI0NjQwZDZlMjVjZTA5NGUuLmRmNjhjZWQ5NDQ1OTg0N2Q1ZjViY2I1
NTFkMTFmZGY3OWRiMDNlOGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cApAQCAtMTIxLDExICsxMjEs
MTEgQEAKICAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cDppbnNwZWN0b3JfcmVzb3VyY2VzJywKICAgICAgICAgICAgICAgICAnPChzb3VyY2Vf
ZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDp3ZWJraXQnLAogICAgICAgICAgICAgICAg
ICc8KHNvdXJjZV9kaXIpL1dURi9XVEYuZ3lwL1dURi5neXA6d3RmJywKKyAgICAgICAgICAgICAg
ICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNlL2Jhc2UuZ3lwOnRlc3Rfc3VwcG9ydF9iYXNlJywK
ICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9idWlsZC90ZW1wX2d5cC9nb29n
bGV1cmwuZ3lwOmdvb2dsZXVybCcsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rp
cikvdGhpcmRfcGFydHkvaWN1L2ljdS5neXA6aWN1dWMnLAogICAgICAgICAgICAgICAgICc8KGNo
cm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L21lc2EvbWVzYS5neXA6b3NtZXNhJywKICAgICAg
ICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS92OC90b29scy9neXAvdjguZ3lwOnY4JywK
LSAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNlL2Jhc2UuZ3lwOnRlc3Rf
c3VwcG9ydF9iYXNlJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS93ZWJr
aXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5neXA6YmxvYicsCiAgICAgICAgICAgICAgICAgJzwo
Y2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuZ3lwOndlYmtp
dF9zdXBwb3J0JywKICAgICAgICAgICAgIF0sCkBAIC0yODIsOCArMjgyLDkgQEAKICAgICAgICAg
ICAgICAgICAgICAgJ3R5cGUnOiAnc2hhcmVkX2xpYnJhcnknLAogICAgICAgICAgICAgICAgICAg
ICAnZGVwZW5kZW5jaWVzJzogWwogICAgICAgICAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1f
c3JjX2RpcikvYmFzZS9iYXNlLmd5cDp0ZXN0X3N1cHBvcnRfYmFzZScsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90b29scy9hbmRyb2lkL2ZvcndhcmRlci9m
b3J3YXJkZXIuZ3lwOmZvcndhcmRlcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAnPChjaHJv
bWl1bV9zcmNfZGlyKS90ZXN0aW5nL2FuZHJvaWQvbmF0aXZlX3Rlc3QuZ3lwOm5hdGl2ZV90ZXN0
X25hdGl2ZV9jb2RlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19k
aXIpL3Rvb2xzL2FuZHJvaWQvZm9yd2FyZGVyL2ZvcndhcmRlci5neXA6Zm9yd2FyZGVyJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3Rvb2xzL2FuZHJvaWQv
bWQ1c3VtL21kNXN1bS5neXA6bWQ1c3VtJywKICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAg
ICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyEnOiBbCiAgICAgICAgICAgICAgICAgICAgICAg
ICAnSW1hZ2VEaWZmJywKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IGU2NmIwYTIwNDMxOWQxZjg4Njk0ZTM3NmM3MGFj
YzdhMGU4YTNlNWEuLjIwNjIxOWM0YzBhMDA4NGEzNjc2YjAwYjBmODk5YTFkMDE2YTg5ZjMgMTAw
NzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bS5weQpAQCAtNDA1LDEwICs0MDUsOSBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoUG9ydCk6CiAK
ICAgICAgICAgICAgICAgICBpZiAoZGVidWdfbXRpbWUgPiByZWxlYXNlX210aW1lIGFuZCBjb25m
aWd1cmF0aW9uID09ICdSZWxlYXNlJyBvcgogICAgICAgICAgICAgICAgICAgICByZWxlYXNlX210
aW1lID4gZGVidWdfbXRpbWUgYW5kIGNvbmZpZ3VyYXRpb24gPT0gJ0RlYnVnJyk6Ci0gICAgICAg
ICAgICAgICAgICAgIF9sb2cud2FybmluZygnWW91IGFyZSBub3QgcnVubmluZyB0aGUgbW9zdCAn
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVjZW50IER1bXBSZW5kZXJUcmVl
IGJpbmFyeS4gWW91IG5lZWQgdG8gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3Bhc3MgLS1kZWJ1ZyBvciBub3QgdG8gc2VsZWN0IGJldHdlZW4gJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0RlYnVnIGFuZCBSZWxlYXNlLicpCisgICAgICAgICAgICAgICAg
ICAgIG1vc3RfcmVjZW50X2JpbmFyeSA9ICdSZWxlYXNlJyBpZiBjb25maWd1cmF0aW9uID09ICdE
ZWJ1ZycgZWxzZSAnRGVidWcnCisgICAgICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygnWW91
IGFyZSBydW5uaW5nIHRoZSAlcyBiaW5hcnkuIEhvd2V2ZXIgdGhlICVzIGJpbmFyeSBhcHBlYXJz
IHRvIGJlIG1vcmUgcmVjZW50LiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
UGxlYXNlIHBhc3MgLS0lcy4nLCBjb25maWd1cmF0aW9uLCBtb3N0X3JlY2VudF9iaW5hcnksIG1v
c3RfcmVjZW50X2JpbmFyeS5sb3dlcigpKQogICAgICAgICAgICAgICAgICAgICBfbG9nLndhcm5p
bmcoJycpCiAgICAgICAgICAgICAjIFRoaXMgd2lsbCBmYWlsIGlmIHdlIGRvbid0IGhhdmUgYm90
aCBhIGRlYnVnIGFuZCByZWxlYXNlIGJpbmFyeS4KICAgICAgICAgICAgICMgVGhhdCdzIGZpbmUg
YmVjYXVzZSwgaW4gdGhpcyBjYXNlLCB3ZSBtdXN0IGFscmVhZHkgYmUgcnVubmluZyB0aGUKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fYW5kcm9pZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW1fYW5kcm9pZC5weQppbmRleCBkMmIyNjg3MGVhOGMwOGU3OTM4ZWMwNDM4ZTJkN2I3
M2VjZjI5NmUyLi4xNDI4NjNlMTY4NDc2NWY0ZDY3Zjk0NzJmNjMxNzFmNzJiMzNhYTgzIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X2FuZHJvaWQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV9hbmRyb2lkLnB5CkBAIC0zMSw2ICszMSw4IEBAIGltcG9ydCBjb3B5CiBpbXBv
cnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgcmUKK2ltcG9ydCBzZXRzCitpbXBvcnQgc3Vi
cHJvY2VzcwogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRpbWUKIApAQCAtNTQsNyArNTYsNiBA
QCBDT01NQU5EX0xJTkVfRklMRSA9IERFVklDRV9TT1VSQ0VfUk9PVF9ESVIgKyAnY2hyb21lLW5h
dGl2ZS10ZXN0cy1jb21tYW5kLWxpbmUnCiAjIGFuZCBDaHJvbWl1bSdzIHdlYmtpdC9zdXBwb3J0
L3BsYXRmb3JtX3N1cHBvcnRfYW5kcm9pZC5jYy4KIERFVklDRV9EUlRfRElSID0gREVWSUNFX1NP
VVJDRV9ST09UX0RJUiArICdkcnQvJwogREVWSUNFX0ZPUldBUkRFUl9QQVRIID0gREVWSUNFX0RS
VF9ESVIgKyAnZm9yd2FyZGVyJwotREVWSUNFX0RSVF9TVEFNUF9QQVRIID0gREVWSUNFX0RSVF9E
SVIgKyAnRHVtcFJlbmRlclRyZWUuc3RhbXAnCiAKIERSVF9BUFBfUEFDS0FHRSA9ICdvcmcuY2hy
b21pdW0ubmF0aXZlX3Rlc3QnCiBEUlRfQUNUSVZJVFlfRlVMTF9OQU1FID0gRFJUX0FQUF9QQUNL
QUdFICsgJy8uQ2hyb21lTmF0aXZlVGVzdEFjdGl2aXR5JwpAQCAtMTM3LDYgKzEzOCw4IEBAIFRF
U1RfUkVTT1VSQ0VTX1RPX1BVU0ggPSBbCiAgICAgJ2NvbXBvc2l0aW5nL3Jlc291cmNlcy92aWRl
by5tcDQnLAogXQogCitNRDVTVU1fREVWSUNFX0ZJTEVfTkFNRSA9ICdtZDVzdW1fYmluJworTUQ1
U1VNX0RFVklDRV9QQVRIID0gJy9kYXRhL2xvY2FsL3RtcC8nICsgTUQ1U1VNX0RFVklDRV9GSUxF
X05BTUUKIAogY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQp
OgogICAgIHBvcnRfbmFtZSA9ICdjaHJvbWl1bS1hbmRyb2lkJwpAQCAtMzA2LDYgKzMwOSw4IEBA
IGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKIAogCiBj
bGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVyLkRyaXZlcik6CisgICAgX2RhdGFfYWxy
ZWFkeV9wdXNoZWRfZm9yX3dvcmtlciA9IHNldHMuU2V0KCkKKwogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBwb3J0LCB3b3JrZXJfbnVtYmVyLCBwaXhlbF90ZXN0cywgbm9fdGltZW91dD1GYWxzZSk6
CiAgICAgICAgIHN1cGVyKENocm9taXVtQW5kcm9pZERyaXZlciwgc2VsZikuX19pbml0X18ocG9y
dCwgd29ya2VyX251bWJlciwgcGl4ZWxfdGVzdHMsIG5vX3RpbWVvdXQpCiAgICAgICAgIHNlbGYu
X2NtZF9saW5lID0gTm9uZQpAQCAtMzE5LDExICszMjQsMjYgQEAgY2xhc3MgQ2hyb21pdW1BbmRy
b2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgICAgICBzZWxmLl9vcmlnaW5hbF9nb3Zlcm5v
cnMgPSB7fQogICAgICAgICBzZWxmLl9kZXZpY2Vfc2VyaWFsID0gcG9ydC5fZ2V0X2RldmljZV9z
ZXJpYWwod29ya2VyX251bWJlcikKICAgICAgICAgc2VsZi5fYWRiX2NvbW1hbmQgPSBbJ2FkYics
ICctcycsIHNlbGYuX2RldmljZV9zZXJpYWxdCisgICAgICAgIHNlbGYuX3NldHVwX21kNXN1bSgp
CisgICAgICAgIGlmIG5vdCB3b3JrZXJfbnVtYmVyIGluIENocm9taXVtQW5kcm9pZERyaXZlci5f
ZGF0YV9hbHJlYWR5X3B1c2hlZF9mb3Jfd29ya2VyOgorICAgICAgICAgICAgc2VsZi5fcHVzaF9l
eGVjdXRhYmxlKCkKKyAgICAgICAgICAgIHNlbGYuX3B1c2hfZm9udHMoKQorICAgICAgICAgICAg
c2VsZi5fcHVzaF90ZXN0X3Jlc291cmNlcygpCisgICAgICAgICAgICBDaHJvbWl1bUFuZHJvaWRE
cml2ZXIuX2RhdGFfYWxyZWFkeV9wdXNoZWRfZm9yX3dvcmtlci5hZGQod29ya2VyX251bWJlcikK
IAogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICBzZWxmLl90ZWFyZG93bl9wZXJmb3Jt
YW5jZSgpCiAgICAgICAgIHN1cGVyKENocm9taXVtQW5kcm9pZERyaXZlciwgc2VsZikuX19kZWxf
XygpCiAKKyAgICBkZWYgX3NldHVwX21kNXN1bShzZWxmKToKKyAgICAgICAgc2VsZi5fbWQ1c3Vt
X3BhdGggPSAnJXMvb3V0LyVzLyVzJyAlICgKKyAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LnBh
dGhfZnJvbV9jaHJvbWl1bV9iYXNlKCksIHNlbGYuX3BvcnQuZ2V0X29wdGlvbignY29uZmlndXJh
dGlvbicpLCBNRDVTVU1fREVWSUNFX0ZJTEVfTkFNRSkKKyAgICAgICAgYXNzZXJ0IG9zLnBhdGgu
ZXhpc3RzKHNlbGYuX21kNXN1bV9wYXRoKQorICAgICAgICBpZiBzZWxmLl9maWxlX2V4aXN0c19v
bl9kZXZpY2UoTUQ1U1VNX0RFVklDRV9QQVRIKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAg
ICBpZiBub3Qgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fbWQ1c3VtX3BhdGgsIE1ENVNVTV9E
RVZJQ0VfUEFUSCk6CisgICAgICAgICAgICBfbG9nLmVycm9yKCdDb3VsZCBub3QgcHVzaCBtZDVz
dW0gdG8gZGV2aWNlJykKKwogICAgIGRlZiBfc2V0dXBfdGVzdChzZWxmKToKICAgICAgICAgaWYg
c2VsZi5faGFzX3NldHVwOgogICAgICAgICAgICAgcmV0dXJuCkBAIC0zNDAsMTAgKzM2MCw2IEBA
IGNsYXNzIENocm9taXVtQW5kcm9pZERyaXZlcihkcml2ZXIuRHJpdmVyKToKICAgICAgICAgc2Vs
Zi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAnbWtkaXInLCAnLXAnLCBERVZJQ0VfRFJUX0RJ
Ul0pCiAgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ2NobW9kJywgJzc3
NycsIERFVklDRV9EUlRfRElSXSkKIAotICAgICAgICBzZWxmLl9wdXNoX2V4ZWN1dGFibGUoKQot
ICAgICAgICBzZWxmLl9wdXNoX2ZvbnRzKCkKLSAgICAgICAgc2VsZi5fc3luY2hyb25pemVfZGF0
ZXRpbWUoKQotCiAgICAgICAgICMgRGVsZXRlIHRoZSBkaXNrIGNhY2hlIGlmIGFueSB0byBlbnN1
cmUgYSBjbGVhbiB0ZXN0IHJ1bi4KICAgICAgICAgIyBUaGlzIGlzIGxpa2Ugd2hhdCdzIGRvbmUg
aW4gQ2hyb21pdW1Qb3J0LnNldHVwX3Rlc3RfcnVuIGJ1dCBvbiB0aGUgZGV2aWNlLgogICAgICAg
ICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcsICdybScsICctcicsIERSVF9BUFBfQ0FD
SEVfRElSXSkKQEAgLTM1NywyOSArMzczLDM0IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZERyaXZl
cihkcml2ZXIuRHJpdmVyKToKICAgICBkZWYgX2Fib3J0KHNlbGYsIG1lc3NhZ2UpOgogICAgICAg
ICByYWlzZSBBc3NlcnRpb25FcnJvcignWyVzXSAlcycgJSAoc2VsZi5fZGV2aWNlX3NlcmlhbCwg
bWVzc2FnZSkpCiAKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9leHRyYWN0X2hhc2hlc19m
cm9tX21kNXN1bV9vdXRwdXQobWQ1c3VtX291dHB1dCk6CisgICAgICAgIGFzc2VydCBtZDVzdW1f
b3V0cHV0CisgICAgICAgIHJldHVybiBbbGluZS5zcGxpdCgnICAnKVswXSBmb3IgbGluZSBpbiBt
ZDVzdW1fb3V0cHV0XQorCisgICAgZGVmIF9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYsIGhvc3Rf
ZmlsZSwgZGV2aWNlX2ZpbGUpOgorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoaG9zdF9m
aWxlKQorICAgICAgICBkZXZpY2VfaGFzaGVzID0gc2VsZi5fZXh0cmFjdF9oYXNoZXNfZnJvbV9t
ZDVzdW1fb3V0cHV0KAorICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuaG9zdC5leGVjdXRpdmUu
cG9wZW4oc2VsZi5fYWRiX2NvbW1hbmQgKyBbJ3NoZWxsJywgTUQ1U1VNX0RFVklDRV9QQVRILCBk
ZXZpY2VfZmlsZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5zdGRvdXQpCisgICAgICAgIGhvc3RfaGFzaGVz
ID0gc2VsZi5fZXh0cmFjdF9oYXNoZXNfZnJvbV9tZDVzdW1fb3V0cHV0KAorICAgICAgICAgICAg
ICAgIHNlbGYuX3BvcnQuaG9zdC5leGVjdXRpdmUucG9wZW4oYXJncz1bJyVzX2hvc3QnICUgc2Vs
Zi5fbWQ1c3VtX3BhdGgsIGhvc3RfZmlsZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5zdGRvdXQpCisgICAg
ICAgIGlmIGhvc3RfaGFzaGVzIGFuZCBkZXZpY2VfaGFzaGVzID09IGhvc3RfaGFzaGVzOgorICAg
ICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKGhvc3RfZmlsZSwg
ZGV2aWNlX2ZpbGUpCisKICAgICBkZWYgX3B1c2hfZXhlY3V0YWJsZShzZWxmKToKKyAgICAgICAg
c2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9wb3J0Ll9wYXRoX3RvX2ZvcndhcmRlcigp
LCBERVZJQ0VfRk9SV0FSREVSX1BBVEgpCisgICAgICAgIHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVk
ZWQoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnRHVtcFJlbmRlclRyZWUucGFrJyksIERFVklDRV9E
UlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlLnBhaycpCisgICAgICAgIHNlbGYuX3B1c2hfZmlsZV9p
Zl9uZWVkZWQoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnRHVtcFJlbmRlclRyZWVfcmVzb3VyY2Vz
JyksIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlX3Jlc291cmNlcycpCisgICAgICAg
IHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnYW5kcm9p
ZF9tYWluX2ZvbnRzLnhtbCcpLCBERVZJQ0VfRFJUX0RJUiArICdhbmRyb2lkX21haW5fZm9udHMu
eG1sJykKKyAgICAgICAgc2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9wb3J0Ll9idWls
ZF9wYXRoKCdhbmRyb2lkX2ZhbGxiYWNrX2ZvbnRzLnhtbCcpLCBERVZJQ0VfRFJUX0RJUiArICdh
bmRyb2lkX2ZhbGxiYWNrX2ZvbnRzLnhtbCcpCisgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFu
ZChbJ3VuaW5zdGFsbCcsIERSVF9BUFBfUEFDS0FHRV0pCiAgICAgICAgIGRydF9ob3N0X3BhdGgg
PSBzZWxmLl9wb3J0Ll9wYXRoX3RvX2RyaXZlcigpCi0gICAgICAgIGZvcndhcmRlcl9ob3N0X3Bh
dGggPSBzZWxmLl9wb3J0Ll9wYXRoX3RvX2ZvcndhcmRlcigpCi0gICAgICAgIGhvc3Rfc3RhbXAg
PSBpbnQoZmxvYXQobWF4KG9zLnN0YXQoZHJ0X2hvc3RfcGF0aCkuc3RfbXRpbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQoZm9yd2FyZGVyX2hvc3RfcGF0aCku
c3RfbXRpbWUpKSkKLSAgICAgICAgZGV2aWNlX3N0YW1wID0gaW50KGZsb2F0KHNlbGYuX3J1bl9h
ZGJfY29tbWFuZChbCi0gICAgICAgICAgICAnc2hlbGwnLCAnY2F0ICVzIDI+L2Rldi9udWxsIHx8
IGVjaG8gMCcgJSBERVZJQ0VfRFJUX1NUQU1QX1BBVEhdKSkpCi0gICAgICAgIGlmIGRldmljZV9z
dGFtcCAhPSBob3N0X3N0YW1wOgotICAgICAgICAgICAgc2VsZi5fbG9nX2RlYnVnKCdQdXNoaW5n
IGV4ZWN1dGFibGUnKQotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2UoZm9yd2FyZGVy
X2hvc3RfcGF0aCwgREVWSUNFX0ZPUldBUkRFUl9QQVRIKQotICAgICAgICAgICAgc2VsZi5fcnVu
X2FkYl9jb21tYW5kKFsndW5pbnN0YWxsJywgRFJUX0FQUF9QQUNLQUdFXSkKLSAgICAgICAgICAg
IGluc3RhbGxfcmVzdWx0ID0gc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnaW5zdGFsbCcsIGRydF9o
b3N0X3BhdGhdKQotICAgICAgICAgICAgaWYgaW5zdGFsbF9yZXN1bHQuZmluZCgnU3VjY2Vzcycp
ID09IC0xOgotICAgICAgICAgICAgICAgIHNlbGYuX2Fib3J0KCdGYWlsZWQgdG8gaW5zdGFsbCAl
cyBvbnRvIGRldmljZTogJXMnICUgKGRydF9ob3N0X3BhdGgsIGluc3RhbGxfcmVzdWx0KSkKLSAg
ICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ0R1
bXBSZW5kZXJUcmVlLnBhaycpLCBERVZJQ0VfRFJUX0RJUiArICdEdW1wUmVuZGVyVHJlZS5wYWsn
KQotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fcG9ydC5fYnVpbGRfcGF0
aCgnRHVtcFJlbmRlclRyZWVfcmVzb3VyY2VzJyksIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5k
ZXJUcmVlX3Jlc291cmNlcycpCi0gICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxm
Ll9wb3J0Ll9idWlsZF9wYXRoKCdhbmRyb2lkX21haW5fZm9udHMueG1sJyksIERFVklDRV9EUlRf
RElSICsgJ2FuZHJvaWRfbWFpbl9mb250cy54bWwnKQotICAgICAgICAgICAgc2VsZi5fcHVzaF90
b19kZXZpY2Uoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgnYW5kcm9pZF9mYWxsYmFja19mb250cy54
bWwnKSwgREVWSUNFX0RSVF9ESVIgKyAnYW5kcm9pZF9mYWxsYmFja19mb250cy54bWwnKQotICAg
ICAgICAgICAgIyBWZXJzaW9uIGNvbnRyb2wgb2YgdGVzdCByZXNvdXJjZXMgaXMgZGVwZW5kZW50
IG9uIGV4ZWN1dGFibGVzLAotICAgICAgICAgICAgIyBiZWNhdXNlIHdlIHdpbGwgYWx3YXlzIHJl
YnVpbGQgZXhlY3V0YWJsZXMgd2hlbiByZXNvdXJjZXMgYXJlCi0gICAgICAgICAgICAjIHVwZGF0
ZWQuCi0gICAgICAgICAgICBzZWxmLl9wdXNoX3Rlc3RfcmVzb3VyY2VzKCkKLSAgICAgICAgICAg
IHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ2VjaG8gJWQgPiVzJyAlIChob3N0X3N0
YW1wLCBERVZJQ0VfRFJUX1NUQU1QX1BBVEgpXSkKKyAgICAgICAgaW5zdGFsbF9yZXN1bHQgPSBz
ZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydpbnN0YWxsJywgZHJ0X2hvc3RfcGF0aF0pCisgICAgICAg
IGlmIGluc3RhbGxfcmVzdWx0LmZpbmQoJ1N1Y2Nlc3MnKSA9PSAtMToKKyAgICAgICAgICAgIHNl
bGYuX2Fib3J0KCdGYWlsZWQgdG8gaW5zdGFsbCAlcyBvbnRvIGRldmljZTogJXMnICUgKGRydF9o
b3N0X3BhdGgsIGluc3RhbGxfcmVzdWx0KSkKIAogICAgIGRlZiBfcHVzaF9mb250cyhzZWxmKToK
ICAgICAgICAgaWYgbm90IHNlbGYuX2NoZWNrX3ZlcnNpb24oREVWSUNFX0ZPTlRTX0RJUiwgRk9O
VF9GSUxFU19WRVJTSU9OKToKQEAgLTM5NCwxOCArNDE1LDcgQEAgY2xhc3MgQ2hyb21pdW1BbmRy
b2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgIGRlZiBfcHVzaF90ZXN0X3Jlc291cmNlcyhz
ZWxmKToKICAgICAgICAgc2VsZi5fbG9nX2RlYnVnKCdQdXNoaW5nIHRlc3QgcmVzb3VyY2VzJykK
ICAgICAgICAgZm9yIHJlc291cmNlIGluIFRFU1RfUkVTT1VSQ0VTX1RPX1BVU0g6Ci0gICAgICAg
ICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSAr
ICcvJyArIHJlc291cmNlLCBERVZJQ0VfTEFZT1VUX1RFU1RTX0RJUiArIHJlc291cmNlKQotCi0g
ICAgZGVmIF9zeW5jaHJvbml6ZV9kYXRldGltZShzZWxmKToKLSAgICAgICAgIyBUaGUgZGF0ZS90
aW1lIGJldHdlZW4gaG9zdCBhbmQgZGV2aWNlIG1heSBub3QgYmUgc3luY2hyb25pemVkLgotICAg
ICAgICAjIFdlIG5lZWQgdG8gbWFrZSB0aGVtIHN5bmNocm9uaXplZCwgb3RoZXJ3aXNlIHRlc3Rz
IG1pZ2h0IGZhaWwuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMgR2V0IHNlY29uZHMgc2lu
Y2UgMTk3MC0wMS0wMSAwMDowMDowMCBVVEMuCi0gICAgICAgICAgICBob3N0X2RhdGV0aW1lID0g
c2VsZi5fcG9ydC5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsnZGF0ZScsICctdScsICcrJXMnXSkK
LSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgIyBSZXNldCB0byAxOTcwLTAxLTAxIDAwOjAw
OjAwIFVUQy4KLSAgICAgICAgICAgIGhvc3RfZGF0ZXRpbWUgPSAwCi0gICAgICAgIHNlbGYuX3J1
bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ2RhdGUgLXUgJXMnICUgKGhvc3RfZGF0ZXRpbWUpXSkK
KyAgICAgICAgICAgIHNlbGYuX3B1c2hfZmlsZV9pZl9uZWVkZWQoc2VsZi5fcG9ydC5sYXlvdXRf
dGVzdHNfZGlyKCkgKyAnLycgKyByZXNvdXJjZSwgREVWSUNFX0xBWU9VVF9URVNUU19ESVIgKyBy
ZXNvdXJjZSkKIAogICAgIGRlZiBfY2hlY2tfdmVyc2lvbihzZWxmLCBkaXIsIHZlcnNpb24pOgog
ICAgICAgICBhc3NlcnQoZGlyLmVuZHN3aXRoKCcvJykpCkBAIC02NjQsOCArNjc0LDYgQEAgY2xh
c3MgQ2hyb21pdW1BbmRyb2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgICAgICB3aGlsZSBU
cnVlOgogICAgICAgICAgICAgY3VycmVudF9jaGFyID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucmVh
ZF9zdGRvdXQoZGVhZGxpbmUsIDEpCiAgICAgICAgICAgICBpZiBjdXJyZW50X2NoYXIgPT0gJyAn
OgotICAgICAgICAgICAgICAgIGlmIGxhc3RfY2hhciA9PSAnIyc6CisgICAgICAgICAgICAgICAg
aWYgbGFzdF9jaGFyIGluICgnIycsICckJyk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybgot
ICAgICAgICAgICAgICAgIGlmIGxhc3RfY2hhciA9PSAnJCc6Ci0gICAgICAgICAgICAgICAgICAg
IHJhaXNlIEFzc2VydGlvbkVycm9yKCdBZGJkIGlzIG5vdCBydW5uaW5nIGFzIHJvb3QnKQogICAg
ICAgICAgICAgbGFzdF9jaGFyID0gY3VycmVudF9jaGFyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGI2ZTE1MzE3MjNmNWI2
MWU2YmM0NjJiNGVlMTE1YzM2OWYzYzk1NC4uOGQ1MWU1ZTZmMzM4M2IyYWY0MTFlMDljZjkzYWI5
MGVlYjc0ZTM3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA5LTEwICBQaGlsaXBwZSBM
aWFyZCAgPHBsaWFyZEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3VwcG9ydCBMYXlvdXRUZXN0
cyBvbiBub24tcm9vdGVkIEFuZHJvaWQgZGV2aWNlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MzQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGly
ayBQcmFua2UuCisKKyAgICAgICAgaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3Vy
Y2UtdGVzdC5qcyB3YXMgYXNzdW1pbmcgdGhhdCB0aGUKKyAgICAgICAgY2xpZW50IGFuZCBzZXJ2
ZXIgY2xvY2tzIGFyZSB0aGUgc2FtZSB3aGljaCBpcyBubyBsb25nZXIgdHJ1ZSBzaW5jZSB3ZQor
ICAgICAgICBhcmUgZ2V0dGluZyByaWQgb2YgaG9zdC9kZXZpY2UgY2xvY2sgc3luY2hyb25pemF0
aW9uLgorCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY2FjaGUtc2ltdWxh
dG9yLmNnaToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9jdXJyZW50LXRp
bWUuY2dpOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9zdWJy
ZXNvdXJjZS10ZXN0LmpzOgorICAgICAgICAoZ2V0U2VydmVyRGF0ZSk6CisgICAgICAgIChuZXh0
VGVzdCk6CisgICAgICAgICh0ZXN0Q29tcGxldGUpOgorICAgICAgICAocnVuVGVzdHMpOgorCiAy
MDEyLTA5LTExICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+
CiAKICAgICAgICAgV1RSIG5lZWRzIGFuIGltcGxlbWVudGF0aW9uIG9mIGFwcGxpY2F0aW9uQ2Fj
aGVEaXNrVXNhZ2VGb3JPcmlnaW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y2FjaGUvcmVzb3VyY2VzL2N1cnJlbnQtdGltZS5jZ2kgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2NhY2hlL3Jlc291cmNlcy9jdXJyZW50LXRpbWUuY2dpCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1NDI2NWYzNzMx
ZWExODM5OGM5NTRmMmM4MWVjZWMyOTZlYzYzMDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9jdXJyZW50LXRpbWUuY2dpCkBAIC0wLDAg
KzEsNSBAQAorIyEvdXNyL2Jpbi9wZXJsIC13CisKK3ByaW50ICJDb250ZW50LXR5cGU6IHRleHQv
cGxhaW5cbiI7CitwcmludCAiXG4iOworcHJpbnQgdGltZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3VyY2UtdGVzdC5qcyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3N1YnJlc291cmNlLXRlc3QuanMK
aW5kZXggY2U0YmIxMjk1MDMyNmFhYzI2ZjdjOTlhZDMwYTQxMmE0N2Y5Yzk2My4uZTRjOGZlNTI1
NmEwZDQyNWIwZThjOWJhNzVjN2RmZjRkNWVjMWYxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3VyY2UtdGVzdC5qcworKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9zdWJyZXNvdXJjZS10ZXN0LmpzCkBA
IC0yNSw2ICsyNSwyMiBAQCB2YXIgY29uc29sZURpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOwogZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xlRGl2KTsKIGZyYW1lMi5v
bmxvYWQgPSBmdW5jdGlvbiAoKSB7IGxvYWRlZEZyYW1lQ291bnQrKzsgfQogCitmdW5jdGlvbiBn
ZXRTZXJ2ZXJEYXRlKCkKK3sKKyAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Cisg
ICAgdmFyIHQwID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CisgICAgcmVxLm9wZW4oJ0dFVCcsICIv
Y2FjaGUvcmVzb3VyY2VzL2N1cnJlbnQtdGltZS5jZ2kiLCBmYWxzZSAvKiBibG9ja2luZyAqLyk7
CisgICAgcmVxLnNlbmQoKTsKKyAgICB2YXIgc2VydmVyVG9DbGllbnRUaW1lID0gKG5ldyBEYXRl
KCkuZ2V0VGltZSgpIC0gdDApIC8gMjsKKyAgICBpZiAocmVxLnN0YXR1cyAhPSAyMDApIHsKKyAg
ICAgICAgY29uc29sZS5sb2coInVuZXhwZWN0ZWQgc3RhdHVzIGNvZGUgIiArIHJlcS5zdGF0dXMg
KyAiLCBleHBlY3RlZCAyMDAuIik7CisgICAgICAgIHJldHVybiBuZXcgRGF0ZSgpOworICAgIH0K
KyAgICByZXR1cm4gbmV3IERhdGUoKHBhcnNlSW50KHJlcS5yZXNwb25zZVRleHQpICogMTAwMCkg
KyBzZXJ2ZXJUb0NsaWVudFRpbWUpOworfQorCit2YXIgc2VydmVyQ2xpZW50VGltZURlbHRhID0g
Z2V0U2VydmVyRGF0ZSgpLmdldFRpbWUoKSAtIG5ldyBEYXRlKCkuZ2V0VGltZSgpOworCiBmdW5j
dGlvbiBsb2FkVGVzdEZyYW1lKGZyYW1lLCB0ZXN0U3BlYykKIHsKICAgICB2YXIgZmlyc3QgPSB0
cnVlOwpAQCAtNjcsNyArODMsNyBAQCBmdW5jdGlvbiBuZXh0VGVzdCgpCiB7CiAgICAgdmFyIHRl
c3RTcGVjID0gdGVzdHNbY3VycmVudFRlc3RdOwogICAgIHVuaXF1ZUlkID0gTWF0aC5mbG9vcigx
MDAwMDAwMDAgKiBNYXRoLnJhbmRvbSgpKTsKLSAgICBub3cgPSBuZXcgRGF0ZSgpOworICAgIG5v
dyA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgc2VydmVyQ2xpZW50VGltZURlbHRh
KTsKICAgICBpZiAoIXRlc3RTcGVjKSB7CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
ICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwpAQCAtODAsMjIgKzk2LDIyIEBA
IGZ1bmN0aW9uIG5leHRUZXN0KCkKIGZ1bmN0aW9uIHRlc3RDb21wbGV0ZSh0ZXN0U3BlYykKIHsK
ICAgICB2YXIgbGluZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgIHZhciBy
ZXN1bHQgPSBmcmFtZTEuY29udGVudFdpbmRvdy5yYW5kb21OdW1iZXIgPT0gZnJhbWUyLmNvbnRl
bnRXaW5kb3cucmFuZG9tTnVtYmVyID8gJ0NhY2hlZCcgOiAnVW5jYWNoZWQnOyAgICAKKyAgICB2
YXIgcmVzdWx0ID0gZnJhbWUxLmNvbnRlbnRXaW5kb3cucmFuZG9tTnVtYmVyID09IGZyYW1lMi5j
b250ZW50V2luZG93LnJhbmRvbU51bWJlciA/ICdDYWNoZWQnIDogJ1VuY2FjaGVkJzsKICAgICB2
YXIgcGFzc2VkID0gcmVzdWx0ID09IHRlc3RTcGVjLmV4cGVjdGVkUmVzdWx0OwogCiAgICAgaWYg
KHRlc3RTcGVjLmRlc2NyaXB0aW9uKQogICAgICAgICBsaW5lLmlubmVySFRNTCArPSB0ZXN0U3Bl
Yy5kZXNjcmlwdGlvbjsKICAgICBlbHNlIHsKLSAgICAgICAgZm9yICh2YXIgaGVhZGVyIGluIHRl
c3RTcGVjLnRlc3RIZWFkZXJzKSAKKyAgICAgICAgZm9yICh2YXIgaGVhZGVyIGluIHRlc3RTcGVj
LnRlc3RIZWFkZXJzKQogICAgICAgICAgICAgbGluZS5pbm5lckhUTUwgKz0gaGVhZGVyICsgIjog
IiArIHRlc3RTcGVjLnRlc3RIZWFkZXJzW2hlYWRlcl0gKyAiOyAiOwogICAgIH0KICAgICBpZiAo
dGVzdFNwZWMuZGVsYXkpCiAgICAgICAgIGxpbmUuaW5uZXJIVE1MICs9ICJbZGVsYXk9IiArIHRl
c3RTcGVjLmRlbGF5ICsgInNdICIKICAgICBsaW5lLmlubmVySFRNTCArPSAiICAocmVzdWx0PSIg
KyByZXN1bHQgKyAiIGV4cGVjdGVkPSIgKyB0ZXN0U3BlYy5leHBlY3RlZFJlc3VsdCArICIpICI7
CiAgICAgbGluZS5pbm5lckhUTUwgKz0gcGFzc2VkID8gIjxmb250IGNvbG9yPWdyZWVuPlBBU1M8
L2ZvbnQ+ICIgOiAiPGZvbnQgY29sb3I9cmVkPkZBSUw8L2ZvbnQ+ICIKLSAgICAgICAgCisKICAg
ICBjb25zb2xlRGl2LmFwcGVuZENoaWxkKGxpbmUpOwotICAgIAorCiAgICAgbmV4dFRlc3QoKTsK
IH0KIApAQCAtMTA2LDUgKzEyMiw0IEBAIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICAgICAgbmV4
dFRlc3QoKTsKICAgICBlbHNlCiAgICAgICAgIHNldFRpbWVvdXQocnVuVGVzdHMsIDEwMCk7Ci0K
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163345</attachid>
            <date>2012-09-11 06:17:27 -0700</date>
            <delta_ts>2012-09-11 07:10:25 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-95346-20120911141702.patch</filename>
            <type>text/plain</type>
            <size>17349</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MTczCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzZmYmY3NmFlYjRkZGRmZTUyN2U3NTFmOTg1N2Y1YjZm
YmE2NzBkMi4uM2EyNjNjZTljNWI1ZmZlMzBmZDk4ZWU4N2E3ZTBkNDQ0NGM3ZGY5YyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDEyLTA5LTExICBQaGlsaXBwZSBMaWFyZCAgPHBsaWFyZEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3VwcG9ydCBMYXlvdXRUZXN0cyBvbiBub24tcm9vdGVkIGRldmljZXMgZm9yIENo
cm9taXVtIEFuZHJvaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5IERpcmsgUHJhbmtlLgorCisgICAg
ICAgIFdlIHdlcmUgcmVxdWlyaW5nIHJvb3QgcGVybWlzc2lvbnMgdG8gc3luYyByZXNvdXJjZSBm
aWxlcyB3aXRoIHRoZQorICAgICAgICBkZXZpY2UgYnkgY29tcGFyaW5nIGhvc3QgYW5kIGRldmlj
ZSBmaWxlcycgdGltZXN0YW1wIGFmdGVyIHdlCisgICAgICAgIHN5bmNocm9uaXplZCB0aGUgZGV2
aWNlIGFuZCBob3N0IGNsb2Nrcy4KKyAgICAgICAgV2Ugbm93IHJlbHkgb24gbWQ1c3VtIHByb3Zp
ZGVkIGJ5IENocm9taXVtIHRvIGhhbmRsZSBkYXRhIGZpbGVzCisgICAgICAgIHN5bmNocm9uaXph
dGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW0ucHk6CisgICAgICAgIChDaHJvbWl1bVBvcnQuX2NoZWNrX2RyaXZlcl9idWlsZF91cF90
b19kYXRlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtX2FuZHJvaWQucHk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX19pbml0
X18pOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9zZXR1cF90ZXN0KToKKyAgICAg
ICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF9leGVjdXRhYmxlKToKKyAgICAgICAgKENo
cm9taXVtQW5kcm9pZERyaXZlci5fcHVzaF90ZXN0X3Jlc291cmNlcyk6CisgICAgICAgIChDaHJv
bWl1bUFuZHJvaWREcml2ZXIuX3JlYWRfcHJvbXB0KToKKwogMjAxMi0wOS0xMSAgQ2hyaXN0b3Bo
ZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtXSzJdW1dL
VFJdIFRlc3RSdW5uZXIgbmVlZHMgdG8gaW1wbGVtZW50IGNsZWFyQXBwbGljYXRpb25DYWNoZUZv
ck9yaWdpbgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUu
Z3lwL0R1bXBSZW5kZXJUcmVlLmd5cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKaW5kZXggYWU4NmI1N2ZmZWQ0YTliZTVjYmYzZDE0
YjQ2NDBkNmUyNWNlMDk0ZS4uZGY2OGNlZDk0NDU5ODQ3ZDVmNWJjYjU1MWQxMWZkZjc5ZGIwM2U4
YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1
bXBSZW5kZXJUcmVlLmd5cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwCkBAIC0xMjEsMTEgKzEyMSwxMSBAQAogICAgICAgICAg
ICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwOmluc3BlY3Rv
cl9yZXNvdXJjZXMnLAogICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwOndlYmtpdCcsCiAgICAgICAgICAgICAgICAgJzwoc291cmNlX2Rpcikv
V1RGL1dURi5neXAvV1RGLmd5cDp3dGYnLAorICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3Ny
Y19kaXIpL2Jhc2UvYmFzZS5neXA6dGVzdF9zdXBwb3J0X2Jhc2UnLAogICAgICAgICAgICAgICAg
ICc8KGNocm9taXVtX3NyY19kaXIpL2J1aWxkL3RlbXBfZ3lwL2dvb2dsZXVybC5neXA6Z29vZ2xl
dXJsJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9p
Y3UvaWN1Lmd5cDppY3V1YycsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikv
dGhpcmRfcGFydHkvbWVzYS9tZXNhLmd5cDpvc21lc2EnLAogICAgICAgICAgICAgICAgICc8KGNo
cm9taXVtX3NyY19kaXIpL3Y4L3Rvb2xzL2d5cC92OC5neXA6djgnLAotICAgICAgICAgICAgICAg
ICc8KGNocm9taXVtX3NyY19kaXIpL2Jhc2UvYmFzZS5neXA6dGVzdF9zdXBwb3J0X2Jhc2UnLAog
ICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtp
dF9zdXBwb3J0Lmd5cDpibG9iJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGly
KS93ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5neXA6d2Via2l0X3N1cHBvcnQnLAogICAg
ICAgICAgICAgXSwKQEAgLTI4Miw4ICsyODIsOSBAQAogICAgICAgICAgICAgICAgICAgICAndHlw
ZSc6ICdzaGFyZWRfbGlicmFyeScsCiAgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMn
OiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNlL2Jh
c2UuZ3lwOnRlc3Rfc3VwcG9ydF9iYXNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8KGNo
cm9taXVtX3NyY19kaXIpL3Rvb2xzL2FuZHJvaWQvZm9yd2FyZGVyL2ZvcndhcmRlci5neXA6Zm9y
d2FyZGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3Rl
c3RpbmcvYW5kcm9pZC9uYXRpdmVfdGVzdC5neXA6bmF0aXZlX3Rlc3RfbmF0aXZlX2NvZGUnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdG9vbHMvYW5kcm9p
ZC9mb3J3YXJkZXIvZm9yd2FyZGVyLmd5cDpmb3J3YXJkZXInLAorICAgICAgICAgICAgICAgICAg
ICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdG9vbHMvYW5kcm9pZC9tZDVzdW0vbWQ1c3VtLmd5
cDptZDVzdW0nLAogICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAn
ZGVwZW5kZW5jaWVzISc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICdJbWFnZURpZmYnLApk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW0ucHkKaW5kZXggZTY2YjBhMjA0MzE5ZDFmODg2OTRlMzc2YzcwYWNjN2EwZThhM2U1YS4uMjA2
MjE5YzRjMGEwMDg0YTM2NzZiMDBiMGY4OTlhMWQwMTZhODlmMyAxMDA3NTUKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC00MDUs
MTAgKzQwNSw5IEBAIGNsYXNzIENocm9taXVtUG9ydChQb3J0KToKIAogICAgICAgICAgICAgICAg
IGlmIChkZWJ1Z19tdGltZSA+IHJlbGVhc2VfbXRpbWUgYW5kIGNvbmZpZ3VyYXRpb24gPT0gJ1Jl
bGVhc2UnIG9yCiAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VfbXRpbWUgPiBkZWJ1Z19tdGlt
ZSBhbmQgY29uZmlndXJhdGlvbiA9PSAnRGVidWcnKToKLSAgICAgICAgICAgICAgICAgICAgX2xv
Zy53YXJuaW5nKCdZb3UgYXJlIG5vdCBydW5uaW5nIHRoZSBtb3N0ICcKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdyZWNlbnQgRHVtcFJlbmRlclRyZWUgYmluYXJ5LiBZb3UgbmVl
ZCB0byAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFzcyAtLWRlYnVnIG9y
IG5vdCB0byBzZWxlY3QgYmV0d2VlbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnRGVidWcgYW5kIFJlbGVhc2UuJykKKyAgICAgICAgICAgICAgICAgICAgbW9zdF9yZWNlbnRf
YmluYXJ5ID0gJ1JlbGVhc2UnIGlmIGNvbmZpZ3VyYXRpb24gPT0gJ0RlYnVnJyBlbHNlICdEZWJ1
ZycKKyAgICAgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdZb3UgYXJlIHJ1bm5pbmcgdGhl
ICVzIGJpbmFyeS4gSG93ZXZlciB0aGUgJXMgYmluYXJ5IGFwcGVhcnMgdG8gYmUgbW9yZSByZWNl
bnQuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQbGVhc2UgcGFzcyAtLSVz
LicsIGNvbmZpZ3VyYXRpb24sIG1vc3RfcmVjZW50X2JpbmFyeSwgbW9zdF9yZWNlbnRfYmluYXJ5
Lmxvd2VyKCkpCiAgICAgICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygnJykKICAgICAgICAg
ICAgICMgVGhpcyB3aWxsIGZhaWwgaWYgd2UgZG9uJ3QgaGF2ZSBib3RoIGEgZGVidWcgYW5kIHJl
bGVhc2UgYmluYXJ5LgogICAgICAgICAgICAgIyBUaGF0J3MgZmluZSBiZWNhdXNlLCBpbiB0aGlz
IGNhc2UsIHdlIG11c3QgYWxyZWFkeSBiZSBydW5uaW5nIHRoZQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lk
LnB5CmluZGV4IGQyYjI2ODcwZWE4YzA4ZTc5MzhlYzA0MzhlMmQ3YjczZWNmMjk2ZTIuLjI2OTZi
MDc5YjkzZDIzOTFiNmUxOGQ1ZjMxMWExMDE3MzgwYWViZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJv
aWQucHkKQEAgLTMxLDYgKzMxLDggQEAgaW1wb3J0IGNvcHkKIGltcG9ydCBsb2dnaW5nCiBpbXBv
cnQgb3MKIGltcG9ydCByZQoraW1wb3J0IHNldHMKK2ltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQg
dGhyZWFkaW5nCiBpbXBvcnQgdGltZQogCkBAIC01NCw3ICs1Niw2IEBAIENPTU1BTkRfTElORV9G
SUxFID0gREVWSUNFX1NPVVJDRV9ST09UX0RJUiArICdjaHJvbWUtbmF0aXZlLXRlc3RzLWNvbW1h
bmQtbGluZScKICMgYW5kIENocm9taXVtJ3Mgd2Via2l0L3N1cHBvcnQvcGxhdGZvcm1fc3VwcG9y
dF9hbmRyb2lkLmNjLgogREVWSUNFX0RSVF9ESVIgPSBERVZJQ0VfU09VUkNFX1JPT1RfRElSICsg
J2RydC8nCiBERVZJQ0VfRk9SV0FSREVSX1BBVEggPSBERVZJQ0VfRFJUX0RJUiArICdmb3J3YXJk
ZXInCi1ERVZJQ0VfRFJUX1NUQU1QX1BBVEggPSBERVZJQ0VfRFJUX0RJUiArICdEdW1wUmVuZGVy
VHJlZS5zdGFtcCcKIAogRFJUX0FQUF9QQUNLQUdFID0gJ29yZy5jaHJvbWl1bS5uYXRpdmVfdGVz
dCcKIERSVF9BQ1RJVklUWV9GVUxMX05BTUUgPSBEUlRfQVBQX1BBQ0tBR0UgKyAnLy5DaHJvbWVO
YXRpdmVUZXN0QWN0aXZpdHknCkBAIC0xMzcsNiArMTM4LDggQEAgVEVTVF9SRVNPVVJDRVNfVE9f
UFVTSCA9IFsKICAgICAnY29tcG9zaXRpbmcvcmVzb3VyY2VzL3ZpZGVvLm1wNCcsCiBdCiAKK01E
NVNVTV9ERVZJQ0VfRklMRV9OQU1FID0gJ21kNXN1bV9iaW4nCitNRDVTVU1fREVWSUNFX1BBVEgg
PSAnL2RhdGEvbG9jYWwvdG1wLycgKyBNRDVTVU1fREVWSUNFX0ZJTEVfTkFNRQogCiBjbGFzcyBD
aHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgcG9ydF9uYW1l
ID0gJ2Nocm9taXVtLWFuZHJvaWQnCkBAIC0zMDYsNiArMzA5LDggQEAgY2xhc3MgQ2hyb21pdW1B
bmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogCiAKIGNsYXNzIENocm9taXVtQW5k
cm9pZERyaXZlcihkcml2ZXIuRHJpdmVyKToKKyAgICBfZGF0YV9hbHJlYWR5X3B1c2hlZF9mb3Jf
d29ya2VyID0gc2V0cy5TZXQoKQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIHdvcmtl
cl9udW1iZXIsIHBpeGVsX3Rlc3RzLCBub190aW1lb3V0PUZhbHNlKToKICAgICAgICAgc3VwZXIo
Q2hyb21pdW1BbmRyb2lkRHJpdmVyLCBzZWxmKS5fX2luaXRfXyhwb3J0LCB3b3JrZXJfbnVtYmVy
LCBwaXhlbF90ZXN0cywgbm9fdGltZW91dCkKICAgICAgICAgc2VsZi5fY21kX2xpbmUgPSBOb25l
CkBAIC0zMTksMTEgKzMyNCwyNiBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVy
LkRyaXZlcik6CiAgICAgICAgIHNlbGYuX29yaWdpbmFsX2dvdmVybm9ycyA9IHt9CiAgICAgICAg
IHNlbGYuX2RldmljZV9zZXJpYWwgPSBwb3J0Ll9nZXRfZGV2aWNlX3NlcmlhbCh3b3JrZXJfbnVt
YmVyKQogICAgICAgICBzZWxmLl9hZGJfY29tbWFuZCA9IFsnYWRiJywgJy1zJywgc2VsZi5fZGV2
aWNlX3NlcmlhbF0KKyAgICAgICAgc2VsZi5fc2V0dXBfbWQ1c3VtKCkKKyAgICAgICAgaWYgbm90
IHdvcmtlcl9udW1iZXIgaW4gQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9kYXRhX2FscmVhZHlfcHVz
aGVkX2Zvcl93b3JrZXI6CisgICAgICAgICAgICBzZWxmLl9wdXNoX2V4ZWN1dGFibGUoKQorICAg
ICAgICAgICAgc2VsZi5fcHVzaF9mb250cygpCisgICAgICAgICAgICBzZWxmLl9wdXNoX3Rlc3Rf
cmVzb3VyY2VzKCkKKyAgICAgICAgICAgIENocm9taXVtQW5kcm9pZERyaXZlci5fZGF0YV9hbHJl
YWR5X3B1c2hlZF9mb3Jfd29ya2VyLmFkZCh3b3JrZXJfbnVtYmVyKQogCiAgICAgZGVmIF9fZGVs
X18oc2VsZik6CiAgICAgICAgIHNlbGYuX3RlYXJkb3duX3BlcmZvcm1hbmNlKCkKICAgICAgICAg
c3VwZXIoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLCBzZWxmKS5fX2RlbF9fKCkKIAorICAgIGRlZiBf
c2V0dXBfbWQ1c3VtKHNlbGYpOgorICAgICAgICBzZWxmLl9tZDVzdW1fcGF0aCA9IHNlbGYuX3Bv
cnQuX2J1aWxkX3BhdGhfd2l0aF9jb25maWd1cmF0aW9uKHNlbGYuX3BvcnQuZ2V0X29wdGlvbign
Y29uZmlndXJhdGlvbicpLCBNRDVTVU1fREVWSUNFX0ZJTEVfTkFNRSkKKyAgICAgICAgYXNzZXJ0
IG9zLnBhdGguZXhpc3RzKHNlbGYuX21kNXN1bV9wYXRoKQorCisgICAgICAgIGlmIHNlbGYuX2Zp
bGVfZXhpc3RzX29uX2RldmljZShNRDVTVU1fREVWSUNFX1BBVEgpOgorICAgICAgICAgICAgcmV0
dXJuCisgICAgICAgIGlmIG5vdCBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9tZDVzdW1fcGF0
aCwgTUQ1U1VNX0RFVklDRV9QQVRIKToKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0NvdWxkIG5v
dCBwdXNoIG1kNXN1bSB0byBkZXZpY2UnKQorCiAgICAgZGVmIF9zZXR1cF90ZXN0KHNlbGYpOgog
ICAgICAgICBpZiBzZWxmLl9oYXNfc2V0dXA6CiAgICAgICAgICAgICByZXR1cm4KQEAgLTM0MCwx
MCArMzYwLDYgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgog
ICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcsICdta2RpcicsICctcCcsIERF
VklDRV9EUlRfRElSXSkKICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAn
Y2htb2QnLCAnNzc3JywgREVWSUNFX0RSVF9ESVJdKQogCi0gICAgICAgIHNlbGYuX3B1c2hfZXhl
Y3V0YWJsZSgpCi0gICAgICAgIHNlbGYuX3B1c2hfZm9udHMoKQotICAgICAgICBzZWxmLl9zeW5j
aHJvbml6ZV9kYXRldGltZSgpCi0KICAgICAgICAgIyBEZWxldGUgdGhlIGRpc2sgY2FjaGUgaWYg
YW55IHRvIGVuc3VyZSBhIGNsZWFuIHRlc3QgcnVuLgogICAgICAgICAjIFRoaXMgaXMgbGlrZSB3
aGF0J3MgZG9uZSBpbiBDaHJvbWl1bVBvcnQuc2V0dXBfdGVzdF9ydW4gYnV0IG9uIHRoZSBkZXZp
Y2UuCiAgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ3JtJywgJy1yJywg
RFJUX0FQUF9DQUNIRV9ESVJdKQpAQCAtMzU3LDI5ICszNzMsMzQgQEAgY2xhc3MgQ2hyb21pdW1B
bmRyb2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgIGRlZiBfYWJvcnQoc2VsZiwgbWVzc2Fn
ZSk6CiAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdbJXNdICVzJyAlIChzZWxmLl9kZXZp
Y2Vfc2VyaWFsLCBtZXNzYWdlKSkKIAorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2V4dHJh
Y3RfaGFzaGVzX2Zyb21fbWQ1c3VtX291dHB1dChtZDVzdW1fb3V0cHV0KToKKyAgICAgICAgYXNz
ZXJ0IG1kNXN1bV9vdXRwdXQKKyAgICAgICAgcmV0dXJuIFtsaW5lLnNwbGl0KCcgICcpWzBdIGZv
ciBsaW5lIGluIG1kNXN1bV9vdXRwdXRdCisKKyAgICBkZWYgX3B1c2hfZmlsZV9pZl9uZWVkZWQo
c2VsZiwgaG9zdF9maWxlLCBkZXZpY2VfZmlsZSk6CisgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4
aXN0cyhob3N0X2ZpbGUpCisgICAgICAgIGRldmljZV9oYXNoZXMgPSBzZWxmLl9leHRyYWN0X2hh
c2hlc19mcm9tX21kNXN1bV9vdXRwdXQoCisgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5ob3N0
LmV4ZWN1dGl2ZS5wb3BlbihzZWxmLl9hZGJfY29tbWFuZCArIFsnc2hlbGwnLCBNRDVTVU1fREVW
SUNFX1BBVEgsIGRldmljZV9maWxlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dCkKKyAgICAgICAg
aG9zdF9oYXNoZXMgPSBzZWxmLl9leHRyYWN0X2hhc2hlc19mcm9tX21kNXN1bV9vdXRwdXQoCisg
ICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5ob3N0LmV4ZWN1dGl2ZS5wb3BlbihhcmdzPVsnJXNf
aG9zdCcgJSBzZWxmLl9tZDVzdW1fcGF0aCwgaG9zdF9maWxlXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0
ZG91dCkKKyAgICAgICAgaWYgaG9zdF9oYXNoZXMgYW5kIGRldmljZV9oYXNoZXMgPT0gaG9zdF9o
YXNoZXM6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uo
aG9zdF9maWxlLCBkZXZpY2VfZmlsZSkKKwogICAgIGRlZiBfcHVzaF9leGVjdXRhYmxlKHNlbGYp
OgorICAgICAgICBzZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYuX3BvcnQuX3BhdGhfdG9f
Zm9yd2FyZGVyKCksIERFVklDRV9GT1JXQVJERVJfUEFUSCkKKyAgICAgICAgc2VsZi5fcHVzaF9m
aWxlX2lmX25lZWRlZChzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdEdW1wUmVuZGVyVHJlZS5wYWsn
KSwgREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWUucGFrJykKKyAgICAgICAgc2VsZi5f
cHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdEdW1wUmVuZGVyVHJl
ZV9yZXNvdXJjZXMnKSwgREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWVfcmVzb3VyY2Vz
JykKKyAgICAgICAgc2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9wb3J0Ll9idWlsZF9w
YXRoKCdhbmRyb2lkX21haW5fZm9udHMueG1sJyksIERFVklDRV9EUlRfRElSICsgJ2FuZHJvaWRf
bWFpbl9mb250cy54bWwnKQorICAgICAgICBzZWxmLl9wdXNoX2ZpbGVfaWZfbmVlZGVkKHNlbGYu
X3BvcnQuX2J1aWxkX3BhdGgoJ2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sJyksIERFVklDRV9E
UlRfRElSICsgJ2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sJykKKyAgICAgICAgc2VsZi5fcnVu
X2FkYl9jb21tYW5kKFsndW5pbnN0YWxsJywgRFJUX0FQUF9QQUNLQUdFXSkKICAgICAgICAgZHJ0
X2hvc3RfcGF0aCA9IHNlbGYuX3BvcnQuX3BhdGhfdG9fZHJpdmVyKCkKLSAgICAgICAgZm9yd2Fy
ZGVyX2hvc3RfcGF0aCA9IHNlbGYuX3BvcnQuX3BhdGhfdG9fZm9yd2FyZGVyKCkKLSAgICAgICAg
aG9zdF9zdGFtcCA9IGludChmbG9hdChtYXgob3Muc3RhdChkcnRfaG9zdF9wYXRoKS5zdF9tdGlt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChmb3J3YXJkZXJf
aG9zdF9wYXRoKS5zdF9tdGltZSkpKQotICAgICAgICBkZXZpY2Vfc3RhbXAgPSBpbnQoZmxvYXQo
c2VsZi5fcnVuX2FkYl9jb21tYW5kKFsKLSAgICAgICAgICAgICdzaGVsbCcsICdjYXQgJXMgMj4v
ZGV2L251bGwgfHwgZWNobyAwJyAlIERFVklDRV9EUlRfU1RBTVBfUEFUSF0pKSkKLSAgICAgICAg
aWYgZGV2aWNlX3N0YW1wICE9IGhvc3Rfc3RhbXA6Ci0gICAgICAgICAgICBzZWxmLl9sb2dfZGVi
dWcoJ1B1c2hpbmcgZXhlY3V0YWJsZScpCi0gICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2Rldmlj
ZShmb3J3YXJkZXJfaG9zdF9wYXRoLCBERVZJQ0VfRk9SV0FSREVSX1BBVEgpCi0gICAgICAgICAg
ICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWyd1bmluc3RhbGwnLCBEUlRfQVBQX1BBQ0tBR0VdKQot
ICAgICAgICAgICAgaW5zdGFsbF9yZXN1bHQgPSBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydpbnN0
YWxsJywgZHJ0X2hvc3RfcGF0aF0pCi0gICAgICAgICAgICBpZiBpbnN0YWxsX3Jlc3VsdC5maW5k
KCdTdWNjZXNzJykgPT0gLTE6Ci0gICAgICAgICAgICAgICAgc2VsZi5fYWJvcnQoJ0ZhaWxlZCB0
byBpbnN0YWxsICVzIG9udG8gZGV2aWNlOiAlcycgJSAoZHJ0X2hvc3RfcGF0aCwgaW5zdGFsbF9y
ZXN1bHQpKQotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fcG9ydC5fYnVp
bGRfcGF0aCgnRHVtcFJlbmRlclRyZWUucGFrJyksIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5k
ZXJUcmVlLnBhaycpCi0gICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9wb3J0
Ll9idWlsZF9wYXRoKCdEdW1wUmVuZGVyVHJlZV9yZXNvdXJjZXMnKSwgREVWSUNFX0RSVF9ESVIg
KyAnRHVtcFJlbmRlclRyZWVfcmVzb3VyY2VzJykKLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9f
ZGV2aWNlKHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoJ2FuZHJvaWRfbWFpbl9mb250cy54bWwnKSwg
REVWSUNFX0RSVF9ESVIgKyAnYW5kcm9pZF9tYWluX2ZvbnRzLnhtbCcpCi0gICAgICAgICAgICBz
ZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCdhbmRyb2lkX2ZhbGxi
YWNrX2ZvbnRzLnhtbCcpLCBERVZJQ0VfRFJUX0RJUiArICdhbmRyb2lkX2ZhbGxiYWNrX2ZvbnRz
LnhtbCcpCi0gICAgICAgICAgICAjIFZlcnNpb24gY29udHJvbCBvZiB0ZXN0IHJlc291cmNlcyBp
cyBkZXBlbmRlbnQgb24gZXhlY3V0YWJsZXMsCi0gICAgICAgICAgICAjIGJlY2F1c2Ugd2Ugd2ls
bCBhbHdheXMgcmVidWlsZCBleGVjdXRhYmxlcyB3aGVuIHJlc291cmNlcyBhcmUKLSAgICAgICAg
ICAgICMgdXBkYXRlZC4KLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdGVzdF9yZXNvdXJjZXMoKQot
ICAgICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAnZWNobyAlZCA+JXMn
ICUgKGhvc3Rfc3RhbXAsIERFVklDRV9EUlRfU1RBTVBfUEFUSCldKQorICAgICAgICBpbnN0YWxs
X3Jlc3VsdCA9IHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ2luc3RhbGwnLCBkcnRfaG9zdF9wYXRo
XSkKKyAgICAgICAgaWYgaW5zdGFsbF9yZXN1bHQuZmluZCgnU3VjY2VzcycpID09IC0xOgorICAg
ICAgICAgICAgc2VsZi5fYWJvcnQoJ0ZhaWxlZCB0byBpbnN0YWxsICVzIG9udG8gZGV2aWNlOiAl
cycgJSAoZHJ0X2hvc3RfcGF0aCwgaW5zdGFsbF9yZXN1bHQpKQogCiAgICAgZGVmIF9wdXNoX2Zv
bnRzKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5fY2hlY2tfdmVyc2lvbihERVZJQ0VfRk9O
VFNfRElSLCBGT05UX0ZJTEVTX1ZFUlNJT04pOgpAQCAtMzk0LDE4ICs0MTUsNyBAQCBjbGFzcyBD
aHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVyLkRyaXZlcik6CiAgICAgZGVmIF9wdXNoX3Rlc3Rf
cmVzb3VyY2VzKHNlbGYpOgogICAgICAgICBzZWxmLl9sb2dfZGVidWcoJ1B1c2hpbmcgdGVzdCBy
ZXNvdXJjZXMnKQogICAgICAgICBmb3IgcmVzb3VyY2UgaW4gVEVTVF9SRVNPVVJDRVNfVE9fUFVT
SDoKLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYuX3BvcnQubGF5b3V0X3Rl
c3RzX2RpcigpICsgJy8nICsgcmVzb3VyY2UsIERFVklDRV9MQVlPVVRfVEVTVFNfRElSICsgcmVz
b3VyY2UpCi0KLSAgICBkZWYgX3N5bmNocm9uaXplX2RhdGV0aW1lKHNlbGYpOgotICAgICAgICAj
IFRoZSBkYXRlL3RpbWUgYmV0d2VlbiBob3N0IGFuZCBkZXZpY2UgbWF5IG5vdCBiZSBzeW5jaHJv
bml6ZWQuCi0gICAgICAgICMgV2UgbmVlZCB0byBtYWtlIHRoZW0gc3luY2hyb25pemVkLCBvdGhl
cndpc2UgdGVzdHMgbWlnaHQgZmFpbC4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBHZXQg
c2Vjb25kcyBzaW5jZSAxOTcwLTAxLTAxIDAwOjAwOjAwIFVUQy4KLSAgICAgICAgICAgIGhvc3Rf
ZGF0ZXRpbWUgPSBzZWxmLl9wb3J0Ll9leGVjdXRpdmUucnVuX2NvbW1hbmQoWydkYXRlJywgJy11
JywgJyslcyddKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAjIFJlc2V0IHRvIDE5NzAt
MDEtMDEgMDA6MDA6MDAgVVRDLgotICAgICAgICAgICAgaG9zdF9kYXRldGltZSA9IDAKLSAgICAg
ICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAnZGF0ZSAtdSAlcycgJSAoaG9zdF9k
YXRldGltZSldKQorICAgICAgICAgICAgc2VsZi5fcHVzaF9maWxlX2lmX25lZWRlZChzZWxmLl9w
b3J0LmxheW91dF90ZXN0c19kaXIoKSArICcvJyArIHJlc291cmNlLCBERVZJQ0VfTEFZT1VUX1RF
U1RTX0RJUiArIHJlc291cmNlKQogCiAgICAgZGVmIF9jaGVja192ZXJzaW9uKHNlbGYsIGRpciwg
dmVyc2lvbik6CiAgICAgICAgIGFzc2VydChkaXIuZW5kc3dpdGgoJy8nKSkKQEAgLTY2NCw4ICs2
NzQsNiBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJpdmVyLkRyaXZlcik6CiAgICAg
ICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICBjdXJyZW50X2NoYXIgPSBzZWxmLl9zZXJ2ZXJf
cHJvY2Vzcy5yZWFkX3N0ZG91dChkZWFkbGluZSwgMSkKICAgICAgICAgICAgIGlmIGN1cnJlbnRf
Y2hhciA9PSAnICc6Ci0gICAgICAgICAgICAgICAgaWYgbGFzdF9jaGFyID09ICcjJzoKKyAgICAg
ICAgICAgICAgICBpZiBsYXN0X2NoYXIgaW4gKCcjJywgJyQnKToKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgaWYgbGFzdF9jaGFyID09ICckJzoKLSAgICAgICAg
ICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ0FkYmQgaXMgbm90IHJ1bm5pbmcgYXMg
cm9vdCcpCiAgICAgICAgICAgICBsYXN0X2NoYXIgPSBjdXJyZW50X2NoYXIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZDcz
MTY1M2ZjNDY1NzNjMTlmNDMxNDhkZWY0MWQ0MjkzMmIzMDEyLi5iOTBmZTE4MjAzMDI1YjI4NDA1
ZmI3ZWUxYTc1ODA0NjYxZjViZDBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDktMTEg
IFBoaWxpcHBlIExpYXJkICA8cGxpYXJkQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0
IExheW91dFRlc3RzIG9uIG5vbi1yb290ZWQgQW5kcm9pZCBkZXZpY2VzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUzNDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBEaXJrIFByYW5rZS4KKworICAgICAgICBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNl
cy9zdWJyZXNvdXJjZS10ZXN0LmpzIHdhcyBhc3N1bWluZyB0aGF0IHRoZQorICAgICAgICBjbGll
bnQgYW5kIHNlcnZlciBjbG9ja3MgYXJlIHRoZSBzYW1lIHdoaWNoIGlzIG5vIGxvbmdlciB0cnVl
IHNpbmNlIHdlCisgICAgICAgIGFyZSBnZXR0aW5nIHJpZCBvZiBob3N0L2RldmljZSBjbG9jayBz
eW5jaHJvbml6YXRpb24uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9j
YWNoZS1zaW11bGF0b3IuY2dpOgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2Vz
L2N1cnJlbnQtdGltZS5jZ2k6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVz
b3VyY2VzL3N1YnJlc291cmNlLXRlc3QuanM6CisgICAgICAgIChnZXRTZXJ2ZXJEYXRlKToKKyAg
ICAgICAgKG5leHRUZXN0KToKKyAgICAgICAgKHRlc3RDb21wbGV0ZSk6CisgICAgICAgIChydW5U
ZXN0cyk6CisKIDIwMTItMDktMTEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6
QGludGVsLmNvbT4KIAogICAgICAgICBbV0syXVtXS1RSXSBUZXN0UnVubmVyIG5lZWRzIHRvIGlt
cGxlbWVudCBjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2N1cnJlbnQtdGltZS5jZ2kgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9jdXJyZW50LXRpbWUuY2dpCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA1NDI2NWYzNzMxZWExODM5OGM5NTRmMmM4MWVjZWMyOTZlYzYzMDMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9jdXJyZW50
LXRpbWUuY2dpCkBAIC0wLDAgKzEsNSBAQAorIyEvdXNyL2Jpbi9wZXJsIC13CisKK3ByaW50ICJD
b250ZW50LXR5cGU6IHRleHQvcGxhaW5cbiI7CitwcmludCAiXG4iOworcHJpbnQgdGltZSgpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVz
b3VyY2UtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL3N1
YnJlc291cmNlLXRlc3QuanMKaW5kZXggY2U0YmIxMjk1MDMyNmFhYzI2ZjdjOTlhZDMwYTQxMmE0
N2Y5Yzk2My4uZTRjOGZlNTI1NmEwZDQyNWIwZThjOWJhNzVjN2RmZjRkNWVjMWYxZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3VyY2Ut
dGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9zdWJy
ZXNvdXJjZS10ZXN0LmpzCkBAIC0yNSw2ICsyNSwyMiBAQCB2YXIgY29uc29sZURpdiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25z
b2xlRGl2KTsKIGZyYW1lMi5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IGxvYWRlZEZyYW1lQ291bnQr
KzsgfQogCitmdW5jdGlvbiBnZXRTZXJ2ZXJEYXRlKCkKK3sKKyAgICB2YXIgcmVxID0gbmV3IFhN
TEh0dHBSZXF1ZXN0KCk7CisgICAgdmFyIHQwID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CisgICAg
cmVxLm9wZW4oJ0dFVCcsICIvY2FjaGUvcmVzb3VyY2VzL2N1cnJlbnQtdGltZS5jZ2kiLCBmYWxz
ZSAvKiBibG9ja2luZyAqLyk7CisgICAgcmVxLnNlbmQoKTsKKyAgICB2YXIgc2VydmVyVG9DbGll
bnRUaW1lID0gKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gdDApIC8gMjsKKyAgICBpZiAocmVxLnN0
YXR1cyAhPSAyMDApIHsKKyAgICAgICAgY29uc29sZS5sb2coInVuZXhwZWN0ZWQgc3RhdHVzIGNv
ZGUgIiArIHJlcS5zdGF0dXMgKyAiLCBleHBlY3RlZCAyMDAuIik7CisgICAgICAgIHJldHVybiBu
ZXcgRGF0ZSgpOworICAgIH0KKyAgICByZXR1cm4gbmV3IERhdGUoKHBhcnNlSW50KHJlcS5yZXNw
b25zZVRleHQpICogMTAwMCkgKyBzZXJ2ZXJUb0NsaWVudFRpbWUpOworfQorCit2YXIgc2VydmVy
Q2xpZW50VGltZURlbHRhID0gZ2V0U2VydmVyRGF0ZSgpLmdldFRpbWUoKSAtIG5ldyBEYXRlKCku
Z2V0VGltZSgpOworCiBmdW5jdGlvbiBsb2FkVGVzdEZyYW1lKGZyYW1lLCB0ZXN0U3BlYykKIHsK
ICAgICB2YXIgZmlyc3QgPSB0cnVlOwpAQCAtNjcsNyArODMsNyBAQCBmdW5jdGlvbiBuZXh0VGVz
dCgpCiB7CiAgICAgdmFyIHRlc3RTcGVjID0gdGVzdHNbY3VycmVudFRlc3RdOwogICAgIHVuaXF1
ZUlkID0gTWF0aC5mbG9vcigxMDAwMDAwMDAgKiBNYXRoLnJhbmRvbSgpKTsKLSAgICBub3cgPSBu
ZXcgRGF0ZSgpOworICAgIG5vdyA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgc2Vy
dmVyQ2xpZW50VGltZURlbHRhKTsKICAgICBpZiAoIXRlc3RTcGVjKSB7CiAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwpA
QCAtODAsMjIgKzk2LDIyIEBAIGZ1bmN0aW9uIG5leHRUZXN0KCkKIGZ1bmN0aW9uIHRlc3RDb21w
bGV0ZSh0ZXN0U3BlYykKIHsKICAgICB2YXIgbGluZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOwotICAgIHZhciByZXN1bHQgPSBmcmFtZTEuY29udGVudFdpbmRvdy5yYW5kb21OdW1i
ZXIgPT0gZnJhbWUyLmNvbnRlbnRXaW5kb3cucmFuZG9tTnVtYmVyID8gJ0NhY2hlZCcgOiAnVW5j
YWNoZWQnOyAgICAKKyAgICB2YXIgcmVzdWx0ID0gZnJhbWUxLmNvbnRlbnRXaW5kb3cucmFuZG9t
TnVtYmVyID09IGZyYW1lMi5jb250ZW50V2luZG93LnJhbmRvbU51bWJlciA/ICdDYWNoZWQnIDog
J1VuY2FjaGVkJzsKICAgICB2YXIgcGFzc2VkID0gcmVzdWx0ID09IHRlc3RTcGVjLmV4cGVjdGVk
UmVzdWx0OwogCiAgICAgaWYgKHRlc3RTcGVjLmRlc2NyaXB0aW9uKQogICAgICAgICBsaW5lLmlu
bmVySFRNTCArPSB0ZXN0U3BlYy5kZXNjcmlwdGlvbjsKICAgICBlbHNlIHsKLSAgICAgICAgZm9y
ICh2YXIgaGVhZGVyIGluIHRlc3RTcGVjLnRlc3RIZWFkZXJzKSAKKyAgICAgICAgZm9yICh2YXIg
aGVhZGVyIGluIHRlc3RTcGVjLnRlc3RIZWFkZXJzKQogICAgICAgICAgICAgbGluZS5pbm5lckhU
TUwgKz0gaGVhZGVyICsgIjogIiArIHRlc3RTcGVjLnRlc3RIZWFkZXJzW2hlYWRlcl0gKyAiOyAi
OwogICAgIH0KICAgICBpZiAodGVzdFNwZWMuZGVsYXkpCiAgICAgICAgIGxpbmUuaW5uZXJIVE1M
ICs9ICJbZGVsYXk9IiArIHRlc3RTcGVjLmRlbGF5ICsgInNdICIKICAgICBsaW5lLmlubmVySFRN
TCArPSAiICAocmVzdWx0PSIgKyByZXN1bHQgKyAiIGV4cGVjdGVkPSIgKyB0ZXN0U3BlYy5leHBl
Y3RlZFJlc3VsdCArICIpICI7CiAgICAgbGluZS5pbm5lckhUTUwgKz0gcGFzc2VkID8gIjxmb250
IGNvbG9yPWdyZWVuPlBBU1M8L2ZvbnQ+ICIgOiAiPGZvbnQgY29sb3I9cmVkPkZBSUw8L2ZvbnQ+
ICIKLSAgICAgICAgCisKICAgICBjb25zb2xlRGl2LmFwcGVuZENoaWxkKGxpbmUpOwotICAgIAor
CiAgICAgbmV4dFRlc3QoKTsKIH0KIApAQCAtMTA2LDUgKzEyMiw0IEBAIGZ1bmN0aW9uIHJ1blRl
c3RzKCkKICAgICAgICAgbmV4dFRlc3QoKTsKICAgICBlbHNlCiAgICAgICAgIHNldFRpbWVvdXQo
cnVuVGVzdHMsIDEwMCk7Ci0KIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>