<?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>148315</bug_id>
          
          <creation_ts>2015-08-21 11:35:02 -0700</creation_ts>
          <short_desc>[iOS] AirPlay should not stop when the screen locks</short_desc>
          <delta_ts>2015-10-01 20:37:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1119825</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-08-21 11:35:02 -0700</bug_when>
    <thetext>Don&apos;t pause when the screen locks if playing to AirPlay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119827</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-08-21 11:37:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/22300597&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119839</commentid>
    <comment_count>2</comment_count>
      <attachid>259637</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-08-21 11:59:20 -0700</bug_when>
    <thetext>Created attachment 259637
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119843</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-21 12:03:57 -0700</bug_when>
    <thetext>Attachment 259637 did not pass style-queue:


ERROR: Source/WebCore/platform/audio/PlatformMediaSession.cpp:44:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/audio/PlatformMediaSession.cpp:58:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120285</commentid>
    <comment_count>4</comment_count>
      <attachid>259637</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-08-24 10:20:58 -0700</bug_when>
    <thetext>Comment on attachment 259637
Proposed patch

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

r=me, with nit.

&gt; Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm:267
&gt; +    Vector&lt;PlatformMediaSession*&gt; sessions = this-&gt;sessions();
&gt; +    for (auto* session : sessions) {

nit: Why the local variable?  Seems like this could just be:

for (auto* session : sessions()) { ... }

Looking into PlatformMediaSessionManager, I don&apos;t understand why sessions() doesn&apos;t return a Vector&lt;&gt;&amp;.  But it also seems a waste to have to create a new Vector every time this method is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120289</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-08-24 10:25:52 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 259637 [details]
&gt; Proposed patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=259637&amp;action=review
&gt; 
&gt; r=me, with nit.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm:267
&gt; &gt; +    Vector&lt;PlatformMediaSession*&gt; sessions = this-&gt;sessions();
&gt; &gt; +    for (auto* session : sessions) {
&gt; 
&gt; nit: Why the local variable?  Seems like this could just be:
&gt; 
&gt; for (auto* session : sessions()) { ... }
&gt; 
&gt; Looking into PlatformMediaSessionManager, I don&apos;t understand why sessions()
&gt; doesn&apos;t return a Vector&lt;&gt;&amp;.  But it also seems a waste to have to create a
&gt; new Vector every time this method is called.

I think because calling session.whatever() can cause m_sessions to be modified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120292</commentid>
    <comment_count>6</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-08-24 10:36:53 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Comment on attachment 259637 [details]
&gt; &gt; Proposed patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=259637&amp;action=review
&gt; &gt; 
&gt; &gt; r=me, with nit.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm:267
&gt; &gt; &gt; +    Vector&lt;PlatformMediaSession*&gt; sessions = this-&gt;sessions();
&gt; &gt; &gt; +    for (auto* session : sessions) {
&gt; &gt; 
&gt; &gt; nit: Why the local variable?  Seems like this could just be:
&gt; &gt; 
&gt; &gt; for (auto* session : sessions()) { ... }
&gt; &gt; 
&gt; &gt; Looking into PlatformMediaSessionManager, I don&apos;t understand why sessions()
&gt; &gt; doesn&apos;t return a Vector&lt;&gt;&amp;.  But it also seems a waste to have to create a
&gt; &gt; new Vector every time this method is called.
&gt; 
&gt; I think because calling session.whatever() can cause m_sessions to be
&gt; modified.

Ah yes, I see that pattern elsewhere in PlatformMediaSessionManager.cpp. Carry on!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130057</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-10-01 15:33:20 -0700</bug_when>
    <thetext>Committed r190434: &lt;http://trac.webkit.org/changeset/190434&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130088</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-10-01 16:42:08 -0700</bug_when>
    <thetext>Note: This fix broke the test &apos;webaudio/audiocontext-state-interrupted.html&apos;, because it was not updated to pass an argument to internals.beginMediaSessionInterruption.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130089</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-10-01 16:43:33 -0700</bug_when>
    <thetext>Test fix committed in:

Committed r190434: &lt;http://trac.webkit.org/changeset/190438&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130127</commentid>
    <comment_count>10</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-10-01 18:30:54 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Committed r190434: &lt;http://trac.webkit.org/changeset/190434&gt;

Is there any reason we don&apos;t use *interruption* local variable in beginInterruption() ?


void Internals::beginMediaSessionInterruption(const String&amp; interruptionString, ExceptionCode&amp; ec)
{
    PlatformMediaSession::InterruptionType interruption = PlatformMediaSession::SystemInterruption;

    if (equalIgnoringCase(interruptionString, &quot;System&quot;))
        interruption = PlatformMediaSession::SystemInterruption;
    else if (equalIgnoringCase(interruptionString, &quot;SystemSleep&quot;))
        interruption = PlatformMediaSession::SystemSleep;
    else if (equalIgnoringCase(interruptionString, &quot;EnteringBackground&quot;))
        interruption = PlatformMediaSession::EnteringBackground;
    else {
        ec = INVALID_ACCESS_ERR;
        return;
    }

    PlatformMediaSessionManager::sharedManager().beginInterruption(PlatformMediaSession::SystemInterruption);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130131</commentid>
    <comment_count>11</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-10-01 18:36:38 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #7)
&gt; &gt; Committed r190434: &lt;http://trac.webkit.org/changeset/190434&gt;
&gt; 
&gt; Is there any reason we don&apos;t use *interruption* local variable in
&gt; beginInterruption() ?
&gt; 
&gt; 
&gt; void Internals::beginMediaSessionInterruption(const String&amp;
&gt; interruptionString, ExceptionCode&amp; ec)
&gt; {
&gt;     PlatformMediaSession::InterruptionType interruption =
&gt; PlatformMediaSession::SystemInterruption;
&gt; 
&gt;     if (equalIgnoringCase(interruptionString, &quot;System&quot;))
&gt;         interruption = PlatformMediaSession::SystemInterruption;
&gt;     else if (equalIgnoringCase(interruptionString, &quot;SystemSleep&quot;))
&gt;         interruption = PlatformMediaSession::SystemSleep;
&gt;     else if (equalIgnoringCase(interruptionString, &quot;EnteringBackground&quot;))
&gt;         interruption = PlatformMediaSession::EnteringBackground;
&gt;     else {
&gt;         ec = INVALID_ACCESS_ERR;
&gt;         return;
&gt;     }
&gt; 
&gt;    
&gt; PlatformMediaSessionManager::sharedManager().
&gt; beginInterruption(PlatformMediaSession::SystemInterruption);
&gt; }


I upload a fix to Bug 148315. If there is any reason we don&apos;t use *interruption* variable, please let me know.

https://bugs.webkit.org/show_bug.cgi?id=148315</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130132</commentid>
    <comment_count>12</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-10-01 18:38:40 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; Committed r190434: &lt;http://trac.webkit.org/changeset/190434&gt;
&gt; &gt; 
&gt; &gt; Is there any reason we don&apos;t use *interruption* local variable in
&gt; &gt; beginInterruption() ?
&gt; &gt; 
&gt; &gt; 
&gt; &gt; void Internals::beginMediaSessionInterruption(const String&amp;
&gt; &gt; interruptionString, ExceptionCode&amp; ec)
&gt; &gt; {
&gt; &gt;     PlatformMediaSession::InterruptionType interruption =
&gt; &gt; PlatformMediaSession::SystemInterruption;
&gt; &gt; 
&gt; &gt;     if (equalIgnoringCase(interruptionString, &quot;System&quot;))
&gt; &gt;         interruption = PlatformMediaSession::SystemInterruption;
&gt; &gt;     else if (equalIgnoringCase(interruptionString, &quot;SystemSleep&quot;))
&gt; &gt;         interruption = PlatformMediaSession::SystemSleep;
&gt; &gt;     else if (equalIgnoringCase(interruptionString, &quot;EnteringBackground&quot;))
&gt; &gt;         interruption = PlatformMediaSession::EnteringBackground;
&gt; &gt;     else {
&gt; &gt;         ec = INVALID_ACCESS_ERR;
&gt; &gt;         return;
&gt; &gt;     }
&gt; &gt; 
&gt; &gt;    
&gt; &gt; PlatformMediaSessionManager::sharedManager().
&gt; &gt; beginInterruption(PlatformMediaSession::SystemInterruption);
&gt; &gt; }
&gt; 
&gt; 
&gt; I upload a fix to Bug 148315. If there is any reason we don&apos;t use
&gt; *interruption* variable, please let me know.
&gt; 
&gt; https://bugs.webkit.org/show_bug.cgi?id=148315

Oops, r190447 already fixed it. - http://trac.webkit.org/changeset/190447</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130145</commentid>
    <comment_count>13</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-10-01 20:37:57 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #7)
&gt; &gt; Committed r190434: &lt;http://trac.webkit.org/changeset/190434&gt;
&gt; 
&gt; Is there any reason we don&apos;t use *interruption* local variable in
&gt; beginInterruption() ?

It&apos;s just an oversight. The initial test case always used System, so it was missed earlier today. I had a note to myself to fix it tomorrow, but you&apos;ve beat me to it! :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259637</attachid>
            <date>2015-08-21 11:59:20 -0700</date>
            <delta_ts>2015-08-24 10:20:58 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>suspend_patch_1.txt</filename>
            <type>text/plain</type>
            <size>13243</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4ODc2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE1LTA4LTIxICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFpclBsYXkg
c2hvdWxkIG5vdCBzdG9wIHdoZW4gdGhlIHNjcmVlbiBsb2NrcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MzE1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oOiBvdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uIC0+IAorICAgICAg
ICAgIHNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24uCisKKyAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c3VzcGVuZFBsYXliYWNrKTogRml4IGEgdHlwbyBpbiB0aGUgbG9nZ2luZy4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1heVJlc3VtZVBsYXliYWNrKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzaG91bGRPdmVycmlk
ZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKTogUmVuYW1lZCBmcm9tCisgICAgICAgICAg
b3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6Om92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24p
OiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c3RhdGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmludGVycnVwdGlvbk5hbWUpOiBO
ZXcsIGxvZyB0aGUgbmFtZSBvZiB0aGUgaW50ZXJydXB0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKTogTG9nIHRoZSBpbnRlcnJ1
cHRpb24gdHlwZS4gRG9uJ3QKKyAgICAgICAgICBpbmNyZW1lbnQgdGhlIGludGVycnVwdGlvbiBj
b3VudGVyIGlmIHdlIGFyZSBnb2luZyB0byBpZ25vcmUgaXQuIEluY29ycG9yYXRlIGxvZ2ljCisg
ICAgICAgICAgZnJvbSBkb0ludGVycnVwdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpkb0ludGVycnVwdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c2hvdWxkRG9JbnRlcnJ1cHRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmZvcmNlSW50ZXJydXB0aW9u
KTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNz
aW9uLmg6IEFkZCBTdXNwZW5kZWRVbmRlckxvY2sgaW50ZXJydXB0aW9uIHR5cGUuCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6YXBwbGljYXRpb25EaWRF
bnRlckJhY2tncm91bmQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9z
L01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3Mv
TWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1M6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKTogQ2FsbCBiZWdpbklu
dGVycnVwdGlvbgorICAgICAgICAgIHdoZW4gYXBwcm9wcmlhdGUuCisKIDIwMTUtMDgtMjEgIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBkaXNwYXRjaF9ncm91
cF90IG9iamVjdHMgbWF5IG5vdCBiZSByZXRhaW5lZCBwcm9wZXJseSB3aGVuIG5vdCBiYWNrZWQg
YnkgT2JqZWN0aXZlLUMgb2JqZWN0cyB1bmRlciBnYXJiYWdlIGNvbGxlY3Rpb24KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAkocmV2aXNp
b24gMTg4Njg1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIyLDcgKzMyMiw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBj
YW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5k
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIG92ZXJyaWRl
IHsgfQotICAgIHZpcnR1YWwgYm9vbCBvdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0
KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODg2ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzI4LDE0ICs2MzM0LDE0IEBA
IHNpemVfdCBIVE1MTWVkaWFFbGVtZW50OjptYXhpbXVtU291cmNlQnUKIAogdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzdXNwZW5kUGxheWJhY2soKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRp
YUVsZW1lbnQ6OnBhdXNlUGxheWJhY2soJXApIC0gcGF1c2VkID0gJXMiLCB0aGlzLCBib29sU3Ry
aW5nKHBhdXNlZCgpKSk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c3VzcGVu
ZFBsYXliYWNrKCVwKSAtIHBhdXNlZCA9ICVzIiwgdGhpcywgYm9vbFN0cmluZyhwYXVzZWQoKSkp
OwogICAgIGlmICghcGF1c2VkKCkpCiAgICAgICAgIHBhdXNlKCk7CiB9CiAKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpCiB7Ci0gICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lUGxheWJhY2soJXApIC0gcGF1c2Vk
ID0gJXMiLCB0aGlzLCBib29sU3RyaW5nKHBhdXNlZCgpKSk7CisgICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudDo6bWF5UmVzdW1lUGxheWJhY2soJXApIC0gcGF1c2VkID0gJXMiLCB0aGlz
LCBib29sU3RyaW5nKHBhdXNlZCgpKSk7CiAgICAgaWYgKHBhdXNlZCgpICYmIHNob3VsZFJlc3Vt
ZSkKICAgICAgICAgcGxheSgpOwogfQpAQCAtNjM3Nyw4ICs2MzgzLDExIEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6ZGlkUmVjZWl2ZVJlbW90ZUMKICAgICB9CiB9CiAKLWJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6b3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbigpIGNvbnN0Citi
b29sIEhUTUxNZWRpYUVsZW1lbnQ6OnNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVz
dHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUgdHlwZSkgY29u
c3QKIHsKKyAgICBpZiAodHlwZSAhPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdCYWNr
Z3JvdW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQogICAgIGlmIChtX3BsYXllciAmJiBtX3BsYXllci0+aXNDdXJyZW50UGxh
eWJhY2tUYXJnZXRXaXJlbGVzcygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAxODg2ODUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMx
LDcgKzczMSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBkb3VibGUgbWVkaWFTZXNzaW9uQ3Vy
cmVudFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjdXJyZW50VGltZSgpOyB9CiAgICAg
dmlydHVhbCBib29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1vdGVD
b250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRU
eXBlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgb3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJh
Y2tSZXN0cmljdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRP
dmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpJbnRlcnJ1cHRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBw
YWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCShy
ZXZpc2lvbiAxODg2ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE3ICszOSwzMSBAQCBjb25z
dCBkb3VibGUga0NsaWVudERhdGFCdWZmZXJpbmdUaW1lclRoCiAjaWYgIUxPR19ESVNBQkxFRAog
c3RhdGljIGNvbnN0IGNoYXIqIHN0YXRlTmFtZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3RhdGUg
c3RhdGUpCiB7Ci0jZGVmaW5lIENBU0Uoc3RhdGUpIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246
OnN0YXRlOiByZXR1cm4gI3N0YXRlCisjZGVmaW5lIFNUQVRFX0NBU0Uoc3RhdGUpIGNhc2UgUGxh
dGZvcm1NZWRpYVNlc3Npb246OnN0YXRlOiByZXR1cm4gI3N0YXRlCiAgICAgc3dpdGNoIChzdGF0
ZSkgewotICAgIENBU0UoSWRsZSk7Ci0gICAgQ0FTRShQbGF5aW5nKTsKLSAgICBDQVNFKFBhdXNl
ZCk7Ci0gICAgQ0FTRShJbnRlcnJ1cHRlZCk7CisgICAgU1RBVEVfQ0FTRShJZGxlKTsKKyAgICBT
VEFURV9DQVNFKFBsYXlpbmcpOworICAgIFNUQVRFX0NBU0UoUGF1c2VkKTsKKyAgICBTVEFURV9D
QVNFKEludGVycnVwdGVkKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gIiI7CiB9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBpbnRlcnJ1cHRpb25OYW1lKFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlIHR5cGUpCit7CisjZGVmaW5lIElO
VEVSUlVQVElPTl9DQVNFKHR5cGUpIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OnR5cGU6IHJl
dHVybiAjdHlwZQorICAgIHN3aXRjaCAodHlwZSkgeworICAgIElOVEVSUlVQVElPTl9DQVNFKFN5
c3RlbVNsZWVwKTsKKyAgICBJTlRFUlJVUFRJT05fQ0FTRShFbnRlcmluZ0JhY2tncm91bmQpOwor
ICAgIElOVEVSUlVQVElPTl9DQVNFKFN5c3RlbUludGVycnVwdGlvbik7CisgICAgSU5URVJSVVBU
SU9OX0NBU0UoU3VzcGVuZGVkVW5kZXJMb2NrKTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuICIiOworfQogI2VuZGlmCiAKIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4gUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZShQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQpAQCAtNzksNDcgKzkzLDIxIEBAIHZvaWQg
UGxhdGZvcm1NZWRpYVNlc3Npb246OnNldFN0YXRlKFN0YXQKICAgICBtX3N0YXRlID0gc3RhdGU7
CiB9CiAKLXZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmRvSW50ZXJydXB0aW9uKCkKLXsKLSAg
ICBtX3N0YXRlVG9SZXN0b3JlID0gc3RhdGUoKTsKLSAgICBtX25vdGlmeWluZ0NsaWVudCA9IHRy
dWU7Ci0gICAgc2V0U3RhdGUoSW50ZXJydXB0ZWQpOwotICAgIGNsaWVudCgpLnN1c3BlbmRQbGF5
YmFjaygpOwotICAgIG1fbm90aWZ5aW5nQ2xpZW50ID0gZmFsc2U7Ci19Ci0KLWJvb2wgUGxhdGZv
cm1NZWRpYVNlc3Npb246OnNob3VsZERvSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUgdHlw
ZSkKLXsKLSAgICByZXR1cm4gdHlwZSAhPSBFbnRlcmluZ0JhY2tncm91bmQgfHwgIWNsaWVudCgp
Lm92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oKTsKLX0KLQogdm9pZCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSB0eXBl
KQogewotICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVw
dGlvbiglcCksIHN0YXRlID0gJXMsIGludGVycnVwdGlvbiBjb3VudCA9ICVpIiwgdGhpcywgc3Rh
dGVOYW1lKG1fc3RhdGUpLCBtX2ludGVycnVwdGlvbkNvdW50KTsKKyAgICBMT0coTWVkaWEsICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oJXApLCBzdGF0ZSA9ICVzLCBp
bnRlcnJ1cHRpb24gdHlwZSA9ICVzLCBpbnRlcnJ1cHRpb24gY291bnQgPSAlaSIsIHRoaXMsIHN0
YXRlTmFtZShtX3N0YXRlKSwgaW50ZXJydXB0aW9uTmFtZSh0eXBlKSwgbV9pbnRlcnJ1cHRpb25D
b3VudCk7CiAKLSAgICBpZiAoKyttX2ludGVycnVwdGlvbkNvdW50ID4gMSB8fCAhc2hvdWxkRG9J
bnRlcnJ1cHRpb24odHlwZSkpCisgICAgaWYgKGNsaWVudCgpLnNob3VsZE92ZXJyaWRlQmFja2dy
b3VuZFBsYXliYWNrUmVzdHJpY3Rpb24odHlwZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRv
SW50ZXJydXB0aW9uKCk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmZvcmNlSW50
ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUgdHlwZSkKLXsKLSAgICBMT0coTWVkaWEsICJQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6Zm9yY2VJbnRlcnJ1cHRpb24oJXApLCBzdGF0ZSA9ICVzLCBpbnRl
cnJ1cHRpb24gY291bnQgPSAlaSIsIHRoaXMsIHN0YXRlTmFtZShtX3N0YXRlKSwgbV9pbnRlcnJ1
cHRpb25Db3VudCk7Ci0KLSAgICAvLyBiZWdpbkludGVycnVwdGlvbigpIG11c3QgaGF2ZSBiZWVu
IGNhbGxlZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgotICAgIGlmICghbV9pbnRlcnJ1
cHRpb25Db3VudCkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoKytt
X2ludGVycnVwdGlvbkNvdW50ID4gMSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIC8v
IFRoZSBwdXJwb3NlIG9mIHRoaXMgZnVuY3Rpb24gaXMgdG8gb3ZlcnJpZGUgdGhlIGRlY2lzaW9u
IHdoaWNoIHdhcyBtYWRlIGJ5Ci0gICAgLy8gYmVnaW5JbnRlcnJ1cHRpb24oKS4gSWYgaXQgd2Fz
IGRlY2lkZWQgdG8gaW50ZXJydXB0IHRoZSBtZWRpYSBzZXNzaW9uIHRoZXJlLAotICAgIC8vIHRo
ZW4gbm90aGluZyBzaG91bGQgYmUgZG9uZSBoZXJlLgotICAgIGlmIChzaG91bGREb0ludGVycnVw
dGlvbih0eXBlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZG9JbnRlcnJ1cHRpb24oKTsKKyAg
ICBtX3N0YXRlVG9SZXN0b3JlID0gc3RhdGUoKTsKKyAgICBtX25vdGlmeWluZ0NsaWVudCA9IHRy
dWU7CisgICAgc2V0U3RhdGUoSW50ZXJydXB0ZWQpOworICAgIGNsaWVudCgpLnN1c3BlbmRQbGF5
YmFjaygpOworICAgIG1fbm90aWZ5aW5nQ2xpZW50ID0gZmFsc2U7CiB9CiAKIHZvaWQgUGxhdGZv
cm1NZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbihFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFn
cykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNz
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb24uaAkocmV2aXNpb24gMTg4Njg1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzQs
MTYgKzc0LDE0IEBAIHB1YmxpYzoKICAgICAgICAgU3lzdGVtU2xlZXAsCiAgICAgICAgIEVudGVy
aW5nQmFja2dyb3VuZCwKICAgICAgICAgU3lzdGVtSW50ZXJydXB0aW9uLAorICAgICAgICBTdXNw
ZW5kZWRVbmRlckxvY2ssCiAgICAgfTsKICAgICBlbnVtIEVuZEludGVycnVwdGlvbkZsYWdzIHsK
ICAgICAgICAgTm9GbGFncyA9IDAsCiAgICAgICAgIE1heVJlc3VtZVBsYXlpbmcgPSAxIDw8IDAs
CiAgICAgfTsKIAotICAgIHZvaWQgZG9JbnRlcnJ1cHRpb24oKTsKLSAgICBib29sIHNob3VsZERv
SW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUpOwogICAgIHZvaWQgYmVnaW5JbnRlcnJ1cHRp
b24oSW50ZXJydXB0aW9uVHlwZSk7Ci0gICAgdm9pZCBmb3JjZUludGVycnVwdGlvbihJbnRlcnJ1
cHRpb25UeXBlKTsKICAgICB2b2lkIGVuZEludGVycnVwdGlvbihFbmRJbnRlcnJ1cHRpb25GbGFn
cyk7CiAKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpIGNvbnN0OwpA
QCAtMTc3LDcgKzE3NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkQnVm
ZmVyRGF0YShib29sKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZWxlbWVudElzSGlkZGVuKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBvdmVycmlkZUJhY2tncm91
bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2ly
ZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgeyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDE4ODY4NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5MSwyMCArMjkxLDYgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OmFwcGxpYwogICAgIH0KIH0KIAotdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGJvb2wgaXNTdXNwZW5kZWRV
bmRlckxvY2spIGNvbnN0Ci17Ci0gICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCIpOwotCi0gICAgaWYgKCFpc1N1
c3BlbmRlZFVuZGVyTG9jaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgVmVjdG9yPFBsYXRmb3Jt
TWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOwotICAgIGZvciAoYXV0byogc2Vz
c2lvbiA6IHNlc3Npb25zKSB7Ci0gICAgICAgIGlmIChtX3Jlc3RyaWN0aW9uc1tzZXNzaW9uLT5t
ZWRpYVR5cGUoKV0gJiBCYWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZCkKLSAgICAg
ICAgICAgIHNlc3Npb24tPmZvcmNlSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpF
bnRlcmluZ0JhY2tncm91bmQpOwotICAgIH0KLX0KLQogdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpIGNvbnN0CiB7CiAgICAg
TE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjphcHBsaWNhdGlvbldpbGxF
bnRlckZvcmVncm91bmQiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCShyZXZpc2lvbiAx
ODg2ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNiBAQCBwdWJsaWM6CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJCYWNr
Z3JvdW5kKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBsaWNhdGlvbkRpZEVu
dGVyQmFja2dyb3VuZChib29sIGlzU3VzcGVuZGVkVW5kZXJMb2NrKSBjb25zdDsKIAogICAgIHZv
aWQgc3RvcEFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCopOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcEFsbE1lZGlhUGxheWJhY2tGb3JQcm9jZXNzKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdl
cklPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9N
ZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgJKHJldmlzaW9uIDE4ODY4NSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBleHRlcm5hbE91dHB1
dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpOwogICAgIHZpcnR1YWwgYm9vbCBoYXNXaXJlbGVz
c1RhcmdldHNBdmFpbGFibGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50
ZXJCYWNrZ3JvdW5kKGJvb2wgaXNTdXNwZW5kZWRVbmRlckxvY2spOwogCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9u
TWFuYWdlcklPUy5tbQkocmV2aXNpb24gMTg4Njg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI1Niw2ICsyNTYsMjEgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpleHRlcm5hbE91
dAogICAgICAgICBzZXNzaW9uLT5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5n
ZShoYXZlVGFyZ2V0cyk7CiB9CiAKK3ZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6YXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmQoYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jaykKK3sKKyAg
ICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjphcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZCIpOworCisgICAgaWYgKCFpc1N1c3BlbmRlZFVuZGVyTG9jaykKKyAgICAgICAg
cmV0dXJuOworCisgICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSB0
aGlzLT5zZXNzaW9ucygpOworICAgIGZvciAoYXV0byogc2Vzc2lvbiA6IHNlc3Npb25zKSB7Cisg
ICAgICAgIGlmIChyZXN0cmljdGlvbnMoc2Vzc2lvbi0+bWVkaWFUeXBlKCkpICYgQmFja2dyb3Vu
ZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQpCisgICAgICAgICAgICBzZXNzaW9uLT5iZWdpbklu
dGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3VzcGVuZGVkVW5kZXJMb2NrKTsKKyAg
ICB9Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBAaW1wbGVtZW50YXRpb24gV2Vi
TWVkaWFTZXNzaW9uSGVscGVyCg==
</data>
<flag name="review"
          id="284836"
          type_id="1"
          status="+"
          setter="jer.noble"
    />
          </attachment>
      

    </bug>

</bugzilla>