<?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>109494</bug_id>
          
          <creation_ts>2013-02-11 14:33:50 -0800</creation_ts>
          <short_desc>AudioDestination::create() needs extra device identification information for live/local input streams</short_desc>
          <delta_ts>2013-02-22 12:51:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>110192</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Rogers">crogers</reporter>
          <assigned_to name="Chris Rogers">crogers</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>hta</cc>
    
    <cc>jamesr</cc>
    
    <cc>pnormand</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>830139</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-02-11 14:33:50 -0800</bug_when>
    <thetext>AudioDestination::create() needs extra device identification information for live/local input streams</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830154</commentid>
    <comment_count>1</comment_count>
      <attachid>187682</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-02-11 14:46:23 -0800</bug_when>
    <thetext>Created attachment 187682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830160</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 14:49:09 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830404</commentid>
    <comment_count>3</comment_count>
      <attachid>187682</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-11 17:58:50 -0800</bug_when>
    <thetext>Comment on attachment 187682
Patch

Attachment 187682 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16485685</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830457</commentid>
    <comment_count>4</comment_count>
      <attachid>187682</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-02-11 19:00:44 -0800</bug_when>
    <thetext>Comment on attachment 187682
Patch

Attachment 187682 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16495506</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831051</commentid>
    <comment_count>5</comment_count>
      <attachid>187682</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-12 10:19:12 -0800</bug_when>
    <thetext>Comment on attachment 187682
Patch

Attachment 187682 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16531042</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831182</commentid>
    <comment_count>6</comment_count>
      <attachid>187915</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-02-12 13:12:07 -0800</bug_when>
    <thetext>Created attachment 187915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831219</commentid>
    <comment_count>7</comment_count>
      <attachid>187915</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-12 13:48:39 -0800</bug_when>
    <thetext>Comment on attachment 187915
Patch

I can&apos;t quite follow the flow of the ExtraData object in this patch.  Where is this object allocated, where is it used, and where is it destroyed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831265</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-02-12 14:31:25 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 187915 [details])
&gt; I can&apos;t quite follow the flow of the ExtraData object in this patch.  Where is this object allocated, where is it used, and where is it destroyed?

Basically what happens is that a MediaStream is created by the embedder as a result of a call to getUserMedia().  This assumes that the user has given permission to provide access to the microphone/audio-input, and/or camera when the user agent asks for access.

In the code-paths touched by this patch, this MediaStream can have one or more tracks, one of which is an audio track.  This audio track contains a MediaStreamSource which has the extra data (set by the embedder once the user gives authorization to the getUserMedia() call).  This &quot;extra data&quot; can contain information depending on which device the user allows access to.  In the case of audio, there may be more than one audio input device, and this &quot;extra data&quot; can contain specific information about which one.  This is just an opaque object, and each embedder/port can handle the details of how this is represented.

Some time after this MediaStream is made available to the client JS code, the JS code may create an AudioNode which represents a source for live/local audio input like this:

var sourceNode = audioContext.createMediaStreamSource(mediaStream);

It&apos;s at this time that the AudioContext must potentially re-configure its connection to the audio hardware to enable input, given the specific audio input device.  Up until this point, the audio hardware has only been configured to output audio and not handle input.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831450</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-12 17:16:15 -0800</bug_when>
    <thetext>I think Darin&apos;s more familiar with how the ExtraData pattern is used.  Would you mind giving this a once-over, Darin?  I can do a line-by-line review once the general concepts are settled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831704</commentid>
    <comment_count>10</comment_count>
      <attachid>187915</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-02-13 00:38:49 -0800</bug_when>
    <thetext>Comment on attachment 187915
Patch

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

This patch needs serious refactoring. The major issue here is that the ExtraData pattern is a) wrongly used and b) wrongly redesigned. There&apos;s memory leaks and illegal typecasts for example. Besides there are existing code that uses the current ExtraData of WebMediaStreamSource will will break so this code will introduce a major regression for WebRTC.

If you need to pass some data you need to find another way.

&gt; Source/WebCore/platform/chromium/support/WebMediaStreamSource.cpp:124
&gt; +    m_private-&gt;setExtraData(reinterpret_cast&lt;MediaStreamSource::ExtraData*&gt;(extraData));

Why on earth are you removing the typesafe construct here? The extraData pointer is of type WebMediaStreamSource::ExtraData not MediaStreamSource::ExtraData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832070</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-02-13 10:52:59 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 187915 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=187915&amp;action=review
&gt; 
&gt; This patch needs serious refactoring. The major issue here is that the ExtraData pattern is a) wrongly used and b) wrongly redesigned. There&apos;s memory leaks and illegal typecasts for example. Besides there are existing code that uses the current ExtraData of WebMediaStreamSource will will break so this code will introduce a major regression for WebRTC.
&gt; 
&gt; If you need to pass some data you need to find another way.
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/support/WebMediaStreamSource.cpp:124
&gt; &gt; +    m_private-&gt;setExtraData(reinterpret_cast&lt;MediaStreamSource::ExtraData*&gt;(extraData));
&gt; 
&gt; Why on earth are you removing the typesafe construct here? The extraData pointer is of type WebMediaStreamSource::ExtraData not MediaStreamSource::ExtraData.

Tommy, I&apos;m certainly open to suggestions.  But as it stands, the current model for ExtraData is not sufficient for passing an opaque object back and forth between the embedder/port and WebCore internals.  We need to have a &quot;token&quot; which can be passed back and forth, translated in both directions:

embedder-&gt;WebCore
WebCore-&gt;embedder

In the current model, as I understand the code, it&apos;s impossible to translate a MediaStreamSource::ExtraData back into a WebMediaStreamSource::ExtraData which is essential to properly integrate getUserMedia() with the Web Audio API.

This &quot;token&quot; as I call it doesn&apos;t even have to be a pointer type, and could simply be an integer typedef, which the embedder can lookup in a map (for example), in such a way that object lifetime isn&apos;t even an issue.

Thanks for any help you can offer to work out a good design here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832531</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-02-13 16:55:45 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 187915 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=187915&amp;action=review
&gt; 
&gt; This patch needs serious refactoring. The major issue here is that the ExtraData pattern is a) wrongly used and b) wrongly redesigned. There&apos;s memory leaks and illegal typecasts for example. Besides there are existing code that uses the current ExtraData of WebMediaStreamSource will will break so this code will introduce a major regression for WebRTC.

I could be wrong, but I don&apos;t think it will break any existing code.  I believe that WebMediaStreamSource::extraData() and setExtraData() will continue to work as before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835468</commentid>
    <comment_count>13</comment_count>
      <attachid>188884</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-02-18 07:27:57 -0800</bug_when>
    <thetext>Created attachment 188884
Patch for discussion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835470</commentid>
    <comment_count>14</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-02-18 07:28:44 -0800</bug_when>
    <thetext>I would be much, much happier if we could do something like in my patch-for-discussion instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835626</commentid>
    <comment_count>15</comment_count>
      <attachid>188884</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-02-18 10:59:44 -0800</bug_when>
    <thetext>Comment on attachment 188884
Patch for discussion

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

&gt; Source/WebCore/Modules/webaudio/AudioDestinationNode.h:57
&gt; +#if ENABLE(MEDIA_STREAM)

can now remove the #if

&gt; Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:79
&gt; +#if ENABLE(MEDIA_STREAM)

can now remove the #if

&gt; Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.h:53
&gt; +#if ENABLE(MEDIA_STREAM)

can now remove the #if

&gt; Source/WebCore/platform/audio/AudioDestination.h:49
&gt; +#if ENABLE(MEDIA_STREAM)

can now remove the #if

&gt; Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:59
&gt; +#if ENABLE(MEDIA_STREAM)

can now remove the #if

&gt; Source/WebCore/platform/audio/mac/AudioDestinationMac.cpp:61
&gt; +#if ENABLE(MEDIA_STREAM)

can now remove the #if</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835641</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-02-18 11:11:31 -0800</bug_when>
    <thetext>Yes, Tommy, I agree your patch looks much better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836077</commentid>
    <comment_count>17</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-02-19 00:25:27 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Yes, Tommy, I agree your patch looks much better.

Thanks and I know that it comes with a higher price to the implementor since a map or similar has to be implemented (DeviceID &lt;-&gt; platform specific data). I&apos;m very grateful for this.

Btw, neither mine or your patch can be committed as-is without breaking things due to the changed API in Platform.h; webkit-chromium-webkit-chromium patch chain is needed...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836912</commentid>
    <comment_count>18</comment_count>
      <attachid>189194</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-02-19 16:08:57 -0800</bug_when>
    <thetext>Created attachment 189194
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836922</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-02-19 16:12:47 -0800</bug_when>
    <thetext>Tommy, can you please take a look.  I&apos;ve iterated your last patch. 
Thanks!

p.s. I restored a line which was accidentally removed in your patch:
provider = destination()-&gt;localAudioInputProvider();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836988</commentid>
    <comment_count>20</comment_count>
      <attachid>189194</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-19 16:58:10 -0800</bug_when>
    <thetext>Comment on attachment 189194
Patch

Attachment 189194 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16635130</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836999</commentid>
    <comment_count>21</comment_count>
      <attachid>189210</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-02-19 17:13:00 -0800</bug_when>
    <thetext>Created attachment 189210
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837003</commentid>
    <comment_count>22</comment_count>
      <attachid>189210</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-19 17:18:50 -0800</bug_when>
    <thetext>Comment on attachment 189210
Patch

Attachment 189210 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16634212</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837013</commentid>
    <comment_count>23</comment_count>
      <attachid>189214</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-02-19 17:39:36 -0800</bug_when>
    <thetext>Created attachment 189214
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839370</commentid>
    <comment_count>24</comment_count>
      <attachid>189214</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-02-22 01:34:37 -0800</bug_when>
    <thetext>Comment on attachment 189214
Patch

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

LGTM with just one teensy nit. Sorry for not getting back earlier but I have been completely knocked out by the winter flu :/

&gt; Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:55
&gt; +    createDestination(&quot;&quot;);

String() is better I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839714</commentid>
    <comment_count>25</comment_count>
      <attachid>189214</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-22 10:35:45 -0800</bug_when>
    <thetext>Comment on attachment 189214
Patch

WebKit API looks good.  Tommy&apos;s right about String() being better than &quot;&quot;, although keep in mind String() generates a null string which isn&apos;t the same as an empty string.  emptyString() is the way to produce an empty, non-null string.  WebString preserves the empty/null distinction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839722</commentid>
    <comment_count>26</comment_count>
      <attachid>189214</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-22 10:39:24 -0800</bug_when>
    <thetext>Comment on attachment 189214
Patch

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

&gt; Source/Platform/chromium/public/WebMediaStreamSource.h:96
&gt; +    WEBKIT_EXPORT WebString deviceId() const;
&gt; +    WEBKIT_EXPORT void setDeviceId(const WebString&amp;);

On second thought, why are these WebStrings (aka UCS-2)?  It looks like on the chromium side these are always 1-byte/char strings.  If that&apos;s the case, WebCString would be a better fit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839832</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-02-22 12:51:10 -0800</bug_when>
    <thetext>Committed r143781: &lt;http://trac.webkit.org/changeset/143781&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187682</attachid>
            <date>2013-02-11 14:46:23 -0800</date>
            <delta_ts>2013-02-12 13:12:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109494-20130211144254.patch</filename>
            <type>text/plain</type>
            <size>22774</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAwZjk0MjIyMjJhMzA2
MzA5NzYyM2RmNGIxZmQ5NGMxNWZmMTNmOWRjLi41MGYwZTAwMTBkYTMwZjM0NzA0ZThmMjNlY2Qy
OGY1MTY2NDk3ZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wMi0xMSAg
Q2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAgIEF1ZGlvRGVzdGlu
YXRpb246OmNyZWF0ZSgpIG5lZWRzIGV4dHJhIGRldmljZSBpZGVudGlmaWNhdGlvbiBpbmZvcm1h
dGlvbiBmb3IgbGl2ZS9sb2NhbCBpbnB1dCBzdHJlYW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0OTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oOgor
ICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybTo6Y3JlYXRlQXVkaW9EZXZpY2UpOgorCiAyMDEzLTAy
LTA4ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIE1l
ZGlhU3RyZWFtIEFQSTogUmVtb3ZpbmcgdGhlIGRlcHJlY2F0ZWQgV2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yIGFuZCBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCBzaGltcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDg0
Mjk4Mzc4MGRlYTlmNmFhYmU3YmY4MzRkZmIxOTBjODc1ZjgwNmYuLjU2NTE5N2E5YmQ1MWUwMzAy
MTNjNDFhZTdhNWRiNzI1YzhhN2FjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAx
My0wMi0xMSAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAgIEF1
ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgpIG5lZWRzIGV4dHJhIGRldmljZSBpZGVudGlmaWNhdGlv
biBpbmZvcm1hdGlvbiBmb3IgbGl2ZS9sb2NhbCBpbnB1dCBzdHJlYW1zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0OTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVh
dGUoKSBzdXBwb3J0cyBsaXZlL2xvY2FsIGF1ZGlvIGlucHV0LiAgQnV0LCBzaW5jZSB0aGVyZSBt
YXkgYmUgbXVsdGlwbGUKKyAgICAgICAgYXVkaW8gaW5wdXQgZGV2aWNlcyBhdmFpbGFibGUsIGFu
IGlkZW50aWZpZXIgZm9yIHRoZSByZXF1ZXN0ZWQgaW5wdXQgZGV2aWNlIG5lZWRzIHRvIGJlCisg
ICAgICAgIHBhc3NlZCBpbi4gIFRoZSBlbWJlZGRlciBtYXkgdGhlbiB1c2UgdGhpcyBpbmZvcm1h
dGlvbiBzbyB0aGF0IHRoZSBwcm9wZXIgYXVkaW8gaGFyZHdhcmUgaXMKKyAgICAgICAgYWNjZXNz
ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAg
IChBdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlRGVzdGluYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjplbmFibGVJbnB1dCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAg
ICAgKERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9BdWRpb0Rlc3RpbmF0aW9uLmg6CisgICAgICAgIChBdWRpb0Rlc3RpbmF0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6QXVkaW9EZXN0aW5hdGlvbkNo
cm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0
aW9uQ2hyb21pdW0uaDoKKyAgICAgICAgKEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bSk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZTo6ZXh0cmFEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTWVkaWFTdHJlYW1Tb3VyY2U6OnNldEV4dHJhRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1Tb3VyY2U6Ok1lZGlhU3RyZWFtU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oOgorICAgICAgICAoRXh0cmFEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpFeHRyYURhdGE6On5FeHRyYURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OmV4dHJhRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6c2V0RXh0cmFEYXRhKToKKyAgICAgICAg
KE1lZGlhU3RyZWFtU291cmNlKToKKwogMjAxMy0wMi0wOCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBXZWFrUHRycyB0byBjb21tdW5pY2F0ZSBiZXR3ZWVu
IHRoZSBIVE1MRG9jdW1lbnRQYXJzZXIgYW5kIHRoZSBCYWNrZ3JvdW5kSFRNTFBhcnNlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCmluZGV4IDA5MzY2ZWU1MDlm
YWEzOWQyZDAwZDBlZDFhMmUzOGM5MjZiNzk1M2YuLjBmNDdkZDU4ZTE3ZTEwY2Q1MmQ5ZThjYTEy
OTA2Yjg0YWNjN2IxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRm
b3JtLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJXZWJHYW1lcGFkcy5oIgogI2luY2x1
ZGUgIldlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiV2ViTG9jYWxpemVkU3RyaW5n
LmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaCIKICNpbmNsdWRlICJXZWJTdHJp
bmcuaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKIApAQCAtMTE2LDcgKzExNyw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIENyZWF0ZXMgYSBkZXZpY2UgZm9yIGF1ZGlvIEkvTy4KICAgICAvLyBQYXNz
IGluIChudW1iZXJPZklucHV0Q2hhbm5lbHMgPiAwKSBpZiBsaXZlL2xvY2FsIGF1ZGlvIGlucHV0
IGlzIGRlc2lyZWQuCi0gICAgdmlydHVhbCBXZWJBdWRpb0RldmljZSogY3JlYXRlQXVkaW9EZXZp
Y2Uoc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5z
aWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91YmxlIHNhbXBsZVJhdGUsIFdlYkF1ZGlvRGV2aWNl
OjpSZW5kZXJDYWxsYmFjayopIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFdlYkF1ZGlvRGV2
aWNlKiBjcmVhdGVBdWRpb0RldmljZShzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBkb3VibGUgc2FtcGxl
UmF0ZSwgV2ViQXVkaW9EZXZpY2U6OlJlbmRlckNhbGxiYWNrKiwgV2ViS2l0OjpXZWJNZWRpYVN0
cmVhbVNvdXJjZTo6RXh0cmFEYXRhKikgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gRklYTUU6IHJl
bW92ZSBkZXByZWNhdGVkIEFQSSBvbmNlIGNocm9taXVtIHN3aXRjaGVzIG92ZXIgdG8gbmV3IG1l
dGhvZC4KICAgICB2aXJ0dWFsIFdlYkF1ZGlvRGV2aWNlKiBjcmVhdGVBdWRpb0RldmljZShzaXpl
X3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91YmxlIHNhbXBsZVJh
dGUsIFdlYkF1ZGlvRGV2aWNlOjpSZW5kZXJDYWxsYmFjayopIHsgcmV0dXJuIDA7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCA2
NDg4MjdmOGUwODExM2VkZjY2NDJiMGE4ZDY0NjMwZjI4ZDc1NDQzLi4xZTAwODMyZmNmYTE0OWVl
ZjBlNGM0NWYzYjJjMTk5NmU2MzZhY2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0zOTUsOSArMzk1LDE0IEBAIFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFT
dHJlYW1Tb3VyY2UoTWVkCiAKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBwcm92aWRlciA9IDA7
CiAKLSAgICBpZiAobWVkaWFTdHJlYW0tPmlzTG9jYWwoKSAmJiBtZWRpYVN0cmVhbS0+Z2V0QXVk
aW9UcmFja3MoKS5zaXplKCkpIHsKKyAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIGF1ZGlvVHJh
Y2tzID0gbWVkaWFTdHJlYW0tPmdldEF1ZGlvVHJhY2tzKCk7CisgICAgaWYgKG1lZGlhU3RyZWFt
LT5pc0xvY2FsKCkgJiYgYXVkaW9UcmFja3Muc2l6ZSgpKSB7CisgICAgICAgIC8vIEVuYWJsZSBp
bnB1dCBmb3IgdGhlIHNwZWNpZmljIGxvY2FsIGF1ZGlvIGRldmljZSBzdG9yZWQgYXMgZXh0cmEg
ZGF0YSBpbiB0aGUgTWVkaWFTdHJlYW1Tb3VyY2UuCisgICAgICAgIFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrPiBsb2NhbEF1ZGlvID0gYXVkaW9UcmFja3NbMF07CisgICAgICAgIE1lZGlhU3RyZWFt
U291cmNlKiBzb3VyY2UgPSBsb2NhbEF1ZGlvLT5jb21wb25lbnQoKS0+c291cmNlKCk7CisgICAg
ICAgIGRlc3RpbmF0aW9uKCktPmVuYWJsZUlucHV0KHNvdXJjZS0+ZXh0cmFEYXRhKCkpOworCiAg
ICAgICAgIHByb3ZpZGVyID0gZGVzdGluYXRpb24oKS0+bG9jYWxBdWRpb0lucHV0UHJvdmlkZXIo
KTsKLSAgICAgICAgZGVzdGluYXRpb24oKS0+ZW5hYmxlSW5wdXQoKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICAvLyBGSVhNRTogZ2V0IGEgcHJvdmlkZXIgZm9yIG5vbi1sb2NhbCBNZWRpYVN0cmVh
bXMgKGxpa2UgZnJvbSBhIHJlbW90ZSBwZWVyKS4KICAgICAgICAgcHJvdmlkZXIgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5oCmluZGV4IDY2NzYyOGFjOGVkMzU3ZDc1N2M0MDdmZjA0ZGVlOWRhM2ViZjdhMDEuLmE4
MDYyNjYwOTg3MDNkOWI1YzQ2MDc1ZmZhYjcyM2Q4ZDhlMDZkMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBdWRpb0lPQ2FsbGJhY2suaCIKICNpbmNsdWRlICJB
dWRpb05vZGUuaCIKICNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAi
TWVkaWFTdHJlYW1Tb3VyY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw3ICs1
NSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygp
IGNvbnN0IHsgcmV0dXJuIDI7IH0gLy8gRklYTUU6IHVwZGF0ZSB3aGVuIG11bHRpLWNoYW5uZWwg
KG1vcmUgdGhhbiBzdGVyZW8pIGlzIHN1cHBvcnRlZAogCi0gICAgdmlydHVhbCB2b2lkIGVuYWJs
ZUlucHV0KCkgPSAwOworICAgIC8vIEVuYWJsZSBsb2NhbC9saXZlIGlucHV0IGZvciB0aGUgc3Bl
Y2lmaWMgZGV2aWNlIHJlcHJlc2VudGVkIGJ5IEV4dHJhRGF0YS4KKyAgICB2aXJ0dWFsIHZvaWQg
ZW5hYmxlSW5wdXQoTWVkaWFTdHJlYW1Tb3VyY2U6OkV4dHJhRGF0YSopID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc3RhcnRSZW5kZXJpbmcoKSA9IDA7CiAKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVy
KiBsb2NhbEF1ZGlvSW5wdXRQcm92aWRlcigpIHsgcmV0dXJuICZtX2xvY2FsQXVkaW9JbnB1dFBy
b3ZpZGVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggMDAyYzI1NDE1NjE3
MTczNTZiNGI3NDVjOGY1ZTY2NmY2OTMxZTliMi4uYjBhMWFlZTE3YWVmZmU0Y2EwOWY3YWFjZTQx
MGE0ZDJkYjc2MDNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNTIsNyAr
NTIsNyBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6aW5pdGlhbGl6ZSgpCiAg
ICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY3JlYXRlRGVz
dGluYXRpb24oKTsKKyAgICBjcmVhdGVEZXN0aW5hdGlvbigwKTsKICAgICBBdWRpb05vZGU6Omlu
aXRpYWxpemUoKTsKIH0KIApAQCAtNjgsMTUgKzY4LDE1IEBAIHZvaWQgRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlOjp1bmluaXRpYWxpemUoKQogICAgIEF1ZGlvTm9kZTo6dW5pbml0aWFsaXpl
KCk7CiB9CiAKLXZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGVEZXN0aW5h
dGlvbigpCit2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlRGVzdGluYXRp
b24oTWVkaWFTdHJlYW1Tb3VyY2U6OkV4dHJhRGF0YSogc291cmNlRXh0cmFEYXRhKQogewogICAg
IGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSA9IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2Ft
cGxlUmF0ZSgpOwogICAgIExPRyhXZWJBdWRpbywgIj4+Pj4gaGFyZHdhcmVTYW1wbGVSYXRlID0g
JWZcbiIsIGhhcmR3YXJlU2FtcGxlUmF0ZSk7CiAgICAgCi0gICAgbV9kZXN0aW5hdGlvbiA9IEF1
ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgqdGhpcywgbV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIG51
bWJlck9mQ2hhbm5lbHMoKSwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKKyAgICBtX2Rlc3RpbmF0aW9u
ID0gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCp0aGlzLCBzb3VyY2VFeHRyYURhdGEsIG1fbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZkNoYW5uZWxzKCksIGhhcmR3YXJlU2FtcGxlUmF0
ZSk7CiB9CiAKLXZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjplbmFibGVJbnB1dCgp
Cit2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6ZW5hYmxlSW5wdXQoTWVkaWFTdHJl
YW1Tb3VyY2U6OkV4dHJhRGF0YSogc291cmNlRXh0cmFEYXRhKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7IAogICAgIGlmIChtX251bWJlck9mSW5wdXRDaGFubmVscyAhPSBFbmFibGVk
SW5wdXRDaGFubmVscykgewpAQCAtODQsNyArODQsNyBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6ZW5hYmxlSW5wdXQoKQogCiAgICAgICAgIGlmIChpc0luaXRpYWxpemVkKCkp
IHsKICAgICAgICAgICAgIG1fZGVzdGluYXRpb24tPnN0b3AoKTsKLSAgICAgICAgICAgIGNyZWF0
ZURlc3RpbmF0aW9uKCk7CisgICAgICAgICAgICBjcmVhdGVEZXN0aW5hdGlvbihzb3VyY2VFeHRy
YURhdGEpOwogICAgICAgICAgICAgbV9kZXN0aW5hdGlvbi0+c3RhcnQoKTsKICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDJiOTk5YWQ0YWExOGQxMGVhZDQ4
OTM0NjRiYmEyZjJjMWIzNzIzNGIuLjk5N2ViNTFlNWQ4NzI3MmQwMTg3YzNjZTg4N2Q0ZmI2ODAy
MGY5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtNDcsMTIgKzQ3LDEyIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5pbml0aWFsaXplKCkgT1ZFUlJJREU7CiAKICAgICAv
LyBBdWRpb0Rlc3RpbmF0aW9uTm9kZQotICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJbnB1dCgpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJbnB1dChNZWRpYVN0cmVhbVNvdXJjZTo6
RXh0cmFEYXRhKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVuZGVyaW5nKCkg
T1ZFUlJJREU7CiAgICAgCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZShBdWRpb0NvbnRleHQqKTsKLSAgICB2b2lkIGNyZWF0ZURlc3RpbmF0aW9uKCk7
CisgICAgdm9pZCBjcmVhdGVEZXN0aW5hdGlvbihNZWRpYVN0cmVhbVNvdXJjZTo6RXh0cmFEYXRh
Kik7CiAKICAgICBPd25QdHI8QXVkaW9EZXN0aW5hdGlvbj4gbV9kZXN0aW5hdGlvbjsKICAgICB1
bnNpZ25lZCBtX251bWJlck9mSW5wdXRDaGFubmVsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
CmluZGV4IGNmYzc2N2NiNWY2ZWJhYmViY2NmZWNmNTc5ZGZhMzZiNmMwZjAyNmQuLjEwYjM1NzE4
M2Q1YWYzNzBkMjU3MTMzNmY2ZmQxNDQzZDljOTQyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVuaW5pdGlh
bGl6ZSgpIE9WRVJSSURFOwogCiAgICAgLy8gQXVkaW9EZXN0aW5hdGlvbk5vZGUKLSAgICB2aXJ0
dWFsIHZvaWQgZW5hYmxlSW5wdXQoKSBPVkVSUklERSB7IH07CisgICAgdmlydHVhbCB2b2lkIGVu
YWJsZUlucHV0KE1lZGlhU3RyZWFtU291cmNlOjpFeHRyYURhdGEqKSBPVkVSUklERSB7IH07CiAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVuZGVyaW5nKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IGZsb2F0IHNhbXBsZVJhdGUoKSAgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJUYXJnZXQtPnNhbXBs
ZVJhdGUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9EZXN0aW5hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0
aW5hdGlvbi5oCmluZGV4IDUwMTU2MDA5MTM3NTNkNGRkMjI1ZDBhMTMzMWI3ZmY2ODU1NjBkZjAu
Ljg0MTQ3NDUwZTdjMjlkYmNhMjg2M2E5NmRmNWM5ZWI0ZWIzNTBjOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmgKQEAgLTI5LDYgKzI5
LDggQEAKICNpZm5kZWYgQXVkaW9EZXN0aW5hdGlvbl9oCiAjZGVmaW5lIEF1ZGlvRGVzdGluYXRp
b25faAogCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKwogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCkBAIC00Myw3ICs0NSw3IEBA
IGNsYXNzIEF1ZGlvSU9DYWxsYmFjazsKIGNsYXNzIEF1ZGlvRGVzdGluYXRpb24gewogcHVibGlj
OgogICAgIC8vIFBhc3MgaW4gKG51bWJlck9mSW5wdXRDaGFubmVscyA+IDApIGlmIGxpdmUvbG9j
YWwgYXVkaW8gaW5wdXQgaXMgZGVzaXJlZC4KLSAgICBzdGF0aWMgUGFzc093blB0cjxBdWRpb0Rl
c3RpbmF0aW9uPiBjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUoQXVk
aW9JT0NhbGxiYWNrJiwgTWVkaWFTdHJlYW1Tb3VyY2U6OkV4dHJhRGF0YSosIHVuc2lnbmVkIG51
bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSk7CiAKICAgICB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uKCkgeyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlv
RGVzdGluYXRpb25DaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
aHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uY3BwCmluZGV4IDdiOGM4YmY2MTM3ZmY3
MGVkOTczYmEyOTFkMzU0Yjc3OTI4Zjc3YWEuLjAzZmZhZmM3YTExNWZiN2RmMjZiMjdmMDBjZmNl
NzQ5YWIzNDU4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2No
cm9taXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcApAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkF1ZGlvRklGTy5oIgogI2luY2x1ZGUgIkF1ZGlvUHVs
bEZJRk8uaCIKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMv
V2ViTWVkaWFTdHJlYW1Tb3VyY2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSwx
MiArNDYsMTIgQEAgY29uc3QgdW5zaWduZWQgcmVuZGVyQnVmZmVyU2l6ZSA9IDEyODsKIGNvbnN0
IHNpemVfdCBmaWZvU2l6ZSA9IDgxOTI7CiAKIC8vIEZhY3RvcnkgbWV0aG9kOiBDaHJvbWl1bS1p
bXBsZW1lbnRhdGlvbgotUGFzc093blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0
aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgdW5zaWduZWQgbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1w
bGVSYXRlKQorUGFzc093blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpj
cmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgTWVkaWFTdHJlYW1Tb3VyY2U6OkV4dHJh
RGF0YSogc291cmNlRXh0cmFEYXRhLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVu
c2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0oY2FsbGJhY2ssIG51
bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkp
OworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKGNhbGxi
YWNrLCBzb3VyY2VFeHRyYURhdGEsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOwogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06
OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bnNp
Z25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUpCitBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OkF1ZGlvRGVz
dGluYXRpb25DaHJvbWl1bShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBNZWRpYVN0cmVhbVNv
dXJjZTo6RXh0cmFEYXRhKiBzb3VyY2VFeHRyYURhdGEsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRD
aGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0
ZSkKICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgLCBtX251bWJlck9mT3V0cHV0Q2hh
bm5lbHMobnVtYmVyT2ZPdXRwdXRDaGFubmVscykKICAgICAsIG1faW5wdXRCdXMobnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCByZW5kZXJCdWZmZXJTaXplKQpAQCAtNjYsNyArNjcsOSBAQCBBdWRpb0Rl
c3RpbmF0aW9uQ2hyb21pdW06OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bShBdWRpb0lPQ2FsbGJh
Y2smIGNhbGxiYWNrLCB1bgogICAgIGlmIChtX2NhbGxiYWNrQnVmZmVyU2l6ZSArIHJlbmRlckJ1
ZmZlclNpemUgPiBmaWZvU2l6ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9hdWRpb0Rldmlj
ZSA9IGFkb3B0UHRyKFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y3JlYXRlQXVkaW9EZXZp
Y2UobV9jYWxsYmFja0J1ZmZlclNpemUsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgdGhpcykpOworICAgIFdlYktpdDo6V2ViTWVkaWFT
dHJlYW1Tb3VyY2U6OkV4dHJhRGF0YSogd2ViU291cmNlRXh0cmFEYXRhID0gcmVpbnRlcnByZXRf
Y2FzdDxXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlOjpFeHRyYURhdGEqPihzb3VyY2VFeHRy
YURhdGEpOworCisgICAgbV9hdWRpb0RldmljZSA9IGFkb3B0UHRyKFdlYktpdDo6UGxhdGZvcm06
OmN1cnJlbnQoKS0+Y3JlYXRlQXVkaW9EZXZpY2UobV9jYWxsYmFja0J1ZmZlclNpemUsIG51bWJl
ck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgdGhp
cywgd2ViU291cmNlRXh0cmFEYXRhKSk7CiAgICAgQVNTRVJUKG1fYXVkaW9EZXZpY2UpOwogCiAg
ICAgLy8gQ3JlYXRlIGEgRklGTyB0byBoYW5kbGUgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZSBjYWxs
YmFjayBzaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jaHJv
bWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2Nocm9taXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oCmluZGV4IDE2MDFmODJk
YTBkN2M0ZDBmYjFlYTM0NGY3ZGM1ZDM1NDFlZGZjOGQuLmViZWZlZTU3Yzk4OGE2OWMzY2JjNjZh
NmM3ODA2NGM0YTkzNzkzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2Nocm9taXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oCkBA
IC00NSw3ICs0NSw3IEBAIGNsYXNzIEF1ZGlvUHVsbEZJRk87CiAKIGNsYXNzIEF1ZGlvRGVzdGlu
YXRpb25DaHJvbWl1bSA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMgV2ViS2l0OjpX
ZWJBdWRpb0RldmljZTo6UmVuZGVyQ2FsbGJhY2ssIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVy
IHsKIHB1YmxpYzoKLSAgICBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0oQXVkaW9JT0NhbGxiYWNr
JiwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1
dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21p
dW0oQXVkaW9JT0NhbGxiYWNrJiwgTWVkaWFTdHJlYW1Tb3VyY2U6OkV4dHJhRGF0YSogc291cmNl
RXh0cmFEYXRhLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlv
RGVzdGluYXRpb25DaHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0
aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5kZXggZTE1ODg2YTNhYjVlZWM4
ZTY0MmNkYzNmNzQ2MzE5NjkzNWNjODdiYS4uOWQ0YzZmMmZmZTcyODA4NWY0MTUwN2QxYzUyYWM2
Y2YwY2JkNjk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRl
ICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3Ry
ZWFtZXIuaCIKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1
dGlscy5oPgpAQCAtNDMsMTUgKzQ0LDE1IEBAIGdib29sZWFuIG1lc3NhZ2VDYWxsYmFjayhHc3RC
dXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyCiAgICAg
cmV0dXJuIGRlc3RpbmF0aW9uLT5oYW5kbGVNZXNzYWdlKG1lc3NhZ2UpOwogfQogCi1QYXNzT3du
UHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2Fs
bGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVk
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCitQYXNzT3duUHRyPEF1
ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2sm
IGNhbGxiYWNrLCBNZWRpYVN0cmVhbVNvdXJjZTo6RXh0cmFEYXRhKiBzb3VyY2VFeHRyYURhdGEs
IHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQg
Zm9yIGxvY2FsL2xpdmUgYXVkaW8gaW5wdXQuCiAgICAgaWYgKG51bWJlck9mSW5wdXRDaGFubmVs
cykKLSAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwg
JWYpIC0gdW5oYW5kbGVkIGlucHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKKyAgICAgICAgTE9HKE1lZGlhLCAi
QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCVwICV1LCAldSwgJWYpIC0gdW5oYW5kbGVkIGlucHV0
IGNoYW5uZWxzIiwgc291cmNlRXh0cmFEYXRhLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogCiAgICAgLy8gRklYTUU6IEFkZCBzdXBw
b3J0IGZvciBtdWx0aS1jaGFubmVsICg+IHN0ZXJlbykgb3V0cHV0LgogICAgIGlmIChudW1iZXJP
Zk91dHB1dENoYW5uZWxzICE9IDIpCi0gICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRp
b246OmNyZWF0ZSgldSwgJXUsICVmKSAtIHVuaGFuZGxlZCBvdXRwdXQgY2hhbm5lbHMiLCBudW1i
ZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwor
ICAgICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoJXAgJXUsICV1LCAl
ZikgLSB1bmhhbmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgc291cmNlRXh0cmFEYXRhLCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogCiAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKGNhbGxiYWNr
LCBzYW1wbGVSYXRlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKaW5kZXggY2QwYWE5ZGNkMjgxYjYw
MzU0YzE2NDMwZjkyZjI3YzQ2MjIzYjRhMi4uMTgwNjMwYTU1MDM4YTc4YmQzOTNjMzJiZjJlYTNm
OTZmYmRlYmFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIkF1ZGlvSU9DYWxsYmFjay5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgogI2luY2x1
ZGUgIlZlY3Rvck1hdGguaCIKICNpbmNsdWRlIDxDb3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5oPgog
CkBAIC00NSwxNSArNDYsMTUgQEAgY29uc3QgZmxvYXQga0xvd1RocmVzaG9sZCA9IC0xOwogY29u
c3QgZmxvYXQga0hpZ2hUaHJlc2hvbGQgPSAxOwogCiAvLyBGYWN0b3J5IG1ldGhvZDogTWFjLWlt
cGxlbWVudGF0aW9uCi1QYXNzT3duUHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRp
b246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBs
ZVJhdGUpCitQYXNzT3duUHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNy
ZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBNZWRpYVN0cmVhbVNvdXJjZTo6RXh0cmFE
YXRhKiBzb3VyY2VFeHRyYURhdGEsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5z
aWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICAv
LyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGxvY2FsL2xpdmUgYXVkaW8gaW5wdXQuCiAgICAgaWYg
KG51bWJlck9mSW5wdXRDaGFubmVscykKLSAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5h
dGlvbjo6Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5oYW5kbGVkIGlucHV0IGNoYW5uZWxzIiwgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsK
KyAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCVwLCAldSwgJXUs
ICVmKSAtIHVuaGFuZGxlZCBpbnB1dCBjaGFubmVscyIsIHNvdXJjZUV4dHJhRGF0YSwgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAog
ICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgbXVsdGktY2hhbm5lbCAoPiBzdGVyZW8pIG91
dHB1dC4KICAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyAhPSAyKQotICAgICAgICBMT0co
TWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoJXUsICV1LCAlZikgLSB1bmhhbmRsZWQg
b3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENo
YW5uZWxzLCBzYW1wbGVSYXRlKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlv
bjo6Y3JlYXRlKCVwLCAldSwgJXUsICVmKSAtIHVuaGFuZGxlZCBvdXRwdXQgY2hhbm5lbHMiLCBz
b3VyY2VFeHRyYURhdGEsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgc2FtcGxlUmF0ZSk7CiAKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEF1ZGlvRGVzdGlu
YXRpb25NYWMoY2FsbGJhY2ssIHNhbXBsZVJhdGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYVN0cmVh
bVNvdXJjZS5jcHAKaW5kZXggMTVhNzNiOTM0YTNiODFiNGYzYjNiNDFjYmFhMmZmMTJjYTljMjc3
ZC4uMDM2NDgxYTA4NjI4NGFjNWMyNzc5ZmVkMTYwNTYzNGVhNDc1YjNjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYVN0cmVhbVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKQEAgLTQ2LDIwICs0Niw2IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotbmFtZXNwYWNlIHsKLQotY2xhc3Mg
RXh0cmFEYXRhQ29udGFpbmVyIDogcHVibGljIE1lZGlhU3RyZWFtU291cmNlOjpFeHRyYURhdGEg
ewotcHVibGljOgotICAgIEV4dHJhRGF0YUNvbnRhaW5lcihXZWJNZWRpYVN0cmVhbVNvdXJjZTo6
RXh0cmFEYXRhKiBleHRyYURhdGEpIDogbV9leHRyYURhdGEoYWRvcHRQdHIoZXh0cmFEYXRhKSkg
eyB9Ci0KLSAgICBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6RXh0cmFEYXRhKiBleHRyYURhdGEoKSB7
IHJldHVybiBtX2V4dHJhRGF0YS5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIE93blB0cjxXZWJN
ZWRpYVN0cmVhbVNvdXJjZTo6RXh0cmFEYXRhPiBtX2V4dHJhRGF0YTsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlCi0KIFdlYk1lZGlhU3RyZWFtU291cmNlOjpXZWJNZWRpYVN0cmVhbVNvdXJjZShjb25z
dCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiYgbWVkaWFTdHJlYW1Tb3VyY2UpCiAgICAg
OiBtX3ByaXZhdGUobWVkaWFTdHJlYW1Tb3VyY2UpCiB7CkBAIC0xMjksMTYgKzExNSwxMyBAQCBX
ZWJNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZSBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6cmVh
ZHlTdGF0ZSgpIGNvbnN0CiBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6RXh0cmFEYXRhKiBXZWJNZWRp
YVN0cmVhbVNvdXJjZTo6ZXh0cmFEYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIW1fcHJpdmF0
ZS5pc051bGwoKSk7Ci0gICAgUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlOjpFeHRyYURhdGE+IGRh
dGEgPSBtX3ByaXZhdGUtPmV4dHJhRGF0YSgpOwotICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEV4dHJhRGF0YUNvbnRhaW5lcio+KGRhdGEu
Z2V0KCkpLT5leHRyYURhdGEoKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWJNZWRp
YVN0cmVhbVNvdXJjZTo6RXh0cmFEYXRhKj4obV9wcml2YXRlLT5leHRyYURhdGEoKSk7CiB9CiAK
IHZvaWQgV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OnNldEV4dHJhRGF0YShFeHRyYURhdGEqIGV4dHJh
RGF0YSkKIHsKICAgICBBU1NFUlQoIW1fcHJpdmF0ZS5pc051bGwoKSk7Ci0gICAgbV9wcml2YXRl
LT5zZXRFeHRyYURhdGEoYWRvcHRSZWYobmV3IEV4dHJhRGF0YUNvbnRhaW5lcihleHRyYURhdGEp
KSk7CisgICAgbV9wcml2YXRlLT5zZXRFeHRyYURhdGEocmVpbnRlcnByZXRfY2FzdDxNZWRpYVN0
cmVhbVNvdXJjZTo6RXh0cmFEYXRhKj4oZXh0cmFEYXRhKSk7CiB9CiAKIGJvb2wgV2ViTWVkaWFT
dHJlYW1Tb3VyY2U6OnJlcXVpcmVzQXVkaW9Db25zdW1lcigpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5j
cHAKaW5kZXggOTgwZWZjNmNmZmQ4MGExMWIxZDVjZjljMzQ4ZDkwYjhmMzlkZjY4YS4uM2I1MWJl
ZTJiNTRjZmQyYTVhMzc4ZTc4YTk2MWRmYmIzYzUzYmRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcApA
QCAtNDgsNiArNDgsNyBAQCBNZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFTdHJlYW1Tb3VyY2UoY29u
c3QgU3RyaW5nJiBpZCwgVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmCiAgICAgLCBtX25hbWUobmFt
ZSkKICAgICAsIG1fcmVhZHlTdGF0ZShyZWFkeVN0YXRlKQogICAgICwgbV9yZXF1aXJlc0NvbnN1
bWVyKHJlcXVpcmVzQ29uc3VtZXIpCisgICAgLCBtX2V4dHJhRGF0YSgwKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1T
b3VyY2UuaAppbmRleCA2NTI5Y2U2Y2I5OTU3YmUyNTc1OTk3ZDQyMjU2NGIzZTY1ZmQ4MjVmLi5l
YzU4NzM3NzUwNjUyMzYwNTRlYjIyY2Q5YWIzZjA0Njg2YTUxN2E0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgK
QEAgLTQ5LDkgKzQ5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUNo
YW5nZWRTdGF0ZSgpID0gMDsKICAgICB9OwogCi0gICAgY2xhc3MgRXh0cmFEYXRhIDogcHVibGlj
IFJlZkNvdW50ZWQ8RXh0cmFEYXRhPiB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5F
eHRyYURhdGEoKSB7IH0KKyAgICBjbGFzcyBFeHRyYURhdGEgeworICAgIHByaXZhdGU6CisgICAg
ICAgIEV4dHJhRGF0YSgpOworICAgICAgICB+RXh0cmFEYXRhKCkgeyB9CiAgICAgfTsKIAogICAg
IGVudW0gVHlwZSB7CkBAIC03Nyw4ICs3OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE9ic2Vy
dmVyKE9ic2VydmVyKik7CiAgICAgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciopOwogCi0g
ICAgUGFzc1JlZlB0cjxFeHRyYURhdGE+IGV4dHJhRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZXh0
cmFEYXRhOyB9Ci0gICAgdm9pZCBzZXRFeHRyYURhdGEoUGFzc1JlZlB0cjxFeHRyYURhdGE+IGV4
dHJhRGF0YSkgeyBtX2V4dHJhRGF0YSA9IGV4dHJhRGF0YTsgfQorICAgIEV4dHJhRGF0YSogZXh0
cmFEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9leHRyYURhdGE7IH0KKyAgICB2b2lkIHNldEV4dHJh
RGF0YShFeHRyYURhdGEqIGV4dHJhRGF0YSkgeyBtX2V4dHJhRGF0YSA9IGV4dHJhRGF0YTsgfQog
CiAgICAgdm9pZCBzZXRBdWRpb0Zvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQg
c2FtcGxlUmF0ZSk7CiAgICAgdm9pZCBjb25zdW1lQXVkaW8oQXVkaW9CdXMqLCBzaXplX3QgbnVt
YmVyT2ZGcmFtZXMpOwpAQCAtOTksNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8T2Jz
ZXJ2ZXIqPiBtX29ic2VydmVyczsKICAgICBNdXRleCBtX2F1ZGlvQ29uc3VtZXJzTG9jazsKICAg
ICBWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gPiBtX2F1ZGlvQ29uc3Vt
ZXJzOwotICAgIFJlZlB0cjxFeHRyYURhdGE+IG1fZXh0cmFEYXRhOworICAgIEV4dHJhRGF0YSog
bV9leHRyYURhdGE7CiB9OwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3Vy
Y2U+ID4gTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3I7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187915</attachid>
            <date>2013-02-12 13:12:07 -0800</date>
            <delta_ts>2013-02-19 16:08:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109494-20130212130836.patch</filename>
            <type>text/plain</type>
            <size>21149</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBkODVkYzNiNGNmZjgw
NGJhM2Y0MmQyMmIyNDIxMGM2MTQ2MDg4NWY4Li5kNmYzZDgwYjlhZTE5ZDNiNGE2ODJmZDRkOTY2
N2RiODEzNTUxYjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wMi0xMiAg
Q2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAgIEF1ZGlvRGVzdGlu
YXRpb246OmNyZWF0ZSgpIG5lZWRzIGV4dHJhIGRldmljZSBpZGVudGlmaWNhdGlvbiBpbmZvcm1h
dGlvbiBmb3IgbGl2ZS9sb2NhbCBpbnB1dCBzdHJlYW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0OTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oOgor
ICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybTo6Y3JlYXRlQXVkaW9EZXZpY2UpOgorCiAyMDEzLTAy
LTExICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBBZGQgV2ViVW5pdFRlc3RTdXBwb3J0OjpjcmVhdGVMYXllclRyZWVWaWV3Rm9yVGVz
dGluZyBmb3Igd2Via2l0X3VuaXRfdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2YjhhMjE0ZTIzYzA3Yzkz
ZWZiMzUyNmE3ZmEwMmMwMzRjZmU0ODcwLi4zOWU0MzdlZjdhNjQ0ZDRmMjA3OTUyY2Q2OTBiNTk1
NWVkMjk2ZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTMtMDItMTIgIENocmlz
IFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KKworICAgICAgICBBdWRpb0Rlc3RpbmF0aW9u
OjpjcmVhdGUoKSBuZWVkcyBleHRyYSBkZXZpY2UgaWRlbnRpZmljYXRpb24gaW5mb3JtYXRpb24g
Zm9yIGxpdmUvbG9jYWwgaW5wdXQgc3RyZWFtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCkgc3VwcG9ydHMg
bGl2ZS9sb2NhbCBhdWRpbyBpbnB1dC4gIEJ1dCwgc2luY2UgdGhlcmUgbWF5IGJlIG11bHRpcGxl
CisgICAgICAgIGF1ZGlvIGlucHV0IGRldmljZXMgYXZhaWxhYmxlLCBhbiBpZGVudGlmaWVyIGZv
ciB0aGUgcmVxdWVzdGVkIGlucHV0IGRldmljZSBuZWVkcyB0byBiZQorICAgICAgICBwYXNzZWQg
aW4uICBUaGUgZW1iZWRkZXIgbWF5IHRoZW4gdXNlIHRoaXMgaW5mb3JtYXRpb24gc28gdGhhdCB0
aGUgcHJvcGVyIGF1ZGlvIGhhcmR3YXJlIGlzCisgICAgICAgIGFjY2Vzc2VkLgorCisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAoQXVkaW9EZXN0aW5h
dGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjplbmFibGVJbnB1dCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKERlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKE9mZmxpbmVBdWRpb0Rlc3RpbmF0
aW9uTm9kZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oOgor
ICAgICAgICAoQXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY2hy
b21pdW0vQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6QXVkaW9EZXN0aW5hdGlvbkNocm9taXVt
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hy
b21pdW0uaDoKKyAgICAgICAgKEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bSk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFj
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1l
ZGlhU3RyZWFtU291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3Vy
Y2U6OmV4dHJhRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlOjpz
ZXRFeHRyYURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpNZWRpYVN0
cmVhbVNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1T
b3VyY2UuaDoKKyAgICAgICAgKEV4dHJhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbVNvdXJjZTo6RXh0cmFEYXRhOjp+RXh0cmFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtU291cmNlOjpleHRyYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1Tb3VyY2U6OnNldEV4dHJhRGF0YSk6CisgICAgICAgIChNZWRpYVN0cmVhbVNvdXJjZSk6CisK
IDIwMTMtMDItMTIgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAg
IENhY2hlIHRpbWVyIGhlYXAgcG9pbnRlciB0byB0aW1lcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvUGxhdGZvcm0uaAppbmRleCBhN2RlM2JjOGM3MzFjZDAwZDUwN2NhOTUwMjRl
OGVhM2RlMzkyMWIxLi40NDNkNDNmMmQxYmVkMGIxNzhlNWE5ZDQwMGUxMDMyYjdmYjRkYzFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgKKysr
IGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCkBAIC00MSw2ICs0
MSw3IEBACiAjaW5jbHVkZSAiV2ViR2FtZXBhZHMuaCIKICNpbmNsdWRlICJXZWJHcmFwaGljc0Nv
bnRleHQzRC5oIgogI2luY2x1ZGUgIldlYkxvY2FsaXplZFN0cmluZy5oIgorI2luY2x1ZGUgIldl
Yk1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAi
V2ViVmVjdG9yLmgiCiAKQEAgLTExNyw3ICsxMTgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDcmVh
dGVzIGEgZGV2aWNlIGZvciBhdWRpbyBJL08uCiAgICAgLy8gUGFzcyBpbiAobnVtYmVyT2ZJbnB1
dENoYW5uZWxzID4gMCkgaWYgbGl2ZS9sb2NhbCBhdWRpbyBpbnB1dCBpcyBkZXNpcmVkLgotICAg
IHZpcnR1YWwgV2ViQXVkaW9EZXZpY2UqIGNyZWF0ZUF1ZGlvRGV2aWNlKHNpemVfdCBidWZmZXJT
aXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIGRvdWJsZSBzYW1wbGVSYXRlLCBXZWJBdWRpb0RldmljZTo6UmVuZGVyQ2FsbGJhY2sq
KSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBXZWJBdWRpb0RldmljZSogY3JlYXRlQXVkaW9E
ZXZpY2Uoc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywg
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91YmxlIHNhbXBsZVJhdGUsIFdlYkF1ZGlvRGV2
aWNlOjpSZW5kZXJDYWxsYmFjayosIFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2U6OkV4dHJh
RGF0YSopIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIEZJWE1FOiByZW1vdmUgZGVwcmVjYXRlZCBB
UEkgb25jZSBjaHJvbWl1bSBzd2l0Y2hlcyBvdmVyIHRvIG5ldyBtZXRob2QuCiAgICAgdmlydHVh
bCBXZWJBdWRpb0RldmljZSogY3JlYXRlQXVkaW9EZXZpY2Uoc2l6ZV90IGJ1ZmZlclNpemUsIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBzYW1wbGVSYXRlLCBXZWJBdWRpb0Rldmlj
ZTo6UmVuZGVyQ2FsbGJhY2sqKSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggNjQ4ODI3ZjhlMDgxMTNlZGY2
NjQyYjBhOGQ2NDYzMGYyOGQ3NTQ0My4uMWUwMDgzMmZjZmExNDllZWYwZTRjNDVmM2IyYzE5OTZl
NjM2YWNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcApAQCAtMzk1LDkgKzM5NSwxNCBAQCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZAog
CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogcHJvdmlkZXIgPSAwOwogCi0gICAgaWYgKG1lZGlh
U3RyZWFtLT5pc0xvY2FsKCkgJiYgbWVkaWFTdHJlYW0tPmdldEF1ZGlvVHJhY2tzKCkuc2l6ZSgp
KSB7CisgICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciBhdWRpb1RyYWNrcyA9IG1lZGlhU3RyZWFt
LT5nZXRBdWRpb1RyYWNrcygpOworICAgIGlmIChtZWRpYVN0cmVhbS0+aXNMb2NhbCgpICYmIGF1
ZGlvVHJhY2tzLnNpemUoKSkgeworICAgICAgICAvLyBFbmFibGUgaW5wdXQgZm9yIHRoZSBzcGVj
aWZpYyBsb2NhbCBhdWRpbyBkZXZpY2Ugc3RvcmVkIGFzIGV4dHJhIGRhdGEgaW4gdGhlIE1lZGlh
U3RyZWFtU291cmNlLgorICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gbG9jYWxBdWRp
byA9IGF1ZGlvVHJhY2tzWzBdOworICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlID0g
bG9jYWxBdWRpby0+Y29tcG9uZW50KCktPnNvdXJjZSgpOworICAgICAgICBkZXN0aW5hdGlvbigp
LT5lbmFibGVJbnB1dChzb3VyY2UtPmV4dHJhRGF0YSgpKTsKKwogICAgICAgICBwcm92aWRlciA9
IGRlc3RpbmF0aW9uKCktPmxvY2FsQXVkaW9JbnB1dFByb3ZpZGVyKCk7Ci0gICAgICAgIGRlc3Rp
bmF0aW9uKCktPmVuYWJsZUlucHV0KCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6
IGdldCBhIHByb3ZpZGVyIGZvciBub24tbG9jYWwgTWVkaWFTdHJlYW1zIChsaWtlIGZyb20gYSBy
ZW1vdGUgcGVlcikuCiAgICAgICAgIHByb3ZpZGVyID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCA2Njc2
MjhhYzhlZDM1N2Q3NTdjNDA3ZmYwNGRlZTlkYTNlYmY3YTAxLi41Mjg5ZjAxNWM0ZjM3ZmI3OWNi
OWJhOTEzMDZlMTU0N2JhNmQxODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zMSw2ICszMSwxMCBAQAog
I2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgogI2luY2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIK
IAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2Uu
aCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQnVzOwpAQCAt
NTQsNyArNTgsMTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBudW1iZXJPZkNo
YW5uZWxzKCkgY29uc3QgeyByZXR1cm4gMjsgfSAvLyBGSVhNRTogdXBkYXRlIHdoZW4gbXVsdGkt
Y2hhbm5lbCAobW9yZSB0aGFuIHN0ZXJlbykgaXMgc3VwcG9ydGVkCiAKLSAgICB2aXJ0dWFsIHZv
aWQgZW5hYmxlSW5wdXQoKSA9IDA7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAvLyBF
bmFibGUgbG9jYWwvbGl2ZSBpbnB1dCBmb3IgdGhlIHNwZWNpZmljIGRldmljZSByZXByZXNlbnRl
ZCBieSBFeHRyYURhdGEuCisgICAgdmlydHVhbCB2b2lkIGVuYWJsZUlucHV0KE1lZGlhU3RyZWFt
U291cmNlOjpFeHRyYURhdGEqKSA9IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBzdGFy
dFJlbmRlcmluZygpID0gMDsKIAogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGxvY2FsQXVkaW9J
bnB1dFByb3ZpZGVyKCkgeyByZXR1cm4gJm1fbG9jYWxBdWRpb0lucHV0UHJvdmlkZXI7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCAwMDJjMjU0MTU2MTcxNzM1NmI0Yjc0NWM4
ZjVlNjY2ZjY5MzFlOWIyLi4wYjFhZmI3M2QyYjY2NjU5ZTAxZDYyMjU0YmU2NjExYTQxMWI0ZDNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC03NiwxOSArNzYsMjYgQEAgdm9p
ZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZURlc3RpbmF0aW9uKCkKICAgICBt
X2Rlc3RpbmF0aW9uID0gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCp0aGlzLCBtX251bWJlck9m
SW5wdXRDaGFubmVscywgbnVtYmVyT2ZDaGFubmVscygpLCBoYXJkd2FyZVNhbXBsZVJhdGUpOwog
fQogCi12b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6ZW5hYmxlSW5wdXQoKQorI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCit2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
ZW5hYmxlSW5wdXQoTWVkaWFTdHJlYW1Tb3VyY2U6OkV4dHJhRGF0YSogc291cmNlRXh0cmFEYXRh
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7IAogICAgIGlmIChtX251bWJlck9mSW5w
dXRDaGFubmVscyAhPSBFbmFibGVkSW5wdXRDaGFubmVscykgewogICAgICAgICBtX251bWJlck9m
SW5wdXRDaGFubmVscyA9IEVuYWJsZWRJbnB1dENoYW5uZWxzOwogCiAgICAgICAgIGlmIChpc0lu
aXRpYWxpemVkKCkpIHsKKyAgICAgICAgICAgIC8vIFJlLWNyZWF0ZSBkZXN0aW5hdGlvbi4KICAg
ICAgICAgICAgIG1fZGVzdGluYXRpb24tPnN0b3AoKTsKLSAgICAgICAgICAgIGNyZWF0ZURlc3Rp
bmF0aW9uKCk7CisKKyAgICAgICAgICAgIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSA9IEF1ZGlv
RGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpOworICAgICAgICAgICAgTE9HKFdlYkF1
ZGlvLCAiPj4+PiBoYXJkd2FyZVNhbXBsZVJhdGUgPSAlZlxuIiwgaGFyZHdhcmVTYW1wbGVSYXRl
KTsKKworICAgICAgICAgICAgbV9kZXN0aW5hdGlvbiA9IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0
ZSgqdGhpcywgc291cmNlRXh0cmFEYXRhLCBtX251bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVy
T2ZDaGFubmVscygpLCBoYXJkd2FyZVNhbXBsZVJhdGUpOwogICAgICAgICAgICAgbV9kZXN0aW5h
dGlvbi0+c3RhcnQoKTsKICAgICAgICAgfQogICAgIH0KIH0KKyNlbmRpZgogCiB2b2lkIERlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3RhcnRSZW5kZXJpbmcoKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmgKaW5kZXggMmI5OTlhZDRhYTE4ZDEwZWFkNDg5MzQ2NGJiYTJmMmMxYjM3MjM0
Yi4uYjkxNzhlOTJlNTVhZGEzNmUyMWRkMjFhMjk0ZGI0ZGM0ZDk5OTM2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5oCkBAIC00Nyw3ICs0Nyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgdW5pbml0aWFsaXplKCkgT1ZFUlJJREU7CiAKICAgICAvLyBBdWRpb0Rlc3RpbmF0aW9uTm9k
ZQotICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJbnB1dCgpIE9WRVJSSURFOworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisgICAgdmlydHVhbCB2b2lkIGVuYWJsZUlucHV0KE1lZGlhU3RyZWFtU291
cmNlOjpFeHRyYURhdGEqKSBPVkVSUklERTsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBzdGFy
dFJlbmRlcmluZygpIE9WRVJSSURFOwogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5oCmluZGV4IGNmYzc2N2NiNWY2ZWJhYmViY2NmZWNmNTc5ZGZhMzZiNmMwZjAyNmQuLjMy
ZWNkNWY0ZmMyNWEwZjg0NjMyODhmYTZlMWMwODZiMzBiYWY3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5h
dGlvbk5vZGUuaApAQCAtNTAsNyArNTAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVu
aW5pdGlhbGl6ZSgpIE9WRVJSSURFOwogCiAgICAgLy8gQXVkaW9EZXN0aW5hdGlvbk5vZGUKLSAg
ICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQoKSBPVkVSUklERSB7IH07CisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQoTWVkaWFTdHJlYW1Tb3Vy
Y2U6OkV4dHJhRGF0YSopIE9WRVJSSURFIHsgfTsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBz
dGFydFJlbmRlcmluZygpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBmbG9hdCBzYW1wbGVSYXRl
KCkgIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyVGFyZ2V0LT5zYW1wbGVSYXRlKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaAppbmRleCA1
MDE1NjAwOTEzNzUzZDRkZDIyNWQwYTEzMzFiN2ZmNjg1NTYwZGYwLi4yNWRlOTZiZmM5ZTA2MDQ0
Y2ExMDRkMzJhZTIxODAxMGEyMjMwMDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oCkBAIC0yOSw2ICsyOSwxMCBAQAogI2lmbmRlZiBB
dWRpb0Rlc3RpbmF0aW9uX2gKICNkZWZpbmUgQXVkaW9EZXN0aW5hdGlvbl9oCiAKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjZW5kaWYK
KwogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
CkBAIC00NSw2ICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgLy8gUGFzcyBpbiAobnVtYmVyT2ZJbnB1
dENoYW5uZWxzID4gMCkgaWYgbGl2ZS9sb2NhbCBhdWRpbyBpbnB1dCBpcyBkZXNpcmVkLgogICAg
IHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvRGVzdGluYXRpb24+IGNyZWF0ZShBdWRpb0lPQ2FsbGJh
Y2smLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOwogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyAgICAvLyBQb3J0LXNwZWNpZmljIGRldmljZSBpZGVudGlmaWNhdGlvbiBpbmZvcm1hdGlv
biBmb3IgbGl2ZS9sb2NhbCBpbnB1dCBzdHJlYW1zIGNhbiBiZSBwYXNzZWQgYXMgTWVkaWFTdHJl
YW1Tb3VyY2U6OkV4dHJhRGF0YS4KKyAgICBzdGF0aWMgUGFzc093blB0cjxBdWRpb0Rlc3RpbmF0
aW9uPiBjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiwgTWVkaWFTdHJlYW1Tb3VyY2U6OkV4dHJhRGF0
YSosIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgfkF1
ZGlvRGVzdGluYXRpb24oKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvRGVz
dGluYXRpb25DaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jaHJv
bWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uY3BwCmluZGV4IDdiOGM4YmY2MTM3ZmY3MGVk
OTczYmEyOTFkMzU0Yjc3OTI4Zjc3YWEuLjJiZTk5MmZkNmViNGQ4NTA5NzZhMThmNDA0OGUxYWM2
NTc0ZTRhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nocm9t
aXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIkF1ZGlvRklGTy5oIgogI2luY2x1ZGUgIkF1ZGlvUHVsbEZJ
Rk8uaCIKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
TWVkaWFTdHJlYW1Tb3VyY2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NywxMCAr
NDgsMTUgQEAgY29uc3Qgc2l6ZV90IGZpZm9TaXplID0gODE5MjsKIC8vIEZhY3RvcnkgbWV0aG9k
OiBDaHJvbWl1bS1pbXBsZW1lbnRhdGlvbgogUGFzc093blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBB
dWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgdW5zaWdu
ZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXVkaW9EZXN0
aW5hdGlvbkNocm9taXVtKGNhbGxiYWNrLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEF1
ZGlvRGVzdGluYXRpb25DaHJvbWl1bShjYWxsYmFjaywgMCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxz
LCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKSk7CiB9CiAKLUF1ZGlvRGVzdGlu
YXRpb25DaHJvbWl1bTo6QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKEF1ZGlvSU9DYWxsYmFjayYg
Y2FsbGJhY2ssIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKK1Bhc3NPd25QdHI8QXVkaW9EZXN0
aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJh
Y2ssIE1lZGlhU3RyZWFtU291cmNlOjpFeHRyYURhdGEqIHNvdXJjZUV4dHJhRGF0YSwgdW5zaWdu
ZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXVkaW9EZXN0
aW5hdGlvbkNocm9taXVtKGNhbGxiYWNrLCBzb3VyY2VFeHRyYURhdGEsIG51bWJlck9mSW5wdXRD
aGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOworfQorCitBdWRp
b0Rlc3RpbmF0aW9uQ2hyb21pdW06OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bShBdWRpb0lPQ2Fs
bGJhY2smIGNhbGxiYWNrLCBNZWRpYVN0cmVhbVNvdXJjZTo6RXh0cmFEYXRhKiBzb3VyY2VFeHRy
YURhdGEsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IG1fY2FsbGJhY2soY2FsbGJh
Y2spCiAgICAgLCBtX251bWJlck9mT3V0cHV0Q2hhbm5lbHMobnVtYmVyT2ZPdXRwdXRDaGFubmVs
cykKICAgICAsIG1faW5wdXRCdXMobnVtYmVyT2ZJbnB1dENoYW5uZWxzLCByZW5kZXJCdWZmZXJT
aXplKQpAQCAtNjYsNyArNzIsOSBAQCBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OkF1ZGlvRGVz
dGluYXRpb25DaHJvbWl1bShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bgogICAgIGlmICht
X2NhbGxiYWNrQnVmZmVyU2l6ZSArIHJlbmRlckJ1ZmZlclNpemUgPiBmaWZvU2l6ZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9hdWRpb0RldmljZSA9IGFkb3B0UHRyKFdlYktpdDo6UGxhdGZv
cm06OmN1cnJlbnQoKS0+Y3JlYXRlQXVkaW9EZXZpY2UobV9jYWxsYmFja0J1ZmZlclNpemUsIG51
bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwg
dGhpcykpOworICAgIFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2U6OkV4dHJhRGF0YSogd2Vi
U291cmNlRXh0cmFEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxXZWJLaXQ6OldlYk1lZGlhU3RyZWFt
U291cmNlOjpFeHRyYURhdGEqPihzb3VyY2VFeHRyYURhdGEpOworCisgICAgbV9hdWRpb0Rldmlj
ZSA9IGFkb3B0UHRyKFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y3JlYXRlQXVkaW9EZXZp
Y2UobV9jYWxsYmFja0J1ZmZlclNpemUsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgdGhpcywgd2ViU291cmNlRXh0cmFEYXRhKSk7CiAg
ICAgQVNTRVJUKG1fYXVkaW9EZXZpY2UpOwogCiAgICAgLy8gQ3JlYXRlIGEgRklGTyB0byBoYW5k
bGUgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZSBjYWxsYmFjayBzaXplCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21p
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvRGVzdGlu
YXRpb25DaHJvbWl1bS5oCmluZGV4IDE2MDFmODJkYTBkN2M0ZDBmYjFlYTM0NGY3ZGM1ZDM1NDFl
ZGZjOGQuLmViZWZlZTU3Yzk4OGE2OWMzY2JjNjZhNmM3ODA2NGM0YTkzNzkzOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvRGVzdGluYXRp
b25DaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVt
L0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIEF1ZGlv
UHVsbEZJRk87CiAKIGNsYXNzIEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bSA6IHB1YmxpYyBBdWRp
b0Rlc3RpbmF0aW9uLCBwdWJsaWMgV2ViS2l0OjpXZWJBdWRpb0RldmljZTo6UmVuZGVyQ2FsbGJh
Y2ssIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBBdWRpb0Rlc3Rp
bmF0aW9uQ2hyb21pdW0oQXVkaW9JT0NhbGxiYWNrJiwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRl
KTsKKyAgICBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0oQXVkaW9JT0NhbGxiYWNrJiwgTWVkaWFT
dHJlYW1Tb3VyY2U6OkV4dHJhRGF0YSogc291cmNlRXh0cmFEYXRhLCB1bnNpZ25lZCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNh
bXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bSgpOwogCiAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJl
YW1lci5jcHAKaW5kZXggZTE1ODg2YTNhYjVlZWM4ZTY0MmNkYzNmNzQ2MzE5NjkzNWNjODdiYS4u
YmIyOGVhY2YxYjhjMDFmYmYzMTliNmQ4NDAyMzQxYmEwMzcwMzFjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtMjgsNiArMjgsMTEgQEAKICNpbmNsdWRl
ICJHUmVmUHRyR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyVmVyc2lvbmluZy5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSAiV2ViS2l0V2ViQXVk
aW9Tb3VyY2VHU3RyZWFtZXIuaCIKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0
L3BidXRpbHMvcGJ1dGlscy5oPgpAQCAtNTYsNiArNjEsMTQgQEAgUGFzc093blB0cjxBdWRpb0Rl
c3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxs
YmFjaywKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIo
Y2FsbGJhY2ssIHNhbXBsZVJhdGUpKTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCitQ
YXNzT3duUHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRp
b0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBNZWRpYVN0cmVhbVNvdXJjZTo6RXh0cmFEYXRhKiBzb3Vy
Y2VFeHRyYURhdGEsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICAvLyBGSVhNRTog
bWFrZSB1c2Ugb2Ygc291cmNlRXh0cmFEYXRhIGFzIGFwcHJvcHJpYXRlLgorICAgIHJldHVybiBj
cmVhdGUoY2FsbGJhY2ssIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgc2FtcGxlUmF0ZSk7Cit9CisjZW5kaWYKKwogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6
aGFyZHdhcmVTYW1wbGVSYXRlKCkKIHsKICAgICByZXR1cm4gNDQxMDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5j
cHAKaW5kZXggY2QwYWE5ZGNkMjgxYjYwMzU0YzE2NDMwZjkyZjI3YzQ2MjIzYjRhMi4uNDllZGE1
MjE5YzA5NGQwMzljOTY2N2YzNDIyYjdhNDcyNzY0YTM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcApA
QCAtMzUsNiArMzUsMTEgQEAKICNpbmNsdWRlICJBdWRpb0lPQ2FsbGJhY2suaCIKICNpbmNsdWRl
ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjZW5kaWYKKwog
I2luY2x1ZGUgIlZlY3Rvck1hdGguaCIKICNpbmNsdWRlIDxDb3JlQXVkaW8vQXVkaW9IYXJkd2Fy
ZS5oPgogCkBAIC01OCw2ICs2MywxNCBAQCBQYXNzT3duUHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1
ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAogICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQXVkaW9EZXN0aW5hdGlvbk1hYyhjYWxsYmFjaywgc2FtcGxlUmF0
ZSkpOwogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK1Bhc3NPd25QdHI8QXVkaW9EZXN0
aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJh
Y2ssIE1lZGlhU3RyZWFtU291cmNlOjpFeHRyYURhdGEqIHNvdXJjZUV4dHJhRGF0YSwgdW5zaWdu
ZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlKQoreworICAgIC8vIEZJWE1FOiBtYWtlIHVzZSBvZiBzb3VyY2VF
eHRyYURhdGEgYXMgYXBwcm9wcmlhdGUuCisgICAgcmV0dXJuIGNyZWF0ZShjYWxsYmFjaywgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsK
K30KKyNlbmRpZgorCiBmbG9hdCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUo
KQogewogICAgIC8vIERldGVybWluZSB0aGUgZGVmYXVsdCBvdXRwdXQgZGV2aWNlJ3Mgc2FtcGxl
LXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYk1lZGlhU3RyZWFtU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCmluZGV4IDE1YTczYjkzNGEz
YjgxYjRmM2IzYjQxY2JhYTJmZjEyY2E5YzI3N2QuLjAzNjQ4MWEwODYyODRhYzVjMjc3OWZlZDE2
MDU2MzRlYTQ3NWIzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCkBAIC00
NiwyMCArNDYsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLW5hbWVzcGFjZSB7Ci0KLWNsYXNzIEV4dHJhRGF0YUNvbnRhaW5lciA6IHB1YmxpYyBN
ZWRpYVN0cmVhbVNvdXJjZTo6RXh0cmFEYXRhIHsKLXB1YmxpYzoKLSAgICBFeHRyYURhdGFDb250
YWluZXIoV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OkV4dHJhRGF0YSogZXh0cmFEYXRhKSA6IG1fZXh0
cmFEYXRhKGFkb3B0UHRyKGV4dHJhRGF0YSkpIHsgfQotCi0gICAgV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2U6OkV4dHJhRGF0YSogZXh0cmFEYXRhKCkgeyByZXR1cm4gbV9leHRyYURhdGEuZ2V0KCk7IH0K
LQotcHJpdmF0ZToKLSAgICBPd25QdHI8V2ViTWVkaWFTdHJlYW1Tb3VyY2U6OkV4dHJhRGF0YT4g
bV9leHRyYURhdGE7Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCiBXZWJNZWRpYVN0cmVhbVNvdXJj
ZTo6V2ViTWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJj
ZT4mIG1lZGlhU3RyZWFtU291cmNlKQogICAgIDogbV9wcml2YXRlKG1lZGlhU3RyZWFtU291cmNl
KQogewpAQCAtMTI5LDE2ICsxMTUsMTMgQEAgV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3Rh
dGUgV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OnJlYWR5U3RhdGUoKSBjb25zdAogV2ViTWVkaWFTdHJl
YW1Tb3VyY2U6OkV4dHJhRGF0YSogV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OmV4dHJhRGF0YSgpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOwotICAgIFJlZlB0cjxNZWRp
YVN0cmVhbVNvdXJjZTo6RXh0cmFEYXRhPiBkYXRhID0gbV9wcml2YXRlLT5leHRyYURhdGEoKTsK
LSAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFeHRyYURhdGFDb250YWluZXIqPihkYXRhLmdldCgpKS0+ZXh0cmFEYXRhKCk7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViTWVkaWFTdHJlYW1Tb3VyY2U6OkV4dHJhRGF0YSo+KG1f
cHJpdmF0ZS0+ZXh0cmFEYXRhKCkpOwogfQogCiB2b2lkIFdlYk1lZGlhU3RyZWFtU291cmNlOjpz
ZXRFeHRyYURhdGEoRXh0cmFEYXRhKiBleHRyYURhdGEpCiB7CiAgICAgQVNTRVJUKCFtX3ByaXZh
dGUuaXNOdWxsKCkpOwotICAgIG1fcHJpdmF0ZS0+c2V0RXh0cmFEYXRhKGFkb3B0UmVmKG5ldyBF
eHRyYURhdGFDb250YWluZXIoZXh0cmFEYXRhKSkpOworICAgIG1fcHJpdmF0ZS0+c2V0RXh0cmFE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8TWVkaWFTdHJlYW1Tb3VyY2U6OkV4dHJhRGF0YSo+KGV4dHJh
RGF0YSkpOwogfQogCiBib29sIFdlYk1lZGlhU3RyZWFtU291cmNlOjpyZXF1aXJlc0F1ZGlvQ29u
c3VtZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCmluZGV4IDk4MGVmYzZjZmZkODBhMTFiMWQ1
Y2Y5YzM0OGQ5MGI4ZjM5ZGY2OGEuLjNiNTFiZWUyYjU0Y2ZkMmE1YTM3OGU3OGE5NjFkZmJiM2M1
M2JkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAgTWVkaWFTdHJlYW1T
b3VyY2U6Ok1lZGlhU3RyZWFtU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwgY29u
c3QgU3RyaW5nJgogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3JlYWR5U3RhdGUocmVhZHlT
dGF0ZSkKICAgICAsIG1fcmVxdWlyZXNDb25zdW1lcihyZXF1aXJlc0NvbnN1bWVyKQorICAgICwg
bV9leHRyYURhdGEoMCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgKaW5kZXggNjUyOWNlNmNiOTk1N2Jl
MjU3NTk5N2Q0MjI1NjRiM2U2NWZkODI1Zi4uZWM1ODczNzc1MDY1MjM2MDU0ZWIyMmNkOWFiM2Yw
NDY4NmE1MTdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCkBAIC00OSw5ICs0OSwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VDaGFuZ2VkU3RhdGUoKSA9IDA7CiAgICAgfTsKIAot
ICAgIGNsYXNzIEV4dHJhRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEV4dHJhRGF0YT4gewotICAg
IHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+RXh0cmFEYXRhKCkgeyB9CisgICAgY2xhc3MgRXh0
cmFEYXRhIHsKKyAgICBwcml2YXRlOgorICAgICAgICBFeHRyYURhdGEoKTsKKyAgICAgICAgfkV4
dHJhRGF0YSgpIHsgfQogICAgIH07CiAKICAgICBlbnVtIFR5cGUgewpAQCAtNzcsOCArNzgsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhZGRPYnNlcnZlcihPYnNlcnZlciopOwogICAgIHZvaWQgcmVt
b3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKIAotICAgIFBhc3NSZWZQdHI8RXh0cmFEYXRhPiBleHRy
YURhdGEoKSBjb25zdCB7IHJldHVybiBtX2V4dHJhRGF0YTsgfQotICAgIHZvaWQgc2V0RXh0cmFE
YXRhKFBhc3NSZWZQdHI8RXh0cmFEYXRhPiBleHRyYURhdGEpIHsgbV9leHRyYURhdGEgPSBleHRy
YURhdGE7IH0KKyAgICBFeHRyYURhdGEqIGV4dHJhRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZXh0
cmFEYXRhOyB9CisgICAgdm9pZCBzZXRFeHRyYURhdGEoRXh0cmFEYXRhKiBleHRyYURhdGEpIHsg
bV9leHRyYURhdGEgPSBleHRyYURhdGE7IH0KIAogICAgIHZvaWQgc2V0QXVkaW9Gb3JtYXQoc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIHZvaWQgY29uc3Vt
ZUF1ZGlvKEF1ZGlvQnVzKiwgc2l6ZV90IG51bWJlck9mRnJhbWVzKTsKQEAgLTk5LDcgKzEwMCw3
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAgICAgTXV0
ZXggbV9hdWRpb0NvbnN1bWVyc0xvY2s7CiAgICAgVmVjdG9yPFJlZlB0cjxBdWRpb0Rlc3RpbmF0
aW9uQ29uc3VtZXI+ID4gbV9hdWRpb0NvbnN1bWVyczsKLSAgICBSZWZQdHI8RXh0cmFEYXRhPiBt
X2V4dHJhRGF0YTsKKyAgICBFeHRyYURhdGEqIG1fZXh0cmFEYXRhOwogfTsKIAogdHlwZWRlZiBW
ZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiA+IE1lZGlhU3RyZWFtU291cmNlVmVjdG9y
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188884</attachid>
            <date>2013-02-18 07:27:57 -0800</date>
            <delta_ts>2013-02-19 16:08:53 -0800</delta_ts>
            <desc>Patch for discussion</desc>
            <filename>bug-109494-20130218162419.patch</filename>
            <type>text/plain</type>
            <size>18081</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyMTQ2ZDIyZTg0NjA2
NjM3ZTYwMWQxODg1Yzc2MTI1NDg3MWNjOTUxLi4xMDY3MmY2OWUwOTFhOGViNmE4ZGU1N2QyMGU0
YjJmNTFkNTM3MDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMi0xOCAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBBdWRpb0Rl
c3RpbmF0aW9uOjpjcmVhdGUoKSBuZWVkcyBleHRyYSBkZXZpY2UgaWRlbnRpZmljYXRpb24gaW5m
b3JtYXRpb24gZm9yIGxpdmUvbG9jYWwgaW5wdXQgc3RyZWFtcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDk0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0u
aDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm06OmNyZWF0ZUF1ZGlvRGV2aWNlKToKKyAgICAg
ICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaDoKKyAgICAgICAgKFdl
Yk1lZGlhU3RyZWFtU291cmNlKToKKwogMjAxMy0wMi0xNCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjE0Mjg0MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMGIyNTg4NDE3Y2I4OWM4ODBjZWVkMjYyZmNmNjU4OTBk
N2UxN2U0Li5mZGZiNDYwYWNkNWU0ZDFiZjFiZGEzNTJiYWRlNmY3ZmY2ZjAzZjBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTMtMDItMTggIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9t
bXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCkgbmVl
ZHMgZXh0cmEgZGV2aWNlIGlkZW50aWZpY2F0aW9uIGluZm9ybWF0aW9uIGZvciBsaXZlL2xvY2Fs
IGlucHV0IHN0cmVhbXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwOTQ5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVh
dGVNZWRpYVN0cmVhbVNvdXJjZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rl
c3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAoQXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlOjplbmFibGVJbnB1dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaDoKKyAgICAgICAgKE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oOgorICAgICAgICAoQXVkaW9EZXN0
aW5hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5h
dGlvbkNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGlu
YXRpb25DaHJvbWl1bTo6QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uaDoKKyAgICAgICAg
KEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2U6OmRldmljZUlkKToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlOjpz
ZXREZXZpY2VJZCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1T
b3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpkZXZpY2VJZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6c2V0RGV2aWNlSWQpOgorICAg
ICAgICAoTWVkaWFTdHJlYW1Tb3VyY2UpOgorCiAyMDEzLTAyLTE4ICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTQzMTAwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9QbGF0Zm9ybS5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5o
CmluZGV4IGE3ZGUzYmM4YzczMWNkMDBkNTA3Y2E5NTAyNGU4ZWEzZGUzOTIxYjEuLjZmMmRkM2Zl
YWE3MjU2MzgwNjU0MmU0MzlkYjU2NzBkYmQ4OThlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1BsYXRmb3JtLmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBDcmVhdGVzIGEgZGV2aWNlIGZvciBhdWRpbyBJL08uCiAgICAgLy8gUGFzcyBpbiAobnVt
YmVyT2ZJbnB1dENoYW5uZWxzID4gMCkgaWYgbGl2ZS9sb2NhbCBhdWRpbyBpbnB1dCBpcyBkZXNp
cmVkLgotICAgIHZpcnR1YWwgV2ViQXVkaW9EZXZpY2UqIGNyZWF0ZUF1ZGlvRGV2aWNlKHNpemVf
dCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51
bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBzYW1wbGVSYXRlLCBXZWJBdWRpb0RldmljZTo6UmVuZGVy
Q2FsbGJhY2sqKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBXZWJBdWRpb0RldmljZSogY3Jl
YXRlQXVkaW9EZXZpY2Uoc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRD
aGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91YmxlIHNhbXBsZVJhdGUsIFdl
YkF1ZGlvRGV2aWNlOjpSZW5kZXJDYWxsYmFjayosIGNvbnN0IFdlYlN0cmluZyYgZGV2aWNlSWQp
IHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIEZJWE1FOiByZW1vdmUgZGVwcmVjYXRlZCBBUEkgb25j
ZSBjaHJvbWl1bSBzd2l0Y2hlcyBvdmVyIHRvIG5ldyBtZXRob2QuCiAgICAgdmlydHVhbCBXZWJB
dWRpb0RldmljZSogY3JlYXRlQXVkaW9EZXZpY2Uoc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVk
IG51bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBzYW1wbGVSYXRlLCBXZWJBdWRpb0RldmljZTo6UmVu
ZGVyQ2FsbGJhY2sqKSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmggYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmgKaW5kZXggY2ZmOWZjZTIwN2Vj
N2UwOTFhNzFlMWIyZWYyNjhlMzVhZTA3MWQ2Mi4uYjQyNzBmNTUzN2Y3ZDQ2NjcxYzVjZTZhODM0
NzNlZTZlMTgwYTNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaApAQCAtOTIsNiArOTIsOSBAQCBwdWJsaWM6CiAg
ICAgV0VCS0lUX0VYUE9SVCBFeHRyYURhdGEqIGV4dHJhRGF0YSgpIGNvbnN0OwogICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXRFeHRyYURhdGEoRXh0cmFEYXRhKik7CiAKKyAgICBXRUJLSVRfRVhQ
T1JUIFdlYlN0cmluZyBkZXZpY2VJZCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXREZXZpY2VJZChjb25zdCBXZWJTdHJpbmcmKTsKKwogICAgIC8vIE9ubHkgdXNlZCBpZiBpZiB0
aGlzIGlzIGEgV2ViQXVkaW8gc291cmNlLgogICAgIC8vIFRoZSBXZWJBdWRpb0Rlc3RpbmF0aW9u
Q29uc3VtZXIgaXMgbm90IG93bmVkLCBhbmQgaGFzIHRvIGJlIGRpc3Bvc2VkIG9mIHNlcGFyYXRl
bHkKICAgICAvLyBhZnRlciBjYWxsaW5nIHJlbW92ZUF1ZGlvQ29uc3VtZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggNjQ4ODI3
ZjhlMDgxMTNlZGY2NjQyYjBhOGQ2NDYzMGYyOGQ3NTQ0My4uNTQ4OGY1YzUwODk5NjQxMGFkMzg3
NTMwMDgyODQ4NjAzZjZkNWI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMzk1LDkgKzM5NSwxMiBAQCBQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3RyZWFt
U291cmNlKE1lZAogCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogcHJvdmlkZXIgPSAwOwogCi0g
ICAgaWYgKG1lZGlhU3RyZWFtLT5pc0xvY2FsKCkgJiYgbWVkaWFTdHJlYW0tPmdldEF1ZGlvVHJh
Y2tzKCkuc2l6ZSgpKSB7Ci0gICAgICAgIHByb3ZpZGVyID0gZGVzdGluYXRpb24oKS0+bG9jYWxB
dWRpb0lucHV0UHJvdmlkZXIoKTsKLSAgICAgICAgZGVzdGluYXRpb24oKS0+ZW5hYmxlSW5wdXQo
KTsKKyAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIGF1ZGlvVHJhY2tzID0gbWVkaWFTdHJlYW0t
PmdldEF1ZGlvVHJhY2tzKCk7CisgICAgaWYgKG1lZGlhU3RyZWFtLT5pc0xvY2FsKCkgJiYgYXVk
aW9UcmFja3Muc2l6ZSgpKSB7CisgICAgICAgIC8vIEVuYWJsZSBpbnB1dCBmb3IgdGhlIHNwZWNp
ZmljIGxvY2FsIGF1ZGlvIGRldmljZSBzcGVjaWZpZWQgaW4gdGhlIE1lZGlhU3RyZWFtU291cmNl
LgorICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gbG9jYWxBdWRpbyA9IGF1ZGlvVHJh
Y2tzWzBdOworICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlID0gbG9jYWxBdWRpby0+
Y29tcG9uZW50KCktPnNvdXJjZSgpOworICAgICAgICBkZXN0aW5hdGlvbigpLT5lbmFibGVJbnB1
dChzb3VyY2UtPmRldmljZUlkKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBn
ZXQgYSBwcm92aWRlciBmb3Igbm9uLWxvY2FsIE1lZGlhU3RyZWFtcyAobGlrZSBmcm9tIGEgcmVt
b3RlIHBlZXIpLgogICAgICAgICBwcm92aWRlciA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggNjY3NjI4
YWM4ZWQzNTdkNzU3YzQwN2ZmMDRkZWU5ZGEzZWJmN2EwMS4uODlhNzVmZmU1Yjg4MDhiNjNiZjg4
OThjZmU0MDI3Yzc2ZjUzNzY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtNTQsNyArNTQsMTEgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKCkgY29uc3QgeyBy
ZXR1cm4gMjsgfSAvLyBGSVhNRTogdXBkYXRlIHdoZW4gbXVsdGktY2hhbm5lbCAobW9yZSB0aGFu
IHN0ZXJlbykgaXMgc3VwcG9ydGVkCiAKLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQoKSA9
IDA7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAvLyBFbmFibGUgbG9jYWwvbGl2ZSBp
bnB1dCBmb3IgdGhlIHNwZWNpZmllZCBkZXZpY2UuCisgICAgdmlydHVhbCB2b2lkIGVuYWJsZUlu
cHV0KGNvbnN0IFN0cmluZyYgZGV2aWNlSWQpID0gMDsKKyNlbmRpZgorCiAgICAgdmlydHVhbCB2
b2lkIHN0YXJ0UmVuZGVyaW5nKCkgPSAwOwogCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogbG9j
YWxBdWRpb0lucHV0UHJvdmlkZXIoKSB7IHJldHVybiAmbV9sb2NhbEF1ZGlvSW5wdXRQcm92aWRl
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDAwMmMyNTQxNTYxNzE3MzU2
YjRiNzQ1YzhmNWU2NjZmNjkzMWU5YjIuLjAzMTM5MDM5YzFkYTJkNWRiNTBhOTg1ODcxYmZhYWEx
MGFhY2FkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTc2LDE5ICs3Niwy
NiBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlRGVzdGluYXRpb24o
KQogICAgIG1fZGVzdGluYXRpb24gPSBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoKnRoaXMsIG1f
bnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZkNoYW5uZWxzKCksIGhhcmR3YXJlU2FtcGxl
UmF0ZSk7CiB9CiAKLXZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjplbmFibGVJbnB1
dCgpCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlOjplbmFibGVJbnB1dChjb25zdCBTdHJpbmcmIGRldmljZUlkKQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7IAorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYg
KG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzICE9IEVuYWJsZWRJbnB1dENoYW5uZWxzKSB7CiAgICAg
ICAgIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gRW5hYmxlZElucHV0Q2hhbm5lbHM7CiAKICAg
ICAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkgeworICAgICAgICAgICAgLy8gUmUtY3JlYXRlIGRl
c3RpbmF0aW9uLgogICAgICAgICAgICAgbV9kZXN0aW5hdGlvbi0+c3RvcCgpOwotICAgICAgICAg
ICAgY3JlYXRlRGVzdGluYXRpb24oKTsKKworICAgICAgICAgICAgZmxvYXQgaGFyZHdhcmVTYW1w
bGVSYXRlID0gQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCk7CisgICAgICAg
ICAgICBMT0coV2ViQXVkaW8sICI+Pj4+IGhhcmR3YXJlU2FtcGxlUmF0ZSA9ICVmXG4iLCBoYXJk
d2FyZVNhbXBsZVJhdGUpOworCisgICAgICAgICAgICBtX2Rlc3RpbmF0aW9uID0gQXVkaW9EZXN0
aW5hdGlvbjo6Y3JlYXRlKCp0aGlzLCBkZXZpY2VJZCwgbV9udW1iZXJPZklucHV0Q2hhbm5lbHMs
IG51bWJlck9mQ2hhbm5lbHMoKSwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKICAgICAgICAgICAgIG1f
ZGVzdGluYXRpb24tPnN0YXJ0KCk7CiAgICAgICAgIH0KICAgICB9CiB9CisjZW5kaWYKIAogdm9p
ZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN0YXJ0UmVuZGVyaW5nKCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDJiOTk5YWQ0YWExOGQxMGVhZDQ4OTM0NjRiYmEyZjJj
MWIzNzIzNGIuLjVmOTlmZjgzNzAxMWY1ZDU0MjdmYjY4Yzg5YzE5MmQ3YzkxMmRjNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtNDcsNyArNDcsOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpIE9WRVJSSURFOwogCiAgICAgLy8gQXVkaW9EZXN0aW5h
dGlvbk5vZGUKLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQoKSBPVkVSUklERTsKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJbnB1dChjb25zdCBT
dHJpbmcmIGRldmljZUlkKSBPVkVSUklERTsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBzdGFy
dFJlbmRlcmluZygpIE9WRVJSSURFOwogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5oCmluZGV4IGNmYzc2N2NiNWY2ZWJhYmViY2NmZWNmNTc5ZGZhMzZiNmMwZjAyNmQuLmFk
ZTllMWZmZDNjNjlhMjE1Y2RhMGY1OWQ2NDllOGEyOTI3Y2QyYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5h
dGlvbk5vZGUuaApAQCAtNTAsNyArNTAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVu
aW5pdGlhbGl6ZSgpIE9WRVJSSURFOwogCiAgICAgLy8gQXVkaW9EZXN0aW5hdGlvbk5vZGUKLSAg
ICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQoKSBPVkVSUklERSB7IH07CisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJiBk
ZXZpY2VJZCkgT1ZFUlJJREUgeyB9CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRSZW5k
ZXJpbmcoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgZmxvYXQgc2FtcGxlUmF0ZSgpICBjb25z
dCB7IHJldHVybiBtX3JlbmRlclRhcmdldC0+c2FtcGxlUmF0ZSgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmgKaW5kZXggNTAxNTYwMDkx
Mzc1M2Q0ZGQyMjVkMGExMzMxYjdmZjY4NTU2MGRmMC4uY2Y0YTMxODU5NmMxOGRjNTMwOTI4NjFj
MDYyMGExNjRhYWY2ZjMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvRGVzdGluYXRpb24uaApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsNiArNDYsMTEgQEAg
cHVibGljOgogICAgIC8vIFBhc3MgaW4gKG51bWJlck9mSW5wdXRDaGFubmVscyA+IDApIGlmIGxp
dmUvbG9jYWwgYXVkaW8gaW5wdXQgaXMgZGVzaXJlZC4KICAgICBzdGF0aWMgUGFzc093blB0cjxB
dWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiwgdW5zaWduZWQgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBz
YW1wbGVSYXRlKTsKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgLy8gUG9ydC1zcGVj
aWZpYyBkZXZpY2UgaWRlbnRpZmljYXRpb24gaW5mb3JtYXRpb24gZm9yIGxpdmUvbG9jYWwgaW5w
dXQgc3RyZWFtcyBjYW4gYmUgcGFzc2VkIGluIHRoZSBkZXZpY2VJZC4KKyAgICBzdGF0aWMgUGFz
c093blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiwgY29uc3Qg
U3RyaW5nJiBkZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25l
ZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyNlbmRpZgorCiAg
ICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbigpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHN0
YXJ0KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY2hy
b21pdW0vQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHAKaW5kZXggN2I4
YzhiZjYxMzdmZjcwZWQ5NzNiYTI5MWQzNTRiNzc5MjhmNzdhYS4uMTEyMWQ4ZjYzNjAyYjk2Zjll
Yzg4MTMzMmZmYzRlZjkwZjk4MjgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21p
dW0uY3BwCkBAIC00NywxMCArNDcsMTUgQEAgY29uc3Qgc2l6ZV90IGZpZm9TaXplID0gODE5MjsK
IC8vIEZhY3RvcnkgbWV0aG9kOiBDaHJvbWl1bS1pbXBsZW1lbnRhdGlvbgogUGFzc093blB0cjxB
dWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNr
JiBjYWxsYmFjaywgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQogewotICAgIHJldHVybiBhZG9w
dFB0cihuZXcgQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKGNhbGxiYWNrLCBudW1iZXJPZklucHV0
Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpKTsKKyAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bShjYWxsYmFjaywgU3RyaW5n
KCksIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxl
UmF0ZSkpOwogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OkF1ZGlvRGVzdGluYXRpb25D
aHJvbWl1bShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZCBudW1iZXJPZklucHV0
Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJh
dGUpCitQYXNzT3duUHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0
ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBjb25zdCBTdHJpbmcmIGRldmljZUlkLCB1bnNp
Z25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBdWRpb0Rl
c3RpbmF0aW9uQ2hyb21pdW0oY2FsbGJhY2ssIGRldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5l
bHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpKTsKK30KKworQXVkaW9EZXN0
aW5hdGlvbkNocm9taXVtOjpBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0oQXVkaW9JT0NhbGxiYWNr
JiBjYWxsYmFjaywgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlKQogICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKICAgICAsIG1fbnVtYmVyT2ZPdXRwdXRD
aGFubmVscyhudW1iZXJPZk91dHB1dENoYW5uZWxzKQogICAgICwgbV9pbnB1dEJ1cyhudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIHJlbmRlckJ1ZmZlclNpemUpCkBAIC02Niw3ICs3MSw3IEBAIEF1ZGlv
RGVzdGluYXRpb25DaHJvbWl1bTo6QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIHVuCiAgICAgaWYgKG1fY2FsbGJhY2tCdWZmZXJTaXplICsgcmVuZGVy
QnVmZmVyU2l6ZSA+IGZpZm9TaXplKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2F1ZGlvRGV2
aWNlID0gYWRvcHRQdHIoV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jcmVhdGVBdWRpb0Rl
dmljZShtX2NhbGxiYWNrQnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCB0aGlzKSk7CisgICAgbV9hdWRpb0RldmljZSA9
IGFkb3B0UHRyKFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y3JlYXRlQXVkaW9EZXZpY2Uo
bV9jYWxsYmFja0J1ZmZlclNpemUsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgc2FtcGxlUmF0ZSwgdGhpcywgZGV2aWNlSWQpKTsKICAgICBBU1NFUlQobV9h
dWRpb0RldmljZSk7CiAKICAgICAvLyBDcmVhdGUgYSBGSUZPIHRvIGhhbmRsZSB0aGUgcG9zc2li
aWxpdHkgb2YgdGhlIGNhbGxiYWNrIHNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5hdGlvbkNocm9taXVt
LmgKaW5kZXggMTYwMWY4MmRhMGQ3YzRkMGZiMWVhMzQ0ZjdkYzVkMzU0MWVkZmM4ZC4uNTAwNTY3
ODRhMjg2MzNjNDU4Njc0NzliYjA2NTE5NDJlNTBlNTNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5h
dGlvbkNocm9taXVtLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgQXVkaW9QdWxsRklGTzsKIAog
Y2xhc3MgQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24s
IHB1YmxpYyBXZWJLaXQ6OldlYkF1ZGlvRGV2aWNlOjpSZW5kZXJDYWxsYmFjaywgcHVibGljIEF1
ZGlvU291cmNlUHJvdmlkZXIgewogcHVibGljOgotICAgIEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1
bShBdWRpb0lPQ2FsbGJhY2smLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2ln
bmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlv
RGVzdGluYXRpb25DaHJvbWl1bShBdWRpb0lPQ2FsbGJhY2smLCBjb25zdCBTdHJpbmcmIGRldmlj
ZUlkLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGlu
YXRpb25DaHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5kZXggZTE1ODg2YTNhYjVlZWM4ZTY0MmNk
YzNmNzQ2MzE5NjkzNWNjODdiYS4uODM4ZTI4ZGNkYjc1ZDRjNGNhOWQxYmE4ODAzYjRkYWFkMTUy
NDI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtNTYs
NiArNTYsMTQgQEAgUGFzc093blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9u
OjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoY2FsbGJhY2ssIHNhbXBsZVJhdGUpKTsKIH0K
IAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCitQYXNzT3duUHRyPEF1ZGlvRGVzdGluYXRpb24+
IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBjb25z
dCBTdHJpbmcmIGRldmljZUlkLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2ln
bmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgLy8g
RklYTUU6IG1ha2UgdXNlIG9mIGRldmljZUlkIGFzIGFwcHJvcHJpYXRlLgorICAgIHJldHVybiBj
cmVhdGUoY2FsbGJhY2ssIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgc2FtcGxlUmF0ZSk7Cit9CisjZW5kaWYKKwogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6
aGFyZHdhcmVTYW1wbGVSYXRlKCkKIHsKICAgICByZXR1cm4gNDQxMDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5j
cHAKaW5kZXggY2QwYWE5ZGNkMjgxYjYwMzU0YzE2NDMwZjkyZjI3YzQ2MjIzYjRhMi4uOTUwNWQ0
NzYzMzM3NmQzODM3ODY0MmM5YjYwMTRiODYwNDIxYmFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcApA
QCAtNTgsNiArNTgsMTQgQEAgUGFzc093blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3Rp
bmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IEF1ZGlvRGVzdGluYXRpb25NYWMoY2FsbGJhY2ssIHNhbXBsZVJhdGUpKTsKIH0K
IAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCitQYXNzT3duUHRyPEF1ZGlvRGVzdGluYXRpb24+
IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBjb25z
dCBTdHJpbmcmIGRldmljZUlkLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2ln
bmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgLy8g
RklYTUU6IG1ha2UgdXNlIG9mIGRldmljZUlkIGFzIGFwcHJvcHJpYXRlLgorICAgIHJldHVybiBj
cmVhdGUoY2FsbGJhY2ssIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgc2FtcGxlUmF0ZSk7Cit9CisjZW5kaWYKKwogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6
aGFyZHdhcmVTYW1wbGVSYXRlKCkKIHsKICAgICAvLyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgb3V0
cHV0IGRldmljZSdzIHNhbXBsZS1yYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYVN0cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtU291cmNlLmNw
cAppbmRleCAxNWE3M2I5MzRhM2I4MWI0ZjNiM2I0MWNiYWEyZmYxMmNhOWMyNzdkLi45OWVhODhk
ZDkzMWZkYjczZTlmNDlmYTMxNjFjYzM2N2FlYzIzOWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3Ry
ZWFtU291cmNlLmNwcApAQCAtMTQxLDYgKzE0MSwxOCBAQCB2b2lkIFdlYk1lZGlhU3RyZWFtU291
cmNlOjpzZXRFeHRyYURhdGEoRXh0cmFEYXRhKiBleHRyYURhdGEpCiAgICAgbV9wcml2YXRlLT5z
ZXRFeHRyYURhdGEoYWRvcHRSZWYobmV3IEV4dHJhRGF0YUNvbnRhaW5lcihleHRyYURhdGEpKSk7
CiB9CiAKK1dlYlN0cmluZyBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6ZGV2aWNlSWQoKSBjb25zdAor
eworICAgIEFTU0VSVCghbV9wcml2YXRlLmlzTnVsbCgpKTsKKyAgICByZXR1cm4gbV9wcml2YXRl
LT5kZXZpY2VJZCgpOworfQorCit2b2lkIFdlYk1lZGlhU3RyZWFtU291cmNlOjpzZXREZXZpY2VJ
ZChjb25zdCBXZWJTdHJpbmcmIGRldmljZUlkKQoreworICAgIEFTU0VSVCghbV9wcml2YXRlLmlz
TnVsbCgpKTsKKyAgICBtX3ByaXZhdGUtPnNldERldmljZUlkKGRldmljZUlkKTsKK30KKwogYm9v
bCBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6cmVxdWlyZXNBdWRpb0NvbnN1bWVyKCkgY29uc3QKIHsK
ICAgICBBU1NFUlQoIW1fcHJpdmF0ZS5pc051bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaAppbmRleCA2NTI5
Y2U2Y2I5OTU3YmUyNTc1OTk3ZDQyMjU2NGIzZTY1ZmQ4MjVmLi5jMDA5MmMyMDUxMGUwMDZhNDcy
NWEzYTg5Njg5OTRiM2Q0M2U4NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgKQEAgLTgwLDYgKzgwLDkgQEAg
cHVibGljOgogICAgIFBhc3NSZWZQdHI8RXh0cmFEYXRhPiBleHRyYURhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2V4dHJhRGF0YTsgfQogICAgIHZvaWQgc2V0RXh0cmFEYXRhKFBhc3NSZWZQdHI8RXh0
cmFEYXRhPiBleHRyYURhdGEpIHsgbV9leHRyYURhdGEgPSBleHRyYURhdGE7IH0KIAorICAgIGNv
bnN0IFN0cmluZyYgZGV2aWNlSWQoKSB7IHJldHVybiBtX2RldmljZUlkOyB9CisgICAgdm9pZCBz
ZXREZXZpY2VJZChjb25zdCBTdHJpbmcmIGRldmljZUlkKSB7IG1fZGV2aWNlSWQgPSBkZXZpY2VJ
ZDsgfQorCiAgICAgdm9pZCBzZXRBdWRpb0Zvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywg
ZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgdm9pZCBjb25zdW1lQXVkaW8oQXVkaW9CdXMqLCBzaXpl
X3QgbnVtYmVyT2ZGcmFtZXMpOwogCkBAIC05NSw2ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgVHlw
ZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0
ZTsKKyAgICBTdHJpbmcgbV9kZXZpY2VJZDsKICAgICBib29sIG1fcmVxdWlyZXNDb25zdW1lcjsK
ICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKICAgICBNdXRleCBtX2F1ZGlvQ29u
c3VtZXJzTG9jazsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189194</attachid>
            <date>2013-02-19 16:08:57 -0800</date>
            <delta_ts>2013-02-19 17:12:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109494-20130219160520.patch</filename>
            <type>text/plain</type>
            <size>17768</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBkODM0MmY2ZDEyY2M2
NmQyM2E3MDJjODI2OWQ2ZTI0MjM4MjIwNGI2Li5jZDkxM2YzODVhYTg1ZjhlYzIxODNiMGJiNzEw
ZGU2NjczYWYxZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wMi0xOSAg
Q2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAgIEF1ZGlvRGVzdGlu
YXRpb246OmNyZWF0ZSgpIG5lZWRzIGV4dHJhIGRldmljZSBpZGVudGlmaWNhdGlvbiBpbmZvcm1h
dGlvbiBmb3IgbGl2ZS9sb2NhbCBpbnB1dCBzdHJlYW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0OTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVh
bVNvdXJjZS5oOgorICAgICAgICAoV2ViTWVkaWFTdHJlYW1Tb3VyY2UpOgorCiAyMDEzLTAyLTE5
ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIFdlYkF1
ZGlvIEFQSTogQ2hhbmdlIHRoZSBQbGF0Zm9ybTo6Y3JlYXRlQXVkaW9EZXZpY2UgZnVuY3Rpb24g
dG8gdGFrZSBhIERldmljZUlkIHBhcmFtZXRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZkNGJlZWIyZjA5MTdh
OWZhYzViOGZjMjhhYzU5OGY1YjY0OTI2ZTkuLjMyZDM5MjllZjE5M2FhMTU4MzQ2NjJhZmY3NDVi
OWVjY2E4ZmFkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMy0wMi0xOSAgQ2hy
aXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAgIEF1ZGlvRGVzdGluYXRp
b246OmNyZWF0ZSgpIG5lZWRzIGV4dHJhIGRldmljZSBpZGVudGlmaWNhdGlvbiBpbmZvcm1hdGlv
biBmb3IgbGl2ZS9sb2NhbCBpbnB1dCBzdHJlYW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoKSBzdXBwb3J0
cyBsaXZlL2xvY2FsIGF1ZGlvIGlucHV0LiAgQnV0LCBzaW5jZSB0aGVyZSBtYXkgYmUgbXVsdGlw
bGUKKyAgICAgICAgYXVkaW8gaW5wdXQgZGV2aWNlcyBhdmFpbGFibGUsIGFuIGlkZW50aWZpZXIg
Zm9yIHRoZSByZXF1ZXN0ZWQgaW5wdXQgZGV2aWNlIG5lZWRzIHRvIGJlCisgICAgICAgIHBhc3Nl
ZCBpbi4gIFRoZSBlbWJlZGRlciBtYXkgdGhlbiB1c2UgdGhpcyBpbmZvcm1hdGlvbiBzbyB0aGF0
IHRoZSBwcm9wZXIgYXVkaW8gaGFyZHdhcmUgaXMKKyAgICAgICAgYWNjZXNzZWQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgIChBdWRpb0Rlc3Rp
bmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6Y3JlYXRlRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlOjplbmFibGVJbnB1dCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKERlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0Rl
c3RpbmF0aW9uLmg6CisgICAgICAgIChBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0u
aDoKKyAgICAgICAgKEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YVN0cmVhbVNvdXJjZTo6ZGV2aWNlSWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2U6OnNldERldmljZUlkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1Tb3VyY2U6OmRldmljZUlkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtU291cmNlOjpzZXREZXZpY2VJZCk6CisgICAgICAgIChNZWRpYVN0cmVhbVNvdXJjZSk6CisK
IDIwMTMtMDItMTkgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBD
b252ZXJ0IDMgc2V0dGluZ3MgdG8gdXNlIFNldHRpbmdzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmgKaW5kZXggY2Zm
OWZjZTIwN2VjN2UwOTFhNzFlMWIyZWYyNjhlMzVhZTA3MWQ2Mi4uYjQyNzBmNTUzN2Y3ZDQ2Njcx
YzVjZTZhODM0NzNlZTZlMTgwYTNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaApAQCAtOTIsNiArOTIsOSBAQCBw
dWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBFeHRyYURhdGEqIGV4dHJhRGF0YSgpIGNvbnN0Owog
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRFeHRyYURhdGEoRXh0cmFEYXRhKik7CiAKKyAgICBX
RUJLSVRfRVhQT1JUIFdlYlN0cmluZyBkZXZpY2VJZCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXREZXZpY2VJZChjb25zdCBXZWJTdHJpbmcmKTsKKwogICAgIC8vIE9ubHkgdXNl
ZCBpZiBpZiB0aGlzIGlzIGEgV2ViQXVkaW8gc291cmNlLgogICAgIC8vIFRoZSBXZWJBdWRpb0Rl
c3RpbmF0aW9uQ29uc3VtZXIgaXMgbm90IG93bmVkLCBhbmQgaGFzIHRvIGJlIGRpc3Bvc2VkIG9m
IHNlcGFyYXRlbHkKICAgICAvLyBhZnRlciBjYWxsaW5nIHJlbW92ZUF1ZGlvQ29uc3VtZXIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5k
ZXggNjQ4ODI3ZjhlMDgxMTNlZGY2NjQyYjBhOGQ2NDYzMGYyOGQ3NTQ0My4uNjQxMGMwOTQ4MjJl
ODAyMmY5MWJhYzUwMzM2ZWRjMDAxMjE4YWQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMzk1LDkgKzM5NSwxMyBAQCBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZU1l
ZGlhU3RyZWFtU291cmNlKE1lZAogCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogcHJvdmlkZXIg
PSAwOwogCi0gICAgaWYgKG1lZGlhU3RyZWFtLT5pc0xvY2FsKCkgJiYgbWVkaWFTdHJlYW0tPmdl
dEF1ZGlvVHJhY2tzKCkuc2l6ZSgpKSB7CisgICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciBhdWRp
b1RyYWNrcyA9IG1lZGlhU3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpOworICAgIGlmIChtZWRpYVN0
cmVhbS0+aXNMb2NhbCgpICYmIGF1ZGlvVHJhY2tzLnNpemUoKSkgeworICAgICAgICAvLyBFbmFi
bGUgaW5wdXQgZm9yIHRoZSBzcGVjaWZpYyBsb2NhbCBhdWRpbyBkZXZpY2Ugc3BlY2lmaWVkIGlu
IHRoZSBNZWRpYVN0cmVhbVNvdXJjZS4KKyAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+
IGxvY2FsQXVkaW8gPSBhdWRpb1RyYWNrc1swXTsKKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2Uq
IHNvdXJjZSA9IGxvY2FsQXVkaW8tPmNvbXBvbmVudCgpLT5zb3VyY2UoKTsKKyAgICAgICAgZGVz
dGluYXRpb24oKS0+ZW5hYmxlSW5wdXQoc291cmNlLT5kZXZpY2VJZCgpKTsKICAgICAgICAgcHJv
dmlkZXIgPSBkZXN0aW5hdGlvbigpLT5sb2NhbEF1ZGlvSW5wdXRQcm92aWRlcigpOwotICAgICAg
ICBkZXN0aW5hdGlvbigpLT5lbmFibGVJbnB1dCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8v
IEZJWE1FOiBnZXQgYSBwcm92aWRlciBmb3Igbm9uLWxvY2FsIE1lZGlhU3RyZWFtcyAobGlrZSBm
cm9tIGEgcmVtb3RlIHBlZXIpLgogICAgICAgICBwcm92aWRlciA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5k
ZXggNjY3NjI4YWM4ZWQzNTdkNzU3YzQwN2ZmMDRkZWU5ZGEzZWJmN2EwMS4uZjc5YzUxMjcxZWVl
OTliNTlhNGExMWNhZjI2NGE3ODBlYTI3NDk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtNTQsNyArNTQs
OSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMoKSBj
b25zdCB7IHJldHVybiAyOyB9IC8vIEZJWE1FOiB1cGRhdGUgd2hlbiBtdWx0aS1jaGFubmVsICht
b3JlIHRoYW4gc3RlcmVvKSBpcyBzdXBwb3J0ZWQKIAotICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJ
bnB1dCgpID0gMDsKKyAgICAvLyBFbmFibGUgbG9jYWwvbGl2ZSBpbnB1dCBmb3IgdGhlIHNwZWNp
ZmllZCBkZXZpY2UuCisgICAgdmlydHVhbCB2b2lkIGVuYWJsZUlucHV0KGNvbnN0IFN0cmluZyYg
aW5wdXREZXZpY2VJZCkgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVuZGVyaW5nKCkg
PSAwOwogCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogbG9jYWxBdWRpb0lucHV0UHJvdmlkZXIo
KSB7IHJldHVybiAmbV9sb2NhbEF1ZGlvSW5wdXRQcm92aWRlcjsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwCmluZGV4IDAwMmMyNTQxNTYxNzE3MzU2YjRiNzQ1YzhmNWU2NjZmNjkzMWU5
YjIuLmM1NDUyNjFjZThhZjNiYjQ0MTcyNTU4OTgxN2E2NzA4NjE0YzA2NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBEZWZhdWx0QXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OmluaXRpYWxpemUoKQogICAgIGlmIChpc0luaXRpYWxpemVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGNyZWF0ZURlc3RpbmF0aW9uKCk7CisgICAgY3JlYXRlRGVz
dGluYXRpb24oIiIpOwogICAgIEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSgpOwogfQogCkBAIC02OCwy
MyArNjgsMjQgQEAgdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnVuaW5pdGlhbGl6
ZSgpCiAgICAgQXVkaW9Ob2RlOjp1bmluaXRpYWxpemUoKTsKIH0KIAotdm9pZCBEZWZhdWx0QXVk
aW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZURlc3RpbmF0aW9uKCkKK3ZvaWQgRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpjcmVhdGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2
aWNlSWQpCiB7CiAgICAgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlID0gQXVkaW9EZXN0aW5hdGlv
bjo6aGFyZHdhcmVTYW1wbGVSYXRlKCk7CiAgICAgTE9HKFdlYkF1ZGlvLCAiPj4+PiBoYXJkd2Fy
ZVNhbXBsZVJhdGUgPSAlZlxuIiwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKICAgICAKLSAgICBtX2Rl
c3RpbmF0aW9uID0gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCp0aGlzLCBtX251bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZDaGFubmVscygpLCBoYXJkd2FyZVNhbXBsZVJhdGUpOworICAg
IG1fZGVzdGluYXRpb24gPSBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoKnRoaXMsIGlucHV0RGV2
aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZkNoYW5uZWxzKCksIGhhcmR3
YXJlU2FtcGxlUmF0ZSk7CiB9CiAKLXZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpl
bmFibGVJbnB1dCgpCit2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6ZW5hYmxlSW5w
dXQoY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKQogewotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7IAorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKG1fbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzICE9IEVuYWJsZWRJbnB1dENoYW5uZWxzKSB7CiAgICAgICAgIG1fbnVtYmVy
T2ZJbnB1dENoYW5uZWxzID0gRW5hYmxlZElucHV0Q2hhbm5lbHM7CiAKICAgICAgICAgaWYgKGlz
SW5pdGlhbGl6ZWQoKSkgeworICAgICAgICAgICAgLy8gUmUtY3JlYXRlIGRlc3RpbmF0aW9uLgog
ICAgICAgICAgICAgbV9kZXN0aW5hdGlvbi0+c3RvcCgpOwotICAgICAgICAgICAgY3JlYXRlRGVz
dGluYXRpb24oKTsKKyAgICAgICAgICAgIGNyZWF0ZURlc3RpbmF0aW9uKGlucHV0RGV2aWNlSWQp
OwogICAgICAgICAgICAgbV9kZXN0aW5hdGlvbi0+c3RhcnQoKTsKICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDJiOTk5YWQ0YWExOGQxMGVhZDQ4OTM0NjRi
YmEyZjJjMWIzNzIzNGIuLjNiODE2ZGRmNjFjMzQ2N2NkNDM3ZjMxYzgwZWQzOTU3OWM5N2JiYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtNDcsMTIgKzQ3LDEyIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgdW5pbml0aWFsaXplKCkgT1ZFUlJJREU7CiAKICAgICAvLyBBdWRp
b0Rlc3RpbmF0aW9uTm9kZQotICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJbnB1dCgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJbnB1dChjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNl
SWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydFJlbmRlcmluZygpIE9WRVJSSURF
OwogICAgIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUoQXVkaW9Db250ZXh0Kik7Ci0gICAgdm9pZCBjcmVhdGVEZXN0aW5hdGlvbigpOworICAgIHZv
aWQgY3JlYXRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKTsKIAogICAg
IE93blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBtX2Rlc3RpbmF0aW9uOwogICAgIHVuc2lnbmVkIG1f
bnVtYmVyT2ZJbnB1dENoYW5uZWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggY2Zj
NzY3Y2I1ZjZlYmFiZWJjY2ZlY2Y1NzlkZmEzNmI2YzBmMDI2ZC4uZjM3ODk4NDBlM2RlZWM4MjIz
ZWRhMzMyYWMzMTdiNzZkNmRiMmZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC01
MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5pbml0aWFsaXplKCkgT1ZF
UlJJREU7CiAKICAgICAvLyBBdWRpb0Rlc3RpbmF0aW9uTm9kZQotICAgIHZpcnR1YWwgdm9pZCBl
bmFibGVJbnB1dCgpIE9WRVJSSURFIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQo
Y29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc3RhcnRSZW5kZXJpbmcoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgZmxvYXQgc2FtcGxl
UmF0ZSgpICBjb25zdCB7IHJldHVybiBtX3JlbmRlclRhcmdldC0+c2FtcGxlUmF0ZSgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmgKaW5k
ZXggNTAxNTYwMDkxMzc1M2Q0ZGQyMjVkMGExMzMxYjdmZjY4NTU2MGRmMC4uODIzMzJkYzQ3ZGU3
ZTZjZmM1MzY1ZjFiZjcwMDQ4Njg1ZTk5NTUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDMs
NyArNDQsOCBAQCBjbGFzcyBBdWRpb0lPQ2FsbGJhY2s7CiBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9u
IHsKIHB1YmxpYzoKICAgICAvLyBQYXNzIGluIChudW1iZXJPZklucHV0Q2hhbm5lbHMgPiAwKSBp
ZiBsaXZlL2xvY2FsIGF1ZGlvIGlucHV0IGlzIGRlc2lyZWQuCi0gICAgc3RhdGljIFBhc3NPd25Q
dHI8QXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYsIHVuc2lnbmVkIG51
bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSk7CisgICAgLy8gUG9ydC1zcGVjaWZpYyBkZXZpY2UgaWRlbnRpZmljYXRp
b24gaW5mb3JtYXRpb24gZm9yIGxpdmUvbG9jYWwgaW5wdXQgc3RyZWFtcyBjYW4gYmUgcGFzc2Vk
IGluIHRoZSBpbnB1dERldmljZUlkLgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvRGVzdGlu
YXRpb24+IGNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNl
SWQsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICB2aXJ0dWFsIH5BdWRpb0Rlc3Rp
bmF0aW9uKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2Nocm9taXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uY3BwCmluZGV4
IDdiOGM4YmY2MTM3ZmY3MGVkOTczYmEyOTFkMzU0Yjc3OTI4Zjc3YWEuLjg4YzQzOWJmNGQwYWYx
YTVhZjRkYTcxYmJkZGY0MmZkMjY3OTRiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5hdGlvbkNo
cm9taXVtLmNwcApAQCAtNDUsMTIgKzQ1LDEyIEBAIGNvbnN0IHVuc2lnbmVkIHJlbmRlckJ1ZmZl
clNpemUgPSAxMjg7CiBjb25zdCBzaXplX3QgZmlmb1NpemUgPSA4MTkyOwogCiAvLyBGYWN0b3J5
IG1ldGhvZDogQ2hyb21pdW0taW1wbGVtZW50YXRpb24KLVBhc3NPd25QdHI8QXVkaW9EZXN0aW5h
dGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ss
IHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKK1Bhc3NPd25QdHI8QXVkaW9EZXN0aW5hdGlvbj4g
QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIGNvbnN0
IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1
bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQogewotICAg
IHJldHVybiBhZG9wdFB0cihuZXcgQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKGNhbGxiYWNrLCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUp
KTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bShjYWxs
YmFjaywgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1
dENoYW5uZWxzLCBzYW1wbGVSYXRlKSk7CiB9CiAKLUF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6
QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIHVuc2ln
bmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6QXVkaW9EZXN0
aW5hdGlvbkNocm9taXVtKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYg
aW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogbV9jYWxsYmFj
ayhjYWxsYmFjaykKICAgICAsIG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscyhudW1iZXJPZk91dHB1
dENoYW5uZWxzKQogICAgICwgbV9pbnB1dEJ1cyhudW1iZXJPZklucHV0Q2hhbm5lbHMsIHJlbmRl
ckJ1ZmZlclNpemUpCkBAIC02Niw2ICs2Niw3IEBAIEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6
QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIHVuCiAg
ICAgaWYgKG1fY2FsbGJhY2tCdWZmZXJTaXplICsgcmVuZGVyQnVmZmVyU2l6ZSA+IGZpZm9TaXpl
KQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhNRTogc3dpdGNoIG92ZXIgdG8gbmV3IG1l
dGhvZCB1c2luZyBpbnB1dERldmljZUlkLCBvbmNlIGNocm9taXVtIHN1cHBvcnRzIGl0LgogICAg
IG1fYXVkaW9EZXZpY2UgPSBhZG9wdFB0cihXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNy
ZWF0ZUF1ZGlvRGV2aWNlKG1fY2FsbGJhY2tCdWZmZXJTaXplLCBudW1iZXJPZklucHV0Q2hhbm5l
bHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIHRoaXMpKTsKICAgICBBU1NF
UlQobV9hdWRpb0RldmljZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2Nocm9taXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmgKaW5k
ZXggMTYwMWY4MmRhMGQ3YzRkMGZiMWVhMzQ0ZjdkYzVkMzU0MWVkZmM4ZC4uOWFmOWFiMmQxNzQ0
Y2JmMzNkNTFmOGM2ZTNkOTQ0OWI2ZDc5MTRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5hdGlvbkNo
cm9taXVtLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgQXVkaW9QdWxsRklGTzsKIAogY2xhc3Mg
QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24sIHB1Ymxp
YyBXZWJLaXQ6OldlYkF1ZGlvRGV2aWNlOjpSZW5kZXJDYWxsYmFjaywgcHVibGljIEF1ZGlvU291
cmNlUHJvdmlkZXIgewogcHVibGljOgotICAgIEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bShBdWRp
b0lPQ2FsbGJhY2smLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvRGVzdGlu
YXRpb25DaHJvbWl1bShBdWRpb0lPQ2FsbGJhY2smLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNl
SWQsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5h
dGlvbkNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCBlMTU4ODZhM2FiNWVlYzhlNjQyY2Rj
M2Y3NDYzMTk2OTM1Y2M4N2JhLi5jNzEwMDllMjA4ZGQ0MjkzMTRiY2Y2OWY5Y2ZhNzVhYmUxNjE3
MDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC00Myw4
ICs0MywxMCBAQCBnYm9vbGVhbiBtZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiwgR3N0TWVzc2FnZSog
bWVzc2FnZSwgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcgogICAgIHJldHVybiBkZXN0aW5hdGlv
bi0+aGFuZGxlTWVzc2FnZShtZXNzYWdlKTsKIH0KIAotUGFzc093blB0cjxBdWRpb0Rlc3RpbmF0
aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENo
YW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQorUGFzc093blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBB
dWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgY29uc3Qg
U3RyaW5nJiBpbnB1dERldmljZUlkLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVu
c2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CisgICAg
Ly8gRklYTUU6IG1ha2UgdXNlIG9mIGlucHV0RGV2aWNlSWQgYXMgYXBwcm9wcmlhdGUuCisKICAg
ICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGxvY2FsL2xpdmUgYXVkaW8gaW5wdXQuCiAgICAg
aWYgKG51bWJlck9mSW5wdXRDaGFubmVscykKICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0
aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5oYW5kbGVkIGlucHV0IGNoYW5uZWxzIiwg
bnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rl
c3RpbmF0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b0Rlc3RpbmF0aW9uTWFjLmNwcAppbmRleCBjZDBhYTlkY2QyODFiNjAzNTRjMTY0MzBmOTJmMjdj
NDYyMjNiNGEyLi43MjU4ZmQ0OGY1Yjc4ZDZkNDYxZGE3MzEzODVhNWI4ZWI0YzljY2Q2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlv
bk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVz
dGluYXRpb25NYWMuY3BwCkBAIC00NSw4ICs0NSwxMCBAQCBjb25zdCBmbG9hdCBrTG93VGhyZXNo
b2xkID0gLTE7CiBjb25zdCBmbG9hdCBrSGlnaFRocmVzaG9sZCA9IDE7CiAKIC8vIEZhY3Rvcnkg
bWV0aG9kOiBNYWMtaW1wbGVtZW50YXRpb24KLVBhc3NPd25QdHI8QXVkaW9EZXN0aW5hdGlvbj4g
QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIHVuc2ln
bmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgZmxvYXQgc2FtcGxlUmF0ZSkKK1Bhc3NPd25QdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9E
ZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIGNvbnN0IFN0cmlu
ZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25l
ZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQogeworICAgIC8vIEZJ
WE1FOiBtYWtlIHVzZSBvZiBpbnB1dERldmljZUlkIGFzIGFwcHJvcHJpYXRlLgorCiAgICAgLy8g
RklYTUU6IEFkZCBzdXBwb3J0IGZvciBsb2NhbC9saXZlIGF1ZGlvIGlucHV0LgogICAgIGlmIChu
dW1iZXJPZklucHV0Q2hhbm5lbHMpCiAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRp
b246OmNyZWF0ZSgldSwgJXUsICVmKSAtIHVuaGFuZGxlZCBpbnB1dCBjaGFubmVscyIsIG51bWJl
ck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1l
ZGlhU3RyZWFtU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCmluZGV4IDE1YTczYjkzNGEzYjgxYjRmM2Iz
YjQxY2JhYTJmZjEyY2E5YzI3N2QuLjk5ZWE4OGRkOTMxZmRiNzNlOWY0OWZhMzE2MWNjMzY3YWVj
MjM5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCkBAIC0xNDEsNiArMTQx
LDE4IEBAIHZvaWQgV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OnNldEV4dHJhRGF0YShFeHRyYURhdGEq
IGV4dHJhRGF0YSkKICAgICBtX3ByaXZhdGUtPnNldEV4dHJhRGF0YShhZG9wdFJlZihuZXcgRXh0
cmFEYXRhQ29udGFpbmVyKGV4dHJhRGF0YSkpKTsKIH0KIAorV2ViU3RyaW5nIFdlYk1lZGlhU3Ry
ZWFtU291cmNlOjpkZXZpY2VJZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNO
dWxsKCkpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmRldmljZUlkKCk7Cit9CisKK3ZvaWQgV2Vi
TWVkaWFTdHJlYW1Tb3VyY2U6OnNldERldmljZUlkKGNvbnN0IFdlYlN0cmluZyYgZGV2aWNlSWQp
Cit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAgIG1fcHJpdmF0ZS0+c2V0
RGV2aWNlSWQoZGV2aWNlSWQpOworfQorCiBib29sIFdlYk1lZGlhU3RyZWFtU291cmNlOjpyZXF1
aXJlc0F1ZGlvQ29uc3VtZXIoKSBjb25zdAogewogICAgIEFTU0VSVCghbV9wcml2YXRlLmlzTnVs
bCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVNvdXJjZS5oCmluZGV4IDY1MjljZTZjYjk5NTdiZTI1NzU5OTdkNDIyNTY0YjNl
NjVmZDgyNWYuLmMwMDkyYzIwNTEwZTAwNmE0NzI1YTNhODk2ODk5NGIzZDQzZTg2Y2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1Tb3VyY2UuaApAQCAtODAsNiArODAsOSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxFeHRy
YURhdGE+IGV4dHJhRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZXh0cmFEYXRhOyB9CiAgICAgdm9p
ZCBzZXRFeHRyYURhdGEoUGFzc1JlZlB0cjxFeHRyYURhdGE+IGV4dHJhRGF0YSkgeyBtX2V4dHJh
RGF0YSA9IGV4dHJhRGF0YTsgfQogCisgICAgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCgpIHsgcmV0
dXJuIG1fZGV2aWNlSWQ7IH0KKyAgICB2b2lkIHNldERldmljZUlkKGNvbnN0IFN0cmluZyYgZGV2
aWNlSWQpIHsgbV9kZXZpY2VJZCA9IGRldmljZUlkOyB9CisKICAgICB2b2lkIHNldEF1ZGlvRm9y
bWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2b2lk
IGNvbnN1bWVBdWRpbyhBdWRpb0J1cyosIHNpemVfdCBudW1iZXJPZkZyYW1lcyk7CiAKQEAgLTk1
LDYgKzk4LDcgQEAgcHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9uYW1l
OwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOworICAgIFN0cmluZyBtX2RldmljZUlkOwog
ICAgIGJvb2wgbV9yZXF1aXJlc0NvbnN1bWVyOwogICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2Jz
ZXJ2ZXJzOwogICAgIE11dGV4IG1fYXVkaW9Db25zdW1lcnNMb2NrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189210</attachid>
            <date>2013-02-19 17:13:00 -0800</date>
            <delta_ts>2013-02-19 17:39:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109494-20130219170923.patch</filename>
            <type>text/plain</type>
            <size>17740</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBkODM0MmY2ZDEyY2M2
NmQyM2E3MDJjODI2OWQ2ZTI0MjM4MjIwNGI2Li5jZDkxM2YzODVhYTg1ZjhlYzIxODNiMGJiNzEw
ZGU2NjczYWYxZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wMi0xOSAg
Q2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAgIEF1ZGlvRGVzdGlu
YXRpb246OmNyZWF0ZSgpIG5lZWRzIGV4dHJhIGRldmljZSBpZGVudGlmaWNhdGlvbiBpbmZvcm1h
dGlvbiBmb3IgbGl2ZS9sb2NhbCBpbnB1dCBzdHJlYW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0OTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVh
bVNvdXJjZS5oOgorICAgICAgICAoV2ViTWVkaWFTdHJlYW1Tb3VyY2UpOgorCiAyMDEzLTAyLTE5
ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIFdlYkF1
ZGlvIEFQSTogQ2hhbmdlIHRoZSBQbGF0Zm9ybTo6Y3JlYXRlQXVkaW9EZXZpY2UgZnVuY3Rpb24g
dG8gdGFrZSBhIERldmljZUlkIHBhcmFtZXRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZkNGJlZWIyZjA5MTdh
OWZhYzViOGZjMjhhYzU5OGY1YjY0OTI2ZTkuLjMyZDM5MjllZjE5M2FhMTU4MzQ2NjJhZmY3NDVi
OWVjY2E4ZmFkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMy0wMi0xOSAgQ2hy
aXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAgIEF1ZGlvRGVzdGluYXRp
b246OmNyZWF0ZSgpIG5lZWRzIGV4dHJhIGRldmljZSBpZGVudGlmaWNhdGlvbiBpbmZvcm1hdGlv
biBmb3IgbGl2ZS9sb2NhbCBpbnB1dCBzdHJlYW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoKSBzdXBwb3J0
cyBsaXZlL2xvY2FsIGF1ZGlvIGlucHV0LiAgQnV0LCBzaW5jZSB0aGVyZSBtYXkgYmUgbXVsdGlw
bGUKKyAgICAgICAgYXVkaW8gaW5wdXQgZGV2aWNlcyBhdmFpbGFibGUsIGFuIGlkZW50aWZpZXIg
Zm9yIHRoZSByZXF1ZXN0ZWQgaW5wdXQgZGV2aWNlIG5lZWRzIHRvIGJlCisgICAgICAgIHBhc3Nl
ZCBpbi4gIFRoZSBlbWJlZGRlciBtYXkgdGhlbiB1c2UgdGhpcyBpbmZvcm1hdGlvbiBzbyB0aGF0
IHRoZSBwcm9wZXIgYXVkaW8gaGFyZHdhcmUgaXMKKyAgICAgICAgYWNjZXNzZWQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgIChBdWRpb0Rlc3Rp
bmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6Y3JlYXRlRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlOjplbmFibGVJbnB1dCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKERlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0Rl
c3RpbmF0aW9uLmg6CisgICAgICAgIChBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0u
aDoKKyAgICAgICAgKEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YVN0cmVhbVNvdXJjZTo6ZGV2aWNlSWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2U6OnNldERldmljZUlkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1Tb3VyY2U6OmRldmljZUlkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtU291cmNlOjpzZXREZXZpY2VJZCk6CisgICAgICAgIChNZWRpYVN0cmVhbVNvdXJjZSk6CisK
IDIwMTMtMDItMTkgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBD
b252ZXJ0IDMgc2V0dGluZ3MgdG8gdXNlIFNldHRpbmdzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmgKaW5kZXggY2Zm
OWZjZTIwN2VjN2UwOTFhNzFlMWIyZWYyNjhlMzVhZTA3MWQ2Mi4uYjQyNzBmNTUzN2Y3ZDQ2Njcx
YzVjZTZhODM0NzNlZTZlMTgwYTNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaApAQCAtOTIsNiArOTIsOSBAQCBw
dWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBFeHRyYURhdGEqIGV4dHJhRGF0YSgpIGNvbnN0Owog
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRFeHRyYURhdGEoRXh0cmFEYXRhKik7CiAKKyAgICBX
RUJLSVRfRVhQT1JUIFdlYlN0cmluZyBkZXZpY2VJZCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXREZXZpY2VJZChjb25zdCBXZWJTdHJpbmcmKTsKKwogICAgIC8vIE9ubHkgdXNl
ZCBpZiBpZiB0aGlzIGlzIGEgV2ViQXVkaW8gc291cmNlLgogICAgIC8vIFRoZSBXZWJBdWRpb0Rl
c3RpbmF0aW9uQ29uc3VtZXIgaXMgbm90IG93bmVkLCBhbmQgaGFzIHRvIGJlIGRpc3Bvc2VkIG9m
IHNlcGFyYXRlbHkKICAgICAvLyBhZnRlciBjYWxsaW5nIHJlbW92ZUF1ZGlvQ29uc3VtZXIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5k
ZXggNjQ4ODI3ZjhlMDgxMTNlZGY2NjQyYjBhOGQ2NDYzMGYyOGQ3NTQ0My4uNjQxMGMwOTQ4MjJl
ODAyMmY5MWJhYzUwMzM2ZWRjMDAxMjE4YWQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMzk1LDkgKzM5NSwxMyBAQCBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZU1l
ZGlhU3RyZWFtU291cmNlKE1lZAogCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogcHJvdmlkZXIg
PSAwOwogCi0gICAgaWYgKG1lZGlhU3RyZWFtLT5pc0xvY2FsKCkgJiYgbWVkaWFTdHJlYW0tPmdl
dEF1ZGlvVHJhY2tzKCkuc2l6ZSgpKSB7CisgICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciBhdWRp
b1RyYWNrcyA9IG1lZGlhU3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpOworICAgIGlmIChtZWRpYVN0
cmVhbS0+aXNMb2NhbCgpICYmIGF1ZGlvVHJhY2tzLnNpemUoKSkgeworICAgICAgICAvLyBFbmFi
bGUgaW5wdXQgZm9yIHRoZSBzcGVjaWZpYyBsb2NhbCBhdWRpbyBkZXZpY2Ugc3BlY2lmaWVkIGlu
IHRoZSBNZWRpYVN0cmVhbVNvdXJjZS4KKyAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+
IGxvY2FsQXVkaW8gPSBhdWRpb1RyYWNrc1swXTsKKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2Uq
IHNvdXJjZSA9IGxvY2FsQXVkaW8tPmNvbXBvbmVudCgpLT5zb3VyY2UoKTsKKyAgICAgICAgZGVz
dGluYXRpb24oKS0+ZW5hYmxlSW5wdXQoc291cmNlLT5kZXZpY2VJZCgpKTsKICAgICAgICAgcHJv
dmlkZXIgPSBkZXN0aW5hdGlvbigpLT5sb2NhbEF1ZGlvSW5wdXRQcm92aWRlcigpOwotICAgICAg
ICBkZXN0aW5hdGlvbigpLT5lbmFibGVJbnB1dCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8v
IEZJWE1FOiBnZXQgYSBwcm92aWRlciBmb3Igbm9uLWxvY2FsIE1lZGlhU3RyZWFtcyAobGlrZSBm
cm9tIGEgcmVtb3RlIHBlZXIpLgogICAgICAgICBwcm92aWRlciA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5k
ZXggNjY3NjI4YWM4ZWQzNTdkNzU3YzQwN2ZmMDRkZWU5ZGEzZWJmN2EwMS4uZjc5YzUxMjcxZWVl
OTliNTlhNGExMWNhZjI2NGE3ODBlYTI3NDk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtNTQsNyArNTQs
OSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMoKSBj
b25zdCB7IHJldHVybiAyOyB9IC8vIEZJWE1FOiB1cGRhdGUgd2hlbiBtdWx0aS1jaGFubmVsICht
b3JlIHRoYW4gc3RlcmVvKSBpcyBzdXBwb3J0ZWQKIAotICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJ
bnB1dCgpID0gMDsKKyAgICAvLyBFbmFibGUgbG9jYWwvbGl2ZSBpbnB1dCBmb3IgdGhlIHNwZWNp
ZmllZCBkZXZpY2UuCisgICAgdmlydHVhbCB2b2lkIGVuYWJsZUlucHV0KGNvbnN0IFN0cmluZyYg
aW5wdXREZXZpY2VJZCkgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVuZGVyaW5nKCkg
PSAwOwogCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogbG9jYWxBdWRpb0lucHV0UHJvdmlkZXIo
KSB7IHJldHVybiAmbV9sb2NhbEF1ZGlvSW5wdXRQcm92aWRlcjsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwCmluZGV4IDAwMmMyNTQxNTYxNzE3MzU2YjRiNzQ1YzhmNWU2NjZmNjkzMWU5
YjIuLmM1NDUyNjFjZThhZjNiYjQ0MTcyNTU4OTgxN2E2NzA4NjE0YzA2NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBEZWZhdWx0QXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OmluaXRpYWxpemUoKQogICAgIGlmIChpc0luaXRpYWxpemVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGNyZWF0ZURlc3RpbmF0aW9uKCk7CisgICAgY3JlYXRlRGVz
dGluYXRpb24oIiIpOwogICAgIEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSgpOwogfQogCkBAIC02OCwy
MyArNjgsMjQgQEAgdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnVuaW5pdGlhbGl6
ZSgpCiAgICAgQXVkaW9Ob2RlOjp1bmluaXRpYWxpemUoKTsKIH0KIAotdm9pZCBEZWZhdWx0QXVk
aW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZURlc3RpbmF0aW9uKCkKK3ZvaWQgRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpjcmVhdGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2
aWNlSWQpCiB7CiAgICAgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlID0gQXVkaW9EZXN0aW5hdGlv
bjo6aGFyZHdhcmVTYW1wbGVSYXRlKCk7CiAgICAgTE9HKFdlYkF1ZGlvLCAiPj4+PiBoYXJkd2Fy
ZVNhbXBsZVJhdGUgPSAlZlxuIiwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKICAgICAKLSAgICBtX2Rl
c3RpbmF0aW9uID0gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCp0aGlzLCBtX251bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZDaGFubmVscygpLCBoYXJkd2FyZVNhbXBsZVJhdGUpOworICAg
IG1fZGVzdGluYXRpb24gPSBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoKnRoaXMsIGlucHV0RGV2
aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZkNoYW5uZWxzKCksIGhhcmR3
YXJlU2FtcGxlUmF0ZSk7CiB9CiAKLXZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpl
bmFibGVJbnB1dCgpCit2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6ZW5hYmxlSW5w
dXQoY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKQogewotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7IAorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKG1fbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzICE9IEVuYWJsZWRJbnB1dENoYW5uZWxzKSB7CiAgICAgICAgIG1fbnVtYmVy
T2ZJbnB1dENoYW5uZWxzID0gRW5hYmxlZElucHV0Q2hhbm5lbHM7CiAKICAgICAgICAgaWYgKGlz
SW5pdGlhbGl6ZWQoKSkgeworICAgICAgICAgICAgLy8gUmUtY3JlYXRlIGRlc3RpbmF0aW9uLgog
ICAgICAgICAgICAgbV9kZXN0aW5hdGlvbi0+c3RvcCgpOwotICAgICAgICAgICAgY3JlYXRlRGVz
dGluYXRpb24oKTsKKyAgICAgICAgICAgIGNyZWF0ZURlc3RpbmF0aW9uKGlucHV0RGV2aWNlSWQp
OwogICAgICAgICAgICAgbV9kZXN0aW5hdGlvbi0+c3RhcnQoKTsKICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDJiOTk5YWQ0YWExOGQxMGVhZDQ4OTM0NjRi
YmEyZjJjMWIzNzIzNGIuLjNiODE2ZGRmNjFjMzQ2N2NkNDM3ZjMxYzgwZWQzOTU3OWM5N2JiYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtNDcsMTIgKzQ3LDEyIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgdW5pbml0aWFsaXplKCkgT1ZFUlJJREU7CiAKICAgICAvLyBBdWRp
b0Rlc3RpbmF0aW9uTm9kZQotICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJbnB1dCgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJbnB1dChjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNl
SWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydFJlbmRlcmluZygpIE9WRVJSSURF
OwogICAgIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUoQXVkaW9Db250ZXh0Kik7Ci0gICAgdm9pZCBjcmVhdGVEZXN0aW5hdGlvbigpOworICAgIHZv
aWQgY3JlYXRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKTsKIAogICAg
IE93blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBtX2Rlc3RpbmF0aW9uOwogICAgIHVuc2lnbmVkIG1f
bnVtYmVyT2ZJbnB1dENoYW5uZWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggY2Zj
NzY3Y2I1ZjZlYmFiZWJjY2ZlY2Y1NzlkZmEzNmI2YzBmMDI2ZC4uZjM3ODk4NDBlM2RlZWM4MjIz
ZWRhMzMyYWMzMTdiNzZkNmRiMmZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC01
MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5pbml0aWFsaXplKCkgT1ZF
UlJJREU7CiAKICAgICAvLyBBdWRpb0Rlc3RpbmF0aW9uTm9kZQotICAgIHZpcnR1YWwgdm9pZCBl
bmFibGVJbnB1dCgpIE9WRVJSSURFIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQo
Y29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc3RhcnRSZW5kZXJpbmcoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgZmxvYXQgc2FtcGxl
UmF0ZSgpICBjb25zdCB7IHJldHVybiBtX3JlbmRlclRhcmdldC0+c2FtcGxlUmF0ZSgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmgKaW5k
ZXggNTAxNTYwMDkxMzc1M2Q0ZGQyMjVkMGExMzMxYjdmZjY4NTU2MGRmMC4uODIzMzJkYzQ3ZGU3
ZTZjZmM1MzY1ZjFiZjcwMDQ4Njg1ZTk5NTUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDMs
NyArNDQsOCBAQCBjbGFzcyBBdWRpb0lPQ2FsbGJhY2s7CiBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9u
IHsKIHB1YmxpYzoKICAgICAvLyBQYXNzIGluIChudW1iZXJPZklucHV0Q2hhbm5lbHMgPiAwKSBp
ZiBsaXZlL2xvY2FsIGF1ZGlvIGlucHV0IGlzIGRlc2lyZWQuCi0gICAgc3RhdGljIFBhc3NPd25Q
dHI8QXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYsIHVuc2lnbmVkIG51
bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSk7CisgICAgLy8gUG9ydC1zcGVjaWZpYyBkZXZpY2UgaWRlbnRpZmljYXRp
b24gaW5mb3JtYXRpb24gZm9yIGxpdmUvbG9jYWwgaW5wdXQgc3RyZWFtcyBjYW4gYmUgcGFzc2Vk
IGluIHRoZSBpbnB1dERldmljZUlkLgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvRGVzdGlu
YXRpb24+IGNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNl
SWQsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICB2aXJ0dWFsIH5BdWRpb0Rlc3Rp
bmF0aW9uKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2Nocm9taXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uY3BwCmluZGV4
IDdiOGM4YmY2MTM3ZmY3MGVkOTczYmEyOTFkMzU0Yjc3OTI4Zjc3YWEuLjg4YzQzOWJmNGQwYWYx
YTVhZjRkYTcxYmJkZGY0MmZkMjY3OTRiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5hdGlvbkNo
cm9taXVtLmNwcApAQCAtNDUsMTIgKzQ1LDEyIEBAIGNvbnN0IHVuc2lnbmVkIHJlbmRlckJ1ZmZl
clNpemUgPSAxMjg7CiBjb25zdCBzaXplX3QgZmlmb1NpemUgPSA4MTkyOwogCiAvLyBGYWN0b3J5
IG1ldGhvZDogQ2hyb21pdW0taW1wbGVtZW50YXRpb24KLVBhc3NPd25QdHI8QXVkaW9EZXN0aW5h
dGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ss
IHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKK1Bhc3NPd25QdHI8QXVkaW9EZXN0aW5hdGlvbj4g
QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIGNvbnN0
IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1
bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQogewotICAg
IHJldHVybiBhZG9wdFB0cihuZXcgQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKGNhbGxiYWNrLCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUp
KTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bShjYWxs
YmFjaywgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1
dENoYW5uZWxzLCBzYW1wbGVSYXRlKSk7CiB9CiAKLUF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6
QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIHVuc2ln
bmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6QXVkaW9EZXN0
aW5hdGlvbkNocm9taXVtKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYg
aW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogbV9jYWxsYmFj
ayhjYWxsYmFjaykKICAgICAsIG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscyhudW1iZXJPZk91dHB1
dENoYW5uZWxzKQogICAgICwgbV9pbnB1dEJ1cyhudW1iZXJPZklucHV0Q2hhbm5lbHMsIHJlbmRl
ckJ1ZmZlclNpemUpCkBAIC02Niw2ICs2Niw3IEBAIEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6
QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIHVuCiAg
ICAgaWYgKG1fY2FsbGJhY2tCdWZmZXJTaXplICsgcmVuZGVyQnVmZmVyU2l6ZSA+IGZpZm9TaXpl
KQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhNRTogc3dpdGNoIG92ZXIgdG8gbmV3IG1l
dGhvZCB1c2luZyBpbnB1dERldmljZUlkLCBvbmNlIGNocm9taXVtIHN1cHBvcnRzIGl0LgogICAg
IG1fYXVkaW9EZXZpY2UgPSBhZG9wdFB0cihXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNy
ZWF0ZUF1ZGlvRGV2aWNlKG1fY2FsbGJhY2tCdWZmZXJTaXplLCBudW1iZXJPZklucHV0Q2hhbm5l
bHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIHRoaXMpKTsKICAgICBBU1NF
UlQobV9hdWRpb0RldmljZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2Nocm9taXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmgKaW5k
ZXggMTYwMWY4MmRhMGQ3YzRkMGZiMWVhMzQ0ZjdkYzVkMzU0MWVkZmM4ZC4uOWFmOWFiMmQxNzQ0
Y2JmMzNkNTFmOGM2ZTNkOTQ0OWI2ZDc5MTRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5hdGlvbkNo
cm9taXVtLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgQXVkaW9QdWxsRklGTzsKIAogY2xhc3Mg
QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24sIHB1Ymxp
YyBXZWJLaXQ6OldlYkF1ZGlvRGV2aWNlOjpSZW5kZXJDYWxsYmFjaywgcHVibGljIEF1ZGlvU291
cmNlUHJvdmlkZXIgewogcHVibGljOgotICAgIEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bShBdWRp
b0lPQ2FsbGJhY2smLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvRGVzdGlu
YXRpb25DaHJvbWl1bShBdWRpb0lPQ2FsbGJhY2smLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNl
SWQsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5h
dGlvbkNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCBlMTU4ODZhM2FiNWVlYzhlNjQyY2Rj
M2Y3NDYzMTk2OTM1Y2M4N2JhLi4yZTQzNGU4MDVjMjc2YWZhYzgyNTRjMGUyZmU1NTk1MGQ4NTVm
Y2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC00Myw4
ICs0MywxMCBAQCBnYm9vbGVhbiBtZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiwgR3N0TWVzc2FnZSog
bWVzc2FnZSwgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcgogICAgIHJldHVybiBkZXN0aW5hdGlv
bi0+aGFuZGxlTWVzc2FnZShtZXNzYWdlKTsKIH0KIAotUGFzc093blB0cjxBdWRpb0Rlc3RpbmF0
aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENo
YW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQorUGFzc093blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBB
dWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgY29uc3Qg
U3RyaW5nJiwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQogeworICAgIC8vIEZJWE1FOiBtYWtl
IHVzZSBvZiBpbnB1dERldmljZUlkIGFzIGFwcHJvcHJpYXRlLgorCiAgICAgLy8gRklYTUU6IEFk
ZCBzdXBwb3J0IGZvciBsb2NhbC9saXZlIGF1ZGlvIGlucHV0LgogICAgIGlmIChudW1iZXJPZklu
cHV0Q2hhbm5lbHMpCiAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0
ZSgldSwgJXUsICVmKSAtIHVuaGFuZGxlZCBpbnB1dCBjaGFubmVscyIsIG51bWJlck9mSW5wdXRD
aGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1h
Yy5jcHAKaW5kZXggY2QwYWE5ZGNkMjgxYjYwMzU0YzE2NDMwZjkyZjI3YzQ2MjIzYjRhMi4uYmQz
Yjg3M2JiNTFiOWQ1YzI1ZjgxY2QyOWI2ZWVhYWZhOWI4MGIxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNw
cApAQCAtNDUsOCArNDUsMTAgQEAgY29uc3QgZmxvYXQga0xvd1RocmVzaG9sZCA9IC0xOwogY29u
c3QgZmxvYXQga0hpZ2hUaHJlc2hvbGQgPSAxOwogCiAvLyBGYWN0b3J5IG1ldGhvZDogTWFjLWlt
cGxlbWVudGF0aW9uCi1QYXNzT3duUHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRp
b246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBs
ZVJhdGUpCitQYXNzT3duUHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNy
ZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZs
b2F0IHNhbXBsZVJhdGUpCiB7CisgICAgLy8gRklYTUU6IG1ha2UgdXNlIG9mIGlucHV0RGV2aWNl
SWQgYXMgYXBwcm9wcmlhdGUuCisKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGxvY2Fs
L2xpdmUgYXVkaW8gaW5wdXQuCiAgICAgaWYgKG51bWJlck9mSW5wdXRDaGFubmVscykKICAgICAg
ICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5o
YW5kbGVkIGlucHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYVN0cmVhbVNvdXJjZS5j
cHAKaW5kZXggMTVhNzNiOTM0YTNiODFiNGYzYjNiNDFjYmFhMmZmMTJjYTljMjc3ZC4uOTllYTg4
ZGQ5MzFmZGI3M2U5ZjQ5ZmEzMTYxY2MzNjdhZWMyMzliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYVN0cmVhbVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYVN0
cmVhbVNvdXJjZS5jcHAKQEAgLTE0MSw2ICsxNDEsMTggQEAgdm9pZCBXZWJNZWRpYVN0cmVhbVNv
dXJjZTo6c2V0RXh0cmFEYXRhKEV4dHJhRGF0YSogZXh0cmFEYXRhKQogICAgIG1fcHJpdmF0ZS0+
c2V0RXh0cmFEYXRhKGFkb3B0UmVmKG5ldyBFeHRyYURhdGFDb250YWluZXIoZXh0cmFEYXRhKSkp
OwogfQogCitXZWJTdHJpbmcgV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OmRldmljZUlkKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoIW1fcHJpdmF0ZS5pc051bGwoKSk7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+ZGV2aWNlSWQoKTsKK30KKwordm9pZCBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6c2V0RGV2aWNl
SWQoY29uc3QgV2ViU3RyaW5nJiBkZXZpY2VJZCkKK3sKKyAgICBBU1NFUlQoIW1fcHJpdmF0ZS5p
c051bGwoKSk7CisgICAgbV9wcml2YXRlLT5zZXREZXZpY2VJZChkZXZpY2VJZCk7Cit9CisKIGJv
b2wgV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OnJlcXVpcmVzQXVkaW9Db25zdW1lcigpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgKaW5kZXggNjUy
OWNlNmNiOTk1N2JlMjU3NTk5N2Q0MjI1NjRiM2U2NWZkODI1Zi4uYzAwOTJjMjA1MTBlMDA2YTQ3
MjVhM2E4OTY4OTk0YjNkNDNlODZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCkBAIC04MCw2ICs4MCw5IEBA
IHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEV4dHJhRGF0YT4gZXh0cmFEYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9leHRyYURhdGE7IH0KICAgICB2b2lkIHNldEV4dHJhRGF0YShQYXNzUmVmUHRyPEV4
dHJhRGF0YT4gZXh0cmFEYXRhKSB7IG1fZXh0cmFEYXRhID0gZXh0cmFEYXRhOyB9CiAKKyAgICBj
b25zdCBTdHJpbmcmIGRldmljZUlkKCkgeyByZXR1cm4gbV9kZXZpY2VJZDsgfQorICAgIHZvaWQg
c2V0RGV2aWNlSWQoY29uc3QgU3RyaW5nJiBkZXZpY2VJZCkgeyBtX2RldmljZUlkID0gZGV2aWNl
SWQ7IH0KKwogICAgIHZvaWQgc2V0QXVkaW9Gb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMs
IGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIHZvaWQgY29uc3VtZUF1ZGlvKEF1ZGlvQnVzKiwgc2l6
ZV90IG51bWJlck9mRnJhbWVzKTsKIApAQCAtOTUsNiArOTgsNyBAQCBwcml2YXRlOgogICAgIFR5
cGUgbV90eXBlOwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3Rh
dGU7CisgICAgU3RyaW5nIG1fZGV2aWNlSWQ7CiAgICAgYm9vbCBtX3JlcXVpcmVzQ29uc3VtZXI7
CiAgICAgVmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAgICAgTXV0ZXggbV9hdWRpb0Nv
bnN1bWVyc0xvY2s7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189214</attachid>
            <date>2013-02-19 17:39:36 -0800</date>
            <delta_ts>2013-02-22 10:39:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109494-20130219173558.patch</filename>
            <type>text/plain</type>
            <size>17726</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBkODM0MmY2ZDEyY2M2
NmQyM2E3MDJjODI2OWQ2ZTI0MjM4MjIwNGI2Li5jZDkxM2YzODVhYTg1ZjhlYzIxODNiMGJiNzEw
ZGU2NjczYWYxZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wMi0xOSAg
Q2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAgIEF1ZGlvRGVzdGlu
YXRpb246OmNyZWF0ZSgpIG5lZWRzIGV4dHJhIGRldmljZSBpZGVudGlmaWNhdGlvbiBpbmZvcm1h
dGlvbiBmb3IgbGl2ZS9sb2NhbCBpbnB1dCBzdHJlYW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0OTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVh
bVNvdXJjZS5oOgorICAgICAgICAoV2ViTWVkaWFTdHJlYW1Tb3VyY2UpOgorCiAyMDEzLTAyLTE5
ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIFdlYkF1
ZGlvIEFQSTogQ2hhbmdlIHRoZSBQbGF0Zm9ybTo6Y3JlYXRlQXVkaW9EZXZpY2UgZnVuY3Rpb24g
dG8gdGFrZSBhIERldmljZUlkIHBhcmFtZXRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZkNGJlZWIyZjA5MTdh
OWZhYzViOGZjMjhhYzU5OGY1YjY0OTI2ZTkuLjMyZDM5MjllZjE5M2FhMTU4MzQ2NjJhZmY3NDVi
OWVjY2E4ZmFkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMy0wMi0xOSAgQ2hy
aXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAgIEF1ZGlvRGVzdGluYXRp
b246OmNyZWF0ZSgpIG5lZWRzIGV4dHJhIGRldmljZSBpZGVudGlmaWNhdGlvbiBpbmZvcm1hdGlv
biBmb3IgbGl2ZS9sb2NhbCBpbnB1dCBzdHJlYW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoKSBzdXBwb3J0
cyBsaXZlL2xvY2FsIGF1ZGlvIGlucHV0LiAgQnV0LCBzaW5jZSB0aGVyZSBtYXkgYmUgbXVsdGlw
bGUKKyAgICAgICAgYXVkaW8gaW5wdXQgZGV2aWNlcyBhdmFpbGFibGUsIGFuIGlkZW50aWZpZXIg
Zm9yIHRoZSByZXF1ZXN0ZWQgaW5wdXQgZGV2aWNlIG5lZWRzIHRvIGJlCisgICAgICAgIHBhc3Nl
ZCBpbi4gIFRoZSBlbWJlZGRlciBtYXkgdGhlbiB1c2UgdGhpcyBpbmZvcm1hdGlvbiBzbyB0aGF0
IHRoZSBwcm9wZXIgYXVkaW8gaGFyZHdhcmUgaXMKKyAgICAgICAgYWNjZXNzZWQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgIChBdWRpb0Rlc3Rp
bmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6Y3JlYXRlRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlOjplbmFibGVJbnB1dCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKERlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0Rl
c3RpbmF0aW9uLmg6CisgICAgICAgIChBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0u
aDoKKyAgICAgICAgKEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YVN0cmVhbVNvdXJjZTo6ZGV2aWNlSWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2U6OnNldERldmljZUlkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1Tb3VyY2U6OmRldmljZUlkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtU291cmNlOjpzZXREZXZpY2VJZCk6CisgICAgICAgIChNZWRpYVN0cmVhbVNvdXJjZSk6CisK
IDIwMTMtMDItMTkgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBD
b252ZXJ0IDMgc2V0dGluZ3MgdG8gdXNlIFNldHRpbmdzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmgKaW5kZXggY2Zm
OWZjZTIwN2VjN2UwOTFhNzFlMWIyZWYyNjhlMzVhZTA3MWQ2Mi4uYjQyNzBmNTUzN2Y3ZDQ2Njcx
YzVjZTZhODM0NzNlZTZlMTgwYTNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaApAQCAtOTIsNiArOTIsOSBAQCBw
dWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBFeHRyYURhdGEqIGV4dHJhRGF0YSgpIGNvbnN0Owog
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRFeHRyYURhdGEoRXh0cmFEYXRhKik7CiAKKyAgICBX
RUJLSVRfRVhQT1JUIFdlYlN0cmluZyBkZXZpY2VJZCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXREZXZpY2VJZChjb25zdCBXZWJTdHJpbmcmKTsKKwogICAgIC8vIE9ubHkgdXNl
ZCBpZiBpZiB0aGlzIGlzIGEgV2ViQXVkaW8gc291cmNlLgogICAgIC8vIFRoZSBXZWJBdWRpb0Rl
c3RpbmF0aW9uQ29uc3VtZXIgaXMgbm90IG93bmVkLCBhbmQgaGFzIHRvIGJlIGRpc3Bvc2VkIG9m
IHNlcGFyYXRlbHkKICAgICAvLyBhZnRlciBjYWxsaW5nIHJlbW92ZUF1ZGlvQ29uc3VtZXIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5k
ZXggNjQ4ODI3ZjhlMDgxMTNlZGY2NjQyYjBhOGQ2NDYzMGYyOGQ3NTQ0My4uNjQxMGMwOTQ4MjJl
ODAyMmY5MWJhYzUwMzM2ZWRjMDAxMjE4YWQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMzk1LDkgKzM5NSwxMyBAQCBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZU1l
ZGlhU3RyZWFtU291cmNlKE1lZAogCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogcHJvdmlkZXIg
PSAwOwogCi0gICAgaWYgKG1lZGlhU3RyZWFtLT5pc0xvY2FsKCkgJiYgbWVkaWFTdHJlYW0tPmdl
dEF1ZGlvVHJhY2tzKCkuc2l6ZSgpKSB7CisgICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciBhdWRp
b1RyYWNrcyA9IG1lZGlhU3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpOworICAgIGlmIChtZWRpYVN0
cmVhbS0+aXNMb2NhbCgpICYmIGF1ZGlvVHJhY2tzLnNpemUoKSkgeworICAgICAgICAvLyBFbmFi
bGUgaW5wdXQgZm9yIHRoZSBzcGVjaWZpYyBsb2NhbCBhdWRpbyBkZXZpY2Ugc3BlY2lmaWVkIGlu
IHRoZSBNZWRpYVN0cmVhbVNvdXJjZS4KKyAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+
IGxvY2FsQXVkaW8gPSBhdWRpb1RyYWNrc1swXTsKKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2Uq
IHNvdXJjZSA9IGxvY2FsQXVkaW8tPmNvbXBvbmVudCgpLT5zb3VyY2UoKTsKKyAgICAgICAgZGVz
dGluYXRpb24oKS0+ZW5hYmxlSW5wdXQoc291cmNlLT5kZXZpY2VJZCgpKTsKICAgICAgICAgcHJv
dmlkZXIgPSBkZXN0aW5hdGlvbigpLT5sb2NhbEF1ZGlvSW5wdXRQcm92aWRlcigpOwotICAgICAg
ICBkZXN0aW5hdGlvbigpLT5lbmFibGVJbnB1dCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8v
IEZJWE1FOiBnZXQgYSBwcm92aWRlciBmb3Igbm9uLWxvY2FsIE1lZGlhU3RyZWFtcyAobGlrZSBm
cm9tIGEgcmVtb3RlIHBlZXIpLgogICAgICAgICBwcm92aWRlciA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5k
ZXggNjY3NjI4YWM4ZWQzNTdkNzU3YzQwN2ZmMDRkZWU5ZGEzZWJmN2EwMS4uZjc5YzUxMjcxZWVl
OTliNTlhNGExMWNhZjI2NGE3ODBlYTI3NDk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtNTQsNyArNTQs
OSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMoKSBj
b25zdCB7IHJldHVybiAyOyB9IC8vIEZJWE1FOiB1cGRhdGUgd2hlbiBtdWx0aS1jaGFubmVsICht
b3JlIHRoYW4gc3RlcmVvKSBpcyBzdXBwb3J0ZWQKIAotICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJ
bnB1dCgpID0gMDsKKyAgICAvLyBFbmFibGUgbG9jYWwvbGl2ZSBpbnB1dCBmb3IgdGhlIHNwZWNp
ZmllZCBkZXZpY2UuCisgICAgdmlydHVhbCB2b2lkIGVuYWJsZUlucHV0KGNvbnN0IFN0cmluZyYg
aW5wdXREZXZpY2VJZCkgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVuZGVyaW5nKCkg
PSAwOwogCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogbG9jYWxBdWRpb0lucHV0UHJvdmlkZXIo
KSB7IHJldHVybiAmbV9sb2NhbEF1ZGlvSW5wdXRQcm92aWRlcjsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwCmluZGV4IDAwMmMyNTQxNTYxNzE3MzU2YjRiNzQ1YzhmNWU2NjZmNjkzMWU5
YjIuLmM1NDUyNjFjZThhZjNiYjQ0MTcyNTU4OTgxN2E2NzA4NjE0YzA2NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBEZWZhdWx0QXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OmluaXRpYWxpemUoKQogICAgIGlmIChpc0luaXRpYWxpemVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGNyZWF0ZURlc3RpbmF0aW9uKCk7CisgICAgY3JlYXRlRGVz
dGluYXRpb24oIiIpOwogICAgIEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSgpOwogfQogCkBAIC02OCwy
MyArNjgsMjQgQEAgdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnVuaW5pdGlhbGl6
ZSgpCiAgICAgQXVkaW9Ob2RlOjp1bmluaXRpYWxpemUoKTsKIH0KIAotdm9pZCBEZWZhdWx0QXVk
aW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZURlc3RpbmF0aW9uKCkKK3ZvaWQgRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpjcmVhdGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2
aWNlSWQpCiB7CiAgICAgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlID0gQXVkaW9EZXN0aW5hdGlv
bjo6aGFyZHdhcmVTYW1wbGVSYXRlKCk7CiAgICAgTE9HKFdlYkF1ZGlvLCAiPj4+PiBoYXJkd2Fy
ZVNhbXBsZVJhdGUgPSAlZlxuIiwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKICAgICAKLSAgICBtX2Rl
c3RpbmF0aW9uID0gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCp0aGlzLCBtX251bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZDaGFubmVscygpLCBoYXJkd2FyZVNhbXBsZVJhdGUpOworICAg
IG1fZGVzdGluYXRpb24gPSBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoKnRoaXMsIGlucHV0RGV2
aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZkNoYW5uZWxzKCksIGhhcmR3
YXJlU2FtcGxlUmF0ZSk7CiB9CiAKLXZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpl
bmFibGVJbnB1dCgpCit2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6ZW5hYmxlSW5w
dXQoY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKQogewotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7IAorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKG1fbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzICE9IEVuYWJsZWRJbnB1dENoYW5uZWxzKSB7CiAgICAgICAgIG1fbnVtYmVy
T2ZJbnB1dENoYW5uZWxzID0gRW5hYmxlZElucHV0Q2hhbm5lbHM7CiAKICAgICAgICAgaWYgKGlz
SW5pdGlhbGl6ZWQoKSkgeworICAgICAgICAgICAgLy8gUmUtY3JlYXRlIGRlc3RpbmF0aW9uLgog
ICAgICAgICAgICAgbV9kZXN0aW5hdGlvbi0+c3RvcCgpOwotICAgICAgICAgICAgY3JlYXRlRGVz
dGluYXRpb24oKTsKKyAgICAgICAgICAgIGNyZWF0ZURlc3RpbmF0aW9uKGlucHV0RGV2aWNlSWQp
OwogICAgICAgICAgICAgbV9kZXN0aW5hdGlvbi0+c3RhcnQoKTsKICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDJiOTk5YWQ0YWExOGQxMGVhZDQ4OTM0NjRi
YmEyZjJjMWIzNzIzNGIuLjNiODE2ZGRmNjFjMzQ2N2NkNDM3ZjMxYzgwZWQzOTU3OWM5N2JiYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtNDcsMTIgKzQ3LDEyIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgdW5pbml0aWFsaXplKCkgT1ZFUlJJREU7CiAKICAgICAvLyBBdWRp
b0Rlc3RpbmF0aW9uTm9kZQotICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJbnB1dCgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJbnB1dChjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNl
SWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydFJlbmRlcmluZygpIE9WRVJSSURF
OwogICAgIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUoQXVkaW9Db250ZXh0Kik7Ci0gICAgdm9pZCBjcmVhdGVEZXN0aW5hdGlvbigpOworICAgIHZv
aWQgY3JlYXRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKTsKIAogICAg
IE93blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBtX2Rlc3RpbmF0aW9uOwogICAgIHVuc2lnbmVkIG1f
bnVtYmVyT2ZJbnB1dENoYW5uZWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggY2Zj
NzY3Y2I1ZjZlYmFiZWJjY2ZlY2Y1NzlkZmEzNmI2YzBmMDI2ZC4uNWE0MmM5ODAwMTYxMGFjM2Nh
NTVkZTk1ZThmNTU1MjM5NWU1NDUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC01
MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5pbml0aWFsaXplKCkgT1ZF
UlJJREU7CiAKICAgICAvLyBBdWRpb0Rlc3RpbmF0aW9uTm9kZQotICAgIHZpcnR1YWwgdm9pZCBl
bmFibGVJbnB1dCgpIE9WRVJSSURFIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQo
Y29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVuZGVy
aW5nKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGZsb2F0IHNhbXBsZVJhdGUoKSAgY29uc3Qg
eyByZXR1cm4gbV9yZW5kZXJUYXJnZXQtPnNhbXBsZVJhdGUoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oCmluZGV4IDUwMTU2MDA5MTM3
NTNkNGRkMjI1ZDBhMTMzMWI3ZmY2ODU1NjBkZjAuLjgyMzMyZGM0N2RlN2U2Y2ZjNTM2NWYxYmY3
MDA0ODY4NWU5OTU1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvRGVzdGluYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0Rlc3RpbmF0aW9uLmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDcgKzQ0LDggQEAgY2xh
c3MgQXVkaW9JT0NhbGxiYWNrOwogY2xhc3MgQXVkaW9EZXN0aW5hdGlvbiB7CiBwdWJsaWM6CiAg
ICAgLy8gUGFzcyBpbiAobnVtYmVyT2ZJbnB1dENoYW5uZWxzID4gMCkgaWYgbGl2ZS9sb2NhbCBh
dWRpbyBpbnB1dCBpcyBkZXNpcmVkLgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvRGVzdGlu
YXRpb24+IGNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hh
bm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUp
OworICAgIC8vIFBvcnQtc3BlY2lmaWMgZGV2aWNlIGlkZW50aWZpY2F0aW9uIGluZm9ybWF0aW9u
IGZvciBsaXZlL2xvY2FsIGlucHV0IHN0cmVhbXMgY2FuIGJlIHBhc3NlZCBpbiB0aGUgaW5wdXRE
ZXZpY2VJZC4KKyAgICBzdGF0aWMgUGFzc093blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUo
QXVkaW9JT0NhbGxiYWNrJiwgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1bnNpZ25lZCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZs
b2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbigpIHsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRp
b0Rlc3RpbmF0aW9uQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y2hyb21pdW0vQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcAppbmRleCA3YjhjOGJmNjEzN2Zm
NzBlZDk3M2JhMjkxZDM1NGI3NzkyOGY3N2FhLi44OGM0MzliZjRkMGFmMWE1YWY0ZGE3MWJiZGRm
NDJmZDI2Nzk0Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
aHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHAKQEAg
LTQ1LDEyICs0NSwxMiBAQCBjb25zdCB1bnNpZ25lZCByZW5kZXJCdWZmZXJTaXplID0gMTI4Owog
Y29uc3Qgc2l6ZV90IGZpZm9TaXplID0gODE5MjsKIAogLy8gRmFjdG9yeSBtZXRob2Q6IENocm9t
aXVtLWltcGxlbWVudGF0aW9uCi1QYXNzT3duUHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVz
dGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZCBudW1i
ZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0
IHNhbXBsZVJhdGUpCitQYXNzT3duUHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRp
b246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBjb25zdCBTdHJpbmcmIGlucHV0
RGV2aWNlSWQsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bShjYWxsYmFjaywgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKSk7CisgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0oY2FsbGJhY2ssIGlucHV0RGV2
aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2Ft
cGxlUmF0ZSkpOwogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OkF1ZGlvRGVzdGluYXRp
b25DaHJvbWl1bShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBs
ZVJhdGUpCitBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1
bShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQs
IHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCiAg
ICAgLCBtX251bWJlck9mT3V0cHV0Q2hhbm5lbHMobnVtYmVyT2ZPdXRwdXRDaGFubmVscykKICAg
ICAsIG1faW5wdXRCdXMobnVtYmVyT2ZJbnB1dENoYW5uZWxzLCByZW5kZXJCdWZmZXJTaXplKQpA
QCAtNjYsNiArNjYsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OkF1ZGlvRGVzdGluYXRp
b25DaHJvbWl1bShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bgogICAgIGlmIChtX2NhbGxi
YWNrQnVmZmVyU2l6ZSArIHJlbmRlckJ1ZmZlclNpemUgPiBmaWZvU2l6ZSkKICAgICAgICAgcmV0
dXJuOwogCisgICAgLy8gRklYTUU6IHN3aXRjaCBvdmVyIHRvIG5ldyBtZXRob2QgdXNpbmcgaW5w
dXREZXZpY2VJZCwgb25jZSBjaHJvbWl1bSBzdXBwb3J0cyBpdC4KICAgICBtX2F1ZGlvRGV2aWNl
ID0gYWRvcHRQdHIoV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jcmVhdGVBdWRpb0Rldmlj
ZShtX2NhbGxiYWNrQnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCB0aGlzKSk7CiAgICAgQVNTRVJUKG1fYXVkaW9EZXZp
Y2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jaHJvbWl1
bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2Nocm9taXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oCmluZGV4IDE2MDFmODJkYTBk
N2M0ZDBmYjFlYTM0NGY3ZGM1ZDM1NDFlZGZjOGQuLjlhZjlhYjJkMTc0NGNiZjMzZDUxZjhjNmUz
ZDk0NDliNmQ3OTE0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2Nocm9taXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oCkBAIC00
NSw3ICs0NSw3IEBAIGNsYXNzIEF1ZGlvUHVsbEZJRk87CiAKIGNsYXNzIEF1ZGlvRGVzdGluYXRp
b25DaHJvbWl1bSA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMgV2ViS2l0OjpXZWJB
dWRpb0RldmljZTo6UmVuZGVyQ2FsbGJhY2ssIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyIHsK
IHB1YmxpYzoKLSAgICBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0oQXVkaW9JT0NhbGxiYWNrJiwg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENo
YW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0o
QXVkaW9JT0NhbGxiYWNrJiwgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1bnNpZ25lZCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZs
b2F0IHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bSgp
OwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lci5jcHAKaW5kZXggZTE1ODg2YTNhYjVlZWM4ZTY0MmNkYzNmNzQ2MzE5NjkzNWNj
ODdiYS4uMmU0MzRlODA1YzI3NmFmYWM4MjU0YzBlMmZlNTU5NTBkODU1ZmNlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtNDMsOCArNDMsMTAgQEAgZ2Jv
b2xlYW4gbWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEF1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIKICAgICByZXR1cm4gZGVzdGluYXRpb24tPmhhbmRsZU1lc3Nh
Z2UobWVzc2FnZSk7CiB9CiAKLVBhc3NPd25QdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0
aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQg
c2FtcGxlUmF0ZSkKK1Bhc3NPd25QdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlv
bjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYsIHVuc2ln
bmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKKyAgICAvLyBGSVhNRTogbWFrZSB1c2Ugb2YgaW5wdXRE
ZXZpY2VJZCBhcyBhcHByb3ByaWF0ZS4KKwogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Ig
bG9jYWwvbGl2ZSBhdWRpbyBpbnB1dC4KICAgICBpZiAobnVtYmVyT2ZJbnB1dENoYW5uZWxzKQog
ICAgICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoJXUsICV1LCAlZikg
LSB1bmhhbmRsZWQgaW5wdXQgY2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCmluZGV4IGNk
MGFhOWRjZDI4MWI2MDM1NGMxNjQzMGY5MmYyN2M0NjIyM2I0YTIuLmJkM2I4NzNiYjUxYjlkNWMy
NWY4MWNkMjliNmVlYWFmYTliODBiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKQEAgLTQ1LDggKzQ1
LDEwIEBAIGNvbnN0IGZsb2F0IGtMb3dUaHJlc2hvbGQgPSAtMTsKIGNvbnN0IGZsb2F0IGtIaWdo
VGhyZXNob2xkID0gMTsKIAogLy8gRmFjdG9yeSBtZXRob2Q6IE1hYy1pbXBsZW1lbnRhdGlvbgot
UGFzc093blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVk
aW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1
bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQorUGFzc093
blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0Nh
bGxiYWNrJiBjYWxsYmFjaywgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRl
KQogeworICAgIC8vIEZJWE1FOiBtYWtlIHVzZSBvZiBpbnB1dERldmljZUlkIGFzIGFwcHJvcHJp
YXRlLgorCiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBsb2NhbC9saXZlIGF1ZGlvIGlu
cHV0LgogICAgIGlmIChudW1iZXJPZklucHV0Q2hhbm5lbHMpCiAgICAgICAgIExPRyhNZWRpYSwg
IkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVmKSAtIHVuaGFuZGxlZCBpbnB1dCBj
aGFubmVscyIsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywg
c2FtcGxlUmF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCmluZGV4IDE1YTcz
YjkzNGEzYjgxYjRmM2IzYjQxY2JhYTJmZjEyY2E5YzI3N2QuLjk5ZWE4OGRkOTMxZmRiNzNlOWY0
OWZhMzE2MWNjMzY3YWVjMjM5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3Bw
CkBAIC0xNDEsNiArMTQxLDE4IEBAIHZvaWQgV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OnNldEV4dHJh
RGF0YShFeHRyYURhdGEqIGV4dHJhRGF0YSkKICAgICBtX3ByaXZhdGUtPnNldEV4dHJhRGF0YShh
ZG9wdFJlZihuZXcgRXh0cmFEYXRhQ29udGFpbmVyKGV4dHJhRGF0YSkpKTsKIH0KIAorV2ViU3Ry
aW5nIFdlYk1lZGlhU3RyZWFtU291cmNlOjpkZXZpY2VJZCgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmRldmljZUlkKCk7
Cit9CisKK3ZvaWQgV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OnNldERldmljZUlkKGNvbnN0IFdlYlN0
cmluZyYgZGV2aWNlSWQpCit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAg
IG1fcHJpdmF0ZS0+c2V0RGV2aWNlSWQoZGV2aWNlSWQpOworfQorCiBib29sIFdlYk1lZGlhU3Ry
ZWFtU291cmNlOjpyZXF1aXJlc0F1ZGlvQ29uc3VtZXIoKSBjb25zdAogewogICAgIEFTU0VSVCgh
bV9wcml2YXRlLmlzTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCmluZGV4IDY1MjljZTZjYjk5NTdiZTI1
NzU5OTdkNDIyNTY0YjNlNjVmZDgyNWYuLmMwMDkyYzIwNTEwZTAwNmE0NzI1YTNhODk2ODk5NGIz
ZDQzZTg2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaApAQCAtODAsNiArODAsOSBAQCBwdWJsaWM6CiAgICAg
UGFzc1JlZlB0cjxFeHRyYURhdGE+IGV4dHJhRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZXh0cmFE
YXRhOyB9CiAgICAgdm9pZCBzZXRFeHRyYURhdGEoUGFzc1JlZlB0cjxFeHRyYURhdGE+IGV4dHJh
RGF0YSkgeyBtX2V4dHJhRGF0YSA9IGV4dHJhRGF0YTsgfQogCisgICAgY29uc3QgU3RyaW5nJiBk
ZXZpY2VJZCgpIHsgcmV0dXJuIG1fZGV2aWNlSWQ7IH0KKyAgICB2b2lkIHNldERldmljZUlkKGNv
bnN0IFN0cmluZyYgZGV2aWNlSWQpIHsgbV9kZXZpY2VJZCA9IGRldmljZUlkOyB9CisKICAgICB2
b2lkIHNldEF1ZGlvRm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlKTsKICAgICB2b2lkIGNvbnN1bWVBdWRpbyhBdWRpb0J1cyosIHNpemVfdCBudW1iZXJPZkZy
YW1lcyk7CiAKQEAgLTk1LDYgKzk4LDcgQEAgcHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKICAg
ICBTdHJpbmcgbV9uYW1lOwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOworICAgIFN0cmlu
ZyBtX2RldmljZUlkOwogICAgIGJvb2wgbV9yZXF1aXJlc0NvbnN1bWVyOwogICAgIFZlY3RvcjxP
YnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwogICAgIE11dGV4IG1fYXVkaW9Db25zdW1lcnNMb2NrOwo=
</data>
<flag name="review"
          id="209546"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>