<?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>164241</bug_id>
          
          <creation_ts>2016-10-31 14:57:17 -0700</creation_ts>
          <short_desc>Setting foreground color when text is selected should fire an input event with color data</short_desc>
          <delta_ts>2016-11-09 13:15:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</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>
          
          <blocked>163112</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1246606</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-31 14:57:17 -0700</bug_when>
    <thetext>1. Go to whsieh.github.io/examples/input-events
2. Type some text and select it
3. Set foreground color

- The data attribute of the input event should not be null, but it is!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246609</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-31 14:58:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/29032759&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246613</commentid>
    <comment_count>2</comment_count>
      <attachid>293472</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-31 15:02:38 -0700</bug_when>
    <thetext>Created attachment 293472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246663</commentid>
    <comment_count>3</comment_count>
      <attachid>293485</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-31 16:08:48 -0700</bug_when>
    <thetext>Created attachment 293485
Rebased on ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246712</commentid>
    <comment_count>4</comment_count>
      <attachid>293485</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-10-31 16:59:50 -0700</bug_when>
    <thetext>Comment on attachment 293485
Rebased on ToT

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

&gt; Source/WebCore/editing/ApplyStyleCommand.cpp:234
&gt; +String ApplyStyleCommand::inputEventData() const
&gt; +{
&gt; +    if (editingAction() != EditActionSetColor)
&gt; +        return CompositeEditCommand::inputEventData();
&gt; +
&gt; +    auto* styleProperties = m_style-&gt;style();
&gt; +    if (!styleProperties)
&gt; +        return { };
&gt; +
&gt; +    return styleProperties-&gt;getPropertyValue(CSSPropertyColor);
&gt; +}

This really needs to be done at the call site of ApplyStyleCommand.
See how toggleStyle, etc... works in EditorCommands.cpp
We need to set the input event&apos;s data there instead of trying to figure it out down in ApplyStyleCommand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246762</commentid>
    <comment_count>5</comment_count>
      <attachid>293508</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-31 18:32:14 -0700</bug_when>
    <thetext>Created attachment 293508
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248593</commentid>
    <comment_count>6</comment_count>
      <attachid>293508</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-05 22:58:13 -0700</bug_when>
    <thetext>Comment on attachment 293508
Patch

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

&gt; Source/WebCore/editing/Editor.cpp:794
&gt; +    auto* element = m_frame.selection().selection().rootEditableElement();

I think that likely this needs to be a RefPtr because this pointer is used after calling applyCommand, which I assume can run arbitrary JavaScript.

&gt; Source/WebCore/editing/Editor.cpp:800
&gt; +        if (selectionType == VisibleSelection::CaretSelection)
&gt; +            computeAndSetTypingStyle(*style, editingAction);
&gt; +
&gt; +        if (selectionType == VisibleSelection::RangeSelection)
&gt;              applyCommand(ApplyStyleCommand::create(document(), style.get(), editingAction));

I think a switch statement would be better than two if statements.

&gt; Source/WebCore/editing/Editor.cpp:803
&gt; +            dispatchInputEvent(*element, inputTypeName, inputEventData);

Are we sure it’s OK to dispatch this event before calling didApplyStyle, given the event could do additional editing before returning? I think that generally events need to be dispatched after all other code runs and before returning to JavaScript. We may want to come up with a system similar to the one used for custom elements, or share its system. Not just for this event, but many others.

&gt; Source/WebCore/editing/Editor.cpp:824
&gt; +    auto* element = m_frame.selection().selection().rootEditableElement();

Ditto.

&gt; Source/WebCore/editing/Editor.cpp:828
&gt; +            dispatchInputEvent(*element, inputTypeName);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248751</commentid>
    <comment_count>7</comment_count>
      <attachid>293508</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-11-07 08:24:52 -0800</bug_when>
    <thetext>Comment on attachment 293508
Patch

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

&gt;&gt; Source/WebCore/editing/Editor.cpp:794
&gt;&gt; +    auto* element = m_frame.selection().selection().rootEditableElement();
&gt; 
&gt; I think that likely this needs to be a RefPtr because this pointer is used after calling applyCommand, which I assume can run arbitrary JavaScript.

Good catch -- fixed.

&gt;&gt; Source/WebCore/editing/Editor.cpp:800
&gt;&gt;              applyCommand(ApplyStyleCommand::create(document(), style.get(), editingAction));
&gt; 
&gt; I think a switch statement would be better than two if statements.

Ok! Done.

&gt;&gt; Source/WebCore/editing/Editor.cpp:803
&gt;&gt; +            dispatchInputEvent(*element, inputTypeName, inputEventData);
&gt; 
&gt; Are we sure it’s OK to dispatch this event before calling didApplyStyle, given the event could do additional editing before returning? I think that generally events need to be dispatched after all other code runs and before returning to JavaScript. We may want to come up with a system similar to the one used for custom elements, or share its system. Not just for this event, but many others.

I see. It looks like we&apos;ve always dispatched the input event and then called didApplyStyle, so this patch maintains the current behavior. However, didApplyStyle is a no-op in WK2, and in WK1, it just updates the font selection panel by calling into -[WebHTMLView _updateFontPanel]. I&apos;ll move the input event dispatch to after we invoke didApplyStyle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249360</commentid>
    <comment_count>8</comment_count>
      <attachid>294246</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-11-09 11:09:39 -0800</bug_when>
    <thetext>Created attachment 294246
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249404</commentid>
    <comment_count>9</comment_count>
      <attachid>294246</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-09 12:07:56 -0800</bug_when>
    <thetext>Comment on attachment 294246
Patch for landing

Clearing flags on attachment: 294246

Committed r208461: &lt;http://trac.webkit.org/changeset/208461&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293472</attachid>
            <date>2016-10-31 15:02:38 -0700</date>
            <delta_ts>2016-10-31 16:08:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164241-20161031145842.patch</filename>
            <type>text/plain</type>
            <size>7625</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTRlMDY2OTcwMDUxODYz
OTQ0ZDVjY2M5M2Y2MTc4ZTEwZDQ2ZGNkYS4uYTA3ODE3YzVmMTA3MmVhY2Y3MGUwNzVmODE4N2Iz
OWE4ZjdlNGMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0IEBACiAyMDE2LTEwLTMxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCisgICAgICAgIFNldHRpbmcgZm9y
ZWdyb3VuZCBjb2xvciB3aGVuIHRleHQgaXMgc2VsZWN0ZWQgc2hvdWxkIGZpcmUgYW4gaW5wdXQg
ZXZlbnQgd2l0aCBjb2xvciBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjQyNDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MDMyNzU5Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIEFwcGx5
U3R5bGVDb21tYW5kLCB3ZSBuZWVkIHRvIG92ZXJyaWRlIGlucHV0RXZlbnREYXRhIHRvIHJldHVy
biB0aGUgY29sb3IgdmFsdWUgb2YgdGhlIHN0eWxlIGJlaW5nIGFwcGxpZWQgaWYKKyAgICAgICAg
aXRzIGVkaXRpbmcgYWN0aW9uIGluZGljYXRlcyB0aGF0IGl0IGlzIHNldHRpbmcgdGhlIGNvbG9y
LiBUaGlzIGlzIGJlY2F1c2UgaW4gRWRpdG9yOjphcHBseVN0eWxlLCBpZiB0aGUgdmlzaWJsZQor
ICAgICAgICBzZWxlY3Rpb24gaXMgYSByYW5nZSwgd2UgdGFrZSBhbiBhbHRlcm5hdGUgY29kZXBh
dGggdGhhdCBjcmVhdGVzIGFuIEFwcGx5U3R5bGVDb21tYW5kIGFuZCBhcHBsaWVzIGl0IGluc3Rl
YWQgb2YKKyAgICAgICAganVzdCBjYWxsaW5nIEVkaXRvcjo6Y29tcHV0ZUFuZFNldFR5cGluZ1N0
eWxlLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1zZWxlY3Rpb24t
Zm9yZWNvbG9yLWRhdGEuaHRtbAorCisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6aW5wdXRFdmVudERh
dGEpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaDoKKworMjAxNi0xMC0z
MSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwogICAgICAgICBbV0sx
XSBDYW5kaWRhdGUgdmlzaWJpbGl0eSBzaG91bGQgbm90IHVwZGF0ZSBhcyBhIHJlc3VsdCBvZiBz
ZWxlY3Rpb24gZHVyaW5nIGEgZGljdGlvbmFyeSBsb29rdXAKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDIzNgogICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMjg3NDc3MTI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5
bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
Y3BwCmluZGV4IDI2NmNmNjk3M2EzMDNmZDFhZWRjYWUwNGQyYjI4MjgxNDM1MjYwM2EuLjNjNjk2
YjA1NzY1MjVkN2Y2NzMyMmQxNzQyOGU5ZDljMGMzNGFjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC0yMjEsNiArMjIxLDE4IEBAIHZvaWQg
QXBwbHlTdHlsZUNvbW1hbmQ6OmRvQXBwbHkoKQogICAgIH0KIH0KIAorU3RyaW5nIEFwcGx5U3R5
bGVDb21tYW5kOjppbnB1dEV2ZW50RGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKGVkaXRpbmdBY3Rp
b24oKSAhPSBFZGl0QWN0aW9uU2V0Q29sb3IpCisgICAgICAgIHJldHVybiBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6aW5wdXRFdmVudERhdGEoKTsKKworICAgIGF1dG8qIHN0eWxlUHJvcGVydGllcyA9
IG1fc3R5bGUtPnN0eWxlKCk7CisgICAgaWYgKCFzdHlsZVByb3BlcnRpZXMpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICByZXR1cm4gc3R5bGVQcm9wZXJ0aWVzLT5nZXRQcm9wZXJ0eVZhbHVl
KENTU1Byb3BlcnR5Q29sb3IpOworfQorCiB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJs
b2NrU3R5bGUoRWRpdGluZ1N0eWxlICpzdHlsZSkKIHsKICAgICAvLyB1cGRhdGUgZG9jdW1lbnQg
bGF5b3V0IG9uY2UgYmVmb3JlIHJlbW92aW5nIHN0eWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BcHBseVN0eWxlQ29tbWFuZC5oCmluZGV4IDJlMTA2NTUwMjE4ODY1NTE2NTJmNjljMzZiYjZl
NDkxOTM0MTFkYjYuLjdlYmQ3MWM5Yzk2Yzc4MDg1MmE1OWJhZTU1NjJmMTc4YmRlYjUzZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgKQEAgLTcyLDYgKzcy
LDcgQEAgcHJpdmF0ZToKICAgICBBcHBseVN0eWxlQ29tbWFuZChEb2N1bWVudCYsIGNvbnN0IEVk
aXRpbmdTdHlsZSosIGJvb2wgKCppc0lubGluZUVsZW1lbnRUb1JlbW92ZSkoY29uc3QgRWxlbWVu
dCopLCBFZGl0QWN0aW9uKTsKIAogICAgIHZvaWQgZG9BcHBseSgpIG92ZXJyaWRlOworICAgIFN0
cmluZyBpbnB1dEV2ZW50RGF0YSgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gc3R5bGUtcmVtb3Zh
bCBoZWxwZXJzCiAgICAgYm9vbCBpc1N0eWxlZElubGluZUVsZW1lbnRUb1JlbW92ZShFbGVtZW50
KikgY29uc3Q7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMzdiZDllNTRmNzkwZDYzYWFlNzU4MjU1NWMyOTJjZWQxNTYzMTU5
NS4uZjhiYjVlY2EzYTJiYTM1NGFjMGQyOGYxNTJjNzA4ODMxODVkOTE4ZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDIwIEBACiAyMDE2LTEwLTMxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCisgICAgICAgIFNldHRpbmcgZm9yZWdyb3VuZCBjb2xvciB3aGVuIHRleHQgaXMgc2Vs
ZWN0ZWQgc2hvdWxkIGZpcmUgYW4gaW5wdXQgZXZlbnQgd2l0aCBjb2xvciBkYXRhCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQyNDEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzI5MDMyNzU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZHMgYSBuZXcgbGF5b3V0IHRlc3QgdmVyaWZ5aW5nIHRoYXQg
c2VsZWN0aW5nIHRleHQgYW5kIHNldHRpbmcgaXRzIGZvcmVncm91bmQgY29sb3Igd2lsbCBmaXJl
IGlucHV0IGV2ZW50cworICAgICAgICB3aXRoIHRoZSBjb3JyZWN0IFJHQiB2YWx1ZXMgaW4gdGhl
IGRhdGEgYXR0cmlidXRlLgorCisgICAgICAgICogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXNl
bGVjdGlvbi1mb3JlY29sb3ItZGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZXZlbnRzL2lucHV0LWV2ZW50cy1zZWxlY3Rpb24tZm9yZWNvbG9yLWRhdGEuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zOgor
CisyMDE2LTEwLTMxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCiAg
ICAgICAgIEhvbGRpbmcgZG93biBhIGtleSB0byBjaG9vc2UgYW4gYWNjZW50ZWQgY2hhcmFjdGVy
IHNob3VsZCBmaXJlICJpbnNlcnRSZXBsYWNlbWVudFRleHQiIGlucHV0IGV2ZW50cwogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjA5CiAgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yOTAxOTMwNT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2lucHV0LWV2ZW50cy1zZWxlY3Rpb24tZm9yZWNvbG9yLWRhdGEtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXNlbGVjdGlvbi1mb3JlY29s
b3ItZGF0YS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2NiYTU0ZTI2Yzc4ZTRjYTY2MWI2YjY3
OTI1N2Y3YzY4YmIwMjVhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2lucHV0LWV2ZW50cy1zZWxlY3Rpb24tZm9yZWNvbG9yLWRhdGEtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKK1RvIG1hbnVhbGx5IHRlc3QgdGhpcywgc2VsZWN0IHRoZSB0ZXh0IGFu
ZCBjaGFuZ2UgdGhlIGZvcmVncm91bmQgY29sb3IuCisKK1RoZSByZXN1bHRpbmcgZGVidWcgbWVz
c2FnZSBzaG91bGQgc2hvdyB0aGUgaW5wdXQgY29sb3IuCisKK1RoaXMgaXMgc29tZSB0ZXh0CitS
ZWNlaXZlZCBiZWZvcmVpbnB1dCBldmVudCB3aXRoIGRhdGE6ICJyZ2IoMjU1LCAyNTUsIDI1NSki
CitSZWNlaXZlZCBpbnB1dCBldmVudCB3aXRoIGRhdGE6ICJyZ2IoMjU1LCAyNTUsIDI1NSkiCitS
ZWNlaXZlZCBiZWZvcmVpbnB1dCBldmVudCB3aXRoIGRhdGE6ICJyZ2IoMTAwLCAyNTUsIDApIgor
UmVjZWl2ZWQgaW5wdXQgZXZlbnQgd2l0aCBkYXRhOiAicmdiKDEwMCwgMjU1LCAwKSIKK1JlY2Vp
dmVkIGJlZm9yZWlucHV0IGV2ZW50IHdpdGggZGF0YTogInJnYigwLCAwLCAwKSIKK1JlY2VpdmVk
IGlucHV0IGV2ZW50IHdpdGggZGF0YTogInJnYigwLCAwLCAwKSIKK1JlY2VpdmVkIGJlZm9yZWlu
cHV0IGV2ZW50IHdpdGggZGF0YTogInJnYigyNTUsIDAsIDApIgorUmVjZWl2ZWQgaW5wdXQgZXZl
bnQgd2l0aCBkYXRhOiAicmdiKDI1NSwgMCwgMCkiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1zZWxlY3Rpb24tZm9yZWNvbG9yLWRhdGEuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1zZWxlY3Rpb24tZm9yZWNvbG9y
LWRhdGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWM5ZjJmMTgxYzUyMTEzNzlhMWY0NTUwNTg0ZTA1NTk2
ZmUwMzA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQt
ZXZlbnRzLXNlbGVjdGlvbi1mb3JlY29sb3ItZGF0YS5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKyAgICA8cD5UbyBtYW51YWxseSB0ZXN0IHRo
aXMsIHNlbGVjdCB0aGUgdGV4dCBhbmQgY2hhbmdlIHRoZSBmb3JlZ3JvdW5kIGNvbG9yLjwvcD4K
KyAgICA8cD5UaGUgcmVzdWx0aW5nIGRlYnVnIG1lc3NhZ2Ugc2hvdWxkIHNob3cgdGhlIGlucHV0
IGNvbG9yLjwvcD4KKyAgICA8ZGl2IGlkPSJlZGl0YWJsZSIgY29udGVudGVkaXRhYmxlIG9uYmVm
b3JlaW5wdXQ9aGFuZGxlSW5wdXQoZXZlbnQpIG9uaW5wdXQ9aGFuZGxlSW5wdXQoZXZlbnQpPlRo
aXMgaXMgc29tZSB0ZXh0PC9kaXY+CisgICAgPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKyAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGxldCB3cml0ZSA9IHMgPT4g
b3V0cHV0LmlubmVySFRNTCArPSBzICsgIjxicj4iOworICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW5wdXRFdmVudHNFbmFibGVkKHRydWUpOworICAgICAg
ICB9CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXRhYmxlIikuZm9jdXMo
KTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIGRvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwiKTsKKyAgICAgICAgICAgIHNldEZvcmVDb2xvcigi
cmdiKDI1NSwgMjU1LCAyNTUpIik7CisgICAgICAgICAgICBzZXRGb3JlQ29sb3IoInJnYigxMDAs
IDI1NSwgMCkiKTsKKyAgICAgICAgICAgIHNldEZvcmVDb2xvcigicmdiKDAsIDAsIDApIik7Cisg
ICAgICAgICAgICBzZXRGb3JlQ29sb3IoInJnYigyNTUsIDAsIDApIik7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzZXRGb3JlQ29sb3IoY29sb3IpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBDb2xvciBpcyBwYXNzZWQgdHdpY2UgaGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGJv
dGggRHVtcFJlbmRlclRyZWUgYW5kIFdlYktpdFRlc3RSdW5uZXIuCisgICAgICAgICAgICB0ZXN0
UnVubmVyLmV4ZWNDb21tYW5kKCJGb3JlQ29sb3IiLCBjb2xvciwgY29sb3IpOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gaGFuZGxlSW5wdXQoZXZlbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChldmVudC5pbnB1dFR5cGUgPT09ICJmb3JtYXRGb3JlQ29sb3IiKQorICAgICAg
ICAgICAgICAgIHdyaXRlKGBSZWNlaXZlZCAke2V2ZW50LnR5cGV9IGV2ZW50IHdpdGggZGF0YTog
IiR7ZXZlbnQuZGF0YX0iYCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCBhNGY1NWUwODIzMzIwZjA3YmIwMTVjY2EyNTk4MGFjYjIzZGYzMmI2
Li4wOGMzOWY0ZjQ1ZjU1MjI3ZTg1ZDAzYjk4NGRiOWJhZDZmMzAwZjJlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zCkBAIC0x
MjEzLDYgKzEyMTMsNyBAQCBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtaW1lLXJlY29tcG9zaXRp
b24uaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLWltZS1jb21wb3Np
dGlvbi5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtcGFzdGUtcmlj
aC1kYXRhdHJhbnNmZXIuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRz
LXNwZWxsLWNoZWNraW5nLWRhdGF0cmFuc2Zlci5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2V2ZW50
cy9pbnB1dC1ldmVudHMtc2VsZWN0aW9uLWZvcmVjb2xvci1kYXRhLmh0bWwgWyBGYWlsdXJlIF0K
IGZhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1wcmV2ZW50LWluc2VydC1yZXBsYWNlbWVudC5odG1s
IFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtZXZlbnRzLXByZXZlbnQtZGVm
YXVsdC5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtZXZlbnRzLXBy
ZXZlbnQtZGVmYXVsdC1pbi10ZXh0ZmllbGQuaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293485</attachid>
            <date>2016-10-31 16:08:48 -0700</date>
            <delta_ts>2016-10-31 18:32:11 -0700</delta_ts>
            <desc>Rebased on ToT</desc>
            <filename>bug-164241-20161031160453.patch</filename>
            <type>text/plain</type>
            <size>7406</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRiMzAwOWZhNjViMjgy
NThiYWJiZGExOTg2NDkwYTU5YzY5NmJkOC4uYTBjOTlhNDg1MDE4MzRiNTllMTQ3ZjkxYjRhYWVk
MDA4NzAxOWI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTEwLTMxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFNldHRpbmcgZm9y
ZWdyb3VuZCBjb2xvciB3aGVuIHRleHQgaXMgc2VsZWN0ZWQgc2hvdWxkIGZpcmUgYW4gaW5wdXQg
ZXZlbnQgd2l0aCBjb2xvciBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjQyNDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MDMyNzU5Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIEFwcGx5
U3R5bGVDb21tYW5kLCB3ZSBuZWVkIHRvIG92ZXJyaWRlIGlucHV0RXZlbnREYXRhIHRvIHJldHVy
biB0aGUgY29sb3IgdmFsdWUgb2YgdGhlIHN0eWxlIGJlaW5nIGFwcGxpZWQgaWYKKyAgICAgICAg
aXRzIGVkaXRpbmcgYWN0aW9uIGluZGljYXRlcyB0aGF0IGl0IGlzIHNldHRpbmcgdGhlIGNvbG9y
LiBUaGlzIGlzIGJlY2F1c2UgaW4gRWRpdG9yOjphcHBseVN0eWxlLCBpZiB0aGUgdmlzaWJsZQor
ICAgICAgICBzZWxlY3Rpb24gaXMgYSByYW5nZSwgd2UgdGFrZSBhbiBhbHRlcm5hdGUgY29kZXBh
dGggdGhhdCBjcmVhdGVzIGFuIEFwcGx5U3R5bGVDb21tYW5kIGFuZCBhcHBsaWVzIGl0IGluc3Rl
YWQgb2YKKyAgICAgICAganVzdCBjYWxsaW5nIEVkaXRvcjo6Y29tcHV0ZUFuZFNldFR5cGluZ1N0
eWxlLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1zZWxlY3Rpb24t
Zm9yZWNvbG9yLWRhdGEuaHRtbAorCisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6aW5wdXRFdmVudERh
dGEpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaDoKKwogMjAxNi0xMC0z
MSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtNb2Rlcm4g
TWVkaWEgQ29udHJvbHNdIE1lZGlhIENvbnRyb2xsZXI6IFBsYWNhcmQgc3VwcG9ydApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCAyNjZjZjY5NzNh
MzAzZmQxYWVkY2FlMDRkMmIyODI4MTQzNTI2MDNhLi4zYzY5NmIwNTc2NTI1ZDdmNjczMjJkMTc0
MjhlOWQ5YzBjMzRhYzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcApAQCAtMjIxLDYgKzIyMSwxOCBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpk
b0FwcGx5KCkKICAgICB9CiB9CiAKK1N0cmluZyBBcHBseVN0eWxlQ29tbWFuZDo6aW5wdXRFdmVu
dERhdGEoKSBjb25zdAoreworICAgIGlmIChlZGl0aW5nQWN0aW9uKCkgIT0gRWRpdEFjdGlvblNl
dENvbG9yKQorICAgICAgICByZXR1cm4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmlucHV0RXZlbnRE
YXRhKCk7CisKKyAgICBhdXRvKiBzdHlsZVByb3BlcnRpZXMgPSBtX3N0eWxlLT5zdHlsZSgpOwor
ICAgIGlmICghc3R5bGVQcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0
dXJuIHN0eWxlUHJvcGVydGllcy0+Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKTsK
K30KKwogdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKEVkaXRpbmdTdHls
ZSAqc3R5bGUpCiB7CiAgICAgLy8gdXBkYXRlIGRvY3VtZW50IGxheW91dCBvbmNlIGJlZm9yZSBy
ZW1vdmluZyBzdHlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlT
dHlsZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
aAppbmRleCAyZTEwNjU1MDIxODg2NTUxNjUyZjY5YzM2YmI2ZTQ5MTkzNDExZGI2Li43ZWJkNzFj
OWM5NmM3ODA4NTJhNTliYWU1NTYyZjE3OGJkZWI1M2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCkBAIC03Miw2ICs3Miw3IEBAIHByaXZhdGU6CiAgICAg
QXBwbHlTdHlsZUNvbW1hbmQoRG9jdW1lbnQmLCBjb25zdCBFZGl0aW5nU3R5bGUqLCBib29sICgq
aXNJbmxpbmVFbGVtZW50VG9SZW1vdmUpKGNvbnN0IEVsZW1lbnQqKSwgRWRpdEFjdGlvbik7CiAK
ICAgICB2b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgaW5wdXRFdmVudERhdGEo
KSBjb25zdCBmaW5hbDsKIAogICAgIC8vIHN0eWxlLXJlbW92YWwgaGVscGVycwogICAgIGJvb2wg
aXNTdHlsZWRJbmxpbmVFbGVtZW50VG9SZW1vdmUoRWxlbWVudCopIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVm
NTBmYzdiMTczZmE3YjE5N2IxMzMzZDQ0MWNmNDRmZmNmZTFhY2YuLjdhMmYwZjQ3NDc2OGE2NGE3
YTA5ZDhiZmMzMzQwYzcyMGE2YTNjMWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0xMC0z
MSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTZXR0
aW5nIGZvcmVncm91bmQgY29sb3Igd2hlbiB0ZXh0IGlzIHNlbGVjdGVkIHNob3VsZCBmaXJlIGFu
IGlucHV0IGV2ZW50IHdpdGggY29sb3IgZGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTAz
Mjc1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRzIGEgbmV3IGxheW91dCB0ZXN0IHZlcmlmeWluZyB0aGF0IHNlbGVjdGluZyB0ZXh0IGFuZCBz
ZXR0aW5nIGl0cyBmb3JlZ3JvdW5kIGNvbG9yIHdpbGwgZmlyZSBpbnB1dCBldmVudHMKKyAgICAg
ICAgd2l0aCB0aGUgY29ycmVjdCBSR0IgdmFsdWVzIGluIHRoZSBkYXRhIGF0dHJpYnV0ZS4KKwor
ICAgICAgICAqIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1zZWxlY3Rpb24tZm9yZWNvbG9yLWRh
dGEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pbnB1dC1ldmVu
dHMtc2VsZWN0aW9uLWZvcmVjb2xvci1kYXRhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxNi0xMC0zMSAgUnlhbiBI
YWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBTa2lwcGluZyBtZWRpYS9t
b2Rlcm4tbWVkaWEtY29udHJvbHMvdm9sdW1lLXN1cHBvcnQvdm9sdW1lLXN1cHBvcnQtbWVkaWEt
YXBpLmh0bWwgb24gaW9zLXNpbXVsYXRvci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2lucHV0LWV2ZW50cy1zZWxlY3Rpb24tZm9yZWNvbG9yLWRhdGEtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXNlbGVjdGlvbi1mb3JlY29s
b3ItZGF0YS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2NiYTU0ZTI2Yzc4ZTRjYTY2MWI2YjY3
OTI1N2Y3YzY4YmIwMjVhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2lucHV0LWV2ZW50cy1zZWxlY3Rpb24tZm9yZWNvbG9yLWRhdGEtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKK1RvIG1hbnVhbGx5IHRlc3QgdGhpcywgc2VsZWN0IHRoZSB0ZXh0IGFu
ZCBjaGFuZ2UgdGhlIGZvcmVncm91bmQgY29sb3IuCisKK1RoZSByZXN1bHRpbmcgZGVidWcgbWVz
c2FnZSBzaG91bGQgc2hvdyB0aGUgaW5wdXQgY29sb3IuCisKK1RoaXMgaXMgc29tZSB0ZXh0CitS
ZWNlaXZlZCBiZWZvcmVpbnB1dCBldmVudCB3aXRoIGRhdGE6ICJyZ2IoMjU1LCAyNTUsIDI1NSki
CitSZWNlaXZlZCBpbnB1dCBldmVudCB3aXRoIGRhdGE6ICJyZ2IoMjU1LCAyNTUsIDI1NSkiCitS
ZWNlaXZlZCBiZWZvcmVpbnB1dCBldmVudCB3aXRoIGRhdGE6ICJyZ2IoMTAwLCAyNTUsIDApIgor
UmVjZWl2ZWQgaW5wdXQgZXZlbnQgd2l0aCBkYXRhOiAicmdiKDEwMCwgMjU1LCAwKSIKK1JlY2Vp
dmVkIGJlZm9yZWlucHV0IGV2ZW50IHdpdGggZGF0YTogInJnYigwLCAwLCAwKSIKK1JlY2VpdmVk
IGlucHV0IGV2ZW50IHdpdGggZGF0YTogInJnYigwLCAwLCAwKSIKK1JlY2VpdmVkIGJlZm9yZWlu
cHV0IGV2ZW50IHdpdGggZGF0YTogInJnYigyNTUsIDAsIDApIgorUmVjZWl2ZWQgaW5wdXQgZXZl
bnQgd2l0aCBkYXRhOiAicmdiKDI1NSwgMCwgMCkiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1zZWxlY3Rpb24tZm9yZWNvbG9yLWRhdGEuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1zZWxlY3Rpb24tZm9yZWNvbG9y
LWRhdGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWM5ZjJmMTgxYzUyMTEzNzlhMWY0NTUwNTg0ZTA1NTk2
ZmUwMzA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQt
ZXZlbnRzLXNlbGVjdGlvbi1mb3JlY29sb3ItZGF0YS5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKyAgICA8cD5UbyBtYW51YWxseSB0ZXN0IHRo
aXMsIHNlbGVjdCB0aGUgdGV4dCBhbmQgY2hhbmdlIHRoZSBmb3JlZ3JvdW5kIGNvbG9yLjwvcD4K
KyAgICA8cD5UaGUgcmVzdWx0aW5nIGRlYnVnIG1lc3NhZ2Ugc2hvdWxkIHNob3cgdGhlIGlucHV0
IGNvbG9yLjwvcD4KKyAgICA8ZGl2IGlkPSJlZGl0YWJsZSIgY29udGVudGVkaXRhYmxlIG9uYmVm
b3JlaW5wdXQ9aGFuZGxlSW5wdXQoZXZlbnQpIG9uaW5wdXQ9aGFuZGxlSW5wdXQoZXZlbnQpPlRo
aXMgaXMgc29tZSB0ZXh0PC9kaXY+CisgICAgPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKyAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGxldCB3cml0ZSA9IHMgPT4g
b3V0cHV0LmlubmVySFRNTCArPSBzICsgIjxicj4iOworICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAg
ICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW5wdXRFdmVudHNFbmFibGVkKHRydWUpOworICAgICAg
ICB9CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXRhYmxlIikuZm9jdXMo
KTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIGRvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwiKTsKKyAgICAgICAgICAgIHNldEZvcmVDb2xvcigi
cmdiKDI1NSwgMjU1LCAyNTUpIik7CisgICAgICAgICAgICBzZXRGb3JlQ29sb3IoInJnYigxMDAs
IDI1NSwgMCkiKTsKKyAgICAgICAgICAgIHNldEZvcmVDb2xvcigicmdiKDAsIDAsIDApIik7Cisg
ICAgICAgICAgICBzZXRGb3JlQ29sb3IoInJnYigyNTUsIDAsIDApIik7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzZXRGb3JlQ29sb3IoY29sb3IpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBDb2xvciBpcyBwYXNzZWQgdHdpY2UgaGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGJv
dGggRHVtcFJlbmRlclRyZWUgYW5kIFdlYktpdFRlc3RSdW5uZXIuCisgICAgICAgICAgICB0ZXN0
UnVubmVyLmV4ZWNDb21tYW5kKCJGb3JlQ29sb3IiLCBjb2xvciwgY29sb3IpOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gaGFuZGxlSW5wdXQoZXZlbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChldmVudC5pbnB1dFR5cGUgPT09ICJmb3JtYXRGb3JlQ29sb3IiKQorICAgICAg
ICAgICAgICAgIHdyaXRlKGBSZWNlaXZlZCAke2V2ZW50LnR5cGV9IGV2ZW50IHdpdGggZGF0YTog
IiR7ZXZlbnQuZGF0YX0iYCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCAyYTg1OTI0MjkxNGVkZGI3MTU5OTA0ZDA0Zjk2ZDZlYzYzMzNkMDdj
Li43NDA5NzI5MDc4NTAzM2ViZDQxZmMyMmExZWYwMjY5ODcwOWEwZDE2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zCkBAIC0x
MjEyLDYgKzEyMTIsNyBAQCBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtaW1lLXJlY29tcG9zaXRp
b24uaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLWltZS1jb21wb3Np
dGlvbi5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtcGFzdGUtcmlj
aC1kYXRhdHJhbnNmZXIuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRz
LXNwZWxsLWNoZWNraW5nLWRhdGF0cmFuc2Zlci5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2V2ZW50
cy9pbnB1dC1ldmVudHMtc2VsZWN0aW9uLWZvcmVjb2xvci1kYXRhLmh0bWwgWyBGYWlsdXJlIF0K
IGZhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1ldmVudHMtcHJldmVudC1kZWZhdWx0Lmh0bWwgWyBG
YWlsdXJlIF0KIGZhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1ldmVudHMtcHJldmVudC1kZWZhdWx0
LWluLXRleHRmaWVsZC5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQt
ZXZlbnRzLWRpZmZlcmVudC1zdGFydC1lbmQtZWxlbWVudHMuaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293508</attachid>
            <date>2016-10-31 18:32:14 -0700</date>
            <delta_ts>2016-11-05 22:58:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164241-20161031182818.patch</filename>
            <type>text/plain</type>
            <size>12410</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRiMzAwOWZhNjViMjgy
NThiYWJiZGExOTg2NDkwYTU5YzY5NmJkOC4uOGRmMTBlNzUwNzlhMTU0NTg4MzI2OTc3NDk2Yzdj
ODhmNGMzNjQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTEwLTMxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFNldHRpbmcgZm9y
ZWdyb3VuZCBjb2xvciB3aGVuIHRleHQgaXMgc2VsZWN0ZWQgc2hvdWxkIGZpcmUgYW4gaW5wdXQg
ZXZlbnQgd2l0aCBjb2xvciBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjQyNDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MDMyNzU5Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9y
cyBFZGl0b3I6OmFwcGx5U3R5bGUgYW5kIEVkaXRvcjo6YXBwbHlQYXJhZ3JhcGhTdHlsZSB0byBo
YW5kbGUgYmVmb3JlaW5wdXQgYW5kIGlucHV0IGV2ZW50IGRpc3BhdGNoLgorICAgICAgICBJbnN0
ZWFkIG9mIGdvaW5nIHRocm91Z2ggdGhlIEFwcGx5U3R5bGVDb21tYW5kIHRvIGRpc3BhdGNoIGlu
cHV0IGV2ZW50cywgb3ZlcnJpZGUgc2hvdWxkRGlzcGF0Y2hJbnB1dEV2ZW50cyB0bworICAgICAg
ICByZXR1cm4gZmFsc2UuIFRoaXMgc3RyYXRlZ3kgYWxzbyBoYXMgdGhlIGVmZmVjdCBvZiB1bmlm
eWluZyB0aGUgd2F5IGlucHV0IGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCBpbiBhcHBseVN0eWxlLAor
ICAgICAgICBpbiBib3RoIGNvZGVwYXRocyB3aGVyZSB3ZSBjb21wdXRlQW5kU2V0VHlwaW5nU3R5
bGUgYW5kIHdoZXJlIHdlIGNyZWF0ZSBhbmQgdGhlbiBhcHBseSBhIHN0eWxlIGNvbW1hbmQuCisK
KyAgICAgICAgVGVzdDogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXNlbGVjdGlvbi1mb3JlY29s
b3ItZGF0YS5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmg6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5wdXRFdmVu
dERhdGFGb3JFZGl0aW5nU3R5bGVBbmRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjphcHBseVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlQYXJhZ3JhcGhT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNvbXB1dGVBbmRTZXRUeXBpbmdTdHls
ZSk6CisKIDIwMTYtMTAtMzEgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTW9kZXJuIE1lZGlhIENvbnRyb2xzXSBNZWRpYSBDb250cm9sbGVyOiBQbGFjYXJk
IHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAppbmRl
eCAyZTEwNjU1MDIxODg2NTUxNjUyZjY5YzM2YmI2ZTQ5MTkzNDExZGI2Li5mODg5ZmYzNWU0NDk2
ZmM3NTM5ZDRmMjUyZjA5ZWQxN2ZjOTBkNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
cHBseVN0eWxlQ29tbWFuZC5oCkBAIC03Miw2ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgQXBwbHlT
dHlsZUNvbW1hbmQoRG9jdW1lbnQmLCBjb25zdCBFZGl0aW5nU3R5bGUqLCBib29sICgqaXNJbmxp
bmVFbGVtZW50VG9SZW1vdmUpKGNvbnN0IEVsZW1lbnQqKSwgRWRpdEFjdGlvbik7CiAKICAgICB2
b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZERpc3BhdGNoSW5wdXRFdmVu
dHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gc3R5bGUtcmVtb3Zh
bCBoZWxwZXJzCiAgICAgYm9vbCBpc1N0eWxlZElubGluZUVsZW1lbnRUb1JlbW92ZShFbGVtZW50
KikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYzczNGNhZjI5NDNlNDFk
NDA5NDczZWNlOWUxNTk0OWU0ZTEyZmU1Ny4uN2ZhMzYyNjk2NmUwZGI4NGQ2NDY4ODk4NjFkYzgw
ZmQwZTIwYmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTIyLDIwICsxMjIs
MjQgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hJbnB1dEV2ZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW5wdXRUeXBlLAogICAgICAgICBlbGVtZW50LmRpc3BhdGNoSW5w
dXRFdmVudCgpOwogfQogCi1zdGF0aWMgU3RyaW5nIGlucHV0RXZlbnREYXRhRm9yRWRpdGluZ1N0
eWxlQW5kQWN0aW9uKEVkaXRpbmdTdHlsZSYgc3R5bGUsIEVkaXRBY3Rpb24gYWN0aW9uKQorc3Rh
dGljIFN0cmluZyBpbnB1dEV2ZW50RGF0YUZvckVkaXRpbmdTdHlsZUFuZEFjdGlvbihjb25zdCBT
dHlsZVByb3BlcnRpZXMqIHN0eWxlLCBFZGl0QWN0aW9uIGFjdGlvbikKIHsKLSAgICBhdXRvKiBw
cm9wZXJ0aWVzID0gc3R5bGUuc3R5bGUoKTsKLSAgICBpZiAoIXByb3BlcnRpZXMpCisgICAgaWYg
KCFzdHlsZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAg
ICAgY2FzZSBFZGl0QWN0aW9uU2V0Q29sb3I6Ci0gICAgICAgIHJldHVybiBwcm9wZXJ0aWVzLT5n
ZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5Q29sb3IpOworICAgICAgICByZXR1cm4gc3R5bGUt
PmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlDb2xvcik7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CiB9CiAKK3N0YXRpYyBTdHJpbmcgaW5wdXRFdmVudERhdGFG
b3JFZGl0aW5nU3R5bGVBbmRBY3Rpb24oRWRpdGluZ1N0eWxlJiBzdHlsZSwgRWRpdEFjdGlvbiBh
Y3Rpb24pCit7CisgICAgcmV0dXJuIGlucHV0RXZlbnREYXRhRm9yRWRpdGluZ1N0eWxlQW5kQWN0
aW9uKHN0eWxlLnN0eWxlKCksIGFjdGlvbik7Cit9CisKIGNsYXNzIENsZWFyVGV4dENvbW1hbmQg
OiBwdWJsaWMgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZCB7CiBwdWJsaWM6CiAgICAgQ2xlYXJUZXh0
Q29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQpOwpAQCAtNzcyLDMzICs3NzYsMzMgQEAgTm9kZSog
RWRpdG9yOjpmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCkgY29uc3QKIAogdm9pZCBFZGl0
b3I6OmFwcGx5U3R5bGUoU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSwgRWRpdEFjdGlvbiBlZGl0aW5n
QWN0aW9uKQogewotICAgIHN3aXRjaCAobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb25UeXBlKCkpIHsKLSAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246Ok5vU2VsZWN0aW9u
OgotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpDYXJldFNlbGVj
dGlvbjoKLSAgICAgICAgY29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKEVkaXRpbmdTdHlsZTo6Y3Jl
YXRlKHN0eWxlKSwgZWRpdGluZ0FjdGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlz
aWJsZVNlbGVjdGlvbjo6UmFuZ2VTZWxlY3Rpb246Ci0gICAgICAgIGlmIChzdHlsZSkKLSAgICAg
ICAgICAgIGFwcGx5Q29tbWFuZChBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCks
IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHN0eWxlKS5wdHIoKSwgZWRpdGluZ0FjdGlvbikpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0gICAgY2xpZW50KCktPmRpZEFwcGx5U3R5bGUoKTsKKyAgICBp
ZiAoc3R5bGUpCisgICAgICAgIGFwcGx5U3R5bGUoRWRpdGluZ1N0eWxlOjpjcmVhdGUoc3R5bGUp
LCBlZGl0aW5nQWN0aW9uKTsKIH0KIAogdm9pZCBFZGl0b3I6OmFwcGx5U3R5bGUoUmVmUHRyPEVk
aXRpbmdTdHlsZT4mJiBzdHlsZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKQogewotICAgIHN3
aXRjaCAobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb25UeXBlKCkpIHsK
LSAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246Ok5vU2VsZWN0aW9uOgorICAgIGlmICghc3R5bGUp
CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OkNhcmV0U2VsZWN0
aW9uOgotICAgICAgICBjb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUoKnN0eWxlLCBlZGl0aW5nQWN0
aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpSYW5nZVNl
bGVjdGlvbjoKLSAgICAgICAgaWYgKHN0eWxlKQorCisgICAgYXV0byBzZWxlY3Rpb25UeXBlID0g
bV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb25UeXBlKCk7CisgICAgaWYg
KHNlbGVjdGlvblR5cGUgPT0gVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rpb24pCisgICAgICAg
IHJldHVybjsKKworICAgIFN0cmluZyBpbnB1dFR5cGVOYW1lID0gaW5wdXRUeXBlTmFtZUZvckVk
aXRpbmdBY3Rpb24oZWRpdGluZ0FjdGlvbik7CisgICAgU3RyaW5nIGlucHV0RXZlbnREYXRhID0g
aW5wdXRFdmVudERhdGFGb3JFZGl0aW5nU3R5bGVBbmRBY3Rpb24oKnN0eWxlLCBlZGl0aW5nQWN0
aW9uKTsKKyAgICBhdXRvKiBlbGVtZW50ID0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5yb290RWRpdGFibGVFbGVtZW50KCk7CisgICAgaWYgKCFlbGVtZW50IHx8IGRpc3BhdGNoQmVm
b3JlSW5wdXRFdmVudCgqZWxlbWVudCwgaW5wdXRUeXBlTmFtZSwgaW5wdXRFdmVudERhdGEpKSB7
CisgICAgICAgIGlmIChzZWxlY3Rpb25UeXBlID09IFZpc2libGVTZWxlY3Rpb246OkNhcmV0U2Vs
ZWN0aW9uKQorICAgICAgICAgICAgY29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKCpzdHlsZSwgZWRp
dGluZ0FjdGlvbik7CisKKyAgICAgICAgaWYgKHNlbGVjdGlvblR5cGUgPT0gVmlzaWJsZVNlbGVj
dGlvbjo6UmFuZ2VTZWxlY3Rpb24pCiAgICAgICAgICAgICBhcHBseUNvbW1hbmQoQXBwbHlTdHls
ZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBzdHlsZS5nZXQoKSwgZWRpdGluZ0FjdGlvbikp
OwotICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoZWxlbWVudCkKKyAgICAgICAgICAgIGRp
c3BhdGNoSW5wdXRFdmVudCgqZWxlbWVudCwgaW5wdXRUeXBlTmFtZSwgaW5wdXRFdmVudERhdGEp
OwogICAgIH0KKwogICAgIGNsaWVudCgpLT5kaWRBcHBseVN0eWxlKCk7CiB9CiAgICAgCkBAIC04
MDksMTQgKzgxMywxOSBAQCBib29sIEVkaXRvcjo6c2hvdWxkQXBwbHlTdHlsZShTdHlsZVByb3Bl
cnRpZXMqIHN0eWxlLCBSYW5nZSogcmFuZ2UpCiAgICAgCiB2b2lkIEVkaXRvcjo6YXBwbHlQYXJh
Z3JhcGhTdHlsZShTdHlsZVByb3BlcnRpZXMqIHN0eWxlLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rp
b24pCiB7Ci0gICAgc3dpdGNoIChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnNlbGVj
dGlvblR5cGUoKSkgewotICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rpb246Cisg
ICAgaWYgKCFzdHlsZSkKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlv
bjo6Q2FyZXRTZWxlY3Rpb246Ci0gICAgY2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpSYW5nZVNlbGVj
dGlvbjoKLSAgICAgICAgaWYgKHN0eWxlKQotICAgICAgICAgICAgYXBwbHlDb21tYW5kKEFwcGx5
U3R5bGVDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgRWRpdGluZ1N0eWxlOjpjcmVhdGUoc3R5
bGUpLnB0cigpLCBlZGl0aW5nQWN0aW9uLCBBcHBseVN0eWxlQ29tbWFuZDo6Rm9yY2VCbG9ja1By
b3BlcnRpZXMpKTsKLSAgICAgICAgYnJlYWs7CisKKyAgICBhdXRvIHNlbGVjdGlvblR5cGUgPSBt
X2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnNlbGVjdGlvblR5cGUoKTsKKyAgICBpZiAo
c2VsZWN0aW9uVHlwZSA9PSBWaXNpYmxlU2VsZWN0aW9uOjpOb1NlbGVjdGlvbikKKyAgICAgICAg
cmV0dXJuOworCisgICAgU3RyaW5nIGlucHV0VHlwZU5hbWUgPSBpbnB1dFR5cGVOYW1lRm9yRWRp
dGluZ0FjdGlvbihlZGl0aW5nQWN0aW9uKTsKKyAgICBhdXRvKiBlbGVtZW50ID0gbV9mcmFtZS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCk7CisgICAgaWYgKCFl
bGVtZW50IHx8IGRpc3BhdGNoQmVmb3JlSW5wdXRFdmVudCgqZWxlbWVudCwgaW5wdXRUeXBlTmFt
ZSkpIHsKKyAgICAgICAgYXBwbHlDb21tYW5kKEFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUoZG9j
dW1lbnQoKSwgRWRpdGluZ1N0eWxlOjpjcmVhdGUoc3R5bGUpLnB0cigpLCBlZGl0aW5nQWN0aW9u
LCBBcHBseVN0eWxlQ29tbWFuZDo6Rm9yY2VCbG9ja1Byb3BlcnRpZXMpKTsKKyAgICAgICAgaWYg
KGVsZW1lbnQpCisgICAgICAgICAgICBkaXNwYXRjaElucHV0RXZlbnQoKmVsZW1lbnQsIGlucHV0
VHlwZU5hbWUpOwogICAgIH0KICAgICBjbGllbnQoKS0+ZGlkQXBwbHlTdHlsZSgpOwogfQpAQCAt
Mjk4NSwxMiArMjk5NCw2IEBAIHZvaWQgRWRpdG9yOjpjb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUo
RWRpdGluZ1N0eWxlJiBzdHlsZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBTdHJpbmcgaW5wdXRUeXBlTmFtZSA9IGlucHV0VHlwZU5hbWVGb3JF
ZGl0aW5nQWN0aW9uKGVkaXRpbmdBY3Rpb24pOwotICAgIFN0cmluZyBpbnB1dEV2ZW50RGF0YSA9
IGlucHV0RXZlbnREYXRhRm9yRWRpdGluZ1N0eWxlQW5kQWN0aW9uKHN0eWxlLCBlZGl0aW5nQWN0
aW9uKTsKLSAgICBhdXRvKiBlbGVtZW50ID0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5yb290RWRpdGFibGVFbGVtZW50KCk7Ci0gICAgaWYgKGVsZW1lbnQgJiYgIWRpc3BhdGNoQmVm
b3JlSW5wdXRFdmVudCgqZWxlbWVudCwgaW5wdXRUeXBlTmFtZSwgaW5wdXRFdmVudERhdGEpKQot
ICAgICAgICByZXR1cm47Ci0KICAgICAvLyBDYWxjdWxhdGUgdGhlIGN1cnJlbnQgdHlwaW5nIHN0
eWxlLgogICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHR5cGluZ1N0eWxlOwogICAgIGlmIChhdXRv
IGV4aXN0aW5nVHlwaW5nU3R5bGUgPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnR5cGluZ1N0eWxlKCkp
CkBAIC0zMDA0LDkgKzMwMDcsNiBAQCB2b2lkIEVkaXRvcjo6Y29tcHV0ZUFuZFNldFR5cGluZ1N0
eWxlKEVkaXRpbmdTdHlsZSYgc3R5bGUsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdAogICAgIGlmICgh
YmxvY2tTdHlsZS0+aXNFbXB0eSgpKQogICAgICAgICBhcHBseUNvbW1hbmQoQXBwbHlTdHlsZUNv
bW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBibG9ja1N0eWxlLmdldCgpLCBlZGl0aW5nQWN0aW9u
KSk7CiAKLSAgICBpZiAoZWxlbWVudCkKLSAgICAgICAgZGlzcGF0Y2hJbnB1dEV2ZW50KCplbGVt
ZW50LCBpbnB1dFR5cGVOYW1lLCBpbnB1dEV2ZW50RGF0YSk7Ci0KICAgICAvLyBTZXQgdGhlIHJl
bWFpbmluZyBzdHlsZSBhcyB0aGUgdHlwaW5nIHN0eWxlLgogICAgIG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2V0VHlwaW5nU3R5bGUodHlwaW5nU3R5bGUpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVmNTBmYzdiMTczZmE3
YjE5N2IxMzMzZDQ0MWNmNDRmZmNmZTFhY2YuLjdhMmYwZjQ3NDc2OGE2NGE3YTA5ZDhiZmMzMzQw
YzcyMGE2YTNjMWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0xMC0zMSAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTZXR0aW5nIGZvcmVncm91
bmQgY29sb3Igd2hlbiB0ZXh0IGlzIHNlbGVjdGVkIHNob3VsZCBmaXJlIGFuIGlucHV0IGV2ZW50
IHdpdGggY29sb3IgZGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY0MjQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTAzMjc1OT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgbmV3IGxh
eW91dCB0ZXN0IHZlcmlmeWluZyB0aGF0IHNlbGVjdGluZyB0ZXh0IGFuZCBzZXR0aW5nIGl0cyBm
b3JlZ3JvdW5kIGNvbG9yIHdpbGwgZmlyZSBpbnB1dCBldmVudHMKKyAgICAgICAgd2l0aCB0aGUg
Y29ycmVjdCBSR0IgdmFsdWVzIGluIHRoZSBkYXRhIGF0dHJpYnV0ZS4KKworICAgICAgICAqIGZh
c3QvZXZlbnRzL2lucHV0LWV2ZW50cy1zZWxlY3Rpb24tZm9yZWNvbG9yLWRhdGEtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtc2VsZWN0aW9u
LWZvcmVjb2xvci1kYXRhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy1zaW11
bGF0b3IvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxNi0xMC0zMSAgUnlhbiBIYWRkYWQgIDxyeWFu
aGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBTa2lwcGluZyBtZWRpYS9tb2Rlcm4tbWVkaWEt
Y29udHJvbHMvdm9sdW1lLXN1cHBvcnQvdm9sdW1lLXN1cHBvcnQtbWVkaWEtYXBpLmh0bWwgb24g
aW9zLXNpbXVsYXRvci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0
LWV2ZW50cy1zZWxlY3Rpb24tZm9yZWNvbG9yLWRhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXNlbGVjdGlvbi1mb3JlY29sb3ItZGF0YS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2NiYTU0ZTI2Yzc4ZTRjYTY2MWI2YjY3OTI1N2Y3YzY4YmIw
MjVhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2
ZW50cy1zZWxlY3Rpb24tZm9yZWNvbG9yLWRhdGEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1RvIG1hbnVhbGx5IHRlc3QgdGhpcywgc2VsZWN0IHRoZSB0ZXh0IGFuZCBjaGFuZ2UgdGhl
IGZvcmVncm91bmQgY29sb3IuCisKK1RoZSByZXN1bHRpbmcgZGVidWcgbWVzc2FnZSBzaG91bGQg
c2hvdyB0aGUgaW5wdXQgY29sb3IuCisKK1RoaXMgaXMgc29tZSB0ZXh0CitSZWNlaXZlZCBiZWZv
cmVpbnB1dCBldmVudCB3aXRoIGRhdGE6ICJyZ2IoMjU1LCAyNTUsIDI1NSkiCitSZWNlaXZlZCBp
bnB1dCBldmVudCB3aXRoIGRhdGE6ICJyZ2IoMjU1LCAyNTUsIDI1NSkiCitSZWNlaXZlZCBiZWZv
cmVpbnB1dCBldmVudCB3aXRoIGRhdGE6ICJyZ2IoMTAwLCAyNTUsIDApIgorUmVjZWl2ZWQgaW5w
dXQgZXZlbnQgd2l0aCBkYXRhOiAicmdiKDEwMCwgMjU1LCAwKSIKK1JlY2VpdmVkIGJlZm9yZWlu
cHV0IGV2ZW50IHdpdGggZGF0YTogInJnYigwLCAwLCAwKSIKK1JlY2VpdmVkIGlucHV0IGV2ZW50
IHdpdGggZGF0YTogInJnYigwLCAwLCAwKSIKK1JlY2VpdmVkIGJlZm9yZWlucHV0IGV2ZW50IHdp
dGggZGF0YTogInJnYigyNTUsIDAsIDApIgorUmVjZWl2ZWQgaW5wdXQgZXZlbnQgd2l0aCBkYXRh
OiAicmdiKDI1NSwgMCwgMCkiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2lucHV0LWV2ZW50cy1zZWxlY3Rpb24tZm9yZWNvbG9yLWRhdGEuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1zZWxlY3Rpb24tZm9yZWNvbG9yLWRhdGEuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZWM5ZjJmMTgxYzUyMTEzNzlhMWY0NTUwNTg0ZTA1NTk2ZmUwMzA2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXNlbGVj
dGlvbi1mb3JlY29sb3ItZGF0YS5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8Ym9keT4KKyAgICA8cD5UbyBtYW51YWxseSB0ZXN0IHRoaXMsIHNlbGVjdCB0
aGUgdGV4dCBhbmQgY2hhbmdlIHRoZSBmb3JlZ3JvdW5kIGNvbG9yLjwvcD4KKyAgICA8cD5UaGUg
cmVzdWx0aW5nIGRlYnVnIG1lc3NhZ2Ugc2hvdWxkIHNob3cgdGhlIGlucHV0IGNvbG9yLjwvcD4K
KyAgICA8ZGl2IGlkPSJlZGl0YWJsZSIgY29udGVudGVkaXRhYmxlIG9uYmVmb3JlaW5wdXQ9aGFu
ZGxlSW5wdXQoZXZlbnQpIG9uaW5wdXQ9aGFuZGxlSW5wdXQoZXZlbnQpPlRoaXMgaXMgc29tZSB0
ZXh0PC9kaXY+CisgICAgPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKyAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGxldCB3cml0ZSA9IHMgPT4gb3V0cHV0LmlubmVy
SFRNTCArPSBzICsgIjxicj4iOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0SW5wdXRFdmVudHNFbmFibGVkKHRydWUpOworICAgICAgICB9CisKKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXRhYmxlIikuZm9jdXMoKTsKKworICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21t
YW5kKCJTZWxlY3RBbGwiKTsKKyAgICAgICAgICAgIHNldEZvcmVDb2xvcigicmdiKDI1NSwgMjU1
LCAyNTUpIik7CisgICAgICAgICAgICBzZXRGb3JlQ29sb3IoInJnYigxMDAsIDI1NSwgMCkiKTsK
KyAgICAgICAgICAgIHNldEZvcmVDb2xvcigicmdiKDAsIDAsIDApIik7CisgICAgICAgICAgICBz
ZXRGb3JlQ29sb3IoInJnYigyNTUsIDAsIDApIik7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzZXRGb3JlQ29sb3IoY29sb3IpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBDb2xvciBp
cyBwYXNzZWQgdHdpY2UgaGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGJvdGggRHVtcFJlbmRl
clRyZWUgYW5kIFdlYktpdFRlc3RSdW5uZXIuCisgICAgICAgICAgICB0ZXN0UnVubmVyLmV4ZWND
b21tYW5kKCJGb3JlQ29sb3IiLCBjb2xvciwgY29sb3IpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gaGFuZGxlSW5wdXQoZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChl
dmVudC5pbnB1dFR5cGUgPT09ICJmb3JtYXRGb3JlQ29sb3IiKQorICAgICAgICAgICAgICAgIHdy
aXRlKGBSZWNlaXZlZCAke2V2ZW50LnR5cGV9IGV2ZW50IHdpdGggZGF0YTogIiR7ZXZlbnQuZGF0
YX0iYCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCAyYTg1OTI0MjkxNGVkZGI3MTU5OTA0ZDA0Zjk2ZDZlYzYzMzNkMDdjLi43NDA5NzI5MDc4
NTAzM2ViZDQxZmMyMmExZWYwMjY5ODcwOWEwZDE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMjEyLDYgKzEyMTIs
NyBAQCBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtaW1lLXJlY29tcG9zaXRpb24uaHRtbCBbIEZh
aWx1cmUgXQogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLWltZS1jb21wb3NpdGlvbi5odG1sIFsg
RmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtcGFzdGUtcmljaC1kYXRhdHJhbnNm
ZXIuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXNwZWxsLWNoZWNr
aW5nLWRhdGF0cmFuc2Zlci5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2V2ZW50cy9pbnB1dC1ldmVu
dHMtc2VsZWN0aW9uLWZvcmVjb2xvci1kYXRhLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRz
L2JlZm9yZS1pbnB1dC1ldmVudHMtcHJldmVudC1kZWZhdWx0Lmh0bWwgWyBGYWlsdXJlIF0KIGZh
c3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1ldmVudHMtcHJldmVudC1kZWZhdWx0LWluLXRleHRmaWVs
ZC5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtZXZlbnRzLWRpZmZl
cmVudC1zdGFydC1lbmQtZWxlbWVudHMuaHRtbCBbIEZhaWx1cmUgXQo=
</data>
<flag name="review"
          id="316379"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294246</attachid>
            <date>2016-11-09 11:09:39 -0800</date>
            <delta_ts>2016-11-09 12:07:56 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-164241-20161109110528.patch</filename>
            <type>text/plain</type>
            <size>12560</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNlZWRjNmEwNmNhMjAx
ZGM2MTZkZGU3OTczZTExNTcxODNhYWY2Ni4uYTQwODI5ZjY0OGQ3OGM2YmE0OTY1NzU5MjhmMjRm
MTgyZDE3MTQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTEwLTMxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFNldHRpbmcgZm9y
ZWdyb3VuZCBjb2xvciB3aGVuIHRleHQgaXMgc2VsZWN0ZWQgc2hvdWxkIGZpcmUgYW4gaW5wdXQg
ZXZlbnQgd2l0aCBjb2xvciBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjQyNDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MDMyNzU5Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlZmFjdG9ycyBF
ZGl0b3I6OmFwcGx5U3R5bGUgYW5kIEVkaXRvcjo6YXBwbHlQYXJhZ3JhcGhTdHlsZSB0byBoYW5k
bGUgYmVmb3JlaW5wdXQgYW5kIGlucHV0IGV2ZW50IGRpc3BhdGNoLgorICAgICAgICBJbnN0ZWFk
IG9mIGdvaW5nIHRocm91Z2ggdGhlIEFwcGx5U3R5bGVDb21tYW5kIHRvIGRpc3BhdGNoIGlucHV0
IGV2ZW50cywgb3ZlcnJpZGUgc2hvdWxkRGlzcGF0Y2hJbnB1dEV2ZW50cyB0bworICAgICAgICBy
ZXR1cm4gZmFsc2UuIFRoaXMgc3RyYXRlZ3kgYWxzbyBoYXMgdGhlIGVmZmVjdCBvZiB1bmlmeWlu
ZyB0aGUgd2F5IGlucHV0IGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCBpbiBhcHBseVN0eWxlLAorICAg
ICAgICBpbiBib3RoIGNvZGVwYXRocyB3aGVyZSB3ZSBjb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUg
YW5kIHdoZXJlIHdlIGNyZWF0ZSBhbmQgdGhlbiBhcHBseSBhIHN0eWxlIGNvbW1hbmQuCisKKyAg
ICAgICAgVGVzdDogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXNlbGVjdGlvbi1mb3JlY29sb3It
ZGF0YS5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmg6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5wdXRFdmVudERh
dGFGb3JFZGl0aW5nU3R5bGVBbmRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjph
cHBseVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlQYXJhZ3JhcGhTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZSk6
CisKIDIwMTYtMTEtMDcgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwODM4Mi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAppbmRleCAyZTEwNjU1MDIxODg2NTUxNjUyZjY5YzM2
YmI2ZTQ5MTkzNDExZGI2Li5mODg5ZmYzNWU0NDk2ZmM3NTM5ZDRmMjUyZjA5ZWQxN2ZjOTBkNmU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCkBAIC03Miw2
ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgQXBwbHlTdHlsZUNvbW1hbmQoRG9jdW1lbnQmLCBjb25z
dCBFZGl0aW5nU3R5bGUqLCBib29sICgqaXNJbmxpbmVFbGVtZW50VG9SZW1vdmUpKGNvbnN0IEVs
ZW1lbnQqKSwgRWRpdEFjdGlvbik7CiAKICAgICB2b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKKyAg
ICBib29sIHNob3VsZERpc3BhdGNoSW5wdXRFdmVudHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQogCiAgICAgLy8gc3R5bGUtcmVtb3ZhbCBoZWxwZXJzCiAgICAgYm9vbCBpc1N0eWxl
ZElubGluZUVsZW1lbnRUb1JlbW92ZShFbGVtZW50KikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKaW5kZXggMTU4OWM0NzJhMDFmYzZhOGNmZDZjMzI5YjQzOTdkNTZjMmRlNTljOC4u
YmQxNDVmOWZiMDMyZjg4ZTFiNzFhNzgyM2FkMTAzYTMzZjJmYjg2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcApAQCAtMTIyLDIwICsxMjIsMjQgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hJ
bnB1dEV2ZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5wdXRUeXBl
LAogICAgICAgICBlbGVtZW50LmRpc3BhdGNoSW5wdXRFdmVudCgpOwogfQogCi1zdGF0aWMgU3Ry
aW5nIGlucHV0RXZlbnREYXRhRm9yRWRpdGluZ1N0eWxlQW5kQWN0aW9uKEVkaXRpbmdTdHlsZSYg
c3R5bGUsIEVkaXRBY3Rpb24gYWN0aW9uKQorc3RhdGljIFN0cmluZyBpbnB1dEV2ZW50RGF0YUZv
ckVkaXRpbmdTdHlsZUFuZEFjdGlvbihjb25zdCBTdHlsZVByb3BlcnRpZXMqIHN0eWxlLCBFZGl0
QWN0aW9uIGFjdGlvbikKIHsKLSAgICBhdXRvKiBwcm9wZXJ0aWVzID0gc3R5bGUuc3R5bGUoKTsK
LSAgICBpZiAoIXByb3BlcnRpZXMpCisgICAgaWYgKCFzdHlsZSkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAogICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAgY2FzZSBFZGl0QWN0aW9uU2V0Q29sb3I6
Ci0gICAgICAgIHJldHVybiBwcm9wZXJ0aWVzLT5nZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5
Q29sb3IpOworICAgICAgICByZXR1cm4gc3R5bGUtPmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVy
dHlDb2xvcik7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiB9CiAK
K3N0YXRpYyBTdHJpbmcgaW5wdXRFdmVudERhdGFGb3JFZGl0aW5nU3R5bGVBbmRBY3Rpb24oRWRp
dGluZ1N0eWxlJiBzdHlsZSwgRWRpdEFjdGlvbiBhY3Rpb24pCit7CisgICAgcmV0dXJuIGlucHV0
RXZlbnREYXRhRm9yRWRpdGluZ1N0eWxlQW5kQWN0aW9uKHN0eWxlLnN0eWxlKCksIGFjdGlvbik7
Cit9CisKIGNsYXNzIENsZWFyVGV4dENvbW1hbmQgOiBwdWJsaWMgRGVsZXRlU2VsZWN0aW9uQ29t
bWFuZCB7CiBwdWJsaWM6CiAgICAgQ2xlYXJUZXh0Q29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQp
OwpAQCAtNzcyLDM0ICs3NzYsMzggQEAgTm9kZSogRWRpdG9yOjpmaW5kRXZlbnRUYXJnZXRGcm9t
U2VsZWN0aW9uKCkgY29uc3QKIAogdm9pZCBFZGl0b3I6OmFwcGx5U3R5bGUoU3R5bGVQcm9wZXJ0
aWVzKiBzdHlsZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKQogewotICAgIHN3aXRjaCAobV9m
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb25UeXBlKCkpIHsKLSAgICBjYXNl
IFZpc2libGVTZWxlY3Rpb246Ok5vU2VsZWN0aW9uOgotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBWaXNpYmxlU2VsZWN0aW9uOjpDYXJldFNlbGVjdGlvbjoKLSAgICAgICAgY29tcHV0ZUFuZFNl
dFR5cGluZ1N0eWxlKEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHN0eWxlKSwgZWRpdGluZ0FjdGlvbik7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6UmFuZ2VTZWxlY3Rp
b246Ci0gICAgICAgIGlmIChzdHlsZSkKLSAgICAgICAgICAgIGFwcGx5Q29tbWFuZChBcHBseVN0
eWxlQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHN0eWxl
KS5wdHIoKSwgZWRpdGluZ0FjdGlvbikpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2xp
ZW50KCktPmRpZEFwcGx5U3R5bGUoKTsKKyAgICBpZiAoc3R5bGUpCisgICAgICAgIGFwcGx5U3R5
bGUoRWRpdGluZ1N0eWxlOjpjcmVhdGUoc3R5bGUpLCBlZGl0aW5nQWN0aW9uKTsKIH0KIAogdm9p
ZCBFZGl0b3I6OmFwcGx5U3R5bGUoUmVmUHRyPEVkaXRpbmdTdHlsZT4mJiBzdHlsZSwgRWRpdEFj
dGlvbiBlZGl0aW5nQWN0aW9uKQogewotICAgIHN3aXRjaCAobV9mcmFtZS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb25UeXBlKCkpIHsKLSAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246
Ok5vU2VsZWN0aW9uOgorICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybjsKLSAgICBjYXNl
IFZpc2libGVTZWxlY3Rpb246OkNhcmV0U2VsZWN0aW9uOgotICAgICAgICBjb21wdXRlQW5kU2V0
VHlwaW5nU3R5bGUoKnN0eWxlLCBlZGl0aW5nQWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBWaXNpYmxlU2VsZWN0aW9uOjpSYW5nZVNlbGVjdGlvbjoKLSAgICAgICAgaWYgKHN0eWxl
KQorCisgICAgYXV0byBzZWxlY3Rpb25UeXBlID0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb25UeXBlKCk7CisgICAgaWYgKHNlbGVjdGlvblR5cGUgPT0gVmlzaWJsZVNl
bGVjdGlvbjo6Tm9TZWxlY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBpbnB1
dFR5cGVOYW1lID0gaW5wdXRUeXBlTmFtZUZvckVkaXRpbmdBY3Rpb24oZWRpdGluZ0FjdGlvbik7
CisgICAgU3RyaW5nIGlucHV0RXZlbnREYXRhID0gaW5wdXRFdmVudERhdGFGb3JFZGl0aW5nU3R5
bGVBbmRBY3Rpb24oKnN0eWxlLCBlZGl0aW5nQWN0aW9uKTsKKyAgICBSZWZQdHI8RWxlbWVudD4g
ZWxlbWVudCA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxl
bWVudCgpOworICAgIGlmICghZWxlbWVudCB8fCBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnQoKmVs
ZW1lbnQsIGlucHV0VHlwZU5hbWUsIGlucHV0RXZlbnREYXRhKSkgeworICAgICAgICBzd2l0Y2go
c2VsZWN0aW9uVHlwZSkgeworICAgICAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OkNhcmV0U2Vs
ZWN0aW9uOgorICAgICAgICAgICAgY29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKCpzdHlsZSwgZWRp
dGluZ0FjdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWaXNpYmxlU2Vs
ZWN0aW9uOjpSYW5nZVNlbGVjdGlvbjoKICAgICAgICAgICAgIGFwcGx5Q29tbWFuZChBcHBseVN0
eWxlQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIHN0eWxlLmdldCgpLCBlZGl0aW5nQWN0aW9u
KSk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KKwogICAgIGNsaWVudCgpLT5k
aWRBcHBseVN0eWxlKCk7CisgICAgaWYgKGVsZW1lbnQpCisgICAgICAgIGRpc3BhdGNoSW5wdXRF
dmVudCgqZWxlbWVudCwgaW5wdXRUeXBlTmFtZSwgaW5wdXRFdmVudERhdGEpOwogfQogICAgIAog
Ym9vbCBFZGl0b3I6OnNob3VsZEFwcGx5U3R5bGUoU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSwgUmFu
Z2UqIHJhbmdlKQpAQCAtODA5LDE2ICs4MTcsMjEgQEAgYm9vbCBFZGl0b3I6OnNob3VsZEFwcGx5
U3R5bGUoU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSwgUmFuZ2UqIHJhbmdlKQogICAgIAogdm9pZCBF
ZGl0b3I6OmFwcGx5UGFyYWdyYXBoU3R5bGUoU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSwgRWRpdEFj
dGlvbiBlZGl0aW5nQWN0aW9uKQogewotICAgIHN3aXRjaCAobV9mcmFtZS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb25UeXBlKCkpIHsKLSAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246
Ok5vU2VsZWN0aW9uOgorICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybjsKLSAgICBjYXNl
IFZpc2libGVTZWxlY3Rpb246OkNhcmV0U2VsZWN0aW9uOgotICAgIGNhc2UgVmlzaWJsZVNlbGVj
dGlvbjo6UmFuZ2VTZWxlY3Rpb246Ci0gICAgICAgIGlmIChzdHlsZSkKLSAgICAgICAgICAgIGFw
cGx5Q29tbWFuZChBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIEVkaXRpbmdT
dHlsZTo6Y3JlYXRlKHN0eWxlKS5wdHIoKSwgZWRpdGluZ0FjdGlvbiwgQXBwbHlTdHlsZUNvbW1h
bmQ6OkZvcmNlQmxvY2tQcm9wZXJ0aWVzKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KKworICAg
IGF1dG8gc2VsZWN0aW9uVHlwZSA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uVHlwZSgpOworICAgIGlmIChzZWxlY3Rpb25UeXBlID09IFZpc2libGVTZWxlY3Rpb246
Ok5vU2VsZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmcgaW5wdXRUeXBlTmFt
ZSA9IGlucHV0VHlwZU5hbWVGb3JFZGl0aW5nQWN0aW9uKGVkaXRpbmdBY3Rpb24pOworICAgIFJl
ZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5y
b290RWRpdGFibGVFbGVtZW50KCk7CisgICAgaWYgKCFlbGVtZW50IHx8IGRpc3BhdGNoQmVmb3Jl
SW5wdXRFdmVudCgqZWxlbWVudCwgaW5wdXRUeXBlTmFtZSkpCisgICAgICAgIGFwcGx5Q29tbWFu
ZChBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIEVkaXRpbmdTdHlsZTo6Y3Jl
YXRlKHN0eWxlKS5wdHIoKSwgZWRpdGluZ0FjdGlvbiwgQXBwbHlTdHlsZUNvbW1hbmQ6OkZvcmNl
QmxvY2tQcm9wZXJ0aWVzKSk7CisKICAgICBjbGllbnQoKS0+ZGlkQXBwbHlTdHlsZSgpOworICAg
IGlmIChlbGVtZW50KQorICAgICAgICBkaXNwYXRjaElucHV0RXZlbnQoKmVsZW1lbnQsIGlucHV0
VHlwZU5hbWUpOwogfQogCiB2b2lkIEVkaXRvcjo6YXBwbHlTdHlsZVRvU2VsZWN0aW9uKFN0eWxl
UHJvcGVydGllcyogc3R5bGUsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbikKQEAgLTI5ODUsMTIg
KzI5OTgsNiBAQCB2b2lkIEVkaXRvcjo6Y29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKEVkaXRpbmdT
dHlsZSYgc3R5bGUsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgU3RyaW5nIGlucHV0VHlwZU5hbWUgPSBpbnB1dFR5cGVOYW1lRm9yRWRpdGluZ0Fj
dGlvbihlZGl0aW5nQWN0aW9uKTsKLSAgICBTdHJpbmcgaW5wdXRFdmVudERhdGEgPSBpbnB1dEV2
ZW50RGF0YUZvckVkaXRpbmdTdHlsZUFuZEFjdGlvbihzdHlsZSwgZWRpdGluZ0FjdGlvbik7Ci0g
ICAgYXV0byogZWxlbWVudCA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVk
aXRhYmxlRWxlbWVudCgpOwotICAgIGlmIChlbGVtZW50ICYmICFkaXNwYXRjaEJlZm9yZUlucHV0
RXZlbnQoKmVsZW1lbnQsIGlucHV0VHlwZU5hbWUsIGlucHV0RXZlbnREYXRhKSkKLSAgICAgICAg
cmV0dXJuOwotCiAgICAgLy8gQ2FsY3VsYXRlIHRoZSBjdXJyZW50IHR5cGluZyBzdHlsZS4KICAg
ICBSZWZQdHI8RWRpdGluZ1N0eWxlPiB0eXBpbmdTdHlsZTsKICAgICBpZiAoYXV0byBleGlzdGlu
Z1R5cGluZ1N0eWxlID0gbV9mcmFtZS5zZWxlY3Rpb24oKS50eXBpbmdTdHlsZSgpKQpAQCAtMzAw
NCw5ICszMDExLDYgQEAgdm9pZCBFZGl0b3I6OmNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZShFZGl0
aW5nU3R5bGUmIHN0eWxlLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3QKICAgICBpZiAoIWJsb2NrU3R5
bGUtPmlzRW1wdHkoKSkKICAgICAgICAgYXBwbHlDb21tYW5kKEFwcGx5U3R5bGVDb21tYW5kOjpj
cmVhdGUoZG9jdW1lbnQoKSwgYmxvY2tTdHlsZS5nZXQoKSwgZWRpdGluZ0FjdGlvbikpOwogCi0g
ICAgaWYgKGVsZW1lbnQpCi0gICAgICAgIGRpc3BhdGNoSW5wdXRFdmVudCgqZWxlbWVudCwgaW5w
dXRUeXBlTmFtZSwgaW5wdXRFdmVudERhdGEpOwotCiAgICAgLy8gU2V0IHRoZSByZW1haW5pbmcg
c3R5bGUgYXMgdGhlIHR5cGluZyBzdHlsZS4KICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFR5
cGluZ1N0eWxlKHR5cGluZ1N0eWxlKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0MDA3ZGU4OWI2OGQ3NDExMGI3N2M2
MzRkYjY1MDgyNGZkZDJjMTc3Li44NmM2OTgzYmQ1MDU3ZGJkOTU3ODM3Y2VlNzE3MWFiZmZlNGNk
NzMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMTAtMzEgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgU2V0dGluZyBmb3JlZ3JvdW5kIGNvbG9y
IHdoZW4gdGV4dCBpcyBzZWxlY3RlZCBzaG91bGQgZmlyZSBhbiBpbnB1dCBldmVudCB3aXRoIGNv
bG9yIGRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NDI0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkwMzI3NTk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkcyBhIG5ldyBsYXlvdXQgdGVzdCB2
ZXJpZnlpbmcgdGhhdCBzZWxlY3RpbmcgdGV4dCBhbmQgc2V0dGluZyBpdHMgZm9yZWdyb3VuZCBj
b2xvciB3aWxsIGZpcmUgaW5wdXQgZXZlbnRzCisgICAgICAgIHdpdGggdGhlIGNvcnJlY3QgUkdC
IHZhbHVlcyBpbiB0aGUgZGF0YSBhdHRyaWJ1dGUuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9p
bnB1dC1ldmVudHMtc2VsZWN0aW9uLWZvcmVjb2xvci1kYXRhLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXNlbGVjdGlvbi1mb3JlY29sb3It
ZGF0YS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RF
eHBlY3RhdGlvbnM6CisKIDIwMTYtMTEtMDcgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwODM4Mi4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1zZWxlY3Rpb24tZm9y
ZWNvbG9yLWRhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQt
ZXZlbnRzLXNlbGVjdGlvbi1mb3JlY29sb3ItZGF0YS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2NiYTU0ZTI2Yzc4ZTRjYTY2MWI2YjY3OTI1N2Y3YzY4YmIwMjVhNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1zZWxlY3Rpb24tZm9yZWNv
bG9yLWRhdGEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1RvIG1hbnVhbGx5IHRlc3Qg
dGhpcywgc2VsZWN0IHRoZSB0ZXh0IGFuZCBjaGFuZ2UgdGhlIGZvcmVncm91bmQgY29sb3IuCisK
K1RoZSByZXN1bHRpbmcgZGVidWcgbWVzc2FnZSBzaG91bGQgc2hvdyB0aGUgaW5wdXQgY29sb3Iu
CisKK1RoaXMgaXMgc29tZSB0ZXh0CitSZWNlaXZlZCBiZWZvcmVpbnB1dCBldmVudCB3aXRoIGRh
dGE6ICJyZ2IoMjU1LCAyNTUsIDI1NSkiCitSZWNlaXZlZCBpbnB1dCBldmVudCB3aXRoIGRhdGE6
ICJyZ2IoMjU1LCAyNTUsIDI1NSkiCitSZWNlaXZlZCBiZWZvcmVpbnB1dCBldmVudCB3aXRoIGRh
dGE6ICJyZ2IoMTAwLCAyNTUsIDApIgorUmVjZWl2ZWQgaW5wdXQgZXZlbnQgd2l0aCBkYXRhOiAi
cmdiKDEwMCwgMjU1LCAwKSIKK1JlY2VpdmVkIGJlZm9yZWlucHV0IGV2ZW50IHdpdGggZGF0YTog
InJnYigwLCAwLCAwKSIKK1JlY2VpdmVkIGlucHV0IGV2ZW50IHdpdGggZGF0YTogInJnYigwLCAw
LCAwKSIKK1JlY2VpdmVkIGJlZm9yZWlucHV0IGV2ZW50IHdpdGggZGF0YTogInJnYigyNTUsIDAs
IDApIgorUmVjZWl2ZWQgaW5wdXQgZXZlbnQgd2l0aCBkYXRhOiAicmdiKDI1NSwgMCwgMCkiCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1zZWxlY3Rp
b24tZm9yZWNvbG9yLWRhdGEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2
ZW50cy1zZWxlY3Rpb24tZm9yZWNvbG9yLWRhdGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWM5ZjJmMTgx
YzUyMTEzNzlhMWY0NTUwNTg0ZTA1NTk2ZmUwMzA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXNlbGVjdGlvbi1mb3JlY29sb3ItZGF0YS5o
dG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKyAg
ICA8cD5UbyBtYW51YWxseSB0ZXN0IHRoaXMsIHNlbGVjdCB0aGUgdGV4dCBhbmQgY2hhbmdlIHRo
ZSBmb3JlZ3JvdW5kIGNvbG9yLjwvcD4KKyAgICA8cD5UaGUgcmVzdWx0aW5nIGRlYnVnIG1lc3Nh
Z2Ugc2hvdWxkIHNob3cgdGhlIGlucHV0IGNvbG9yLjwvcD4KKyAgICA8ZGl2IGlkPSJlZGl0YWJs
ZSIgY29udGVudGVkaXRhYmxlIG9uYmVmb3JlaW5wdXQ9aGFuZGxlSW5wdXQoZXZlbnQpIG9uaW5w
dXQ9aGFuZGxlSW5wdXQoZXZlbnQpPlRoaXMgaXMgc29tZSB0ZXh0PC9kaXY+CisgICAgPGRpdiBp
ZD0ib3V0cHV0Ij48L2Rpdj4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cisg
ICAgICAgIGxldCB3cml0ZSA9IHMgPT4gb3V0cHV0LmlubmVySFRNTCArPSBzICsgIjxicj4iOwor
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW5wdXRFdmVu
dHNFbmFibGVkKHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImVkaXRhYmxlIikuZm9jdXMoKTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwiKTsKKyAg
ICAgICAgICAgIHNldEZvcmVDb2xvcigicmdiKDI1NSwgMjU1LCAyNTUpIik7CisgICAgICAgICAg
ICBzZXRGb3JlQ29sb3IoInJnYigxMDAsIDI1NSwgMCkiKTsKKyAgICAgICAgICAgIHNldEZvcmVD
b2xvcigicmdiKDAsIDAsIDApIik7CisgICAgICAgICAgICBzZXRGb3JlQ29sb3IoInJnYigyNTUs
IDAsIDApIik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzZXRGb3JlQ29sb3IoY29s
b3IpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBDb2xvciBpcyBwYXNzZWQgdHdpY2UgaGVyZSBm
b3IgY29tcGF0aWJpbGl0eSB3aXRoIGJvdGggRHVtcFJlbmRlclRyZWUgYW5kIFdlYktpdFRlc3RS
dW5uZXIuCisgICAgICAgICAgICB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJGb3JlQ29sb3IiLCBj
b2xvciwgY29sb3IpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gaGFuZGxlSW5wdXQo
ZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChldmVudC5pbnB1dFR5cGUgPT09ICJm
b3JtYXRGb3JlQ29sb3IiKQorICAgICAgICAgICAgICAgIHdyaXRlKGBSZWNlaXZlZCAke2V2ZW50
LnR5cGV9IGV2ZW50IHdpdGggZGF0YTogIiR7ZXZlbnQuZGF0YX0iYCk7CisgICAgICAgIH0KKyAg
ICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA0ZjJhMTVjMTE0ODQ1MjZh
YmZmZjc3MGZjZmVhNjhkZjFjMzE0M2JiLi40Yzk0NjBiYjllNDcyYzI5YTJmMTBjNTE1ZDdjMTM4
N2E4MDBlOTUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9y
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRv
ci9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMjEyLDYgKzEyMTIsNyBAQCBmYXN0L2V2ZW50cy9pbnB1
dC1ldmVudHMtaW1lLXJlY29tcG9zaXRpb24uaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMv
aW5wdXQtZXZlbnRzLWltZS1jb21wb3NpdGlvbi5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50
cy9pbnB1dC1ldmVudHMtcGFzdGUtcmljaC1kYXRhdHJhbnNmZXIuaHRtbCBbIEZhaWx1cmUgXQog
ZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXNwZWxsLWNoZWNraW5nLWRhdGF0cmFuc2Zlci5odG1s
IFsgRmFpbHVyZSBdCitmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtc2VsZWN0aW9uLWZvcmVjb2xv
ci1kYXRhLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1ldmVudHMt
cHJldmVudC1kZWZhdWx0Lmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2JlZm9yZS1pbnB1
dC1ldmVudHMtcHJldmVudC1kZWZhdWx0LWluLXRleHRmaWVsZC5odG1sIFsgRmFpbHVyZSBdCiBm
YXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtZXZlbnRzLWRpZmZlcmVudC1zdGFydC1lbmQtZWxlbWVu
dHMuaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>