<?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>160808</bug_id>
          
          <creation_ts>2016-08-12 10:49:32 -0700</creation_ts>
          <short_desc>FocusController multiple dereferenced NULL pointers</short_desc>
          <delta_ts>2016-08-24 16:28:08 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1219612</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2016-08-12 10:49:32 -0700</bug_when>
    <thetext>In FocusController, there are a number of static functions which accept references to objects and are usually called by dereferencing pointers.  Since many of the functions which call these static functions accept pointers, and in at least one case, these pointers can be NULL, these functions are undefined behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219620</commentid>
    <comment_count>1</comment_count>
      <attachid>285921</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2016-08-12 11:07:48 -0700</bug_when>
    <thetext>Created attachment 285921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219639</commentid>
    <comment_count>2</comment_count>
      <attachid>285925</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2016-08-12 12:00:50 -0700</bug_when>
    <thetext>Created attachment 285925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219659</commentid>
    <comment_count>3</comment_count>
      <attachid>285925</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-08-12 12:50:48 -0700</bug_when>
    <thetext>Comment on attachment 285925
Patch

This does not seem like the correct approach. We want to move towards more usage of references, not less. Can you please identify the call sites that convert a null pointer to a null-reference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219672</commentid>
    <comment_count>4</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2016-08-12 13:07:35 -0700</bug_when>
    <thetext>Here are the two places where the behavior has been observed:

.../FocusController.cpp:672:80: runtime error: reference binding to null pointer of type &apos;WebCore::KeyboardEvent&apos;
.../FocusController.cpp:586:53: runtime error: reference binding to null pointer of type &apos;WebCore::KeyboardEvent&apos;

The motivation for this change is that while we check if the Elements are NULL, we basically never do so for the KeyBoardEvents.  Even just a quick overview will show that lines 507, 509, 520, 543, 558, 564, 647, 694, 952 and 704 all have this same problem (note that those line numbers are in the unedited version).  It is true that the Elements are already checked, I thought that the static functions should either both be references or both be pointers, which is why I switched Element references to pointers as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219685</commentid>
    <comment_count>5</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2016-08-12 13:55:43 -0700</bug_when>
    <thetext>A bit of additional information:

The stack (at least for one of the errors) indicates that WebPage.cpp line 2523 contains the call-site where a NULL event is sent into the focus controller in the event that the received keyboard event is invalid.  It is, without a doubt, deliberate behavior.

Furthermore, EventHandler::isKeyboardOptionTab(KeyboardEvent*) seems to be the only function which actually consumes aa keyboard event in this code-path, and it preforms a NULL check on event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219699</commentid>
    <comment_count>6</comment_count>
      <attachid>285945</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2016-08-12 14:07:58 -0700</bug_when>
    <thetext>Created attachment 285945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222825</commentid>
    <comment_count>7</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2016-08-24 14:28:15 -0700</bug_when>
    <thetext>rdar://16327307 is also tracking this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222850</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-08-24 15:33:54 -0700</bug_when>
    <thetext>rdar://problem/16327307</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222852</commentid>
    <comment_count>9</comment_count>
      <attachid>285945</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-24 15:35:05 -0700</bug_when>
    <thetext>Comment on attachment 285945
Patch

Rejecting attachment 285945 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 285945, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

/Volumes/Data/EWS/WebKit/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://webkit-queues.webkit.org/results/1936400</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222854</commentid>
    <comment_count>10</comment_count>
      <attachid>286900</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2016-08-24 15:45:08 -0700</bug_when>
    <thetext>Created attachment 286900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222872</commentid>
    <comment_count>11</comment_count>
      <attachid>286900</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-24 16:28:05 -0700</bug_when>
    <thetext>Comment on attachment 286900
Patch

Clearing flags on attachment: 286900

Committed r204941: &lt;http://trac.webkit.org/changeset/204941&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222873</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-24 16:28:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285921</attachid>
            <date>2016-08-12 11:07:48 -0700</date>
            <delta_ts>2016-08-12 12:00:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160808-20160812110608.patch</filename>
            <type>text/plain</type>
            <size>15391</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDQxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE2LTA4LTEyICBKb25hdGhh
biBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBGb2N1c0NvbnRyb2xsZXIg
bXVsdGlwbGUgZGVyZWZlcmVuY2VkIE5VTEwgcG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDgwOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQsIGZpeCBkb2Vz
IG5vdCBjaGFuZ2UgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBUaGlzIGNoYW5nZSBmaXhlcyBh
IG51bWJlciBvZiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIHdoaWNoIG9jY3VyIGluIEZvY3Vz
Q29udHJvbGxlci4KKworICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmlzRm9jdXNTY29wZU93bmVyKTogQWxsb3cgZm9yIGEgTlVMTCBFbGVtZW50
LCByZXBsYWNlIHJlZmVyZW5jZSB3aXRoIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpGb2N1
c05hdmlnYXRpb25TY29wZTo6Zmlyc3RDaGlsZEluU2NvcGUpOiBDaGFuZ2VkIG9iamVjdCBjYXN0
IHRvIHBvaW50ZXIgY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzTmF2aWdhdGlvblNjb3Bl
OjpsYXN0Q2hpbGRJblNjb3BlKTogQ2hhbmdlZCBvYmplY3QgY2FzdCB0byBwb2ludGVyIGNhc3Qu
CisgICAgICAgIChXZWJDb3JlOjpGb2N1c05hdmlnYXRpb25TY29wZTo6cGFyZW50SW5TY29wZSk6
IENoYW5nZWQgb2JqZWN0IGNhc3QgdG8gcG9pbnRlciBjYXN0LgorICAgICAgICAoV2ViQ29yZTo6
Rm9jdXNOYXZpZ2F0aW9uU2NvcGU6OnNjb3BlT2YpOiBSZW1vdmVkIGNhc3QgdG8gb2JqZWN0Lgor
ICAgICAgICAoV2ViQ29yZTo6IGlzRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcik6IEFsbG93
IGZvciBhIE5VTEwgRWxlbWVudCwgcmVwbGFjZSByZWZlcmVuY2VzIHdpdGggcG9pbnRlcnMuCisg
ICAgICAgIChXZWJDb3JlOjppc05vbkZvY3VzYWJsZVNjb3BlT3duZXIpOiBBbGxvdyBmb3IgYSBO
VUxMIEVsZW1lbnQsIHJlcGxhY2UgcmVmZXJlbmNlcyB3aXRoIHBvaW50ZXJzLgorICAgICAgICAo
V2ViQ29yZTo6aXNGb2N1c2FibGVTY29wZU93bmVyKTogQWxsb3cgZm9yIGEgTlVMTCBFbGVtZW50
LCByZXBsYWNlIHJlZmVyZW5jZXMgd2l0aCBwb2ludGVycy4KKyAgICAgICAgKFdlYkNvcmU6OnNo
YWRvd0FkanVzdGVkVGFiSW5kZXgpOiBBbGxvdyBmb3IgYSBOVUxMIEVsZW1lbnQsIHJlcGxhY2Ug
cmVmZXJlbmNlcyB3aXRoIHBvaW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjpGb2N1c0NvbnRyb2xsZXIpOiBDaGFuZ2VkIG9iamVjdHMgdG8gcG9pbnRlcnMgaW4gcmVs
ZXZhbnQgY2FsbHMuCisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1
c2FibGVFbGVtZW50QWNyb3NzRm9jdXNTY29wZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Rm9jdXNDb250cm9sbGVyOjpuZXh0Rm9jdXNhYmxlRWxlbWVudFdpdGhpblNjb3BlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhYmxlRWxl
bWVudFdpdGhpblNjb3BlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xs
ZXI6OmZpbmRFbGVtZW50V2l0aEV4YWN0VGFiSW5kZXgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Om5leHRFbGVtZW50V2l0aEdyZWF0ZXJUYWJJbmRleCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6cHJldmlvdXNFbGVtZW50V2l0aExvd2VyVGFiSW5kZXgpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6bmV4dEZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3du
ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6cHJldmlvdXNG
b2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpy
ZWxpbnF1aXNoZXNFZGl0aW5nRm9jdXMpOiBEaXR0by4KKwogMjAxNi0wOC0xMiAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjIwNDQwNC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDIwNDQxMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsMTIgKzczLDE0IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBoYXNDdXN0b21Gb2N1c0xvZ2ljKGMKICAgICByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+
KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxFbGVtZW50PihlbGVtZW50KS5oYXNDdXN0b21Gb2N1
c0xvZ2ljKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0ZvY3VzU2NvcGVPd25lcihjb25z
dCBFbGVtZW50JiBlbGVtZW50KQorc3RhdGljIGlubGluZSBib29sIGlzRm9jdXNTY29wZU93bmVy
KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgaWYgKGVsZW1lbnQuc2hhZG93Um9vdCgp
ICYmICFoYXNDdXN0b21Gb2N1c0xvZ2ljKGVsZW1lbnQpKQorICAgIGlmICghZWxlbWVudCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChlbGVtZW50LT5zaGFkb3dSb290KCkgJiYgIWhh
c0N1c3RvbUZvY3VzTG9naWMoKmVsZW1lbnQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBp
ZiAoaXM8SFRNTFNsb3RFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MU2xvdEVsZW1l
bnQ+KGVsZW1lbnQpLmFzc2lnbmVkTm9kZXMoKSkgewotICAgICAgICBTaGFkb3dSb290KiByb290
ID0gZWxlbWVudC5jb250YWluaW5nU2hhZG93Um9vdCgpOworICAgIGlmIChpczxIVE1MU2xvdEVs
ZW1lbnQ+KCplbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MU2xvdEVsZW1lbnQ+KCplbGVtZW50KS5h
c3NpZ25lZE5vZGVzKCkpIHsKKyAgICAgICAgU2hhZG93Um9vdCogcm9vdCA9IGVsZW1lbnQtPmNv
bnRhaW5pbmdTaGFkb3dSb290KCk7CiAgICAgICAgIGlmIChyb290ICYmIHJvb3QtPmhvc3QoKSAm
JiAhaGFzQ3VzdG9tRm9jdXNMb2dpYygqcm9vdC0+aG9zdCgpKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0gCkBAIC0xMTcsMjggKzExOSwyOCBAQCBwcml2YXRlOgogLy8gRklYTUU6
IEZvY3VzIG5hdmlnYXRpb24gc2hvdWxkIHdvcmsgd2l0aCBzaGFkb3cgdHJlZXMgdGhhdCBoYXZl
IHNsb3RzLgogTm9kZSogRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OmZpcnN0Q2hpbGRJblNjb3BlKGNv
bnN0IE5vZGUmIG5vZGUpIGNvbnN0CiB7Ci0gICAgaWYgKGlzPEVsZW1lbnQ+KG5vZGUpICYmIGlz
Rm9jdXNTY29wZU93bmVyKGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpKSkKKyAgICBpZiAoaXM8RWxl
bWVudD4obm9kZSkgJiYgaXNGb2N1c1Njb3BlT3duZXIoZG93bmNhc3Q8RWxlbWVudD4oJm5vZGUp
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG5vZGUuZmlyc3RDaGlsZCgp
OwogfQogCiBOb2RlKiBGb2N1c05hdmlnYXRpb25TY29wZTo6bGFzdENoaWxkSW5TY29wZShjb25z
dCBOb2RlJiBub2RlKSBjb25zdAogewotICAgIGlmIChpczxFbGVtZW50Pihub2RlKSAmJiBpc0Zv
Y3VzU2NvcGVPd25lcihkb3duY2FzdDxFbGVtZW50Pihub2RlKSkpCisgICAgaWYgKGlzPEVsZW1l
bnQ+KG5vZGUpICYmIGlzRm9jdXNTY29wZU93bmVyKGRvd25jYXN0PEVsZW1lbnQ+KCZub2RlKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBub2RlLmxhc3RDaGlsZCgpOwog
fQogCiBOb2RlKiBGb2N1c05hdmlnYXRpb25TY29wZTo6cGFyZW50SW5TY29wZShjb25zdCBOb2Rl
JiBub2RlKSBjb25zdAogewotICAgIGlmIChpczxFbGVtZW50Pihub2RlKSAmJiBpc0ZvY3VzU2Nv
cGVPd25lcihkb3duY2FzdDxFbGVtZW50Pihub2RlKSkpCisgICAgaWYgKGlzPEVsZW1lbnQ+KG5v
ZGUpICYmIGlzRm9jdXNTY29wZU93bmVyKGRvd25jYXN0PEVsZW1lbnQ+KCZub2RlKSkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKFVOTElLRUxZKG1fc2xvdEVsZW1lbnQgJiYg
bV9zbG90RWxlbWVudCA9PSBub2RlLmFzc2lnbmVkU2xvdCgpKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGUoKTsK
LSAgICBpZiAocGFyZW50ICYmIGlzPEVsZW1lbnQ+KHBhcmVudCkgJiYgaXNGb2N1c1Njb3BlT3du
ZXIoZG93bmNhc3Q8RWxlbWVudD4oKnBhcmVudCkpKQorICAgIGlmIChwYXJlbnQgJiYgaXM8RWxl
bWVudD4ocGFyZW50KSAmJiBpc0ZvY3VzU2NvcGVPd25lcihkb3duY2FzdDxFbGVtZW50PihwYXJl
bnQpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gcGFyZW50OwpAQCAt
MjQ1LDcgKzI0Nyw3IEBAIEZvY3VzTmF2aWdhdGlvblNjb3BlIEZvY3VzTmF2aWdhdGlvblNjb3AK
ICAgICBmb3IgKE5vZGUqIGN1cnJlbnROb2RlID0gJnN0YXJ0aW5nTm9kZTsgY3VycmVudE5vZGU7
IGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnBhcmVudE5vZGUoKSkgewogICAgICAgICByb290
ID0gY3VycmVudE5vZGU7CiAgICAgICAgIGlmIChIVE1MU2xvdEVsZW1lbnQqIHNsb3QgPSBjdXJy
ZW50Tm9kZS0+YXNzaWduZWRTbG90KCkpIHsKLSAgICAgICAgICAgIGlmIChpc0ZvY3VzU2NvcGVP
d25lcigqc2xvdCkpCisgICAgICAgICAgICBpZiAoaXNGb2N1c1Njb3BlT3duZXIoc2xvdCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEZvY3VzTmF2aWdhdGlvblNjb3BlKCpzbG90KTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoaXM8U2hhZG93Um9vdD4oY3VycmVudE5vZGUpKQpAQCAtMjg5LDI4
ICsyOTEsMzYgQEAgc3RhdGljIGlubGluZSB2b2lkIGRpc3BhdGNoRXZlbnRzT25XaW5kbwogICAg
ICAgICBkb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKS0+ZGlzcGF0Y2hGb2N1c0V2ZW50KG51bGxw
dHIsIEZvY3VzRGlyZWN0aW9uTm9uZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0ZvY3Vz
YWJsZUVsZW1lbnRPclNjb3BlT3duZXIoRWxlbWVudCYgZWxlbWVudCwgS2V5Ym9hcmRFdmVudCYg
ZXZlbnQpCitzdGF0aWMgaW5saW5lIGJvb2wgaXNGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVy
KEVsZW1lbnQqIGVsZW1lbnQsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewotICAgIHJldHVybiBl
bGVtZW50LmlzS2V5Ym9hcmRGb2N1c2FibGUoJmV2ZW50KSB8fCBpc0ZvY3VzU2NvcGVPd25lcihl
bGVtZW50KTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gZWxlbWVudC0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkgfHwgaXNGb2N1c1Njb3Bl
T3duZXIoZWxlbWVudCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc05vbkZvY3VzYWJsZVNj
b3BlT3duZXIoRWxlbWVudCYgZWxlbWVudCwgS2V5Ym9hcmRFdmVudCYgZXZlbnQpCitzdGF0aWMg
aW5saW5lIGJvb2wgaXNOb25Gb2N1c2FibGVTY29wZU93bmVyKEVsZW1lbnQqIGVsZW1lbnQsIEtl
eWJvYXJkRXZlbnQqIGV2ZW50KQogewotICAgIHJldHVybiAhZWxlbWVudC5pc0tleWJvYXJkRm9j
dXNhYmxlKCZldmVudCkgJiYgaXNGb2N1c1Njb3BlT3duZXIoZWxlbWVudCk7CisgICAgaWYgKCFl
bGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuICFlbGVtZW50LT5pc0tl
eWJvYXJkRm9jdXNhYmxlKGV2ZW50KSAmJiBpc0ZvY3VzU2NvcGVPd25lcihlbGVtZW50KTsKIH0K
IAotc3RhdGljIGlubGluZSBib29sIGlzRm9jdXNhYmxlU2NvcGVPd25lcihFbGVtZW50JiBlbGVt
ZW50LCBLZXlib2FyZEV2ZW50JiBldmVudCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0ZvY3VzYWJs
ZVNjb3BlT3duZXIoRWxlbWVudCogZWxlbWVudCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7Ci0g
ICAgcmV0dXJuIGVsZW1lbnQuaXNLZXlib2FyZEZvY3VzYWJsZSgmZXZlbnQpICYmIGlzRm9jdXNT
Y29wZU93bmVyKGVsZW1lbnQpOworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBlbGVtZW50LT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSAmJiBp
c0ZvY3VzU2NvcGVPd25lcihlbGVtZW50KTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgc2hhZG93
QWRqdXN0ZWRUYWJJbmRleChFbGVtZW50JiBlbGVtZW50LCBLZXlib2FyZEV2ZW50JiBldmVudCkK
K3N0YXRpYyBpbmxpbmUgaW50IHNoYWRvd0FkanVzdGVkVGFiSW5kZXgoRWxlbWVudCogZWxlbWVu
dCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICBy
ZXR1cm4gMDsKICAgICBpZiAoaXNOb25Gb2N1c2FibGVTY29wZU93bmVyKGVsZW1lbnQsIGV2ZW50
KSkgewotICAgICAgICBpZiAoIWVsZW1lbnQudGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkpCisgICAg
ICAgIGlmICghZWxlbWVudC0+dGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsgLy8gVHJlYXQgYSBzaGFkb3cgaG9zdCB3aXRob3V0IHRhYmluZGV4IGlmIGl0IGhh
cyB0YWJpbmRleD0wIGV2ZW4gdGhvdWdoIEhUTUxFbGVtZW50Ojp0YWJJbmRleCByZXR1cm5zIC0x
IG9uIHN1Y2ggYW4gZWxlbWVudC4KICAgICB9Ci0gICAgcmV0dXJuIGVsZW1lbnQudGFiSW5kZXgo
KTsKKyAgICByZXR1cm4gZWxlbWVudC0+dGFiSW5kZXgoKTsKIH0KIAogRm9jdXNDb250cm9sbGVy
OjpGb2N1c0NvbnRyb2xsZXIoUGFnZSYgcGFnZSwgVmlld1N0YXRlOjpGbGFncyB2aWV3U3RhdGUp
CkBAIC01MDYsNyArNTE2LDcgQEAgRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNh
YmxlRQogewogICAgIEFTU0VSVCghaXM8RWxlbWVudD4oY3VycmVudE5vZGUpIHx8ICFpc05vbkZv
Y3VzYWJsZVNjb3BlT3duZXIoZG93bmNhc3Q8RWxlbWVudD4oKmN1cnJlbnROb2RlKSwgKmV2ZW50
KSk7CiAKLSAgICBpZiAoY3VycmVudE5vZGUgJiYgZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9u
Rm9yd2FyZCAmJiBpczxFbGVtZW50PihjdXJyZW50Tm9kZSkgJiYgaXNGb2N1c2FibGVTY29wZU93
bmVyKGRvd25jYXN0PEVsZW1lbnQ+KCpjdXJyZW50Tm9kZSksICpldmVudCkpIHsKKyAgICBpZiAo
Y3VycmVudE5vZGUgJiYgZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCAmJiBpczxF
bGVtZW50PihjdXJyZW50Tm9kZSkgJiYgaXNGb2N1c2FibGVTY29wZU93bmVyKGRvd25jYXN0PEVs
ZW1lbnQ+KGN1cnJlbnROb2RlKSwgZXZlbnQpKSB7CiAgICAgICAgIGlmIChFbGVtZW50KiBjYW5k
aWRhdGVJbklubmVyU2NvcGUgPSBmaW5kRm9jdXNhYmxlRWxlbWVudFdpdGhpblNjb3BlKGRpcmVj
dGlvbiwgRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OnNjb3BlT3duZWRCeVNjb3BlT3duZXIoZG93bmNh
c3Q8RWxlbWVudD4oKmN1cnJlbnROb2RlKSksIDAsIGV2ZW50KSkKICAgICAgICAgICAgIHJldHVy
biBjYW5kaWRhdGVJbklubmVyU2NvcGU7CiAgICAgfQpAQCAtNTE3LDcgKzUyNyw3IEBAIEVsZW1l
bnQqIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZUUKICAgICAvLyBJZiB0aGVyZSdzIG5v
IGZvY3VzYWJsZSBub2RlIHRvIGFkdmFuY2UgdG8sIG1vdmUgdXAgdGhlIGZvY3VzIHNjb3BlcyB1
bnRpbCB3ZSBmaW5kIG9uZS4KICAgICBFbGVtZW50KiBvd25lciA9IHNjb3BlLm93bmVyKCk7CiAg
ICAgd2hpbGUgKG93bmVyKSB7Ci0gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rp
b25CYWNrd2FyZCAmJiBpc0ZvY3VzYWJsZVNjb3BlT3duZXIoKm93bmVyLCAqZXZlbnQpKQorICAg
ICAgICBpZiAoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQgJiYgaXNGb2N1c2Fi
bGVTY29wZU93bmVyKG93bmVyLCBldmVudCkpCiAgICAgICAgICAgICByZXR1cm4gZmluZEZvY3Vz
YWJsZUVsZW1lbnREZXNjZW5kaW5nRG93bkludG9GcmFtZURvY3VtZW50KGRpcmVjdGlvbiwgb3du
ZXIsIGV2ZW50KTsKIAogICAgICAgICBhdXRvIG91dGVyU2NvcGUgPSBGb2N1c05hdmlnYXRpb25T
Y29wZTo6c2NvcGVPZigqb3duZXIpOwpAQCAtNTQyLDcgKzU1Miw3IEBAIEVsZW1lbnQqIEZvY3Vz
Q29udHJvbGxlcjo6bmV4dEZvY3VzYWJsZUUKICAgICBFbGVtZW50KiBmb3VuZCA9IG5leHRGb2N1
c2FibGVFbGVtZW50T3JTY29wZU93bmVyKHNjb3BlLCBzdGFydCwgZXZlbnQpOwogICAgIGlmICgh
Zm91bmQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChpc05vbkZvY3VzYWJsZVNj
b3BlT3duZXIoKmZvdW5kLCAqZXZlbnQpKSB7CisgICAgaWYgKGlzTm9uRm9jdXNhYmxlU2NvcGVP
d25lcihmb3VuZCwgZXZlbnQpKSB7CiAgICAgICAgIGlmIChFbGVtZW50KiBmb3VuZEluSW5uZXJG
b2N1c1Njb3BlID0gbmV4dEZvY3VzYWJsZUVsZW1lbnRXaXRoaW5TY29wZShGb2N1c05hdmlnYXRp
b25TY29wZTo6c2NvcGVPd25lZEJ5U2NvcGVPd25lcigqZm91bmQpLCAwLCBldmVudCkpCiAgICAg
ICAgICAgICByZXR1cm4gZm91bmRJbklubmVyRm9jdXNTY29wZTsKICAgICAgICAgcmV0dXJuIG5l
eHRGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUoc2NvcGUsIGZvdW5kLCBldmVudCk7CkBAIC01
NTUsMTMgKzU2NSwxMyBAQCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNh
CiAgICAgRWxlbWVudCogZm91bmQgPSBwcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3du
ZXIoc2NvcGUsIHN0YXJ0LCBldmVudCk7CiAgICAgaWYgKCFmb3VuZCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgaWYgKGlzRm9jdXNhYmxlU2NvcGVPd25lcigqZm91bmQsICpldmVudCkp
IHsKKyAgICBpZiAoaXNGb2N1c2FibGVTY29wZU93bmVyKGZvdW5kLCBldmVudCkpIHsKICAgICAg
ICAgLy8gU2VhcmNoIGFuIGlubmVyIGZvY3VzYWJsZSBlbGVtZW50IGluIHRoZSBzaGFkb3cgdHJl
ZSBmcm9tIHRoZSBlbmQuCiAgICAgICAgIGlmIChFbGVtZW50KiBmb3VuZEluSW5uZXJGb2N1c1Nj
b3BlID0gcHJldmlvdXNGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUoRm9jdXNOYXZpZ2F0aW9u
U2NvcGU6OnNjb3BlT3duZWRCeVNjb3BlT3duZXIoKmZvdW5kKSwgMCwgZXZlbnQpKQogICAgICAg
ICAgICAgcmV0dXJuIGZvdW5kSW5Jbm5lckZvY3VzU2NvcGU7CiAgICAgICAgIHJldHVybiBmb3Vu
ZDsKICAgICB9Ci0gICAgaWYgKGlzTm9uRm9jdXNhYmxlU2NvcGVPd25lcigqZm91bmQsICpldmVu
dCkpIHsKKyAgICBpZiAoaXNOb25Gb2N1c2FibGVTY29wZU93bmVyKGZvdW5kLCBldmVudCkpIHsK
ICAgICAgICAgaWYgKEVsZW1lbnQqIGZvdW5kSW5Jbm5lckZvY3VzU2NvcGUgPSBwcmV2aW91c0Zv
Y3VzYWJsZUVsZW1lbnRXaXRoaW5TY29wZShGb2N1c05hdmlnYXRpb25TY29wZTo6c2NvcGVPd25l
ZEJ5U2NvcGVPd25lcigqZm91bmQpLCAwLCBldmVudCkpCiAgICAgICAgICAgICByZXR1cm4gZm91
bmRJbklubmVyRm9jdXNTY29wZTsKICAgICAgICAgcmV0dXJuIHByZXZpb3VzRm9jdXNhYmxlRWxl
bWVudFdpdGhpblNjb3BlKHNjb3BlLCBmb3VuZCwgZXZlbnQpOwpAQCAtNTgzLDE0ICs1OTMsMTcg
QEAgRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpmaW5kRWxlbWVudFdpdAogICAgICAgICBpZiAo
IWlzPEVsZW1lbnQ+KCpub2RlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBFbGVt
ZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOwotICAgICAgICBpZiAoaXNG
b2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVyKGVsZW1lbnQsICpldmVudCkgJiYgc2hhZG93QWRq
dXN0ZWRUYWJJbmRleChlbGVtZW50LCAqZXZlbnQpID09IHRhYkluZGV4KQorICAgICAgICBpZiAo
aXNGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVyKCZlbGVtZW50LCBldmVudCkgJiYgc2hhZG93
QWRqdXN0ZWRUYWJJbmRleCgmZWxlbWVudCwgZXZlbnQpID09IHRhYkluZGV4KQogICAgICAgICAg
ICAgcmV0dXJuICZlbGVtZW50OwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3Rh
dGljIEVsZW1lbnQqIG5leHRFbGVtZW50V2l0aEdyZWF0ZXJUYWJJbmRleChjb25zdCBGb2N1c05h
dmlnYXRpb25TY29wZSYgc2NvcGUsIGludCB0YWJJbmRleCwgS2V5Ym9hcmRFdmVudCYgZXZlbnQp
CitzdGF0aWMgRWxlbWVudCogbmV4dEVsZW1lbnRXaXRoR3JlYXRlclRhYkluZGV4KGNvbnN0IEZv
Y3VzTmF2aWdhdGlvblNjb3BlJiBzY29wZSwgaW50IHRhYkluZGV4LCBLZXlib2FyZEV2ZW50KiBl
dmVudCkKIHsKKyAgICBpZiAoIWV2ZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAK
ICAgICAvLyBTZWFyY2ggaXMgaW5jbHVzaXZlIG9mIHN0YXJ0CiAgICAgaW50IHdpbm5pbmdUYWJJ
bmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CiAgICAgRWxlbWVudCogd2lu
bmVyID0gbnVsbHB0cjsKQEAgLTU5OSw3ICs2MTIsNyBAQCBzdGF0aWMgRWxlbWVudCogbmV4dEVs
ZW1lbnRXaXRoR3JlYXRlclRhCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgRWxlbWVu
dCYgY2FuZGlkYXRlID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOwogICAgICAgICBpbnQgY2Fu
ZGlkYXRlVGFiSW5kZXggPSBjYW5kaWRhdGUudGFiSW5kZXgoKTsKLSAgICAgICAgaWYgKGlzRm9j
dXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcihjYW5kaWRhdGUsIGV2ZW50KSAmJiBjYW5kaWRhdGVU
YWJJbmRleCA+IHRhYkluZGV4ICYmICghd2lubmVyIHx8IGNhbmRpZGF0ZVRhYkluZGV4IDwgd2lu
bmluZ1RhYkluZGV4KSkgeworICAgICAgICBpZiAoaXNGb2N1c2FibGVFbGVtZW50T3JTY29wZU93
bmVyKCZjYW5kaWRhdGUsIGV2ZW50KSAmJiBjYW5kaWRhdGVUYWJJbmRleCA+IHRhYkluZGV4ICYm
ICghd2lubmVyIHx8IGNhbmRpZGF0ZVRhYkluZGV4IDwgd2lubmluZ1RhYkluZGV4KSkgewogICAg
ICAgICAgICAgd2lubmVyID0gJmNhbmRpZGF0ZTsKICAgICAgICAgICAgIHdpbm5pbmdUYWJJbmRl
eCA9IGNhbmRpZGF0ZVRhYkluZGV4OwogICAgICAgICB9CkBAIC02MDgsNyArNjIxLDcgQEAgc3Rh
dGljIEVsZW1lbnQqIG5leHRFbGVtZW50V2l0aEdyZWF0ZXJUYQogICAgIHJldHVybiB3aW5uZXI7
CiB9CiAKLXN0YXRpYyBFbGVtZW50KiBwcmV2aW91c0VsZW1lbnRXaXRoTG93ZXJUYWJJbmRleChj
b25zdCBGb2N1c05hdmlnYXRpb25TY29wZSYgc2NvcGUsIE5vZGUqIHN0YXJ0LCBpbnQgdGFiSW5k
ZXgsIEtleWJvYXJkRXZlbnQmIGV2ZW50KQorc3RhdGljIEVsZW1lbnQqIHByZXZpb3VzRWxlbWVu
dFdpdGhMb3dlclRhYkluZGV4KGNvbnN0IEZvY3VzTmF2aWdhdGlvblNjb3BlJiBzY29wZSwgTm9k
ZSogc3RhcnQsIGludCB0YWJJbmRleCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgLy8g
U2VhcmNoIGlzIGluY2x1c2l2ZSBvZiBzdGFydAogICAgIGludCB3aW5uaW5nVGFiSW5kZXggPSAw
OwpAQCAtNjE3LDggKzYzMCw4IEBAIHN0YXRpYyBFbGVtZW50KiBwcmV2aW91c0VsZW1lbnRXaXRo
TG93ZXIKICAgICAgICAgaWYgKCFpczxFbGVtZW50Pigqbm9kZSkpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2Rl
KTsKLSAgICAgICAgaW50IGN1cnJlbnRUYWJJbmRleCA9IHNoYWRvd0FkanVzdGVkVGFiSW5kZXgo
ZWxlbWVudCwgZXZlbnQpOwotICAgICAgICBpZiAoaXNGb2N1c2FibGVFbGVtZW50T3JTY29wZU93
bmVyKGVsZW1lbnQsIGV2ZW50KSAmJiBjdXJyZW50VGFiSW5kZXggPCB0YWJJbmRleCAmJiBjdXJy
ZW50VGFiSW5kZXggPiB3aW5uaW5nVGFiSW5kZXgpIHsKKyAgICAgICAgaW50IGN1cnJlbnRUYWJJ
bmRleCA9IHNoYWRvd0FkanVzdGVkVGFiSW5kZXgoJmVsZW1lbnQsIGV2ZW50KTsKKyAgICAgICAg
aWYgKGlzRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcigmZWxlbWVudCwgZXZlbnQpICYmIGN1
cnJlbnRUYWJJbmRleCA8IHRhYkluZGV4ICYmIGN1cnJlbnRUYWJJbmRleCA+IHdpbm5pbmdUYWJJ
bmRleCkgewogICAgICAgICAgICAgd2lubmVyID0gJmVsZW1lbnQ7CiAgICAgICAgICAgICB3aW5u
aW5nVGFiSW5kZXggPSBjdXJyZW50VGFiSW5kZXg7CiAgICAgICAgIH0KQEAgLTY0NCw3ICs2NTcs
NyBAQCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6Om5leHRGb2N1c2FibGVFCiB7CiAgICAgaW50
IHN0YXJ0VGFiSW5kZXggPSAwOwogICAgIGlmIChzdGFydCAmJiBpczxFbGVtZW50Pigqc3RhcnQp
KQotICAgICAgICBzdGFydFRhYkluZGV4ID0gc2hhZG93QWRqdXN0ZWRUYWJJbmRleChkb3duY2Fz
dDxFbGVtZW50Pigqc3RhcnQpLCAqZXZlbnQpOworICAgICAgICBzdGFydFRhYkluZGV4ID0gc2hh
ZG93QWRqdXN0ZWRUYWJJbmRleChkb3duY2FzdDxFbGVtZW50PihzdGFydCksIGV2ZW50KTsKIAog
ICAgIGlmIChzdGFydCkgewogICAgICAgICAvLyBJZiBhIG5vZGUgaXMgZXhjbHVkZWQgZnJvbSB0
aGUgbm9ybWFsIHRhYmJpbmcgY3ljbGUsIHRoZSBuZXh0IGZvY3VzYWJsZSBub2RlIGlzIGRldGVy
bWluZWQgYnkgdHJlZSBvcmRlcgpAQCAtNjUzLDcgKzY2Niw3IEBAIEVsZW1lbnQqIEZvY3VzQ29u
dHJvbGxlcjo6bmV4dEZvY3VzYWJsZUUKICAgICAgICAgICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+
KCpub2RlKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAg
RWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKLSAgICAgICAgICAg
ICAgICBpZiAoaXNGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVyKGVsZW1lbnQsICpldmVudCkg
JiYgc2hhZG93QWRqdXN0ZWRUYWJJbmRleChlbGVtZW50LCAqZXZlbnQpID49IDApCisgICAgICAg
ICAgICAgICAgaWYgKGlzRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcigmZWxlbWVudCwgZXZl
bnQpICYmIHNoYWRvd0FkanVzdGVkVGFiSW5kZXgoJmVsZW1lbnQsIGV2ZW50KSA+PSAwKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gJmVsZW1lbnQ7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTY2OSw3ICs2ODIsNyBAQCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6Om5leHRGb2N1
c2FibGVFCiAgICAgLy8gTG9vayBmb3IgdGhlIGZpcnN0IEVsZW1lbnQgaW4gdGhlIHNjb3BlIHRo
YXQ6CiAgICAgLy8gMSkgaGFzIHRoZSBsb3dlc3QgdGFiaW5kZXggdGhhdCBpcyBoaWdoZXIgdGhh
biBzdGFydCdzIHRhYmluZGV4IChvciAwLCBpZiBzdGFydCBpcyBudWxsKSwgYW5kCiAgICAgLy8g
MikgY29tZXMgZmlyc3QgaW4gdGhlIHNjb3BlLCBpZiB0aGVyZSdzIGEgdGllLgotICAgIGlmIChF
bGVtZW50KiB3aW5uZXIgPSBuZXh0RWxlbWVudFdpdGhHcmVhdGVyVGFiSW5kZXgoc2NvcGUsIHN0
YXJ0VGFiSW5kZXgsICpldmVudCkpCisgICAgaWYgKEVsZW1lbnQqIHdpbm5lciA9IG5leHRFbGVt
ZW50V2l0aEdyZWF0ZXJUYWJJbmRleChzY29wZSwgc3RhcnRUYWJJbmRleCwgZXZlbnQpKQogICAg
ICAgICByZXR1cm4gd2lubmVyOwogCiAgICAgLy8gVGhlcmUgYXJlIG5vIG5vZGVzIHdpdGggYSB0
YWJpbmRleCBncmVhdGVyIHRoYW4gc3RhcnQncyB0YWJpbmRleCwKQEAgLTY5MSw3ICs3MDQsNyBA
QCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhCiAgICAgaWYgKHN0YXJ0
KSB7CiAgICAgICAgIHN0YXJ0aW5nTm9kZSA9IHNjb3BlLnByZXZpb3VzSW5TY29wZShzdGFydCk7
CiAgICAgICAgIGlmIChpczxFbGVtZW50Pigqc3RhcnQpKQotICAgICAgICAgICAgc3RhcnRpbmdU
YWJJbmRleCA9IHNoYWRvd0FkanVzdGVkVGFiSW5kZXgoZG93bmNhc3Q8RWxlbWVudD4oKnN0YXJ0
KSwgKmV2ZW50KTsKKyAgICAgICAgICAgIHN0YXJ0aW5nVGFiSW5kZXggPSBzaGFkb3dBZGp1c3Rl
ZFRhYkluZGV4KGRvd25jYXN0PEVsZW1lbnQ+KHN0YXJ0KSwgZXZlbnQpOwogICAgIH0gZWxzZQog
ICAgICAgICBzdGFydGluZ05vZGUgPSBsYXN0OwogCkBAIC03MDEsNyArNzE0LDcgQEAgRWxlbWVu
dCogRm9jdXNDb250cm9sbGVyOjpwcmV2aW91c0ZvY3VzYQogICAgICAgICAgICAgaWYgKCFpczxF
bGVtZW50Pigqbm9kZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBF
bGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOwotICAgICAgICAgICAg
aWYgKGlzRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcihlbGVtZW50LCAqZXZlbnQpICYmIHNo
YWRvd0FkanVzdGVkVGFiSW5kZXgoZWxlbWVudCwgKmV2ZW50KSA+PSAwKQorICAgICAgICAgICAg
aWYgKGlzRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcigmZWxlbWVudCwgZXZlbnQpICYmIHNo
YWRvd0FkanVzdGVkVGFiSW5kZXgoJmVsZW1lbnQsIGV2ZW50KSA+PSAwKQogICAgICAgICAgICAg
ICAgIHJldHVybiAmZWxlbWVudDsKICAgICAgICAgfQogICAgIH0KQEAgLTcxMyw3ICs3MjYsNyBA
QCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhCiAgICAgLy8gMSkgaGFz
IHRoZSBoaWdoZXN0IG5vbi16ZXJvIHRhYmluZGV4ICh0aGF0IGlzIGxlc3MgdGhhbiBzdGFydCdz
IHRhYmluZGV4KSwgYW5kCiAgICAgLy8gMikgY29tZXMgbGFzdCBpbiB0aGUgc2NvcGUsIGlmIHRo
ZXJlJ3MgYSB0aWUuCiAgICAgc3RhcnRpbmdUYWJJbmRleCA9IChzdGFydCAmJiBzdGFydGluZ1Rh
YkluZGV4KSA/IHN0YXJ0aW5nVGFiSW5kZXggOiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1h
eCgpOwotICAgIHJldHVybiBwcmV2aW91c0VsZW1lbnRXaXRoTG93ZXJUYWJJbmRleChzY29wZSwg
bGFzdCwgc3RhcnRpbmdUYWJJbmRleCwgKmV2ZW50KTsKKyAgICByZXR1cm4gcHJldmlvdXNFbGVt
ZW50V2l0aExvd2VyVGFiSW5kZXgoc2NvcGUsIGxhc3QsIHN0YXJ0aW5nVGFiSW5kZXgsIGV2ZW50
KTsKIH0KIAogc3RhdGljIGJvb2wgcmVsaW5xdWlzaGVzRWRpdGluZ0ZvY3VzKE5vZGUgKm5vZGUp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285925</attachid>
            <date>2016-08-12 12:00:50 -0700</date>
            <delta_ts>2016-08-12 14:07:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160808-20160812115911.patch</filename>
            <type>text/plain</type>
            <size>15667</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDQxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE2LTA4LTEyICBKb25hdGhh
biBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBGb2N1c0NvbnRyb2xsZXIg
bXVsdGlwbGUgZGVyZWZlcmVuY2VkIE5VTEwgcG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDgwOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQsIGZpeCBkb2Vz
IG5vdCBjaGFuZ2UgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBUaGlzIGNoYW5nZSBmaXhlcyBh
IG51bWJlciBvZiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIHdoaWNoIG9jY3VyIGluIEZvY3Vz
Q29udHJvbGxlci4KKworICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmlzRm9jdXNTY29wZU93bmVyKTogQWxsb3cgZm9yIGEgTlVMTCBFbGVtZW50
LCByZXBsYWNlIHJlZmVyZW5jZSB3aXRoIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpGb2N1
c05hdmlnYXRpb25TY29wZTo6Zmlyc3RDaGlsZEluU2NvcGUpOiBDaGFuZ2VkIG9iamVjdCBjYXN0
IHRvIHBvaW50ZXIgY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzTmF2aWdhdGlvblNjb3Bl
OjpsYXN0Q2hpbGRJblNjb3BlKTogQ2hhbmdlZCBvYmplY3QgY2FzdCB0byBwb2ludGVyIGNhc3Qu
CisgICAgICAgIChXZWJDb3JlOjpGb2N1c05hdmlnYXRpb25TY29wZTo6cGFyZW50SW5TY29wZSk6
IENoYW5nZWQgb2JqZWN0IGNhc3QgdG8gcG9pbnRlciBjYXN0LgorICAgICAgICAoV2ViQ29yZTo6
Rm9jdXNOYXZpZ2F0aW9uU2NvcGU6OnNjb3BlT2YpOiBSZW1vdmVkIGNhc3QgdG8gb2JqZWN0Lgor
ICAgICAgICAoV2ViQ29yZTo6IGlzRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcik6IEFsbG93
IGZvciBhIE5VTEwgRWxlbWVudCwgcmVwbGFjZSByZWZlcmVuY2VzIHdpdGggcG9pbnRlcnMuCisg
ICAgICAgIChXZWJDb3JlOjppc05vbkZvY3VzYWJsZVNjb3BlT3duZXIpOiBBbGxvdyBmb3IgYSBO
VUxMIEVsZW1lbnQsIHJlcGxhY2UgcmVmZXJlbmNlcyB3aXRoIHBvaW50ZXJzLgorICAgICAgICAo
V2ViQ29yZTo6aXNGb2N1c2FibGVTY29wZU93bmVyKTogQWxsb3cgZm9yIGEgTlVMTCBFbGVtZW50
LCByZXBsYWNlIHJlZmVyZW5jZXMgd2l0aCBwb2ludGVycy4KKyAgICAgICAgKFdlYkNvcmU6OnNo
YWRvd0FkanVzdGVkVGFiSW5kZXgpOiBBbGxvdyBmb3IgYSBOVUxMIEVsZW1lbnQsIHJlcGxhY2Ug
cmVmZXJlbmNlcyB3aXRoIHBvaW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjpGb2N1c0NvbnRyb2xsZXIpOiBDaGFuZ2VkIG9iamVjdHMgdG8gcG9pbnRlcnMgaW4gcmVs
ZXZhbnQgY2FsbHMuCisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1
c2FibGVFbGVtZW50QWNyb3NzRm9jdXNTY29wZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Rm9jdXNDb250cm9sbGVyOjpuZXh0Rm9jdXNhYmxlRWxlbWVudFdpdGhpblNjb3BlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhYmxlRWxl
bWVudFdpdGhpblNjb3BlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xs
ZXI6OmZpbmRFbGVtZW50V2l0aEV4YWN0VGFiSW5kZXgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Om5leHRFbGVtZW50V2l0aEdyZWF0ZXJUYWJJbmRleCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6cHJldmlvdXNFbGVtZW50V2l0aExvd2VyVGFiSW5kZXgpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6bmV4dEZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3du
ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6cHJldmlvdXNG
b2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpy
ZWxpbnF1aXNoZXNFZGl0aW5nRm9jdXMpOiBEaXR0by4KKwogMjAxNi0wOC0xMiAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjIwNDQwNC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDIwNDQxMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsMTIgKzczLDE0IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBoYXNDdXN0b21Gb2N1c0xvZ2ljKGMKICAgICByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+
KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxFbGVtZW50PihlbGVtZW50KS5oYXNDdXN0b21Gb2N1
c0xvZ2ljKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0ZvY3VzU2NvcGVPd25lcihjb25z
dCBFbGVtZW50JiBlbGVtZW50KQorc3RhdGljIGlubGluZSBib29sIGlzRm9jdXNTY29wZU93bmVy
KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgaWYgKGVsZW1lbnQuc2hhZG93Um9vdCgp
ICYmICFoYXNDdXN0b21Gb2N1c0xvZ2ljKGVsZW1lbnQpKQorICAgIGlmICghZWxlbWVudCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChlbGVtZW50LT5zaGFkb3dSb290KCkgJiYgIWhh
c0N1c3RvbUZvY3VzTG9naWMoKmVsZW1lbnQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBp
ZiAoaXM8SFRNTFNsb3RFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MU2xvdEVsZW1l
bnQ+KGVsZW1lbnQpLmFzc2lnbmVkTm9kZXMoKSkgewotICAgICAgICBTaGFkb3dSb290KiByb290
ID0gZWxlbWVudC5jb250YWluaW5nU2hhZG93Um9vdCgpOworICAgIGlmIChpczxIVE1MU2xvdEVs
ZW1lbnQ+KCplbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MU2xvdEVsZW1lbnQ+KCplbGVtZW50KS5h
c3NpZ25lZE5vZGVzKCkpIHsKKyAgICAgICAgU2hhZG93Um9vdCogcm9vdCA9IGVsZW1lbnQtPmNv
bnRhaW5pbmdTaGFkb3dSb290KCk7CiAgICAgICAgIGlmIChyb290ICYmIHJvb3QtPmhvc3QoKSAm
JiAhaGFzQ3VzdG9tRm9jdXNMb2dpYygqcm9vdC0+aG9zdCgpKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0gCkBAIC0xMTcsMjggKzExOSwyOCBAQCBwcml2YXRlOgogLy8gRklYTUU6
IEZvY3VzIG5hdmlnYXRpb24gc2hvdWxkIHdvcmsgd2l0aCBzaGFkb3cgdHJlZXMgdGhhdCBoYXZl
IHNsb3RzLgogTm9kZSogRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OmZpcnN0Q2hpbGRJblNjb3BlKGNv
bnN0IE5vZGUmIG5vZGUpIGNvbnN0CiB7Ci0gICAgaWYgKGlzPEVsZW1lbnQ+KG5vZGUpICYmIGlz
Rm9jdXNTY29wZU93bmVyKGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpKSkKKyAgICBpZiAoaXM8RWxl
bWVudD4obm9kZSkgJiYgaXNGb2N1c1Njb3BlT3duZXIoZG93bmNhc3Q8RWxlbWVudD4oJm5vZGUp
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG5vZGUuZmlyc3RDaGlsZCgp
OwogfQogCiBOb2RlKiBGb2N1c05hdmlnYXRpb25TY29wZTo6bGFzdENoaWxkSW5TY29wZShjb25z
dCBOb2RlJiBub2RlKSBjb25zdAogewotICAgIGlmIChpczxFbGVtZW50Pihub2RlKSAmJiBpc0Zv
Y3VzU2NvcGVPd25lcihkb3duY2FzdDxFbGVtZW50Pihub2RlKSkpCisgICAgaWYgKGlzPEVsZW1l
bnQ+KG5vZGUpICYmIGlzRm9jdXNTY29wZU93bmVyKGRvd25jYXN0PEVsZW1lbnQ+KCZub2RlKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBub2RlLmxhc3RDaGlsZCgpOwog
fQogCiBOb2RlKiBGb2N1c05hdmlnYXRpb25TY29wZTo6cGFyZW50SW5TY29wZShjb25zdCBOb2Rl
JiBub2RlKSBjb25zdAogewotICAgIGlmIChpczxFbGVtZW50Pihub2RlKSAmJiBpc0ZvY3VzU2Nv
cGVPd25lcihkb3duY2FzdDxFbGVtZW50Pihub2RlKSkpCisgICAgaWYgKGlzPEVsZW1lbnQ+KG5v
ZGUpICYmIGlzRm9jdXNTY29wZU93bmVyKGRvd25jYXN0PEVsZW1lbnQ+KCZub2RlKSkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKFVOTElLRUxZKG1fc2xvdEVsZW1lbnQgJiYg
bV9zbG90RWxlbWVudCA9PSBub2RlLmFzc2lnbmVkU2xvdCgpKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGUoKTsK
LSAgICBpZiAocGFyZW50ICYmIGlzPEVsZW1lbnQ+KHBhcmVudCkgJiYgaXNGb2N1c1Njb3BlT3du
ZXIoZG93bmNhc3Q8RWxlbWVudD4oKnBhcmVudCkpKQorICAgIGlmIChwYXJlbnQgJiYgaXM8RWxl
bWVudD4ocGFyZW50KSAmJiBpc0ZvY3VzU2NvcGVPd25lcihkb3duY2FzdDxFbGVtZW50PihwYXJl
bnQpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gcGFyZW50OwpAQCAt
MjQ1LDcgKzI0Nyw3IEBAIEZvY3VzTmF2aWdhdGlvblNjb3BlIEZvY3VzTmF2aWdhdGlvblNjb3AK
ICAgICBmb3IgKE5vZGUqIGN1cnJlbnROb2RlID0gJnN0YXJ0aW5nTm9kZTsgY3VycmVudE5vZGU7
IGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnBhcmVudE5vZGUoKSkgewogICAgICAgICByb290
ID0gY3VycmVudE5vZGU7CiAgICAgICAgIGlmIChIVE1MU2xvdEVsZW1lbnQqIHNsb3QgPSBjdXJy
ZW50Tm9kZS0+YXNzaWduZWRTbG90KCkpIHsKLSAgICAgICAgICAgIGlmIChpc0ZvY3VzU2NvcGVP
d25lcigqc2xvdCkpCisgICAgICAgICAgICBpZiAoaXNGb2N1c1Njb3BlT3duZXIoc2xvdCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEZvY3VzTmF2aWdhdGlvblNjb3BlKCpzbG90KTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoaXM8U2hhZG93Um9vdD4oY3VycmVudE5vZGUpKQpAQCAtMjg5LDI4
ICsyOTEsMzYgQEAgc3RhdGljIGlubGluZSB2b2lkIGRpc3BhdGNoRXZlbnRzT25XaW5kbwogICAg
ICAgICBkb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKS0+ZGlzcGF0Y2hGb2N1c0V2ZW50KG51bGxw
dHIsIEZvY3VzRGlyZWN0aW9uTm9uZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0ZvY3Vz
YWJsZUVsZW1lbnRPclNjb3BlT3duZXIoRWxlbWVudCYgZWxlbWVudCwgS2V5Ym9hcmRFdmVudCYg
ZXZlbnQpCitzdGF0aWMgaW5saW5lIGJvb2wgaXNGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVy
KEVsZW1lbnQqIGVsZW1lbnQsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewotICAgIHJldHVybiBl
bGVtZW50LmlzS2V5Ym9hcmRGb2N1c2FibGUoJmV2ZW50KSB8fCBpc0ZvY3VzU2NvcGVPd25lcihl
bGVtZW50KTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gZWxlbWVudC0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkgfHwgaXNGb2N1c1Njb3Bl
T3duZXIoZWxlbWVudCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc05vbkZvY3VzYWJsZVNj
b3BlT3duZXIoRWxlbWVudCYgZWxlbWVudCwgS2V5Ym9hcmRFdmVudCYgZXZlbnQpCitzdGF0aWMg
aW5saW5lIGJvb2wgaXNOb25Gb2N1c2FibGVTY29wZU93bmVyKEVsZW1lbnQqIGVsZW1lbnQsIEtl
eWJvYXJkRXZlbnQqIGV2ZW50KQogewotICAgIHJldHVybiAhZWxlbWVudC5pc0tleWJvYXJkRm9j
dXNhYmxlKCZldmVudCkgJiYgaXNGb2N1c1Njb3BlT3duZXIoZWxlbWVudCk7CisgICAgaWYgKCFl
bGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuICFlbGVtZW50LT5pc0tl
eWJvYXJkRm9jdXNhYmxlKGV2ZW50KSAmJiBpc0ZvY3VzU2NvcGVPd25lcihlbGVtZW50KTsKIH0K
IAotc3RhdGljIGlubGluZSBib29sIGlzRm9jdXNhYmxlU2NvcGVPd25lcihFbGVtZW50JiBlbGVt
ZW50LCBLZXlib2FyZEV2ZW50JiBldmVudCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0ZvY3VzYWJs
ZVNjb3BlT3duZXIoRWxlbWVudCogZWxlbWVudCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7Ci0g
ICAgcmV0dXJuIGVsZW1lbnQuaXNLZXlib2FyZEZvY3VzYWJsZSgmZXZlbnQpICYmIGlzRm9jdXNT
Y29wZU93bmVyKGVsZW1lbnQpOworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBlbGVtZW50LT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSAmJiBp
c0ZvY3VzU2NvcGVPd25lcihlbGVtZW50KTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgc2hhZG93
QWRqdXN0ZWRUYWJJbmRleChFbGVtZW50JiBlbGVtZW50LCBLZXlib2FyZEV2ZW50JiBldmVudCkK
K3N0YXRpYyBpbmxpbmUgaW50IHNoYWRvd0FkanVzdGVkVGFiSW5kZXgoRWxlbWVudCogZWxlbWVu
dCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICBy
ZXR1cm4gMDsKICAgICBpZiAoaXNOb25Gb2N1c2FibGVTY29wZU93bmVyKGVsZW1lbnQsIGV2ZW50
KSkgewotICAgICAgICBpZiAoIWVsZW1lbnQudGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkpCisgICAg
ICAgIGlmICghZWxlbWVudC0+dGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsgLy8gVHJlYXQgYSBzaGFkb3cgaG9zdCB3aXRob3V0IHRhYmluZGV4IGlmIGl0IGhh
cyB0YWJpbmRleD0wIGV2ZW4gdGhvdWdoIEhUTUxFbGVtZW50Ojp0YWJJbmRleCByZXR1cm5zIC0x
IG9uIHN1Y2ggYW4gZWxlbWVudC4KICAgICB9Ci0gICAgcmV0dXJuIGVsZW1lbnQudGFiSW5kZXgo
KTsKKyAgICByZXR1cm4gZWxlbWVudC0+dGFiSW5kZXgoKTsKIH0KIAogRm9jdXNDb250cm9sbGVy
OjpGb2N1c0NvbnRyb2xsZXIoUGFnZSYgcGFnZSwgVmlld1N0YXRlOjpGbGFncyB2aWV3U3RhdGUp
CkBAIC01MDQsOSArNTE0LDkgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0lu
RG9jdQogCiBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVFbGVtZW50QWNy
b3NzRm9jdXNTY29wZShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEZvY3VzTmF2aWdh
dGlvblNjb3BlJiBzY29wZSwgTm9kZSogY3VycmVudE5vZGUsIEtleWJvYXJkRXZlbnQqIGV2ZW50
KQogewotICAgIEFTU0VSVCghaXM8RWxlbWVudD4oY3VycmVudE5vZGUpIHx8ICFpc05vbkZvY3Vz
YWJsZVNjb3BlT3duZXIoZG93bmNhc3Q8RWxlbWVudD4oKmN1cnJlbnROb2RlKSwgKmV2ZW50KSk7
CisgICAgQVNTRVJUKCFpczxFbGVtZW50PihjdXJyZW50Tm9kZSkgfHwgIWlzTm9uRm9jdXNhYmxl
U2NvcGVPd25lcihkb3duY2FzdDxFbGVtZW50PihjdXJyZW50Tm9kZSksIGV2ZW50KSk7CiAKLSAg
ICBpZiAoY3VycmVudE5vZGUgJiYgZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCAm
JiBpczxFbGVtZW50PihjdXJyZW50Tm9kZSkgJiYgaXNGb2N1c2FibGVTY29wZU93bmVyKGRvd25j
YXN0PEVsZW1lbnQ+KCpjdXJyZW50Tm9kZSksICpldmVudCkpIHsKKyAgICBpZiAoY3VycmVudE5v
ZGUgJiYgZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCAmJiBpczxFbGVtZW50Pihj
dXJyZW50Tm9kZSkgJiYgaXNGb2N1c2FibGVTY29wZU93bmVyKGRvd25jYXN0PEVsZW1lbnQ+KGN1
cnJlbnROb2RlKSwgZXZlbnQpKSB7CiAgICAgICAgIGlmIChFbGVtZW50KiBjYW5kaWRhdGVJbklu
bmVyU2NvcGUgPSBmaW5kRm9jdXNhYmxlRWxlbWVudFdpdGhpblNjb3BlKGRpcmVjdGlvbiwgRm9j
dXNOYXZpZ2F0aW9uU2NvcGU6OnNjb3BlT3duZWRCeVNjb3BlT3duZXIoZG93bmNhc3Q8RWxlbWVu
dD4oKmN1cnJlbnROb2RlKSksIDAsIGV2ZW50KSkKICAgICAgICAgICAgIHJldHVybiBjYW5kaWRh
dGVJbklubmVyU2NvcGU7CiAgICAgfQpAQCAtNTE3LDcgKzUyNyw3IEBAIEVsZW1lbnQqIEZvY3Vz
Q29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZUUKICAgICAvLyBJZiB0aGVyZSdzIG5vIGZvY3VzYWJs
ZSBub2RlIHRvIGFkdmFuY2UgdG8sIG1vdmUgdXAgdGhlIGZvY3VzIHNjb3BlcyB1bnRpbCB3ZSBm
aW5kIG9uZS4KICAgICBFbGVtZW50KiBvd25lciA9IHNjb3BlLm93bmVyKCk7CiAgICAgd2hpbGUg
KG93bmVyKSB7Ci0gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25CYWNrd2Fy
ZCAmJiBpc0ZvY3VzYWJsZVNjb3BlT3duZXIoKm93bmVyLCAqZXZlbnQpKQorICAgICAgICBpZiAo
ZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQgJiYgaXNGb2N1c2FibGVTY29wZU93
bmVyKG93bmVyLCBldmVudCkpCiAgICAgICAgICAgICByZXR1cm4gZmluZEZvY3VzYWJsZUVsZW1l
bnREZXNjZW5kaW5nRG93bkludG9GcmFtZURvY3VtZW50KGRpcmVjdGlvbiwgb3duZXIsIGV2ZW50
KTsKIAogICAgICAgICBhdXRvIG91dGVyU2NvcGUgPSBGb2N1c05hdmlnYXRpb25TY29wZTo6c2Nv
cGVPZigqb3duZXIpOwpAQCAtNTQyLDcgKzU1Miw3IEBAIEVsZW1lbnQqIEZvY3VzQ29udHJvbGxl
cjo6bmV4dEZvY3VzYWJsZUUKICAgICBFbGVtZW50KiBmb3VuZCA9IG5leHRGb2N1c2FibGVFbGVt
ZW50T3JTY29wZU93bmVyKHNjb3BlLCBzdGFydCwgZXZlbnQpOwogICAgIGlmICghZm91bmQpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChpc05vbkZvY3VzYWJsZVNjb3BlT3duZXIo
KmZvdW5kLCAqZXZlbnQpKSB7CisgICAgaWYgKGlzTm9uRm9jdXNhYmxlU2NvcGVPd25lcihmb3Vu
ZCwgZXZlbnQpKSB7CiAgICAgICAgIGlmIChFbGVtZW50KiBmb3VuZEluSW5uZXJGb2N1c1Njb3Bl
ID0gbmV4dEZvY3VzYWJsZUVsZW1lbnRXaXRoaW5TY29wZShGb2N1c05hdmlnYXRpb25TY29wZTo6
c2NvcGVPd25lZEJ5U2NvcGVPd25lcigqZm91bmQpLCAwLCBldmVudCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZm91bmRJbklubmVyRm9jdXNTY29wZTsKICAgICAgICAgcmV0dXJuIG5leHRGb2N1c2Fi
bGVFbGVtZW50V2l0aGluU2NvcGUoc2NvcGUsIGZvdW5kLCBldmVudCk7CkBAIC01NTUsMTMgKzU2
NSwxMyBAQCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhCiAgICAgRWxl
bWVudCogZm91bmQgPSBwcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3duZXIoc2NvcGUs
IHN0YXJ0LCBldmVudCk7CiAgICAgaWYgKCFmb3VuZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgaWYgKGlzRm9jdXNhYmxlU2NvcGVPd25lcigqZm91bmQsICpldmVudCkpIHsKKyAgICBp
ZiAoaXNGb2N1c2FibGVTY29wZU93bmVyKGZvdW5kLCBldmVudCkpIHsKICAgICAgICAgLy8gU2Vh
cmNoIGFuIGlubmVyIGZvY3VzYWJsZSBlbGVtZW50IGluIHRoZSBzaGFkb3cgdHJlZSBmcm9tIHRo
ZSBlbmQuCiAgICAgICAgIGlmIChFbGVtZW50KiBmb3VuZEluSW5uZXJGb2N1c1Njb3BlID0gcHJl
dmlvdXNGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUoRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OnNj
b3BlT3duZWRCeVNjb3BlT3duZXIoKmZvdW5kKSwgMCwgZXZlbnQpKQogICAgICAgICAgICAgcmV0
dXJuIGZvdW5kSW5Jbm5lckZvY3VzU2NvcGU7CiAgICAgICAgIHJldHVybiBmb3VuZDsKICAgICB9
Ci0gICAgaWYgKGlzTm9uRm9jdXNhYmxlU2NvcGVPd25lcigqZm91bmQsICpldmVudCkpIHsKKyAg
ICBpZiAoaXNOb25Gb2N1c2FibGVTY29wZU93bmVyKGZvdW5kLCBldmVudCkpIHsKICAgICAgICAg
aWYgKEVsZW1lbnQqIGZvdW5kSW5Jbm5lckZvY3VzU2NvcGUgPSBwcmV2aW91c0ZvY3VzYWJsZUVs
ZW1lbnRXaXRoaW5TY29wZShGb2N1c05hdmlnYXRpb25TY29wZTo6c2NvcGVPd25lZEJ5U2NvcGVP
d25lcigqZm91bmQpLCAwLCBldmVudCkpCiAgICAgICAgICAgICByZXR1cm4gZm91bmRJbklubmVy
Rm9jdXNTY29wZTsKICAgICAgICAgcmV0dXJuIHByZXZpb3VzRm9jdXNhYmxlRWxlbWVudFdpdGhp
blNjb3BlKHNjb3BlLCBmb3VuZCwgZXZlbnQpOwpAQCAtNTgzLDE0ICs1OTMsMTcgQEAgRWxlbWVu
dCogRm9jdXNDb250cm9sbGVyOjpmaW5kRWxlbWVudFdpdAogICAgICAgICBpZiAoIWlzPEVsZW1l
bnQ+KCpub2RlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBFbGVtZW50JiBlbGVt
ZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOwotICAgICAgICBpZiAoaXNGb2N1c2FibGVF
bGVtZW50T3JTY29wZU93bmVyKGVsZW1lbnQsICpldmVudCkgJiYgc2hhZG93QWRqdXN0ZWRUYWJJ
bmRleChlbGVtZW50LCAqZXZlbnQpID09IHRhYkluZGV4KQorICAgICAgICBpZiAoaXNGb2N1c2Fi
bGVFbGVtZW50T3JTY29wZU93bmVyKCZlbGVtZW50LCBldmVudCkgJiYgc2hhZG93QWRqdXN0ZWRU
YWJJbmRleCgmZWxlbWVudCwgZXZlbnQpID09IHRhYkluZGV4KQogICAgICAgICAgICAgcmV0dXJu
ICZlbGVtZW50OwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIEVsZW1l
bnQqIG5leHRFbGVtZW50V2l0aEdyZWF0ZXJUYWJJbmRleChjb25zdCBGb2N1c05hdmlnYXRpb25T
Y29wZSYgc2NvcGUsIGludCB0YWJJbmRleCwgS2V5Ym9hcmRFdmVudCYgZXZlbnQpCitzdGF0aWMg
RWxlbWVudCogbmV4dEVsZW1lbnRXaXRoR3JlYXRlclRhYkluZGV4KGNvbnN0IEZvY3VzTmF2aWdh
dGlvblNjb3BlJiBzY29wZSwgaW50IHRhYkluZGV4LCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsK
KyAgICBpZiAoIWV2ZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKICAgICAvLyBT
ZWFyY2ggaXMgaW5jbHVzaXZlIG9mIHN0YXJ0CiAgICAgaW50IHdpbm5pbmdUYWJJbmRleCA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CiAgICAgRWxlbWVudCogd2lubmVyID0gbnVs
bHB0cjsKQEAgLTU5OSw3ICs2MTIsNyBAQCBzdGF0aWMgRWxlbWVudCogbmV4dEVsZW1lbnRXaXRo
R3JlYXRlclRhCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgRWxlbWVudCYgY2FuZGlk
YXRlID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOwogICAgICAgICBpbnQgY2FuZGlkYXRlVGFi
SW5kZXggPSBjYW5kaWRhdGUudGFiSW5kZXgoKTsKLSAgICAgICAgaWYgKGlzRm9jdXNhYmxlRWxl
bWVudE9yU2NvcGVPd25lcihjYW5kaWRhdGUsIGV2ZW50KSAmJiBjYW5kaWRhdGVUYWJJbmRleCA+
IHRhYkluZGV4ICYmICghd2lubmVyIHx8IGNhbmRpZGF0ZVRhYkluZGV4IDwgd2lubmluZ1RhYklu
ZGV4KSkgeworICAgICAgICBpZiAoaXNGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVyKCZjYW5k
aWRhdGUsIGV2ZW50KSAmJiBjYW5kaWRhdGVUYWJJbmRleCA+IHRhYkluZGV4ICYmICghd2lubmVy
IHx8IGNhbmRpZGF0ZVRhYkluZGV4IDwgd2lubmluZ1RhYkluZGV4KSkgewogICAgICAgICAgICAg
d2lubmVyID0gJmNhbmRpZGF0ZTsKICAgICAgICAgICAgIHdpbm5pbmdUYWJJbmRleCA9IGNhbmRp
ZGF0ZVRhYkluZGV4OwogICAgICAgICB9CkBAIC02MDgsNyArNjIxLDcgQEAgc3RhdGljIEVsZW1l
bnQqIG5leHRFbGVtZW50V2l0aEdyZWF0ZXJUYQogICAgIHJldHVybiB3aW5uZXI7CiB9CiAKLXN0
YXRpYyBFbGVtZW50KiBwcmV2aW91c0VsZW1lbnRXaXRoTG93ZXJUYWJJbmRleChjb25zdCBGb2N1
c05hdmlnYXRpb25TY29wZSYgc2NvcGUsIE5vZGUqIHN0YXJ0LCBpbnQgdGFiSW5kZXgsIEtleWJv
YXJkRXZlbnQmIGV2ZW50KQorc3RhdGljIEVsZW1lbnQqIHByZXZpb3VzRWxlbWVudFdpdGhMb3dl
clRhYkluZGV4KGNvbnN0IEZvY3VzTmF2aWdhdGlvblNjb3BlJiBzY29wZSwgTm9kZSogc3RhcnQs
IGludCB0YWJJbmRleCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgLy8gU2VhcmNoIGlz
IGluY2x1c2l2ZSBvZiBzdGFydAogICAgIGludCB3aW5uaW5nVGFiSW5kZXggPSAwOwpAQCAtNjE3
LDggKzYzMCw4IEBAIHN0YXRpYyBFbGVtZW50KiBwcmV2aW91c0VsZW1lbnRXaXRoTG93ZXIKICAg
ICAgICAgaWYgKCFpczxFbGVtZW50Pigqbm9kZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKLSAgICAg
ICAgaW50IGN1cnJlbnRUYWJJbmRleCA9IHNoYWRvd0FkanVzdGVkVGFiSW5kZXgoZWxlbWVudCwg
ZXZlbnQpOwotICAgICAgICBpZiAoaXNGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVyKGVsZW1l
bnQsIGV2ZW50KSAmJiBjdXJyZW50VGFiSW5kZXggPCB0YWJJbmRleCAmJiBjdXJyZW50VGFiSW5k
ZXggPiB3aW5uaW5nVGFiSW5kZXgpIHsKKyAgICAgICAgaW50IGN1cnJlbnRUYWJJbmRleCA9IHNo
YWRvd0FkanVzdGVkVGFiSW5kZXgoJmVsZW1lbnQsIGV2ZW50KTsKKyAgICAgICAgaWYgKGlzRm9j
dXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcigmZWxlbWVudCwgZXZlbnQpICYmIGN1cnJlbnRUYWJJ
bmRleCA8IHRhYkluZGV4ICYmIGN1cnJlbnRUYWJJbmRleCA+IHdpbm5pbmdUYWJJbmRleCkgewog
ICAgICAgICAgICAgd2lubmVyID0gJmVsZW1lbnQ7CiAgICAgICAgICAgICB3aW5uaW5nVGFiSW5k
ZXggPSBjdXJyZW50VGFiSW5kZXg7CiAgICAgICAgIH0KQEAgLTY0NCw3ICs2NTcsNyBAQCBFbGVt
ZW50KiBGb2N1c0NvbnRyb2xsZXI6Om5leHRGb2N1c2FibGVFCiB7CiAgICAgaW50IHN0YXJ0VGFi
SW5kZXggPSAwOwogICAgIGlmIChzdGFydCAmJiBpczxFbGVtZW50Pigqc3RhcnQpKQotICAgICAg
ICBzdGFydFRhYkluZGV4ID0gc2hhZG93QWRqdXN0ZWRUYWJJbmRleChkb3duY2FzdDxFbGVtZW50
Pigqc3RhcnQpLCAqZXZlbnQpOworICAgICAgICBzdGFydFRhYkluZGV4ID0gc2hhZG93QWRqdXN0
ZWRUYWJJbmRleChkb3duY2FzdDxFbGVtZW50PihzdGFydCksIGV2ZW50KTsKIAogICAgIGlmIChz
dGFydCkgewogICAgICAgICAvLyBJZiBhIG5vZGUgaXMgZXhjbHVkZWQgZnJvbSB0aGUgbm9ybWFs
IHRhYmJpbmcgY3ljbGUsIHRoZSBuZXh0IGZvY3VzYWJsZSBub2RlIGlzIGRldGVybWluZWQgYnkg
dHJlZSBvcmRlcgpAQCAtNjUzLDcgKzY2Niw3IEBAIEVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6
bmV4dEZvY3VzYWJsZUUKICAgICAgICAgICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KCpub2RlKSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgRWxlbWVudCYg
ZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKLSAgICAgICAgICAgICAgICBpZiAo
aXNGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVyKGVsZW1lbnQsICpldmVudCkgJiYgc2hhZG93
QWRqdXN0ZWRUYWJJbmRleChlbGVtZW50LCAqZXZlbnQpID49IDApCisgICAgICAgICAgICAgICAg
aWYgKGlzRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcigmZWxlbWVudCwgZXZlbnQpICYmIHNo
YWRvd0FkanVzdGVkVGFiSW5kZXgoJmVsZW1lbnQsIGV2ZW50KSA+PSAwKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gJmVsZW1lbnQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTY2
OSw3ICs2ODIsNyBAQCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6Om5leHRGb2N1c2FibGVFCiAg
ICAgLy8gTG9vayBmb3IgdGhlIGZpcnN0IEVsZW1lbnQgaW4gdGhlIHNjb3BlIHRoYXQ6CiAgICAg
Ly8gMSkgaGFzIHRoZSBsb3dlc3QgdGFiaW5kZXggdGhhdCBpcyBoaWdoZXIgdGhhbiBzdGFydCdz
IHRhYmluZGV4IChvciAwLCBpZiBzdGFydCBpcyBudWxsKSwgYW5kCiAgICAgLy8gMikgY29tZXMg
Zmlyc3QgaW4gdGhlIHNjb3BlLCBpZiB0aGVyZSdzIGEgdGllLgotICAgIGlmIChFbGVtZW50KiB3
aW5uZXIgPSBuZXh0RWxlbWVudFdpdGhHcmVhdGVyVGFiSW5kZXgoc2NvcGUsIHN0YXJ0VGFiSW5k
ZXgsICpldmVudCkpCisgICAgaWYgKEVsZW1lbnQqIHdpbm5lciA9IG5leHRFbGVtZW50V2l0aEdy
ZWF0ZXJUYWJJbmRleChzY29wZSwgc3RhcnRUYWJJbmRleCwgZXZlbnQpKQogICAgICAgICByZXR1
cm4gd2lubmVyOwogCiAgICAgLy8gVGhlcmUgYXJlIG5vIG5vZGVzIHdpdGggYSB0YWJpbmRleCBn
cmVhdGVyIHRoYW4gc3RhcnQncyB0YWJpbmRleCwKQEAgLTY5MSw3ICs3MDQsNyBAQCBFbGVtZW50
KiBGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhCiAgICAgaWYgKHN0YXJ0KSB7CiAgICAg
ICAgIHN0YXJ0aW5nTm9kZSA9IHNjb3BlLnByZXZpb3VzSW5TY29wZShzdGFydCk7CiAgICAgICAg
IGlmIChpczxFbGVtZW50Pigqc3RhcnQpKQotICAgICAgICAgICAgc3RhcnRpbmdUYWJJbmRleCA9
IHNoYWRvd0FkanVzdGVkVGFiSW5kZXgoZG93bmNhc3Q8RWxlbWVudD4oKnN0YXJ0KSwgKmV2ZW50
KTsKKyAgICAgICAgICAgIHN0YXJ0aW5nVGFiSW5kZXggPSBzaGFkb3dBZGp1c3RlZFRhYkluZGV4
KGRvd25jYXN0PEVsZW1lbnQ+KHN0YXJ0KSwgZXZlbnQpOwogICAgIH0gZWxzZQogICAgICAgICBz
dGFydGluZ05vZGUgPSBsYXN0OwogCkBAIC03MDEsNyArNzE0LDcgQEAgRWxlbWVudCogRm9jdXND
b250cm9sbGVyOjpwcmV2aW91c0ZvY3VzYQogICAgICAgICAgICAgaWYgKCFpczxFbGVtZW50Pigq
bm9kZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBFbGVtZW50JiBl
bGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOwotICAgICAgICAgICAgaWYgKGlzRm9j
dXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcihlbGVtZW50LCAqZXZlbnQpICYmIHNoYWRvd0FkanVz
dGVkVGFiSW5kZXgoZWxlbWVudCwgKmV2ZW50KSA+PSAwKQorICAgICAgICAgICAgaWYgKGlzRm9j
dXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcigmZWxlbWVudCwgZXZlbnQpICYmIHNoYWRvd0FkanVz
dGVkVGFiSW5kZXgoJmVsZW1lbnQsIGV2ZW50KSA+PSAwKQogICAgICAgICAgICAgICAgIHJldHVy
biAmZWxlbWVudDsKICAgICAgICAgfQogICAgIH0KQEAgLTcxMyw3ICs3MjYsNyBAQCBFbGVtZW50
KiBGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhCiAgICAgLy8gMSkgaGFzIHRoZSBoaWdo
ZXN0IG5vbi16ZXJvIHRhYmluZGV4ICh0aGF0IGlzIGxlc3MgdGhhbiBzdGFydCdzIHRhYmluZGV4
KSwgYW5kCiAgICAgLy8gMikgY29tZXMgbGFzdCBpbiB0aGUgc2NvcGUsIGlmIHRoZXJlJ3MgYSB0
aWUuCiAgICAgc3RhcnRpbmdUYWJJbmRleCA9IChzdGFydCAmJiBzdGFydGluZ1RhYkluZGV4KSA/
IHN0YXJ0aW5nVGFiSW5kZXggOiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOwotICAg
IHJldHVybiBwcmV2aW91c0VsZW1lbnRXaXRoTG93ZXJUYWJJbmRleChzY29wZSwgbGFzdCwgc3Rh
cnRpbmdUYWJJbmRleCwgKmV2ZW50KTsKKyAgICByZXR1cm4gcHJldmlvdXNFbGVtZW50V2l0aExv
d2VyVGFiSW5kZXgoc2NvcGUsIGxhc3QsIHN0YXJ0aW5nVGFiSW5kZXgsIGV2ZW50KTsKIH0KIAog
c3RhdGljIGJvb2wgcmVsaW5xdWlzaGVzRWRpdGluZ0ZvY3VzKE5vZGUgKm5vZGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285945</attachid>
            <date>2016-08-12 14:07:58 -0700</date>
            <delta_ts>2016-08-24 15:45:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160808-20160812140619.patch</filename>
            <type>text/plain</type>
            <size>11741</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDQxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE2LTA4LTEyICBKb25hdGhh
biBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBGb2N1c0NvbnRyb2xsZXIg
bXVsdGlwbGUgZGVyZWZlcmVuY2VkIE5VTEwgcG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDgwOAorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyBuZWVkZWQsIGZpeCBkb2VzIG5vdCBjaGFuZ2UgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBU
aGlzIGNoYW5nZSBmaXhlcyBhIG51bWJlciBvZiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIHdo
aWNoIG9jY3VyIGluIEZvY3VzQ29udHJvbGxlci4KKworICAgICAgICAqIHBhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVP
d25lcik6IENoYW5nZWQgS2V5Ym9hcmRFdmVudCByZWZlcmVuY2UgdG8gcG9pbnRlci4KKyAgICAg
ICAgKFdlYkNvcmU6OmlzTm9uRm9jdXNhYmxlU2NvcGVPd25lcik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6aXNGb2N1c2FibGVTY29wZU93bmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpzaGFkb3dBZGp1c3RlZFRhYkluZGV4KTogRGl0dG8uCisKKyAgICAgICAgKFdlYkNvcmU6OkZv
Y3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZUVsZW1lbnRBY3Jvc3NGb2N1c1Njb3BlKTogUGFz
cyBwb2ludGVyIGluc3RlYWQgb2YgcmVmZXJlbmNlIHRvIEtleWJvYXJkRXZlbnQuCisgICAgICAg
IChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6Om5leHRGb2N1c2FibGVFbGVtZW50V2l0aGluU2Nv
cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6cHJldmlvdXNG
b2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZv
Y3VzQ29udHJvbGxlcjo6ZmluZEVsZW1lbnRXaXRoRXhhY3RUYWJJbmRleCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6bmV4dEVsZW1lbnRXaXRoR3JlYXRlclRhYkluZGV4KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0VsZW1lbnRXaXRoTG93ZXJUYWJJbmRleCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpuZXh0Rm9jdXNhYmxlRWxlbWVu
dE9yU2NvcGVPd25lcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVy
OjpwcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3duZXIpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OnJlbGlucXVpc2hlc0VkaXRpbmdGb2N1cyk6IERpdHRvLgorCiAyMDE2LTA4LTEy
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMjA0NDA0LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjA0NDEzKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODksMjIgKzI4OSwyMiBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgZGlzcGF0Y2hFdmVudHNPbldpbmRvCiAgICAgICAgIGRvY3Vt
ZW50LT5mb2N1c2VkRWxlbWVudCgpLT5kaXNwYXRjaEZvY3VzRXZlbnQobnVsbHB0ciwgRm9jdXNE
aXJlY3Rpb25Ob25lKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGlzRm9jdXNhYmxlRWxlbWVu
dE9yU2NvcGVPd25lcihFbGVtZW50JiBlbGVtZW50LCBLZXlib2FyZEV2ZW50JiBldmVudCkKK3N0
YXRpYyBpbmxpbmUgYm9vbCBpc0ZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3duZXIoRWxlbWVudCYg
ZWxlbWVudCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7Ci0gICAgcmV0dXJuIGVsZW1lbnQuaXNL
ZXlib2FyZEZvY3VzYWJsZSgmZXZlbnQpIHx8IGlzRm9jdXNTY29wZU93bmVyKGVsZW1lbnQpOwor
ICAgIHJldHVybiBlbGVtZW50LmlzS2V5Ym9hcmRGb2N1c2FibGUoZXZlbnQpIHx8IGlzRm9jdXNT
Y29wZU93bmVyKGVsZW1lbnQpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNOb25Gb2N1c2Fi
bGVTY29wZU93bmVyKEVsZW1lbnQmIGVsZW1lbnQsIEtleWJvYXJkRXZlbnQmIGV2ZW50KQorc3Rh
dGljIGlubGluZSBib29sIGlzTm9uRm9jdXNhYmxlU2NvcGVPd25lcihFbGVtZW50JiBlbGVtZW50
LCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKLSAgICByZXR1cm4gIWVsZW1lbnQuaXNLZXlib2Fy
ZEZvY3VzYWJsZSgmZXZlbnQpICYmIGlzRm9jdXNTY29wZU93bmVyKGVsZW1lbnQpOworICAgIHJl
dHVybiAhZWxlbWVudC5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSAmJiBpc0ZvY3VzU2NvcGVP
d25lcihlbGVtZW50KTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGlzRm9jdXNhYmxlU2NvcGVP
d25lcihFbGVtZW50JiBlbGVtZW50LCBLZXlib2FyZEV2ZW50JiBldmVudCkKK3N0YXRpYyBpbmxp
bmUgYm9vbCBpc0ZvY3VzYWJsZVNjb3BlT3duZXIoRWxlbWVudCYgZWxlbWVudCwgS2V5Ym9hcmRF
dmVudCogZXZlbnQpCiB7Ci0gICAgcmV0dXJuIGVsZW1lbnQuaXNLZXlib2FyZEZvY3VzYWJsZSgm
ZXZlbnQpICYmIGlzRm9jdXNTY29wZU93bmVyKGVsZW1lbnQpOworICAgIHJldHVybiBlbGVtZW50
LmlzS2V5Ym9hcmRGb2N1c2FibGUoZXZlbnQpICYmIGlzRm9jdXNTY29wZU93bmVyKGVsZW1lbnQp
OwogfQogCi1zdGF0aWMgaW5saW5lIGludCBzaGFkb3dBZGp1c3RlZFRhYkluZGV4KEVsZW1lbnQm
IGVsZW1lbnQsIEtleWJvYXJkRXZlbnQmIGV2ZW50KQorc3RhdGljIGlubGluZSBpbnQgc2hhZG93
QWRqdXN0ZWRUYWJJbmRleChFbGVtZW50JiBlbGVtZW50LCBLZXlib2FyZEV2ZW50KiBldmVudCkK
IHsKICAgICBpZiAoaXNOb25Gb2N1c2FibGVTY29wZU93bmVyKGVsZW1lbnQsIGV2ZW50KSkgewog
ICAgICAgICBpZiAoIWVsZW1lbnQudGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkpCkBAIC01MDQsOSAr
NTA0LDkgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0luRG9jdQogCiBFbGVt
ZW50KiBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVFbGVtZW50QWNyb3NzRm9jdXNTY29w
ZShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEZvY3VzTmF2aWdhdGlvblNjb3BlJiBz
Y29wZSwgTm9kZSogY3VycmVudE5vZGUsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewotICAgIEFT
U0VSVCghaXM8RWxlbWVudD4oY3VycmVudE5vZGUpIHx8ICFpc05vbkZvY3VzYWJsZVNjb3BlT3du
ZXIoZG93bmNhc3Q8RWxlbWVudD4oKmN1cnJlbnROb2RlKSwgKmV2ZW50KSk7CisgICAgQVNTRVJU
KCFpczxFbGVtZW50PihjdXJyZW50Tm9kZSkgfHwgIWlzTm9uRm9jdXNhYmxlU2NvcGVPd25lcihk
b3duY2FzdDxFbGVtZW50PigqY3VycmVudE5vZGUpLCBldmVudCkpOwogCi0gICAgaWYgKGN1cnJl
bnROb2RlICYmIGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkZvcndhcmQgJiYgaXM8RWxlbWVu
dD4oY3VycmVudE5vZGUpICYmIGlzRm9jdXNhYmxlU2NvcGVPd25lcihkb3duY2FzdDxFbGVtZW50
PigqY3VycmVudE5vZGUpLCAqZXZlbnQpKSB7CisgICAgaWYgKGN1cnJlbnROb2RlICYmIGRpcmVj
dGlvbiA9PSBGb2N1c0RpcmVjdGlvbkZvcndhcmQgJiYgaXM8RWxlbWVudD4oY3VycmVudE5vZGUp
ICYmIGlzRm9jdXNhYmxlU2NvcGVPd25lcihkb3duY2FzdDxFbGVtZW50PigqY3VycmVudE5vZGUp
LCBldmVudCkpIHsKICAgICAgICAgaWYgKEVsZW1lbnQqIGNhbmRpZGF0ZUluSW5uZXJTY29wZSA9
IGZpbmRGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUoZGlyZWN0aW9uLCBGb2N1c05hdmlnYXRp
b25TY29wZTo6c2NvcGVPd25lZEJ5U2NvcGVPd25lcihkb3duY2FzdDxFbGVtZW50PigqY3VycmVu
dE5vZGUpKSwgMCwgZXZlbnQpKQogICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUluSW5uZXJT
Y29wZTsKICAgICB9CkBAIC01MTcsNyArNTE3LDcgQEAgRWxlbWVudCogRm9jdXNDb250cm9sbGVy
OjpmaW5kRm9jdXNhYmxlRQogICAgIC8vIElmIHRoZXJlJ3Mgbm8gZm9jdXNhYmxlIG5vZGUgdG8g
YWR2YW5jZSB0bywgbW92ZSB1cCB0aGUgZm9jdXMgc2NvcGVzIHVudGlsIHdlIGZpbmQgb25lLgog
ICAgIEVsZW1lbnQqIG93bmVyID0gc2NvcGUub3duZXIoKTsKICAgICB3aGlsZSAob3duZXIpIHsK
LSAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkICYmIGlzRm9j
dXNhYmxlU2NvcGVPd25lcigqb3duZXIsICpldmVudCkpCisgICAgICAgIGlmIChkaXJlY3Rpb24g
PT0gRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCAmJiBpc0ZvY3VzYWJsZVNjb3BlT3duZXIoKm93bmVy
LCBldmVudCkpCiAgICAgICAgICAgICByZXR1cm4gZmluZEZvY3VzYWJsZUVsZW1lbnREZXNjZW5k
aW5nRG93bkludG9GcmFtZURvY3VtZW50KGRpcmVjdGlvbiwgb3duZXIsIGV2ZW50KTsKIAogICAg
ICAgICBhdXRvIG91dGVyU2NvcGUgPSBGb2N1c05hdmlnYXRpb25TY29wZTo6c2NvcGVPZigqb3du
ZXIpOwpAQCAtNTQyLDcgKzU0Miw3IEBAIEVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6bmV4dEZv
Y3VzYWJsZUUKICAgICBFbGVtZW50KiBmb3VuZCA9IG5leHRGb2N1c2FibGVFbGVtZW50T3JTY29w
ZU93bmVyKHNjb3BlLCBzdGFydCwgZXZlbnQpOwogICAgIGlmICghZm91bmQpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIGlmIChpc05vbkZvY3VzYWJsZVNjb3BlT3duZXIoKmZvdW5kLCAq
ZXZlbnQpKSB7CisgICAgaWYgKGlzTm9uRm9jdXNhYmxlU2NvcGVPd25lcigqZm91bmQsIGV2ZW50
KSkgewogICAgICAgICBpZiAoRWxlbWVudCogZm91bmRJbklubmVyRm9jdXNTY29wZSA9IG5leHRG
b2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUoRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OnNjb3BlT3du
ZWRCeVNjb3BlT3duZXIoKmZvdW5kKSwgMCwgZXZlbnQpKQogICAgICAgICAgICAgcmV0dXJuIGZv
dW5kSW5Jbm5lckZvY3VzU2NvcGU7CiAgICAgICAgIHJldHVybiBuZXh0Rm9jdXNhYmxlRWxlbWVu
dFdpdGhpblNjb3BlKHNjb3BlLCBmb3VuZCwgZXZlbnQpOwpAQCAtNTU1LDEzICs1NTUsMTMgQEAg
RWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpwcmV2aW91c0ZvY3VzYQogICAgIEVsZW1lbnQqIGZv
dW5kID0gcHJldmlvdXNGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVyKHNjb3BlLCBzdGFydCwg
ZXZlbnQpOwogICAgIGlmICghZm91bmQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlm
IChpc0ZvY3VzYWJsZVNjb3BlT3duZXIoKmZvdW5kLCAqZXZlbnQpKSB7CisgICAgaWYgKGlzRm9j
dXNhYmxlU2NvcGVPd25lcigqZm91bmQsIGV2ZW50KSkgewogICAgICAgICAvLyBTZWFyY2ggYW4g
aW5uZXIgZm9jdXNhYmxlIGVsZW1lbnQgaW4gdGhlIHNoYWRvdyB0cmVlIGZyb20gdGhlIGVuZC4K
ICAgICAgICAgaWYgKEVsZW1lbnQqIGZvdW5kSW5Jbm5lckZvY3VzU2NvcGUgPSBwcmV2aW91c0Zv
Y3VzYWJsZUVsZW1lbnRXaXRoaW5TY29wZShGb2N1c05hdmlnYXRpb25TY29wZTo6c2NvcGVPd25l
ZEJ5U2NvcGVPd25lcigqZm91bmQpLCAwLCBldmVudCkpCiAgICAgICAgICAgICByZXR1cm4gZm91
bmRJbklubmVyRm9jdXNTY29wZTsKICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgIH0KLSAgICBp
ZiAoaXNOb25Gb2N1c2FibGVTY29wZU93bmVyKCpmb3VuZCwgKmV2ZW50KSkgeworICAgIGlmIChp
c05vbkZvY3VzYWJsZVNjb3BlT3duZXIoKmZvdW5kLCBldmVudCkpIHsKICAgICAgICAgaWYgKEVs
ZW1lbnQqIGZvdW5kSW5Jbm5lckZvY3VzU2NvcGUgPSBwcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnRX
aXRoaW5TY29wZShGb2N1c05hdmlnYXRpb25TY29wZTo6c2NvcGVPd25lZEJ5U2NvcGVPd25lcigq
Zm91bmQpLCAwLCBldmVudCkpCiAgICAgICAgICAgICByZXR1cm4gZm91bmRJbklubmVyRm9jdXNT
Y29wZTsKICAgICAgICAgcmV0dXJuIHByZXZpb3VzRm9jdXNhYmxlRWxlbWVudFdpdGhpblNjb3Bl
KHNjb3BlLCBmb3VuZCwgZXZlbnQpOwpAQCAtNTgzLDEzICs1ODMsMTMgQEAgRWxlbWVudCogRm9j
dXNDb250cm9sbGVyOjpmaW5kRWxlbWVudFdpdAogICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KCpu
b2RlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0g
ZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOwotICAgICAgICBpZiAoaXNGb2N1c2FibGVFbGVtZW50
T3JTY29wZU93bmVyKGVsZW1lbnQsICpldmVudCkgJiYgc2hhZG93QWRqdXN0ZWRUYWJJbmRleChl
bGVtZW50LCAqZXZlbnQpID09IHRhYkluZGV4KQorICAgICAgICBpZiAoaXNGb2N1c2FibGVFbGVt
ZW50T3JTY29wZU93bmVyKGVsZW1lbnQsIGV2ZW50KSAmJiBzaGFkb3dBZGp1c3RlZFRhYkluZGV4
KGVsZW1lbnQsIGV2ZW50KSA9PSB0YWJJbmRleCkKICAgICAgICAgICAgIHJldHVybiAmZWxlbWVu
dDsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyBFbGVtZW50KiBuZXh0
RWxlbWVudFdpdGhHcmVhdGVyVGFiSW5kZXgoY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmIHNj
b3BlLCBpbnQgdGFiSW5kZXgsIEtleWJvYXJkRXZlbnQmIGV2ZW50KQorc3RhdGljIEVsZW1lbnQq
IG5leHRFbGVtZW50V2l0aEdyZWF0ZXJUYWJJbmRleChjb25zdCBGb2N1c05hdmlnYXRpb25TY29w
ZSYgc2NvcGUsIGludCB0YWJJbmRleCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgLy8g
U2VhcmNoIGlzIGluY2x1c2l2ZSBvZiBzdGFydAogICAgIGludCB3aW5uaW5nVGFiSW5kZXggPSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOwpAQCAtNjA4LDcgKzYwOCw3IEBAIHN0YXRp
YyBFbGVtZW50KiBuZXh0RWxlbWVudFdpdGhHcmVhdGVyVGEKICAgICByZXR1cm4gd2lubmVyOwog
fQogCi1zdGF0aWMgRWxlbWVudCogcHJldmlvdXNFbGVtZW50V2l0aExvd2VyVGFiSW5kZXgoY29u
c3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmIHNjb3BlLCBOb2RlKiBzdGFydCwgaW50IHRhYkluZGV4
LCBLZXlib2FyZEV2ZW50JiBldmVudCkKK3N0YXRpYyBFbGVtZW50KiBwcmV2aW91c0VsZW1lbnRX
aXRoTG93ZXJUYWJJbmRleChjb25zdCBGb2N1c05hdmlnYXRpb25TY29wZSYgc2NvcGUsIE5vZGUq
IHN0YXJ0LCBpbnQgdGFiSW5kZXgsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAgIC8vIFNl
YXJjaCBpcyBpbmNsdXNpdmUgb2Ygc3RhcnQKICAgICBpbnQgd2lubmluZ1RhYkluZGV4ID0gMDsK
QEAgLTY0NCw3ICs2NDQsNyBAQCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6Om5leHRGb2N1c2Fi
bGVFCiB7CiAgICAgaW50IHN0YXJ0VGFiSW5kZXggPSAwOwogICAgIGlmIChzdGFydCAmJiBpczxF
bGVtZW50Pigqc3RhcnQpKQotICAgICAgICBzdGFydFRhYkluZGV4ID0gc2hhZG93QWRqdXN0ZWRU
YWJJbmRleChkb3duY2FzdDxFbGVtZW50Pigqc3RhcnQpLCAqZXZlbnQpOworICAgICAgICBzdGFy
dFRhYkluZGV4ID0gc2hhZG93QWRqdXN0ZWRUYWJJbmRleChkb3duY2FzdDxFbGVtZW50Pigqc3Rh
cnQpLCBldmVudCk7CiAKICAgICBpZiAoc3RhcnQpIHsKICAgICAgICAgLy8gSWYgYSBub2RlIGlz
IGV4Y2x1ZGVkIGZyb20gdGhlIG5vcm1hbCB0YWJiaW5nIGN5Y2xlLCB0aGUgbmV4dCBmb2N1c2Fi
bGUgbm9kZSBpcyBkZXRlcm1pbmVkIGJ5IHRyZWUgb3JkZXIKQEAgLTY1Myw3ICs2NTMsNyBAQCBF
bGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6Om5leHRGb2N1c2FibGVFCiAgICAgICAgICAgICAgICAg
aWYgKCFpczxFbGVtZW50Pigqbm9kZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgIEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pigqbm9k
ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGlzRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcihl
bGVtZW50LCAqZXZlbnQpICYmIHNoYWRvd0FkanVzdGVkVGFiSW5kZXgoZWxlbWVudCwgKmV2ZW50
KSA+PSAwKQorICAgICAgICAgICAgICAgIGlmIChpc0ZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3du
ZXIoZWxlbWVudCwgZXZlbnQpICYmIHNoYWRvd0FkanVzdGVkVGFiSW5kZXgoZWxlbWVudCwgZXZl
bnQpID49IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAmZWxlbWVudDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtNjY5LDcgKzY2OSw3IEBAIEVsZW1lbnQqIEZvY3VzQ29udHJv
bGxlcjo6bmV4dEZvY3VzYWJsZUUKICAgICAvLyBMb29rIGZvciB0aGUgZmlyc3QgRWxlbWVudCBp
biB0aGUgc2NvcGUgdGhhdDoKICAgICAvLyAxKSBoYXMgdGhlIGxvd2VzdCB0YWJpbmRleCB0aGF0
IGlzIGhpZ2hlciB0aGFuIHN0YXJ0J3MgdGFiaW5kZXggKG9yIDAsIGlmIHN0YXJ0IGlzIG51bGwp
LCBhbmQKICAgICAvLyAyKSBjb21lcyBmaXJzdCBpbiB0aGUgc2NvcGUsIGlmIHRoZXJlJ3MgYSB0
aWUuCi0gICAgaWYgKEVsZW1lbnQqIHdpbm5lciA9IG5leHRFbGVtZW50V2l0aEdyZWF0ZXJUYWJJ
bmRleChzY29wZSwgc3RhcnRUYWJJbmRleCwgKmV2ZW50KSkKKyAgICBpZiAoRWxlbWVudCogd2lu
bmVyID0gbmV4dEVsZW1lbnRXaXRoR3JlYXRlclRhYkluZGV4KHNjb3BlLCBzdGFydFRhYkluZGV4
LCBldmVudCkpCiAgICAgICAgIHJldHVybiB3aW5uZXI7CiAKICAgICAvLyBUaGVyZSBhcmUgbm8g
bm9kZXMgd2l0aCBhIHRhYmluZGV4IGdyZWF0ZXIgdGhhbiBzdGFydCdzIHRhYmluZGV4LApAQCAt
NjkxLDcgKzY5MSw3IEBAIEVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6cHJldmlvdXNGb2N1c2EK
ICAgICBpZiAoc3RhcnQpIHsKICAgICAgICAgc3RhcnRpbmdOb2RlID0gc2NvcGUucHJldmlvdXNJ
blNjb3BlKHN0YXJ0KTsKICAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KCpzdGFydCkpCi0gICAgICAg
ICAgICBzdGFydGluZ1RhYkluZGV4ID0gc2hhZG93QWRqdXN0ZWRUYWJJbmRleChkb3duY2FzdDxF
bGVtZW50Pigqc3RhcnQpLCAqZXZlbnQpOworICAgICAgICAgICAgc3RhcnRpbmdUYWJJbmRleCA9
IHNoYWRvd0FkanVzdGVkVGFiSW5kZXgoZG93bmNhc3Q8RWxlbWVudD4oKnN0YXJ0KSwgZXZlbnQp
OwogICAgIH0gZWxzZQogICAgICAgICBzdGFydGluZ05vZGUgPSBsYXN0OwogCkBAIC03MDEsNyAr
NzAxLDcgQEAgRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpwcmV2aW91c0ZvY3VzYQogICAgICAg
ICAgICAgaWYgKCFpczxFbGVtZW50Pigqbm9kZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUp
OwotICAgICAgICAgICAgaWYgKGlzRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcihlbGVtZW50
LCAqZXZlbnQpICYmIHNoYWRvd0FkanVzdGVkVGFiSW5kZXgoZWxlbWVudCwgKmV2ZW50KSA+PSAw
KQorICAgICAgICAgICAgaWYgKGlzRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcihlbGVtZW50
LCBldmVudCkgJiYgc2hhZG93QWRqdXN0ZWRUYWJJbmRleChlbGVtZW50LCBldmVudCkgPj0gMCkK
ICAgICAgICAgICAgICAgICByZXR1cm4gJmVsZW1lbnQ7CiAgICAgICAgIH0KICAgICB9CkBAIC03
MTMsNyArNzEzLDcgQEAgRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpwcmV2aW91c0ZvY3VzYQog
ICAgIC8vIDEpIGhhcyB0aGUgaGlnaGVzdCBub24temVybyB0YWJpbmRleCAodGhhdCBpcyBsZXNz
IHRoYW4gc3RhcnQncyB0YWJpbmRleCksIGFuZAogICAgIC8vIDIpIGNvbWVzIGxhc3QgaW4gdGhl
IHNjb3BlLCBpZiB0aGVyZSdzIGEgdGllLgogICAgIHN0YXJ0aW5nVGFiSW5kZXggPSAoc3RhcnQg
JiYgc3RhcnRpbmdUYWJJbmRleCkgPyBzdGFydGluZ1RhYkluZGV4IDogc3RkOjpudW1lcmljX2xp
bWl0czxpbnQ+OjptYXgoKTsKLSAgICByZXR1cm4gcHJldmlvdXNFbGVtZW50V2l0aExvd2VyVGFi
SW5kZXgoc2NvcGUsIGxhc3QsIHN0YXJ0aW5nVGFiSW5kZXgsICpldmVudCk7CisgICAgcmV0dXJu
IHByZXZpb3VzRWxlbWVudFdpdGhMb3dlclRhYkluZGV4KHNjb3BlLCBsYXN0LCBzdGFydGluZ1Rh
YkluZGV4LCBldmVudCk7CiB9CiAKIHN0YXRpYyBib29sIHJlbGlucXVpc2hlc0VkaXRpbmdGb2N1
cyhOb2RlICpub2RlKQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjA0NDE5KQorKysgU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYt
MDgtMTIgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgorCisgICAgICAgIEZv
Y3VzQ29udHJvbGxlciBtdWx0aXBsZSBkZXJlZmVyZW5jZWQgTlVMTCBwb2ludGVycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODA4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluaXRpYWxG
b2N1cyk6IFNob3VsZCB1c2UgbnVsbHB0ciwgbm90IDAgdG8gaW5pdGlhbGl6ZSBOVUxMIHBvaW50
ZXIuCisKIDIwMTYtMDgtMTIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
IAogICAgICAgICBtZXNzYWdlIGxvYWRpbmcgbmV2ZXIgZmluaXNoZXMgaW4gTWFpbApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNp
b24gMjA0NDEzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIwLDcgKzI1MjAsNyBAQCB2b2lkIFdlYlBhZ2U6OnNl
dEluaXRpYWxGb2N1cyhib29sIGZvcndhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldEluaXRpYWxGb2N1cyhmb3J3YXJkID8gRm9jdXNE
aXJlY3Rpb25Gb3J3YXJkIDogRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCwgMCk7CisgICAgbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCA/IEZvY3VzRGlyZWN0
aW9uRm9yd2FyZCA6IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQsIG51bGxwdHIpOwogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286900</attachid>
            <date>2016-08-24 15:45:08 -0700</date>
            <delta_ts>2016-08-24 16:28:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160808-20160824154308.patch</filename>
            <type>text/plain</type>
            <size>11820</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE2LTA4LTEyICBKb25hdGhh
biBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBGb2N1c0NvbnRyb2xsZXIg
bXVsdGlwbGUgZGVyZWZlcmVuY2VkIE5VTEwgcG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDgwOAorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQsIGZpeCBkb2VzIG5v
dCBjaGFuZ2UgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBUaGlzIGNoYW5nZSBmaXhlcyBhIG51
bWJlciBvZiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIHdoaWNoIG9jY3VyIGluIEZvY3VzQ29u
dHJvbGxlci4KKworICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcik6IENoYW5nZWQgS2V5Ym9h
cmRFdmVudCByZWZlcmVuY2UgdG8gcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OmlzTm9uRm9j
dXNhYmxlU2NvcGVPd25lcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aXNGb2N1c2FibGVT
Y29wZU93bmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dBZGp1c3RlZFRhYklu
ZGV4KTogRGl0dG8uCisKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6ZmluZEZv
Y3VzYWJsZUVsZW1lbnRBY3Jvc3NGb2N1c1Njb3BlKTogUGFzcyBwb2ludGVyIGluc3RlYWQgb2Yg
cmVmZXJlbmNlIHRvIEtleWJvYXJkRXZlbnQuCisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRy
b2xsZXI6Om5leHRGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6cHJldmlvdXNGb2N1c2FibGVFbGVtZW50V2l0aGlu
U2NvcGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6ZmluZEVs
ZW1lbnRXaXRoRXhhY3RUYWJJbmRleCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6bmV4dEVs
ZW1lbnRXaXRoR3JlYXRlclRhYkluZGV4KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpwcmV2
aW91c0VsZW1lbnRXaXRoTG93ZXJUYWJJbmRleCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Rm9jdXNDb250cm9sbGVyOjpuZXh0Rm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcik6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpwcmV2aW91c0ZvY3VzYWJsZUVs
ZW1lbnRPclNjb3BlT3duZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnJlbGlucXVpc2hl
c0VkaXRpbmdGb2N1cyk6IERpdHRvLgorCiAyMDE2LTA4LTI0ICBOYW4gV2FuZyAgPG5fd2FuZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgQVg6IFZvaWNlT3ZlciBvbiBpT1MgaWdub3JlcyBhcmlhLWNo
ZWNrZWQgb24gbWVudWl0ZW1yYWRpbyBhbmQgbWVudWl0ZW1jaGVja2JveApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjA0OTM5KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
ODksMjIgKzI4OSwyMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZGlzcGF0Y2hFdmVudHNPbldpbmRv
CiAgICAgICAgIGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpLT5kaXNwYXRjaEZvY3VzRXZlbnQo
bnVsbHB0ciwgRm9jdXNEaXJlY3Rpb25Ob25lKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGlz
Rm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcihFbGVtZW50JiBlbGVtZW50LCBLZXlib2FyZEV2
ZW50JiBldmVudCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0ZvY3VzYWJsZUVsZW1lbnRPclNjb3Bl
T3duZXIoRWxlbWVudCYgZWxlbWVudCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7Ci0gICAgcmV0
dXJuIGVsZW1lbnQuaXNLZXlib2FyZEZvY3VzYWJsZSgmZXZlbnQpIHx8IGlzRm9jdXNTY29wZU93
bmVyKGVsZW1lbnQpOworICAgIHJldHVybiBlbGVtZW50LmlzS2V5Ym9hcmRGb2N1c2FibGUoZXZl
bnQpIHx8IGlzRm9jdXNTY29wZU93bmVyKGVsZW1lbnQpOwogfQogCi1zdGF0aWMgaW5saW5lIGJv
b2wgaXNOb25Gb2N1c2FibGVTY29wZU93bmVyKEVsZW1lbnQmIGVsZW1lbnQsIEtleWJvYXJkRXZl
bnQmIGV2ZW50KQorc3RhdGljIGlubGluZSBib29sIGlzTm9uRm9jdXNhYmxlU2NvcGVPd25lcihF
bGVtZW50JiBlbGVtZW50LCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKLSAgICByZXR1cm4gIWVs
ZW1lbnQuaXNLZXlib2FyZEZvY3VzYWJsZSgmZXZlbnQpICYmIGlzRm9jdXNTY29wZU93bmVyKGVs
ZW1lbnQpOworICAgIHJldHVybiAhZWxlbWVudC5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSAm
JiBpc0ZvY3VzU2NvcGVPd25lcihlbGVtZW50KTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGlz
Rm9jdXNhYmxlU2NvcGVPd25lcihFbGVtZW50JiBlbGVtZW50LCBLZXlib2FyZEV2ZW50JiBldmVu
dCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0ZvY3VzYWJsZVNjb3BlT3duZXIoRWxlbWVudCYgZWxl
bWVudCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7Ci0gICAgcmV0dXJuIGVsZW1lbnQuaXNLZXli
b2FyZEZvY3VzYWJsZSgmZXZlbnQpICYmIGlzRm9jdXNTY29wZU93bmVyKGVsZW1lbnQpOworICAg
IHJldHVybiBlbGVtZW50LmlzS2V5Ym9hcmRGb2N1c2FibGUoZXZlbnQpICYmIGlzRm9jdXNTY29w
ZU93bmVyKGVsZW1lbnQpOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBzaGFkb3dBZGp1c3RlZFRh
YkluZGV4KEVsZW1lbnQmIGVsZW1lbnQsIEtleWJvYXJkRXZlbnQmIGV2ZW50KQorc3RhdGljIGlu
bGluZSBpbnQgc2hhZG93QWRqdXN0ZWRUYWJJbmRleChFbGVtZW50JiBlbGVtZW50LCBLZXlib2Fy
ZEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoaXNOb25Gb2N1c2FibGVTY29wZU93bmVyKGVsZW1l
bnQsIGV2ZW50KSkgewogICAgICAgICBpZiAoIWVsZW1lbnQudGFiSW5kZXhTZXRFeHBsaWNpdGx5
KCkpCkBAIC01MDQsOSArNTA0LDkgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1
c0luRG9jdQogCiBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVFbGVtZW50
QWNyb3NzRm9jdXNTY29wZShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEZvY3VzTmF2
aWdhdGlvblNjb3BlJiBzY29wZSwgTm9kZSogY3VycmVudE5vZGUsIEtleWJvYXJkRXZlbnQqIGV2
ZW50KQogewotICAgIEFTU0VSVCghaXM8RWxlbWVudD4oY3VycmVudE5vZGUpIHx8ICFpc05vbkZv
Y3VzYWJsZVNjb3BlT3duZXIoZG93bmNhc3Q8RWxlbWVudD4oKmN1cnJlbnROb2RlKSwgKmV2ZW50
KSk7CisgICAgQVNTRVJUKCFpczxFbGVtZW50PihjdXJyZW50Tm9kZSkgfHwgIWlzTm9uRm9jdXNh
YmxlU2NvcGVPd25lcihkb3duY2FzdDxFbGVtZW50PigqY3VycmVudE5vZGUpLCBldmVudCkpOwog
Ci0gICAgaWYgKGN1cnJlbnROb2RlICYmIGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkZvcndh
cmQgJiYgaXM8RWxlbWVudD4oY3VycmVudE5vZGUpICYmIGlzRm9jdXNhYmxlU2NvcGVPd25lcihk
b3duY2FzdDxFbGVtZW50PigqY3VycmVudE5vZGUpLCAqZXZlbnQpKSB7CisgICAgaWYgKGN1cnJl
bnROb2RlICYmIGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkZvcndhcmQgJiYgaXM8RWxlbWVu
dD4oY3VycmVudE5vZGUpICYmIGlzRm9jdXNhYmxlU2NvcGVPd25lcihkb3duY2FzdDxFbGVtZW50
PigqY3VycmVudE5vZGUpLCBldmVudCkpIHsKICAgICAgICAgaWYgKEVsZW1lbnQqIGNhbmRpZGF0
ZUluSW5uZXJTY29wZSA9IGZpbmRGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUoZGlyZWN0aW9u
LCBGb2N1c05hdmlnYXRpb25TY29wZTo6c2NvcGVPd25lZEJ5U2NvcGVPd25lcihkb3duY2FzdDxF
bGVtZW50PigqY3VycmVudE5vZGUpKSwgMCwgZXZlbnQpKQogICAgICAgICAgICAgcmV0dXJuIGNh
bmRpZGF0ZUluSW5uZXJTY29wZTsKICAgICB9CkBAIC01MTcsNyArNTE3LDcgQEAgRWxlbWVudCog
Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlRQogICAgIC8vIElmIHRoZXJlJ3Mgbm8gZm9j
dXNhYmxlIG5vZGUgdG8gYWR2YW5jZSB0bywgbW92ZSB1cCB0aGUgZm9jdXMgc2NvcGVzIHVudGls
IHdlIGZpbmQgb25lLgogICAgIEVsZW1lbnQqIG93bmVyID0gc2NvcGUub3duZXIoKTsKICAgICB3
aGlsZSAob3duZXIpIHsKLSAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkJh
Y2t3YXJkICYmIGlzRm9jdXNhYmxlU2NvcGVPd25lcigqb3duZXIsICpldmVudCkpCisgICAgICAg
IGlmIChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCAmJiBpc0ZvY3VzYWJsZVNj
b3BlT3duZXIoKm93bmVyLCBldmVudCkpCiAgICAgICAgICAgICByZXR1cm4gZmluZEZvY3VzYWJs
ZUVsZW1lbnREZXNjZW5kaW5nRG93bkludG9GcmFtZURvY3VtZW50KGRpcmVjdGlvbiwgb3duZXIs
IGV2ZW50KTsKIAogICAgICAgICBhdXRvIG91dGVyU2NvcGUgPSBGb2N1c05hdmlnYXRpb25TY29w
ZTo6c2NvcGVPZigqb3duZXIpOwpAQCAtNTQyLDcgKzU0Miw3IEBAIEVsZW1lbnQqIEZvY3VzQ29u
dHJvbGxlcjo6bmV4dEZvY3VzYWJsZUUKICAgICBFbGVtZW50KiBmb3VuZCA9IG5leHRGb2N1c2Fi
bGVFbGVtZW50T3JTY29wZU93bmVyKHNjb3BlLCBzdGFydCwgZXZlbnQpOwogICAgIGlmICghZm91
bmQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChpc05vbkZvY3VzYWJsZVNjb3Bl
T3duZXIoKmZvdW5kLCAqZXZlbnQpKSB7CisgICAgaWYgKGlzTm9uRm9jdXNhYmxlU2NvcGVPd25l
cigqZm91bmQsIGV2ZW50KSkgewogICAgICAgICBpZiAoRWxlbWVudCogZm91bmRJbklubmVyRm9j
dXNTY29wZSA9IG5leHRGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUoRm9jdXNOYXZpZ2F0aW9u
U2NvcGU6OnNjb3BlT3duZWRCeVNjb3BlT3duZXIoKmZvdW5kKSwgMCwgZXZlbnQpKQogICAgICAg
ICAgICAgcmV0dXJuIGZvdW5kSW5Jbm5lckZvY3VzU2NvcGU7CiAgICAgICAgIHJldHVybiBuZXh0
Rm9jdXNhYmxlRWxlbWVudFdpdGhpblNjb3BlKHNjb3BlLCBmb3VuZCwgZXZlbnQpOwpAQCAtNTU1
LDEzICs1NTUsMTMgQEAgRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpwcmV2aW91c0ZvY3VzYQog
ICAgIEVsZW1lbnQqIGZvdW5kID0gcHJldmlvdXNGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVy
KHNjb3BlLCBzdGFydCwgZXZlbnQpOwogICAgIGlmICghZm91bmQpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIGlmIChpc0ZvY3VzYWJsZVNjb3BlT3duZXIoKmZvdW5kLCAqZXZlbnQpKSB7
CisgICAgaWYgKGlzRm9jdXNhYmxlU2NvcGVPd25lcigqZm91bmQsIGV2ZW50KSkgewogICAgICAg
ICAvLyBTZWFyY2ggYW4gaW5uZXIgZm9jdXNhYmxlIGVsZW1lbnQgaW4gdGhlIHNoYWRvdyB0cmVl
IGZyb20gdGhlIGVuZC4KICAgICAgICAgaWYgKEVsZW1lbnQqIGZvdW5kSW5Jbm5lckZvY3VzU2Nv
cGUgPSBwcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnRXaXRoaW5TY29wZShGb2N1c05hdmlnYXRpb25T
Y29wZTo6c2NvcGVPd25lZEJ5U2NvcGVPd25lcigqZm91bmQpLCAwLCBldmVudCkpCiAgICAgICAg
ICAgICByZXR1cm4gZm91bmRJbklubmVyRm9jdXNTY29wZTsKICAgICAgICAgcmV0dXJuIGZvdW5k
OwogICAgIH0KLSAgICBpZiAoaXNOb25Gb2N1c2FibGVTY29wZU93bmVyKCpmb3VuZCwgKmV2ZW50
KSkgeworICAgIGlmIChpc05vbkZvY3VzYWJsZVNjb3BlT3duZXIoKmZvdW5kLCBldmVudCkpIHsK
ICAgICAgICAgaWYgKEVsZW1lbnQqIGZvdW5kSW5Jbm5lckZvY3VzU2NvcGUgPSBwcmV2aW91c0Zv
Y3VzYWJsZUVsZW1lbnRXaXRoaW5TY29wZShGb2N1c05hdmlnYXRpb25TY29wZTo6c2NvcGVPd25l
ZEJ5U2NvcGVPd25lcigqZm91bmQpLCAwLCBldmVudCkpCiAgICAgICAgICAgICByZXR1cm4gZm91
bmRJbklubmVyRm9jdXNTY29wZTsKICAgICAgICAgcmV0dXJuIHByZXZpb3VzRm9jdXNhYmxlRWxl
bWVudFdpdGhpblNjb3BlKHNjb3BlLCBmb3VuZCwgZXZlbnQpOwpAQCAtNTgzLDEzICs1ODMsMTMg
QEAgRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpmaW5kRWxlbWVudFdpdAogICAgICAgICBpZiAo
IWlzPEVsZW1lbnQ+KCpub2RlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBFbGVt
ZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOwotICAgICAgICBpZiAoaXNG
b2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVyKGVsZW1lbnQsICpldmVudCkgJiYgc2hhZG93QWRq
dXN0ZWRUYWJJbmRleChlbGVtZW50LCAqZXZlbnQpID09IHRhYkluZGV4KQorICAgICAgICBpZiAo
aXNGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVyKGVsZW1lbnQsIGV2ZW50KSAmJiBzaGFkb3dB
ZGp1c3RlZFRhYkluZGV4KGVsZW1lbnQsIGV2ZW50KSA9PSB0YWJJbmRleCkKICAgICAgICAgICAg
IHJldHVybiAmZWxlbWVudDsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRp
YyBFbGVtZW50KiBuZXh0RWxlbWVudFdpdGhHcmVhdGVyVGFiSW5kZXgoY29uc3QgRm9jdXNOYXZp
Z2F0aW9uU2NvcGUmIHNjb3BlLCBpbnQgdGFiSW5kZXgsIEtleWJvYXJkRXZlbnQmIGV2ZW50KQor
c3RhdGljIEVsZW1lbnQqIG5leHRFbGVtZW50V2l0aEdyZWF0ZXJUYWJJbmRleChjb25zdCBGb2N1
c05hdmlnYXRpb25TY29wZSYgc2NvcGUsIGludCB0YWJJbmRleCwgS2V5Ym9hcmRFdmVudCogZXZl
bnQpCiB7CiAgICAgLy8gU2VhcmNoIGlzIGluY2x1c2l2ZSBvZiBzdGFydAogICAgIGludCB3aW5u
aW5nVGFiSW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOwpAQCAtNjA4LDcg
KzYwOCw3IEBAIHN0YXRpYyBFbGVtZW50KiBuZXh0RWxlbWVudFdpdGhHcmVhdGVyVGEKICAgICBy
ZXR1cm4gd2lubmVyOwogfQogCi1zdGF0aWMgRWxlbWVudCogcHJldmlvdXNFbGVtZW50V2l0aExv
d2VyVGFiSW5kZXgoY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmIHNjb3BlLCBOb2RlKiBzdGFy
dCwgaW50IHRhYkluZGV4LCBLZXlib2FyZEV2ZW50JiBldmVudCkKK3N0YXRpYyBFbGVtZW50KiBw
cmV2aW91c0VsZW1lbnRXaXRoTG93ZXJUYWJJbmRleChjb25zdCBGb2N1c05hdmlnYXRpb25TY29w
ZSYgc2NvcGUsIE5vZGUqIHN0YXJ0LCBpbnQgdGFiSW5kZXgsIEtleWJvYXJkRXZlbnQqIGV2ZW50
KQogewogICAgIC8vIFNlYXJjaCBpcyBpbmNsdXNpdmUgb2Ygc3RhcnQKICAgICBpbnQgd2lubmlu
Z1RhYkluZGV4ID0gMDsKQEAgLTY0NCw3ICs2NDQsNyBAQCBFbGVtZW50KiBGb2N1c0NvbnRyb2xs
ZXI6Om5leHRGb2N1c2FibGVFCiB7CiAgICAgaW50IHN0YXJ0VGFiSW5kZXggPSAwOwogICAgIGlm
IChzdGFydCAmJiBpczxFbGVtZW50Pigqc3RhcnQpKQotICAgICAgICBzdGFydFRhYkluZGV4ID0g
c2hhZG93QWRqdXN0ZWRUYWJJbmRleChkb3duY2FzdDxFbGVtZW50Pigqc3RhcnQpLCAqZXZlbnQp
OworICAgICAgICBzdGFydFRhYkluZGV4ID0gc2hhZG93QWRqdXN0ZWRUYWJJbmRleChkb3duY2Fz
dDxFbGVtZW50Pigqc3RhcnQpLCBldmVudCk7CiAKICAgICBpZiAoc3RhcnQpIHsKICAgICAgICAg
Ly8gSWYgYSBub2RlIGlzIGV4Y2x1ZGVkIGZyb20gdGhlIG5vcm1hbCB0YWJiaW5nIGN5Y2xlLCB0
aGUgbmV4dCBmb2N1c2FibGUgbm9kZSBpcyBkZXRlcm1pbmVkIGJ5IHRyZWUgb3JkZXIKQEAgLTY1
Myw3ICs2NTMsNyBAQCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6Om5leHRGb2N1c2FibGVFCiAg
ICAgICAgICAgICAgICAgaWYgKCFpczxFbGVtZW50Pigqbm9kZSkpCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2Fz
dDxFbGVtZW50Pigqbm9kZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGlzRm9jdXNhYmxlRWxlbWVu
dE9yU2NvcGVPd25lcihlbGVtZW50LCAqZXZlbnQpICYmIHNoYWRvd0FkanVzdGVkVGFiSW5kZXgo
ZWxlbWVudCwgKmV2ZW50KSA+PSAwKQorICAgICAgICAgICAgICAgIGlmIChpc0ZvY3VzYWJsZUVs
ZW1lbnRPclNjb3BlT3duZXIoZWxlbWVudCwgZXZlbnQpICYmIHNoYWRvd0FkanVzdGVkVGFiSW5k
ZXgoZWxlbWVudCwgZXZlbnQpID49IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAmZWxl
bWVudDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNjY5LDcgKzY2OSw3IEBAIEVsZW1l
bnQqIEZvY3VzQ29udHJvbGxlcjo6bmV4dEZvY3VzYWJsZUUKICAgICAvLyBMb29rIGZvciB0aGUg
Zmlyc3QgRWxlbWVudCBpbiB0aGUgc2NvcGUgdGhhdDoKICAgICAvLyAxKSBoYXMgdGhlIGxvd2Vz
dCB0YWJpbmRleCB0aGF0IGlzIGhpZ2hlciB0aGFuIHN0YXJ0J3MgdGFiaW5kZXggKG9yIDAsIGlm
IHN0YXJ0IGlzIG51bGwpLCBhbmQKICAgICAvLyAyKSBjb21lcyBmaXJzdCBpbiB0aGUgc2NvcGUs
IGlmIHRoZXJlJ3MgYSB0aWUuCi0gICAgaWYgKEVsZW1lbnQqIHdpbm5lciA9IG5leHRFbGVtZW50
V2l0aEdyZWF0ZXJUYWJJbmRleChzY29wZSwgc3RhcnRUYWJJbmRleCwgKmV2ZW50KSkKKyAgICBp
ZiAoRWxlbWVudCogd2lubmVyID0gbmV4dEVsZW1lbnRXaXRoR3JlYXRlclRhYkluZGV4KHNjb3Bl
LCBzdGFydFRhYkluZGV4LCBldmVudCkpCiAgICAgICAgIHJldHVybiB3aW5uZXI7CiAKICAgICAv
LyBUaGVyZSBhcmUgbm8gbm9kZXMgd2l0aCBhIHRhYmluZGV4IGdyZWF0ZXIgdGhhbiBzdGFydCdz
IHRhYmluZGV4LApAQCAtNjkxLDcgKzY5MSw3IEBAIEVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6
cHJldmlvdXNGb2N1c2EKICAgICBpZiAoc3RhcnQpIHsKICAgICAgICAgc3RhcnRpbmdOb2RlID0g
c2NvcGUucHJldmlvdXNJblNjb3BlKHN0YXJ0KTsKICAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KCpz
dGFydCkpCi0gICAgICAgICAgICBzdGFydGluZ1RhYkluZGV4ID0gc2hhZG93QWRqdXN0ZWRUYWJJ
bmRleChkb3duY2FzdDxFbGVtZW50Pigqc3RhcnQpLCAqZXZlbnQpOworICAgICAgICAgICAgc3Rh
cnRpbmdUYWJJbmRleCA9IHNoYWRvd0FkanVzdGVkVGFiSW5kZXgoZG93bmNhc3Q8RWxlbWVudD4o
KnN0YXJ0KSwgZXZlbnQpOwogICAgIH0gZWxzZQogICAgICAgICBzdGFydGluZ05vZGUgPSBsYXN0
OwogCkBAIC03MDEsNyArNzAxLDcgQEAgRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpwcmV2aW91
c0ZvY3VzYQogICAgICAgICAgICAgaWYgKCFpczxFbGVtZW50Pigqbm9kZSkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8
RWxlbWVudD4oKm5vZGUpOwotICAgICAgICAgICAgaWYgKGlzRm9jdXNhYmxlRWxlbWVudE9yU2Nv
cGVPd25lcihlbGVtZW50LCAqZXZlbnQpICYmIHNoYWRvd0FkanVzdGVkVGFiSW5kZXgoZWxlbWVu
dCwgKmV2ZW50KSA+PSAwKQorICAgICAgICAgICAgaWYgKGlzRm9jdXNhYmxlRWxlbWVudE9yU2Nv
cGVPd25lcihlbGVtZW50LCBldmVudCkgJiYgc2hhZG93QWRqdXN0ZWRUYWJJbmRleChlbGVtZW50
LCBldmVudCkgPj0gMCkKICAgICAgICAgICAgICAgICByZXR1cm4gJmVsZW1lbnQ7CiAgICAgICAg
IH0KICAgICB9CkBAIC03MTMsNyArNzEzLDcgQEAgRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpw
cmV2aW91c0ZvY3VzYQogICAgIC8vIDEpIGhhcyB0aGUgaGlnaGVzdCBub24temVybyB0YWJpbmRl
eCAodGhhdCBpcyBsZXNzIHRoYW4gc3RhcnQncyB0YWJpbmRleCksIGFuZAogICAgIC8vIDIpIGNv
bWVzIGxhc3QgaW4gdGhlIHNjb3BlLCBpZiB0aGVyZSdzIGEgdGllLgogICAgIHN0YXJ0aW5nVGFi
SW5kZXggPSAoc3RhcnQgJiYgc3RhcnRpbmdUYWJJbmRleCkgPyBzdGFydGluZ1RhYkluZGV4IDog
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsKLSAgICByZXR1cm4gcHJldmlvdXNFbGVt
ZW50V2l0aExvd2VyVGFiSW5kZXgoc2NvcGUsIGxhc3QsIHN0YXJ0aW5nVGFiSW5kZXgsICpldmVu
dCk7CisgICAgcmV0dXJuIHByZXZpb3VzRWxlbWVudFdpdGhMb3dlclRhYkluZGV4KHNjb3BlLCBs
YXN0LCBzdGFydGluZ1RhYkluZGV4LCBldmVudCk7CiB9CiAKIHN0YXRpYyBib29sIHJlbGlucXVp
c2hlc0VkaXRpbmdGb2N1cyhOb2RlICpub2RlKQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjA0
OTM5KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTYtMDgtMjQgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29t
PgorCisgICAgICAgIEZvY3VzQ29udHJvbGxlciBtdWx0aXBsZSBkZXJlZmVyZW5jZWQgTlVMTCBw
b2ludGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYwODA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnNldEluaXRpYWxGb2N1cyk6IFNob3VsZCB1c2UgbnVsbHB0ciwgbm90IDAgdG8gaW5pdGlhbGl6
ZSBOVUxMIHBvaW50ZXIuCisKIDIwMTYtMDgtMjMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZW51bSB0cmFpdHMgYW5kIHVzZSB0aGVtIGluIHRo
ZSBJUEM6OkRlY29kZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIwNDkzOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxOSw3ICsyNTE5
LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRJbml0aWFs
Rm9jdXMoZm9yd2FyZCA/IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCA6IEZvY3VzRGlyZWN0aW9uQmFj
a3dhcmQsIDApOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0SW5pdGlhbEZvY3Vz
KGZvcndhcmQgPyBGb2N1c0RpcmVjdGlvbkZvcndhcmQgOiBGb2N1c0RpcmVjdGlvbkJhY2t3YXJk
LCBudWxscHRyKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFj
ayhjYWxsYmFja0lEKSk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>