<?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>153089</bug_id>
          
          <creation_ts>2016-01-13 18:13:50 -0800</creation_ts>
          <short_desc>AX: Nonfunctional controls appear before every HTML5 video when using VoiceOver</short_desc>
          <delta_ts>2016-05-13 16:38:41 -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>Accessibility</component>
          <version>Safari 9</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://ghbweb.com/ios_video_issue/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>145684</dependson>
          <blocked>157692</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="James Craig">jcraig</reporter>
          <assigned_to name="Aaron Chu">aaron_chu</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1155330</commentid>
    <comment_count>0</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2016-01-13 18:13:50 -0800</bug_when>
    <thetext>1/4/16, 5:37 PM Gordon Byrnes:
Summary:
When accessing HTML5 video on web pages using VoiceOver and Safari, two elements are added before every video. One is called &quot;Show controls&quot;, and the other &quot;start playback.&quot; The &quot;show controls&quot; element seems to be nonfunctional in all cases - clicking it has no effect. The &quot;start playback&quot; button generally works on simple HTML5 &lt;video&gt; tags, but not more complicated player interfaces. For instance, on the ubiquitous YouTube iframe embed, the &quot;start playback&quot; button does nothing at all unless the video has already been played by clicking the iframe, which can only be accessed by first navigating PAST both &quot;show controls&quot; and &quot;start playback.&quot; This behavior is highly confusing.

Steps to Reproduce:
1. Turn on VoiceOver.
2. Visit a page containing simple HTML5 video elements and YouTube embedded iframes. See attached example or live version at http://ghbweb.com/ios_video_issue/.
3. Using VO + left/right arrow, navigate to the first video element.

Expected Results:
On navigating to element, the user should be able to interact with the appropriate player controls.

Actual Results:
Simple HTML &lt;video&gt; embeds:

- &quot;start playback&quot; button works largely as expected, but &quot;show controls&quot; button is nonfunctional.

YouTube iframes:

- Both &quot;start playback&quot; and &quot;show controls&quot; are entirely nonfunctional.

Version:
iOS 9.2 (13C75)

Notes:
According to comments within the script that actually generates the buttons, these two special controls were originally added as a workaround for this webkit bug 145684

Configuration:
- iPhone 6s / iPhone 5s, Safari, VoiceOver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155332</commentid>
    <comment_count>1</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2016-01-13 18:15:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/24050668&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155334</commentid>
    <comment_count>2</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2016-01-13 18:27:39 -0800</bug_when>
    <thetext>This is a regression since the fix in bug 145684 because the bogus &quot;show controls&quot; element is showing in the original HTML 5 video example, too:

http://www.w3.org/2010/05/video/mediaevents.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155339</commentid>
    <comment_count>3</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2016-01-13 18:54:32 -0800</bug_when>
    <thetext>Show controls button should only be appearing in the shadow DOM when the controls toolbar is hidden (during playback) but it&apos;s accessible at all times.
&lt;button pseudo=&quot;-webkit-media-show-controls&quot; aria-label=&quot;Show Controls&quot;&gt;&lt;/button&gt;

This appears to partially work on OS X (after initial play &quot;show controls&quot; is only shown when controls are not), but it is not hiding on iPad, and should never be displayed on iPhone (iPhone always uses native playback controls, not shadow DOM controls).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155341</commentid>
    <comment_count>4</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2016-01-13 19:20:59 -0800</bug_when>
    <thetext>Possible regression candidate is bug 148755 due to the change re: showControlsButton hidden property. The shadow DOM element no longer has the &apos;hidden&apos; DOM property (and subsequent content attr) set correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155342</commentid>
    <comment_count>5</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2016-01-13 19:25:51 -0800</bug_when>
    <thetext>Scratch that last comment. It&apos;s unlikely that r189358 from bug 148755 made it into iOS 9.2 (13C75).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186335</commentid>
    <comment_count>6</comment_count>
      <attachid>277080</attachid>
    <who name="Aaron Chu">aaron_chu</who>
    <bug_when>2016-04-22 11:28:13 -0700</bug_when>
    <thetext>Created attachment 277080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186467</commentid>
    <comment_count>7</comment_count>
      <attachid>277080</attachid>
    <who name="James Craig">jcraig</who>
    <bug_when>2016-04-22 15:30:08 -0700</bug_when>
    <thetext>Comment on attachment 277080
Patch

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

&gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:16
&gt; +    this.hasStartedPlaying = false;

See note below about isPlaying vs hasStartedPlaying.

&gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:-672
&gt; -

Avoid unnecessary whitespace-only changes.

&gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:998
&gt; +        } else {
&gt;              this.video.pause();
&gt; +        }

webkit-style: You need the closing brace from the if block, but the else block is a single line without braces. (not my pref, but webkit style guidelines)

&gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:1555
&gt; +        this.showShowControlsButton(this.isPlayable() &amp;&amp; this.isPlaying &amp;&amp; this.hasStartedPlaying);

Not clear what the difference between isPlaying and hasStartedPlaying is... Do you need both? And if so, pick a better name that more clearly indicates the difference.

&gt; Source/WebCore/Modules/mediacontrols/mediaControlsiOS.js:156
&gt; +        if (this.controls.startPlaybackButton.parentNode) {
&gt;              this.controls.startPlaybackButton.parentNode.removeChild(this.controls.startPlaybackButton);
&gt; +        } 

webkit-style: excess braces for single line.

&gt; LayoutTests/media/video-controls-show-on-kb-or-ax-event.html:17
&gt; +    
&gt; +
&gt; +

Minor nit: remove the extra whitespace-only diffs.

&gt; LayoutTests/media/video-controls-show-on-kb-or-ax-event.html:34
&gt; +       
&gt; +

Minor nit: remove the extra whitespace-only diffs.

&gt; LayoutTests/media/video-controls-show-on-kb-or-ax-event.html:37
&gt; +            //making sure we are getting the updated root.

webkit-style: Comments need to start with a capital (and end with a period like you have.)
Minor nit: &quot;making&quot; =&gt; &quot;Make&quot;

// Make sure we are getting the updated root.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187153</commentid>
    <comment_count>8</comment_count>
      <attachid>277299</attachid>
    <who name="Aaron Chu">aaron_chu</who>
    <bug_when>2016-04-25 18:02:28 -0700</bug_when>
    <thetext>Created attachment 277299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187410</commentid>
    <comment_count>9</comment_count>
      <attachid>277299</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-26 09:21:20 -0700</bug_when>
    <thetext>Comment on attachment 277299
Patch

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

I’m not giving a review+ or a review-, but I do have some comments:

I don’t think the tests cover enough cases. There are a couple interesting rules for when you are allowed to show controls and when you are not and I don’t see any test coverage for those rules.

&gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:996
&gt; +        } else 

Please don’t add trailing whitespace here.

&gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:1526
&gt; +        if (shouldShow) 
&gt; +            this.showControlsButton.focus();

I’d think we’d only want to call focus() when we transition from hidden to not hidden, not when we call show but the controls happen to already be visible. Or maybe this function is only called when it’s changing the state?

&gt; Source/WebCore/Modules/mediacontrols/mediaControlsiOS.js:154
&gt; -        if (this.controls.startPlaybackButton.parentNode)
&gt; +        if (this.controls.startPlaybackButton.parentNode) 

Please don’t check in this addition of trailing whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187596</commentid>
    <comment_count>10</comment_count>
      <attachid>277299</attachid>
    <who name="Aaron Chu">aaron_chu</who>
    <bug_when>2016-04-26 17:39:12 -0700</bug_when>
    <thetext>Comment on attachment 277299
Patch

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

I will get the rest of the changes in.

&gt;&gt; Source/WebCore/Modules/mediacontrols/mediaControlsApple.js:1526
&gt;&gt; +            this.showControlsButton.focus();
&gt; 
&gt; I’d think we’d only want to call focus() when we transition from hidden to not hidden, not when we call show but the controls happen to already be visible. Or maybe this function is only called when it’s changing the state?

This only changes when the state is changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188158</commentid>
    <comment_count>11</comment_count>
      <attachid>277599</attachid>
    <who name="Aaron Chu">aaron_chu</who>
    <bug_when>2016-04-28 00:22:42 -0700</bug_when>
    <thetext>Created attachment 277599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188160</commentid>
    <comment_count>12</comment_count>
      <attachid>277599</attachid>
    <who name="Aaron Chu">aaron_chu</who>
    <bug_when>2016-04-28 00:27:06 -0700</bug_when>
    <thetext>Comment on attachment 277599
Patch

I extended the test to not only test on &quot;mouseout&quot; while the video is playing. I also added a test for the pause state and the initial state. I could also test the natural progression of the UI behavior, but I decided against it because, by default, the toolbar disappears completely at the 5th second after the video is played, which means that testing that natural behavior would require this test to last for &gt;5 seconds. At the moment, this test should only take ~ 1 second.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189661</commentid>
    <comment_count>13</comment_count>
      <attachid>277599</attachid>
    <who name="James Craig">jcraig</who>
    <bug_when>2016-05-02 21:00:33 -0700</bug_when>
    <thetext>Comment on attachment 277599
Patch

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

Patch looks okay to me. Request final review from Dean Jackson or one of the other domain owners.

&gt; LayoutTests/media/video-controls-show-on-kb-or-ax-event.html:64
&gt; +                result.innerHTML += &apos;FAIL: &quot;Show Controls&quot; button are hidden or unavailable.&lt;br&gt;&apos;;

Minor typo: &quot;are&quot; -&gt; &quot;is&quot; (Just in case there is more feedback. No need to re-spin for this alone… Unless it would eat at you later. ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189692</commentid>
    <comment_count>14</comment_count>
      <attachid>277599</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-05-02 23:57:29 -0700</bug_when>
    <thetext>Comment on attachment 277599
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Fix to make sure the showControls button in a media player behaves correctly.

this should be the title of the bug

you can use ./Tools/Scripts/prepare-Changelog --bug=277599 to help with this

&gt; LayoutTests/ChangeLog:3
&gt; +        A Layout Test to make sure showControls Button in media player is hidden by default.

ditto

&gt; LayoutTests/media/video-controls-show-on-kb-or-ax-event.html:21
&gt; +        result.innerHTML = &quot;&quot;;

incorrect indentation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190143</commentid>
    <comment_count>15</comment_count>
      <attachid>277599</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-05-04 11:46:45 -0700</bug_when>
    <thetext>Comment on attachment 277599
Patch

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

Looks good with the notes Chris already made.

&gt; LayoutTests/media/video-controls-show-on-kb-or-ax-event.html:79
&gt; +            }, 300);
&gt; +        }, 400);

It&apos;s a shame this test now takes more than a second to run :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190257</commentid>
    <comment_count>16</comment_count>
      <attachid>278138</attachid>
    <who name="Aaron Chu">aaron_chu</who>
    <bug_when>2016-05-04 16:04:24 -0700</bug_when>
    <thetext>Created attachment 278138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190276</commentid>
    <comment_count>17</comment_count>
      <attachid>278138</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-04 17:05:09 -0700</bug_when>
    <thetext>Comment on attachment 278138
Patch

Clearing flags on attachment: 278138

Committed r200441: &lt;http://trac.webkit.org/changeset/200441&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190277</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-04 17:05:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277080</attachid>
            <date>2016-04-22 11:28:13 -0700</date>
            <delta_ts>2016-04-25 18:02:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153089-20160422112839.patch</filename>
            <type>text/plain</type>
            <size>9516</size>
            <attacher name="Aaron Chu">aaron_chu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI2NzY1OTI4MjM4MjFh
NTdmNDFjNWY5ZDU1YWU0ODg5N2IwNDM1Yy4uOWUyOGRhMjk3ZWY4ZmU0YmNmZDNlN2EzOWI0OGIw
ODlkMzA5NzkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTA0LTIyICBBYXJv
biBDaHUgIDxhYXJvbl9jaHVAYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0byBtYWtlIHN1cmUg
dGhlIHNob3dDb250cm9scyBidXR0b24gaW4gYSBtZWRpYSBwbGF5ZXIgYmVoYXZlcyBjb3JyZWN0
bHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMw
ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
OiBtZWRpYS92aWRlby1jb250cm9scy1zaG93LW9uLWtiLW9yLWF4LWV2ZW50Lmh0bWwKKworICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBwbGUuanM6CisgICAg
ICAgIChDb250cm9sbGVyKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmNyZWF0ZUNv
bnRyb2xzKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZUNvbnRyb2xzKToK
KyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZVBsYXlCdXR0b25DbGlja2VkKToK
KyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnNob3dTaG93Q29udHJvbHNCdXR0b24pOgor
ICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuc2hvd0NvbnRyb2xzKToKKyAgICAgICAgKENv
bnRyb2xsZXIucHJvdG90eXBlLmhpZGVDb250cm9scyk6CisgICAgICAgIChDb250cm9sbGVyLnBy
b3RvdHlwZS51cGRhdGVTdGF0dXNEaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc2lPUy5qczoKKyAgICAgICAgKENvbnRyb2xsZXJJ
T1MucHJvdG90eXBlLmFkZFN0YXJ0UGxheWJhY2tDb250cm9scyk6CisgICAgICAgIChDb250cm9s
bGVySU9TLnByb3RvdHlwZS5yZW1vdmVTdGFydFBsYXliYWNrQ29udHJvbHMpOgorICAgICAgICAo
Q29udHJvbGxlcklPUy5wcm90b3R5cGUuaGFuZGxlU3RhcnRQbGF5YmFja0J1dHRvblRvdWNoRW5k
KToKKyAgICAgICAgKENvbnRyb2xsZXJJT1MucHJvdG90eXBlLnNob3dDb250cm9scyk6CisKIDIw
MTYtMDQtMjAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEF0
dGVtcHQgdG8gZml4IG5vbi1JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMgYnVpbGRzIGFmdGVy
IHIxOTk3NzkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9s
cy9tZWRpYUNvbnRyb2xzQXBwbGUuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29u
dHJvbHMvbWVkaWFDb250cm9sc0FwcGxlLmpzCmluZGV4IDQzY2ZlYmMzMDJkYmEyZTU0MWIxMzI2
MWMxODE5OGZiMmUxMDNkYWQuLmUzMTRmYmJmZTg1MDgzYmQ3MTNkYjJjMzJjMGVhMWEyMzlkMzY4
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRp
YUNvbnRyb2xzQXBwbGUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL21lZGlhQ29udHJvbHNBcHBsZS5qcwpAQCAtMTMsNiArMTMsNyBAQCBmdW5jdGlvbiBDb250
cm9sbGVyKHJvb3QsIHZpZGVvLCBob3N0KQogICAgIHRoaXMuaXNMaXZlID0gZmFsc2U7CiAgICAg
dGhpcy5zdGF0dXNIaWRkZW4gPSB0cnVlOwogICAgIHRoaXMuaGFzV2lyZWxlc3NQbGF5YmFja1Rh
cmdldHMgPSBmYWxzZTsKKyAgICB0aGlzLmhhc1N0YXJ0ZWRQbGF5aW5nID0gZmFsc2U7CiAgICAg
dGhpcy5pc0xpc3RlbmluZ0ZvclBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQgPSBmYWxz
ZTsKICAgICB0aGlzLmN1cnJlbnRUYXJnZXRJc1dpcmVsZXNzID0gZmFsc2U7CiAgICAgdGhpcy53
aXJlbGVzc1BsYXliYWNrRGlzYWJsZWQgPSBmYWxzZTsKQEAgLTUxMiw3ICs1MTMsNyBAQCBDb250
cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gU2hvdyBjb250cm9scyBidXR0b24gaXMg
YW4gYWNjZXNzaWJpbGl0eSB3b3JrYXJvdW5kIHNpbmNlIHRoZSBjb250cm9scyBhcmUgbm93IHJl
bW92ZWQgZnJvbSB0aGUgRE9NLiBodHRwOi8vd2Via2l0Lm9yZy9iLzE0NTY4NAogICAgICAgICB2
YXIgc2hvd0NvbnRyb2xzQnV0dG9uID0gdGhpcy5zaG93Q29udHJvbHNCdXR0b24gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICAgICAgICAgc2hvd0NvbnRyb2xzQnV0dG9uLnNl
dEF0dHJpYnV0ZSgncHNldWRvJywgJy13ZWJraXQtbWVkaWEtc2hvdy1jb250cm9scycpOwotICAg
ICAgICBzaG93Q29udHJvbHNCdXR0b24uaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5zaG93
U2hvd0NvbnRyb2xzQnV0dG9uKGZhbHNlKTsKICAgICAgICAgc2hvd0NvbnRyb2xzQnV0dG9uLnNl
dEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRoaXMuVUlTdHJpbmcoJ1Nob3cgQ29udHJvbHMnKSk7
CiAgICAgICAgIHRoaXMubGlzdGVuRm9yKHNob3dDb250cm9sc0J1dHRvbiwgJ2NsaWNrJywgdGhp
cy5oYW5kbGVTaG93Q29udHJvbHNDbGljayk7CiAgICAgICAgIHRoaXMuYmFzZS5hcHBlbmRDaGls
ZChzaG93Q29udHJvbHNCdXR0b24pOwpAQCAtNjQ3LDkgKzY0OCwxMiBAQCBDb250cm9sbGVyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuY2xhc3NMaXN0LmFk
ZCh0aGlzLkNsYXNzTmFtZXMuc2hvdyk7CiAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVs
LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7CiAgICAgICAgICAgICB0
aGlzLnJlc2V0SGlkZUNvbnRyb2xzVGltZXIoKTsKKyAgICAgICAgICAgIHRoaXMuc2hvd1Nob3dD
b250cm9sc0J1dHRvbihmYWxzZSk7CisKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHRo
aXMuY29udHJvbHMucGFuZWwuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMuc2hvdyk7
CiAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLmNsYXNzTGlzdC5hZGQodGhpcy5DbGFz
c05hbWVzLmhpZGRlbik7CisgICAgICAgICAgICB0aGlzLnNob3dTaG93Q29udHJvbHNCdXR0b24o
dHJ1ZSk7CiAgICAgICAgIH0KICAgICB9LAogCkBAIC02NjksNyArNjczLDYgQEAgQ29udHJvbGxl
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnN0YXR1c0Rpc3BsYXku
aW5uZXJUZXh0ID0gdGhpcy5VSVN0cmluZygnTG9hZGluZycpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICB0aGlzLmNvbnRyb2xzLnN0YXR1c0Rpc3BsYXkuaW5uZXJUZXh0ID0gJyc7Ci0KICAg
ICAgICAgdGhpcy5zZXRTdGF0dXNIaWRkZW4oIXRoaXMuaXNMaXZlICYmIHRoaXMuaXNQbGF5YWJs
ZSgpKTsKICAgICB9LAogCkBAIC05ODcsMTAgKzk5MCwxMiBAQCBDb250cm9sbGVyLnByb3RvdHlw
ZSA9IHsKIAogICAgIGhhbmRsZVBsYXlCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKICAg
ICB7Ci0gICAgICAgIGlmICh0aGlzLmNhblBsYXkoKSkKKyAgICAgICAgaWYgKHRoaXMuY2FuUGxh
eSgpKSB7CisgICAgICAgICAgICB0aGlzLmhhc1N0YXJ0ZWRQbGF5aW5nID0gdHJ1ZTsKICAgICAg
ICAgICAgIHRoaXMudmlkZW8ucGxheSgpOwotICAgICAgICBlbHNlCisgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICB0aGlzLnZpZGVvLnBhdXNlKCk7CisgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfSwKIApAQCAtMTUxNSw2ICsxNTIwLDEyIEBAIENvbnRyb2xsZXIucHJv
dG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAorICAgIHNob3dTaG93Q29udHJvbHNCdXR0
b246IGZ1bmN0aW9uIChzaG91bGRTaG93KSB7CisgICAgICAgIHRoaXMuc2hvd0NvbnRyb2xzQnV0
dG9uLmhpZGRlbiA9ICFzaG91bGRTaG93OworICAgICAgICBpZiAoc2hvdWxkU2hvdykgCisgICAg
ICAgICAgICB0aGlzLnNob3dDb250cm9sc0J1dHRvbi5mb2N1cygpOworICAgIH0sCisKICAgICBz
aG93Q29udHJvbHM6IGZ1bmN0aW9uKGZvY3VzQ29udHJvbHMpCiAgICAgewogICAgICAgICB0aGlz
LnVwZGF0ZVNob3VsZExpc3RlbkZvclBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQoKTsK
QEAgLTE1MjgsNyArMTUzOSw3IEBAIENvbnRyb2xsZXIucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgaWYgKGZvY3VzQ29udHJvbHMpCiAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9scy5wbGF5
QnV0dG9uLmZvY3VzKCk7CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5zaG93Q29udHJvbHNCdXR0
b24uaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5zaG93U2hvd0NvbnRyb2xzQnV0dG9uKGZh
bHNlKTsKICAgICB9LAogCiAgICAgaGlkZUNvbnRyb2xzOiBmdW5jdGlvbigpCkBAIC0xNTQxLDcg
KzE1NTIsOCBAQCBDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5jb250cm9s
cy5wYW5lbC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5zaG93KTsKICAgICAgICAg
aWYgKHRoaXMuY29udHJvbHMucGFuZWxCYWNrZ3JvdW5kKQogICAgICAgICAgICAgdGhpcy5jb250
cm9scy5wYW5lbEJhY2tncm91bmQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMuc2hv
dyk7Ci0gICAgICAgIHRoaXMuc2hvd0NvbnRyb2xzQnV0dG9uLmhpZGRlbiA9IGZhbHNlOworICAg
ICAgICB0aGlzLnNob3dTaG93Q29udHJvbHNCdXR0b24odGhpcy5pc1BsYXlhYmxlKCkgJiYgdGhp
cy5pc1BsYXlpbmcgJiYgdGhpcy5oYXNTdGFydGVkUGxheWluZyk7CisKICAgICB9LAogCiAgICAg
c2V0TmVlZHNVcGRhdGVGb3JEaXNwbGF5ZWRXaWR0aDogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNpT1MuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc2lPUy5q
cwppbmRleCBjOTU1OGNiYTU1MDM0OTA0NDVmMzZlZjhiOTZmNTZiMGZkNzlmMTA4Li43MTU4NjY2
YmE3MTE0YjJmZGM2MWFkNmVjZGFlYWU0NjNjMjA4OTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc2lPUy5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc2lPUy5qcwpAQCAt
MTQ3LDExICsxNDcsMTMgQEAgQ29udHJvbGxlcklPUy5wcm90b3R5cGUgPSB7CiAKICAgICBhZGRT
dGFydFBsYXliYWNrQ29udHJvbHM6IGZ1bmN0aW9uKCkgewogICAgICAgICB0aGlzLmJhc2UuYXBw
ZW5kQ2hpbGQodGhpcy5jb250cm9scy5zdGFydFBsYXliYWNrQnV0dG9uKTsKKyAgICAgICAgdGhp
cy5zaG93U2hvd0NvbnRyb2xzQnV0dG9uKGZhbHNlKTsKICAgICB9LAogCiAgICAgcmVtb3ZlU3Rh
cnRQbGF5YmFja0NvbnRyb2xzOiBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHRoaXMuY29udHJv
bHMuc3RhcnRQbGF5YmFja0J1dHRvbi5wYXJlbnROb2RlKQorICAgICAgICBpZiAodGhpcy5jb250
cm9scy5zdGFydFBsYXliYWNrQnV0dG9uLnBhcmVudE5vZGUpIHsKICAgICAgICAgICAgIHRoaXMu
Y29udHJvbHMuc3RhcnRQbGF5YmFja0J1dHRvbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMu
Y29udHJvbHMuc3RhcnRQbGF5YmFja0J1dHRvbik7CisgICAgICAgIH0gCiAgICAgfSwKIAogICAg
IHJlY29ubmVjdENvbnRyb2xzOiBmdW5jdGlvbigpCkBAIC00NDEsNiArNDQzLDcgQEAgQ29udHJv
bGxlcklPUy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAg
ICB0aGlzLnZpZGVvLnBsYXkoKTsKKyAgICAgICAgdGhpcy5oYXNTdGFydGVkUGxheWluZyA9IHRy
dWU7CiAgICAgICAgIHRoaXMudXBkYXRlQ29udHJvbHMoKTsKIAogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTUyMiw2ICs1MjUsNyBAQCBDb250cm9sbGVySU9TLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgaWYgKHRoaXMuc2hvdWxkSGF2ZUNvbnRyb2xzKCkgJiYgIXRoaXMuY29udHJvbHMucGFuZWxD
b250YWluZXIucGFyZW50RWxlbWVudCkgewogICAgICAgICAgICAgdGhpcy5iYXNlLmFwcGVuZENo
aWxkKHRoaXMuY29udHJvbHMuaW5saW5lUGxheWJhY2tQbGFjZWhvbGRlcik7CiAgICAgICAgICAg
ICB0aGlzLmJhc2UuYXBwZW5kQ2hpbGQodGhpcy5jb250cm9scy5wYW5lbENvbnRhaW5lcik7Cisg
ICAgICAgICAgICB0aGlzLnNob3dTaG93Q29udHJvbHNCdXR0b24oZmFsc2UpOwogICAgICAgICB9
CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGY4ZTY2ZThhZWVkMmRhZGEyZDNmYWU5NzkwODI1ODliY2EzOGM3
OTUuLmI2NTEyODM2YzM1YzIwNzg4OGMxY2I3MDNhNGU3ZDJjODEwZTAzOTMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxNi0wNC0yMiAgQWFyb24gQ2h1ICA8YWFyb25fY2h1QGFwcGxlLmNvbT4K
KworICAgICAgICBBIExheW91dCBUZXN0IHRvIG1ha2Ugc3VyZSBzaG93Q29udHJvbHMgQnV0dG9u
IGluIG1lZGlhIHBsYXllciBpcyBoaWRkZW4gYnkgZGVmYXVsdC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzA4OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvdmlkZW8tY29udHJvbHMtc2hv
dy1vbi1rYi1vci1heC1ldmVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogbWVkaWEvdmlkZW8t
Y29udHJvbHMtc2hvdy1vbi1rYi1vci1heC1ldmVudC5odG1sOgorCiAyMDE2LTA0LTIwICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBNb2Rlcm4gSURCIChXb3Jr
ZXJzKTogRW5hYmxlIElOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUyBjb21waWxlIHRpbWUgZmxh
ZywgYnV0IGRpc2FibGVkIGluIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1zaG93LW9uLWtiLW9yLWF4LWV2ZW50LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXNob3ctb24ta2It
b3ItYXgtZXZlbnQtZXhwZWN0ZWQudHh0CmluZGV4IDE0NDZiMDBmYzhhMDgxM2Q1OTNiMmZmMTM4
ZTk4Mjk0ZmM2Yzc4ZjMuLjlkYTQ2MjhlNzFhODQ3YmY0OTQ2NDNmYmM2NWQxM2IxODM3Y2YzNGEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXNob3ctb24ta2It
b3ItYXgtZXZlbnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNv
bnRyb2xzLXNob3ctb24ta2Itb3ItYXgtZXZlbnQtZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNyBA
QAogVGhpcyB0ZXN0cyB0aGF0LCBhZnRlciB0aGUgdmlkZW8gY29udHJvbHMgZmFkZSBvdXQsIHRo
ZXkgY2FuIGJlIHNob3duIHdoZW4gVm9pY2VPdmVyIG9yIGEga2V5Ym9hcmQgdXNlciBjbGlja3Mg
dGhlIGhpZGRlbiAiU2hvdyBDb250cm9scyIgYnV0dG9uLgogCiBQQVNTCitQQVNTCiAKIAogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1zaG93LW9uLWtiLW9y
LWF4LWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1zaG93LW9u
LWtiLW9yLWF4LWV2ZW50Lmh0bWwKaW5kZXggZmUxNDkwYmY4ZWYzMDZmNzMxZjNmYzdhN2IxZjRj
MzdmMTUxODRkOS4uYmM5MmU0NTZlOGJjYzA0YTk0MTBlOWM1Y2UyMWRiMjBlZDQ5ZWZlOCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtc2hvdy1vbi1rYi1vci1h
eC1ldmVudC5odG1sCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXNob3ct
b24ta2Itb3ItYXgtZXZlbnQuaHRtbApAQCAtMTIsMTggKzEyLDMwIEBACiAgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIH0KIAorICAgIAorCisKICAgICBmdW5jdGlvbiBwbGF5
aW5nKCkgewogCisgICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0Iik7CisgICAgICAgIAorICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIiI7CisgICAg
ICAgIC8vSW5pdGlhbGx5LCB0aGUgc2hvd0NvbnRyb2xzIEJ1dHRvbiBzaG91bGQgYmUgaGlkZGVu
LgorICAgICAgICB2YXIgcm9vdCA9IGludGVybmFscy5zaGFkb3dSb290KGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ2aWRlbyIpKTsKKyAgICAgICAgCisgICAgICAgIHZhciBidXR0b24gPSByb290
LmZpcnN0Q2hpbGQucXVlcnlTZWxlY3RvcignYnV0dG9uJyk7CisKKyAgICAgICAgcmVzdWx0Lmlu
bmVySFRNTCArPSAoYnV0dG9uLmhpZGRlbik/ICdQQVNTPGJyPic6ICdGQUlMOiAiU2hvdyBDb250
cm9scyIgYnV0dG9uIGlzIG5vdCBoaWRkZW4gaW5pdGlhbGx5Ljxicj4nOworCiAgICAgICAgIC8v
IE1vdXNlIG92ZXIgdGhlIHZpZGVvIHRoZW4gbW91c2Ugb3V0IHRvIGhpZGUgY29udHJvbHMgbW9y
ZSBxdWlja2x5LgogICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxMDAsMTAwKTsKICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMSwxKTsKKyAgICAgICAKKwogCiAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwotICAgICAgICAgICAgcmVzdWx0LmlubmVySFRN
TCA9ICIiOwotICAgICAgICAgICAgdmFyIHJvb3QgPSBpbnRlcm5hbHMuc2hhZG93Um9vdChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKSkKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
dmFyIGJ1dHRvbiA9IHJvb3QuZmlyc3RDaGlsZC5xdWVyeVNlbGVjdG9yKCdidXR0b24nKTsKKyAg
ICAgICAgICAgIC8vbWFraW5nIHN1cmUgd2UgYXJlIGdldHRpbmcgdGhlIHVwZGF0ZWQgcm9vdC4K
KyAgICAgICAgICAgIHJvb3QgPSBpbnRlcm5hbHMuc2hhZG93Um9vdChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidmlkZW8iKSk7CiAgICAgICAgICAgICBpZiAoYnV0dG9uKSB7CiAgICAgICAgICAg
ICAgICAgYnV0dG9uLmZvY3VzKCk7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93
bignICcpOyAvLyBVc2Uga2V5Ym9hcmQgdG8gcHJlc3MgdGhlIHNlbGVjdGVkIGJ1dHRvbi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277299</attachid>
            <date>2016-04-25 18:02:28 -0700</date>
            <delta_ts>2016-04-28 00:22:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153089-20160425180256.patch</filename>
            <type>text/plain</type>
            <size>9825</size>
            <attacher name="Aaron Chu">aaron_chu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjYyNDNiNmYzMTE1M2Ix
ZjZkNGE5ZTZkZmNiYTc2MjYzNThiNzU0Yi4uYTQyMTA2M2IxMDE1YTllZmI3MmRlNzBkM2Y4YzQz
OWUyYWUzNzk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTA0LTI1ICBBYXJv
biBDaHUgIDxhYXJvbl9jaHVAYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0byBtYWtlIHN1cmUg
dGhlIHNob3dDb250cm9scyBidXR0b24gaW4gYSBtZWRpYSBwbGF5ZXIgYmVoYXZlcyBjb3JyZWN0
bHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMw
ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
OiBtZWRpYS92aWRlby1jb250cm9scy1zaG93LW9uLWtiLW9yLWF4LWV2ZW50Lmh0bWwKKworICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBwbGUuanM6CisgICAg
ICAgIChDb250cm9sbGVyKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmNyZWF0ZUNv
bnRyb2xzKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZUNvbnRyb2xzKToK
KyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZVBsYXlCdXR0b25DbGlja2VkKToK
KyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnNldFBsYXlpbmcpOgorICAgICAgICAoQ29u
dHJvbGxlci5wcm90b3R5cGUuc2hvd1Nob3dDb250cm9sc0J1dHRvbik6CisgICAgICAgIChDb250
cm9sbGVyLnByb3RvdHlwZS5zaG93Q29udHJvbHMpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90
b3R5cGUuaGlkZUNvbnRyb2xzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMvbWVk
aWFDb250cm9sc2lPUy5qczoKKyAgICAgICAgKENvbnRyb2xsZXJJT1MucHJvdG90eXBlLmFkZFN0
YXJ0UGxheWJhY2tDb250cm9scyk6CisgICAgICAgIChDb250cm9sbGVySU9TLnByb3RvdHlwZS5y
ZW1vdmVTdGFydFBsYXliYWNrQ29udHJvbHMpOgorICAgICAgICAoQ29udHJvbGxlcklPUy5wcm90
b3R5cGUuaGFuZGxlU3RhcnRQbGF5YmFja0J1dHRvblRvdWNoRW5kKToKKyAgICAgICAgKENvbnRy
b2xsZXJJT1MucHJvdG90eXBlLnNob3dDb250cm9scyk6CisKIDIwMTYtMDQtMjUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaCB1bmRlciBNZW1vcnlDYWNo
ZTo6cmVtb3ZlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250
cm9scy9tZWRpYUNvbnRyb2xzQXBwbGUuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
Y29udHJvbHMvbWVkaWFDb250cm9sc0FwcGxlLmpzCmluZGV4IDQzY2ZlYmMzMDJkYmEyZTU0MWIx
MzI2MWMxODE5OGZiMmUxMDNkYWQuLmY2YzM5MzIwMmUxNjE3OWM3NjEwY2UwMzJmNGJkZDQzZjdl
MDUxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9t
ZWRpYUNvbnRyb2xzQXBwbGUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNv
bnRyb2xzL21lZGlhQ29udHJvbHNBcHBsZS5qcwpAQCAtMTMsNiArMTMsNyBAQCBmdW5jdGlvbiBD
b250cm9sbGVyKHJvb3QsIHZpZGVvLCBob3N0KQogICAgIHRoaXMuaXNMaXZlID0gZmFsc2U7CiAg
ICAgdGhpcy5zdGF0dXNIaWRkZW4gPSB0cnVlOwogICAgIHRoaXMuaGFzV2lyZWxlc3NQbGF5YmFj
a1RhcmdldHMgPSBmYWxzZTsKKyAgICB0aGlzLmNhblRvZ2dsZVNob3dDb250cm9sc0J1dHRvbiA9
IGZhbHNlOwogICAgIHRoaXMuaXNMaXN0ZW5pbmdGb3JQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUV2ZW50ID0gZmFsc2U7CiAgICAgdGhpcy5jdXJyZW50VGFyZ2V0SXNXaXJlbGVzcyA9IGZhbHNl
OwogICAgIHRoaXMud2lyZWxlc3NQbGF5YmFja0Rpc2FibGVkID0gZmFsc2U7CkBAIC01MTIsNyAr
NTEzLDcgQEAgQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIFNob3cgY29udHJv
bHMgYnV0dG9uIGlzIGFuIGFjY2Vzc2liaWxpdHkgd29ya2Fyb3VuZCBzaW5jZSB0aGUgY29udHJv
bHMgYXJlIG5vdyByZW1vdmVkIGZyb20gdGhlIERPTS4gaHR0cDovL3dlYmtpdC5vcmcvYi8xNDU2
ODQKICAgICAgICAgdmFyIHNob3dDb250cm9sc0J1dHRvbiA9IHRoaXMuc2hvd0NvbnRyb2xzQnV0
dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgICAgICAgIHNob3dDb250
cm9sc0J1dHRvbi5zZXRBdHRyaWJ1dGUoJ3BzZXVkbycsICctd2Via2l0LW1lZGlhLXNob3ctY29u
dHJvbHMnKTsKLSAgICAgICAgc2hvd0NvbnRyb2xzQnV0dG9uLmhpZGRlbiA9IHRydWU7CisgICAg
ICAgIHRoaXMuc2hvd1Nob3dDb250cm9sc0J1dHRvbihmYWxzZSk7CiAgICAgICAgIHNob3dDb250
cm9sc0J1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCB0aGlzLlVJU3RyaW5nKCdTaG93
IENvbnRyb2xzJykpOwogICAgICAgICB0aGlzLmxpc3RlbkZvcihzaG93Q29udHJvbHNCdXR0b24s
ICdjbGljaycsIHRoaXMuaGFuZGxlU2hvd0NvbnRyb2xzQ2xpY2spOwogICAgICAgICB0aGlzLmJh
c2UuYXBwZW5kQ2hpbGQoc2hvd0NvbnRyb2xzQnV0dG9uKTsKQEAgLTY0Nyw5ICs2NDgsMTEgQEAg
Q29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVs
LmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLnNob3cpOwogICAgICAgICAgICAgdGhpcy5j
b250cm9scy5wYW5lbC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOwog
ICAgICAgICAgICAgdGhpcy5yZXNldEhpZGVDb250cm9sc1RpbWVyKCk7CisgICAgICAgICAgICB0
aGlzLnNob3dTaG93Q29udHJvbHNCdXR0b24oZmFsc2UpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NO
YW1lcy5zaG93KTsKICAgICAgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuY2xhc3NMaXN0LmFk
ZCh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKKyAgICAgICAgICAgIHRoaXMuc2hvd1Nob3dDb250
cm9sc0J1dHRvbih0cnVlKTsKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTk4Nyw5ICs5OTAsMTAg
QEAgQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAKICAgICBoYW5kbGVQbGF5QnV0dG9uQ2xpY2tl
ZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBpZiAodGhpcy5jYW5QbGF5KCkpCisg
ICAgICAgIGlmICh0aGlzLmNhblBsYXkoKSkgeworICAgICAgICAgICAgdGhpcy5jYW5Ub2dnbGVT
aG93Q29udHJvbHNCdXR0b24gPSB0cnVlOwogICAgICAgICAgICAgdGhpcy52aWRlby5wbGF5KCk7
Ci0gICAgICAgIGVsc2UKKyAgICAgICAgfSBlbHNlIAogICAgICAgICAgICAgdGhpcy52aWRlby5w
YXVzZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LApAQCAtMTQ5Niw2ICsxNTAwLDcg
QEAgQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnBs
YXlCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMucGF1c2VkKTsKICAgICAg
ICAgICAgIHRoaXMuY29udHJvbHMucGxheUJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwn
LCB0aGlzLlVJU3RyaW5nKCdQYXVzZScpKTsKICAgICAgICAgICAgIHRoaXMucmVzZXRIaWRlQ29u
dHJvbHNUaW1lcigpOworICAgICAgICAgICAgdGhpcy5jYW5Ub2dnbGVTaG93Q29udHJvbHNCdXR0
b24gPSB0cnVlOwogICAgICAgICB9CiAgICAgfSwKIApAQCAtMTUxNSw2ICsxNTIwLDEyIEBAIENv
bnRyb2xsZXIucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAorICAgIHNob3dTaG93
Q29udHJvbHNCdXR0b246IGZ1bmN0aW9uIChzaG91bGRTaG93KSB7CisgICAgICAgIHRoaXMuc2hv
d0NvbnRyb2xzQnV0dG9uLmhpZGRlbiA9ICFzaG91bGRTaG93OworICAgICAgICBpZiAoc2hvdWxk
U2hvdykgCisgICAgICAgICAgICB0aGlzLnNob3dDb250cm9sc0J1dHRvbi5mb2N1cygpOworICAg
IH0sCisKICAgICBzaG93Q29udHJvbHM6IGZ1bmN0aW9uKGZvY3VzQ29udHJvbHMpCiAgICAgewog
ICAgICAgICB0aGlzLnVwZGF0ZVNob3VsZExpc3RlbkZvclBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5RXZlbnQoKTsKQEAgLTE1MjgsNyArMTUzOSw3IEBAIENvbnRyb2xsZXIucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgaWYgKGZvY3VzQ29udHJvbHMpCiAgICAgICAgICAgICAgICAgdGhpcy5j
b250cm9scy5wbGF5QnV0dG9uLmZvY3VzKCk7CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5zaG93
Q29udHJvbHNCdXR0b24uaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5zaG93U2hvd0NvbnRy
b2xzQnV0dG9uKGZhbHNlKTsKICAgICB9LAogCiAgICAgaGlkZUNvbnRyb2xzOiBmdW5jdGlvbigp
CkBAIC0xNTQxLDcgKzE1NTIsNyBAQCBDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5jb250cm9scy5wYW5lbC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5zaG93
KTsKICAgICAgICAgaWYgKHRoaXMuY29udHJvbHMucGFuZWxCYWNrZ3JvdW5kKQogICAgICAgICAg
ICAgdGhpcy5jb250cm9scy5wYW5lbEJhY2tncm91bmQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNs
YXNzTmFtZXMuc2hvdyk7Ci0gICAgICAgIHRoaXMuc2hvd0NvbnRyb2xzQnV0dG9uLmhpZGRlbiA9
IGZhbHNlOworICAgICAgICB0aGlzLnNob3dTaG93Q29udHJvbHNCdXR0b24odGhpcy5pc1BsYXlh
YmxlKCkgJiYgdGhpcy5pc1BsYXlpbmcgJiYgdGhpcy5jYW5Ub2dnbGVTaG93Q29udHJvbHNCdXR0
b24pOwogICAgIH0sCiAKICAgICBzZXROZWVkc1VwZGF0ZUZvckRpc3BsYXllZFdpZHRoOiBmdW5j
dGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMv
bWVkaWFDb250cm9sc2lPUy5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9s
cy9tZWRpYUNvbnRyb2xzaU9TLmpzCmluZGV4IGM5NTU4Y2JhNTUwMzQ5MDQ0NWYzNmVmOGI5NmY1
NmIwZmQ3OWYxMDguLjJmZTE2MjU2ZjFkYjdkZmIzYTZkZWZmMjBkZjFiZGU1ZjI3YTJmZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRy
b2xzaU9TLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRp
YUNvbnRyb2xzaU9TLmpzCkBAIC0xNDcsMTAgKzE0NywxMSBAQCBDb250cm9sbGVySU9TLnByb3Rv
dHlwZSA9IHsKIAogICAgIGFkZFN0YXJ0UGxheWJhY2tDb250cm9sczogZnVuY3Rpb24oKSB7CiAg
ICAgICAgIHRoaXMuYmFzZS5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2xzLnN0YXJ0UGxheWJhY2tC
dXR0b24pOworICAgICAgICB0aGlzLnNob3dTaG93Q29udHJvbHNCdXR0b24oZmFsc2UpOwogICAg
IH0sCiAKICAgICByZW1vdmVTdGFydFBsYXliYWNrQ29udHJvbHM6IGZ1bmN0aW9uKCkgewotICAg
ICAgICBpZiAodGhpcy5jb250cm9scy5zdGFydFBsYXliYWNrQnV0dG9uLnBhcmVudE5vZGUpCisg
ICAgICAgIGlmICh0aGlzLmNvbnRyb2xzLnN0YXJ0UGxheWJhY2tCdXR0b24ucGFyZW50Tm9kZSkg
CiAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnN0YXJ0UGxheWJhY2tCdXR0b24ucGFyZW50Tm9k
ZS5yZW1vdmVDaGlsZCh0aGlzLmNvbnRyb2xzLnN0YXJ0UGxheWJhY2tCdXR0b24pOwogICAgIH0s
CiAKQEAgLTQ0MSw2ICs0NDIsNyBAQCBDb250cm9sbGVySU9TLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIHRoaXMudmlkZW8ucGxheSgpOworICAgICAg
ICB0aGlzLmNhblRvZ2dsZVNob3dDb250cm9sc0J1dHRvbiA9IHRydWU7CiAgICAgICAgIHRoaXMu
dXBkYXRlQ29udHJvbHMoKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUyMiw2ICs1MjQs
NyBAQCBDb250cm9sbGVySU9TLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuc2hvdWxk
SGF2ZUNvbnRyb2xzKCkgJiYgIXRoaXMuY29udHJvbHMucGFuZWxDb250YWluZXIucGFyZW50RWxl
bWVudCkgewogICAgICAgICAgICAgdGhpcy5iYXNlLmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMu
aW5saW5lUGxheWJhY2tQbGFjZWhvbGRlcik7CiAgICAgICAgICAgICB0aGlzLmJhc2UuYXBwZW5k
Q2hpbGQodGhpcy5jb250cm9scy5wYW5lbENvbnRhaW5lcik7CisgICAgICAgICAgICB0aGlzLnNo
b3dTaG93Q29udHJvbHNCdXR0b24oZmFsc2UpOwogICAgICAgICB9CiAgICAgfSwKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDhjOTZiNzgwMWY0YTBkMDc2YWFmZDM5NmNlMjBiZThhMjY5MDk5ZGEuLjhhZTNkMzg5MzEwYzg1
NWJiZDk0ODI1ZDUyNTVmMzUwNThjYTA4MjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0w
NC0yNSAgQWFyb24gQ2h1ICA8YWFyb25fY2h1QGFwcGxlLmNvbT4KKworICAgICAgICBBIExheW91
dCBUZXN0IHRvIG1ha2Ugc3VyZSBzaG93Q29udHJvbHMgQnV0dG9uIGluIG1lZGlhIHBsYXllciBp
cyBoaWRkZW4gYnkgZGVmYXVsdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MzA4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogbWVkaWEvdmlkZW8tY29udHJvbHMtc2hvdy1vbi1rYi1vci1heC1ldmVu
dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogbWVkaWEvdmlkZW8tY29udHJvbHMtc2hvdy1vbi1r
Yi1vci1heC1ldmVudC5odG1sOgorCiAyMDE2LTA0LTI1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVhY3QuanMgSlNYVHJh
bnNmb3JtZXIgcHJvZHVjZXMgYm9ndXMgZXJyb3IgbG9jYXRpb25zCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1zaG93LW9uLWtiLW9yLWF4LWV2ZW50LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXNob3ctb24ta2Itb3It
YXgtZXZlbnQtZXhwZWN0ZWQudHh0CmluZGV4IDE0NDZiMDBmYzhhMDgxM2Q1OTNiMmZmMTM4ZTk4
Mjk0ZmM2Yzc4ZjMuLjlkYTQ2MjhlNzFhODQ3YmY0OTQ2NDNmYmM2NWQxM2IxODM3Y2YzNGEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXNob3ctb24ta2Itb3It
YXgtZXZlbnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRy
b2xzLXNob3ctb24ta2Itb3ItYXgtZXZlbnQtZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNyBAQAog
VGhpcyB0ZXN0cyB0aGF0LCBhZnRlciB0aGUgdmlkZW8gY29udHJvbHMgZmFkZSBvdXQsIHRoZXkg
Y2FuIGJlIHNob3duIHdoZW4gVm9pY2VPdmVyIG9yIGEga2V5Ym9hcmQgdXNlciBjbGlja3MgdGhl
IGhpZGRlbiAiU2hvdyBDb250cm9scyIgYnV0dG9uLgogCiBQQVNTCitQQVNTCiAKIAogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1zaG93LW9uLWtiLW9yLWF4
LWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1zaG93LW9uLWti
LW9yLWF4LWV2ZW50Lmh0bWwKaW5kZXggZmUxNDkwYmY4ZWYzMDZmNzMxZjNmYzdhN2IxZjRjMzdm
MTUxODRkOS4uZGE1MGNjN2U2Mzc3MTIwNTc3NDNjZTU0OWM2Nzk4MGU3YjhjOTFjOSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtc2hvdy1vbi1rYi1vci1heC1l
dmVudC5odG1sCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXNob3ctb24t
a2Itb3ItYXgtZXZlbnQuaHRtbApAQCAtMTQsMTcgKzE0LDI1IEBACiAKICAgICBmdW5jdGlvbiBw
bGF5aW5nKCkgewogCisgICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzdWx0Iik7CisgICAgICAgIAorICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIiI7Cisg
ICAgICAgIC8vIEluaXRpYWxseSwgdGhlIHNob3dDb250cm9scyBCdXR0b24gc2hvdWxkIGJlIGhp
ZGRlbi4KKyAgICAgICAgdmFyIHJvb3QgPSBpbnRlcm5hbHMuc2hhZG93Um9vdChkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidmlkZW8iKSk7CisgICAgICAgIAorICAgICAgICB2YXIgYnV0dG9uID0g
cm9vdC5maXJzdENoaWxkLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpOworCisgICAgICAgIHJlc3Vs
dC5pbm5lckhUTUwgKz0gKGJ1dHRvbi5oaWRkZW4pPyAnUEFTUzxicj4nOiAnRkFJTDogIlNob3cg
Q29udHJvbHMiIGJ1dHRvbiBpcyBub3QgaGlkZGVuIGluaXRpYWxseS48YnI+JzsKKwogICAgICAg
ICAvLyBNb3VzZSBvdmVyIHRoZSB2aWRlbyB0aGVuIG1vdXNlIG91dCB0byBoaWRlIGNvbnRyb2xz
IG1vcmUgcXVpY2tseS4KICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTAwLDEwMCk7
CiAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEsMSk7CiAKICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0Iik7Ci0gICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIiI7
Ci0gICAgICAgICAgICB2YXIgcm9vdCA9IGludGVybmFscy5zaGFkb3dSb290KGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ2aWRlbyIpKQotICAgICAgICAgICAgCi0gICAgICAgICAgICB2YXIgYnV0
dG9uID0gcm9vdC5maXJzdENoaWxkLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpOwotICAgICAgICAg
ICAgaWYgKGJ1dHRvbikgeworICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGFyZSBnZXR0aW5n
IHRoZSB1cGRhdGVkIHJvb3QgYW5kIGJ1dHRvbi4KKyAgICAgICAgICAgIHJvb3QgPSBpbnRlcm5h
bHMuc2hhZG93Um9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKSk7CisgICAgICAg
ICAgICBidXR0b24gPSByb290LmZpcnN0Q2hpbGQucXVlcnlTZWxlY3RvcignYnV0dG9uJyk7Cisg
ICAgICAgICAgICBpZiAoYnV0dG9uICYmICFidXR0b24uaGlkZGVuKSB7CiAgICAgICAgICAgICAg
ICAgYnV0dG9uLmZvY3VzKCk7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bign
ICcpOyAvLyBVc2Uga2V5Ym9hcmQgdG8gcHJlc3MgdGhlIHNlbGVjdGVkIGJ1dHRvbi4KICAgICAg
ICAgICAgIH0gZWxzZQpAQCAtMzUsNyArNDMsNyBAQAogICAgICAgICAgICAgcmVzdWx0LmlubmVy
SFRNTCArPSBjb250cm9scyA/ICdQQVNTJzogJ0ZBSUw6IFRlc3QgZW5kaW5nLCBidXQgdG9vbGJh
ciBpcyBub3QgdmlzaWJsZS4nOwogCiAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICAgICAgfSwgMzAwKSAvLyBXYWl0IGZvciB2aWRlbyB0b29sYmFyIHRvIGhpZGUuCisg
ICAgICAgIH0sIDUwMDApIC8vIFdhaXQgZm9yIHZpZGVvIHRvb2xiYXIgdG8gaGlkZS4KICAgICB9
CiA8L3NjcmlwdD4KIDwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277599</attachid>
            <date>2016-04-28 00:22:42 -0700</date>
            <delta_ts>2016-05-04 16:04:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153089-20160428002313.patch</filename>
            <type>text/plain</type>
            <size>13836</size>
            <attacher name="Aaron Chu">aaron_chu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjYyNDNiNmYzMTE1M2Ix
ZjZkNGE5ZTZkZmNiYTc2MjYzNThiNzU0Yi4uNDQ4YjQwYzkxY2QxN2UxZjI0NTUxY2RhN2VjNDJk
NmQ2MTBkN2Q0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA0LTI4ICBBYXJv
biBDaHUgIDxhYXJvbl9jaHVAYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0byBtYWtlIHN1cmUg
dGhlIHNob3dDb250cm9scyBidXR0b24gaW4gYSBtZWRpYSBwbGF5ZXIgYmVoYXZlcyBjb3JyZWN0
bHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMw
ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
OiBtZWRpYS92aWRlby1jb250cm9scy1zaG93LW9uLWtiLW9yLWF4LWV2ZW50Lmh0bWwKKworICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBwbGUuanM6CisgICAg
ICAgIChDb250cm9sbGVyKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmNyZWF0ZUNv
bnRyb2xzKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZUNvbnRyb2xzKToK
KyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZVBsYXlCdXR0b25DbGlja2VkKToK
KyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnNldFBsYXlpbmcpOgorICAgICAgICAoQ29u
dHJvbGxlci5wcm90b3R5cGUuc2hvd1Nob3dDb250cm9sc0J1dHRvbik6CisgICAgICAgIChDb250
cm9sbGVyLnByb3RvdHlwZS5zaG93Q29udHJvbHMpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90
b3R5cGUuaGlkZUNvbnRyb2xzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMvbWVk
aWFDb250cm9sc2lPUy5qczoKKyAgICAgICAgKENvbnRyb2xsZXJJT1MucHJvdG90eXBlLmFkZFN0
YXJ0UGxheWJhY2tDb250cm9scyk6CisgICAgICAgIChDb250cm9sbGVySU9TLnByb3RvdHlwZS5o
YW5kbGVTdGFydFBsYXliYWNrQnV0dG9uVG91Y2hFbmQpOgorICAgICAgICAoQ29udHJvbGxlcklP
Uy5wcm90b3R5cGUuc2hvd0NvbnRyb2xzKToKKwogMjAxNi0wNC0yNSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIHVuZGVyIE1lbW9yeUNhY2hlOjpyZW1v
dmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21l
ZGlhQ29udHJvbHNBcHBsZS5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9s
cy9tZWRpYUNvbnRyb2xzQXBwbGUuanMKaW5kZXggNDNjZmViYzMwMmRiYTJlNTQxYjEzMjYxYzE4
MTk4ZmIyZTEwM2RhZC4uNWMwOWY0M2EwOTVkNWMyNjAyNDI3MTIzMzIzMGJhMDg2NTA3YmMwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29u
dHJvbHNBcHBsZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMv
bWVkaWFDb250cm9sc0FwcGxlLmpzCkBAIC0xMyw2ICsxMyw3IEBAIGZ1bmN0aW9uIENvbnRyb2xs
ZXIocm9vdCwgdmlkZW8sIGhvc3QpCiAgICAgdGhpcy5pc0xpdmUgPSBmYWxzZTsKICAgICB0aGlz
LnN0YXR1c0hpZGRlbiA9IHRydWU7CiAgICAgdGhpcy5oYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0
cyA9IGZhbHNlOworICAgIHRoaXMuY2FuVG9nZ2xlU2hvd0NvbnRyb2xzQnV0dG9uID0gZmFsc2U7
CiAgICAgdGhpcy5pc0xpc3RlbmluZ0ZvclBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQg
PSBmYWxzZTsKICAgICB0aGlzLmN1cnJlbnRUYXJnZXRJc1dpcmVsZXNzID0gZmFsc2U7CiAgICAg
dGhpcy53aXJlbGVzc1BsYXliYWNrRGlzYWJsZWQgPSBmYWxzZTsKQEAgLTUxMiw3ICs1MTMsNyBA
QCBDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gU2hvdyBjb250cm9scyBidXR0
b24gaXMgYW4gYWNjZXNzaWJpbGl0eSB3b3JrYXJvdW5kIHNpbmNlIHRoZSBjb250cm9scyBhcmUg
bm93IHJlbW92ZWQgZnJvbSB0aGUgRE9NLiBodHRwOi8vd2Via2l0Lm9yZy9iLzE0NTY4NAogICAg
ICAgICB2YXIgc2hvd0NvbnRyb2xzQnV0dG9uID0gdGhpcy5zaG93Q29udHJvbHNCdXR0b24gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICAgICAgICAgc2hvd0NvbnRyb2xzQnV0
dG9uLnNldEF0dHJpYnV0ZSgncHNldWRvJywgJy13ZWJraXQtbWVkaWEtc2hvdy1jb250cm9scycp
OwotICAgICAgICBzaG93Q29udHJvbHNCdXR0b24uaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgdGhp
cy5zaG93U2hvd0NvbnRyb2xzQnV0dG9uKGZhbHNlKTsKICAgICAgICAgc2hvd0NvbnRyb2xzQnV0
dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRoaXMuVUlTdHJpbmcoJ1Nob3cgQ29udHJv
bHMnKSk7CiAgICAgICAgIHRoaXMubGlzdGVuRm9yKHNob3dDb250cm9sc0J1dHRvbiwgJ2NsaWNr
JywgdGhpcy5oYW5kbGVTaG93Q29udHJvbHNDbGljayk7CiAgICAgICAgIHRoaXMuYmFzZS5hcHBl
bmRDaGlsZChzaG93Q29udHJvbHNCdXR0b24pOwpAQCAtNjQ3LDkgKzY0OCwxMSBAQCBDb250cm9s
bGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuY2xhc3NM
aXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMuc2hvdyk7CiAgICAgICAgICAgICB0aGlzLmNvbnRyb2xz
LnBhbmVsLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7CiAgICAgICAg
ICAgICB0aGlzLnJlc2V0SGlkZUNvbnRyb2xzVGltZXIoKTsKKyAgICAgICAgICAgIHRoaXMuc2hv
d1Nob3dDb250cm9sc0J1dHRvbihmYWxzZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICB0aGlzLmNvbnRyb2xzLnBhbmVsLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVzLnNo
b3cpOwogICAgICAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5jbGFzc0xpc3QuYWRkKHRoaXMu
Q2xhc3NOYW1lcy5oaWRkZW4pOworICAgICAgICAgICAgdGhpcy5zaG93U2hvd0NvbnRyb2xzQnV0
dG9uKHRydWUpOwogICAgICAgICB9CiAgICAgfSwKIApAQCAtOTg3LDkgKzk5MCwxMCBAQCBDb250
cm9sbGVyLnByb3RvdHlwZSA9IHsKIAogICAgIGhhbmRsZVBsYXlCdXR0b25DbGlja2VkOiBmdW5j
dGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLmNhblBsYXkoKSkKKyAgICAgICAg
aWYgKHRoaXMuY2FuUGxheSgpKSB7CisgICAgICAgICAgICB0aGlzLmNhblRvZ2dsZVNob3dDb250
cm9sc0J1dHRvbiA9IHRydWU7CiAgICAgICAgICAgICB0aGlzLnZpZGVvLnBsYXkoKTsKLSAgICAg
ICAgZWxzZQorICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHRoaXMudmlkZW8ucGF1c2UoKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwKQEAgLTE0OTYsNiArMTUwMCw3IEBAIENvbnRy
b2xsZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5jb250cm9scy5wbGF5QnV0dG9u
LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVzLnBhdXNlZCk7CiAgICAgICAgICAgICB0
aGlzLmNvbnRyb2xzLnBsYXlCdXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgdGhpcy5V
SVN0cmluZygnUGF1c2UnKSk7CiAgICAgICAgICAgICB0aGlzLnJlc2V0SGlkZUNvbnRyb2xzVGlt
ZXIoKTsKKyAgICAgICAgICAgIHRoaXMuY2FuVG9nZ2xlU2hvd0NvbnRyb2xzQnV0dG9uID0gdHJ1
ZTsKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTE1MTUsNiArMTUyMCwxMiBAQCBDb250cm9sbGVy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKKyAgICBzaG93U2hvd0NvbnRyb2xz
QnV0dG9uOiBmdW5jdGlvbiAoc2hvdWxkU2hvdykgeworICAgICAgICB0aGlzLnNob3dDb250cm9s
c0J1dHRvbi5oaWRkZW4gPSAhc2hvdWxkU2hvdzsKKyAgICAgICAgaWYgKHNob3VsZFNob3cpIAor
ICAgICAgICAgICAgdGhpcy5zaG93Q29udHJvbHNCdXR0b24uZm9jdXMoKTsKKyAgICB9LAorCiAg
ICAgc2hvd0NvbnRyb2xzOiBmdW5jdGlvbihmb2N1c0NvbnRyb2xzKQogICAgIHsKICAgICAgICAg
dGhpcy51cGRhdGVTaG91bGRMaXN0ZW5Gb3JQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50
KCk7CkBAIC0xNTI4LDcgKzE1MzksNyBAQCBDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIGlmIChmb2N1c0NvbnRyb2xzKQogICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHMu
cGxheUJ1dHRvbi5mb2N1cygpOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMuc2hvd0NvbnRyb2xz
QnV0dG9uLmhpZGRlbiA9IHRydWU7CisgICAgICAgIHRoaXMuc2hvd1Nob3dDb250cm9sc0J1dHRv
bihmYWxzZSk7CiAgICAgfSwKIAogICAgIGhpZGVDb250cm9sczogZnVuY3Rpb24oKQpAQCAtMTU0
MSw3ICsxNTUyLDcgQEAgQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuY29u
dHJvbHMucGFuZWwuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMuc2hvdyk7CiAgICAg
ICAgIGlmICh0aGlzLmNvbnRyb2xzLnBhbmVsQmFja2dyb3VuZCkKICAgICAgICAgICAgIHRoaXMu
Y29udHJvbHMucGFuZWxCYWNrZ3JvdW5kLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVz
LnNob3cpOwotICAgICAgICB0aGlzLnNob3dDb250cm9sc0J1dHRvbi5oaWRkZW4gPSBmYWxzZTsK
KyAgICAgICAgdGhpcy5zaG93U2hvd0NvbnRyb2xzQnV0dG9uKHRoaXMuaXNQbGF5YWJsZSgpICYm
IHRoaXMuaXNQbGF5aW5nICYmIHRoaXMuY2FuVG9nZ2xlU2hvd0NvbnRyb2xzQnV0dG9uKTsKICAg
ICB9LAogCiAgICAgc2V0TmVlZHNVcGRhdGVGb3JEaXNwbGF5ZWRXaWR0aDogZnVuY3Rpb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29u
dHJvbHNpT1MuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFD
b250cm9sc2lPUy5qcwppbmRleCBjOTU1OGNiYTU1MDM0OTA0NDVmMzZlZjhiOTZmNTZiMGZkNzlm
MTA4Li5mYmMwMmUyNmJkNjMwMjA4MDMzZmZmN2YzYzk3ZjNmYzE2ZGEyN2E0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc2lPUy5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9s
c2lPUy5qcwpAQCAtMTQ3LDYgKzE0Nyw3IEBAIENvbnRyb2xsZXJJT1MucHJvdG90eXBlID0gewog
CiAgICAgYWRkU3RhcnRQbGF5YmFja0NvbnRyb2xzOiBmdW5jdGlvbigpIHsKICAgICAgICAgdGhp
cy5iYXNlLmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMuc3RhcnRQbGF5YmFja0J1dHRvbik7Cisg
ICAgICAgIHRoaXMuc2hvd1Nob3dDb250cm9sc0J1dHRvbihmYWxzZSk7CiAgICAgfSwKIAogICAg
IHJlbW92ZVN0YXJ0UGxheWJhY2tDb250cm9sczogZnVuY3Rpb24oKSB7CkBAIC00NDEsNiArNDQy
LDcgQEAgQ29udHJvbGxlcklPUy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgICAgICB0aGlzLnZpZGVvLnBsYXkoKTsKKyAgICAgICAgdGhpcy5jYW5Ub2dnbGVT
aG93Q29udHJvbHNCdXR0b24gPSB0cnVlOwogICAgICAgICB0aGlzLnVwZGF0ZUNvbnRyb2xzKCk7
CiAKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01MjIsNiArNTI0LDcgQEAgQ29udHJvbGxlcklP
Uy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnNob3VsZEhhdmVDb250cm9scygpICYm
ICF0aGlzLmNvbnRyb2xzLnBhbmVsQ29udGFpbmVyLnBhcmVudEVsZW1lbnQpIHsKICAgICAgICAg
ICAgIHRoaXMuYmFzZS5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2xzLmlubGluZVBsYXliYWNrUGxh
Y2Vob2xkZXIpOwogICAgICAgICAgICAgdGhpcy5iYXNlLmFwcGVuZENoaWxkKHRoaXMuY29udHJv
bHMucGFuZWxDb250YWluZXIpOworICAgICAgICAgICAgdGhpcy5zaG93U2hvd0NvbnRyb2xzQnV0
dG9uKGZhbHNlKTsKICAgICAgICAgfQogICAgIH0sCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4Yzk2Yjc4MDFmNGEwZDA3
NmFhZmQzOTZjZTIwYmU4YTI2OTA5OWRhLi45NDA2NDhlMjI2MDk2OTU4MzMzODYxMTlkYTM4ZDBm
ZWE5YTc2MmNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDQtMjggIEFhcm9uIENodSAg
PGFhcm9uX2NodUBhcHBsZS5jb20+CisKKyAgICAgICAgQSBMYXlvdXQgVGVzdCB0byBtYWtlIHN1
cmUgc2hvd0NvbnRyb2xzIEJ1dHRvbiBpbiBtZWRpYSBwbGF5ZXIgaXMgaGlkZGVuIGJ5IGRlZmF1
bHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMw
ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1l
ZGlhL3ZpZGVvLWNvbnRyb2xzLXNob3ctb24ta2Itb3ItYXgtZXZlbnQtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLXNob3ctb24ta2Itb3ItYXgtZXZlbnQuaHRt
bDoKKwogMjAxNi0wNC0yNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlYWN0LmpzIEpTWFRyYW5zZm9ybWVyIHByb2R1Y2Vz
IGJvZ3VzIGVycm9yIGxvY2F0aW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tY29udHJvbHMtc2hvdy1vbi1rYi1vci1heC1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1zaG93LW9uLWtiLW9yLWF4LWV2ZW50LWV4cGVjdGVk
LnR4dAppbmRleCAxNDQ2YjAwZmM4YTA4MTNkNTkzYjJmZjEzOGU5ODI5NGZjNmM3OGYzLi44NDgz
NTE0NTA4M2UzNTIzMDFmZmExYTI5Yzk1ZmE3Njk0Yjg1MTc4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1zaG93LW9uLWtiLW9yLWF4LWV2ZW50LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1zaG93LW9uLWtiLW9y
LWF4LWV2ZW50LWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDE0IEBACi1UaGlzIHRlc3RzIHRoYXQs
IGFmdGVyIHRoZSB2aWRlbyBjb250cm9scyBmYWRlIG91dCwgdGhleSBjYW4gYmUgc2hvd24gd2hl
biBWb2ljZU92ZXIgb3IgYSBrZXlib2FyZCB1c2VyIGNsaWNrcyB0aGUgaGlkZGVuICJTaG93IENv
bnRyb2xzIiBidXR0b24uCitUaGlzIHRlc3RzOgorMS4gSW5pdGlhbGx5LCB0b29sYmFyIGlzIHZp
c2libGUsICJTaG93IENvbnRyb2xzIiBidXR0b24gaXMgbm90LgorMi4gQWZ0ZXIgdGhlIHZpZGVv
IGNvbnRyb2xzIGZhZGUgb3V0LCB0aGV5IGNhbiBiZSBzaG93biB3aGVuIFZvaWNlT3ZlciBvciBh
IGtleWJvYXJkIHVzZXIgY2xpY2tzIHRoZSBpbnZpc2libGUgIlNob3cgQ29udHJvbHMiIGJ1dHRv
bi4KKzMuIFdoZW4gdGhlIHZpZGVvIGlzIHBhdXNlZCwgdGhlIGNvbnRyb2xzIGJlY29tZSB2aXNp
YmxlIGFuZCB0aGUgIlNob3cgQ29udHJvbHMiIGJ1dHRvbiBpcyBoaWRkZW4uCiAKIFBBU1MKLQot
CitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXNob3ctb24ta2Itb3ItYXgtZXZlbnQu
aHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXNob3ctb24ta2Itb3ItYXgt
ZXZlbnQuaHRtbAppbmRleCBmZTE0OTBiZjhlZjMwNmY3MzFmM2ZjN2E3YjFmNGMzN2YxNTE4NGQ5
Li43N2I3Mzk2MDhjMGY2NThhNWEzY2Q1ODMyMTgyMjhlMDRkMjFhNjg5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1zaG93LW9uLWtiLW9yLWF4LWV2ZW50Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtc2hvdy1vbi1rYi1vci1h
eC1ldmVudC5odG1sCkBAIC0xLDQxICsxLDk1IEBACi08Ym9keT4KKzxib2R5IG9ubG9hZD0iaW5p
dGlhbENoZWNrc0JlZm9yZVBsYXkoKSI+CiA8cD4KLSAgICBUaGlzIHRlc3RzIHRoYXQsIGFmdGVy
IHRoZSB2aWRlbyBjb250cm9scyBmYWRlIG91dCwgdGhleSBjYW4gYmUgc2hvd24gd2hlbiBWb2lj
ZU92ZXIgb3IgYSBrZXlib2FyZCB1c2VyIGNsaWNrcyB0aGUgaGlkZGVuICJTaG93IENvbnRyb2xz
IiBidXR0b24uCisgICAgVGhpcyB0ZXN0czo8YnI+CisgICAgMS4gSW5pdGlhbGx5LCB0b29sYmFy
IGlzIHZpc2libGUsICJTaG93IENvbnRyb2xzIiBidXR0b24gaXMgbm90Ljxicj4KKyAgICAyLiBB
ZnRlciB0aGUgdmlkZW8gY29udHJvbHMgZmFkZSBvdXQsIHRoZXkgY2FuIGJlIHNob3duIHdoZW4g
Vm9pY2VPdmVyIG9yIGEga2V5Ym9hcmQgdXNlciBjbGlja3MgdGhlIGludmlzaWJsZSAiU2hvdyBD
b250cm9scyIgYnV0dG9uLjxicj4KKyAgICAzLiBXaGVuIHRoZSB2aWRlbyBpcyBwYXVzZWQsIHRo
ZSBjb250cm9scyBiZWNvbWUgdmlzaWJsZSBhbmQgdGhlICJTaG93IENvbnRyb2xzIiBidXR0b24g
aXMgaGlkZGVuLjxicj4KIDwvcD4KKworPHZpZGVvIGlkPSJ2aWRlbyIgY29udHJvbHMgb25wbGF5
aW5nPSJ0ZXN0UGxheWluZygpIiAgb25wYXVzZT0idGVzdFBhdXNpbmcoKSIgc3JjPSJjb250ZW50
L2xvbmctdGVzdC5tcDQiPjwvdmlkZW8+PGJyPgorCiA8cCBpZD0icmVzdWx0Ij4KICAgICBGQUlM
OiBUZXN0IGRpZCBub3QgcnVuLjxicj4KIDwvcD4KLTx2aWRlbyBpZD0idmlkZW8iIGNvbnRyb2xz
IGF1dG9wbGF5IG9ucGxheWluZz0icGxheWluZygpIiBzcmM9ImNvbnRlbnQvbG9uZy10ZXN0Lm1w
NCI+PC92aWRlbz48YnI+CiA8c2NyaXB0PgogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewog
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gcGxheWluZygpIHsKKyAgICB2YXIg
cmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworICAgICAgICByZXN1
bHQuaW5uZXJIVE1MID0gIiI7CisgICAgLy8gSW5pdGlhbGx5LCB0aGUgc2hvd0NvbnRyb2xzIEJ1
dHRvbiBzaG91bGQgYmUgaGlkZGVuLgorICAgIHZhciByb290ID0gaW50ZXJuYWxzLnNoYWRvd1Jv
b3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIikpOworICAgIHZhciBidXR0b24gPSBy
b290LmZpcnN0Q2hpbGQucXVlcnlTZWxlY3RvcignYnV0dG9uJyk7CisgICAgdmFyIGNvbnRyb2xz
ID0gcm9vdC5maXJzdENoaWxkLnF1ZXJ5U2VsZWN0b3IoJ1tyb2xlPSJ0b29sYmFyIl0nKTsKKyAg
ICB2YXIgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmlkZW8nKTsKKworICAgIGZ1
bmN0aW9uIGlzRWxlbWVudEhpZGRlbihlbGVtKSB7CisgICAgICAgIHJldHVybiAoZWxlbS5oaWRk
ZW4gJiYgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtKS5kaXNwbGF5ID09PSAnbm9uZScpCisgICAgfQor
ICAgIGZ1bmN0aW9uIGluaXRpYWxDaGVja3NCZWZvcmVQbGF5KCkgeworICAgICAgICAvLyBCZWZv
cmUgd2Ugc3RhcnQsIGNoZWNrIHRvIG1ha2Ugc3VyZSB0b29sYmFyIGlzIGluIHBsYWNlIGFuZCBz
aG93Q29udHJvbHNidXR0b24gaXMgaGlkZGVuLgorICAgICAgICByZXN1bHQuaW5uZXJIVE1MICs9
ICghaXNFbGVtZW50SGlkZGVuKGNvbnRyb2xzKSk/ICdQQVNTPGJyPic6ICdGQUlMOiBDb250cm9s
cyBhcmUgbm90IGF2YWlsYWJsZSBhdCB0aGUgYmVnaW5uaW5nLjxicj4nOworICAgICAgICByZXN1
bHQuaW5uZXJIVE1MICs9IChpc0VsZW1lbnRIaWRkZW4oYnV0dG9uKSk/ICdQQVNTPGJyPic6ICdG
QUlMOiAiU2hvdyBDb250cm9scyIgYnV0dG9uIGlzIG5vdCBoaWRkZW4gaW5pdGlhbGx5Ljxicj4n
OworCisgICAgICAgIHZpZGVvLnBsYXkoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0UGxh
eWluZygpIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGFyZSBnZXR0aW5nIHRoZSB1cGRhdGVk
IHJvb3QgYW5kIGJ1dHRvbi4KKyAgICAgICAgcm9vdCA9IGludGVybmFscy5zaGFkb3dSb290KGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpKTsKIAotICAgICAgICAvLyBNb3VzZSBvdmVy
IHRoZSB2aWRlbyB0aGVuIG1vdXNlIG91dCB0byBoaWRlIGNvbnRyb2xzIG1vcmUgcXVpY2tseS4K
LSAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTAwLDEwMCk7Ci0gICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKDEsMSk7CisgICAgICAgIC8vIFdlIGdpdmUgaXQgYSAxMDBtcyBi
dWZmZXIgZm9yIHRoZSB2aWRlbyB0byBzZXQgYWxsIHRoZSBwcm9wZXJ0aWVzIGJlZm9yZSBzZW5k
aW5nIG1vdXNlIGV2ZW50cy4KKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAvLyBNb3VzZSBvdmVyIHRoZSB2aWRlbyB0aGVuIG1vdXNlIG91dCB0byBoaWRlIGNv
bnRyb2xzIG1vcmUgcXVpY2tseS4KKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KDE1MCwxNTApOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMCwwKTsKKyAg
ICAgICAgfSwgMTAwKTsKIAorICAgICAgICAvLyAzMDBtcyBhZnRlciB0aGUgbW91c2UgZXZlbnRz
LCBhbGwgVUkgY2hhbmdlcyBzaG91bGQgY29tcGxldGUgYW5kIHdlIGNhbiBzdGFydCBtYWtpbmcg
YXNzZXJ0aW9ucy4KICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7Ci0gICAgICAg
ICAgICByZXN1bHQuaW5uZXJIVE1MID0gIiI7Ci0gICAgICAgICAgICB2YXIgcm9vdCA9IGludGVy
bmFscy5zaGFkb3dSb290KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpKQotICAgICAg
ICAgICAgCi0gICAgICAgICAgICB2YXIgYnV0dG9uID0gcm9vdC5maXJzdENoaWxkLnF1ZXJ5U2Vs
ZWN0b3IoJ2J1dHRvbicpOwotICAgICAgICAgICAgaWYgKGJ1dHRvbikgeworICAgICAgICAgICAg
Ly8gTWFrZSBzdXJlIHdlIGFyZSBnZXR0aW5nIHRoZSBsYXRlc3QgY29weSBvZiB0aGUgZWxlbWVu
dC4KKyAgICAgICAgICAgIGNvbnRyb2xzID0gcm9vdC5maXJzdENoaWxkLnF1ZXJ5U2VsZWN0b3Io
J1tyb2xlPSJ0b29sYmFyIl0nKTsKKyAgICAgICAgICAgIHJlc3VsdC5pbm5lckhUTUwgKz0gIWNv
bnRyb2xzPyAnUEFTUzxicj4nOiAnRkFJTDogVG9vbGJhciBzdGlsbCBhcm91bmQgYWZ0ZXIgbW91
c2VvdXQuPGJyPic7CisKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBhcmUgZ2V0dGluZyB0
aGUgbGF0ZXN0IGNvcHkgb2YgdGhlIGVsZW1lbnQuCisgICAgICAgICAgICBidXR0b24gPSByb290
LmZpcnN0Q2hpbGQucXVlcnlTZWxlY3RvcignYnV0dG9uJyk7CisgICAgICAgICAgICByZXN1bHQu
aW5uZXJIVE1MICs9ICFpc0VsZW1lbnRIaWRkZW4oYnV0dG9uKT8gJ1BBU1M8YnI+JzogJ0ZBSUw6
IEJ1dHRvbiBzaG91bGQgYmUgdmlzaWJsZS48YnI+JzsKKworICAgICAgICAgICAgaWYoYnV0dG9u
ICYmICFpc0VsZW1lbnRIaWRkZW4oYnV0dG9uKSkgewogICAgICAgICAgICAgICAgIGJ1dHRvbi5m
b2N1cygpOwotICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oJyAnKTsgLy8gVXNl
IGtleWJvYXJkIHRvIHByZXNzIHRoZSBzZWxlY3RlZCBidXR0b24uCi0gICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MICs9ICdGQUlMOiAiU2hvdyBDb250
cm9scyIgYnV0dG9uIGlzIG5vdCBhdmFpbGFibGUuPGJyPic7CQorICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmtleURvd24oJyAnKTsKKyAgICAgICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAg
ICAgICByZXN1bHQuaW5uZXJIVE1MICs9ICdGQUlMOiAiU2hvdyBDb250cm9scyIgYnV0dG9uIGFy
ZSBoaWRkZW4gb3IgdW5hdmFpbGFibGUuPGJyPic7CisKKyAgICAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB3ZSBhcmUgZ2V0dGluZyB0aGUgbGF0ZXN0IGNvcHkgb2YgdGhlIGVsZW1lbnQuCisgICAgICAg
ICAgICBjb250cm9scyA9IHJvb3QuZmlyc3RDaGlsZC5xdWVyeVNlbGVjdG9yKCdbcm9sZT0idG9v
bGJhciJdJyk7CisgICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MICs9IGNvbnRyb2xzPyAnUEFT
Uzxicj4nOiAnRkFJTDogVG9vbGJhciBzaG91bGQgZXhpc3Q8YnI+JzsKKworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTUwLDE1MCk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbygwLDApOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICBjb250cm9scyA9IHJvb3QuZmlyc3RDaGlsZC5xdWVyeVNlbGVj
dG9yKCdbcm9sZT0idG9vbGJhciJdJyk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVySFRN
TCArPSAhY29udHJvbHM/ICdQQVNTPGJyPic6ICdGQUlMOiBUb29sYmFyIHNob3VsZCBub3QgZXhp
c3Q8YnI+JzsKKyAgICAgICAgICAgICAgICAvLyBXZSBhcmUgZG9uZSB0ZXN0aW5nIHBsYXlpbmcg
c3RhdGUsIG1vdmluZyBvbiB0byB0ZXN0aW5nIHRoZSBwYXVzZWQgc3RhdGUuCisgICAgICAgICAg
ICAgICAgdmlkZW8ucGF1c2UoKTsKKyAgICAgICAgICAgIH0sIDMwMCk7CisgICAgICAgIH0sIDQw
MCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdFBhdXNpbmcoKSB7CisgICAgICAgIC8vIFdl
IGFyZSBnaXZpbmcgMTAwbXMgKyAzMDBzIGJ1ZmZlciBmb3IgdGhlIHZpZGVvIHRvIHNldCBpdHMg
cHJvcGVydGllcyBhbmQgbWFrZSBVSSBjaGFuZ2VzLgorICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIGNvbnRyb2xzID0gcm9vdC5maXJzdENoaWxkLnF1ZXJ5U2Vs
ZWN0b3IoJ1tyb2xlPSJ0b29sYmFyIl0nKTsKKyAgICAgICAgICAgIHJlc3VsdC5pbm5lckhUTUwg
Kz0gY29udHJvbHM/ICdQQVNTPGJyPic6ICdGQUlMOiBUb29sYmFyIHNob3VsZCBleGlzdDxicj4n
OwogCi0gICAgICAgICAgICAvLyBWZXJpZmllcyB0aGUgdG9vbGJhciBpcyBiYWNrIGluIHRoZSBE
T00uCi0gICAgICAgICAgICB2YXIgY29udHJvbHMgPSByb290LmZpcnN0Q2hpbGQucXVlcnlTZWxl
Y3RvcignW3JvbGU9InRvb2xiYXIiXScpOwotICAgICAgICAgICAgcmVzdWx0LmlubmVySFRNTCAr
PSBjb250cm9scyA/ICdQQVNTJzogJ0ZBSUw6IFRlc3QgZW5kaW5nLCBidXQgdG9vbGJhciBpcyBu
b3QgdmlzaWJsZS4nOworICAgICAgICAgICAgYnV0dG9uID0gcm9vdC5maXJzdENoaWxkLnF1ZXJ5
U2VsZWN0b3IoJ2J1dHRvbicpOworICAgICAgICAgICAgcmVzdWx0LmlubmVySFRNTCArPSBpc0Vs
ZW1lbnRIaWRkZW4oYnV0dG9uKT8gJ1BBU1M8YnI+JzogJ0ZBSUw6IEJ1dHRvbiBzaG91bGQgbm90
IGJlIHZpc2libGUuPGJyPic7CiAKICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgICAgICB9LCAzMDApIC8vIFdhaXQgZm9yIHZpZGVvIHRvb2xiYXIgdG8gaGlkZS4KKyAg
ICAgICAgfSwgNDAwKTsKICAgICB9CiA8L3NjcmlwdD4KIDwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278138</attachid>
            <date>2016-05-04 16:04:24 -0700</date>
            <delta_ts>2016-05-04 17:05:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153089-20160504160504.patch</filename>
            <type>text/plain</type>
            <size>14139</size>
            <attacher name="Aaron Chu">aaron_chu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVhYmE5YTRiNzU2MzYx
MmY5OGY4NDFlNjBhMGQxMmQ2MjY5Nzg1YS4uNzU4MGUyODJjOTFlNmQ1MGUzY2VhZjAzOWIyYzA3
NDUxN2FjNjQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE2LTA1LTA0ICBBYXJv
biBDaHUgIDxhYXJvbl9jaHVAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBOb25mdW5jdGlvbmFs
IGNvbnRyb2xzIGFwcGVhciBiZWZvcmUgZXZlcnkgSFRNTDUgdmlkZW8gd2hlbiB1c2luZyBWb2lj
ZU92ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MzA4OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQwNTA2Njg+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogbWVkaWEvdmlkZW8tY29udHJv
bHMtc2hvdy1vbi1rYi1vci1heC1ldmVudC5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
Y29udHJvbHMvbWVkaWFDb250cm9sc0FwcGxlLmpzOgorICAgICAgICAoQ29udHJvbGxlcik6Cisg
ICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5jcmVhdGVDb250cm9scyk6CisgICAgICAgIChD
b250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVDb250cm9scyk6CisgICAgICAgIChDb250cm9sbGVy
LnByb3RvdHlwZS5oYW5kbGVQbGF5QnV0dG9uQ2xpY2tlZCk6CisgICAgICAgIChDb250cm9sbGVy
LnByb3RvdHlwZS5zZXRQbGF5aW5nKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnNo
b3dTaG93Q29udHJvbHNCdXR0b24pOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuc2hv
d0NvbnRyb2xzKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhpZGVDb250cm9scyk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNpT1MuanM6Cisg
ICAgICAgIChDb250cm9sbGVySU9TLnByb3RvdHlwZS5hZGRTdGFydFBsYXliYWNrQ29udHJvbHMp
OgorICAgICAgICAoQ29udHJvbGxlcklPUy5wcm90b3R5cGUuaGFuZGxlU3RhcnRQbGF5YmFja0J1
dHRvblRvdWNoRW5kKToKKyAgICAgICAgKENvbnRyb2xsZXJJT1MucHJvdG90eXBlLnNob3dDb250
cm9scyk6CisKKyAgICAgICAgRml4IHRvIG1ha2Ugc3VyZSB0aGUgc2hvd0NvbnRyb2xzIGJ1dHRv
biBpbiBhIG1lZGlhIHBsYXllciBiZWhhdmVzIGNvcnJlY3RseS4KKwogMjAxNi0wNS0wNCAgTWFu
dWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWdy
aWRdIFJlZmFjdG9yIGluZm9ybWF0aW9uIHN0b3JlZCByZWxhdGVkIHRvIGNvbHVtbiBwb3NpdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRp
YUNvbnRyb2xzQXBwbGUuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMv
bWVkaWFDb250cm9sc0FwcGxlLmpzCmluZGV4IDQzY2ZlYmMzMDJkYmEyZTU0MWIxMzI2MWMxODE5
OGZiMmUxMDNkYWQuLjVjMDlmNDNhMDk1ZDVjMjYwMjQyNzEyMzMyMzBiYTA4NjUwN2JjMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRy
b2xzQXBwbGUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21l
ZGlhQ29udHJvbHNBcHBsZS5qcwpAQCAtMTMsNiArMTMsNyBAQCBmdW5jdGlvbiBDb250cm9sbGVy
KHJvb3QsIHZpZGVvLCBob3N0KQogICAgIHRoaXMuaXNMaXZlID0gZmFsc2U7CiAgICAgdGhpcy5z
dGF0dXNIaWRkZW4gPSB0cnVlOwogICAgIHRoaXMuaGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldHMg
PSBmYWxzZTsKKyAgICB0aGlzLmNhblRvZ2dsZVNob3dDb250cm9sc0J1dHRvbiA9IGZhbHNlOwog
ICAgIHRoaXMuaXNMaXN0ZW5pbmdGb3JQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50ID0g
ZmFsc2U7CiAgICAgdGhpcy5jdXJyZW50VGFyZ2V0SXNXaXJlbGVzcyA9IGZhbHNlOwogICAgIHRo
aXMud2lyZWxlc3NQbGF5YmFja0Rpc2FibGVkID0gZmFsc2U7CkBAIC01MTIsNyArNTEzLDcgQEAg
Q29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIFNob3cgY29udHJvbHMgYnV0dG9u
IGlzIGFuIGFjY2Vzc2liaWxpdHkgd29ya2Fyb3VuZCBzaW5jZSB0aGUgY29udHJvbHMgYXJlIG5v
dyByZW1vdmVkIGZyb20gdGhlIERPTS4gaHR0cDovL3dlYmtpdC5vcmcvYi8xNDU2ODQKICAgICAg
ICAgdmFyIHNob3dDb250cm9sc0J1dHRvbiA9IHRoaXMuc2hvd0NvbnRyb2xzQnV0dG9uID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgICAgICAgIHNob3dDb250cm9sc0J1dHRv
bi5zZXRBdHRyaWJ1dGUoJ3BzZXVkbycsICctd2Via2l0LW1lZGlhLXNob3ctY29udHJvbHMnKTsK
LSAgICAgICAgc2hvd0NvbnRyb2xzQnV0dG9uLmhpZGRlbiA9IHRydWU7CisgICAgICAgIHRoaXMu
c2hvd1Nob3dDb250cm9sc0J1dHRvbihmYWxzZSk7CiAgICAgICAgIHNob3dDb250cm9sc0J1dHRv
bi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCB0aGlzLlVJU3RyaW5nKCdTaG93IENvbnRyb2xz
JykpOwogICAgICAgICB0aGlzLmxpc3RlbkZvcihzaG93Q29udHJvbHNCdXR0b24sICdjbGljaycs
IHRoaXMuaGFuZGxlU2hvd0NvbnRyb2xzQ2xpY2spOwogICAgICAgICB0aGlzLmJhc2UuYXBwZW5k
Q2hpbGQoc2hvd0NvbnRyb2xzQnV0dG9uKTsKQEAgLTY0Nyw5ICs2NDgsMTEgQEAgQ29udHJvbGxl
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLmNsYXNzTGlz
dC5hZGQodGhpcy5DbGFzc05hbWVzLnNob3cpOwogICAgICAgICAgICAgdGhpcy5jb250cm9scy5w
YW5lbC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOwogICAgICAgICAg
ICAgdGhpcy5yZXNldEhpZGVDb250cm9sc1RpbWVyKCk7CisgICAgICAgICAgICB0aGlzLnNob3dT
aG93Q29udHJvbHNCdXR0b24oZmFsc2UpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
dGhpcy5jb250cm9scy5wYW5lbC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5zaG93
KTsKICAgICAgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuY2xhc3NMaXN0LmFkZCh0aGlzLkNs
YXNzTmFtZXMuaGlkZGVuKTsKKyAgICAgICAgICAgIHRoaXMuc2hvd1Nob3dDb250cm9sc0J1dHRv
bih0cnVlKTsKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTk4Nyw5ICs5OTAsMTAgQEAgQ29udHJv
bGxlci5wcm90b3R5cGUgPSB7CiAKICAgICBoYW5kbGVQbGF5QnV0dG9uQ2xpY2tlZDogZnVuY3Rp
b24oZXZlbnQpCiAgICAgewotICAgICAgICBpZiAodGhpcy5jYW5QbGF5KCkpCisgICAgICAgIGlm
ICh0aGlzLmNhblBsYXkoKSkgeworICAgICAgICAgICAgdGhpcy5jYW5Ub2dnbGVTaG93Q29udHJv
bHNCdXR0b24gPSB0cnVlOwogICAgICAgICAgICAgdGhpcy52aWRlby5wbGF5KCk7Ci0gICAgICAg
IGVsc2UKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0aGlzLnZpZGVvLnBhdXNlKCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCkBAIC0xNDk2LDYgKzE1MDAsNyBAQCBDb250cm9s
bGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuY29udHJvbHMucGxheUJ1dHRvbi5j
bGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5wYXVzZWQpOwogICAgICAgICAgICAgdGhp
cy5jb250cm9scy5wbGF5QnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRoaXMuVUlT
dHJpbmcoJ1BhdXNlJykpOwogICAgICAgICAgICAgdGhpcy5yZXNldEhpZGVDb250cm9sc1RpbWVy
KCk7CisgICAgICAgICAgICB0aGlzLmNhblRvZ2dsZVNob3dDb250cm9sc0J1dHRvbiA9IHRydWU7
CiAgICAgICAgIH0KICAgICB9LAogCkBAIC0xNTE1LDYgKzE1MjAsMTIgQEAgQ29udHJvbGxlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCisgICAgc2hvd1Nob3dDb250cm9sc0J1
dHRvbjogZnVuY3Rpb24gKHNob3VsZFNob3cpIHsKKyAgICAgICAgdGhpcy5zaG93Q29udHJvbHNC
dXR0b24uaGlkZGVuID0gIXNob3VsZFNob3c7CisgICAgICAgIGlmIChzaG91bGRTaG93KSAKKyAg
ICAgICAgICAgIHRoaXMuc2hvd0NvbnRyb2xzQnV0dG9uLmZvY3VzKCk7CisgICAgfSwKKwogICAg
IHNob3dDb250cm9sczogZnVuY3Rpb24oZm9jdXNDb250cm9scykKICAgICB7CiAgICAgICAgIHRo
aXMudXBkYXRlU2hvdWxkTGlzdGVuRm9yUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudCgp
OwpAQCAtMTUyOCw3ICsxNTM5LDcgQEAgQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICBpZiAoZm9jdXNDb250cm9scykKICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnBs
YXlCdXR0b24uZm9jdXMoKTsKICAgICAgICAgfQotICAgICAgICB0aGlzLnNob3dDb250cm9sc0J1
dHRvbi5oaWRkZW4gPSB0cnVlOworICAgICAgICB0aGlzLnNob3dTaG93Q29udHJvbHNCdXR0b24o
ZmFsc2UpOwogICAgIH0sCiAKICAgICBoaWRlQ29udHJvbHM6IGZ1bmN0aW9uKCkKQEAgLTE1NDEs
NyArMTU1Miw3IEBAIENvbnRyb2xsZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmNvbnRy
b2xzLnBhbmVsLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVzLnNob3cpOwogICAgICAg
ICBpZiAodGhpcy5jb250cm9scy5wYW5lbEJhY2tncm91bmQpCiAgICAgICAgICAgICB0aGlzLmNv
bnRyb2xzLnBhbmVsQmFja2dyb3VuZC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5z
aG93KTsKLSAgICAgICAgdGhpcy5zaG93Q29udHJvbHNCdXR0b24uaGlkZGVuID0gZmFsc2U7Cisg
ICAgICAgIHRoaXMuc2hvd1Nob3dDb250cm9sc0J1dHRvbih0aGlzLmlzUGxheWFibGUoKSAmJiB0
aGlzLmlzUGxheWluZyAmJiB0aGlzLmNhblRvZ2dsZVNob3dDb250cm9sc0J1dHRvbik7CiAgICAg
fSwKIAogICAgIHNldE5lZWRzVXBkYXRlRm9yRGlzcGxheWVkV2lkdGg6IGZ1bmN0aW9uKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRy
b2xzaU9TLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29u
dHJvbHNpT1MuanMKaW5kZXggYzk1NThjYmE1NTAzNDkwNDQ1ZjM2ZWY4Yjk2ZjU2YjBmZDc5ZjEw
OC4uZmJjMDJlMjZiZDYzMDIwODAzM2ZmZjdmM2M5N2YzZmMxNmRhMjdhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNpT1MuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNp
T1MuanMKQEAgLTE0Nyw2ICsxNDcsNyBAQCBDb250cm9sbGVySU9TLnByb3RvdHlwZSA9IHsKIAog
ICAgIGFkZFN0YXJ0UGxheWJhY2tDb250cm9sczogZnVuY3Rpb24oKSB7CiAgICAgICAgIHRoaXMu
YmFzZS5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2xzLnN0YXJ0UGxheWJhY2tCdXR0b24pOworICAg
ICAgICB0aGlzLnNob3dTaG93Q29udHJvbHNCdXR0b24oZmFsc2UpOwogICAgIH0sCiAKICAgICBy
ZW1vdmVTdGFydFBsYXliYWNrQ29udHJvbHM6IGZ1bmN0aW9uKCkgewpAQCAtNDQxLDYgKzQ0Miw3
IEBAIENvbnRyb2xsZXJJT1MucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICAgICAgdGhpcy52aWRlby5wbGF5KCk7CisgICAgICAgIHRoaXMuY2FuVG9nZ2xlU2hv
d0NvbnRyb2xzQnV0dG9uID0gdHJ1ZTsKICAgICAgICAgdGhpcy51cGRhdGVDb250cm9scygpOwog
CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTIyLDYgKzUyNCw3IEBAIENvbnRyb2xsZXJJT1Mu
cHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5zaG91bGRIYXZlQ29udHJvbHMoKSAmJiAh
dGhpcy5jb250cm9scy5wYW5lbENvbnRhaW5lci5wYXJlbnRFbGVtZW50KSB7CiAgICAgICAgICAg
ICB0aGlzLmJhc2UuYXBwZW5kQ2hpbGQodGhpcy5jb250cm9scy5pbmxpbmVQbGF5YmFja1BsYWNl
aG9sZGVyKTsKICAgICAgICAgICAgIHRoaXMuYmFzZS5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2xz
LnBhbmVsQ29udGFpbmVyKTsKKyAgICAgICAgICAgIHRoaXMuc2hvd1Nob3dDb250cm9sc0J1dHRv
bihmYWxzZSk7CiAgICAgICAgIH0KICAgICB9LAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzBmODc4ODI4N2JkNzE4YmI3
YjAyM2ZmYWM2YjZmODZhMDU3OWMxNS4uMjI0OWQ4NzZjOGI4NWRjODk3NDgyNWE5NzFmM2E2MmJh
YTA0YWYwNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTA1LTA0ICBBYXJvbiBDaHUgIDxh
YXJvbl9jaHVAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBOb25mdW5jdGlvbmFsIGNvbnRyb2xz
IGFwcGVhciBiZWZvcmUgZXZlcnkgSFRNTDUgdmlkZW8gd2hlbiB1c2luZyBWb2ljZU92ZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzA4OQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjQwNTA2Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS92aWRlby1jb250cm9scy1zaG93LW9uLWti
LW9yLWF4LWV2ZW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBtZWRpYS92aWRlby1jb250cm9s
cy1zaG93LW9uLWtiLW9yLWF4LWV2ZW50Lmh0bWw6CisKKyAgICAgICAgQSBMYXlvdXQgVGVzdCB0
byBtYWtlIHN1cmUgc2hvd0NvbnRyb2xzIEJ1dHRvbiBpbiBtZWRpYSBwbGF5ZXIgaXMgaGlkZGVu
IGJ5IGRlZmF1bHQuCisKIDIwMTYtMDUtMDQgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXByb3ZlIHRoZSBncmFtbWFyIG9mIHNvbWUgZXJyb3IgbWVz
c2FnZXMgJ2EgYXJndW1lbnQgbGlzdCcgPT4gJ2FuIGFyZ3VtZW50IGxpc3QnCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1zaG93LW9uLWtiLW9yLWF4LWV2ZW50
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXNob3ctb24t
a2Itb3ItYXgtZXZlbnQtZXhwZWN0ZWQudHh0CmluZGV4IDE0NDZiMDBmYzhhMDgxM2Q1OTNiMmZm
MTM4ZTk4Mjk0ZmM2Yzc4ZjMuLjg0ODM1MTQ1MDgzZTM1MjMwMWZmYTFhMjljOTVmYTc2OTRiODUx
NzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXNob3ctb24t
a2Itb3ItYXgtZXZlbnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVv
LWNvbnRyb2xzLXNob3ctb24ta2Itb3ItYXgtZXZlbnQtZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEs
MTQgQEAKLVRoaXMgdGVzdHMgdGhhdCwgYWZ0ZXIgdGhlIHZpZGVvIGNvbnRyb2xzIGZhZGUgb3V0
LCB0aGV5IGNhbiBiZSBzaG93biB3aGVuIFZvaWNlT3ZlciBvciBhIGtleWJvYXJkIHVzZXIgY2xp
Y2tzIHRoZSBoaWRkZW4gIlNob3cgQ29udHJvbHMiIGJ1dHRvbi4KK1RoaXMgdGVzdHM6CisxLiBJ
bml0aWFsbHksIHRvb2xiYXIgaXMgdmlzaWJsZSwgIlNob3cgQ29udHJvbHMiIGJ1dHRvbiBpcyBu
b3QuCisyLiBBZnRlciB0aGUgdmlkZW8gY29udHJvbHMgZmFkZSBvdXQsIHRoZXkgY2FuIGJlIHNo
b3duIHdoZW4gVm9pY2VPdmVyIG9yIGEga2V5Ym9hcmQgdXNlciBjbGlja3MgdGhlIGludmlzaWJs
ZSAiU2hvdyBDb250cm9scyIgYnV0dG9uLgorMy4gV2hlbiB0aGUgdmlkZW8gaXMgcGF1c2VkLCB0
aGUgY29udHJvbHMgYmVjb21lIHZpc2libGUgYW5kIHRoZSAiU2hvdyBDb250cm9scyIgYnV0dG9u
IGlzIGhpZGRlbi4KIAogUEFTUwotCi0KK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BB
U1MKK1BBU1MKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMt
c2hvdy1vbi1rYi1vci1heC1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29u
dHJvbHMtc2hvdy1vbi1rYi1vci1heC1ldmVudC5odG1sCmluZGV4IGZlMTQ5MGJmOGVmMzA2Zjcz
MWYzZmM3YTdiMWY0YzM3ZjE1MTg0ZDkuLmVjY2M4NjM4N2YwNDM3ZWRiZDUxODk5N2Y1NWM5ZDZm
MzBhMjYwN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXNo
b3ctb24ta2Itb3ItYXgtZXZlbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1j
b250cm9scy1zaG93LW9uLWtiLW9yLWF4LWV2ZW50Lmh0bWwKQEAgLTEsNDEgKzEsOTUgQEAKLTxi
b2R5PgorPGJvZHkgb25sb2FkPSJpbml0aWFsQ2hlY2tzQmVmb3JlUGxheSgpIj4KIDxwPgotICAg
IFRoaXMgdGVzdHMgdGhhdCwgYWZ0ZXIgdGhlIHZpZGVvIGNvbnRyb2xzIGZhZGUgb3V0LCB0aGV5
IGNhbiBiZSBzaG93biB3aGVuIFZvaWNlT3ZlciBvciBhIGtleWJvYXJkIHVzZXIgY2xpY2tzIHRo
ZSBoaWRkZW4gIlNob3cgQ29udHJvbHMiIGJ1dHRvbi4KKyAgICBUaGlzIHRlc3RzOjxicj4KKyAg
ICAxLiBJbml0aWFsbHksIHRvb2xiYXIgaXMgdmlzaWJsZSwgIlNob3cgQ29udHJvbHMiIGJ1dHRv
biBpcyBub3QuPGJyPgorICAgIDIuIEFmdGVyIHRoZSB2aWRlbyBjb250cm9scyBmYWRlIG91dCwg
dGhleSBjYW4gYmUgc2hvd24gd2hlbiBWb2ljZU92ZXIgb3IgYSBrZXlib2FyZCB1c2VyIGNsaWNr
cyB0aGUgaW52aXNpYmxlICJTaG93IENvbnRyb2xzIiBidXR0b24uPGJyPgorICAgIDMuIFdoZW4g
dGhlIHZpZGVvIGlzIHBhdXNlZCwgdGhlIGNvbnRyb2xzIGJlY29tZSB2aXNpYmxlIGFuZCB0aGUg
IlNob3cgQ29udHJvbHMiIGJ1dHRvbiBpcyBoaWRkZW4uPGJyPgogPC9wPgorCis8dmlkZW8gaWQ9
InZpZGVvIiBjb250cm9scyBvbnBsYXlpbmc9InRlc3RQbGF5aW5nKCkiICBvbnBhdXNlPSJ0ZXN0
UGF1c2luZygpIiBzcmM9ImNvbnRlbnQvbG9uZy10ZXN0Lm1wNCI+PC92aWRlbz48YnI+CisKIDxw
IGlkPSJyZXN1bHQiPgogICAgIEZBSUw6IFRlc3QgZGlkIG5vdCBydW4uPGJyPgogPC9wPgotPHZp
ZGVvIGlkPSJ2aWRlbyIgY29udHJvbHMgYXV0b3BsYXkgb25wbGF5aW5nPSJwbGF5aW5nKCkiIHNy
Yz0iY29udGVudC9sb25nLXRlc3QubXA0Ij48L3ZpZGVvPjxicj4KIDxzY3JpcHQ+CiAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICB9CiAKLSAgICBmdW5jdGlv
biBwbGF5aW5nKCkgeworICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0Iik7CisgICAgcmVzdWx0LmlubmVySFRNTCA9ICIiOworICAgIC8vIEluaXRpYWxseSwg
dGhlIHNob3dDb250cm9scyBCdXR0b24gc2hvdWxkIGJlIGhpZGRlbi4KKyAgICB2YXIgcm9vdCA9
IGludGVybmFscy5zaGFkb3dSb290KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpKTsK
KyAgICB2YXIgYnV0dG9uID0gcm9vdC5maXJzdENoaWxkLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicp
OworICAgIHZhciBjb250cm9scyA9IHJvb3QuZmlyc3RDaGlsZC5xdWVyeVNlbGVjdG9yKCdbcm9s
ZT0idG9vbGJhciJdJyk7CisgICAgdmFyIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3ZpZGVvJyk7CisKKyAgICBmdW5jdGlvbiBpc0VsZW1lbnRIaWRkZW4oZWxlbSkgeworICAgICAg
ICByZXR1cm4gKGVsZW0uaGlkZGVuICYmIGdldENvbXB1dGVkU3R5bGUoZWxlbSkuZGlzcGxheSA9
PT0gJ25vbmUnKQorICAgIH0KKyAgICBmdW5jdGlvbiBpbml0aWFsQ2hlY2tzQmVmb3JlUGxheSgp
IHsKKyAgICAgICAgLy8gQmVmb3JlIHdlIHN0YXJ0LCBjaGVjayB0byBtYWtlIHN1cmUgdG9vbGJh
ciBpcyBpbiBwbGFjZSBhbmQgc2hvd0NvbnRyb2xzYnV0dG9uIGlzIGhpZGRlbi4KKyAgICAgICAg
cmVzdWx0LmlubmVySFRNTCArPSAoIWlzRWxlbWVudEhpZGRlbihjb250cm9scykpPyAnUEFTUzxi
cj4nOiAnRkFJTDogQ29udHJvbHMgYXJlIG5vdCBhdmFpbGFibGUgYXQgdGhlIGJlZ2lubmluZy48
YnI+JzsKKyAgICAgICAgcmVzdWx0LmlubmVySFRNTCArPSAoaXNFbGVtZW50SGlkZGVuKGJ1dHRv
bikpPyAnUEFTUzxicj4nOiAnRkFJTDogIlNob3cgQ29udHJvbHMiIGJ1dHRvbiBpcyBub3QgaGlk
ZGVuIGluaXRpYWxseS48YnI+JzsKKworICAgICAgICB2aWRlby5wbGF5KCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gdGVzdFBsYXlpbmcoKSB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
Z2V0dGluZyB0aGUgdXBkYXRlZCByb290IGFuZCBidXR0b24uCisgICAgICAgIHJvb3QgPSBpbnRl
cm5hbHMuc2hhZG93Um9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKSk7CiAKLSAg
ICAgICAgLy8gTW91c2Ugb3ZlciB0aGUgdmlkZW8gdGhlbiBtb3VzZSBvdXQgdG8gaGlkZSBjb250
cm9scyBtb3JlIHF1aWNrbHkuCi0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEwMCwx
MDApOwotICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxLDEpOworICAgICAgICAvLyBX
ZSBnaXZlIGl0IGEgMTAwbXMgYnVmZmVyIGZvciB0aGUgdmlkZW8gdG8gc2V0IGFsbCB0aGUgcHJv
cGVydGllcyBiZWZvcmUgc2VuZGluZyBtb3VzZSBldmVudHMuCisgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgLy8gTW91c2Ugb3ZlciB0aGUgdmlkZW8gdGhlbiBt
b3VzZSBvdXQgdG8gaGlkZSBjb250cm9scyBtb3JlIHF1aWNrbHkuCisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbygxNTAsMTUwKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKDAsMCk7CisgICAgICAgIH0sIDEwMCk7CiAKKyAgICAgICAgLy8gMzAwbXMgYWZ0
ZXIgdGhlIG1vdXNlIGV2ZW50cywgYWxsIFVJIGNoYW5nZXMgc2hvdWxkIGNvbXBsZXRlIGFuZCB3
ZSBjYW4gc3RhcnQgbWFraW5nIGFzc2VydGlvbnMuCiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlc3VsdCIpOwotICAgICAgICAgICAgcmVzdWx0LmlubmVySFRNTCA9ICIiOwotICAgICAgICAg
ICAgdmFyIHJvb3QgPSBpbnRlcm5hbHMuc2hhZG93Um9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidmlkZW8iKSkKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdmFyIGJ1dHRvbiA9IHJvb3Qu
Zmlyc3RDaGlsZC5xdWVyeVNlbGVjdG9yKCdidXR0b24nKTsKLSAgICAgICAgICAgIGlmIChidXR0
b24pIHsKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBhcmUgZ2V0dGluZyB0aGUgbGF0ZXN0
IGNvcHkgb2YgdGhlIGVsZW1lbnQuCisgICAgICAgICAgICBjb250cm9scyA9IHJvb3QuZmlyc3RD
aGlsZC5xdWVyeVNlbGVjdG9yKCdbcm9sZT0idG9vbGJhciJdJyk7CisgICAgICAgICAgICByZXN1
bHQuaW5uZXJIVE1MICs9ICFjb250cm9scz8gJ1BBU1M8YnI+JzogJ0ZBSUw6IFRvb2xiYXIgc3Rp
bGwgYXJvdW5kIGFmdGVyIG1vdXNlb3V0Ljxicj4nOworCisgICAgICAgICAgICAvLyBNYWtlIHN1
cmUgd2UgYXJlIGdldHRpbmcgdGhlIGxhdGVzdCBjb3B5IG9mIHRoZSBlbGVtZW50LgorICAgICAg
ICAgICAgYnV0dG9uID0gcm9vdC5maXJzdENoaWxkLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpOwor
ICAgICAgICAgICAgcmVzdWx0LmlubmVySFRNTCArPSAhaXNFbGVtZW50SGlkZGVuKGJ1dHRvbik/
ICdQQVNTPGJyPic6ICdGQUlMOiBCdXR0b24gc2hvdWxkIGJlIHZpc2libGUuPGJyPic7CisKKyAg
ICAgICAgICAgIGlmKGJ1dHRvbiAmJiAhaXNFbGVtZW50SGlkZGVuKGJ1dHRvbikpIHsKICAgICAg
ICAgICAgICAgICBidXR0b24uZm9jdXMoKTsKLSAgICAgICAgICAgICAgICBldmVudFNlbmRlci5r
ZXlEb3duKCcgJyk7IC8vIFVzZSBrZXlib2FyZCB0byBwcmVzcyB0aGUgc2VsZWN0ZWQgYnV0dG9u
LgotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0LmlubmVySFRNTCAr
PSAnRkFJTDogIlNob3cgQ29udHJvbHMiIGJ1dHRvbiBpcyBub3QgYXZhaWxhYmxlLjxicj4nOwkK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCcgJyk7CisgICAgICAgICAgICB9
IGVsc2UgCisgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVySFRNTCArPSAnRkFJTDogIlNob3cg
Q29udHJvbHMiIGJ1dHRvbiBpcyBoaWRkZW4gb3IgdW5hdmFpbGFibGUuPGJyPic7CisKKyAgICAg
ICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBhcmUgZ2V0dGluZyB0aGUgbGF0ZXN0IGNvcHkgb2YgdGhl
IGVsZW1lbnQuCisgICAgICAgICAgICBjb250cm9scyA9IHJvb3QuZmlyc3RDaGlsZC5xdWVyeVNl
bGVjdG9yKCdbcm9sZT0idG9vbGJhciJdJyk7CisgICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1M
ICs9IGNvbnRyb2xzPyAnUEFTUzxicj4nOiAnRkFJTDogVG9vbGJhciBzaG91bGQgZXhpc3Q8YnI+
JzsKKworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTUwLDE1MCk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygwLDApOworCisgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBjb250cm9scyA9IHJvb3QuZmly
c3RDaGlsZC5xdWVyeVNlbGVjdG9yKCdbcm9sZT0idG9vbGJhciJdJyk7CisgICAgICAgICAgICAg
ICAgcmVzdWx0LmlubmVySFRNTCArPSAhY29udHJvbHM/ICdQQVNTPGJyPic6ICdGQUlMOiBUb29s
YmFyIHNob3VsZCBub3QgZXhpc3Q8YnI+JzsKKyAgICAgICAgICAgICAgICAvLyBXZSBhcmUgZG9u
ZSB0ZXN0aW5nIHBsYXlpbmcgc3RhdGUsIG1vdmluZyBvbiB0byB0ZXN0aW5nIHRoZSBwYXVzZWQg
c3RhdGUuCisgICAgICAgICAgICAgICAgdmlkZW8ucGF1c2UoKTsKKyAgICAgICAgICAgIH0sIDMw
MCk7CisgICAgICAgIH0sIDQwMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdFBhdXNpbmco
KSB7CisgICAgICAgIC8vIFdlIGFyZSBnaXZpbmcgMTAwbXMgKyAzMDBzIGJ1ZmZlciBmb3IgdGhl
IHZpZGVvIHRvIHNldCBpdHMgcHJvcGVydGllcyBhbmQgbWFrZSBVSSBjaGFuZ2VzLgorICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGNvbnRyb2xzID0gcm9vdC5m
aXJzdENoaWxkLnF1ZXJ5U2VsZWN0b3IoJ1tyb2xlPSJ0b29sYmFyIl0nKTsKKyAgICAgICAgICAg
IHJlc3VsdC5pbm5lckhUTUwgKz0gY29udHJvbHM/ICdQQVNTPGJyPic6ICdGQUlMOiBUb29sYmFy
IHNob3VsZCBleGlzdDxicj4nOwogCi0gICAgICAgICAgICAvLyBWZXJpZmllcyB0aGUgdG9vbGJh
ciBpcyBiYWNrIGluIHRoZSBET00uCi0gICAgICAgICAgICB2YXIgY29udHJvbHMgPSByb290LmZp
cnN0Q2hpbGQucXVlcnlTZWxlY3RvcignW3JvbGU9InRvb2xiYXIiXScpOwotICAgICAgICAgICAg
cmVzdWx0LmlubmVySFRNTCArPSBjb250cm9scyA/ICdQQVNTJzogJ0ZBSUw6IFRlc3QgZW5kaW5n
LCBidXQgdG9vbGJhciBpcyBub3QgdmlzaWJsZS4nOworICAgICAgICAgICAgYnV0dG9uID0gcm9v
dC5maXJzdENoaWxkLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpOworICAgICAgICAgICAgcmVzdWx0
LmlubmVySFRNTCArPSBpc0VsZW1lbnRIaWRkZW4oYnV0dG9uKT8gJ1BBU1M8YnI+JzogJ0ZBSUw6
IEJ1dHRvbiBzaG91bGQgbm90IGJlIHZpc2libGUuPGJyPic7CiAKICAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9LCAzMDApIC8vIFdhaXQgZm9yIHZpZGVvIHRv
b2xiYXIgdG8gaGlkZS4KKyAgICAgICAgfSwgNDAwKTsKICAgICB9CiA8L3NjcmlwdD4KIDwvYm9k
eT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>