<?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>135551</bug_id>
          
          <creation_ts>2014-08-03 15:05:14 -0700</creation_ts>
          <short_desc>[iOS] run-webkit-tests chokes on unterminated UTF-8 when writing a test result</short_desc>
          <delta_ts>2014-09-11 11:36:17 -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>iPhone / iPad</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Farler">dfarler</reporter>
          <assigned_to name="David Farler">dfarler</assigned_to>
          <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>glenn</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1026539</commentid>
    <comment_count>0</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-08-03 15:05:14 -0700</bug_when>
    <thetext>When writing a crash log or some other output file, webkitpy.common.system.filesystem.write_text_file:227 is the crash point. The crash is reproducible, so I’ll see what about the output is messing this up. For some reason, it’s trying to decode UTF-8 as ascii:

UnicodeDecodeError(&apos;&apos;ascii&apos; codec can&apos;t decode byte 0xe2 in position 305: ordinal not in range(128)’) - characters vary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026540</commentid>
    <comment_count>1</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-08-03 15:21:27 -0700</bug_when>
    <thetext>After fixing the filesystem.py code to explicitly encode the output as UTF-8, it looks like the offending string is something along the lines of:

2014-08-03 15:08:35.863 LayoutTestRelay[3655:180772] Couldn&apos;t launch iOS Simulator from /Applications/Xcode.app/Contents/Developer
untime/Applications/iOS Simulator.app: Error Domain=NSCocoaErrorDomain Code=4 &quot;The application “iOS Simulator.app” could not be launched because it was not found.&quot; UserInfo=0x7f97aad15420 {NSURL=file:///Applications/Xcode.app/Contents/Developer%0Auntime/Applications/iOS%20Simulator.app, NSLocalizedDescription=The application “iOS Simulator.app” could not be launched because it was not found., NSUnderlyingError=0x7f97aad0c3c0 &quot;The operation couldn’t be completed. (OSStatus error -43.)&quot;}

Looks like something might be racing to print to stderr. Sigh … this was working fine before the rewrite. The launch services message is also unexpected, since it’s able to find the app just fine many times before hitting this. It might be that constructing that app URL has some weird characters in it too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026599</commentid>
    <comment_count>2</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-08-03 23:07:33 -0700</bug_when>
    <thetext>Wow. xcode-select —print-path is sending back from NSTask:

/Applications/Xcode.app/Contents/Developer \n \x07  — ASCII 7 — as in BEL. It even beeps my console when tailing the system log. No wonder -[NSString stringByTrimmingCharactersInSet:] isn’t working. Luckily, there is -[NSMutableCharacterSet formUnionWithCharacterSet] and +[NSCharacterSet controlCharacterSet] as well.

Going to remove a couple of other items here that can affect stderr behavior

- print CRASH: &lt;process name&gt; &lt;pid&gt; to stdout instead of stderr since nothing ever prints to stdout during a crash but may print to stderr.

- launch services’ stability of checking on the workspace isn’t 100% reliable, especially when multiple clients are asking about it, so bake in a 10-retry mechanism with random-5 second sleep. There is no external way to relieve the condition.

- Set up DEVELOPER_DIR in the environment once, inside webkitpy. Lots of parallel calls to xcode-select can fail.

- Don’t try to explicitly boot the device while the simulator app is launching, it already does it and can cause a failure to be printed to stderr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026600</commentid>
    <comment_count>3</comment_count>
      <attachid>235965</attachid>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-08-03 23:13:44 -0700</bug_when>
    <thetext>Created attachment 235965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026720</commentid>
    <comment_count>4</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-08-04 16:28:35 -0700</bug_when>
    <thetext>Another thing I noticed: filesystem.py&apos;s write_text_file assumes ASCII in stderr, and I&apos;ve got a couple of places in LayoutTestRelay that may print -[NSError description], which helpfully puts beautiful smart quotes in the actual error string. So, we&apos;ll have to decode the contents as UTF-8 before writing (this should have been done anyway because the writing file handle is locked to UTF-8 encoding).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026961</commentid>
    <comment_count>5</comment_count>
      <attachid>236053</attachid>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-08-05 15:28:27 -0700</bug_when>
    <thetext>Created attachment 236053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028912</commentid>
    <comment_count>6</comment_count>
      <attachid>236053</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-13 14:40:03 -0700</bug_when>
    <thetext>Comment on attachment 236053
Patch

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

&gt; Tools/LayoutTestRelay/LayoutTestRelay/LTRelayController.m:178
&gt; +    sleep(2);

I suggest we add a comment here that explain why we need to wait 2 seconds as it isn&apos;t obvious given that we already waited for the device to boot above.

&gt; Tools/Scripts/webkitpy/port/ios.py:369
&gt; +        except ScriptError:
&gt; +            return &apos;/Applications/Xcode.app/Contents/Developer&apos;

How did you come to the decision to hard code the path &quot;/Applications/Xcode.app/Contents/Developer&quot; when xcode-select errors out as opposed to having the script fail with an error about the Xcode installation on the machine? In particular, what circumstances do you envision xcode-select failing and it being reasonable to assume that Xcode is installed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034021</commentid>
    <comment_count>7</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-09-08 18:39:27 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 236053 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=236053&amp;action=review
&gt; 
&gt; &gt; Tools/LayoutTestRelay/LayoutTestRelay/LTRelayController.m:178
&gt; &gt; +    sleep(2);
&gt; 
&gt; I suggest we add a comment here that explain why we need to wait 2 seconds as it isn&apos;t obvious given that we already waited for the device to boot above.

I’ve made it so!

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/port/ios.py:369
&gt; &gt; +        except ScriptError:
&gt; &gt; +            return &apos;/Applications/Xcode.app/Contents/Developer&apos;
&gt; 
&gt; How did you come to the decision to hard code the path &quot;/Applications/Xcode.app/Contents/Developer&quot; when xcode-select errors out as opposed to having the script fail with an error about the Xcode installation on the machine? In particular, what circumstances do you envision xcode-select failing and it being reasonable to assume that Xcode is installed?

This came out of a race with xcode-select (and I believe LaunchServices) but I only check for the Xcode directory once and it will fail appropriately, so I removed that code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034023</commentid>
    <comment_count>8</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-09-08 18:45:14 -0700</bug_when>
    <thetext>OK, one last patch rev and I think we’ll have it (I’m testing it now).

The last two Unicode problems encountered were:
- a completely random UTF-16 encoded test file, and
- the fact that webkitpy expects ascii everywhere in stderr, while also expecting to be able to encode stderr as UTF-8 implicitly with codecs. NSError can randomly put curly quotes into stderr. We should really not be using the codecs library anymore and switch to io to make porting to Python 3 easier (and we should also be doing that to make encode/decode more straightforward).

If there are any other problems, let’s open a new bug. This one is getting old.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034045</commentid>
    <comment_count>9</comment_count>
      <attachid>237835</attachid>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-09-08 20:22:43 -0700</bug_when>
    <thetext>Created attachment 237835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034048</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-08 20:24:25 -0700</bug_when>
    <thetext>Attachment 237835 did not pass style-queue:


ERROR: Tools/LayoutTestRelay/LayoutTestRelay/LTRelayController.m:97:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/LayoutTestRelay/LayoutTestRelay/LTRelayController.m:97:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034052</commentid>
    <comment_count>11</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-09-08 20:27:21 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Attachment 237835 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Tools/LayoutTestRelay/LayoutTestRelay/LTRelayController.m:97:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
&gt; ERROR: Tools/LayoutTestRelay/LayoutTestRelay/LTRelayController.m:97:  Extra space before ( in function call  [whitespace/parens] [4]
&gt; Total errors found: 2 in 5 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

This is a false positive. I filed https://bugs.webkit.org/show_bug.cgi?id=136663</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034146</commentid>
    <comment_count>12</comment_count>
      <attachid>237835</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-09-09 13:04:26 -0700</bug_when>
    <thetext>Comment on attachment 237835
Patch

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

&gt; Tools/ChangeLog:8
&gt; +        Reduce cases where it&apos;s possible to print random error messages to stderr.

So, there are still code paths that can lead to random error messages (garbage data?) being written to the standard error stream?

&gt; Tools/LayoutTestRelay/LayoutTestRelay/LTRelayController.m:95
&gt; +        uint8_t bytes[[data length]];
&gt; +        [data getBytes:bytes length:[data length]];

Notice that that buffer bytes is never used.

&gt; Tools/Scripts/webkitpy/common/system/filesystem.py:227
&gt; +        with codecs.open(path, &apos;w&apos;, &apos;utf-8&apos;) as f:

Is this change necessary? According to the Python 2.7.8 codec documentation, &lt;https://docs.python.org/2/library/codecs.html&gt;, &quot;utf-8&quot; is an alias of &quot;utf_8&quot; which is an alias of &quot;utf8&quot;. Brent Fulgham confirmed this in bug 136546, comment 4.

For completeness the Python 3.4.1 codec documentation describes the same aliases: &lt;https://docs.python.org/3/library/codecs.html&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034184</commentid>
    <comment_count>13</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-09-09 15:15:25 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 237835 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=237835&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:8
&gt; &gt; +        Reduce cases where it&apos;s possible to print random error messages to stderr.
&gt; 
&gt; So, there are still code paths that can lead to random error messages (garbage data?) being written to the standard error stream?

It looks like we have all of the bases covered, since part of the problem is just perfectly valid Unicode in stderr, so I’ve also made webkitpy tolerant of utf-8 in stderr, where before it only (incorrectly) expected ascii. I don’t see any more symptoms on my end. So, perhaps you wanted me to change this log message?

&gt; 
&gt; &gt; Tools/LayoutTestRelay/LayoutTestRelay/LTRelayController.m:95
&gt; &gt; +        uint8_t bytes[[data length]];
&gt; &gt; +        [data getBytes:bytes length:[data length]];
&gt; 
&gt; Notice that that buffer bytes is never used.

Ah, I think this might be leftovers from the Swift translation. I can cut this out.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/system/filesystem.py:227
&gt; &gt; +        with codecs.open(path, &apos;w&apos;, &apos;utf-8&apos;) as f:
&gt; 
&gt; Is this change necessary? According to the Python 2.7.8 codec documentation, &lt;https://docs.python.org/2/library/codecs.html&gt;, &quot;utf-8&quot; is an alias of &quot;utf_8&quot; which is an alias of &quot;utf8&quot;. Brent Fulgham confirmed this in bug 136546, comment 4.
&gt; 
&gt; For completeness the Python 3.4.1 codec documentation describes the same aliases: &lt;https://docs.python.org/3/library/codecs.html&gt;.

It’s actually not strictly necessary, it came from habit while I was testing. Those aliases you mentioned are for a deprecated library. The default name for UTF-8 encoding in general is ‘utf-8’ and that’s what Python developers will be used to. But if you’d rather I put it back it before landing, let me know. In general, all usage of the codecs library should be replaced by “io” (pre-Python 3) or the built-in primitives without prefix in Python 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034188</commentid>
    <comment_count>14</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-09-09 15:45:54 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (From update of attachment 237835 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=237835&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Tools/ChangeLog:8
&gt; &gt; &gt; +        Reduce cases where it&apos;s possible to print random error messages to stderr.
&gt; &gt; 
&gt; &gt; So, there are still code paths that can lead to random error messages (garbage data?) being written to the standard error stream?
&gt; 
&gt; It looks like we have all of the bases covered, since part of the problem is just perfectly valid Unicode in stderr, so I’ve also made webkitpy tolerant of utf-8 in stderr, where before it only (incorrectly) expected ascii. I don’t see any more symptoms on my end. So, perhaps you wanted me to change this log message?
&gt; 

Yes, I suggest that you update this sentence given that you feel that the proposed patch has &quot;all of the bases covered&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034191</commentid>
    <comment_count>15</comment_count>
      <attachid>237866</attachid>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-09-09 15:56:02 -0700</bug_when>
    <thetext>Created attachment 237866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034193</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-09 15:58:14 -0700</bug_when>
    <thetext>Attachment 237866 did not pass style-queue:


ERROR: Tools/LayoutTestRelay/LayoutTestRelay/LTRelayController.m:95:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/LayoutTestRelay/LayoutTestRelay/LTRelayController.m:95:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034203</commentid>
    <comment_count>17</comment_count>
      <attachid>237866</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-09-09 16:24:20 -0700</bug_when>
    <thetext>Comment on attachment 237866
Patch

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

&gt; Tools/ChangeLog:10
&gt; +        unicode (encoded as utf-8) when writing to files, in the

Nit: unicode =&gt; Unicode

And

utf-8 =&gt; UTF-8

&gt; Tools/ChangeLog:12
&gt; +        rare case that an NSError description will make it to
&gt; +        stderr.

For your consideration, I suggest that you add an example to this description of when an NSError with Unicode characters can be emitted to the standard error stream.

&gt; Tools/LayoutTestRelay/LayoutTestRelay/LTRelayController.m:97
&gt; +        [self didCrashWithMessage:nil];

I take it that there is little value to pass a string to -didCrashWithMessage that describes the reason for the NSException?

&gt; Tools/Scripts/webkitpy/common/system/filesystem.py:228
&gt; +            # FIXME: Just f.write(contents) when switching to Python 3

This comment isn&apos;t very useful because it doesn&apos;t explain &quot;why&quot; we can simplify this code. I suspect that there are many other areas of our Python code that can be simplified or will need to be updated to work with Python 3. If you choose to keep this comment I suggest elaborating why we can simplify this code in Python 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034204</commentid>
    <comment_count>18</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-09-09 16:28:20 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 237866 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=237866&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:10
&gt; &gt; +        unicode (encoded as utf-8) when writing to files, in the
&gt; 
&gt; Nit: unicode =&gt; Unicode
&gt; 
&gt; And
&gt; 
&gt; utf-8 =&gt; UTF-8

Thanks - will fix.

&gt; 
&gt; &gt; Tools/ChangeLog:12
&gt; &gt; +        rare case that an NSError description will make it to
&gt; &gt; +        stderr.
&gt; 
&gt; For your consideration, I suggest that you add an example to this description of when an NSError with Unicode characters can be emitted to the standard error stream.

Sure thing.

&gt; 
&gt; &gt; Tools/LayoutTestRelay/LayoutTestRelay/LTRelayController.m:97
&gt; &gt; +        [self didCrashWithMessage:nil];
&gt; 
&gt; I take it that there is little value to pass a string to -didCrashWithMessage that describes the reason for the NSException?

In this case, no extra information is necessary. This would happen if the underlying DRT/WKTR crashed and the relevant information will get pulled from that crash log. I just added this as API for special cases but it can probably just be a void message in the future.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/system/filesystem.py:228
&gt; &gt; +            # FIXME: Just f.write(contents) when switching to Python 3
&gt; 
&gt; This comment isn&apos;t very useful because it doesn&apos;t explain &quot;why&quot; we can simplify this code. I suspect that there are many other areas of our Python code that can be simplified or will need to be updated to work with Python 3. If you choose to keep this comment I suggest elaborating why we can simplify this code in Python 3.

True. In fact, this whole module will be removed, so I’ll just remove the comment and put a FIXME in my mind to remove it. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034205</commentid>
    <comment_count>19</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2014-09-09 16:31:50 -0700</bug_when>
    <thetext>Committed r173452: &lt;http://trac.webkit.org/changeset/173452&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235965</attachid>
            <date>2014-08-03 23:13:44 -0700</date>
            <delta_ts>2014-08-04 16:28:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135551-20140803231332.patch</filename>
            <type>text/plain</type>
            <size>7281</size>
            <attacher name="David Farler">dfarler</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxOTg1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzU4N2QwOGY3ZWIxZDYyMzc2ZjExMWVhOTNlMmU1NTAx
MzFlYzU1My4uYzQ1ZmY4NTBiYmEwMDIyZDk1NGM4YjY1ODRlNDdkMjJhNWMwODU5OSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDE0LTA4LTAzICBEYXZpZCBGYXJsZXIgIDxkZmFybGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBpT1MgU2ltdWxhdG9yOiBydW4td2Via2l0LXRlc3RzIGNob2tlcyBvbiB1bnRlcm1pbmF0
ZWQgVVRGLTggd2hlbiB3cml0aW5nIGEgdGVzdCByZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTU1MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTGF5b3V0VGVzdFJlbGF5L0xheW91dFRlc3RS
ZWxheS9MVFJlbGF5Q29udHJvbGxlci5tOgorICAgICAgICAoLVtMVFJlbGF5Q29udHJvbGxlciBk
aWRDcmFzaFdpdGhNZXNzYWdlOl0pOiBXcml0ZSBjcmFzaCBwcm9jZXNzL3BpZCB0byBzdGRvdXQg
KHN0cmlwcGVkIGluIHdlYmtpdHB5KQorICAgICAgICAoLVtMVFJlbGF5Q29udHJvbGxlciBsYXVu
Y2hTaW11bGF0b3JdKTogQmUgbW9yZSBhZ2dyZXNzaXZlIGFib3V0IHdoYXQgY29tZXMgYmFjayBm
cm9tIHhjb2RlLXNlbGVjdC4KKyAgICAgICAgKC1bTFRSZWxheUNvbnRyb2xsZXIgc3RhcnRdKTog
RG9uJ3QgZXhwbGljaXRseSB0cnkgdG8gYm9vdCB0aGUgZGV2aWNlLCBhbHJlYWR5IGhhbmRsZWQu
CisgICAgICAgICgtW0xUUmVsYXlDb250cm9sbGVyIGJvb3REZXZpY2VdKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5OgorICAgICAgICAoSU9TU2lt
dWxhdG9yRHJpdmVyLl9zZXR1cF9lbnZpcm9uX2Zvcl9kcml2ZXIpOiBBZGQgREVWRUxPUEVSX0RJ
Ui4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5OgorICAgICAgICAoSU9T
U2ltdWxhdG9yUG9ydC5fZ2V0X2NyYXNoX2xvZyk6IFB1bGwgcHJvY2Vzcy9waWQgZnJvbSBzdGRv
dXQuCisgICAgICAgIChJT1NTaW11bGF0b3JQb3J0LmRldmVsb3Blcl9kaXIpOiBOZXcgcHJvcGVy
dHkgdmlhIHhjb2RlLXNlbGVjdC4KKwogMjAxNC0wNy0zMCAgRGF2aWQgRmFybGVyICA8ZGZhcmxl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgYnVpbGQtd2Via2l0dGVzdHJ1bm5lciBkb2Vzbid0IGJ1
aWxkIHRoZSBhcHAgdGFyZ2V0IGZvciBpT1MgU0RLcwpkaWZmIC0tZ2l0IGEvVG9vbHMvTGF5b3V0
VGVzdFJlbGF5L0xheW91dFRlc3RSZWxheS9MVFJlbGF5Q29udHJvbGxlci5tIGIvVG9vbHMvTGF5
b3V0VGVzdFJlbGF5L0xheW91dFRlc3RSZWxheS9MVFJlbGF5Q29udHJvbGxlci5tCmluZGV4IDk1
NTdiMWJmZmFiYWRkNDUzYjBiYmJmOWE1NzIwMDg0YTQwNjgwZTkuLjRhMDU5ZjU4MmE1NzViYmFl
MjE1YzU0OTg0MTMyMjBiYjc1YzFlNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0xheW91dFRlc3RSZWxh
eS9MYXlvdXRUZXN0UmVsYXkvTFRSZWxheUNvbnRyb2xsZXIubQorKysgYi9Ub29scy9MYXlvdXRU
ZXN0UmVsYXkvTGF5b3V0VGVzdFJlbGF5L0xUUmVsYXlDb250cm9sbGVyLm0KQEAgLTEyNyw3ICsx
MjcsNyBAQCAtICh2b2lkKWRpZENyYXNoV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZQog
ICAgIGlmIChtZXNzYWdlKQogICAgICAgICBjcmFzaE1lc3NhZ2UgPSBbY3Jhc2hNZXNzYWdlIHN0
cmluZ0J5QXBwZW5kaW5nRm9ybWF0OkAiJUBcbiIsIG1lc3NhZ2VdOwogCi0gICAgW1tzZWxmIHN0
YW5kYXJkRXJyb3JdIHdyaXRlRGF0YTpbY3Jhc2hNZXNzYWdlIGRhdGFVc2luZ0VuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXV07CisgICAgW1tzZWxmIHN0YW5kYXJkT3V0cHV0XSB3cml0ZURh
dGE6W2NyYXNoTWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11d
OwogICAgIFtbc2VsZiBzdGFuZGFyZEVycm9yXSBjbG9zZUZpbGVdOwogICAgIFtbc2VsZiBzdGFu
ZGFyZE91dHB1dF0gY2xvc2VGaWxlXTsKICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CkBAIC0xNDks
NDggKzE0OSw0NiBAQCAtICh2b2lkKWxhdW5jaFNpbXVsYXRvcgogICAgICAgICBOU0RhdGEgKmRh
dGEgPSBbc3Rkb3V0RmlsZUhhbmRsZSByZWFkRGF0YVRvRW5kT2ZGaWxlXTsKICAgICAgICAgZGV2
ZWxvcGVyRGlyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOltkYXRhIGJ5dGVzXV07
CiAgICAgfQotCi0gICAgZGV2ZWxvcGVyRGlyID0gW2RldmVsb3BlckRpciBzdHJpbmdCeVRyaW1t
aW5nQ2hhcmFjdGVyc0luU2V0OltOU0NoYXJhY3RlclNldCBuZXdsaW5lQ2hhcmFjdGVyU2V0XV07
Ci0KICAgICBpZiAoIWRldmVsb3BlckRpciB8fCAhW2RldmVsb3BlckRpciBsZW5ndGhdKSB7CiAg
ICAgICAgIE5TTG9nKEAiTm90IGFibGUgdG8gZGV0ZXJtaW5lIHRoZSBwYXRoIHRvIGlPUyBTaW11
bGF0b3IuYXBwIGluIHlvdXIgYWN0aXZlIFhjb2RlLmFwcCIpOwogICAgICAgICBleGl0KEVYSVRf
RkFJTFVSRSk7CiAgICAgfQorCisgICAgTlNSYW5nZSBkZXZlbG9wZXJEaXJSYW5nZSA9IFtkZXZl
bG9wZXJEaXIgcmFuZ2VPZlN0cmluZzpAIlhjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIiXTsK
KyAgICBkZXZlbG9wZXJEaXIgPSBbZGV2ZWxvcGVyRGlyIHN1YnN0cmluZ1dpdGhSYW5nZTpOU01h
a2VSYW5nZSgwLCBkZXZlbG9wZXJEaXJSYW5nZS5sb2NhdGlvbiArIGRldmVsb3BlckRpclJhbmdl
Lmxlbmd0aCldOworCiAgICAgTlNVUkwgKnNpbXVsYXRvclVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6W2RldmVsb3BlckRpciBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJBcHBs
aWNhdGlvbnMvaU9TIFNpbXVsYXRvci5hcHAiXV07CiAKKyAgICBmb3IgKE5TUnVubmluZ0FwcGxp
Y2F0aW9uICphcHBsaWNhdGlvbiBpbiBbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gcnVu
bmluZ0FwcGxpY2F0aW9uc10pIHsKKyAgICAgICAgaWYgKFtbW2FwcGxpY2F0aW9uIGJ1bmRsZVVS
TF0gcGF0aF0gaXNFcXVhbFRvOltzaW11bGF0b3JVUkwgcGF0aF1dKQorICAgICAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIE5TRGljdGlvbmFyeSAqbGF1bmNoQ29uZmlndXJhdGlvbiA9IEB7
CiAgICAgICAgIE5TV29ya3NwYWNlTGF1bmNoQ29uZmlndXJhdGlvbkFyZ3VtZW50czogQFsKICAg
ICAgICAgICAgIEAiLUN1cnJlbnREZXZpY2VVRElEIiwgW1tbc2VsZiBkZXZpY2VdIFVESURdIFVV
SURTdHJpbmddLAotICAgICAgICAgICAgXQorICAgICAgICBdCiAgICAgfTsKKwogICAgIE5TRXJy
b3IgKmVycm9yOwotICAgIFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBsYXVuY2hBcHBs
aWNhdGlvbkF0VVJMOnNpbXVsYXRvclVSTCBvcHRpb25zOk5TV29ya3NwYWNlTGF1bmNoRGVmYXVs
dCBjb25maWd1cmF0aW9uOmxhdW5jaENvbmZpZ3VyYXRpb24gZXJyb3I6JmVycm9yXTsKKyAgICBm
b3IgKE5TVUludGVnZXIgdHJpZXMgPSAwOyB0cmllcyA8IDEwOyB0cmllcysrKSB7CisgICAgICAg
IFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBsYXVuY2hBcHBsaWNhdGlvbkF0VVJMOnNp
bXVsYXRvclVSTCBvcHRpb25zOk5TV29ya3NwYWNlTGF1bmNoRGVmYXVsdCBjb25maWd1cmF0aW9u
OmxhdW5jaENvbmZpZ3VyYXRpb24gZXJyb3I6JmVycm9yXTsKKworICAgICAgICBpZiAoIWVycm9y
KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgc2xlZXAocmFuZCgpICUgNSk7CisgICAg
fQogCiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIE5TTG9nKEAiQ291bGRuJ3QgbGF1bmNoIGlP
UyBTaW11bGF0b3IgZnJvbSAlQDogJUAiLCBbc2ltdWxhdG9yVVJMIHBhdGhdLCBbZXJyb3IgZGVz
Y3JpcHRpb25dKTsKICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwogICAgIH0KIAotICAgIHdo
aWxlIChbW3NlbGYgZGV2aWNlXSBzdGF0ZV0gPT0gU2ltRGV2aWNlU3RhdGVTaHV0ZG93bikgewot
ICAgICAgICAvLyBXYWl0IGZvciBkZXZpY2UgdG8gc3RhcnQgYm9vdGluZwotICAgICAgICBzbGVl
cCgxKTsKLSAgICB9Ci19Ci0KLS0gKHZvaWQpYm9vdERldmljZQotewotICAgIHdoaWxlIChbW3Nl
bGYgZGV2aWNlXSBzdGF0ZV0gPT0gU2ltRGV2aWNlU3RhdGVCb290aW5nKQorICAgIHdoaWxlIChb
W3NlbGYgZGV2aWNlXSBzdGF0ZV0gIT0gU2ltRGV2aWNlU3RhdGVCb290ZWQpCiAgICAgICAgIHNs
ZWVwKDEpOwogCi0gICAgaWYgKFtbc2VsZiBkZXZpY2VdIHN0YXRlXSA9PSBTaW1EZXZpY2VTdGF0
ZUJvb3RlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNFcnJvciAqZXJyb3I7Ci0gICAgW1tz
ZWxmIGRldmljZV0gYm9vdFdpdGhPcHRpb25zOm5pbCBlcnJvcjomZXJyb3JdOwotICAgIGlmIChl
cnJvcikgewotICAgICAgICBOU0xvZyhAIlVuYWJsZSB0byBib290IGRldmljZTogJUAiLCBbZXJy
b3IgZGVzY3JpcHRpb25dKTsKLSAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwotICAgIH0KKyAg
ICBzbGVlcCgyKTsKIH0KIAogLSAodm9pZCljcmVhdGVVbmlxdWVBcHAKQEAgLTI4MSw3ICsyNzks
NiBAQCAtICh2b2lkKWxhdW5jaEFwcAogLSAodm9pZClzdGFydAogewogICAgIFtzZWxmIGxhdW5j
aFNpbXVsYXRvcl07Ci0gICAgW3NlbGYgYm9vdERldmljZV07CiAgICAgW3NlbGYgY3JlYXRlVW5p
cXVlQXBwXTsKICAgICBbW3NlbGYgcmVsYXldIHNldHVwXTsKICAgICBbc2VsZiBsYXVuY2hBcHBd
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkKaW5kZXggNTM2Mzk1ZTFkNGEyODc0
NzQ0NzAzZTcyODU3ZTYwMTI0ZWZhOTRiOC4uZjk1MDE0ZDlmYTJlZjAyYTIyMmZlNDI1MDI5Yjhh
ODE0MzYyY2VkOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZl
ci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5CkBAIC01MTMs
NiArNTEzLDEwIEBAIGNsYXNzIElPU1NpbXVsYXRvckRyaXZlcihEcml2ZXIpOgogICAgICAgICBd
CiAgICAgICAgIHJldHVybiBbcmVsYXlfdG9vbF0gKyByZWxheV9hcmdzICsgWyctLSddICsgZHVt
cF90b29sX2FyZ3MKIAorICAgIGRlZiBfc2V0dXBfZW52aXJvbl9mb3JfZHJpdmVyKHNlbGYsIGVu
dmlyb25tZW50KToKKyAgICAgICAgZW52aXJvbm1lbnRbJ0RFVkVMT1BFUl9ESVInXSA9IHNlbGYu
X3BvcnQuZGV2ZWxvcGVyX2RpcgorICAgICAgICByZXR1cm4gc3VwZXIoSU9TU2ltdWxhdG9yRHJp
dmVyLCBzZWxmKS5fc2V0dXBfZW52aXJvbl9mb3JfZHJpdmVyKGVudmlyb25tZW50KQorCiAKIGNs
YXNzIENvbnRlbnRCbG9jayhvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvaW9zLnB5CmluZGV4IGIyMzI4OTg2OTU4NWJjMGEzOTFkYjdkYzI0N2Nk
NmE0MzFmNDE5MjAuLjU4NTNhMDAyYzZhODYxYTc3ZDY1NjE1M2MwNzFjYTNkZjkyYmI4ZTEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQpAQCAtMjU4LDE0ICsyNTgsMTQgQEAgY2xhc3Mg
SU9TU2ltdWxhdG9yUG9ydChQb3J0KToKICAgICAgICAgbm93ID0gdGltZV9mbigpCiAKICAgICAg
ICAgY3Jhc2hfcHJlZml4ID0gJ0NSQVNIOiAnCi0gICAgICAgIHN0ZGVycl9saW5lcyA9IFtdCisg
ICAgICAgIHN0ZG91dF9saW5lcyA9IFtdCiAgICAgICAgIGNyYXNoX2xpbmVzID0gW10KLSAgICAg
ICAgZm9yIGxpbmUgaW4gc3RkZXJyLnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIGNyYXNoX2xp
bmVzLmFwcGVuZChsaW5lKSBpZiBsaW5lLnN0YXJ0c3dpdGgoY3Jhc2hfcHJlZml4KSBlbHNlIHN0
ZGVycl9saW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgZm9yIGxpbmUgaW4gKHN0ZG91dCBvciAn
Jykuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgY3Jhc2hfbGluZXMuYXBwZW5kKGxpbmUpIGlm
IGxpbmUuc3RhcnRzd2l0aChjcmFzaF9wcmVmaXgpIGVsc2Ugc3Rkb3V0X2xpbmVzLmFwcGVuZChs
aW5lKQogCiAgICAgICAgIGZvciBjcmFzaF9saW5lIGluIGNyYXNoX2xpbmVzOgogICAgICAgICAg
ICAgaWRlbnRpZmllciwgcGlkID0gY3Jhc2hfbGluZVtsZW4oY3Jhc2hfcHJlZml4KTpdLnNwbGl0
KCcgJykKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfY3Jhc2hfbG9nKGlkZW50aWZpZXIs
IGludChwaWQpLCBzdGRvdXQsICdcbicuam9pbihzdGRlcnJfbGluZXMpLCBuZXdlcl90aGFuLCB0
aW1lX2ZuLCBzbGVlcF9mbiwgd2FpdF9mb3JfbG9nKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X2dldF9jcmFzaF9sb2coaWRlbnRpZmllciwgaW50KHBpZCksICdcbicuam9pbihzdGRvdXRfbGlu
ZXMpLCBzdGRlcnIsIG5ld2VyX3RoYW4sIHRpbWVfZm4sIHNsZWVwX2ZuLCB3YWl0X2Zvcl9sb2cp
CiAKICAgICAgICAgX2xvZy5kZWJ1ZygnbG9va2luZyBmb3IgY3Jhc2ggbG9nIGZvciAlczolcycg
JSAobmFtZSwgc3RyKHBpZCkpKQogICAgICAgICBkZWFkbGluZSA9IG5vdyArIDUgKiBpbnQoc2Vs
Zi5nZXRfb3B0aW9uKCdjaGlsZF9wcm9jZXNzZXMnLCAxKSkKQEAgLTM2MSw1ICszNjEsMTIgQEAg
Y2xhc3MgSU9TU2ltdWxhdG9yUG9ydChQb3J0KToKICAgICAgICAgICAgIF9sb2cud2FybigieGNy
dW4gZmFpbGVkOyBmYWxsaW5nIGJhY2sgdG8gJyVzJy4iICUgZmFsbGJhY2spCiAgICAgICAgICAg
ICByZXR1cm4gZmFsbGJhY2sKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkZXZlbG9wZXJfZGly
KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhlY3V0aXZl
LnJ1bl9jb21tYW5kKFsneGNvZGUtc2VsZWN0JywgJy0tcHJpbnQtcGF0aCddKS5yc3RyaXAoKQor
ICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3I6CisgICAgICAgICAgICByZXR1cm4gJy9BcHBsaWNh
dGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3BlcicKKwogICAgIGRlZiBsb2dnaW5nX3Bh
dHRlcm5zX3RvX3N0cmlwKHNlbGYpOgogICAgICAgICByZXR1cm4gW10K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236053</attachid>
            <date>2014-08-05 15:28:27 -0700</date>
            <delta_ts>2014-09-08 20:22:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135551-20140805152815.patch</filename>
            <type>text/plain</type>
            <size>6759</size>
            <attacher name="David Farler">dfarler</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyMDUzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTM0OWYxMDU3MmY3ZTBlNWVlYThiNDUwOWI4ZGNkMGRl
YjVlOWNhYy4uMDdlODc2YzBjNzcwY2U5N2YxZTk3NTE3NzEzY2U3NzllMzQ0M2NmMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDE0LTA4LTA1ICBEYXZpZCBGYXJsZXIgIDxkZmFybGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBpT1MgU2ltdWxhdG9yOiBydW4td2Via2l0LXRlc3RzIGNob2tlcyBvbiB1bnRlcm1pbmF0
ZWQgVVRGLTggd2hlbiB3cml0aW5nIGEgdGVzdCByZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTU1MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSBjYXNlcyB3aGVyZSBpdCdzIHBvc3Np
YmxlIHRvIHByaW50IHJhbmRvbSBlcnJvciBtZXNzYWdlcyB0byBzdGRlcnIuCisKKyAgICAgICAg
KiBMYXlvdXRUZXN0UmVsYXkvTGF5b3V0VGVzdFJlbGF5L0xUUmVsYXlDb250cm9sbGVyLm06Cisg
ICAgICAgICgtW0xUUmVsYXlDb250cm9sbGVyIGxhdW5jaFNpbXVsYXRvcl0pOgorICAgICAgICBC
ZSBtb3JlIGFnZ3Jlc3NpdmUgd2l0aCB0aGUgcmV0dXJuIHN0cmluZyBmcm9tIHhjb2RlLXNlbGVj
dC4KKyAgICAgICAgKC1bTFRSZWxheUNvbnRyb2xsZXIgY3JlYXRlVW5pcXVlQXBwXSk6CisgICAg
ICAgIERvbid0IGV4cGxpY2l0bHkgdHJ5IHRvIHVuaW5zdGFsbCB0aGUgYXBwLiBJdCBpcyBhdXRv
bWF0aWNhbGx5IGhhbmRsZWQKKyAgICAgICAgd2hlbiBpbnN0YWxsaW5nIGFuIGFwcCB3aXRoIHRo
ZSBzYW1lIGJ1bmRsZSBpZGVudGlmaWVyLgorICAgICAgICAoLVtMVFJlbGF5Q29udHJvbGxlciBz
dGFydF0pOgorICAgICAgICAoLVtMVFJlbGF5Q29udHJvbGxlciBib290RGV2aWNlXSk6IERlbGV0
ZWQuCisgICAgICAgIFRoZSBkZXZpY2UgYWxyZWFkeSBib290cyBhcyBhIHBhcnQgb2Ygc3RhcnRp
bmcgdGhlIHNpbXVsYXRvci4gQXR0ZW1wdGluZworICAgICAgICB0byBib290IGEgc2Vjb25kIHRp
bWUgbWF5IGNhdXNlIHNwdXJpb3VzIHN0ZGVyciBvdXRwdXQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9wb3J0L2RyaXZlci5weToKKyAgICAgICAgKElPU1NpbXVsYXRvckRyaXZlci5fc2V0
dXBfZW52aXJvbl9mb3JfZHJpdmVyKToKKyAgICAgICAgRXhwbGljaXRseSBzZXQgREVWRUxPUEVS
X0RJUiBvbmNlIHNvIHhjb2RlLXNlbGVjdCBpc24ndCBjYWxsZWQuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9wb3J0L2lvcy5weToKKyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQuX2dldF9j
cmFzaF9sb2cpOgorICAgICAgICBNYWtlIHN1cmUgc3RkZXJyIGlzIGF0IGxlYXN0IGFuIGVtcHR5
IHN0cmluZy4KKyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQpOgorICAgICAgICAoSU9TU2ltdWxh
dG9yUG9ydC5kZXZlbG9wZXJfZGlyKToKKyAgICAgICAgTmV3IHByb3BlcnR5IGZvciBzZXR0aW5n
IHVwIERFVkVMT1BFUl9ESVIgaW4gdGhlIGRyaXZlciBlbnZpcm9ubWVudC4KKwogMjAxNC0wOC0w
NSAgVml2ZWsgR2FsYXRhZ2UgIDx2aXZlay52Z0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBbZ3Rr
XSBJbmNsdWRlIGxsdm0tZGV2KGVsKSBwYWNrYWdlIHRvIHNhdGlzZnkgbWVzYSBidWlsZCBjb25m
aWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9MYXlvdXRUZXN0UmVsYXkvTGF5b3V0VGVzdFJl
bGF5L0xUUmVsYXlDb250cm9sbGVyLm0gYi9Ub29scy9MYXlvdXRUZXN0UmVsYXkvTGF5b3V0VGVz
dFJlbGF5L0xUUmVsYXlDb250cm9sbGVyLm0KaW5kZXggOTU1N2IxYmZmYWJhZGQ0NTNiMGJiYmY5
YTU3MjAwODRhNDA2ODBlOS4uODEyMzBlYTg2NjIwOWQxYTgwMTI5MDQ2ZjIwYjc0M2E3N2Q5ZDZl
YiAxMDA2NDQKLS0tIGEvVG9vbHMvTGF5b3V0VGVzdFJlbGF5L0xheW91dFRlc3RSZWxheS9MVFJl
bGF5Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL0xheW91dFRlc3RSZWxheS9MYXlvdXRUZXN0UmVs
YXkvTFRSZWxheUNvbnRyb2xsZXIubQpAQCAtMTQ5LDE5ICsxNDksMjAgQEAgLSAodm9pZClsYXVu
Y2hTaW11bGF0b3IKICAgICAgICAgTlNEYXRhICpkYXRhID0gW3N0ZG91dEZpbGVIYW5kbGUgcmVh
ZERhdGFUb0VuZE9mRmlsZV07CiAgICAgICAgIGRldmVsb3BlckRpciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoVVRGOFN0cmluZzpbZGF0YSBieXRlc11dOwogICAgIH0KLQotICAgIGRldmVsb3BlckRp
ciA9IFtkZXZlbG9wZXJEaXIgc3RyaW5nQnlUcmltbWluZ0NoYXJhY3RlcnNJblNldDpbTlNDaGFy
YWN0ZXJTZXQgbmV3bGluZUNoYXJhY3RlclNldF1dOwotCiAgICAgaWYgKCFkZXZlbG9wZXJEaXIg
fHwgIVtkZXZlbG9wZXJEaXIgbGVuZ3RoXSkgewogICAgICAgICBOU0xvZyhAIk5vdCBhYmxlIHRv
IGRldGVybWluZSB0aGUgcGF0aCB0byBpT1MgU2ltdWxhdG9yLmFwcCBpbiB5b3VyIGFjdGl2ZSBY
Y29kZS5hcHAiKTsKICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwogICAgIH0KKworICAgIE5T
UmFuZ2UgZGV2ZWxvcGVyRGlyUmFuZ2UgPSBbZGV2ZWxvcGVyRGlyIHJhbmdlT2ZTdHJpbmc6QCJY
Y29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyIl07CisgICAgZGV2ZWxvcGVyRGlyID0gW2RldmVs
b3BlckRpciBzdWJzdHJpbmdXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgZGV2ZWxvcGVyRGlyUmFu
Z2UubG9jYXRpb24gKyBkZXZlbG9wZXJEaXJSYW5nZS5sZW5ndGgpXTsKKwogICAgIE5TVVJMICpz
aW11bGF0b3JVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltkZXZlbG9wZXJEaXIgc3RyaW5n
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiQXBwbGljYXRpb25zL2lPUyBTaW11bGF0b3IuYXBw
Il1dOwogCiAgICAgTlNEaWN0aW9uYXJ5ICpsYXVuY2hDb25maWd1cmF0aW9uID0gQHsKICAgICAg
ICAgTlNXb3Jrc3BhY2VMYXVuY2hDb25maWd1cmF0aW9uQXJndW1lbnRzOiBAWwogICAgICAgICAg
ICAgQCItQ3VycmVudERldmljZVVESUQiLCBbW1tzZWxmIGRldmljZV0gVURJRF0gVVVJRFN0cmlu
Z10sCi0gICAgICAgICAgICBdCisgICAgICAgIF0KICAgICB9OwogICAgIE5TRXJyb3IgKmVycm9y
OwogICAgIFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBsYXVuY2hBcHBsaWNhdGlvbkF0
VVJMOnNpbXVsYXRvclVSTCBvcHRpb25zOk5TV29ya3NwYWNlTGF1bmNoRGVmYXVsdCBjb25maWd1
cmF0aW9uOmxhdW5jaENvbmZpZ3VyYXRpb24gZXJyb3I6JmVycm9yXTsKQEAgLTE3MSwyNiArMTcy
LDEwIEBAIC0gKHZvaWQpbGF1bmNoU2ltdWxhdG9yCiAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJF
KTsKICAgICB9CiAKLSAgICB3aGlsZSAoW1tzZWxmIGRldmljZV0gc3RhdGVdID09IFNpbURldmlj
ZVN0YXRlU2h1dGRvd24pIHsKLSAgICAgICAgLy8gV2FpdCBmb3IgZGV2aWNlIHRvIHN0YXJ0IGJv
b3RpbmcKLSAgICAgICAgc2xlZXAoMSk7Ci0gICAgfQotfQotCi0tICh2b2lkKWJvb3REZXZpY2UK
LXsKLSAgICB3aGlsZSAoW1tzZWxmIGRldmljZV0gc3RhdGVdID09IFNpbURldmljZVN0YXRlQm9v
dGluZykKKyAgICB3aGlsZSAoW1tzZWxmIGRldmljZV0gc3RhdGVdICE9IFNpbURldmljZVN0YXRl
Qm9vdGVkKQogICAgICAgICBzbGVlcCgxKTsKIAotICAgIGlmIChbW3NlbGYgZGV2aWNlXSBzdGF0
ZV0gPT0gU2ltRGV2aWNlU3RhdGVCb290ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5TRXJy
b3IgKmVycm9yOwotICAgIFtbc2VsZiBkZXZpY2VdIGJvb3RXaXRoT3B0aW9uczpuaWwgZXJyb3I6
JmVycm9yXTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgTlNMb2coQCJVbmFibGUgdG8gYm9v
dCBkZXZpY2U6ICVAIiwgW2Vycm9yIGRlc2NyaXB0aW9uXSk7Ci0gICAgICAgIGV4aXQoRVhJVF9G
QUlMVVJFKTsKLSAgICB9CisgICAgc2xlZXAoMik7CiB9CiAKIC0gKHZvaWQpY3JlYXRlVW5pcXVl
QXBwCkBAIC0yMTksMTQgKzIwNCw2IEBAIC0gKHZvaWQpY3JlYXRlVW5pcXVlQXBwCiAgICAgICAg
IChOU1N0cmluZyAqKWtDRkJ1bmRsZUlkZW50aWZpZXJLZXk6IFtzZWxmIHVuaXF1ZUFwcElkZW50
aWZpZXJdLAogICAgIH07CiAKLSAgICBpZiAoW1tzZWxmIGRldmljZV0gYXBwbGljYXRpb25Jc0lu
c3RhbGxlZDpbc2VsZiB1bmlxdWVBcHBJZGVudGlmaWVyXSB0eXBlOiBuaWwgZXJyb3I6ICZlcnJv
cl0pIHsKLSAgICAgICAgQk9PTCB1bmluc3RhbGxlZCA9IFtbc2VsZiBkZXZpY2UgXSB1bmluc3Rh
bGxBcHBsaWNhdGlvbjpbc2VsZiB1bmlxdWVBcHBJZGVudGlmaWVyXSB3aXRoT3B0aW9uczpuaWwg
ZXJyb3I6JmVycm9yXTsKLSAgICAgICAgaWYgKCF1bmluc3RhbGxlZCkgewotICAgICAgICAgICAg
TlNMb2coQCJDb3VsZG4ndCB1bmluc3RhbGwgJUA6ICVAIiwgW3NlbGYgdW5pcXVlQXBwSWRlbnRp
Zmllcl0sIFtlcnJvciBkZXNjcmlwdGlvbl0pOwotICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxV
UkUpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgW1tzZWxmIGRldmljZV0gaW5zdGFsbEFwcGxp
Y2F0aW9uOltzZWxmIHVuaXF1ZUFwcFVSTF0gd2l0aE9wdGlvbnM6aW5zdGFsbE9wdGlvbnMgZXJy
b3I6JmVycm9yXTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgTlNMb2coQCJDb3VsZG4ndCBp
bnN0YWxsICVAOiAlQCIsIFtbc2VsZiB1bmlxdWVBcHBVUkxdIHBhdGhdLCBbZXJyb3IgZGVzY3Jp
cHRpb25dKTsKQEAgLTI4MSw3ICsyNTgsNiBAQCAtICh2b2lkKWxhdW5jaEFwcAogLSAodm9pZClz
dGFydAogewogICAgIFtzZWxmIGxhdW5jaFNpbXVsYXRvcl07Ci0gICAgW3NlbGYgYm9vdERldmlj
ZV07CiAgICAgW3NlbGYgY3JlYXRlVW5pcXVlQXBwXTsKICAgICBbW3NlbGYgcmVsYXldIHNldHVw
XTsKICAgICBbc2VsZiBsYXVuY2hBcHBdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2RyaXZlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIu
cHkKaW5kZXggNTM2Mzk1ZTFkNGEyODc0NzQ0NzAzZTcyODU3ZTYwMTI0ZWZhOTRiOC4uZjk1MDE0
ZDlmYTJlZjAyYTIyMmZlNDI1MDI5YjhhODE0MzYyY2VkOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvZHJpdmVyLnB5CkBAIC01MTMsNiArNTEzLDEwIEBAIGNsYXNzIElPU1NpbXVsYXRvckRy
aXZlcihEcml2ZXIpOgogICAgICAgICBdCiAgICAgICAgIHJldHVybiBbcmVsYXlfdG9vbF0gKyBy
ZWxheV9hcmdzICsgWyctLSddICsgZHVtcF90b29sX2FyZ3MKIAorICAgIGRlZiBfc2V0dXBfZW52
aXJvbl9mb3JfZHJpdmVyKHNlbGYsIGVudmlyb25tZW50KToKKyAgICAgICAgZW52aXJvbm1lbnRb
J0RFVkVMT1BFUl9ESVInXSA9IHNlbGYuX3BvcnQuZGV2ZWxvcGVyX2RpcgorICAgICAgICByZXR1
cm4gc3VwZXIoSU9TU2ltdWxhdG9yRHJpdmVyLCBzZWxmKS5fc2V0dXBfZW52aXJvbl9mb3JfZHJp
dmVyKGVudmlyb25tZW50KQorCiAKIGNsYXNzIENvbnRlbnRCbG9jayhvYmplY3QpOgogICAgIGRl
ZiBfX2luaXRfXyhzZWxmKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9pb3MucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CmluZGV4IGIyMzI4
OTg2OTU4NWJjMGEzOTFkYjdkYzI0N2NkNmE0MzFmNDE5MjAuLjk2ZjJjNDE2MGQ0NzUzYWQ3ZGQ5
NGU1NmM5NTU5MzExZjg5ZDQ3MzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9pb3MucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQpAQCAt
MjYwLDcgKzI2MCw3IEBAIGNsYXNzIElPU1NpbXVsYXRvclBvcnQoUG9ydCk6CiAgICAgICAgIGNy
YXNoX3ByZWZpeCA9ICdDUkFTSDogJwogICAgICAgICBzdGRlcnJfbGluZXMgPSBbXQogICAgICAg
ICBjcmFzaF9saW5lcyA9IFtdCi0gICAgICAgIGZvciBsaW5lIGluIHN0ZGVyci5zcGxpdGxpbmVz
KCk6CisgICAgICAgIGZvciBsaW5lIGluIChzdGRlcnIgb3IgJycpLnNwbGl0bGluZXMoKToKICAg
ICAgICAgICAgIGNyYXNoX2xpbmVzLmFwcGVuZChsaW5lKSBpZiBsaW5lLnN0YXJ0c3dpdGgoY3Jh
c2hfcHJlZml4KSBlbHNlIHN0ZGVycl9saW5lcy5hcHBlbmQobGluZSkKIAogICAgICAgICBmb3Ig
Y3Jhc2hfbGluZSBpbiBjcmFzaF9saW5lczoKQEAgLTM2MSw1ICszNjEsMTIgQEAgY2xhc3MgSU9T
U2ltdWxhdG9yUG9ydChQb3J0KToKICAgICAgICAgICAgIF9sb2cud2FybigieGNydW4gZmFpbGVk
OyBmYWxsaW5nIGJhY2sgdG8gJyVzJy4iICUgZmFsbGJhY2spCiAgICAgICAgICAgICByZXR1cm4g
ZmFsbGJhY2sKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkZXZlbG9wZXJfZGlyKHNlbGYpOgor
ICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21t
YW5kKFsneGNvZGUtc2VsZWN0JywgJy0tcHJpbnQtcGF0aCddKS5yc3RyaXAoKQorICAgICAgICBl
eGNlcHQgU2NyaXB0RXJyb3I6CisgICAgICAgICAgICByZXR1cm4gJy9BcHBsaWNhdGlvbnMvWGNv
ZGUuYXBwL0NvbnRlbnRzL0RldmVsb3BlcicKKwogICAgIGRlZiBsb2dnaW5nX3BhdHRlcm5zX3Rv
X3N0cmlwKHNlbGYpOgogICAgICAgICByZXR1cm4gW10K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237835</attachid>
            <date>2014-09-08 20:22:43 -0700</date>
            <delta_ts>2014-09-09 15:55:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135551-20140908202239.patch</filename>
            <type>text/plain</type>
            <size>13737</size>
            <attacher name="David Farler">dfarler</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMzk0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzA0M2Y0YmQyZDM1OTFkNzNmZGNhYzRjM2ZlYWFmMTNj
YzU3MDYxOS4uZjVlOTQxOTllOGNkOGI4MWQ2M2YyODJhNjJjZjg2Njc1NjIyODgyMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDE0LTA4LTA1ICBEYXZpZCBGYXJsZXIgIDxkZmFybGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBpT1MgU2ltdWxhdG9yOiBydW4td2Via2l0LXRlc3RzIGNob2tlcyBvbiB1bnRlcm1pbmF0
ZWQgVVRGLTggd2hlbiB3cml0aW5nIGEgdGVzdCByZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTU1MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSBjYXNlcyB3aGVyZSBpdCdzIHBvc3Np
YmxlIHRvIHByaW50IHJhbmRvbSBlcnJvciBtZXNzYWdlcyB0byBzdGRlcnIuCisKKyAgICAgICAg
KiBMYXlvdXRUZXN0UmVsYXkvTGF5b3V0VGVzdFJlbGF5L0xUUmVsYXlDb250cm9sbGVyLm06Cisg
ICAgICAgICgtW0xUUmVsYXlDb250cm9sbGVyIGxhdW5jaFNpbXVsYXRvcl0pOiBSZW1vdmVkLgor
ICAgICAgICAoLVtMVFJlbGF5Q29udHJvbGxlciBjcmVhdGVVbmlxdWVBcHBdKToKKyAgICAgICAg
RG9uJ3QgZXhwbGljaXRseSB0cnkgdG8gdW5pbnN0YWxsIHRoZSBhcHAuIEl0IGlzIGF1dG9tYXRp
Y2FsbHkgaGFuZGxlZAorICAgICAgICB3aGVuIGluc3RhbGxpbmcgYW4gYXBwIHdpdGggdGhlIHNh
bWUgYnVuZGxlIGlkZW50aWZpZXIuCisgICAgICAgICgtW0xUUmVsYXlDb250cm9sbGVyIHN0YXJ0
XSk6CisgICAgICAgICgtW0xUUmVsYXlDb250cm9sbGVyIGJvb3REZXZpY2VdKTogUmVtb3ZlZC4K
KyAgICAgICAgVGhlIGRldmljZSBhbHJlYWR5IGJvb3RzIGFzIGEgcGFydCBvZiBzdGFydGluZyB0
aGUgc2ltdWxhdG9yLiBBdHRlbXB0aW5nCisgICAgICAgIHRvIGJvb3QgYSBzZWNvbmQgdGltZSBt
YXkgY2F1c2Ugc3B1cmlvdXMgc3RkZXJyIG91dHB1dC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3BvcnQvZHJpdmVyLnB5OgorICAgICAgICAoSU9TU2ltdWxhdG9yRHJpdmVyLl9zZXR1cF9l
bnZpcm9uX2Zvcl9kcml2ZXIpOgorICAgICAgICBFeHBsaWNpdGx5IHNldCBERVZFTE9QRVJfRElS
IG9uY2Ugc28geGNvZGUtc2VsZWN0IGlzbid0IGNhbGxlZC4KKyAgICAgICAgT3BlbiB0aGUgaU9T
IFNpbXVsYXRvciBvbmNlIGluc3RlYWQgb2YgdGhlIExheW91dFRlc3RSZWxheSB0cnlpbmcKKyAg
ICAgICAgdG8gZG8gaXQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weToK
KyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQuX2dldF9jcmFzaF9sb2cpOgorICAgICAgICBNYWtl
IHN1cmUgc3RkZXJyIGlzIGF0IGxlYXN0IGFuIGVtcHR5IHN0cmluZy4KKyAgICAgICAgKElPU1Np
bXVsYXRvclBvcnQpOgorICAgICAgICAoSU9TU2ltdWxhdG9yUG9ydC5kZXZlbG9wZXJfZGlyKToK
KyAgICAgICAgTmV3IHByb3BlcnR5IGZvciBzZXR0aW5nIHVwIERFVkVMT1BFUl9ESVIgaW4gdGhl
IGRyaXZlciBlbnZpcm9ubWVudC4KKwogMjAxNC0wOS0wOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBEYXNoYm9hcmQgbWV0cmljcyBzaG91bGQgaWdub3Jl
IGNvbW1pdHMgdGhhdCBkaWRuJ3QgdHJpZ2dlciBidWlsZHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0xh
eW91dFRlc3RSZWxheS9MYXlvdXRUZXN0UmVsYXkvTFRSZWxheUNvbnRyb2xsZXIubSBiL1Rvb2xz
L0xheW91dFRlc3RSZWxheS9MYXlvdXRUZXN0UmVsYXkvTFRSZWxheUNvbnRyb2xsZXIubQppbmRl
eCA5NTU3YjFiZmZhYmFkZDQ1M2IwYmJiZjlhNTcyMDA4NGE0MDY4MGU5Li5hOTRhNzA4MDgxNGFl
YTIzZjg1NjEyOWUyMjVjZGExMWVhMDJkNGU4IDEwMDY0NAotLS0gYS9Ub29scy9MYXlvdXRUZXN0
UmVsYXkvTGF5b3V0VGVzdFJlbGF5L0xUUmVsYXlDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTGF5
b3V0VGVzdFJlbGF5L0xheW91dFRlc3RSZWxheS9MVFJlbGF5Q29udHJvbGxlci5tCkBAIC04OSwx
MCArODksMTUgQEAgLSAoTlNTdHJpbmcgKilwcm9jZXNzTmFtZQogCiAtICh2b2lkKXJlYWRGaWxl
SGFuZGxlOihOU0ZpbGVIYW5kbGUgKilmaWxlSGFuZGxlCiB7Ci0gICAgTlNEYXRhICpkYXRhID0g
W2ZpbGVIYW5kbGUgYXZhaWxhYmxlRGF0YV07Ci0gICAgdWludDhfdCBieXRlc1tbZGF0YSBsZW5n
dGhdXTsKLSAgICBbZGF0YSBnZXRCeXRlczpieXRlcyBsZW5ndGg6W2RhdGEgbGVuZ3RoXV07Ci0g
ICAgW1tbc2VsZiByZWxheV0gb3V0cHV0U3RyZWFtXSB3cml0ZTpbZGF0YSBieXRlc10gbWF4TGVu
Z3RoOltkYXRhIGxlbmd0aF1dOworICAgIEB0cnkgeworICAgICAgICBOU0RhdGEgKmRhdGEgPSBb
ZmlsZUhhbmRsZSBhdmFpbGFibGVEYXRhXTsKKyAgICAgICAgdWludDhfdCBieXRlc1tbZGF0YSBs
ZW5ndGhdXTsKKyAgICAgICAgW2RhdGEgZ2V0Qnl0ZXM6Ynl0ZXMgbGVuZ3RoOltkYXRhIGxlbmd0
aF1dOworICAgICAgICBbW1tzZWxmIHJlbGF5XSBvdXRwdXRTdHJlYW1dIHdyaXRlOltkYXRhIGJ5
dGVzXSBtYXhMZW5ndGg6W2RhdGEgbGVuZ3RoXV07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9u
ICplKSB7CisgICAgICAgIC8vIEJyb2tlbiBwaXBlIC0gdGhlIGR1bXAgdG9vbCBjcmFzaGVkLiBU
aW1lIHRvIGRpZS4KKyAgICAgICAgW3NlbGYgZGlkQ3Jhc2hXaXRoTWVzc2FnZTpuaWxdOworICAg
IH0KIH0KIAogCkBAIC0xMzMsNjYgKzEzOCw2IEBAIC0gKHZvaWQpZGlkQ3Jhc2hXaXRoTWVzc2Fn
ZTooTlNTdHJpbmcgKiltZXNzYWdlCiAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwogfQogCi0tICh2
b2lkKWxhdW5jaFNpbXVsYXRvcgotewotICAgIE5TU3RyaW5nICpkZXZlbG9wZXJEaXIgPSBbW1tO
U1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBlbnZpcm9ubWVudF0gdmFsdWVGb3JLZXk6QCJERVZF
TE9QRVJfRElSIl07Ci0gICAgaWYgKCFkZXZlbG9wZXJEaXIpIHsKLSAgICAgICAgTlNUYXNrICp4
Y29kZVNlbGVjdFRhc2sgPSBbW05TVGFzayBhbGxvY10gaW5pdF07Ci0gICAgICAgIFt4Y29kZVNl
bGVjdFRhc2sgc2V0TGF1bmNoUGF0aDpAIi91c3IvYmluL3hjb2RlLXNlbGVjdCJdOwotICAgICAg
ICBbeGNvZGVTZWxlY3RUYXNrIHNldEFyZ3VtZW50czpAW0AiLS1wcmludC1wYXRoIl1dOwotICAg
ICAgICBbeGNvZGVTZWxlY3RUYXNrIHNldFN0YW5kYXJkT3V0cHV0OltOU1BpcGUgcGlwZV1dOwot
Ci0gICAgICAgIE5TRmlsZUhhbmRsZSAqc3Rkb3V0RmlsZUhhbmRsZSA9IFtbeGNvZGVTZWxlY3RU
YXNrIHN0YW5kYXJkT3V0cHV0XSBmaWxlSGFuZGxlRm9yUmVhZGluZ107Ci0gICAgICAgIFt4Y29k
ZVNlbGVjdFRhc2sgbGF1bmNoXTsKLSAgICAgICAgW3hjb2RlU2VsZWN0VGFzayB3YWl0VW50aWxF
eGl0XTsKLQotICAgICAgICBOU0RhdGEgKmRhdGEgPSBbc3Rkb3V0RmlsZUhhbmRsZSByZWFkRGF0
YVRvRW5kT2ZGaWxlXTsKLSAgICAgICAgZGV2ZWxvcGVyRGlyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhVVEY4U3RyaW5nOltkYXRhIGJ5dGVzXV07Ci0gICAgfQotCi0gICAgZGV2ZWxvcGVyRGlyID0g
W2RldmVsb3BlckRpciBzdHJpbmdCeVRyaW1taW5nQ2hhcmFjdGVyc0luU2V0OltOU0NoYXJhY3Rl
clNldCBuZXdsaW5lQ2hhcmFjdGVyU2V0XV07Ci0KLSAgICBpZiAoIWRldmVsb3BlckRpciB8fCAh
W2RldmVsb3BlckRpciBsZW5ndGhdKSB7Ci0gICAgICAgIE5TTG9nKEAiTm90IGFibGUgdG8gZGV0
ZXJtaW5lIHRoZSBwYXRoIHRvIGlPUyBTaW11bGF0b3IuYXBwIGluIHlvdXIgYWN0aXZlIFhjb2Rl
LmFwcCIpOwotICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7Ci0gICAgfQotICAgIE5TVVJMICpz
aW11bGF0b3JVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltkZXZlbG9wZXJEaXIgc3RyaW5n
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiQXBwbGljYXRpb25zL2lPUyBTaW11bGF0b3IuYXBw
Il1dOwotCi0gICAgTlNEaWN0aW9uYXJ5ICpsYXVuY2hDb25maWd1cmF0aW9uID0gQHsKLSAgICAg
ICAgTlNXb3Jrc3BhY2VMYXVuY2hDb25maWd1cmF0aW9uQXJndW1lbnRzOiBAWwotICAgICAgICAg
ICAgQCItQ3VycmVudERldmljZVVESUQiLCBbW1tzZWxmIGRldmljZV0gVURJRF0gVVVJRFN0cmlu
Z10sCi0gICAgICAgICAgICBdCi0gICAgfTsKLSAgICBOU0Vycm9yICplcnJvcjsKLSAgICBbW05T
V29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gbGF1bmNoQXBwbGljYXRpb25BdFVSTDpzaW11bGF0
b3JVUkwgb3B0aW9uczpOU1dvcmtzcGFjZUxhdW5jaERlZmF1bHQgY29uZmlndXJhdGlvbjpsYXVu
Y2hDb25maWd1cmF0aW9uIGVycm9yOiZlcnJvcl07Ci0KLSAgICBpZiAoZXJyb3IpIHsKLSAgICAg
ICAgTlNMb2coQCJDb3VsZG4ndCBsYXVuY2ggaU9TIFNpbXVsYXRvciBmcm9tICVAOiAlQCIsIFtz
aW11bGF0b3JVUkwgcGF0aF0sIFtlcnJvciBkZXNjcmlwdGlvbl0pOwotICAgICAgICBleGl0KEVY
SVRfRkFJTFVSRSk7Ci0gICAgfQotCi0gICAgd2hpbGUgKFtbc2VsZiBkZXZpY2VdIHN0YXRlXSA9
PSBTaW1EZXZpY2VTdGF0ZVNodXRkb3duKSB7Ci0gICAgICAgIC8vIFdhaXQgZm9yIGRldmljZSB0
byBzdGFydCBib290aW5nCi0gICAgICAgIHNsZWVwKDEpOwotICAgIH0KLX0KLQotLSAodm9pZCli
b290RGV2aWNlCi17Ci0gICAgd2hpbGUgKFtbc2VsZiBkZXZpY2VdIHN0YXRlXSA9PSBTaW1EZXZp
Y2VTdGF0ZUJvb3RpbmcpCi0gICAgICAgIHNsZWVwKDEpOwotCi0gICAgaWYgKFtbc2VsZiBkZXZp
Y2VdIHN0YXRlXSA9PSBTaW1EZXZpY2VTdGF0ZUJvb3RlZCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgTlNFcnJvciAqZXJyb3I7Ci0gICAgW1tzZWxmIGRldmljZV0gYm9vdFdpdGhPcHRpb25zOm5p
bCBlcnJvcjomZXJyb3JdOwotICAgIGlmIChlcnJvcikgewotICAgICAgICBOU0xvZyhAIlVuYWJs
ZSB0byBib290IGRldmljZTogJUAiLCBbZXJyb3IgZGVzY3JpcHRpb25dKTsKLSAgICAgICAgZXhp
dChFWElUX0ZBSUxVUkUpOwotICAgIH0KLX0KLQogLSAodm9pZCljcmVhdGVVbmlxdWVBcHAKIHsK
ICAgICBOU0Vycm9yICplcnJvcjsKQEAgLTIxOSwxNCArMTY0LDYgQEAgLSAodm9pZCljcmVhdGVV
bmlxdWVBcHAKICAgICAgICAgKE5TU3RyaW5nICopa0NGQnVuZGxlSWRlbnRpZmllcktleTogW3Nl
bGYgdW5pcXVlQXBwSWRlbnRpZmllcl0sCiAgICAgfTsKIAotICAgIGlmIChbW3NlbGYgZGV2aWNl
XSBhcHBsaWNhdGlvbklzSW5zdGFsbGVkOltzZWxmIHVuaXF1ZUFwcElkZW50aWZpZXJdIHR5cGU6
IG5pbCBlcnJvcjogJmVycm9yXSkgewotICAgICAgICBCT09MIHVuaW5zdGFsbGVkID0gW1tzZWxm
IGRldmljZSBdIHVuaW5zdGFsbEFwcGxpY2F0aW9uOltzZWxmIHVuaXF1ZUFwcElkZW50aWZpZXJd
IHdpdGhPcHRpb25zOm5pbCBlcnJvcjomZXJyb3JdOwotICAgICAgICBpZiAoIXVuaW5zdGFsbGVk
KSB7Ci0gICAgICAgICAgICBOU0xvZyhAIkNvdWxkbid0IHVuaW5zdGFsbCAlQDogJUAiLCBbc2Vs
ZiB1bmlxdWVBcHBJZGVudGlmaWVyXSwgW2Vycm9yIGRlc2NyaXB0aW9uXSk7Ci0gICAgICAgICAg
ICBleGl0KEVYSVRfRkFJTFVSRSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBbW3NlbGYgZGV2
aWNlXSBpbnN0YWxsQXBwbGljYXRpb246W3NlbGYgdW5pcXVlQXBwVVJMXSB3aXRoT3B0aW9uczpp
bnN0YWxsT3B0aW9ucyBlcnJvcjomZXJyb3JdOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBO
U0xvZyhAIkNvdWxkbid0IGluc3RhbGwgJUA6ICVAIiwgW1tzZWxmIHVuaXF1ZUFwcFVSTF0gcGF0
aF0sIFtlcnJvciBkZXNjcmlwdGlvbl0pOwpAQCAtMjgwLDggKzIxNyw2IEBAIC0gKHZvaWQpbGF1
bmNoQXBwCiAKIC0gKHZvaWQpc3RhcnQKIHsKLSAgICBbc2VsZiBsYXVuY2hTaW11bGF0b3JdOwot
ICAgIFtzZWxmIGJvb3REZXZpY2VdOwogICAgIFtzZWxmIGNyZWF0ZVVuaXF1ZUFwcF07CiAgICAg
W1tzZWxmIHJlbGF5XSBzZXR1cF07CiAgICAgW3NlbGYgbGF1bmNoQXBwXTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkKaW5kZXggYmFl
NmY2NGRlODcwZWYxN2JiMTYwMTY4MDNkMWZiY2NhYzBlMzA3Zi4uZDYyM2IxZjJkMjhlMTA0YjYw
YjI1NjI0YjNhZjA1MjY5NmNjN2M0MCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkKQEAgLTM5LDYgKzM5LDcgQEAgaW1wb3J0IHN5
cwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQogCisKIGNsYXNzIEZpbGVTeXN0ZW0ob2Jq
ZWN0KToKICAgICAiIiJGaWxlU3lzdGVtIGludGVyZmFjZSBmb3Igd2Via2l0cHkuCiAKQEAgLTIy
Myw4ICsyMjQsOSBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICIiIldyaXRl
IHRoZSBjb250ZW50cyB0byB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24uCiAKICAgICAg
ICAgVGhlIGZpbGUgaXMgd3JpdHRlbiBlbmNvZGVkIGFzIFVURi04IHdpdGggbm8gQk9NLiIiIgot
ICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHBhdGgsICd3JywgJ3V0ZjgnKSBhcyBmOgotICAgICAg
ICAgICAgZi53cml0ZShjb250ZW50cykKKyAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAn
dycsICd1dGYtOCcpIGFzIGY6CisgICAgICAgICAgICAjIEZJWE1FOiBKdXN0IGYud3JpdGUoY29u
dGVudHMpIHdoZW4gc3dpdGNoaW5nIHRvIFB5dGhvbiAzCisgICAgICAgICAgICBmLndyaXRlKGNv
bnRlbnRzLmRlY29kZSgndXRmLTgnKSBpZiB0eXBlKGNvbnRlbnRzKSA9PSBzdHIgZWxzZSBjb250
ZW50cykKIAogICAgIGRlZiBzaGExKHNlbGYsIHBhdGgpOgogICAgICAgICBjb250ZW50cyA9IHNl
bGYucmVhZF9iaW5hcnlfZmlsZShwYXRoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2RyaXZlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIu
cHkKaW5kZXggNTM2Mzk1ZTFkNGEyODc0NzQ0NzAzZTcyODU3ZTYwMTI0ZWZhOTRiOC4uZjk1MDE0
ZDlmYTJlZjAyYTIyMmZlNDI1MDI5YjhhODE0MzYyY2VkOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvZHJpdmVyLnB5CkBAIC01MTMsNiArNTEzLDEwIEBAIGNsYXNzIElPU1NpbXVsYXRvckRy
aXZlcihEcml2ZXIpOgogICAgICAgICBdCiAgICAgICAgIHJldHVybiBbcmVsYXlfdG9vbF0gKyBy
ZWxheV9hcmdzICsgWyctLSddICsgZHVtcF90b29sX2FyZ3MKIAorICAgIGRlZiBfc2V0dXBfZW52
aXJvbl9mb3JfZHJpdmVyKHNlbGYsIGVudmlyb25tZW50KToKKyAgICAgICAgZW52aXJvbm1lbnRb
J0RFVkVMT1BFUl9ESVInXSA9IHNlbGYuX3BvcnQuZGV2ZWxvcGVyX2RpcgorICAgICAgICByZXR1
cm4gc3VwZXIoSU9TU2ltdWxhdG9yRHJpdmVyLCBzZWxmKS5fc2V0dXBfZW52aXJvbl9mb3JfZHJp
dmVyKGVudmlyb25tZW50KQorCiAKIGNsYXNzIENvbnRlbnRCbG9jayhvYmplY3QpOgogICAgIGRl
ZiBfX2luaXRfXyhzZWxmKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9pbWFnZV9kaWZmLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ltYWdlX2RpZmYu
cHkKaW5kZXggMGNiMTRjMmEzZGIxOWM3MjljMmU0NjVhMjU1MGY0ZDliMDM1MTJhMy4uNjI3ZDlj
ZjMzY2UzYmVlYWI4ZWYyNjQ1YThlNDQwMmUyMmI2ZDU5YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2ltYWdlX2RpZmYucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2ltYWdlX2RpZmYucHkKQEAgLTExOCw3ICsxMTgsNiBAQCBjbGFzcyBJbWFnZURp
ZmZlcihvYmplY3QpOgogY2xhc3MgSU9TU2ltdWxhdG9ySW1hZ2VEaWZmZXIoSW1hZ2VEaWZmZXIp
OgogICAgIGRlZiBfc3RhcnQoc2VsZiwgdG9sZXJhbmNlKToKICAgICAgICAgY29tbWFuZCA9IFsn
eGNydW4nLCAnLXNkaycsICdpcGhvbmVzaW11bGF0b3InLCAnc2ltJywgJy0tZW52aXJvbm1lbnQ9
cHJlc2VydmUnLCAnLS1hZG9wdC1waWQnLCBzZWxmLl9wb3J0Ll9wYXRoX3RvX2ltYWdlX2RpZmYo
KSwgJy0tdG9sZXJhbmNlJywgc3RyKHRvbGVyYW5jZSldCi0gICAgICAgIHByaW50ICcgJy5qb2lu
KGNvbW1hbmQpCiAgICAgICAgIGVudmlyb25tZW50ID0gc2VsZi5fcG9ydC5zZXR1cF9lbnZpcm9u
X2Zvcl9zZXJ2ZXIoJ0ltYWdlRGlmZicpCiAgICAgICAgIHNlbGYuX3Byb2Nlc3MgPSBzZWxmLl9w
b3J0Ll9zZXJ2ZXJfcHJvY2Vzc19jb25zdHJ1Y3RvcihzZWxmLl9wb3J0LCAnSW1hZ2VEaWZmJywg
Y29tbWFuZCwgZW52aXJvbm1lbnQpCiAgICAgICAgIHNlbGYuX3Byb2Nlc3Muc3RhcnQoKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9pb3MucHkKaW5kZXggYTMzOGFkMDhmMzg5YTI5ZWEzMWQxZGRhNWJm
MGIxMmNhMWJlYTZjMS4uZjYwMTJkOTdhNmJkYTg3NjJlMTczN2JhODk0OWUyOGEwNjg2ZTY1YiAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CkBAIC0xMDEsMTAgKzEwMSw3IEBAIGNsYXNz
IElPU1NpbXVsYXRvclBvcnQoUG9ydCk6CiAKICAgICBkZWYgY2hlY2tfYnVpbGQoc2VsZiwgbmVl
ZHNfaHR0cCk6CiAgICAgICAgIG5lZWRzX2RyaXZlciA9IHN1cGVyKElPU1NpbXVsYXRvclBvcnQs
IHNlbGYpLmNoZWNrX2J1aWxkKG5lZWRzX2h0dHApCi0gICAgICAgIHJldHVybiBuZWVkc19kcml2
ZXIgYW5kIHNlbGYuX2NoZWNrX2J1aWxkX3JlbGF5KCkgYW5kIHNlbGYuX2NoZWNrX2J1aWxkX2lt
YWdlX2RpZmYoKQotCi0gICAgZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6Ci0gICAgICAg
IHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fbWFjX2J1aWxkX2RpcmVjdG9yeSwg
J0ltYWdlRGlmZicpCisgICAgICAgIHJldHVybiBuZWVkc19kcml2ZXIgYW5kIHNlbGYuX2NoZWNr
X2J1aWxkX3JlbGF5KCkKIAogICAgIGRlZiBfYnVpbGRfcmVsYXkoc2VsZik6CiAgICAgICAgIGVu
dmlyb25tZW50ID0gc2VsZi5ob3N0LmNvcHlfY3VycmVudF9lbnZpcm9ubWVudCgpCkBAIC0xMTgs
MzcgKzExNSwxMCBAQCBjbGFzcyBJT1NTaW11bGF0b3JQb3J0KFBvcnQpOgogICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICBkZWYgX2NoZWNrX2ltYWdl
X2RpZmYoc2VsZik6Ci0gICAgICAgIGltYWdlX2RpZmZfcGF0aCA9IHNlbGYuX3BhdGhfdG9faW1h
Z2VfZGlmZigpCi0gICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhpbWFnZV9k
aWZmX3BhdGgpOgotICAgICAgICAgICAgX2xvZy5lcnJvcigiJXMgd2FzIG5vdCBmb3VuZCBhdCAl
cyIgJSAoJ0ltYWdlRGlmZicsIGltYWdlX2RpZmZfcGF0aCkpCi0gICAgICAgICAgICByZXR1cm4g
RmFsc2UKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBfY2hlY2tfYnVpbGRfaW1hZ2Vf
ZGlmZihzZWxmKToKLSAgICAgICAgaWYgbm90IHNlbGYuX3Jvb3Rfd2FzX3NldCBhbmQgc2VsZi5n
ZXRfb3B0aW9uKCdidWlsZCcpIGFuZCBub3Qgc2VsZi5fYnVpbGRfZHJpdmVyKCk6Ci0gICAgICAg
ICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgbm90IHNlbGYuX2NoZWNrX2ltYWdlX2RpZmYo
KToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAg
ZGVmIF9idWlsZF9pbWFnZV9kaWZmKHNlbGYpOgotICAgICAgICBlbnZpcm9ubWVudCA9IHNlbGYu
aG9zdC5jb3B5X2N1cnJlbnRfZW52aXJvbm1lbnQoKQotICAgICAgICBlbnZpcm9ubWVudC5kaXNh
YmxlX2djY19zbWFydHF1b3RlcygpCi0gICAgICAgIGVudiA9IGVudmlyb25tZW50LnRvX2RpY3Rp
b25hcnkoKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3J1bl9zY3JpcHQoImJ1
aWxkLWltYWdlZGlmZiIsIGVudj1lbnYpCi0gICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToK
LSAgICAgICAgICAgIF9sb2cuZXJyb3IoZS5tZXNzYWdlX3dpdGhfb3V0cHV0KG91dHB1dF9saW1p
dD1Ob25lKSkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gVHJ1ZQot
CiAgICAgZGVmIF9idWlsZF9kcml2ZXIoc2VsZik6CiAgICAgICAgIGJ1aWx0X3Rvb2wgPSBzdXBl
cihJT1NTaW11bGF0b3JQb3J0LCBzZWxmKS5fYnVpbGRfZHJpdmVyKCkKICAgICAgICAgYnVpbHRf
cmVsYXkgPSBzZWxmLl9idWlsZF9yZWxheSgpCi0gICAgICAgIGJ1aWx0X2ltYWdlX2RpZmYgPSBz
ZWxmLl9idWlsZF9pbWFnZV9kaWZmKCkKLSAgICAgICAgcmV0dXJuIGJ1aWx0X3Rvb2wgYW5kIGJ1
aWx0X3JlbGF5IGFuZCBidWlsdF9pbWFnZV9kaWZmCisgICAgICAgIHJldHVybiBidWlsdF90b29s
IGFuZCBidWlsdF9yZWxheQogCiAgICAgZGVmIF9idWlsZF9kcml2ZXJfZmxhZ3Moc2VsZik6CiAg
ICAgICAgIGFyY2hzID0gWydBUkNIUz1pMzg2J10gaWYgc2VsZi5hcmNoaXRlY3R1cmUoKSA9PSAn
eDg2JyBlbHNlIFtdCkBAIC0xODQsNiArMTU0LDEwIEBAIGNsYXNzIElPU1NpbXVsYXRvclBvcnQo
UG9ydCk6CiAKICAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZik6CiAgICAgICAgIHNlbGYuX2V4
ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ29zYXNjcmlwdCcsICctZScsICd0ZWxsIGFwcGxpY2F0aW9u
ICJpT1MgU2ltdWxhdG9yIiB0byBxdWl0J10pCisgICAgICAgIHRpbWUuc2xlZXAoMikKKyAgICAg
ICAgc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsKKyAgICAgICAgICAgICdvcGVuJywgJy1h
Jywgb3MucGF0aC5qb2luKHNlbGYuZGV2ZWxvcGVyX2RpciwgJ0FwcGxpY2F0aW9ucycsICdpT1Mg
U2ltdWxhdG9yLmFwcCcpLAorICAgICAgICAgICAgJy0tYXJncycsICctQ3VycmVudERldmljZVVE
SUQnLCBzZWxmLnNpbXVsYXRvcl91ZGlkKCldKQogCiAgICAgZGVmIGNsZWFuX3VwX3Rlc3RfcnVu
KHNlbGYpOgogICAgICAgICBzdXBlcihJT1NTaW11bGF0b3JQb3J0LCBzZWxmKS5jbGVhbl91cF90
ZXN0X3J1bigpCkBAIC0yNTcsNyArMjMxLDcgQEAgY2xhc3MgSU9TU2ltdWxhdG9yUG9ydChQb3J0
KToKICAgICAgICAgY3Jhc2hfcHJlZml4ID0gJ0NSQVNIOiAnCiAgICAgICAgIHN0ZGVycl9saW5l
cyA9IFtdCiAgICAgICAgIGNyYXNoX2xpbmVzID0gW10KLSAgICAgICAgZm9yIGxpbmUgaW4gc3Rk
ZXJyLnNwbGl0bGluZXMoKToKKyAgICAgICAgZm9yIGxpbmUgaW4gKHN0ZGVyciBvciAnJykuc3Bs
aXRsaW5lcygpOgogICAgICAgICAgICAgY3Jhc2hfbGluZXMuYXBwZW5kKGxpbmUpIGlmIGxpbmUu
c3RhcnRzd2l0aChjcmFzaF9wcmVmaXgpIGVsc2Ugc3RkZXJyX2xpbmVzLmFwcGVuZChsaW5lKQog
CiAgICAgICAgIGZvciBjcmFzaF9saW5lIGluIGNyYXNoX2xpbmVzOgpAQCAtMzcwLDUgKzM0NCw5
IEBAIGNsYXNzIElPU1NpbXVsYXRvclBvcnQoUG9ydCk6CiAgICAgICAgICAgICBfbG9nLndhcm4o
InhjcnVuIGZhaWxlZDsgZmFsbGluZyBiYWNrIHRvICclcycuIiAlIGZhbGxiYWNrKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbGxiYWNrCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGV2ZWxvcGVy
X2RpcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChb
J3hjb2RlLXNlbGVjdCcsICctLXByaW50LXBhdGgnXSkucnN0cmlwKCkKKwogICAgIGRlZiBsb2dn
aW5nX3BhdHRlcm5zX3RvX3N0cmlwKHNlbGYpOgogICAgICAgICByZXR1cm4gW10KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvYmxvY2svYm9yZGVyLWZpdC13aXRoLXJpZ2h0LWFsaWdubWVu
dC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9ib3JkZXItZml0LXdpdGgt
cmlnaHQtYWxpZ25tZW50LWV4cGVjdGVkLmh0bWwKaW5kZXggNTVkYzk3YzU3MDdjZDQzMTJlNmFm
MzY1NWRhYmRlODJmYzc5MjMwYi4uNmY0ZWE5ODcwMGExZjI5ZjdhM2NiZmNkNDAxY2QxMzhmOTg3
ZTY0YSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDc1NQp6Y21aOGYhRVcweTNfVjkq
O1JXYlh3Y3twNXQyaSEtLU03bmIjWmJ0JFZoZlEoTDg2LSZNZ00pMD9SZVJJRi1ZcTEKekp3Q0dO
UF4qI0BvIzBMUWNeczR8TiFAWGpEMEsya1IlaDhAJEM2IV4qfl58SjtjS0x+aVZyTklYSGxJYiho
QkN2CnpPQGV9eCFYV3opNHJSXk5vX3Z1djZjP244YmZRS0g9Q0RAaSoxclNFKU9Baj9CJjNzWFFk
QEF5NE1ycjwhaDdDfAp6RENrT0dEWDMzLXZhO1oxWXt3RU9STTduKUI0UCRhIyNAanlOKlkwRFl+
PERhTFo9eUB2JUFwbDQ2ZFBQJDFTVXoKejszcGQ2a1JHTFRDMG9Pa0kwako+VFpOaSU2djQ5MVYk
WW5jMDEtNlg8azdaTy04JkRDQ0E+JE52QWpPRDR0bXFqCno4ZFIqKzEyPEZjdWE5SEBxcl9sSihD
dFNyJGxLOUByZGt9PGdZYilpSHd2OT5KQityR0JBcilTcXw9SD9ROSgwPQp6UmJPe3A3RlRjbz5B
SXcyK2Etd0RXRi0xO2l9N3xXSHx3JVB3NFM5WTB3e21xZCtZQ08mfWo/bEZCY35NNCgyR0cKemVq
TnxzVF5pZnQzLVJjRjJGY0B0QUg2PDJaP29OUWxqVHxWXnBybnR3Xnt6VWQmdDhtZmd1cDN2KjIt
JUM3Tl96ClBZaHtyeDB8dnpXYlVnTXlhLSNkfgoKbGl0ZXJhbCAxNTEyCnpjbWFpISYySDBCNVFT
JShLMUdQYyhvR3UocTZMWiZkKVRsOzYtcl8halQrbGtZLWwzSHN7YE1lPiNJMTlwfFRSKwp6SjlG
bW0lIzhwMWVydEREVFclWT51YHw7eHZ6ZXZNdHdPZyltLSY1eGM3fGxsRlQtWU5LZH45dUJhIyVe
b24wZkYKeis2QipwP2QlUU9WZV9QNUR4QDFjPj5aYjJtKVlGei1DeDN+P0FZYHA1XiE1PUdBb0ZB
WjloMHxKKnglMkh5LXNECnprLXZKREpOXl4wVFo3NEw7a1hqWmNReWlCQk9UZG9RJU83NVczPWlE
PSVHRXNTNTc2JHE5JnJVUF5GNF9oOTt4Vgp6M2kqbXRXVDsjSDlCKERyK2BIdyN5O2FWYDhoUFJU
QzxDITJ6RXh3NGFVNE9OUD51aEp3OHE7ODQrU2BKKz5SVVQKeiY1NSFAK3dTOFBKJCY5fF92cDJ6
akBXe0lBaXVmdUlpbXZFaUhvI0IkQll0P2lvRWlBRygqZFZzVGZ4c20hMH5UCnpwZXg8O1d6WH4r
Qlh6NENwT2VYQE98VDJvSGh8T2JjJnBzQXg7RW8zJitTPjlCTmd7NmtSfCRwOTE8akB2JEoqZgp6
N2ZoKm8rcVViUSQzeTswP19aZGR6PDFAPVZKPFh9T09LWm1PRmgmQz9zLT18NldHdDhyaGV1Nzht
Q1BnSkh8dE0Kek9DQFA8dWBwc1JDMGZ8PT9qR05PSUcoRUVle3d4ViQ4MWtFRzQ3QkkhPDtefml5
PWRPRGE4SldqUC1yMHhtV2FNCnolJWc2cVE8YV81SjBXI2FfajByPS1lZGEkKTFrKjd4ZmZLVXtt
PDxLSVBIXlUtKl57VFlkK3F5eG5nbF5wWlNVOQp6Z05JS2JhPUxZOEZQWTNLazB4fSZANHthNU96
YWdKPjIjWGYzKk1uQ3BAdlk9eFdqTntNeDFxWmsqaHZra2V6bGcKTE92MTYoITxZUnBxZVQ3YwoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237866</attachid>
            <date>2014-09-09 15:56:02 -0700</date>
            <delta_ts>2014-09-09 16:24:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135551-20140909155558.patch</filename>
            <type>text/plain</type>
            <size>13838</size>
            <attacher name="David Farler">dfarler</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMzk0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzA0M2Y0YmQyZDM1OTFkNzNmZGNhYzRjM2ZlYWFmMTNj
YzU3MDYxOS4uMjBhZDA2ZDgwMDUxNTJkNzc2ZmY0Y2MwMTA5MDg1M2MwNTQ3NDI5NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3
IEBACisyMDE0LTA4LTA1ICBEYXZpZCBGYXJsZXIgIDxkZmFybGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBpT1MgU2ltdWxhdG9yOiBydW4td2Via2l0LXRlc3RzIGNob2tlcyBvbiB1bnRlcm1pbmF0
ZWQgVVRGLTggd2hlbiB3cml0aW5nIGEgdGVzdCByZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTU1MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZlbnQgcHJpbnRpbmcgaW52YWxpZCBVbmlj
b2RlIHN0cmluZ3MgZ29pbmcgdG8gc3RkZXJyLgorICAgICAgICBBbHNvLCBtYWtlIGZpbGVzeXN0
ZW0ucHkgbW9yZSB0b2xlcmFudCBhYm91dCByZWNlaXZpbmcKKyAgICAgICAgdW5pY29kZSAoZW5j
b2RlZCBhcyB1dGYtOCkgd2hlbiB3cml0aW5nIHRvIGZpbGVzLCBpbiB0aGUKKyAgICAgICAgcmFy
ZSBjYXNlIHRoYXQgYW4gTlNFcnJvciBkZXNjcmlwdGlvbiB3aWxsIG1ha2UgaXQgdG8KKyAgICAg
ICAgc3RkZXJyLgorCisgICAgICAgICogTGF5b3V0VGVzdFJlbGF5L0xheW91dFRlc3RSZWxheS9M
VFJlbGF5Q29udHJvbGxlci5tOgorICAgICAgICAoLVtMVFJlbGF5Q29udHJvbGxlciBsYXVuY2hT
aW11bGF0b3JdKTogUmVtb3ZlZC4KKyAgICAgICAgKC1bTFRSZWxheUNvbnRyb2xsZXIgY3JlYXRl
VW5pcXVlQXBwXSk6CisgICAgICAgIERvbid0IGV4cGxpY2l0bHkgdHJ5IHRvIHVuaW5zdGFsbCB0
aGUgYXBwLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGhhbmRsZWQKKyAgICAgICAgd2hlbiBpbnN0YWxs
aW5nIGFuIGFwcCB3aXRoIHRoZSBzYW1lIGJ1bmRsZSBpZGVudGlmaWVyLgorICAgICAgICAoLVtM
VFJlbGF5Q29udHJvbGxlciBzdGFydF0pOgorICAgICAgICAoLVtMVFJlbGF5Q29udHJvbGxlciBi
b290RGV2aWNlXSk6IFJlbW92ZWQuCisgICAgICAgIFRoZSBkZXZpY2UgYWxyZWFkeSBib290cyBh
cyBhIHBhcnQgb2Ygc3RhcnRpbmcgdGhlIHNpbXVsYXRvci4gQXR0ZW1wdGluZworICAgICAgICB0
byBib290IGEgc2Vjb25kIHRpbWUgbWF5IGNhdXNlIHNwdXJpb3VzIHN0ZGVyciBvdXRwdXQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weToKKyAgICAgICAgKElPU1Np
bXVsYXRvckRyaXZlci5fc2V0dXBfZW52aXJvbl9mb3JfZHJpdmVyKToKKyAgICAgICAgRXhwbGlj
aXRseSBzZXQgREVWRUxPUEVSX0RJUiBvbmNlIHNvIHhjb2RlLXNlbGVjdCBpc24ndCBjYWxsZWQu
CisgICAgICAgIE9wZW4gdGhlIGlPUyBTaW11bGF0b3Igb25jZSBpbnN0ZWFkIG9mIHRoZSBMYXlv
dXRUZXN0UmVsYXkgdHJ5aW5nCisgICAgICAgIHRvIGRvIGl0LgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvcG9ydC9pb3MucHk6CisgICAgICAgIChJT1NTaW11bGF0b3JQb3J0Ll9nZXRfY3Jh
c2hfbG9nKToKKyAgICAgICAgTWFrZSBzdXJlIHN0ZGVyciBpcyBhdCBsZWFzdCBhbiBlbXB0eSBz
dHJpbmcuCisgICAgICAgIChJT1NTaW11bGF0b3JQb3J0KToKKyAgICAgICAgKElPU1NpbXVsYXRv
clBvcnQuZGV2ZWxvcGVyX2Rpcik6CisgICAgICAgIE5ldyBwcm9wZXJ0eSBmb3Igc2V0dGluZyB1
cCBERVZFTE9QRVJfRElSIGluIHRoZSBkcml2ZXIgZW52aXJvbm1lbnQuCisKIDIwMTQtMDktMDgg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgRGFzaGJvYXJk
IG1ldHJpY3Mgc2hvdWxkIGlnbm9yZSBjb21taXRzIHRoYXQgZGlkbid0IHRyaWdnZXIgYnVpbGRz
CmRpZmYgLS1naXQgYS9Ub29scy9MYXlvdXRUZXN0UmVsYXkvTGF5b3V0VGVzdFJlbGF5L0xUUmVs
YXlDb250cm9sbGVyLm0gYi9Ub29scy9MYXlvdXRUZXN0UmVsYXkvTGF5b3V0VGVzdFJlbGF5L0xU
UmVsYXlDb250cm9sbGVyLm0KaW5kZXggOTU1N2IxYmZmYWJhZGQ0NTNiMGJiYmY5YTU3MjAwODRh
NDA2ODBlOS4uMmJhMjMxZjJmYWI1Y2Q3YzA1NjYwOWU4ZmU4NDk4MTNkOTVkZDNhMyAxMDA2NDQK
LS0tIGEvVG9vbHMvTGF5b3V0VGVzdFJlbGF5L0xheW91dFRlc3RSZWxheS9MVFJlbGF5Q29udHJv
bGxlci5tCisrKyBiL1Rvb2xzL0xheW91dFRlc3RSZWxheS9MYXlvdXRUZXN0UmVsYXkvTFRSZWxh
eUNvbnRyb2xsZXIubQpAQCAtODksMTAgKzg5LDEzIEBAIC0gKE5TU3RyaW5nICopcHJvY2Vzc05h
bWUKIAogLSAodm9pZClyZWFkRmlsZUhhbmRsZTooTlNGaWxlSGFuZGxlICopZmlsZUhhbmRsZQog
ewotICAgIE5TRGF0YSAqZGF0YSA9IFtmaWxlSGFuZGxlIGF2YWlsYWJsZURhdGFdOwotICAgIHVp
bnQ4X3QgYnl0ZXNbW2RhdGEgbGVuZ3RoXV07Ci0gICAgW2RhdGEgZ2V0Qnl0ZXM6Ynl0ZXMgbGVu
Z3RoOltkYXRhIGxlbmd0aF1dOwotICAgIFtbW3NlbGYgcmVsYXldIG91dHB1dFN0cmVhbV0gd3Jp
dGU6W2RhdGEgYnl0ZXNdIG1heExlbmd0aDpbZGF0YSBsZW5ndGhdXTsKKyAgICBAdHJ5IHsKKyAg
ICAgICAgTlNEYXRhICpkYXRhID0gW2ZpbGVIYW5kbGUgYXZhaWxhYmxlRGF0YV07CisgICAgICAg
IFtbW3NlbGYgcmVsYXldIG91dHB1dFN0cmVhbV0gd3JpdGU6W2RhdGEgYnl0ZXNdIG1heExlbmd0
aDpbZGF0YSBsZW5ndGhdXTsKKyAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmUpIHsKKyAgICAg
ICAgLy8gQnJva2VuIHBpcGUgLSB0aGUgZHVtcCB0b29sIGNyYXNoZWQuIFRpbWUgdG8gZGllLgor
ICAgICAgICBbc2VsZiBkaWRDcmFzaFdpdGhNZXNzYWdlOm5pbF07CisgICAgfQogfQogCiAKQEAg
LTEzMyw2NiArMTM2LDYgQEAgLSAodm9pZClkaWRDcmFzaFdpdGhNZXNzYWdlOihOU1N0cmluZyAq
KW1lc3NhZ2UKICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiB9CiAKLS0gKHZvaWQpbGF1bmNoU2lt
dWxhdG9yCi17Ci0gICAgTlNTdHJpbmcgKmRldmVsb3BlckRpciA9IFtbW05TUHJvY2Vzc0luZm8g
cHJvY2Vzc0luZm9dIGVudmlyb25tZW50XSB2YWx1ZUZvcktleTpAIkRFVkVMT1BFUl9ESVIiXTsK
LSAgICBpZiAoIWRldmVsb3BlckRpcikgewotICAgICAgICBOU1Rhc2sgKnhjb2RlU2VsZWN0VGFz
ayA9IFtbTlNUYXNrIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW3hjb2RlU2VsZWN0VGFzayBzZXRM
YXVuY2hQYXRoOkAiL3Vzci9iaW4veGNvZGUtc2VsZWN0Il07Ci0gICAgICAgIFt4Y29kZVNlbGVj
dFRhc2sgc2V0QXJndW1lbnRzOkBbQCItLXByaW50LXBhdGgiXV07Ci0gICAgICAgIFt4Y29kZVNl
bGVjdFRhc2sgc2V0U3RhbmRhcmRPdXRwdXQ6W05TUGlwZSBwaXBlXV07Ci0KLSAgICAgICAgTlNG
aWxlSGFuZGxlICpzdGRvdXRGaWxlSGFuZGxlID0gW1t4Y29kZVNlbGVjdFRhc2sgc3RhbmRhcmRP
dXRwdXRdIGZpbGVIYW5kbGVGb3JSZWFkaW5nXTsKLSAgICAgICAgW3hjb2RlU2VsZWN0VGFzayBs
YXVuY2hdOwotICAgICAgICBbeGNvZGVTZWxlY3RUYXNrIHdhaXRVbnRpbEV4aXRdOwotCi0gICAg
ICAgIE5TRGF0YSAqZGF0YSA9IFtzdGRvdXRGaWxlSGFuZGxlIHJlYWREYXRhVG9FbmRPZkZpbGVd
OwotICAgICAgICBkZXZlbG9wZXJEaXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6
W2RhdGEgYnl0ZXNdXTsKLSAgICB9Ci0KLSAgICBkZXZlbG9wZXJEaXIgPSBbZGV2ZWxvcGVyRGly
IHN0cmluZ0J5VHJpbW1pbmdDaGFyYWN0ZXJzSW5TZXQ6W05TQ2hhcmFjdGVyU2V0IG5ld2xpbmVD
aGFyYWN0ZXJTZXRdXTsKLQotICAgIGlmICghZGV2ZWxvcGVyRGlyIHx8ICFbZGV2ZWxvcGVyRGly
IGxlbmd0aF0pIHsKLSAgICAgICAgTlNMb2coQCJOb3QgYWJsZSB0byBkZXRlcm1pbmUgdGhlIHBh
dGggdG8gaU9TIFNpbXVsYXRvci5hcHAgaW4geW91ciBhY3RpdmUgWGNvZGUuYXBwIik7Ci0gICAg
ICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKLSAgICB9Ci0gICAgTlNVUkwgKnNpbXVsYXRvclVSTCA9
IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W2RldmVsb3BlckRpciBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJBcHBsaWNhdGlvbnMvaU9TIFNpbXVsYXRvci5hcHAiXV07Ci0KLSAgICBO
U0RpY3Rpb25hcnkgKmxhdW5jaENvbmZpZ3VyYXRpb24gPSBAewotICAgICAgICBOU1dvcmtzcGFj
ZUxhdW5jaENvbmZpZ3VyYXRpb25Bcmd1bWVudHM6IEBbCi0gICAgICAgICAgICBAIi1DdXJyZW50
RGV2aWNlVURJRCIsIFtbW3NlbGYgZGV2aWNlXSBVRElEXSBVVUlEU3RyaW5nXSwKLSAgICAgICAg
ICAgIF0KLSAgICB9OwotICAgIE5TRXJyb3IgKmVycm9yOwotICAgIFtbTlNXb3Jrc3BhY2Ugc2hh
cmVkV29ya3NwYWNlXSBsYXVuY2hBcHBsaWNhdGlvbkF0VVJMOnNpbXVsYXRvclVSTCBvcHRpb25z
Ok5TV29ya3NwYWNlTGF1bmNoRGVmYXVsdCBjb25maWd1cmF0aW9uOmxhdW5jaENvbmZpZ3VyYXRp
b24gZXJyb3I6JmVycm9yXTsKLQotICAgIGlmIChlcnJvcikgewotICAgICAgICBOU0xvZyhAIkNv
dWxkbid0IGxhdW5jaCBpT1MgU2ltdWxhdG9yIGZyb20gJUA6ICVAIiwgW3NpbXVsYXRvclVSTCBw
YXRoXSwgW2Vycm9yIGRlc2NyaXB0aW9uXSk7Ci0gICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsK
LSAgICB9Ci0KLSAgICB3aGlsZSAoW1tzZWxmIGRldmljZV0gc3RhdGVdID09IFNpbURldmljZVN0
YXRlU2h1dGRvd24pIHsKLSAgICAgICAgLy8gV2FpdCBmb3IgZGV2aWNlIHRvIHN0YXJ0IGJvb3Rp
bmcKLSAgICAgICAgc2xlZXAoMSk7Ci0gICAgfQotfQotCi0tICh2b2lkKWJvb3REZXZpY2UKLXsK
LSAgICB3aGlsZSAoW1tzZWxmIGRldmljZV0gc3RhdGVdID09IFNpbURldmljZVN0YXRlQm9vdGlu
ZykKLSAgICAgICAgc2xlZXAoMSk7Ci0KLSAgICBpZiAoW1tzZWxmIGRldmljZV0gc3RhdGVdID09
IFNpbURldmljZVN0YXRlQm9vdGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU0Vycm9yICpl
cnJvcjsKLSAgICBbW3NlbGYgZGV2aWNlXSBib290V2l0aE9wdGlvbnM6bmlsIGVycm9yOiZlcnJv
cl07Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIE5TTG9nKEAiVW5hYmxlIHRvIGJvb3QgZGV2
aWNlOiAlQCIsIFtlcnJvciBkZXNjcmlwdGlvbl0pOwotICAgICAgICBleGl0KEVYSVRfRkFJTFVS
RSk7Ci0gICAgfQotfQotCiAtICh2b2lkKWNyZWF0ZVVuaXF1ZUFwcAogewogICAgIE5TRXJyb3Ig
KmVycm9yOwpAQCAtMjE5LDE0ICsxNjIsNiBAQCAtICh2b2lkKWNyZWF0ZVVuaXF1ZUFwcAogICAg
ICAgICAoTlNTdHJpbmcgKilrQ0ZCdW5kbGVJZGVudGlmaWVyS2V5OiBbc2VsZiB1bmlxdWVBcHBJ
ZGVudGlmaWVyXSwKICAgICB9OwogCi0gICAgaWYgKFtbc2VsZiBkZXZpY2VdIGFwcGxpY2F0aW9u
SXNJbnN0YWxsZWQ6W3NlbGYgdW5pcXVlQXBwSWRlbnRpZmllcl0gdHlwZTogbmlsIGVycm9yOiAm
ZXJyb3JdKSB7Ci0gICAgICAgIEJPT0wgdW5pbnN0YWxsZWQgPSBbW3NlbGYgZGV2aWNlIF0gdW5p
bnN0YWxsQXBwbGljYXRpb246W3NlbGYgdW5pcXVlQXBwSWRlbnRpZmllcl0gd2l0aE9wdGlvbnM6
bmlsIGVycm9yOiZlcnJvcl07Ci0gICAgICAgIGlmICghdW5pbnN0YWxsZWQpIHsKLSAgICAgICAg
ICAgIE5TTG9nKEAiQ291bGRuJ3QgdW5pbnN0YWxsICVAOiAlQCIsIFtzZWxmIHVuaXF1ZUFwcElk
ZW50aWZpZXJdLCBbZXJyb3IgZGVzY3JpcHRpb25dKTsKLSAgICAgICAgICAgIGV4aXQoRVhJVF9G
QUlMVVJFKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIFtbc2VsZiBkZXZpY2VdIGluc3RhbGxB
cHBsaWNhdGlvbjpbc2VsZiB1bmlxdWVBcHBVUkxdIHdpdGhPcHRpb25zOmluc3RhbGxPcHRpb25z
IGVycm9yOiZlcnJvcl07CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIE5TTG9nKEAiQ291bGRu
J3QgaW5zdGFsbCAlQDogJUAiLCBbW3NlbGYgdW5pcXVlQXBwVVJMXSBwYXRoXSwgW2Vycm9yIGRl
c2NyaXB0aW9uXSk7CkBAIC0yODAsOCArMjE1LDYgQEAgLSAodm9pZClsYXVuY2hBcHAKIAogLSAo
dm9pZClzdGFydAogewotICAgIFtzZWxmIGxhdW5jaFNpbXVsYXRvcl07Ci0gICAgW3NlbGYgYm9v
dERldmljZV07CiAgICAgW3NlbGYgY3JlYXRlVW5pcXVlQXBwXTsKICAgICBbW3NlbGYgcmVsYXld
IHNldHVwXTsKICAgICBbc2VsZiBsYXVuY2hBcHBdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQppbmRleCBiYWU2ZjY0ZGU4NzBlZjE3
YmIxNjAxNjgwM2QxZmJjY2FjMGUzMDdmLi5kNjIzYjFmMmQyOGUxMDRiNjBiMjU2MjRiM2FmMDUy
Njk2Y2M3YzQwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbS5weQpAQCAtMzksNiArMzksNyBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdGVt
cGZpbGUKIGltcG9ydCB0aW1lCiAKKwogY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgICIi
IkZpbGVTeXN0ZW0gaW50ZXJmYWNlIGZvciB3ZWJraXRweS4KIApAQCAtMjIzLDggKzIyNCw5IEBA
IGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgIiIiV3JpdGUgdGhlIGNvbnRlbnRz
IHRvIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4KIAogICAgICAgICBUaGUgZmlsZSBp
cyB3cml0dGVuIGVuY29kZWQgYXMgVVRGLTggd2l0aCBubyBCT00uIiIiCi0gICAgICAgIHdpdGgg
Y29kZWNzLm9wZW4ocGF0aCwgJ3cnLCAndXRmOCcpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRl
KGNvbnRlbnRzKQorICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHBhdGgsICd3JywgJ3V0Zi04Jykg
YXMgZjoKKyAgICAgICAgICAgICMgRklYTUU6IEp1c3QgZi53cml0ZShjb250ZW50cykgd2hlbiBz
d2l0Y2hpbmcgdG8gUHl0aG9uIDMKKyAgICAgICAgICAgIGYud3JpdGUoY29udGVudHMuZGVjb2Rl
KCd1dGYtOCcpIGlmIHR5cGUoY29udGVudHMpID09IHN0ciBlbHNlIGNvbnRlbnRzKQogCiAgICAg
ZGVmIHNoYTEoc2VsZiwgcGF0aCk6CiAgICAgICAgIGNvbnRlbnRzID0gc2VsZi5yZWFkX2JpbmFy
eV9maWxlKHBhdGgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJp
dmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQppbmRleCA1MzYz
OTVlMWQ0YTI4NzQ3NDQ3MDNlNzI4NTdlNjAxMjRlZmE5NGI4Li5mOTUwMTRkOWZhMmVmMDJhMjIy
ZmU0MjUwMjliOGE4MTQzNjJjZWQ4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvZHJpdmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIu
cHkKQEAgLTUxMyw2ICs1MTMsMTAgQEAgY2xhc3MgSU9TU2ltdWxhdG9yRHJpdmVyKERyaXZlcik6
CiAgICAgICAgIF0KICAgICAgICAgcmV0dXJuIFtyZWxheV90b29sXSArIHJlbGF5X2FyZ3MgKyBb
Jy0tJ10gKyBkdW1wX3Rvb2xfYXJncwogCisgICAgZGVmIF9zZXR1cF9lbnZpcm9uX2Zvcl9kcml2
ZXIoc2VsZiwgZW52aXJvbm1lbnQpOgorICAgICAgICBlbnZpcm9ubWVudFsnREVWRUxPUEVSX0RJ
UiddID0gc2VsZi5fcG9ydC5kZXZlbG9wZXJfZGlyCisgICAgICAgIHJldHVybiBzdXBlcihJT1NT
aW11bGF0b3JEcml2ZXIsIHNlbGYpLl9zZXR1cF9lbnZpcm9uX2Zvcl9kcml2ZXIoZW52aXJvbm1l
bnQpCisKIAogY2xhc3MgQ29udGVudEJsb2NrKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNl
bGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ltYWdlX2RpZmYu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW1hZ2VfZGlmZi5weQppbmRleCAwY2Ix
NGMyYTNkYjE5YzcyOWMyZTQ2NWEyNTUwZjRkOWIwMzUxMmEzLi42MjdkOWNmMzNjZTNiZWVhYjhl
ZjI2NDVhOGU0NDAyZTIyYjZkNTliIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvaW1hZ2VfZGlmZi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW1h
Z2VfZGlmZi5weQpAQCAtMTE4LDcgKzExOCw2IEBAIGNsYXNzIEltYWdlRGlmZmVyKG9iamVjdCk6
CiBjbGFzcyBJT1NTaW11bGF0b3JJbWFnZURpZmZlcihJbWFnZURpZmZlcik6CiAgICAgZGVmIF9z
dGFydChzZWxmLCB0b2xlcmFuY2UpOgogICAgICAgICBjb21tYW5kID0gWyd4Y3J1bicsICctc2Rr
JywgJ2lwaG9uZXNpbXVsYXRvcicsICdzaW0nLCAnLS1lbnZpcm9ubWVudD1wcmVzZXJ2ZScsICct
LWFkb3B0LXBpZCcsIHNlbGYuX3BvcnQuX3BhdGhfdG9faW1hZ2VfZGlmZigpLCAnLS10b2xlcmFu
Y2UnLCBzdHIodG9sZXJhbmNlKV0KLSAgICAgICAgcHJpbnQgJyAnLmpvaW4oY29tbWFuZCkKICAg
ICAgICAgZW52aXJvbm1lbnQgPSBzZWxmLl9wb3J0LnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcign
SW1hZ2VEaWZmJykKICAgICAgICAgc2VsZi5fcHJvY2VzcyA9IHNlbGYuX3BvcnQuX3NlcnZlcl9w
cm9jZXNzX2NvbnN0cnVjdG9yKHNlbGYuX3BvcnQsICdJbWFnZURpZmYnLCBjb21tYW5kLCBlbnZp
cm9ubWVudCkKICAgICAgICAgc2VsZi5fcHJvY2Vzcy5zdGFydCgpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2lvcy5weQppbmRleCBhMzM4YWQwOGYzODlhMjllYTMxZDFkZGE1YmYwYjEyY2ExYmVhNmMx
Li5mNjAxMmQ5N2E2YmRhODc2MmUxNzM3YmE4OTQ5ZTI4YTA2ODZlNjViIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9pb3MucHkKQEAgLTEwMSwxMCArMTAxLDcgQEAgY2xhc3MgSU9TU2ltdWxhdG9y
UG9ydChQb3J0KToKIAogICAgIGRlZiBjaGVja19idWlsZChzZWxmLCBuZWVkc19odHRwKToKICAg
ICAgICAgbmVlZHNfZHJpdmVyID0gc3VwZXIoSU9TU2ltdWxhdG9yUG9ydCwgc2VsZikuY2hlY2tf
YnVpbGQobmVlZHNfaHR0cCkKLSAgICAgICAgcmV0dXJuIG5lZWRzX2RyaXZlciBhbmQgc2VsZi5f
Y2hlY2tfYnVpbGRfcmVsYXkoKSBhbmQgc2VsZi5fY2hlY2tfYnVpbGRfaW1hZ2VfZGlmZigpCi0K
LSAgICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
X2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9tYWNfYnVpbGRfZGlyZWN0b3J5LCAnSW1hZ2VEaWZmJykK
KyAgICAgICAgcmV0dXJuIG5lZWRzX2RyaXZlciBhbmQgc2VsZi5fY2hlY2tfYnVpbGRfcmVsYXko
KQogCiAgICAgZGVmIF9idWlsZF9yZWxheShzZWxmKToKICAgICAgICAgZW52aXJvbm1lbnQgPSBz
ZWxmLmhvc3QuY29weV9jdXJyZW50X2Vudmlyb25tZW50KCkKQEAgLTExOCwzNyArMTE1LDEwIEBA
IGNsYXNzIElPU1NpbXVsYXRvclBvcnQoUG9ydCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
ICAgICAgICAgcmV0dXJuIFRydWUKIAotICAgIGRlZiBfY2hlY2tfaW1hZ2VfZGlmZihzZWxmKToK
LSAgICAgICAgaW1hZ2VfZGlmZl9wYXRoID0gc2VsZi5fcGF0aF90b19pbWFnZV9kaWZmKCkKLSAg
ICAgICAgaWYgbm90IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKGltYWdlX2RpZmZfcGF0aCk6Ci0g
ICAgICAgICAgICBfbG9nLmVycm9yKCIlcyB3YXMgbm90IGZvdW5kIGF0ICVzIiAlICgnSW1hZ2VE
aWZmJywgaW1hZ2VfZGlmZl9wYXRoKSkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAg
ICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIF9jaGVja19idWlsZF9pbWFnZV9kaWZmKHNlbGYpOgot
ICAgICAgICBpZiBub3Qgc2VsZi5fcm9vdF93YXNfc2V0IGFuZCBzZWxmLmdldF9vcHRpb24oJ2J1
aWxkJykgYW5kIG5vdCBzZWxmLl9idWlsZF9kcml2ZXIoKToKLSAgICAgICAgICAgIHJldHVybiBG
YWxzZQotICAgICAgICBpZiBub3Qgc2VsZi5fY2hlY2tfaW1hZ2VfZGlmZigpOgotICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgX2J1aWxkX2lt
YWdlX2RpZmYoc2VsZik6Ci0gICAgICAgIGVudmlyb25tZW50ID0gc2VsZi5ob3N0LmNvcHlfY3Vy
cmVudF9lbnZpcm9ubWVudCgpCi0gICAgICAgIGVudmlyb25tZW50LmRpc2FibGVfZ2NjX3NtYXJ0
cXVvdGVzKCkKLSAgICAgICAgZW52ID0gZW52aXJvbm1lbnQudG9fZGljdGlvbmFyeSgpCi0KLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcnVuX3NjcmlwdCgiYnVpbGQtaW1hZ2VkaWZm
IiwgZW52PWVudikKLSAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgotICAgICAgICAgICAg
X2xvZy5lcnJvcihlLm1lc3NhZ2Vfd2l0aF9vdXRwdXQob3V0cHV0X2xpbWl0PU5vbmUpKQotICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBUcnVlCi0KICAgICBkZWYgX2J1
aWxkX2RyaXZlcihzZWxmKToKICAgICAgICAgYnVpbHRfdG9vbCA9IHN1cGVyKElPU1NpbXVsYXRv
clBvcnQsIHNlbGYpLl9idWlsZF9kcml2ZXIoKQogICAgICAgICBidWlsdF9yZWxheSA9IHNlbGYu
X2J1aWxkX3JlbGF5KCkKLSAgICAgICAgYnVpbHRfaW1hZ2VfZGlmZiA9IHNlbGYuX2J1aWxkX2lt
YWdlX2RpZmYoKQotICAgICAgICByZXR1cm4gYnVpbHRfdG9vbCBhbmQgYnVpbHRfcmVsYXkgYW5k
IGJ1aWx0X2ltYWdlX2RpZmYKKyAgICAgICAgcmV0dXJuIGJ1aWx0X3Rvb2wgYW5kIGJ1aWx0X3Jl
bGF5CiAKICAgICBkZWYgX2J1aWxkX2RyaXZlcl9mbGFncyhzZWxmKToKICAgICAgICAgYXJjaHMg
PSBbJ0FSQ0hTPWkzODYnXSBpZiBzZWxmLmFyY2hpdGVjdHVyZSgpID09ICd4ODYnIGVsc2UgW10K
QEAgLTE4NCw2ICsxNTQsMTAgQEAgY2xhc3MgSU9TU2ltdWxhdG9yUG9ydChQb3J0KToKIAogICAg
IGRlZiBzZXR1cF90ZXN0X3J1bihzZWxmKToKICAgICAgICAgc2VsZi5fZXhlY3V0aXZlLnJ1bl9j
b21tYW5kKFsnb3Nhc2NyaXB0JywgJy1lJywgJ3RlbGwgYXBwbGljYXRpb24gImlPUyBTaW11bGF0
b3IiIHRvIHF1aXQnXSkKKyAgICAgICAgdGltZS5zbGVlcCgyKQorICAgICAgICBzZWxmLl9leGVj
dXRpdmUucnVuX2NvbW1hbmQoWworICAgICAgICAgICAgJ29wZW4nLCAnLWEnLCBvcy5wYXRoLmpv
aW4oc2VsZi5kZXZlbG9wZXJfZGlyLCAnQXBwbGljYXRpb25zJywgJ2lPUyBTaW11bGF0b3IuYXBw
JyksCisgICAgICAgICAgICAnLS1hcmdzJywgJy1DdXJyZW50RGV2aWNlVURJRCcsIHNlbGYuc2lt
dWxhdG9yX3VkaWQoKV0pCiAKICAgICBkZWYgY2xlYW5fdXBfdGVzdF9ydW4oc2VsZik6CiAgICAg
ICAgIHN1cGVyKElPU1NpbXVsYXRvclBvcnQsIHNlbGYpLmNsZWFuX3VwX3Rlc3RfcnVuKCkKQEAg
LTI1Nyw3ICsyMzEsNyBAQCBjbGFzcyBJT1NTaW11bGF0b3JQb3J0KFBvcnQpOgogICAgICAgICBj
cmFzaF9wcmVmaXggPSAnQ1JBU0g6ICcKICAgICAgICAgc3RkZXJyX2xpbmVzID0gW10KICAgICAg
ICAgY3Jhc2hfbGluZXMgPSBbXQotICAgICAgICBmb3IgbGluZSBpbiBzdGRlcnIuc3BsaXRsaW5l
cygpOgorICAgICAgICBmb3IgbGluZSBpbiAoc3RkZXJyIG9yICcnKS5zcGxpdGxpbmVzKCk6CiAg
ICAgICAgICAgICBjcmFzaF9saW5lcy5hcHBlbmQobGluZSkgaWYgbGluZS5zdGFydHN3aXRoKGNy
YXNoX3ByZWZpeCkgZWxzZSBzdGRlcnJfbGluZXMuYXBwZW5kKGxpbmUpCiAKICAgICAgICAgZm9y
IGNyYXNoX2xpbmUgaW4gY3Jhc2hfbGluZXM6CkBAIC0zNzAsNSArMzQ0LDkgQEAgY2xhc3MgSU9T
U2ltdWxhdG9yUG9ydChQb3J0KToKICAgICAgICAgICAgIF9sb2cud2FybigieGNydW4gZmFpbGVk
OyBmYWxsaW5nIGJhY2sgdG8gJyVzJy4iICUgZmFsbGJhY2spCiAgICAgICAgICAgICByZXR1cm4g
ZmFsbGJhY2sKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkZXZlbG9wZXJfZGlyKHNlbGYpOgor
ICAgICAgICByZXR1cm4gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsneGNvZGUtc2VsZWN0
JywgJy0tcHJpbnQtcGF0aCddKS5yc3RyaXAoKQorCiAgICAgZGVmIGxvZ2dpbmdfcGF0dGVybnNf
dG9fc3RyaXAoc2VsZik6CiAgICAgICAgIHJldHVybiBbXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9ibG9jay9ib3JkZXItZml0LXdpdGgtcmlnaHQtYWxpZ25tZW50LWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2JvcmRlci1maXQtd2l0aC1yaWdodC1hbGlnbm1l
bnQtZXhwZWN0ZWQuaHRtbAppbmRleCA1NWRjOTdjNTcwN2NkNDMxMmU2YWYzNjU1ZGFiZGU4MmZj
NzkyMzBiLi42ZjRlYTk4NzAwYTFmMjlmN2EzY2JmY2Q0MDFjZDEzOGY5ODdlNjRhIDEwMDY0NApH
SVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNzU1CnpjbVo4ZiFFVzB5M19WOSo7UldiWHdje3A1dDJp
IS0tTTduYiNaYnQkVmhmUShMODYtJk1nTSkwP1JlUklGLVlxMQp6SndDR05QXiojQG8jMExRY15z
NHxOIUBYakQwSzJrUiVoOEAkQzYhXip+XnxKO2NLTH5pVnJOSVhIbEliKGhCQ3YKek9AZX14IVhX
eik0clJeTm9fdnV2NmM/bjhiZlFLSD1DREBpKjFyU0UpT0FqP0ImM3NYUWRAQXk0TXJyPCFoN0N8
CnpEQ2tPR0RYMzMtdmE7WjFZe3dFT1JNN24pQjRQJGEjI0BqeU4qWTBEWX48RGFMWj15QHYlQXBs
NDZkUFAkMVNVegp6OzNwZDZrUkdMVEMwb09rSTBqSj5UWk5pJTZ2NDkxViRZbmMwMS02WDxrN1pP
LTgmRENDQT4kTnZBak9ENHRtcWoKejhkUiorMTI8RmN1YTlIQHFyX2xKKEN0U3IkbEs5QHJka308
Z1liKWlId3Y5PkpCK3JHQkFyKVNxfD1IP1E5KDA9CnpSYk97cDdGVGNvPkFJdzIrYS13RFdGLTE7
aX03fFdIfHclUHc0UzlZMHd7bXFkK1lDTyZ9aj9sRkJjfk00KDJHRwp6ZWpOfHNUXmlmdDMtUmNG
MkZjQHRBSDY8Mlo/b05RbGpUfFZecHJudHdee3pVZCZ0OG1mZ3VwM3YqMi0lQzdOX3oKUFloe3J4
MHx2eldiVWdNeWEtI2R+CgpsaXRlcmFsIDE1MTIKemNtYWkhJjJIMEI1UVMlKEsxR1BjKG9HdShx
NkxaJmQpVGw7Ni1yXyFqVCtsa1ktbDNIc3tgTWU+I0kxOXB8VFIrCnpKOUZtbSUjOHAxZXJ0RERU
VyVZPnVgfDt4dnpldk10d09nKW0tJjV4Yzd8bGxGVC1ZTktkfjl1QmEjJV5vbjBmRgp6KzZCKnA/
ZCVRT1ZlX1A1RHhAMWM+PlpiMm0pWUZ6LUN4M34/QVlgcDVeITU9R0FvRkFaOWgwfEoqeCUySHkt
c0QKemstdkpESk5eXjBUWjc0TDtrWGpaY1F5aUJCT1Rkb1ElTzc1VzM9aUQ9JUdFc1M1NzYkcTkm
clVQXkY0X2g5O3hWCnozaSptdFdUOyNIOUIoRHIrYEh3I3k7YVZgOGhQUlRDPEMhMnpFeHc0YVU0
T05QPnVoSnc4cTs4NCtTYEorPlJVVAp6JjU1IUArd1M4UEokJjl8X3ZwMnpqQFd7SUFpdWZ1SWlt
dkVpSG8jQiRCWXQ/aW9FaUFHKCpkVnNUZnhzbSEwflQKenBleDw7V3pYfitCWHo0Q3BPZVhAT3xU
Mm9IaHxPYmMmcHNBeDtFbzMmK1M+OUJOZ3s2a1J8JHA5MTxqQHYkSipmCno3ZmgqbytxVWJRJDN5
OzA/X1pkZHo8MUA9Vko8WH1PT0tabU9GaCZDP3MtPXw2V0d0OHJoZXU3OG1DUGdKSHx0TQp6T0NA
UDx1YHBzUkMwZnw9P2pHTk9JRyhFRWV7d3hWJDgxa0VHNDdCSSE8O15+aXk9ZE9EYThKV2pQLXIw
eG1XYU0KeiUlZzZxUTxhXzVKMFcjYV9qMHI9LWVkYSQpMWsqN3hmZktVe208PEtJUEheVS0qXntU
WWQrcXl4bmdsXnBaU1U5CnpnTklLYmE9TFk4RlBZM0trMHh9JkA0e2E1T3phZ0o+MiNYZjMqTW5D
cEB2WT14V2pOe014MXFaaypodmtrZXpsZwpMT3YxNighPFlScHFlVDdjCgo=
</data>
<flag name="review"
          id="262613"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>