<?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>141090</bug_id>
          
          <creation_ts>2015-01-30 11:41:43 -0800</creation_ts>
          <short_desc>Simple line layout: Improve FlowContentsIterator::TextFragment&apos;s encapsulation.</short_desc>
          <delta_ts>2015-01-31 11:30:31 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1065607</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-01-30 11:41:43 -0800</bug_when>
    <thetext>by making members private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065609</commentid>
    <comment_count>1</comment_count>
      <attachid>245729</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-01-30 11:48:27 -0800</bug_when>
    <thetext>Created attachment 245729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065751</commentid>
    <comment_count>2</comment_count>
      <attachid>245729</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-01-30 18:50:16 -0800</bug_when>
    <thetext>Comment on attachment 245729
Patch

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

Nice :) r=me

&gt; Source/WebCore/rendering/SimpleLineLayoutFlowContentsIterator.h:66
&gt; +        unsigned m_end  { 0 };

Might as well fix the double space before { here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065771</commentid>
    <comment_count>3</comment_count>
      <attachid>245770</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-01-30 20:57:26 -0800</bug_when>
    <thetext>Created attachment 245770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065777</commentid>
    <comment_count>4</comment_count>
      <attachid>245771</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-01-30 21:41:30 -0800</bug_when>
    <thetext>Created attachment 245771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065778</commentid>
    <comment_count>5</comment_count>
      <attachid>245771</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-30 22:26:00 -0800</bug_when>
    <thetext>Comment on attachment 245771
Patch

Clearing flags on attachment: 245771

Committed r179438: &lt;http://trac.webkit.org/changeset/179438&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065779</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-30 22:26:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065824</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-01-31 09:53:26 -0800</bug_when>
    <thetext>This caused a crash (assertion failure): https://build.webkit.org/results/Apple%20Yosemite%20Debug%20WK1%20(Tests)/r179440%20(1938)/fast/forms/basic-textareas-simple-lines-crash-log.txt

Alan, Andreas, do you happen to be available to investigate soon?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065825</commentid>
    <comment_count>8</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-01-31 09:58:42 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; This caused a crash (assertion failure):
&gt; https://build.webkit.org/results/Apple%20Yosemite%20Debug%20WK1%20(Tests)/
&gt; r179440%20(1938)/fast/forms/basic-textareas-simple-lines-crash-log.txt
&gt; 
&gt; Alan, Andreas, do you happen to be available to investigate soon?

Thanks. Looking at it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065841</commentid>
    <comment_count>9</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-01-31 11:30:31 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; This caused a crash (assertion failure):
&gt; https://build.webkit.org/results/Apple%20Yosemite%20Debug%20WK1%20(Tests)/
&gt; r179440%20(1938)/fast/forms/basic-textareas-simple-lines-crash-log.txt
&gt; 
&gt; Alan, Andreas, do you happen to be available to investigate soon?

Bug 141121</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245729</attachid>
            <date>2015-01-30 11:48:27 -0800</date>
            <delta_ts>2015-01-30 20:57:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141090-20150130114834.patch</filename>
            <type>text/plain</type>
            <size>17715</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY2YTY1YTNhOGQ3MmQ5
NmVlOTIxMjA2NGYzNGUwZDcxYmY5N2U3NS4uYjNkYTk4NmM1NzYzY2FiYTZlOWNlNjNhMzg3N2Uy
YjI3MjRiMmNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE1LTAxLTMwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiBJbXByb3ZlIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQncyBlbmNhcHN1bGF0
aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQx
MDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSBtZW1iZXJzIHByaXZhdGUgdG8gYXZvaWQgYWNjaWRlbnRhbCBjaGFuZ2UgaW4gVGV4dEZyYWdt
ZW50LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICog
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
TGluZUxheW91dDo6TGluZVN0YXRlOjphZGRGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0OjpMaW5lU3RhdGU6OmFkZFdoaXRlc3BhY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxlTGluZUxheW91dDo6c3BsaXRGcmFnbWVudFRvRml0TGluZSk6CisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpmaXJzdEZyYWdtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNyZWF0ZUxpbmVSdW5zKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50c0l0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkZsb3dDb250ZW50c0l0ZXJhdG9yOjpuZXh0VGV4
dEZyYWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250
ZW50c0l0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93
Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpUZXh0RnJhZ21lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Rmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFn
bWVudDo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Rmxvd0Nv
bnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OkZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OndpZHRo
KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkZsb3dDb250ZW50c0l0ZXJh
dG9yOjpUZXh0RnJhZ21lbnQ6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxh
eW91dDo6Rmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6aXNDb2xsYXBzZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Rmxvd0NvbnRlbnRzSXRlcmF0b3I6
OlRleHRGcmFnbWVudDo6aXNCcmVha2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGlu
ZUxheW91dDo6Rmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6aXNFbXB0eSk6CisK
IDIwMTUtMDEtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBP
cHRpbWl6ZSBNZW1vcnlDYWNoZTo6Z2V0U2Vzc2lvbk1hcCgpIGEgYml0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5kZXggNDNjNTBmM2U4MWYxNDRh
OGY1ZWNmMzQwNWE5NzU3MjdiOGI2YWNlZi4uN2QxNDBhYzQzMjkzNjhlM2JiMmQ5NWFiOTM0NmQ2
NmYwM2M0MjQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0LmNwcApAQCAtMjUyLDE4ICsyNTIsMTggQEAgc3RydWN0IExpbmVTdGF0ZSB7CiAgICAgewog
ICAgICAgICAvLyBTdGFydCBhIG5ldyB1bmNvbW1pdHRlZCBzZWdtZW50LgogICAgICAgICBpZiAo
bV9uZXdTZWdtZW50KSB7Ci0gICAgICAgICAgICBzZWdtZW50U3RhcnQgPSBmcmFnbWVudC5zdGFy
dDsKKyAgICAgICAgICAgIHNlZ21lbnRTdGFydCA9IGZyYWdtZW50LnN0YXJ0KCk7CiAgICAgICAg
ICAgICBtX25ld1NlZ21lbnQgPSBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBzZWdtZW50V2lk
dGggKz0gZnJhZ21lbnQud2lkdGg7Ci0gICAgICAgIHNlZ21lbnRFbmQgPSBmcmFnbWVudC5lbmQ7
Ci0gICAgICAgIHNlZ21lbnRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aCA9IGZyYWdtZW50LnR5cGUg
PT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6V2hpdGVzcGFjZSA/IGZyYWdt
ZW50LndpZHRoIDogMDsKLSAgICAgICAgc2VnbWVudFRyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aCA9
IGZyYWdtZW50LnR5cGUgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6V2hp
dGVzcGFjZSA/IGZyYWdtZW50LmVuZCAtIGZyYWdtZW50LnN0YXJ0ICA6IDA7CisgICAgICAgIHNl
Z21lbnRXaWR0aCArPSBmcmFnbWVudC53aWR0aCgpOworICAgICAgICBzZWdtZW50RW5kID0gZnJh
Z21lbnQuZW5kKCk7CisgICAgICAgIHNlZ21lbnRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aCA9IGZy
YWdtZW50LnR5cGUoKSA9PSBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpXaGl0
ZXNwYWNlID8gZnJhZ21lbnQud2lkdGgoKSA6IDA7CisgICAgICAgIHNlZ21lbnRUcmFpbGluZ1do
aXRlc3BhY2VMZW5ndGggPSBmcmFnbWVudC50eXBlKCkgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6
OlRleHRGcmFnbWVudDo6V2hpdGVzcGFjZSA/IGZyYWdtZW50LmVuZCgpIC0gZnJhZ21lbnQuc3Rh
cnQoKSAgOiAwOwogICAgIH0KIAogICAgIHZvaWQgYWRkV2hpdGVzcGFjZShmbG9hdCB3aGl0ZXNw
YWNlV2lkdGgpCiAgICAgewotICAgICAgICBhZGRGcmFnbWVudChGbG93Q29udGVudHNJdGVyYXRv
cjo6VGV4dEZyYWdtZW50KHNlZ21lbnRFbmQsIHNlZ21lbnRFbmQgKyAxLCB3aGl0ZXNwYWNlV2lk
dGgsIHRydWUpKTsKKyAgICAgICAgYWRkRnJhZ21lbnQoRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRl
eHRGcmFnbWVudChzZWdtZW50RW5kLCBzZWdtZW50RW5kICsgMSwgd2hpdGVzcGFjZVdpZHRoLCBG
bG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpXaGl0ZXNwYWNlKSk7CiAgICAgfQog
CiAgICAgYm9vbCBoYXNXaGl0ZXNwYWNlT25seSgpIGNvbnN0CkBAIC0zNDksMjMgKzM0OSwyMyBA
QCBzdGF0aWMgdm9pZCB1cGRhdGVMaW5lQ29uc3RyYWlucyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
IGZsb3csIGZsb2F0JiBhdmFpbGFibGVXaQogc3RhdGljIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpU
ZXh0RnJhZ21lbnQgc3BsaXRGcmFnbWVudFRvRml0TGluZShGbG93Q29udGVudHNJdGVyYXRvcjo6
VGV4dEZyYWdtZW50JiBmcmFnbWVudFRvU3BsaXQsIGZsb2F0IGF2YWlsYWJsZVdpZHRoLCBib29s
IGtlZXBBdExlYXN0T25lQ2hhcmFjdGVyLCBjb25zdCBGbG93Q29udGVudHNJdGVyYXRvciYgZmxv
d0NvbnRlbnRzSXRlcmF0b3IpCiB7CiAgICAgLy8gRmFzdCBwYXRoIGZvciBzaW5nbGUgY2hhciBm
cmFnbWVudHMuCi0gICAgaWYgKGZyYWdtZW50VG9TcGxpdC5zdGFydCArIDEgPT0gZnJhZ21lbnRU
b1NwbGl0LmVuZCkgeworICAgIGlmIChmcmFnbWVudFRvU3BsaXQuc3RhcnQoKSArIDEgPT0gZnJh
Z21lbnRUb1NwbGl0LmVuZCgpKSB7CiAgICAgICAgIGlmIChrZWVwQXRMZWFzdE9uZUNoYXJhY3Rl
cikKICAgICAgICAgICAgIHJldHVybiBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50
KCk7CiAKICAgICAgICAgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCBmcmFnbWVu
dEZvck5leHRMaW5lKGZyYWdtZW50VG9TcGxpdCk7Ci0gICAgICAgIGZyYWdtZW50VG9TcGxpdC5l
bmQgPSBmcmFnbWVudFRvU3BsaXQuc3RhcnQ7Ci0gICAgICAgIGZyYWdtZW50VG9TcGxpdC53aWR0
aCA9IDA7CisgICAgICAgIC8vIE1ha2UgaXQgZW1wdHkgZnJhZ21lbnQuCisgICAgICAgIGZyYWdt
ZW50VG9TcGxpdCA9IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQoZnJhZ21lbnRU
b1NwbGl0LnN0YXJ0KCksIGZyYWdtZW50VG9TcGxpdC5zdGFydCgpLCAwLCBmcmFnbWVudFRvU3Bs
aXQudHlwZSgpKTsKICAgICAgICAgcmV0dXJuIGZyYWdtZW50Rm9yTmV4dExpbmU7CiAgICAgfQog
ICAgIC8vIFNpbXBsZSBiaW5hcnkgc2VhcmNoIHRvIGZpbmQgb3V0IHdoYXQgZml0cyB0aGUgY3Vy
cmVudCBsaW5lLgogICAgIC8vIEZJWE1FOiBhZGQgc3Vycm9nYXRlIHBhaXIgc3VwcG9ydC4KLSAg
ICB1bnNpZ25lZCBsZWZ0ID0gZnJhZ21lbnRUb1NwbGl0LnN0YXJ0OwotICAgIHVuc2lnbmVkIHJp
Z2h0ID0gZnJhZ21lbnRUb1NwbGl0LmVuZCAtIDE7IC8vIFdlIGNhbiBpZ25vcmUgdGhlIGxhc3Qg
Y2hhcmFjdGVyLiBJdCBzdXJlbHkgZG9lcyBub3QgZml0LgorICAgIHVuc2lnbmVkIGxlZnQgPSBm
cmFnbWVudFRvU3BsaXQuc3RhcnQoKTsKKyAgICB1bnNpZ25lZCByaWdodCA9IGZyYWdtZW50VG9T
cGxpdC5lbmQoKSAtIDE7IC8vIFdlIGNhbiBpZ25vcmUgdGhlIGxhc3QgY2hhcmFjdGVyLiBJdCBz
dXJlbHkgZG9lcyBub3QgZml0LgogICAgIGZsb2F0IHdpZHRoID0gMDsKICAgICB3aGlsZSAobGVm
dCA8IHJpZ2h0KSB7CiAgICAgICAgIHVuc2lnbmVkIG1pZGRsZSA9IChsZWZ0ICsgcmlnaHQpIC8g
MjsKLSAgICAgICAgd2lkdGggPSBmbG93Q29udGVudHNJdGVyYXRvci50ZXh0V2lkdGgoZnJhZ21l
bnRUb1NwbGl0LnN0YXJ0LCBtaWRkbGUgKyAxLCAwKTsKKyAgICAgICAgd2lkdGggPSBmbG93Q29u
dGVudHNJdGVyYXRvci50ZXh0V2lkdGgoZnJhZ21lbnRUb1NwbGl0LnN0YXJ0KCksIG1pZGRsZSAr
IDEsIDApOwogICAgICAgICBpZiAoYXZhaWxhYmxlV2lkdGggPiB3aWR0aCkKICAgICAgICAgICAg
IGxlZnQgPSBtaWRkbGUgKyAxOwogICAgICAgICBlbHNlIGlmIChhdmFpbGFibGVXaWR0aCA8IHdp
ZHRoKQpAQCAtMzc2LDE1ICszNzYsMTkgQEAgc3RhdGljIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpU
ZXh0RnJhZ21lbnQgc3BsaXRGcmFnbWVudFRvRml0TGluZShGbG93Q29udGVudHNJdGUKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGlmIChrZWVwQXRMZWFzdE9uZUNoYXJhY3RlciAmJiByaWdodCA9
PSBmcmFnbWVudFRvU3BsaXQuc3RhcnQpCisgICAgaWYgKGtlZXBBdExlYXN0T25lQ2hhcmFjdGVy
ICYmIHJpZ2h0ID09IGZyYWdtZW50VG9TcGxpdC5zdGFydCgpKQogICAgICAgICArK3JpZ2h0Owot
ICAgIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQgZnJhZ21lbnRGb3JOZXh0TGlu
ZShmcmFnbWVudFRvU3BsaXQpOwotICAgIGZyYWdtZW50VG9TcGxpdC5lbmQgPSByaWdodDsKLSAg
ICBmcmFnbWVudFRvU3BsaXQud2lkdGggPSBmcmFnbWVudFRvU3BsaXQuaXNFbXB0eSgpID8gMCA6
IGZsb3dDb250ZW50c0l0ZXJhdG9yLnRleHRXaWR0aChmcmFnbWVudFRvU3BsaXQuc3RhcnQsIGZy
YWdtZW50VG9TcGxpdC5lbmQsIDApOwogCi0gICAgZnJhZ21lbnRGb3JOZXh0TGluZS5zdGFydCA9
IGZyYWdtZW50VG9TcGxpdC5lbmQ7Ci0gICAgZnJhZ21lbnRGb3JOZXh0TGluZS53aWR0aCAtPSBm
cmFnbWVudFRvU3BsaXQud2lkdGg7Ci0gICAgcmV0dXJuIGZyYWdtZW50Rm9yTmV4dExpbmU7Cisg
ICAgLy8gRnJhZ21lbnQgZm9yIG5leHQgbGluZS4KKyAgICB1bnNpZ25lZCBuZXh0TGluZVN0YXJ0
ID0gcmlnaHQ7CisgICAgdW5zaWduZWQgbmV4dExpbmVFbmQgPSBmcmFnbWVudFRvU3BsaXQuZW5k
KCk7CisgICAgZmxvYXQgbmV4dExpbmVXaWR0aCA9IGZsb3dDb250ZW50c0l0ZXJhdG9yLnRleHRX
aWR0aChuZXh0TGluZVN0YXJ0LCBuZXh0TGluZUVuZCwgMCk7CisKKyAgICB1bnNpZ25lZCB0aGlz
TGluZVN0YXJ0ID0gZnJhZ21lbnRUb1NwbGl0LnN0YXJ0KCk7CisgICAgdW5zaWduZWQgdGhpc0xp
bmVFbmQgPSByaWdodDsKKyAgICBmbG9hdCB0aGlzTGluZVdpZHRoID0gZmxvd0NvbnRlbnRzSXRl
cmF0b3IudGV4dFdpZHRoKHRoaXNMaW5lU3RhcnQsIHRoaXNMaW5lRW5kLCAwKTsKKyAgICBmcmFn
bWVudFRvU3BsaXQgPSBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50KHRoaXNMaW5l
U3RhcnQsIHRoaXNMaW5lRW5kLCB0aGlzTGluZVdpZHRoLCBmcmFnbWVudFRvU3BsaXQudHlwZSgp
LCBmcmFnbWVudFRvU3BsaXQuaXNDb2xsYXBzZWQoKSwgZnJhZ21lbnRUb1NwbGl0LmlzQnJlYWth
YmxlKCkpOworICAgIHJldHVybiBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50KG5l
eHRMaW5lU3RhcnQsIG5leHRMaW5lRW5kLCBuZXh0TGluZVdpZHRoLCBmcmFnbWVudFRvU3BsaXQu
dHlwZSgpLCBmcmFnbWVudFRvU3BsaXQuaXNDb2xsYXBzZWQoKSwgZnJhZ21lbnRUb1NwbGl0Lmlz
QnJlYWthYmxlKCkpOwogfQogCiBzdGF0aWMgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFn
bWVudCBmaXJzdEZyYWdtZW50KEZsb3dDb250ZW50c0l0ZXJhdG9yJiBmbG93Q29udGVudHNJdGVy
YXRvciwgY29uc3QgTGluZVN0YXRlJiBwcmV2aW91c0xpbmUpCkBAIC0zOTgsMTYgKzQwMiwxNiBA
QCBzdGF0aWMgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCBmaXJzdEZyYWdtZW50
KEZsb3dDb250ZW50c0l0ZXJhdG9yJiBmbAogICAgIGVsc2UgewogICAgICAgICAvLyBTcGVjaWFs
IG92ZXJmbG93IHByZS13cmFwIHdoaXRlc3BhY2UgaGFuZGxpbmc6IGlnbm9yZSB0aGUgb3ZlcmZs
b3dlZCB3aGl0ZXNwYWNlIGlmIHdlIG1hbmFnZWQgdG8gZml0IGF0IGxlYXN0IG9uZSBjaGFyYWN0
ZXIgb24gdGhlIHByZXZpb3VzIGxpbmUuCiAgICAgICAgIC8vIFdoZW4gdGhlIGxpbmUgaXMgdG9v
IHNob3J0IHRvIGZpdCBvbmUgY2hhcmFjdGVyICh0aG91Z2h0IGl0IHN0aWxsIHN0YXlzIG9uIHRo
ZSBsaW5lKSB3ZSBjb250aW51ZSB3aXRoIHRoZSBvdmVyZmxvdyB3aGl0ZXNwYWNlIGNvbnRlbnQg
b24gdGhpcyBsaW5lLgotICAgICAgICBpZiAoZmlyc3RGcmFnbWVudC50eXBlID09IEZsb3dDb250
ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OldoaXRlc3BhY2UgJiYgcHJlV3JhcChzdHlsZSkg
JiYgcHJldmlvdXNMaW5lLmZpcnN0Q2hhcmFjdGVyRml0cygpKSB7CisgICAgICAgIGlmIChmaXJz
dEZyYWdtZW50LnR5cGUoKSA9PSBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpX
aGl0ZXNwYWNlICYmIHByZVdyYXAoc3R5bGUpICYmIHByZXZpb3VzTGluZS5maXJzdENoYXJhY3Rl
ckZpdHMoKSkgewogICAgICAgICAgICAgZmlyc3RGcmFnbWVudCA9IGZsb3dDb250ZW50c0l0ZXJh
dG9yLm5leHRUZXh0RnJhZ21lbnQoKTsKICAgICAgICAgICAgIC8vIElmIHNraXBwaW5nIHRoZSB3
aGl0ZXNwYWNlIHB1dHMgdXMgb24gYSBoYXJkIG5ld2xpbmUsIHNraXAgdGhlIG5ld2xpbmUgdG9v
IGFzIHdlIGFscmVhZHkgd3JhcHBlZCB0aGUgbGluZS4KLSAgICAgICAgICAgIGlmIChmaXJzdEZy
YWdtZW50LnR5cGUgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6TGluZUJy
ZWFrKQorICAgICAgICAgICAgaWYgKGZpcnN0RnJhZ21lbnQudHlwZSgpID09IEZsb3dDb250ZW50
c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OkxpbmVCcmVhaykKICAgICAgICAgICAgICAgICBmaXJz
dEZyYWdtZW50ID0gZmxvd0NvbnRlbnRzSXRlcmF0b3IubmV4dFRleHRGcmFnbWVudCgpOwogICAg
ICAgICB9CiAgICAgfQogCiAgICAgLy8gQ2hlY2sgaWYgd2UgbmVlZCB0byBza2lwIHRoZSBsZWFk
aW5nIHdoaXRlc3BhY2UuCi0gICAgaWYgKHN0eWxlLmNvbGxhcHNlV2hpdGVzcGFjZSAmJiBmaXJz
dEZyYWdtZW50LnR5cGUgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6V2hp
dGVzcGFjZSkKKyAgICBpZiAoc3R5bGUuY29sbGFwc2VXaGl0ZXNwYWNlICYmIGZpcnN0RnJhZ21l
bnQudHlwZSgpID09IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OldoaXRlc3Bh
Y2UpCiAgICAgICAgIGZpcnN0RnJhZ21lbnQgPSBmbG93Q29udGVudHNJdGVyYXRvci5uZXh0VGV4
dEZyYWdtZW50KCk7CiAgICAgcmV0dXJuIGZpcnN0RnJhZ21lbnQ7CiB9CkBAIC00MTcsMTUgKzQy
MSwxNSBAQCBzdGF0aWMgYm9vbCBjcmVhdGVMaW5lUnVucyhMaW5lU3RhdGUmIGxpbmUsIGNvbnN0
IExpbmVTdGF0ZSYgcHJldmlvdXNMaW5lLCBMYXlvdQogICAgIGNvbnN0IGF1dG8mIHN0eWxlID0g
Zmxvd0NvbnRlbnRzSXRlcmF0b3Iuc3R5bGUoKTsKICAgICBib29sIGxpbmVDYW5CZVdyYXBwZWQg
PSBzdHlsZS53cmFwTGluZXMgfHwgc3R5bGUuYnJlYWtXb3JkT25PdmVyZmxvdzsKICAgICBhdXRv
IGZyYWdtZW50ID0gZmlyc3RGcmFnbWVudChmbG93Q29udGVudHNJdGVyYXRvciwgcHJldmlvdXNM
aW5lKTsKLSAgICB3aGlsZSAoIWZyYWdtZW50LmlzRW1wdHkoKSkgeworICAgIHdoaWxlIChmcmFn
bWVudC50eXBlKCkgIT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6Q29udGVu
dEVuZCkgewogICAgICAgICAvLyBIYXJkIGxpbmVicmVhay4KLSAgICAgICAgaWYgKGZyYWdtZW50
LnR5cGUgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6TGluZUJyZWFrKSB7
CisgICAgICAgIGlmIChmcmFnbWVudC50eXBlKCkgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRl
eHRGcmFnbWVudDo6TGluZUJyZWFrKSB7CiAgICAgICAgICAgICAvLyBBZGQgdGhlIG5ldyBsaW5l
IGZyYWdtZW50IG9ubHkgaWYgdGhlcmUncyBub3RoaW5nIG9uIHRoZSBsaW5lLiAob3RoZXJ3aXNl
IHRoZSBleHRyYSBuZXcgbGluZSBjaGFyYWN0ZXIgd291bGQgc2hvdyB1cCBhdCB0aGUgZW5kIG9m
IHRoZSBjb250ZW50LikKICAgICAgICAgICAgIGlmICghbGluZS53aWR0aCgpKQogICAgICAgICAg
ICAgICAgIGxpbmUuYWRkRnJhZ21lbnQoZnJhZ21lbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKGxpbmVDYW5CZVdyYXBwZWQgJiYgIWxpbmUuZml0cyhmcmFn
bWVudC53aWR0aCkpIHsKKyAgICAgICAgaWYgKGxpbmVDYW5CZVdyYXBwZWQgJiYgIWxpbmUuZml0
cyhmcmFnbWVudC53aWR0aCgpKSkgewogICAgICAgICAgICAgLy8gT3ZlcmZsb3cgd3JhcHBpbmcg
YmVoYXZpb3VyOgogICAgICAgICAgICAgLy8gMS4gV2hpdGVzYXBjZSBjb2xsYXBzZSBvbjogd2hp
dGVzcGFjZSBpcyBza2lwcGVkLiBKdW1wIHRvIG5leHQgbGluZS4KICAgICAgICAgICAgIC8vIDIu
IFdoaXRlc3BhY2UgY29sbGFwc2Ugb2ZmOiB3aGl0ZXNwYWNlIGlzIHdyYXBwZWQuCkBAIC00MzMs
NyArNDM3LDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlTGluZVJ1bnMoTGluZVN0YXRlJiBsaW5lLCBj
b25zdCBMaW5lU3RhdGUmIHByZXZpb3VzTGluZSwgTGF5b3UKICAgICAgICAgICAgIC8vIDQuIE5v
bi13aGl0ZXNwYWNlIGZyYWdtZW50IHdoZW4gdGhlcmUncyBhbHJlYWR5IGFub3RoZXIgZnJhZ21l
bnQgb24gdGhlIGxpbmUgZ2V0cyBwdXNoZWQgdG8gdGhlIG5leHQgbGluZS4KICAgICAgICAgICAg
IGJvb2wgZW1wdHlMaW5lID0gIWxpbmUud2lkdGgoKTsKICAgICAgICAgICAgIC8vIFdoaXRlc3Bh
Y2UgZnJhZ21lbnQuCi0gICAgICAgICAgICBpZiAoZnJhZ21lbnQudHlwZSA9PSBGbG93Q29udGVu
dHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpXaGl0ZXNwYWNlKSB7CisgICAgICAgICAgICBpZiAo
ZnJhZ21lbnQudHlwZSgpID09IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6Oldo
aXRlc3BhY2UpIHsKICAgICAgICAgICAgICAgICBpZiAoIXN0eWxlLmNvbGxhcHNlV2hpdGVzcGFj
ZSkgewogICAgICAgICAgICAgICAgICAgICAvLyBTcGxpdCB0aGUgZnJhZ21lbnQ7IChtb2RpZmll
ZClmcmFnbWVudCBzdGF5cyBvbiB0aGlzIGxpbmUsIG92ZXJmbG93ZWRGcmFnbWVudCBpcyBwdXNo
ZWQgdG8gbmV4dCBsaW5lLgogICAgICAgICAgICAgICAgICAgICBsaW5lLm92ZXJmbG93ZWRGcmFn
bWVudCA9IHNwbGl0RnJhZ21lbnRUb0ZpdExpbmUoZnJhZ21lbnQsIGxpbmUuYXZhaWxhYmxlV2lk
dGggLSBsaW5lLndpZHRoKCksIGVtcHR5TGluZSwgZmxvd0NvbnRlbnRzSXRlcmF0b3IpOwpAQCAt
NDU5LDcgKzQ2Myw3IEBAIHN0YXRpYyBib29sIGNyZWF0ZUxpbmVSdW5zKExpbmVTdGF0ZSYgbGlu
ZSwgY29uc3QgTGluZVN0YXRlJiBwcmV2aW91c0xpbmUsIExheW91CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAvLyBXaGVuIHRoZSBjdXJyZW50IGZyYWdtZW50IGlzIGNv
bGxhcHNlZCB3aGl0ZXNwYWNlLCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIHJ1biBmb3Igd2hhdCB3ZSd2
ZSBwcm9jZXNzZWQgc28gZmFyLgotICAgICAgICBpZiAoZnJhZ21lbnQuaXNDb2xsYXBzZWQpIHsK
KyAgICAgICAgaWYgKGZyYWdtZW50LmlzQ29sbGFwc2VkKCkpIHsKICAgICAgICAgICAgIC8vIE9u
ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIHRvIHByZXNlcnZlLgogICAgICAgICAgICAgbGluZS5hZGRX
aGl0ZXNwYWNlKHN0eWxlLnNwYWNlV2lkdGgpOwogICAgICAgICAgICAgbGluZS5jcmVhdGVSdW4o
bGluZVJ1bnMpOwpAQCAtNDY5LDcgKzQ3Myw3IEBAIHN0YXRpYyBib29sIGNyZWF0ZUxpbmVSdW5z
KExpbmVTdGF0ZSYgbGluZSwgY29uc3QgTGluZVN0YXRlJiBwcmV2aW91c0xpbmUsIExheW91CiAg
ICAgICAgIGZyYWdtZW50ID0gZmxvd0NvbnRlbnRzSXRlcmF0b3IubmV4dFRleHRGcmFnbWVudChs
aW5lLndpZHRoKCkpOwogICAgIH0KICAgICBsaW5lLmNyZWF0ZVJ1bihsaW5lUnVucyk7Ci0gICAg
cmV0dXJuIGZyYWdtZW50LmlzRW1wdHkoKSAmJiBsaW5lLm92ZXJmbG93ZWRGcmFnbWVudC5pc0Vt
cHR5KCk7CisgICAgcmV0dXJuIGZyYWdtZW50LnR5cGUoKSA9PSBGbG93Q29udGVudHNJdGVyYXRv
cjo6VGV4dEZyYWdtZW50OjpDb250ZW50RW5kICYmIGxpbmUub3ZlcmZsb3dlZEZyYWdtZW50Lmlz
RW1wdHkoKTsKIH0KIAogc3RhdGljIHZvaWQgY2xvc2VMaW5lRW5kaW5nQW5kQWRqdXN0UnVucyhM
aW5lU3RhdGUmIGxpbmUsIExheW91dDo6UnVuVmVjdG9yJiBydW5zLCB1bnNpZ25lZCBwcmV2aW91
c1J1bkNvdW50LCB1bnNpZ25lZCYgbGluZUNvdW50LCBjb25zdCBGbG93Q29udGVudHNJdGVyYXRv
ciYgZmxvd0NvbnRlbnRzSXRlcmF0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50c0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuY3Bw
CmluZGV4IDRiNThiNTkxMTI3NTJlYzk5NDA2MzJlZjdjY2U1YzUwODgwOTliYTYuLjBlZDZmNDk4
ODk5MzVlMjNkZDI5MWViMmZjZTVmMDBkN2FiODJmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRz
SXRlcmF0b3IuY3BwCkBAIC02MSw0NyArNjEsMzQgQEAgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRl
eHRGcmFnbWVudCBGbG93Q29udGVudHNJdGVyYXRvcjo6bmV4dFRleHRGcmFnbWVudChmbG9hdAog
ICAgIC8vIDIuIHdoaXRlc3BhY2UgKGNvbGxhc3BlZCwgbm9uLWNvbGxhcHNlZCBtdWx0aSBvciBz
aW5nbGUpIG9yCiAgICAgLy8gMy4gbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycy4KICAgICAvLyA0
LiBlbXB0eSwgaW5kaWNhdGluZyBjb250ZW50IGVuZC4KLSAgICBUZXh0RnJhZ21lbnQgZnJhZ21l
bnQ7Ci0gICAgZnJhZ21lbnQuc3RhcnQgPSBtX3Bvc2l0aW9uOwotICAgIGlmIChpc0VuZChmcmFn
bWVudC5zdGFydCkpIHsKLSAgICAgICAgZnJhZ21lbnQuZW5kID0gZnJhZ21lbnQuc3RhcnQ7Cisg
ICAgaWYgKGlzRW5kKG1fcG9zaXRpb24pKQorICAgICAgICByZXR1cm4gVGV4dEZyYWdtZW50KG1f
cG9zaXRpb24sIG1fcG9zaXRpb24sIDAsIFRleHRGcmFnbWVudDo6Q29udGVudEVuZCk7CisgICAg
aWYgKGlzTGluZUJyZWFrKG1fcG9zaXRpb24pKSB7CisgICAgICAgIFRleHRGcmFnbWVudCBmcmFn
bWVudChtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgMSwgMCwgVGV4dEZyYWdtZW50OjpMaW5lQnJl
YWspOworICAgICAgICArK21fcG9zaXRpb247CiAgICAgICAgIHJldHVybiBmcmFnbWVudDsKICAg
ICB9Ci0gICAgaWYgKGlzTGluZUJyZWFrKGZyYWdtZW50LnN0YXJ0KSkgewotICAgICAgICBmcmFn
bWVudC50eXBlID0gVGV4dEZyYWdtZW50OjpMaW5lQnJlYWs7Ci0gICAgICAgIGZyYWdtZW50LmVu
ZCA9IGZyYWdtZW50LnN0YXJ0ICsgMTsKLSAgICAgICAgbV9wb3NpdGlvbiA9IGZyYWdtZW50LmVu
ZDsKLSAgICAgICAgcmV0dXJuIGZyYWdtZW50OwotICAgIH0KLQogICAgIHVuc2lnbmVkIHNwYWNl
Q291bnQgPSAwOwotICAgIHVuc2lnbmVkIHdoaXRlc3BhY2VFbmQgPSBmaW5kTmV4dE5vbldoaXRl
c3BhY2VQb3NpdGlvbihmcmFnbWVudC5zdGFydCwgc3BhY2VDb3VudCk7Ci0gICAgQVNTRVJUKGZy
YWdtZW50LnN0YXJ0IDw9IHdoaXRlc3BhY2VFbmQpOwotICAgIGlmIChmcmFnbWVudC5zdGFydCAh
PSB3aGl0ZXNwYWNlRW5kKSB7Ci0gICAgICAgIGZyYWdtZW50LnR5cGUgPSBUZXh0RnJhZ21lbnQ6
OldoaXRlc3BhY2U7Ci0gICAgICAgIGZyYWdtZW50LmVuZCA9IHdoaXRlc3BhY2VFbmQ7Ci0gICAg
ICAgIGJvb2wgbXVsdGlwbGVXaGl0ZXNwYWNlID0gZnJhZ21lbnQuc3RhcnQgKyAxIDwgZnJhZ21l
bnQuZW5kOwotICAgICAgICBmcmFnbWVudC5pc0NvbGxhcHNlZCA9IG11bHRpcGxlV2hpdGVzcGFj
ZSAmJiBtX3N0eWxlLmNvbGxhcHNlV2hpdGVzcGFjZTsKLSAgICAgICAgZnJhZ21lbnQuaXNCcmVh
a2FibGUgPSAhZnJhZ21lbnQuaXNDb2xsYXBzZWQgJiYgbXVsdGlwbGVXaGl0ZXNwYWNlOwotICAg
ICAgICBpZiAoZnJhZ21lbnQuaXNDb2xsYXBzZWQpCi0gICAgICAgICAgICBmcmFnbWVudC53aWR0
aCA9IG1fc3R5bGUuc3BhY2VXaWR0aDsKKyAgICB1bnNpZ25lZCBzdGFydFBvc2l0aW9uID0gbV9w
b3NpdGlvbjsKKyAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9IGZpbmROZXh0Tm9uV2hpdGVzcGFj
ZVBvc2l0aW9uKHN0YXJ0UG9zaXRpb24sIHNwYWNlQ291bnQpOworICAgIEFTU0VSVChzdGFydFBv
c2l0aW9uIDw9IGVuZFBvc2l0aW9uKTsKKyAgICBpZiAoZW5kUG9zaXRpb24gPiBzdGFydFBvc2l0
aW9uKSB7CisgICAgICAgIGJvb2wgbXVsdGlwbGVXaGl0ZXNwYWNlID0gc3RhcnRQb3NpdGlvbiAr
IDEgPCBlbmRQb3NpdGlvbjsKKyAgICAgICAgYm9vbCBpc0NvbGxhcHNlZCA9IG11bHRpcGxlV2hp
dGVzcGFjZSAmJiBtX3N0eWxlLmNvbGxhcHNlV2hpdGVzcGFjZTsKKyAgICAgICAgYm9vbCBpc0Jy
ZWFrYWJsZSA9ICFpc0NvbGxhcHNlZCAmJiBtdWx0aXBsZVdoaXRlc3BhY2U7CisgICAgICAgIGZs
b2F0IHdpZHRoID0gMDsKKyAgICAgICAgaWYgKGlzQ29sbGFwc2VkKQorICAgICAgICAgICAgd2lk
dGggPSBtX3N0eWxlLnNwYWNlV2lkdGg7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgdW5z
aWduZWQgZnJhZ21lbnRMZW5ndGggPSBmcmFnbWVudC5lbmQgLSBmcmFnbWVudC5zdGFydDsKLSAg
ICAgICAgICAgIGlmIChmcmFnbWVudExlbmd0aCA9PSBzcGFjZUNvdW50KQotICAgICAgICAgICAg
ICAgIGZyYWdtZW50LndpZHRoID0gZnJhZ21lbnRMZW5ndGggKiBtX3N0eWxlLnNwYWNlV2lkdGg7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZnJhZ21lbnQud2lkdGggPSB0ZXh0
V2lkdGgoZnJhZ21lbnQuc3RhcnQsIGZyYWdtZW50LmVuZCwgeFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGVuZFBvc2l0aW9uIC0gc3RhcnRQb3NpdGlvbjsKKyAgICAg
ICAgICAgIHdpZHRoID0gbGVuZ3RoID09IHNwYWNlQ291bnQgPyBsZW5ndGggKiBtX3N0eWxlLnNw
YWNlV2lkdGggOiB0ZXh0V2lkdGgoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIHhQb3NpdGlv
bik7CiAgICAgICAgIH0KLSAgICAgICAgbV9wb3NpdGlvbiA9IGZyYWdtZW50LmVuZDsKLSAgICAg
ICAgcmV0dXJuIGZyYWdtZW50OworICAgICAgICBtX3Bvc2l0aW9uID0gZW5kUG9zaXRpb247Cisg
ICAgICAgIHJldHVybiBUZXh0RnJhZ21lbnQoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIHdp
ZHRoLCBUZXh0RnJhZ21lbnQ6OldoaXRlc3BhY2UsIGlzQ29sbGFwc2VkLCBpc0JyZWFrYWJsZSk7
CiAgICAgfQotCi0gICAgZnJhZ21lbnQudHlwZSA9IFRleHRGcmFnbWVudDo6Tm9uV2hpdGVzcGFj
ZTsKLSAgICBmcmFnbWVudC5pc0JyZWFrYWJsZSA9IG1fc3R5bGUuYnJlYWtXb3JkT25PdmVyZmxv
dzsKLSAgICBmcmFnbWVudC5lbmQgPSBmaW5kTmV4dEJyZWFrYWJsZVBvc2l0aW9uKGZyYWdtZW50
LnN0YXJ0ICsgMSk7Ci0gICAgZnJhZ21lbnQud2lkdGggPSB0ZXh0V2lkdGgoZnJhZ21lbnQuc3Rh
cnQsIGZyYWdtZW50LmVuZCwgeFBvc2l0aW9uKTsKLSAgICBtX3Bvc2l0aW9uID0gZnJhZ21lbnQu
ZW5kOwotICAgIHJldHVybiBmcmFnbWVudDsKKyAgICBlbmRQb3NpdGlvbiA9IGZpbmROZXh0QnJl
YWthYmxlUG9zaXRpb24oc3RhcnRQb3NpdGlvbiArIDEpOworICAgIG1fcG9zaXRpb24gPSBlbmRQ
b3NpdGlvbjsKKyAgICByZXR1cm4gVGV4dEZyYWdtZW50KHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0
aW9uLCB0ZXh0V2lkdGgoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIHhQb3NpdGlvbiksIFRl
eHRGcmFnbWVudDo6Tm9uV2hpdGVzcGFjZSwgZmFsc2UsIG1fc3R5bGUuYnJlYWtXb3JkT25PdmVy
Zmxvdyk7CiB9CiAKIGZsb2F0IEZsb3dDb250ZW50c0l0ZXJhdG9yOjp0ZXh0V2lkdGgodW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgdG8sIGZsb2F0IHhQb3NpdGlvbikgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRl
cmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0Nv
bnRlbnRzSXRlcmF0b3IuaAppbmRleCA4M2Q0Yzg1ZjhkZGFjZjNmNmVlNTUzOGEyNWU1NGNhNWFl
MzUxYjkwLi4wNmNkOTEwMTYzMDM0ZDlmNjU1ZGU3MDE3ZTE2MTYwZTQ5ZWUzODUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50
c0l0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGbG93Q29udGVudHNJdGVyYXRvci5oCkBAIC0zOSwyOSArMzksMzUgQEAgbmFtZXNwYWNlIFNp
bXBsZUxpbmVMYXlvdXQgewogY2xhc3MgRmxvd0NvbnRlbnRzSXRlcmF0b3IgIHsKIHB1YmxpYzoK
ICAgICBGbG93Q29udGVudHNJdGVyYXRvcihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmKTsKLQotICAg
IHN0cnVjdCBUZXh0RnJhZ21lbnQgeworICAgIGNsYXNzIFRleHRGcmFnbWVudCB7CisgICAgcHVi
bGljOgorICAgICAgICBlbnVtIFR5cGUgeyBDb250ZW50RW5kLCBMaW5lQnJlYWssIFdoaXRlc3Bh
Y2UsIE5vbldoaXRlc3BhY2UgfTsKICAgICAgICAgVGV4dEZyYWdtZW50KCkgPSBkZWZhdWx0Owot
ICAgICAgICBUZXh0RnJhZ21lbnQodW5zaWduZWQgdGV4dFN0YXJ0LCB1bnNpZ25lZCB0ZXh0RW5k
LCBmbG9hdCB0ZXh0V2lkdGgsIGJvb2wgaXNXaGl0ZXNwYWNlT25seSkKLSAgICAgICAgICAgIDog
c3RhcnQodGV4dFN0YXJ0KQotICAgICAgICAgICAgLCBlbmQodGV4dEVuZCkKLSAgICAgICAgICAg
ICwgdHlwZShpc1doaXRlc3BhY2VPbmx5ID8gV2hpdGVzcGFjZSA6IE5vbldoaXRlc3BhY2UpCi0g
ICAgICAgICAgICAsIHdpZHRoKHRleHRXaWR0aCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAg
ICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAgICAgICAgVGV4dEZyYWdtZW50KHVuc2lnbmVk
IHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGZsb2F0IHdpZHRoLCBUeXBlIHR5cGUsIGJvb2wgaXNDb2xs
YXBzZWQgPSBmYWxzZSwgYm9vbCBpc0JyZWFrYWJsZSA9IGZhbHNlKQorICAgICAgICAgICAgOiBt
X3N0YXJ0KHN0YXJ0KQorICAgICAgICAgICAgLCBtX2VuZChlbmQpCisgICAgICAgICAgICAsIG1f
dHlwZSh0eXBlKQorICAgICAgICAgICAgLCBtX3dpZHRoKHdpZHRoKQorICAgICAgICAgICAgLCBt
X2lzQ29sbGFwc2VkKGlzQ29sbGFwc2VkKQorICAgICAgICAgICAgLCBtX2lzQnJlYWthYmxlKGlz
QnJlYWthYmxlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhcnQgPT0gZW5kOwog
ICAgICAgICB9CiAKLSAgICAgICAgZW51bSBUeXBlIHsgTGluZUJyZWFrLCBXaGl0ZXNwYWNlLCBO
b25XaGl0ZXNwYWNlIH07Ci0gICAgICAgIHVuc2lnbmVkIHN0YXJ0IHsgMCB9OwotICAgICAgICB1
bnNpZ25lZCBlbmQgIHswIH07Ci0gICAgICAgIFR5cGUgdHlwZSB7IE5vbldoaXRlc3BhY2UgfTsK
LSAgICAgICAgYm9vbCBpc0NvbGxhcHNlZCB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgaXNCcmVh
a2FibGUgeyBmYWxzZSB9OwotICAgICAgICBmbG9hdCB3aWR0aCB7IDAgfTsKKyAgICAgICAgdW5z
aWduZWQgc3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0OyB9CisgICAgICAgIHVuc2lnbmVk
IGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9CisgICAgICAgIGZsb2F0IHdpZHRoKCkgY29u
c3QgeyByZXR1cm4gbV93aWR0aDsgfQorICAgICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KKyAgICAgICAgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNDb2xsYXBzZWQ7IH0KKyAgICAgICAgYm9vbCBpc0JyZWFrYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNCcmVha2FibGU7IH0KKyAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
c3RhcnQoKSA9PSBlbmQoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdW5zaWduZWQgbV9z
dGFydCB7IDAgfTsKKyAgICAgICAgdW5zaWduZWQgbV9lbmQgIHsgMCB9OworICAgICAgICBUeXBl
IG1fdHlwZSB7IE5vbldoaXRlc3BhY2UgfTsKKyAgICAgICAgZmxvYXQgbV93aWR0aCB7IDAgfTsK
KyAgICAgICAgYm9vbCBtX2lzQ29sbGFwc2VkIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBtX2lz
QnJlYWthYmxlIHsgZmFsc2UgfTsKICAgICB9OwogICAgIFRleHRGcmFnbWVudCBuZXh0VGV4dEZy
YWdtZW50KGZsb2F0IHhQb3NpdGlvbiA9IDApOwogICAgIGZsb2F0IHRleHRXaWR0aCh1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCB0bywgZmxvYXQgeFBvc2l0aW9uKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245770</attachid>
            <date>2015-01-30 20:57:26 -0800</date>
            <delta_ts>2015-01-30 21:41:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141090-20150130205733.patch</filename>
            <type>text/plain</type>
            <size>18939</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJlZTE4MmEwMzZkZGQy
ZjhiYzhjOWFjOGRmNTFiOWZkNGZkY2ZmYy4uNmYwMmQ1NWU2NzYwZDQ4ZGMwMjkxMDNkZGU3ZTUw
OTZiMWYxMzRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM0IEBACiAyMDE1LTAxLTMwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiBJbXByb3ZlIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQncyBlbmNhcHN1bGF0
aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQx
MDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBNYWtl
IG1lbWJlcnMgcHJpdmF0ZSB0byBhdm9pZCBhY2NpZGVudGFsIGNoYW5nZSBpbiBUZXh0RnJhZ21l
bnQuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpMaW5lU3RhdGU6OmFkZEZyYWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OkxpbmVTdGF0ZTo6YWRkV2hpdGVzcGFjZSk6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpzcGxpdEZyYWdtZW50VG9GaXRMaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmZpcnN0RnJhZ21lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxlTGluZUxheW91dDo6Y3JlYXRlTGluZVJ1bnMpOgorICAgICAgICAqIHJlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Rmxvd0NvbnRlbnRzSXRlcmF0b3I6Om5leHRUZXh0
RnJhZ21lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRl
bnRzSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkZsb3dD
b250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OlRleHRGcmFnbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdt
ZW50OjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93Q29u
dGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2lt
cGxlTGluZUxheW91dDo6Rmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6d2lkdGgp
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Rmxvd0NvbnRlbnRzSXRlcmF0
b3I6OlRleHRGcmFnbWVudDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5
b3V0OjpGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50Ojppc0NvbGxhcHNlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93Q29udGVudHNJdGVyYXRvcjo6
VGV4dEZyYWdtZW50Ojppc0JyZWFrYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5l
TGF5b3V0OjpGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50Ojppc0VtcHR5KToKKwor
MjAxNS0wMS0zMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCiAgICAgICAgIFNp
bXBsZSBsaW5lIGxheW91dDogTWFrZSBMaW5lU3RhdGUgZnJhZ21lbnQgaGFuZGxpbmcgc2ltcGxl
ci4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEw
MAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5k
ZXggOWUxOTBhMTkyY2U1Mjc1YjFiY2VmNjRmZTI5MzI2NzJiMzg4YTgwNy4uMTNiNzdmZTM0ZDc1
OTk5MzhmMWZjMjIyNTI4NGI0Yzc0NzcwYzA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHB1YmxpYzoKIAog
ICAgIGZsb2F0IGF2YWlsYWJsZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9hdmFpbGFibGVXaWR0
aDsgfQogICAgIGZsb2F0IGxvZ2ljYWxMZWZ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9sb2dp
Y2FsTGVmdE9mZnNldDsgfQotICAgIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQg
b3ZlcmZsb3dlZEZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvd2VkRnJhZ21lbnQ7
IH0KKyAgICBjb25zdCBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50JiBvdmVyZmxv
d2VkRnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ZWRGcmFnbWVudDsgfQogICAg
IGJvb2wgaGFzVHJhaWxpbmdXaGl0ZXNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV90cmFpbGluZ1do
aXRlc3BhY2VMZW5ndGg7IH0KICAgICBib29sIGlzV2hpdGVzcGFjZU9ubHkoKSBjb25zdCB7IHJl
dHVybiBtX3RyYWlsaW5nV2hpdGVzcGFjZVdpZHRoICYmIG1fcnVuc1dpZHRoID09IG1fdHJhaWxp
bmdXaGl0ZXNwYWNlV2lkdGg7IH0KICAgICBib29sIGZpdHMoZmxvYXQgZXh0cmEpIGNvbnN0IHsg
cmV0dXJuIG1fYXZhaWxhYmxlV2lkdGggPj0gbV9ydW5zV2lkdGggKyBleHRyYTsgfQpAQCAtMjQ1
LDI5ICsyNDUsMjkgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kRnJhZ21lbnQoY29uc3QgRmxv
d0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCYgZnJhZ21lbnQsIExheW91dDo6UnVuVmVj
dG9yJiBydW5zKQogICAgIHsKICAgICAgICAgLy8gQWRqdXN0IGVuZCBwb3NpdGlvbiB3aGlsZSBj
b2xsYXBzaW5nLgotICAgICAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9IGZyYWdtZW50LmlzQ29s
bGFwc2VkID8gZnJhZ21lbnQuc3RhcnQgKyAxIDogZnJhZ21lbnQuZW5kOworICAgICAgICB1bnNp
Z25lZCBlbmRQb3NpdGlvbiA9IGZyYWdtZW50LmlzQ29sbGFwc2VkKCkgPyBmcmFnbWVudC5zdGFy
dCgpICsgMSA6IGZyYWdtZW50LmVuZCgpOwogCiAgICAgICAgIGlmIChtX2NyZWF0ZU5ld1J1bikK
LSAgICAgICAgICAgIHJ1bnMuYXBwZW5kKFJ1bihmcmFnbWVudC5zdGFydCwgZW5kUG9zaXRpb24s
IG1fcnVuc1dpZHRoLCBtX3J1bnNXaWR0aCArIGZyYWdtZW50LndpZHRoLCBmYWxzZSkpOworICAg
ICAgICAgICAgcnVucy5hcHBlbmQoUnVuKGZyYWdtZW50LnN0YXJ0KCksIGVuZFBvc2l0aW9uLCBt
X3J1bnNXaWR0aCwgbV9ydW5zV2lkdGggKyBmcmFnbWVudC53aWR0aCgpLCBmYWxzZSkpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChydW5zLnNpemUoKSk7CiAgICAgICAgICAg
ICBSdW4mIGxhc3RSdW4gPSBydW5zLmxhc3QoKTsKICAgICAgICAgICAgIGxhc3RSdW4uZW5kID0g
ZW5kUG9zaXRpb247Ci0gICAgICAgICAgICBsYXN0UnVuLmxvZ2ljYWxSaWdodCA9IG1fcnVuc1dp
ZHRoICsgZnJhZ21lbnQud2lkdGg7CisgICAgICAgICAgICBsYXN0UnVuLmxvZ2ljYWxSaWdodCA9
IG1fcnVuc1dpZHRoICsgZnJhZ21lbnQud2lkdGgoKTsKICAgICAgICAgfQotICAgICAgICBtX2Ny
ZWF0ZU5ld1J1biA9IGZyYWdtZW50LmlzQ29sbGFwc2VkOwotICAgICAgICBtX3J1bnNXaWR0aCAr
PSBmcmFnbWVudC53aWR0aDsKKyAgICAgICAgbV9jcmVhdGVOZXdSdW4gPSBmcmFnbWVudC5pc0Nv
bGxhcHNlZCgpOworICAgICAgICBtX3J1bnNXaWR0aCArPSBmcmFnbWVudC53aWR0aCgpOwogCi0g
ICAgICAgIGlmIChmcmFnbWVudC50eXBlID09IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJh
Z21lbnQ6OldoaXRlc3BhY2UpIHsKLSAgICAgICAgICAgIG1fdHJhaWxpbmdXaGl0ZXNwYWNlTGVu
Z3RoICs9IGVuZFBvc2l0aW9uIC0gZnJhZ21lbnQuc3RhcnQ7Ci0gICAgICAgICAgICBtX3RyYWls
aW5nV2hpdGVzcGFjZVdpZHRoICs9IGZyYWdtZW50LndpZHRoOworICAgICAgICBpZiAoZnJhZ21l
bnQudHlwZSgpID09IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OldoaXRlc3Bh
Y2UpIHsKKyAgICAgICAgICAgIG1fdHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoICs9IGVuZFBvc2l0
aW9uIC0gZnJhZ21lbnQuc3RhcnQoKTsKKyAgICAgICAgICAgIG1fdHJhaWxpbmdXaGl0ZXNwYWNl
V2lkdGggKz0gZnJhZ21lbnQud2lkdGgoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IG1fdHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoID0gMDsKICAgICAgICAgICAgIG1fdHJhaWxpbmdX
aGl0ZXNwYWNlV2lkdGggPSAwOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX2ZpcnN0Q2hh
cmFjdGVyRml0cykKLSAgICAgICAgICAgIG1fZmlyc3RDaGFyYWN0ZXJGaXRzID0gZnJhZ21lbnQu
c3RhcnQgKyAxID4gZnJhZ21lbnQuZW5kIHx8IG1fcnVuc1dpZHRoIDw9IG1fYXZhaWxhYmxlV2lk
dGg7CisgICAgICAgICAgICBtX2ZpcnN0Q2hhcmFjdGVyRml0cyA9IGZyYWdtZW50LnN0YXJ0KCkg
KyAxID4gZW5kUG9zaXRpb24gfHwgbV9ydW5zV2lkdGggPD0gbV9hdmFpbGFibGVXaWR0aDsKICAg
ICB9CiAKICAgICB2b2lkIHJlbW92ZVRyYWlsaW5nV2hpdGVzcGFjZShMYXlvdXQ6OlJ1blZlY3Rv
ciYgcnVucykKQEAgLTMzMSwyMyArMzMxLDIzIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUxpbmVDb25z
dHJhaW5zKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgTGluZVN0YXRlJiBsaW5lKQogc3Rh
dGljIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQgc3BsaXRGcmFnbWVudFRvRml0
TGluZShGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50JiBmcmFnbWVudFRvU3BsaXQs
IGZsb2F0IGF2YWlsYWJsZVdpZHRoLCBib29sIGtlZXBBdExlYXN0T25lQ2hhcmFjdGVyLCBjb25z
dCBGbG93Q29udGVudHNJdGVyYXRvciYgZmxvd0NvbnRlbnRzSXRlcmF0b3IpCiB7CiAgICAgLy8g
RmFzdCBwYXRoIGZvciBzaW5nbGUgY2hhciBmcmFnbWVudHMuCi0gICAgaWYgKGZyYWdtZW50VG9T
cGxpdC5zdGFydCArIDEgPT0gZnJhZ21lbnRUb1NwbGl0LmVuZCkgeworICAgIGlmIChmcmFnbWVu
dFRvU3BsaXQuc3RhcnQoKSArIDEgPT0gZnJhZ21lbnRUb1NwbGl0LmVuZCgpKSB7CiAgICAgICAg
IGlmIChrZWVwQXRMZWFzdE9uZUNoYXJhY3RlcikKICAgICAgICAgICAgIHJldHVybiBGbG93Q29u
dGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50KCk7CiAKICAgICAgICAgRmxvd0NvbnRlbnRzSXRl
cmF0b3I6OlRleHRGcmFnbWVudCBmcmFnbWVudEZvck5leHRMaW5lKGZyYWdtZW50VG9TcGxpdCk7
Ci0gICAgICAgIGZyYWdtZW50VG9TcGxpdC5lbmQgPSBmcmFnbWVudFRvU3BsaXQuc3RhcnQ7Ci0g
ICAgICAgIGZyYWdtZW50VG9TcGxpdC53aWR0aCA9IDA7CisgICAgICAgIC8vIE1ha2UgaXQgZW1w
dHkgZnJhZ21lbnQuCisgICAgICAgIGZyYWdtZW50VG9TcGxpdCA9IEZsb3dDb250ZW50c0l0ZXJh
dG9yOjpUZXh0RnJhZ21lbnQoZnJhZ21lbnRUb1NwbGl0LnN0YXJ0KCksIGZyYWdtZW50VG9TcGxp
dC5zdGFydCgpLCAwLCBmcmFnbWVudFRvU3BsaXQudHlwZSgpKTsKICAgICAgICAgcmV0dXJuIGZy
YWdtZW50Rm9yTmV4dExpbmU7CiAgICAgfQogICAgIC8vIFNpbXBsZSBiaW5hcnkgc2VhcmNoIHRv
IGZpbmQgb3V0IHdoYXQgZml0cyB0aGUgY3VycmVudCBsaW5lLgogICAgIC8vIEZJWE1FOiBhZGQg
c3Vycm9nYXRlIHBhaXIgc3VwcG9ydC4KLSAgICB1bnNpZ25lZCBsZWZ0ID0gZnJhZ21lbnRUb1Nw
bGl0LnN0YXJ0OwotICAgIHVuc2lnbmVkIHJpZ2h0ID0gZnJhZ21lbnRUb1NwbGl0LmVuZCAtIDE7
IC8vIFdlIGNhbiBpZ25vcmUgdGhlIGxhc3QgY2hhcmFjdGVyLiBJdCBzdXJlbHkgZG9lcyBub3Qg
Zml0LgorICAgIHVuc2lnbmVkIGxlZnQgPSBmcmFnbWVudFRvU3BsaXQuc3RhcnQoKTsKKyAgICB1
bnNpZ25lZCByaWdodCA9IGZyYWdtZW50VG9TcGxpdC5lbmQoKSAtIDE7IC8vIFdlIGNhbiBpZ25v
cmUgdGhlIGxhc3QgY2hhcmFjdGVyLiBJdCBzdXJlbHkgZG9lcyBub3QgZml0LgogICAgIGZsb2F0
IHdpZHRoID0gMDsKICAgICB3aGlsZSAobGVmdCA8IHJpZ2h0KSB7CiAgICAgICAgIHVuc2lnbmVk
IG1pZGRsZSA9IChsZWZ0ICsgcmlnaHQpIC8gMjsKLSAgICAgICAgd2lkdGggPSBmbG93Q29udGVu
dHNJdGVyYXRvci50ZXh0V2lkdGgoZnJhZ21lbnRUb1NwbGl0LnN0YXJ0LCBtaWRkbGUgKyAxLCAw
KTsKKyAgICAgICAgd2lkdGggPSBmbG93Q29udGVudHNJdGVyYXRvci50ZXh0V2lkdGgoZnJhZ21l
bnRUb1NwbGl0LnN0YXJ0KCksIG1pZGRsZSArIDEsIDApOwogICAgICAgICBpZiAoYXZhaWxhYmxl
V2lkdGggPiB3aWR0aCkKICAgICAgICAgICAgIGxlZnQgPSBtaWRkbGUgKyAxOwogICAgICAgICBl
bHNlIGlmIChhdmFpbGFibGVXaWR0aCA8IHdpZHRoKQpAQCAtMzU4LDIxICszNTgsMjUgQEAgc3Rh
dGljIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQgc3BsaXRGcmFnbWVudFRvRml0
TGluZShGbG93Q29udGVudHNJdGUKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChrZWVwQXRM
ZWFzdE9uZUNoYXJhY3RlciAmJiByaWdodCA9PSBmcmFnbWVudFRvU3BsaXQuc3RhcnQpCisgICAg
aWYgKGtlZXBBdExlYXN0T25lQ2hhcmFjdGVyICYmIHJpZ2h0ID09IGZyYWdtZW50VG9TcGxpdC5z
dGFydCgpKQogICAgICAgICArK3JpZ2h0OwotICAgIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0
RnJhZ21lbnQgZnJhZ21lbnRGb3JOZXh0TGluZShmcmFnbWVudFRvU3BsaXQpOwotICAgIGZyYWdt
ZW50VG9TcGxpdC5lbmQgPSByaWdodDsKLSAgICBmcmFnbWVudFRvU3BsaXQud2lkdGggPSBmcmFn
bWVudFRvU3BsaXQuaXNFbXB0eSgpID8gMCA6IGZsb3dDb250ZW50c0l0ZXJhdG9yLnRleHRXaWR0
aChmcmFnbWVudFRvU3BsaXQuc3RhcnQsIGZyYWdtZW50VG9TcGxpdC5lbmQsIDApOwogCi0gICAg
ZnJhZ21lbnRGb3JOZXh0TGluZS5zdGFydCA9IGZyYWdtZW50VG9TcGxpdC5lbmQ7Ci0gICAgZnJh
Z21lbnRGb3JOZXh0TGluZS53aWR0aCAtPSBmcmFnbWVudFRvU3BsaXQud2lkdGg7Ci0gICAgcmV0
dXJuIGZyYWdtZW50Rm9yTmV4dExpbmU7CisgICAgLy8gRnJhZ21lbnQgZm9yIG5leHQgbGluZS4K
KyAgICB1bnNpZ25lZCBuZXh0TGluZVN0YXJ0ID0gcmlnaHQ7CisgICAgdW5zaWduZWQgbmV4dExp
bmVFbmQgPSBmcmFnbWVudFRvU3BsaXQuZW5kKCk7CisgICAgZmxvYXQgbmV4dExpbmVXaWR0aCA9
IGZsb3dDb250ZW50c0l0ZXJhdG9yLnRleHRXaWR0aChuZXh0TGluZVN0YXJ0LCBuZXh0TGluZUVu
ZCwgMCk7CisKKyAgICB1bnNpZ25lZCB0aGlzTGluZVN0YXJ0ID0gZnJhZ21lbnRUb1NwbGl0LnN0
YXJ0KCk7CisgICAgdW5zaWduZWQgdGhpc0xpbmVFbmQgPSByaWdodDsKKyAgICBmbG9hdCB0aGlz
TGluZVdpZHRoID0gZmxvd0NvbnRlbnRzSXRlcmF0b3IudGV4dFdpZHRoKHRoaXNMaW5lU3RhcnQs
IHRoaXNMaW5lRW5kLCAwKTsKKyAgICBmcmFnbWVudFRvU3BsaXQgPSBGbG93Q29udGVudHNJdGVy
YXRvcjo6VGV4dEZyYWdtZW50KHRoaXNMaW5lU3RhcnQsIHRoaXNMaW5lRW5kLCB0aGlzTGluZVdp
ZHRoLCBmcmFnbWVudFRvU3BsaXQudHlwZSgpLCBmcmFnbWVudFRvU3BsaXQuaXNDb2xsYXBzZWQo
KSwgZnJhZ21lbnRUb1NwbGl0LmlzQnJlYWthYmxlKCkpOworICAgIHJldHVybiBGbG93Q29udGVu
dHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50KG5leHRMaW5lU3RhcnQsIG5leHRMaW5lRW5kLCBuZXh0
TGluZVdpZHRoLCBmcmFnbWVudFRvU3BsaXQudHlwZSgpLCBmcmFnbWVudFRvU3BsaXQuaXNDb2xs
YXBzZWQoKSwgZnJhZ21lbnRUb1NwbGl0LmlzQnJlYWthYmxlKCkpOwogfQogCiBzdGF0aWMgRmxv
d0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCBmaXJzdEZyYWdtZW50KEZsb3dDb250ZW50
c0l0ZXJhdG9yJiBmbG93Q29udGVudHNJdGVyYXRvciwgY29uc3QgTGluZVN0YXRlJiBwcmV2aW91
c0xpbmUpCiB7CiAgICAgLy8gSGFuZGxlIG92ZXJmbG93ZWQgZnJhZ21lbnQgZnJvbSBwcmV2aW91
cyBsaW5lLgotICAgIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQgZmlyc3RGcmFn
bWVudCA9IHByZXZpb3VzTGluZS5vdmVyZmxvd2VkRnJhZ21lbnQoKTsKKyAgICBGbG93Q29udGVu
dHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50IGZpcnN0RnJhZ21lbnQocHJldmlvdXNMaW5lLm92ZXJm
bG93ZWRGcmFnbWVudCgpKTsKICAgICBjb25zdCBhdXRvJiBzdHlsZSA9IGZsb3dDb250ZW50c0l0
ZXJhdG9yLnN0eWxlKCk7CiAKICAgICBpZiAoZmlyc3RGcmFnbWVudC5pc0VtcHR5KCkpCkBAIC0z
ODAsMTYgKzM4NCwxNiBAQCBzdGF0aWMgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVu
dCBmaXJzdEZyYWdtZW50KEZsb3dDb250ZW50c0l0ZXJhdG9yJiBmbAogICAgIGVsc2UgewogICAg
ICAgICAvLyBTcGVjaWFsIG92ZXJmbG93IHByZS13cmFwIHdoaXRlc3BhY2UgaGFuZGxpbmc6IGln
bm9yZSB0aGUgb3ZlcmZsb3dlZCB3aGl0ZXNwYWNlIGlmIHdlIG1hbmFnZWQgdG8gZml0IGF0IGxl
YXN0IG9uZSBjaGFyYWN0ZXIgb24gdGhlIHByZXZpb3VzIGxpbmUuCiAgICAgICAgIC8vIFdoZW4g
dGhlIGxpbmUgaXMgdG9vIHNob3J0IHRvIGZpdCBvbmUgY2hhcmFjdGVyICh0aG91Z2h0IGl0IHN0
aWxsIHN0YXlzIG9uIHRoZSBsaW5lKSB3ZSBjb250aW51ZSB3aXRoIHRoZSBvdmVyZmxvdyB3aGl0
ZXNwYWNlIGNvbnRlbnQgb24gdGhpcyBsaW5lLgotICAgICAgICBpZiAoZmlyc3RGcmFnbWVudC50
eXBlID09IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OldoaXRlc3BhY2UgJiYg
cHJlV3JhcChzdHlsZSkgJiYgcHJldmlvdXNMaW5lLmZpcnN0Q2hhcmFjdGVyRml0cygpKSB7Cisg
ICAgICAgIGlmIChmaXJzdEZyYWdtZW50LnR5cGUoKSA9PSBGbG93Q29udGVudHNJdGVyYXRvcjo6
VGV4dEZyYWdtZW50OjpXaGl0ZXNwYWNlICYmIHByZVdyYXAoc3R5bGUpICYmIHByZXZpb3VzTGlu
ZS5maXJzdENoYXJhY3RlckZpdHMoKSkgewogICAgICAgICAgICAgZmlyc3RGcmFnbWVudCA9IGZs
b3dDb250ZW50c0l0ZXJhdG9yLm5leHRUZXh0RnJhZ21lbnQoKTsKICAgICAgICAgICAgIC8vIElm
IHNraXBwaW5nIHRoZSB3aGl0ZXNwYWNlIHB1dHMgdXMgb24gYSBoYXJkIG5ld2xpbmUsIHNraXAg
dGhlIG5ld2xpbmUgdG9vIGFzIHdlIGFscmVhZHkgd3JhcHBlZCB0aGUgbGluZS4KLSAgICAgICAg
ICAgIGlmIChmaXJzdEZyYWdtZW50LnR5cGUgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRG
cmFnbWVudDo6TGluZUJyZWFrKQorICAgICAgICAgICAgaWYgKGZpcnN0RnJhZ21lbnQudHlwZSgp
ID09IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OkxpbmVCcmVhaykKICAgICAg
ICAgICAgICAgICBmaXJzdEZyYWdtZW50ID0gZmxvd0NvbnRlbnRzSXRlcmF0b3IubmV4dFRleHRG
cmFnbWVudCgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gQ2hlY2sgaWYgd2UgbmVlZCB0
byBza2lwIHRoZSBsZWFkaW5nIHdoaXRlc3BhY2UuCi0gICAgaWYgKHN0eWxlLmNvbGxhcHNlV2hp
dGVzcGFjZSAmJiBmaXJzdEZyYWdtZW50LnR5cGUgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRl
eHRGcmFnbWVudDo6V2hpdGVzcGFjZSkKKyAgICBpZiAoc3R5bGUuY29sbGFwc2VXaGl0ZXNwYWNl
ICYmIGZpcnN0RnJhZ21lbnQudHlwZSgpID09IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJh
Z21lbnQ6OldoaXRlc3BhY2UpCiAgICAgICAgIGZpcnN0RnJhZ21lbnQgPSBmbG93Q29udGVudHNJ
dGVyYXRvci5uZXh0VGV4dEZyYWdtZW50KCk7CiAgICAgcmV0dXJuIGZpcnN0RnJhZ21lbnQ7CiB9
CkBAIC0zOTksMTUgKzQwMywxNSBAQCBzdGF0aWMgYm9vbCBjcmVhdGVMaW5lUnVucyhMaW5lU3Rh
dGUmIGxpbmUsIGNvbnN0IExpbmVTdGF0ZSYgcHJldmlvdXNMaW5lLCBMYXlvdQogICAgIGNvbnN0
IGF1dG8mIHN0eWxlID0gZmxvd0NvbnRlbnRzSXRlcmF0b3Iuc3R5bGUoKTsKICAgICBib29sIGxp
bmVDYW5CZVdyYXBwZWQgPSBzdHlsZS53cmFwTGluZXMgfHwgc3R5bGUuYnJlYWtXb3JkT25PdmVy
ZmxvdzsKICAgICBhdXRvIGZyYWdtZW50ID0gZmlyc3RGcmFnbWVudChmbG93Q29udGVudHNJdGVy
YXRvciwgcHJldmlvdXNMaW5lKTsKLSAgICB3aGlsZSAoIWZyYWdtZW50LmlzRW1wdHkoKSkgewor
ICAgIHdoaWxlIChmcmFnbWVudC50eXBlKCkgIT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRG
cmFnbWVudDo6Q29udGVudEVuZCkgewogICAgICAgICAvLyBIYXJkIGxpbmVicmVhay4KLSAgICAg
ICAgaWYgKGZyYWdtZW50LnR5cGUgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVu
dDo6TGluZUJyZWFrKSB7CisgICAgICAgIGlmIChmcmFnbWVudC50eXBlKCkgPT0gRmxvd0NvbnRl
bnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6TGluZUJyZWFrKSB7CiAgICAgICAgICAgICAvLyBB
ZGQgdGhlIG5ldyBsaW5lIGZyYWdtZW50IG9ubHkgaWYgdGhlcmUncyBub3RoaW5nIG9uIHRoZSBs
aW5lLiAob3RoZXJ3aXNlIHRoZSBleHRyYSBuZXcgbGluZSBjaGFyYWN0ZXIgd291bGQgc2hvdyB1
cCBhdCB0aGUgZW5kIG9mIHRoZSBjb250ZW50LikKICAgICAgICAgICAgIGlmICghbGluZS53aWR0
aCgpKQogICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kRnJhZ21lbnQoZnJhZ21lbnQsIHJ1bnMp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGxpbmVDYW5CZVdy
YXBwZWQgJiYgIWxpbmUuZml0cyhmcmFnbWVudC53aWR0aCkpIHsKKyAgICAgICAgaWYgKGxpbmVD
YW5CZVdyYXBwZWQgJiYgIWxpbmUuZml0cyhmcmFnbWVudC53aWR0aCgpKSkgewogICAgICAgICAg
ICAgLy8gT3ZlcmZsb3cgd3JhcHBpbmcgYmVoYXZpb3VyOgogICAgICAgICAgICAgLy8gMS4gV2hp
dGVzYXBjZSBjb2xsYXBzZSBvbjogd2hpdGVzcGFjZSBpcyBza2lwcGVkLiBKdW1wIHRvIG5leHQg
bGluZS4KICAgICAgICAgICAgIC8vIDIuIFdoaXRlc3BhY2UgY29sbGFwc2Ugb2ZmOiB3aGl0ZXNw
YWNlIGlzIHdyYXBwZWQuCkBAIC00MTUsNyArNDE5LDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlTGlu
ZVJ1bnMoTGluZVN0YXRlJiBsaW5lLCBjb25zdCBMaW5lU3RhdGUmIHByZXZpb3VzTGluZSwgTGF5
b3UKICAgICAgICAgICAgIC8vIDQuIE5vbi13aGl0ZXNwYWNlIGZyYWdtZW50IHdoZW4gdGhlcmUn
cyBhbHJlYWR5IGFub3RoZXIgZnJhZ21lbnQgb24gdGhlIGxpbmUgZ2V0cyBwdXNoZWQgdG8gdGhl
IG5leHQgbGluZS4KICAgICAgICAgICAgIGJvb2wgZW1wdHlMaW5lID0gIWxpbmUud2lkdGgoKTsK
ICAgICAgICAgICAgIC8vIFdoaXRlc3BhY2UgZnJhZ21lbnQuCi0gICAgICAgICAgICBpZiAoZnJh
Z21lbnQudHlwZSA9PSBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpXaGl0ZXNw
YWNlKSB7CisgICAgICAgICAgICBpZiAoZnJhZ21lbnQudHlwZSgpID09IEZsb3dDb250ZW50c0l0
ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OldoaXRlc3BhY2UpIHsKICAgICAgICAgICAgICAgICBpZiAo
IXN0eWxlLmNvbGxhcHNlV2hpdGVzcGFjZSkgewogICAgICAgICAgICAgICAgICAgICAvLyBTcGxp
dCB0aGUgZnJhZ21lbnQ7IChtb2RpZmllZClmcmFnbWVudCBzdGF5cyBvbiB0aGlzIGxpbmUsIG92
ZXJmbG93ZWRGcmFnbWVudCBpcyBwdXNoZWQgdG8gbmV4dCBsaW5lLgogICAgICAgICAgICAgICAg
ICAgICBsaW5lLnNldE92ZXJmbG93ZWRGcmFnbWVudChzcGxpdEZyYWdtZW50VG9GaXRMaW5lKGZy
YWdtZW50LCBsaW5lLmF2YWlsYWJsZVdpZHRoKCkgLSBsaW5lLndpZHRoKCksIGVtcHR5TGluZSwg
Zmxvd0NvbnRlbnRzSXRlcmF0b3IpKTsKQEAgLTQ0NCw3ICs0NDgsNyBAQCBzdGF0aWMgYm9vbCBj
cmVhdGVMaW5lUnVucyhMaW5lU3RhdGUmIGxpbmUsIGNvbnN0IExpbmVTdGF0ZSYgcHJldmlvdXNM
aW5lLCBMYXlvdQogICAgICAgICAvLyBGaW5kIHRoZSBuZXh0IHRleHQgZnJhZ21lbnQuCiAgICAg
ICAgIGZyYWdtZW50ID0gZmxvd0NvbnRlbnRzSXRlcmF0b3IubmV4dFRleHRGcmFnbWVudChsaW5l
LndpZHRoKCkpOwogICAgIH0KLSAgICByZXR1cm4gZnJhZ21lbnQuaXNFbXB0eSgpICYmIGxpbmUu
b3ZlcmZsb3dlZEZyYWdtZW50KCkuaXNFbXB0eSgpOworICAgIHJldHVybiBmcmFnbWVudC50eXBl
KCkgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6Q29udGVudEVuZCAmJiBs
aW5lLm92ZXJmbG93ZWRGcmFnbWVudCgpLmlzRW1wdHkoKTsKIH0KIAogc3RhdGljIHZvaWQgY2xv
c2VMaW5lRW5kaW5nQW5kQWRqdXN0UnVucyhMaW5lU3RhdGUmIGxpbmUsIExheW91dDo6UnVuVmVj
dG9yJiBydW5zLCB1bnNpZ25lZCBwcmV2aW91c1J1bkNvdW50LCB1bnNpZ25lZCYgbGluZUNvdW50
LCBjb25zdCBGbG93Q29udGVudHNJdGVyYXRvciYgZmxvd0NvbnRlbnRzSXRlcmF0b3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250
ZW50c0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuY3BwCmluZGV4IDRiNThiNTkxMTI3NTJlYzk5NDA2MzJl
ZjdjY2U1YzUwODgwOTliYTYuLjBlZDZmNDk4ODk5MzVlMjNkZDI5MWViMmZjZTVmMDBkN2FiODJm
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
Rmxvd0NvbnRlbnRzSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuY3BwCkBAIC02MSw0NyArNjEsMzQg
QEAgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCBGbG93Q29udGVudHNJdGVyYXRv
cjo6bmV4dFRleHRGcmFnbWVudChmbG9hdAogICAgIC8vIDIuIHdoaXRlc3BhY2UgKGNvbGxhc3Bl
ZCwgbm9uLWNvbGxhcHNlZCBtdWx0aSBvciBzaW5nbGUpIG9yCiAgICAgLy8gMy4gbm9uLXdoaXRl
c3BhY2UgY2hhcmFjdGVycy4KICAgICAvLyA0LiBlbXB0eSwgaW5kaWNhdGluZyBjb250ZW50IGVu
ZC4KLSAgICBUZXh0RnJhZ21lbnQgZnJhZ21lbnQ7Ci0gICAgZnJhZ21lbnQuc3RhcnQgPSBtX3Bv
c2l0aW9uOwotICAgIGlmIChpc0VuZChmcmFnbWVudC5zdGFydCkpIHsKLSAgICAgICAgZnJhZ21l
bnQuZW5kID0gZnJhZ21lbnQuc3RhcnQ7CisgICAgaWYgKGlzRW5kKG1fcG9zaXRpb24pKQorICAg
ICAgICByZXR1cm4gVGV4dEZyYWdtZW50KG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIDAsIFRleHRG
cmFnbWVudDo6Q29udGVudEVuZCk7CisgICAgaWYgKGlzTGluZUJyZWFrKG1fcG9zaXRpb24pKSB7
CisgICAgICAgIFRleHRGcmFnbWVudCBmcmFnbWVudChtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsg
MSwgMCwgVGV4dEZyYWdtZW50OjpMaW5lQnJlYWspOworICAgICAgICArK21fcG9zaXRpb247CiAg
ICAgICAgIHJldHVybiBmcmFnbWVudDsKICAgICB9Ci0gICAgaWYgKGlzTGluZUJyZWFrKGZyYWdt
ZW50LnN0YXJ0KSkgewotICAgICAgICBmcmFnbWVudC50eXBlID0gVGV4dEZyYWdtZW50OjpMaW5l
QnJlYWs7Ci0gICAgICAgIGZyYWdtZW50LmVuZCA9IGZyYWdtZW50LnN0YXJ0ICsgMTsKLSAgICAg
ICAgbV9wb3NpdGlvbiA9IGZyYWdtZW50LmVuZDsKLSAgICAgICAgcmV0dXJuIGZyYWdtZW50Owot
ICAgIH0KLQogICAgIHVuc2lnbmVkIHNwYWNlQ291bnQgPSAwOwotICAgIHVuc2lnbmVkIHdoaXRl
c3BhY2VFbmQgPSBmaW5kTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlvbihmcmFnbWVudC5zdGFydCwg
c3BhY2VDb3VudCk7Ci0gICAgQVNTRVJUKGZyYWdtZW50LnN0YXJ0IDw9IHdoaXRlc3BhY2VFbmQp
OwotICAgIGlmIChmcmFnbWVudC5zdGFydCAhPSB3aGl0ZXNwYWNlRW5kKSB7Ci0gICAgICAgIGZy
YWdtZW50LnR5cGUgPSBUZXh0RnJhZ21lbnQ6OldoaXRlc3BhY2U7Ci0gICAgICAgIGZyYWdtZW50
LmVuZCA9IHdoaXRlc3BhY2VFbmQ7Ci0gICAgICAgIGJvb2wgbXVsdGlwbGVXaGl0ZXNwYWNlID0g
ZnJhZ21lbnQuc3RhcnQgKyAxIDwgZnJhZ21lbnQuZW5kOwotICAgICAgICBmcmFnbWVudC5pc0Nv
bGxhcHNlZCA9IG11bHRpcGxlV2hpdGVzcGFjZSAmJiBtX3N0eWxlLmNvbGxhcHNlV2hpdGVzcGFj
ZTsKLSAgICAgICAgZnJhZ21lbnQuaXNCcmVha2FibGUgPSAhZnJhZ21lbnQuaXNDb2xsYXBzZWQg
JiYgbXVsdGlwbGVXaGl0ZXNwYWNlOwotICAgICAgICBpZiAoZnJhZ21lbnQuaXNDb2xsYXBzZWQp
Ci0gICAgICAgICAgICBmcmFnbWVudC53aWR0aCA9IG1fc3R5bGUuc3BhY2VXaWR0aDsKKyAgICB1
bnNpZ25lZCBzdGFydFBvc2l0aW9uID0gbV9wb3NpdGlvbjsKKyAgICB1bnNpZ25lZCBlbmRQb3Np
dGlvbiA9IGZpbmROZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKHN0YXJ0UG9zaXRpb24sIHNwYWNl
Q291bnQpOworICAgIEFTU0VSVChzdGFydFBvc2l0aW9uIDw9IGVuZFBvc2l0aW9uKTsKKyAgICBp
ZiAoZW5kUG9zaXRpb24gPiBzdGFydFBvc2l0aW9uKSB7CisgICAgICAgIGJvb2wgbXVsdGlwbGVX
aGl0ZXNwYWNlID0gc3RhcnRQb3NpdGlvbiArIDEgPCBlbmRQb3NpdGlvbjsKKyAgICAgICAgYm9v
bCBpc0NvbGxhcHNlZCA9IG11bHRpcGxlV2hpdGVzcGFjZSAmJiBtX3N0eWxlLmNvbGxhcHNlV2hp
dGVzcGFjZTsKKyAgICAgICAgYm9vbCBpc0JyZWFrYWJsZSA9ICFpc0NvbGxhcHNlZCAmJiBtdWx0
aXBsZVdoaXRlc3BhY2U7CisgICAgICAgIGZsb2F0IHdpZHRoID0gMDsKKyAgICAgICAgaWYgKGlz
Q29sbGFwc2VkKQorICAgICAgICAgICAgd2lkdGggPSBtX3N0eWxlLnNwYWNlV2lkdGg7CiAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgdW5zaWduZWQgZnJhZ21lbnRMZW5ndGggPSBmcmFnbWVu
dC5lbmQgLSBmcmFnbWVudC5zdGFydDsKLSAgICAgICAgICAgIGlmIChmcmFnbWVudExlbmd0aCA9
PSBzcGFjZUNvdW50KQotICAgICAgICAgICAgICAgIGZyYWdtZW50LndpZHRoID0gZnJhZ21lbnRM
ZW5ndGggKiBtX3N0eWxlLnNwYWNlV2lkdGg7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgZnJhZ21lbnQud2lkdGggPSB0ZXh0V2lkdGgoZnJhZ21lbnQuc3RhcnQsIGZyYWdtZW50
LmVuZCwgeFBvc2l0aW9uKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGVuZFBvc2l0
aW9uIC0gc3RhcnRQb3NpdGlvbjsKKyAgICAgICAgICAgIHdpZHRoID0gbGVuZ3RoID09IHNwYWNl
Q291bnQgPyBsZW5ndGggKiBtX3N0eWxlLnNwYWNlV2lkdGggOiB0ZXh0V2lkdGgoc3RhcnRQb3Np
dGlvbiwgZW5kUG9zaXRpb24sIHhQb3NpdGlvbik7CiAgICAgICAgIH0KLSAgICAgICAgbV9wb3Np
dGlvbiA9IGZyYWdtZW50LmVuZDsKLSAgICAgICAgcmV0dXJuIGZyYWdtZW50OworICAgICAgICBt
X3Bvc2l0aW9uID0gZW5kUG9zaXRpb247CisgICAgICAgIHJldHVybiBUZXh0RnJhZ21lbnQoc3Rh
cnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIHdpZHRoLCBUZXh0RnJhZ21lbnQ6OldoaXRlc3BhY2Us
IGlzQ29sbGFwc2VkLCBpc0JyZWFrYWJsZSk7CiAgICAgfQotCi0gICAgZnJhZ21lbnQudHlwZSA9
IFRleHRGcmFnbWVudDo6Tm9uV2hpdGVzcGFjZTsKLSAgICBmcmFnbWVudC5pc0JyZWFrYWJsZSA9
IG1fc3R5bGUuYnJlYWtXb3JkT25PdmVyZmxvdzsKLSAgICBmcmFnbWVudC5lbmQgPSBmaW5kTmV4
dEJyZWFrYWJsZVBvc2l0aW9uKGZyYWdtZW50LnN0YXJ0ICsgMSk7Ci0gICAgZnJhZ21lbnQud2lk
dGggPSB0ZXh0V2lkdGgoZnJhZ21lbnQuc3RhcnQsIGZyYWdtZW50LmVuZCwgeFBvc2l0aW9uKTsK
LSAgICBtX3Bvc2l0aW9uID0gZnJhZ21lbnQuZW5kOwotICAgIHJldHVybiBmcmFnbWVudDsKKyAg
ICBlbmRQb3NpdGlvbiA9IGZpbmROZXh0QnJlYWthYmxlUG9zaXRpb24oc3RhcnRQb3NpdGlvbiAr
IDEpOworICAgIG1fcG9zaXRpb24gPSBlbmRQb3NpdGlvbjsKKyAgICByZXR1cm4gVGV4dEZyYWdt
ZW50KHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCB0ZXh0V2lkdGgoc3RhcnRQb3NpdGlvbiwg
ZW5kUG9zaXRpb24sIHhQb3NpdGlvbiksIFRleHRGcmFnbWVudDo6Tm9uV2hpdGVzcGFjZSwgZmFs
c2UsIG1fc3R5bGUuYnJlYWtXb3JkT25PdmVyZmxvdyk7CiB9CiAKIGZsb2F0IEZsb3dDb250ZW50
c0l0ZXJhdG9yOjp0ZXh0V2lkdGgodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIGZsb2F0IHhQ
b3NpdGlvbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuaAppbmRleCA4M2Q0Yzg1
ZjhkZGFjZjNmNmVlNTUzOGEyNWU1NGNhNWFlMzUxYjkwLi4wNmNkOTEwMTYzMDM0ZDlmNjU1ZGU3
MDE3ZTE2MTYwZTQ5ZWUzODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50c0l0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHNJdGVyYXRvci5oCkBAIC0z
OSwyOSArMzksMzUgQEAgbmFtZXNwYWNlIFNpbXBsZUxpbmVMYXlvdXQgewogY2xhc3MgRmxvd0Nv
bnRlbnRzSXRlcmF0b3IgIHsKIHB1YmxpYzoKICAgICBGbG93Q29udGVudHNJdGVyYXRvcihjb25z
dCBSZW5kZXJCbG9ja0Zsb3cmKTsKLQotICAgIHN0cnVjdCBUZXh0RnJhZ21lbnQgeworICAgIGNs
YXNzIFRleHRGcmFnbWVudCB7CisgICAgcHVibGljOgorICAgICAgICBlbnVtIFR5cGUgeyBDb250
ZW50RW5kLCBMaW5lQnJlYWssIFdoaXRlc3BhY2UsIE5vbldoaXRlc3BhY2UgfTsKICAgICAgICAg
VGV4dEZyYWdtZW50KCkgPSBkZWZhdWx0OwotICAgICAgICBUZXh0RnJhZ21lbnQodW5zaWduZWQg
dGV4dFN0YXJ0LCB1bnNpZ25lZCB0ZXh0RW5kLCBmbG9hdCB0ZXh0V2lkdGgsIGJvb2wgaXNXaGl0
ZXNwYWNlT25seSkKLSAgICAgICAgICAgIDogc3RhcnQodGV4dFN0YXJ0KQotICAgICAgICAgICAg
LCBlbmQodGV4dEVuZCkKLSAgICAgICAgICAgICwgdHlwZShpc1doaXRlc3BhY2VPbmx5ID8gV2hp
dGVzcGFjZSA6IE5vbldoaXRlc3BhY2UpCi0gICAgICAgICAgICAsIHdpZHRoKHRleHRXaWR0aCkK
LSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAg
ICAgICAgVGV4dEZyYWdtZW50KHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGZsb2F0IHdp
ZHRoLCBUeXBlIHR5cGUsIGJvb2wgaXNDb2xsYXBzZWQgPSBmYWxzZSwgYm9vbCBpc0JyZWFrYWJs
ZSA9IGZhbHNlKQorICAgICAgICAgICAgOiBtX3N0YXJ0KHN0YXJ0KQorICAgICAgICAgICAgLCBt
X2VuZChlbmQpCisgICAgICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAgICAgICAgICAgLCBtX3dp
ZHRoKHdpZHRoKQorICAgICAgICAgICAgLCBtX2lzQ29sbGFwc2VkKGlzQ29sbGFwc2VkKQorICAg
ICAgICAgICAgLCBtX2lzQnJlYWthYmxlKGlzQnJlYWthYmxlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gc3RhcnQgPT0gZW5kOwogICAgICAgICB9CiAKLSAgICAgICAgZW51bSBUeXBl
IHsgTGluZUJyZWFrLCBXaGl0ZXNwYWNlLCBOb25XaGl0ZXNwYWNlIH07Ci0gICAgICAgIHVuc2ln
bmVkIHN0YXJ0IHsgMCB9OwotICAgICAgICB1bnNpZ25lZCBlbmQgIHswIH07Ci0gICAgICAgIFR5
cGUgdHlwZSB7IE5vbldoaXRlc3BhY2UgfTsKLSAgICAgICAgYm9vbCBpc0NvbGxhcHNlZCB7IGZh
bHNlIH07Ci0gICAgICAgIGJvb2wgaXNCcmVha2FibGUgeyBmYWxzZSB9OwotICAgICAgICBmbG9h
dCB3aWR0aCB7IDAgfTsKKyAgICAgICAgdW5zaWduZWQgc3RhcnQoKSBjb25zdCB7IHJldHVybiBt
X3N0YXJ0OyB9CisgICAgICAgIHVuc2lnbmVkIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9
CisgICAgICAgIGZsb2F0IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQorICAgICAg
ICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICAgICAgYm9vbCBpc0Nv
bGxhcHNlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb2xsYXBzZWQ7IH0KKyAgICAgICAgYm9vbCBp
c0JyZWFrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNCcmVha2FibGU7IH0KKyAgICAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gc3RhcnQoKSA9PSBlbmQoKTsgfQorCisgICAgcHJp
dmF0ZToKKyAgICAgICAgdW5zaWduZWQgbV9zdGFydCB7IDAgfTsKKyAgICAgICAgdW5zaWduZWQg
bV9lbmQgIHsgMCB9OworICAgICAgICBUeXBlIG1fdHlwZSB7IE5vbldoaXRlc3BhY2UgfTsKKyAg
ICAgICAgZmxvYXQgbV93aWR0aCB7IDAgfTsKKyAgICAgICAgYm9vbCBtX2lzQ29sbGFwc2VkIHsg
ZmFsc2UgfTsKKyAgICAgICAgYm9vbCBtX2lzQnJlYWthYmxlIHsgZmFsc2UgfTsKICAgICB9Owog
ICAgIFRleHRGcmFnbWVudCBuZXh0VGV4dEZyYWdtZW50KGZsb2F0IHhQb3NpdGlvbiA9IDApOwog
ICAgIGZsb2F0IHRleHRXaWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgZmxvYXQgeFBv
c2l0aW9uKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245771</attachid>
            <date>2015-01-30 21:41:30 -0800</date>
            <delta_ts>2015-01-30 22:26:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141090-20150130214137.patch</filename>
            <type>text/plain</type>
            <size>18938</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJlZTE4MmEwMzZkZGQy
ZjhiYzhjOWFjOGRmNTFiOWZkNGZkY2ZmYy4uNmYwMmQ1NWU2NzYwZDQ4ZGMwMjkxMDNkZGU3ZTUw
OTZiMWYxMzRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM0IEBACiAyMDE1LTAxLTMwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiBJbXByb3ZlIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQncyBlbmNhcHN1bGF0
aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQx
MDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBNYWtl
IG1lbWJlcnMgcHJpdmF0ZSB0byBhdm9pZCBhY2NpZGVudGFsIGNoYW5nZSBpbiBUZXh0RnJhZ21l
bnQuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpMaW5lU3RhdGU6OmFkZEZyYWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OkxpbmVTdGF0ZTo6YWRkV2hpdGVzcGFjZSk6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpzcGxpdEZyYWdtZW50VG9GaXRMaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmZpcnN0RnJhZ21lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxlTGluZUxheW91dDo6Y3JlYXRlTGluZVJ1bnMpOgorICAgICAgICAqIHJlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Rmxvd0NvbnRlbnRzSXRlcmF0b3I6Om5leHRUZXh0
RnJhZ21lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRl
bnRzSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkZsb3dD
b250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OlRleHRGcmFnbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdt
ZW50OjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93Q29u
dGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2lt
cGxlTGluZUxheW91dDo6Rmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6d2lkdGgp
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Rmxvd0NvbnRlbnRzSXRlcmF0
b3I6OlRleHRGcmFnbWVudDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5
b3V0OjpGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50Ojppc0NvbGxhcHNlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93Q29udGVudHNJdGVyYXRvcjo6
VGV4dEZyYWdtZW50Ojppc0JyZWFrYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5l
TGF5b3V0OjpGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50Ojppc0VtcHR5KToKKwor
MjAxNS0wMS0zMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCiAgICAgICAgIFNp
bXBsZSBsaW5lIGxheW91dDogTWFrZSBMaW5lU3RhdGUgZnJhZ21lbnQgaGFuZGxpbmcgc2ltcGxl
ci4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEw
MAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5k
ZXggOWUxOTBhMTkyY2U1Mjc1YjFiY2VmNjRmZTI5MzI2NzJiMzg4YTgwNy4uMTNiNzdmZTM0ZDc1
OTk5MzhmMWZjMjIyNTI4NGI0Yzc0NzcwYzA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHB1YmxpYzoKIAog
ICAgIGZsb2F0IGF2YWlsYWJsZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9hdmFpbGFibGVXaWR0
aDsgfQogICAgIGZsb2F0IGxvZ2ljYWxMZWZ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9sb2dp
Y2FsTGVmdE9mZnNldDsgfQotICAgIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQg
b3ZlcmZsb3dlZEZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvd2VkRnJhZ21lbnQ7
IH0KKyAgICBjb25zdCBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50JiBvdmVyZmxv
d2VkRnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ZWRGcmFnbWVudDsgfQogICAg
IGJvb2wgaGFzVHJhaWxpbmdXaGl0ZXNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV90cmFpbGluZ1do
aXRlc3BhY2VMZW5ndGg7IH0KICAgICBib29sIGlzV2hpdGVzcGFjZU9ubHkoKSBjb25zdCB7IHJl
dHVybiBtX3RyYWlsaW5nV2hpdGVzcGFjZVdpZHRoICYmIG1fcnVuc1dpZHRoID09IG1fdHJhaWxp
bmdXaGl0ZXNwYWNlV2lkdGg7IH0KICAgICBib29sIGZpdHMoZmxvYXQgZXh0cmEpIGNvbnN0IHsg
cmV0dXJuIG1fYXZhaWxhYmxlV2lkdGggPj0gbV9ydW5zV2lkdGggKyBleHRyYTsgfQpAQCAtMjQ1
LDI5ICsyNDUsMjkgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kRnJhZ21lbnQoY29uc3QgRmxv
d0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCYgZnJhZ21lbnQsIExheW91dDo6UnVuVmVj
dG9yJiBydW5zKQogICAgIHsKICAgICAgICAgLy8gQWRqdXN0IGVuZCBwb3NpdGlvbiB3aGlsZSBj
b2xsYXBzaW5nLgotICAgICAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9IGZyYWdtZW50LmlzQ29s
bGFwc2VkID8gZnJhZ21lbnQuc3RhcnQgKyAxIDogZnJhZ21lbnQuZW5kOworICAgICAgICB1bnNp
Z25lZCBlbmRQb3NpdGlvbiA9IGZyYWdtZW50LmlzQ29sbGFwc2VkKCkgPyBmcmFnbWVudC5zdGFy
dCgpICsgMSA6IGZyYWdtZW50LmVuZCgpOwogCiAgICAgICAgIGlmIChtX2NyZWF0ZU5ld1J1bikK
LSAgICAgICAgICAgIHJ1bnMuYXBwZW5kKFJ1bihmcmFnbWVudC5zdGFydCwgZW5kUG9zaXRpb24s
IG1fcnVuc1dpZHRoLCBtX3J1bnNXaWR0aCArIGZyYWdtZW50LndpZHRoLCBmYWxzZSkpOworICAg
ICAgICAgICAgcnVucy5hcHBlbmQoUnVuKGZyYWdtZW50LnN0YXJ0KCksIGVuZFBvc2l0aW9uLCBt
X3J1bnNXaWR0aCwgbV9ydW5zV2lkdGggKyBmcmFnbWVudC53aWR0aCgpLCBmYWxzZSkpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChydW5zLnNpemUoKSk7CiAgICAgICAgICAg
ICBSdW4mIGxhc3RSdW4gPSBydW5zLmxhc3QoKTsKICAgICAgICAgICAgIGxhc3RSdW4uZW5kID0g
ZW5kUG9zaXRpb247Ci0gICAgICAgICAgICBsYXN0UnVuLmxvZ2ljYWxSaWdodCA9IG1fcnVuc1dp
ZHRoICsgZnJhZ21lbnQud2lkdGg7CisgICAgICAgICAgICBsYXN0UnVuLmxvZ2ljYWxSaWdodCA9
IG1fcnVuc1dpZHRoICsgZnJhZ21lbnQud2lkdGgoKTsKICAgICAgICAgfQotICAgICAgICBtX2Ny
ZWF0ZU5ld1J1biA9IGZyYWdtZW50LmlzQ29sbGFwc2VkOwotICAgICAgICBtX3J1bnNXaWR0aCAr
PSBmcmFnbWVudC53aWR0aDsKKyAgICAgICAgbV9jcmVhdGVOZXdSdW4gPSBmcmFnbWVudC5pc0Nv
bGxhcHNlZCgpOworICAgICAgICBtX3J1bnNXaWR0aCArPSBmcmFnbWVudC53aWR0aCgpOwogCi0g
ICAgICAgIGlmIChmcmFnbWVudC50eXBlID09IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJh
Z21lbnQ6OldoaXRlc3BhY2UpIHsKLSAgICAgICAgICAgIG1fdHJhaWxpbmdXaGl0ZXNwYWNlTGVu
Z3RoICs9IGVuZFBvc2l0aW9uIC0gZnJhZ21lbnQuc3RhcnQ7Ci0gICAgICAgICAgICBtX3RyYWls
aW5nV2hpdGVzcGFjZVdpZHRoICs9IGZyYWdtZW50LndpZHRoOworICAgICAgICBpZiAoZnJhZ21l
bnQudHlwZSgpID09IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OldoaXRlc3Bh
Y2UpIHsKKyAgICAgICAgICAgIG1fdHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoICs9IGVuZFBvc2l0
aW9uIC0gZnJhZ21lbnQuc3RhcnQoKTsKKyAgICAgICAgICAgIG1fdHJhaWxpbmdXaGl0ZXNwYWNl
V2lkdGggKz0gZnJhZ21lbnQud2lkdGgoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IG1fdHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoID0gMDsKICAgICAgICAgICAgIG1fdHJhaWxpbmdX
aGl0ZXNwYWNlV2lkdGggPSAwOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX2ZpcnN0Q2hh
cmFjdGVyRml0cykKLSAgICAgICAgICAgIG1fZmlyc3RDaGFyYWN0ZXJGaXRzID0gZnJhZ21lbnQu
c3RhcnQgKyAxID4gZnJhZ21lbnQuZW5kIHx8IG1fcnVuc1dpZHRoIDw9IG1fYXZhaWxhYmxlV2lk
dGg7CisgICAgICAgICAgICBtX2ZpcnN0Q2hhcmFjdGVyRml0cyA9IGZyYWdtZW50LnN0YXJ0KCkg
KyAxID4gZW5kUG9zaXRpb24gfHwgbV9ydW5zV2lkdGggPD0gbV9hdmFpbGFibGVXaWR0aDsKICAg
ICB9CiAKICAgICB2b2lkIHJlbW92ZVRyYWlsaW5nV2hpdGVzcGFjZShMYXlvdXQ6OlJ1blZlY3Rv
ciYgcnVucykKQEAgLTMzMSwyMyArMzMxLDIzIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUxpbmVDb25z
dHJhaW5zKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgTGluZVN0YXRlJiBsaW5lKQogc3Rh
dGljIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQgc3BsaXRGcmFnbWVudFRvRml0
TGluZShGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50JiBmcmFnbWVudFRvU3BsaXQs
IGZsb2F0IGF2YWlsYWJsZVdpZHRoLCBib29sIGtlZXBBdExlYXN0T25lQ2hhcmFjdGVyLCBjb25z
dCBGbG93Q29udGVudHNJdGVyYXRvciYgZmxvd0NvbnRlbnRzSXRlcmF0b3IpCiB7CiAgICAgLy8g
RmFzdCBwYXRoIGZvciBzaW5nbGUgY2hhciBmcmFnbWVudHMuCi0gICAgaWYgKGZyYWdtZW50VG9T
cGxpdC5zdGFydCArIDEgPT0gZnJhZ21lbnRUb1NwbGl0LmVuZCkgeworICAgIGlmIChmcmFnbWVu
dFRvU3BsaXQuc3RhcnQoKSArIDEgPT0gZnJhZ21lbnRUb1NwbGl0LmVuZCgpKSB7CiAgICAgICAg
IGlmIChrZWVwQXRMZWFzdE9uZUNoYXJhY3RlcikKICAgICAgICAgICAgIHJldHVybiBGbG93Q29u
dGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50KCk7CiAKICAgICAgICAgRmxvd0NvbnRlbnRzSXRl
cmF0b3I6OlRleHRGcmFnbWVudCBmcmFnbWVudEZvck5leHRMaW5lKGZyYWdtZW50VG9TcGxpdCk7
Ci0gICAgICAgIGZyYWdtZW50VG9TcGxpdC5lbmQgPSBmcmFnbWVudFRvU3BsaXQuc3RhcnQ7Ci0g
ICAgICAgIGZyYWdtZW50VG9TcGxpdC53aWR0aCA9IDA7CisgICAgICAgIC8vIE1ha2UgaXQgZW1w
dHkgZnJhZ21lbnQuCisgICAgICAgIGZyYWdtZW50VG9TcGxpdCA9IEZsb3dDb250ZW50c0l0ZXJh
dG9yOjpUZXh0RnJhZ21lbnQoZnJhZ21lbnRUb1NwbGl0LnN0YXJ0KCksIGZyYWdtZW50VG9TcGxp
dC5zdGFydCgpLCAwLCBmcmFnbWVudFRvU3BsaXQudHlwZSgpKTsKICAgICAgICAgcmV0dXJuIGZy
YWdtZW50Rm9yTmV4dExpbmU7CiAgICAgfQogICAgIC8vIFNpbXBsZSBiaW5hcnkgc2VhcmNoIHRv
IGZpbmQgb3V0IHdoYXQgZml0cyB0aGUgY3VycmVudCBsaW5lLgogICAgIC8vIEZJWE1FOiBhZGQg
c3Vycm9nYXRlIHBhaXIgc3VwcG9ydC4KLSAgICB1bnNpZ25lZCBsZWZ0ID0gZnJhZ21lbnRUb1Nw
bGl0LnN0YXJ0OwotICAgIHVuc2lnbmVkIHJpZ2h0ID0gZnJhZ21lbnRUb1NwbGl0LmVuZCAtIDE7
IC8vIFdlIGNhbiBpZ25vcmUgdGhlIGxhc3QgY2hhcmFjdGVyLiBJdCBzdXJlbHkgZG9lcyBub3Qg
Zml0LgorICAgIHVuc2lnbmVkIGxlZnQgPSBmcmFnbWVudFRvU3BsaXQuc3RhcnQoKTsKKyAgICB1
bnNpZ25lZCByaWdodCA9IGZyYWdtZW50VG9TcGxpdC5lbmQoKSAtIDE7IC8vIFdlIGNhbiBpZ25v
cmUgdGhlIGxhc3QgY2hhcmFjdGVyLiBJdCBzdXJlbHkgZG9lcyBub3QgZml0LgogICAgIGZsb2F0
IHdpZHRoID0gMDsKICAgICB3aGlsZSAobGVmdCA8IHJpZ2h0KSB7CiAgICAgICAgIHVuc2lnbmVk
IG1pZGRsZSA9IChsZWZ0ICsgcmlnaHQpIC8gMjsKLSAgICAgICAgd2lkdGggPSBmbG93Q29udGVu
dHNJdGVyYXRvci50ZXh0V2lkdGgoZnJhZ21lbnRUb1NwbGl0LnN0YXJ0LCBtaWRkbGUgKyAxLCAw
KTsKKyAgICAgICAgd2lkdGggPSBmbG93Q29udGVudHNJdGVyYXRvci50ZXh0V2lkdGgoZnJhZ21l
bnRUb1NwbGl0LnN0YXJ0KCksIG1pZGRsZSArIDEsIDApOwogICAgICAgICBpZiAoYXZhaWxhYmxl
V2lkdGggPiB3aWR0aCkKICAgICAgICAgICAgIGxlZnQgPSBtaWRkbGUgKyAxOwogICAgICAgICBl
bHNlIGlmIChhdmFpbGFibGVXaWR0aCA8IHdpZHRoKQpAQCAtMzU4LDIxICszNTgsMjUgQEAgc3Rh
dGljIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQgc3BsaXRGcmFnbWVudFRvRml0
TGluZShGbG93Q29udGVudHNJdGUKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChrZWVwQXRM
ZWFzdE9uZUNoYXJhY3RlciAmJiByaWdodCA9PSBmcmFnbWVudFRvU3BsaXQuc3RhcnQpCisgICAg
aWYgKGtlZXBBdExlYXN0T25lQ2hhcmFjdGVyICYmIHJpZ2h0ID09IGZyYWdtZW50VG9TcGxpdC5z
dGFydCgpKQogICAgICAgICArK3JpZ2h0OwotICAgIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0
RnJhZ21lbnQgZnJhZ21lbnRGb3JOZXh0TGluZShmcmFnbWVudFRvU3BsaXQpOwotICAgIGZyYWdt
ZW50VG9TcGxpdC5lbmQgPSByaWdodDsKLSAgICBmcmFnbWVudFRvU3BsaXQud2lkdGggPSBmcmFn
bWVudFRvU3BsaXQuaXNFbXB0eSgpID8gMCA6IGZsb3dDb250ZW50c0l0ZXJhdG9yLnRleHRXaWR0
aChmcmFnbWVudFRvU3BsaXQuc3RhcnQsIGZyYWdtZW50VG9TcGxpdC5lbmQsIDApOwogCi0gICAg
ZnJhZ21lbnRGb3JOZXh0TGluZS5zdGFydCA9IGZyYWdtZW50VG9TcGxpdC5lbmQ7Ci0gICAgZnJh
Z21lbnRGb3JOZXh0TGluZS53aWR0aCAtPSBmcmFnbWVudFRvU3BsaXQud2lkdGg7Ci0gICAgcmV0
dXJuIGZyYWdtZW50Rm9yTmV4dExpbmU7CisgICAgLy8gRnJhZ21lbnQgZm9yIG5leHQgbGluZS4K
KyAgICB1bnNpZ25lZCBuZXh0TGluZVN0YXJ0ID0gcmlnaHQ7CisgICAgdW5zaWduZWQgbmV4dExp
bmVFbmQgPSBmcmFnbWVudFRvU3BsaXQuZW5kKCk7CisgICAgZmxvYXQgbmV4dExpbmVXaWR0aCA9
IGZsb3dDb250ZW50c0l0ZXJhdG9yLnRleHRXaWR0aChuZXh0TGluZVN0YXJ0LCBuZXh0TGluZUVu
ZCwgMCk7CisKKyAgICB1bnNpZ25lZCB0aGlzTGluZVN0YXJ0ID0gZnJhZ21lbnRUb1NwbGl0LnN0
YXJ0KCk7CisgICAgdW5zaWduZWQgdGhpc0xpbmVFbmQgPSByaWdodDsKKyAgICBmbG9hdCB0aGlz
TGluZVdpZHRoID0gZmxvd0NvbnRlbnRzSXRlcmF0b3IudGV4dFdpZHRoKHRoaXNMaW5lU3RhcnQs
IHRoaXNMaW5lRW5kLCAwKTsKKyAgICBmcmFnbWVudFRvU3BsaXQgPSBGbG93Q29udGVudHNJdGVy
YXRvcjo6VGV4dEZyYWdtZW50KHRoaXNMaW5lU3RhcnQsIHRoaXNMaW5lRW5kLCB0aGlzTGluZVdp
ZHRoLCBmcmFnbWVudFRvU3BsaXQudHlwZSgpLCBmcmFnbWVudFRvU3BsaXQuaXNDb2xsYXBzZWQo
KSwgZnJhZ21lbnRUb1NwbGl0LmlzQnJlYWthYmxlKCkpOworICAgIHJldHVybiBGbG93Q29udGVu
dHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50KG5leHRMaW5lU3RhcnQsIG5leHRMaW5lRW5kLCBuZXh0
TGluZVdpZHRoLCBmcmFnbWVudFRvU3BsaXQudHlwZSgpLCBmcmFnbWVudFRvU3BsaXQuaXNDb2xs
YXBzZWQoKSwgZnJhZ21lbnRUb1NwbGl0LmlzQnJlYWthYmxlKCkpOwogfQogCiBzdGF0aWMgRmxv
d0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCBmaXJzdEZyYWdtZW50KEZsb3dDb250ZW50
c0l0ZXJhdG9yJiBmbG93Q29udGVudHNJdGVyYXRvciwgY29uc3QgTGluZVN0YXRlJiBwcmV2aW91
c0xpbmUpCiB7CiAgICAgLy8gSGFuZGxlIG92ZXJmbG93ZWQgZnJhZ21lbnQgZnJvbSBwcmV2aW91
cyBsaW5lLgotICAgIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQgZmlyc3RGcmFn
bWVudCA9IHByZXZpb3VzTGluZS5vdmVyZmxvd2VkRnJhZ21lbnQoKTsKKyAgICBGbG93Q29udGVu
dHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50IGZpcnN0RnJhZ21lbnQocHJldmlvdXNMaW5lLm92ZXJm
bG93ZWRGcmFnbWVudCgpKTsKICAgICBjb25zdCBhdXRvJiBzdHlsZSA9IGZsb3dDb250ZW50c0l0
ZXJhdG9yLnN0eWxlKCk7CiAKICAgICBpZiAoZmlyc3RGcmFnbWVudC5pc0VtcHR5KCkpCkBAIC0z
ODAsMTYgKzM4NCwxNiBAQCBzdGF0aWMgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVu
dCBmaXJzdEZyYWdtZW50KEZsb3dDb250ZW50c0l0ZXJhdG9yJiBmbAogICAgIGVsc2UgewogICAg
ICAgICAvLyBTcGVjaWFsIG92ZXJmbG93IHByZS13cmFwIHdoaXRlc3BhY2UgaGFuZGxpbmc6IGln
bm9yZSB0aGUgb3ZlcmZsb3dlZCB3aGl0ZXNwYWNlIGlmIHdlIG1hbmFnZWQgdG8gZml0IGF0IGxl
YXN0IG9uZSBjaGFyYWN0ZXIgb24gdGhlIHByZXZpb3VzIGxpbmUuCiAgICAgICAgIC8vIFdoZW4g
dGhlIGxpbmUgaXMgdG9vIHNob3J0IHRvIGZpdCBvbmUgY2hhcmFjdGVyICh0aG91Z2h0IGl0IHN0
aWxsIHN0YXlzIG9uIHRoZSBsaW5lKSB3ZSBjb250aW51ZSB3aXRoIHRoZSBvdmVyZmxvdyB3aGl0
ZXNwYWNlIGNvbnRlbnQgb24gdGhpcyBsaW5lLgotICAgICAgICBpZiAoZmlyc3RGcmFnbWVudC50
eXBlID09IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OldoaXRlc3BhY2UgJiYg
cHJlV3JhcChzdHlsZSkgJiYgcHJldmlvdXNMaW5lLmZpcnN0Q2hhcmFjdGVyRml0cygpKSB7Cisg
ICAgICAgIGlmIChmaXJzdEZyYWdtZW50LnR5cGUoKSA9PSBGbG93Q29udGVudHNJdGVyYXRvcjo6
VGV4dEZyYWdtZW50OjpXaGl0ZXNwYWNlICYmIHByZVdyYXAoc3R5bGUpICYmIHByZXZpb3VzTGlu
ZS5maXJzdENoYXJhY3RlckZpdHMoKSkgewogICAgICAgICAgICAgZmlyc3RGcmFnbWVudCA9IGZs
b3dDb250ZW50c0l0ZXJhdG9yLm5leHRUZXh0RnJhZ21lbnQoKTsKICAgICAgICAgICAgIC8vIElm
IHNraXBwaW5nIHRoZSB3aGl0ZXNwYWNlIHB1dHMgdXMgb24gYSBoYXJkIG5ld2xpbmUsIHNraXAg
dGhlIG5ld2xpbmUgdG9vIGFzIHdlIGFscmVhZHkgd3JhcHBlZCB0aGUgbGluZS4KLSAgICAgICAg
ICAgIGlmIChmaXJzdEZyYWdtZW50LnR5cGUgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRG
cmFnbWVudDo6TGluZUJyZWFrKQorICAgICAgICAgICAgaWYgKGZpcnN0RnJhZ21lbnQudHlwZSgp
ID09IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OkxpbmVCcmVhaykKICAgICAg
ICAgICAgICAgICBmaXJzdEZyYWdtZW50ID0gZmxvd0NvbnRlbnRzSXRlcmF0b3IubmV4dFRleHRG
cmFnbWVudCgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gQ2hlY2sgaWYgd2UgbmVlZCB0
byBza2lwIHRoZSBsZWFkaW5nIHdoaXRlc3BhY2UuCi0gICAgaWYgKHN0eWxlLmNvbGxhcHNlV2hp
dGVzcGFjZSAmJiBmaXJzdEZyYWdtZW50LnR5cGUgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRl
eHRGcmFnbWVudDo6V2hpdGVzcGFjZSkKKyAgICBpZiAoc3R5bGUuY29sbGFwc2VXaGl0ZXNwYWNl
ICYmIGZpcnN0RnJhZ21lbnQudHlwZSgpID09IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJh
Z21lbnQ6OldoaXRlc3BhY2UpCiAgICAgICAgIGZpcnN0RnJhZ21lbnQgPSBmbG93Q29udGVudHNJ
dGVyYXRvci5uZXh0VGV4dEZyYWdtZW50KCk7CiAgICAgcmV0dXJuIGZpcnN0RnJhZ21lbnQ7CiB9
CkBAIC0zOTksMTUgKzQwMywxNSBAQCBzdGF0aWMgYm9vbCBjcmVhdGVMaW5lUnVucyhMaW5lU3Rh
dGUmIGxpbmUsIGNvbnN0IExpbmVTdGF0ZSYgcHJldmlvdXNMaW5lLCBMYXlvdQogICAgIGNvbnN0
IGF1dG8mIHN0eWxlID0gZmxvd0NvbnRlbnRzSXRlcmF0b3Iuc3R5bGUoKTsKICAgICBib29sIGxp
bmVDYW5CZVdyYXBwZWQgPSBzdHlsZS53cmFwTGluZXMgfHwgc3R5bGUuYnJlYWtXb3JkT25PdmVy
ZmxvdzsKICAgICBhdXRvIGZyYWdtZW50ID0gZmlyc3RGcmFnbWVudChmbG93Q29udGVudHNJdGVy
YXRvciwgcHJldmlvdXNMaW5lKTsKLSAgICB3aGlsZSAoIWZyYWdtZW50LmlzRW1wdHkoKSkgewor
ICAgIHdoaWxlIChmcmFnbWVudC50eXBlKCkgIT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRG
cmFnbWVudDo6Q29udGVudEVuZCkgewogICAgICAgICAvLyBIYXJkIGxpbmVicmVhay4KLSAgICAg
ICAgaWYgKGZyYWdtZW50LnR5cGUgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVu
dDo6TGluZUJyZWFrKSB7CisgICAgICAgIGlmIChmcmFnbWVudC50eXBlKCkgPT0gRmxvd0NvbnRl
bnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6TGluZUJyZWFrKSB7CiAgICAgICAgICAgICAvLyBB
ZGQgdGhlIG5ldyBsaW5lIGZyYWdtZW50IG9ubHkgaWYgdGhlcmUncyBub3RoaW5nIG9uIHRoZSBs
aW5lLiAob3RoZXJ3aXNlIHRoZSBleHRyYSBuZXcgbGluZSBjaGFyYWN0ZXIgd291bGQgc2hvdyB1
cCBhdCB0aGUgZW5kIG9mIHRoZSBjb250ZW50LikKICAgICAgICAgICAgIGlmICghbGluZS53aWR0
aCgpKQogICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kRnJhZ21lbnQoZnJhZ21lbnQsIHJ1bnMp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGxpbmVDYW5CZVdy
YXBwZWQgJiYgIWxpbmUuZml0cyhmcmFnbWVudC53aWR0aCkpIHsKKyAgICAgICAgaWYgKGxpbmVD
YW5CZVdyYXBwZWQgJiYgIWxpbmUuZml0cyhmcmFnbWVudC53aWR0aCgpKSkgewogICAgICAgICAg
ICAgLy8gT3ZlcmZsb3cgd3JhcHBpbmcgYmVoYXZpb3VyOgogICAgICAgICAgICAgLy8gMS4gV2hp
dGVzYXBjZSBjb2xsYXBzZSBvbjogd2hpdGVzcGFjZSBpcyBza2lwcGVkLiBKdW1wIHRvIG5leHQg
bGluZS4KICAgICAgICAgICAgIC8vIDIuIFdoaXRlc3BhY2UgY29sbGFwc2Ugb2ZmOiB3aGl0ZXNw
YWNlIGlzIHdyYXBwZWQuCkBAIC00MTUsNyArNDE5LDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlTGlu
ZVJ1bnMoTGluZVN0YXRlJiBsaW5lLCBjb25zdCBMaW5lU3RhdGUmIHByZXZpb3VzTGluZSwgTGF5
b3UKICAgICAgICAgICAgIC8vIDQuIE5vbi13aGl0ZXNwYWNlIGZyYWdtZW50IHdoZW4gdGhlcmUn
cyBhbHJlYWR5IGFub3RoZXIgZnJhZ21lbnQgb24gdGhlIGxpbmUgZ2V0cyBwdXNoZWQgdG8gdGhl
IG5leHQgbGluZS4KICAgICAgICAgICAgIGJvb2wgZW1wdHlMaW5lID0gIWxpbmUud2lkdGgoKTsK
ICAgICAgICAgICAgIC8vIFdoaXRlc3BhY2UgZnJhZ21lbnQuCi0gICAgICAgICAgICBpZiAoZnJh
Z21lbnQudHlwZSA9PSBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpXaGl0ZXNw
YWNlKSB7CisgICAgICAgICAgICBpZiAoZnJhZ21lbnQudHlwZSgpID09IEZsb3dDb250ZW50c0l0
ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OldoaXRlc3BhY2UpIHsKICAgICAgICAgICAgICAgICBpZiAo
IXN0eWxlLmNvbGxhcHNlV2hpdGVzcGFjZSkgewogICAgICAgICAgICAgICAgICAgICAvLyBTcGxp
dCB0aGUgZnJhZ21lbnQ7IChtb2RpZmllZClmcmFnbWVudCBzdGF5cyBvbiB0aGlzIGxpbmUsIG92
ZXJmbG93ZWRGcmFnbWVudCBpcyBwdXNoZWQgdG8gbmV4dCBsaW5lLgogICAgICAgICAgICAgICAg
ICAgICBsaW5lLnNldE92ZXJmbG93ZWRGcmFnbWVudChzcGxpdEZyYWdtZW50VG9GaXRMaW5lKGZy
YWdtZW50LCBsaW5lLmF2YWlsYWJsZVdpZHRoKCkgLSBsaW5lLndpZHRoKCksIGVtcHR5TGluZSwg
Zmxvd0NvbnRlbnRzSXRlcmF0b3IpKTsKQEAgLTQ0NCw3ICs0NDgsNyBAQCBzdGF0aWMgYm9vbCBj
cmVhdGVMaW5lUnVucyhMaW5lU3RhdGUmIGxpbmUsIGNvbnN0IExpbmVTdGF0ZSYgcHJldmlvdXNM
aW5lLCBMYXlvdQogICAgICAgICAvLyBGaW5kIHRoZSBuZXh0IHRleHQgZnJhZ21lbnQuCiAgICAg
ICAgIGZyYWdtZW50ID0gZmxvd0NvbnRlbnRzSXRlcmF0b3IubmV4dFRleHRGcmFnbWVudChsaW5l
LndpZHRoKCkpOwogICAgIH0KLSAgICByZXR1cm4gZnJhZ21lbnQuaXNFbXB0eSgpICYmIGxpbmUu
b3ZlcmZsb3dlZEZyYWdtZW50KCkuaXNFbXB0eSgpOworICAgIHJldHVybiBmcmFnbWVudC50eXBl
KCkgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6Q29udGVudEVuZCAmJiBs
aW5lLm92ZXJmbG93ZWRGcmFnbWVudCgpLmlzRW1wdHkoKTsKIH0KIAogc3RhdGljIHZvaWQgY2xv
c2VMaW5lRW5kaW5nQW5kQWRqdXN0UnVucyhMaW5lU3RhdGUmIGxpbmUsIExheW91dDo6UnVuVmVj
dG9yJiBydW5zLCB1bnNpZ25lZCBwcmV2aW91c1J1bkNvdW50LCB1bnNpZ25lZCYgbGluZUNvdW50
LCBjb25zdCBGbG93Q29udGVudHNJdGVyYXRvciYgZmxvd0NvbnRlbnRzSXRlcmF0b3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250
ZW50c0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuY3BwCmluZGV4IDRiNThiNTkxMTI3NTJlYzk5NDA2MzJl
ZjdjY2U1YzUwODgwOTliYTYuLjBlZDZmNDk4ODk5MzVlMjNkZDI5MWViMmZjZTVmMDBkN2FiODJm
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
Rmxvd0NvbnRlbnRzSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuY3BwCkBAIC02MSw0NyArNjEsMzQg
QEAgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCBGbG93Q29udGVudHNJdGVyYXRv
cjo6bmV4dFRleHRGcmFnbWVudChmbG9hdAogICAgIC8vIDIuIHdoaXRlc3BhY2UgKGNvbGxhc3Bl
ZCwgbm9uLWNvbGxhcHNlZCBtdWx0aSBvciBzaW5nbGUpIG9yCiAgICAgLy8gMy4gbm9uLXdoaXRl
c3BhY2UgY2hhcmFjdGVycy4KICAgICAvLyA0LiBlbXB0eSwgaW5kaWNhdGluZyBjb250ZW50IGVu
ZC4KLSAgICBUZXh0RnJhZ21lbnQgZnJhZ21lbnQ7Ci0gICAgZnJhZ21lbnQuc3RhcnQgPSBtX3Bv
c2l0aW9uOwotICAgIGlmIChpc0VuZChmcmFnbWVudC5zdGFydCkpIHsKLSAgICAgICAgZnJhZ21l
bnQuZW5kID0gZnJhZ21lbnQuc3RhcnQ7CisgICAgaWYgKGlzRW5kKG1fcG9zaXRpb24pKQorICAg
ICAgICByZXR1cm4gVGV4dEZyYWdtZW50KG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIDAsIFRleHRG
cmFnbWVudDo6Q29udGVudEVuZCk7CisgICAgaWYgKGlzTGluZUJyZWFrKG1fcG9zaXRpb24pKSB7
CisgICAgICAgIFRleHRGcmFnbWVudCBmcmFnbWVudChtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsg
MSwgMCwgVGV4dEZyYWdtZW50OjpMaW5lQnJlYWspOworICAgICAgICArK21fcG9zaXRpb247CiAg
ICAgICAgIHJldHVybiBmcmFnbWVudDsKICAgICB9Ci0gICAgaWYgKGlzTGluZUJyZWFrKGZyYWdt
ZW50LnN0YXJ0KSkgewotICAgICAgICBmcmFnbWVudC50eXBlID0gVGV4dEZyYWdtZW50OjpMaW5l
QnJlYWs7Ci0gICAgICAgIGZyYWdtZW50LmVuZCA9IGZyYWdtZW50LnN0YXJ0ICsgMTsKLSAgICAg
ICAgbV9wb3NpdGlvbiA9IGZyYWdtZW50LmVuZDsKLSAgICAgICAgcmV0dXJuIGZyYWdtZW50Owot
ICAgIH0KLQogICAgIHVuc2lnbmVkIHNwYWNlQ291bnQgPSAwOwotICAgIHVuc2lnbmVkIHdoaXRl
c3BhY2VFbmQgPSBmaW5kTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlvbihmcmFnbWVudC5zdGFydCwg
c3BhY2VDb3VudCk7Ci0gICAgQVNTRVJUKGZyYWdtZW50LnN0YXJ0IDw9IHdoaXRlc3BhY2VFbmQp
OwotICAgIGlmIChmcmFnbWVudC5zdGFydCAhPSB3aGl0ZXNwYWNlRW5kKSB7Ci0gICAgICAgIGZy
YWdtZW50LnR5cGUgPSBUZXh0RnJhZ21lbnQ6OldoaXRlc3BhY2U7Ci0gICAgICAgIGZyYWdtZW50
LmVuZCA9IHdoaXRlc3BhY2VFbmQ7Ci0gICAgICAgIGJvb2wgbXVsdGlwbGVXaGl0ZXNwYWNlID0g
ZnJhZ21lbnQuc3RhcnQgKyAxIDwgZnJhZ21lbnQuZW5kOwotICAgICAgICBmcmFnbWVudC5pc0Nv
bGxhcHNlZCA9IG11bHRpcGxlV2hpdGVzcGFjZSAmJiBtX3N0eWxlLmNvbGxhcHNlV2hpdGVzcGFj
ZTsKLSAgICAgICAgZnJhZ21lbnQuaXNCcmVha2FibGUgPSAhZnJhZ21lbnQuaXNDb2xsYXBzZWQg
JiYgbXVsdGlwbGVXaGl0ZXNwYWNlOwotICAgICAgICBpZiAoZnJhZ21lbnQuaXNDb2xsYXBzZWQp
Ci0gICAgICAgICAgICBmcmFnbWVudC53aWR0aCA9IG1fc3R5bGUuc3BhY2VXaWR0aDsKKyAgICB1
bnNpZ25lZCBzdGFydFBvc2l0aW9uID0gbV9wb3NpdGlvbjsKKyAgICB1bnNpZ25lZCBlbmRQb3Np
dGlvbiA9IGZpbmROZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKHN0YXJ0UG9zaXRpb24sIHNwYWNl
Q291bnQpOworICAgIEFTU0VSVChzdGFydFBvc2l0aW9uIDw9IGVuZFBvc2l0aW9uKTsKKyAgICBp
ZiAoZW5kUG9zaXRpb24gPiBzdGFydFBvc2l0aW9uKSB7CisgICAgICAgIGJvb2wgbXVsdGlwbGVX
aGl0ZXNwYWNlID0gc3RhcnRQb3NpdGlvbiArIDEgPCBlbmRQb3NpdGlvbjsKKyAgICAgICAgYm9v
bCBpc0NvbGxhcHNlZCA9IG11bHRpcGxlV2hpdGVzcGFjZSAmJiBtX3N0eWxlLmNvbGxhcHNlV2hp
dGVzcGFjZTsKKyAgICAgICAgYm9vbCBpc0JyZWFrYWJsZSA9ICFpc0NvbGxhcHNlZCAmJiBtdWx0
aXBsZVdoaXRlc3BhY2U7CisgICAgICAgIGZsb2F0IHdpZHRoID0gMDsKKyAgICAgICAgaWYgKGlz
Q29sbGFwc2VkKQorICAgICAgICAgICAgd2lkdGggPSBtX3N0eWxlLnNwYWNlV2lkdGg7CiAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgdW5zaWduZWQgZnJhZ21lbnRMZW5ndGggPSBmcmFnbWVu
dC5lbmQgLSBmcmFnbWVudC5zdGFydDsKLSAgICAgICAgICAgIGlmIChmcmFnbWVudExlbmd0aCA9
PSBzcGFjZUNvdW50KQotICAgICAgICAgICAgICAgIGZyYWdtZW50LndpZHRoID0gZnJhZ21lbnRM
ZW5ndGggKiBtX3N0eWxlLnNwYWNlV2lkdGg7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgZnJhZ21lbnQud2lkdGggPSB0ZXh0V2lkdGgoZnJhZ21lbnQuc3RhcnQsIGZyYWdtZW50
LmVuZCwgeFBvc2l0aW9uKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGVuZFBvc2l0
aW9uIC0gc3RhcnRQb3NpdGlvbjsKKyAgICAgICAgICAgIHdpZHRoID0gbGVuZ3RoID09IHNwYWNl
Q291bnQgPyBsZW5ndGggKiBtX3N0eWxlLnNwYWNlV2lkdGggOiB0ZXh0V2lkdGgoc3RhcnRQb3Np
dGlvbiwgZW5kUG9zaXRpb24sIHhQb3NpdGlvbik7CiAgICAgICAgIH0KLSAgICAgICAgbV9wb3Np
dGlvbiA9IGZyYWdtZW50LmVuZDsKLSAgICAgICAgcmV0dXJuIGZyYWdtZW50OworICAgICAgICBt
X3Bvc2l0aW9uID0gZW5kUG9zaXRpb247CisgICAgICAgIHJldHVybiBUZXh0RnJhZ21lbnQoc3Rh
cnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIHdpZHRoLCBUZXh0RnJhZ21lbnQ6OldoaXRlc3BhY2Us
IGlzQ29sbGFwc2VkLCBpc0JyZWFrYWJsZSk7CiAgICAgfQotCi0gICAgZnJhZ21lbnQudHlwZSA9
IFRleHRGcmFnbWVudDo6Tm9uV2hpdGVzcGFjZTsKLSAgICBmcmFnbWVudC5pc0JyZWFrYWJsZSA9
IG1fc3R5bGUuYnJlYWtXb3JkT25PdmVyZmxvdzsKLSAgICBmcmFnbWVudC5lbmQgPSBmaW5kTmV4
dEJyZWFrYWJsZVBvc2l0aW9uKGZyYWdtZW50LnN0YXJ0ICsgMSk7Ci0gICAgZnJhZ21lbnQud2lk
dGggPSB0ZXh0V2lkdGgoZnJhZ21lbnQuc3RhcnQsIGZyYWdtZW50LmVuZCwgeFBvc2l0aW9uKTsK
LSAgICBtX3Bvc2l0aW9uID0gZnJhZ21lbnQuZW5kOwotICAgIHJldHVybiBmcmFnbWVudDsKKyAg
ICBlbmRQb3NpdGlvbiA9IGZpbmROZXh0QnJlYWthYmxlUG9zaXRpb24oc3RhcnRQb3NpdGlvbiAr
IDEpOworICAgIG1fcG9zaXRpb24gPSBlbmRQb3NpdGlvbjsKKyAgICByZXR1cm4gVGV4dEZyYWdt
ZW50KHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCB0ZXh0V2lkdGgoc3RhcnRQb3NpdGlvbiwg
ZW5kUG9zaXRpb24sIHhQb3NpdGlvbiksIFRleHRGcmFnbWVudDo6Tm9uV2hpdGVzcGFjZSwgZmFs
c2UsIG1fc3R5bGUuYnJlYWtXb3JkT25PdmVyZmxvdyk7CiB9CiAKIGZsb2F0IEZsb3dDb250ZW50
c0l0ZXJhdG9yOjp0ZXh0V2lkdGgodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIGZsb2F0IHhQ
b3NpdGlvbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuaAppbmRleCA4M2Q0Yzg1
ZjhkZGFjZjNmNmVlNTUzOGEyNWU1NGNhNWFlMzUxYjkwLi5lYzQ5ODhmZmQyZjBmYzg1MmE0ZjA2
ZDMwNGYwMWI4MWI3NTM3OTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50c0l0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHNJdGVyYXRvci5oCkBAIC0z
OSwyOSArMzksMzUgQEAgbmFtZXNwYWNlIFNpbXBsZUxpbmVMYXlvdXQgewogY2xhc3MgRmxvd0Nv
bnRlbnRzSXRlcmF0b3IgIHsKIHB1YmxpYzoKICAgICBGbG93Q29udGVudHNJdGVyYXRvcihjb25z
dCBSZW5kZXJCbG9ja0Zsb3cmKTsKLQotICAgIHN0cnVjdCBUZXh0RnJhZ21lbnQgeworICAgIGNs
YXNzIFRleHRGcmFnbWVudCB7CisgICAgcHVibGljOgorICAgICAgICBlbnVtIFR5cGUgeyBDb250
ZW50RW5kLCBMaW5lQnJlYWssIFdoaXRlc3BhY2UsIE5vbldoaXRlc3BhY2UgfTsKICAgICAgICAg
VGV4dEZyYWdtZW50KCkgPSBkZWZhdWx0OwotICAgICAgICBUZXh0RnJhZ21lbnQodW5zaWduZWQg
dGV4dFN0YXJ0LCB1bnNpZ25lZCB0ZXh0RW5kLCBmbG9hdCB0ZXh0V2lkdGgsIGJvb2wgaXNXaGl0
ZXNwYWNlT25seSkKLSAgICAgICAgICAgIDogc3RhcnQodGV4dFN0YXJ0KQotICAgICAgICAgICAg
LCBlbmQodGV4dEVuZCkKLSAgICAgICAgICAgICwgdHlwZShpc1doaXRlc3BhY2VPbmx5ID8gV2hp
dGVzcGFjZSA6IE5vbldoaXRlc3BhY2UpCi0gICAgICAgICAgICAsIHdpZHRoKHRleHRXaWR0aCkK
LSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAg
ICAgICAgVGV4dEZyYWdtZW50KHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGZsb2F0IHdp
ZHRoLCBUeXBlIHR5cGUsIGJvb2wgaXNDb2xsYXBzZWQgPSBmYWxzZSwgYm9vbCBpc0JyZWFrYWJs
ZSA9IGZhbHNlKQorICAgICAgICAgICAgOiBtX3N0YXJ0KHN0YXJ0KQorICAgICAgICAgICAgLCBt
X2VuZChlbmQpCisgICAgICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAgICAgICAgICAgLCBtX3dp
ZHRoKHdpZHRoKQorICAgICAgICAgICAgLCBtX2lzQ29sbGFwc2VkKGlzQ29sbGFwc2VkKQorICAg
ICAgICAgICAgLCBtX2lzQnJlYWthYmxlKGlzQnJlYWthYmxlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gc3RhcnQgPT0gZW5kOwogICAgICAgICB9CiAKLSAgICAgICAgZW51bSBUeXBl
IHsgTGluZUJyZWFrLCBXaGl0ZXNwYWNlLCBOb25XaGl0ZXNwYWNlIH07Ci0gICAgICAgIHVuc2ln
bmVkIHN0YXJ0IHsgMCB9OwotICAgICAgICB1bnNpZ25lZCBlbmQgIHswIH07Ci0gICAgICAgIFR5
cGUgdHlwZSB7IE5vbldoaXRlc3BhY2UgfTsKLSAgICAgICAgYm9vbCBpc0NvbGxhcHNlZCB7IGZh
bHNlIH07Ci0gICAgICAgIGJvb2wgaXNCcmVha2FibGUgeyBmYWxzZSB9OwotICAgICAgICBmbG9h
dCB3aWR0aCB7IDAgfTsKKyAgICAgICAgdW5zaWduZWQgc3RhcnQoKSBjb25zdCB7IHJldHVybiBt
X3N0YXJ0OyB9CisgICAgICAgIHVuc2lnbmVkIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9
CisgICAgICAgIGZsb2F0IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQorICAgICAg
ICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICAgICAgYm9vbCBpc0Nv
bGxhcHNlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb2xsYXBzZWQ7IH0KKyAgICAgICAgYm9vbCBp
c0JyZWFrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNCcmVha2FibGU7IH0KKyAgICAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gc3RhcnQoKSA9PSBlbmQoKTsgfQorCisgICAgcHJp
dmF0ZToKKyAgICAgICAgdW5zaWduZWQgbV9zdGFydCB7IDAgfTsKKyAgICAgICAgdW5zaWduZWQg
bV9lbmQgeyAwIH07CisgICAgICAgIFR5cGUgbV90eXBlIHsgTm9uV2hpdGVzcGFjZSB9OworICAg
ICAgICBmbG9hdCBtX3dpZHRoIHsgMCB9OworICAgICAgICBib29sIG1faXNDb2xsYXBzZWQgeyBm
YWxzZSB9OworICAgICAgICBib29sIG1faXNCcmVha2FibGUgeyBmYWxzZSB9OwogICAgIH07CiAg
ICAgVGV4dEZyYWdtZW50IG5leHRUZXh0RnJhZ21lbnQoZmxvYXQgeFBvc2l0aW9uID0gMCk7CiAg
ICAgZmxvYXQgdGV4dFdpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBmbG9hdCB4UG9z
aXRpb24pIGNvbnN0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>