<?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>186134</bug_id>
          
          <creation_ts>2018-05-31 02:31:36 -0700</creation_ts>
          <short_desc>[Win][MiniBrowser] Remove gMiniBrowser global variable</short_desc>
          <delta_ts>2018-06-03 20:37: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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>184770</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>lforschler</cc>
    
    <cc>pvollan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1428787</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-05-31 02:31:36 -0700</bug_when>
    <thetext>[Win][MiniBrowser] Remove gMiniBrowser global variable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428790</commentid>
    <comment_count>1</comment_count>
      <attachid>341654</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-05-31 02:48:16 -0700</bug_when>
    <thetext>Created attachment 341654
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428991</commentid>
    <comment_count>2</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-05-31 13:51:39 -0700</bug_when>
    <thetext>Could anyone review this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428996</commentid>
    <comment_count>3</comment_count>
      <attachid>341654</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-05-31 14:02:35 -0700</bug_when>
    <thetext>Comment on attachment 341654
Patch

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

Can you please rebase the patch so it applies cleanly to the tree? We can&apos;t approve it if we don&apos;t know if it breaks any builds.

&gt; Tools/ChangeLog:8
&gt; +        It should not assume there is only one main window and one browser

It should not BE assumed there is ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429018</commentid>
    <comment_count>4</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-05-31 15:09:04 -0700</bug_when>
    <thetext>Thank you, Brent.

(In reply to Brent Fulgham from comment #3)
&gt; Can you please rebase the patch so it applies cleanly to the tree? We can&apos;t
&gt; approve it if we don&apos;t know if it breaks any builds.

This patch is up-to-date. I don&apos;t know the reason why MiniBrowserLib.rc can be merged. 
I&apos;m guessing that&apos;s because I was using Cygwin Git to create the patch. I will try native svn or git. 


&gt; &gt; Tools/ChangeLog:8
&gt; &gt; +        It should not assume there is only one main window and one browser
&gt; 
&gt; It should not BE assumed there is ...

Thanks. I will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429068</commentid>
    <comment_count>5</comment_count>
      <attachid>341710</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-05-31 17:08:40 -0700</bug_when>
    <thetext>Created attachment 341710
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429070</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-31 17:10:42 -0700</bug_when>
    <thetext>Attachment 341710 did not pass style-queue:


ERROR: Tools/MiniBrowser/win/MiniBrowserLibResource.h:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429080</commentid>
    <comment_count>7</comment_count>
      <attachid>341710</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-05-31 17:25:41 -0700</bug_when>
    <thetext>Comment on attachment 341710
Patch

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

r=me

&gt; Tools/MiniBrowser/win/MainWindow.cpp:136
&gt; +    MainWindow* thiz = reinterpret_cast&lt;MainWindow*&gt;(GetWindowLongPtr(hWnd, GWLP_USERDATA));

Is it possible for thiz to be null?

Likewise, is it possible for thiz-&gt;browserWindow() to return a nullptr?

If not, why isn&apos;t browserWindow() returning a reference?

&gt; Tools/MiniBrowser/win/MainWindow.cpp:448
&gt; +    *(reinterpret_cast&lt;LPWORD&gt;(strPtr)) = INTERNET_MAX_URL_LENGTH;

Could this be done with some kind of modern VisualStudio BSTR type? This seems so gross and likely to be confusing to someone unfamiliar with this.

I realize this is just existing code you moved, but it&apos;s still not very nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429090</commentid>
    <comment_count>8</comment_count>
      <attachid>341710</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-05-31 17:55:31 -0700</bug_when>
    <thetext>Comment on attachment 341710
Patch

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

Thank you for r+, Brent.

&gt;&gt; Tools/MiniBrowser/win/MainWindow.cpp:136
&gt;&gt; +    MainWindow* thiz = reinterpret_cast&lt;MainWindow*&gt;(GetWindowLongPtr(hWnd, GWLP_USERDATA));
&gt; 
&gt; Is it possible for thiz to be null?
&gt; 
&gt; Likewise, is it possible for thiz-&gt;browserWindow() to return a nullptr?
&gt; 
&gt; If not, why isn&apos;t browserWindow() returning a reference?

Agreed. I will fix.

&gt;&gt; Tools/MiniBrowser/win/MainWindow.cpp:448
&gt;&gt; +    *(reinterpret_cast&lt;LPWORD&gt;(strPtr)) = INTERNET_MAX_URL_LENGTH;
&gt; 
&gt; Could this be done with some kind of modern VisualStudio BSTR type? This seems so gross and likely to be confusing to someone unfamiliar with this.
&gt; 
&gt; I realize this is just existing code you moved, but it&apos;s still not very nice.

Year. it&apos;s too complicated code just to get the text of an edit control.
That is caused by the spec of EM_GETLINE.
I think I can use GetWindowText. I will try.

EM_GETLINE message (Windows)
https://msdn.microsoft.com/ja-jp/library/windows/desktop/bb761584(v=vs.85).aspx

GetWindowText function (Windows)
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms633520(v=vs.85).aspx</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429743</commentid>
    <comment_count>9</comment_count>
      <attachid>341885</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-06-03 20:20:38 -0700</bug_when>
    <thetext>Created attachment 341885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429744</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-03 20:23:15 -0700</bug_when>
    <thetext>Attachment 341885 did not pass style-queue:


ERROR: Tools/MiniBrowser/win/MiniBrowserLibResource.h:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429745</commentid>
    <comment_count>11</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-06-03 20:26:35 -0700</bug_when>
    <thetext>Committed r232458: &lt;https://trac.webkit.org/changeset/232458&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429747</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-03 20:37:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/40761065&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341654</attachid>
            <date>2018-05-31 02:48:16 -0700</date>
            <delta_ts>2018-05-31 17:08:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186134-20180531184815.patch</filename>
            <type>text/plain</type>
            <size>17783</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMzM2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTEwOGUwY2JiZmZmMTE4NDRmOTBiZTQwYzllZDU3ZWZh
YjQyMDEwMy4uNjZiOWZiNDc3ZWQxMDc3ODg5ZGYxM2RjYWQzZDdkYTc1YzNlYjJhMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDE4LTA1LTMxICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29t
PgorCisgICAgICAgIFtXaW5dW01pbmlCcm93c2VyXSBSZW1vdmUgZ01pbmlCcm93c2VyIGdsb2Jh
bCB2YXJpYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg2MTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSXQgc2hvdWxkIG5vdCBhc3N1bWUgdGhlcmUgaXMgb25seSBvbmUgbWFpbiB3aW5kb3cgYW5k
IG9uZSBicm93c2VyCisgICAgICAgIHdpbmRvdyB0byBzdXBwb3J0IG11bHRpcGxlIHdpbmRvd3Mg
cHJvcGVybHkuIGdNYWluV2luZG93IGFuZAorICAgICAgICBnTWluaUJyb3dzZXIgZ2xvYmFsIHZh
cmlhYmxlcyBzaG91bGQgYmUgcmVtb3ZlZC4gVGhpcyBjaGFuZ2UKKyAgICAgICAgcmVtb3ZlcyBn
TWluaUJyb3dzZXIuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93aW4vQ29tbW9uLmNwcDogUmVt
b3ZlZCBnTWluaUJyb3dzZXIgZ2xvYmFsIHZhcmlhYmxlLgorICAgICAgICAqIE1pbmlCcm93c2Vy
L3dpbi9Db21tb24uaDogRGl0dG8uCisgICAgICAgICogTWluaUJyb3dzZXIvd2luL01haW5XaW5k
b3cuY3BwOgorICAgICAgICAoTWFpbldpbmRvdzo6aW5pdCk6CisgICAgICAgIChNYWluV2luZG93
OjpXbmRQcm9jKToKKyAgICAgICAgKEVkaXRQcm9jKTogUG9zdCBXTV9DT01NQU5EIGlmIHRoZSBl
bnRlciBrZXkgaXMgcHJlc3NlZCBpbiBVUkwgYmFyLgorICAgICAgICAoTWFpbldpbmRvdzo6Y2Fj
aGVzRGlhbG9nUHJvYyk6IFJlbmFtZWQgZnJvbSBDYWNoZXMuCisgICAgICAgIChNYWluV2luZG93
OjpjdXN0b21Vc2VyQWdlbnREaWFsb2dQcm9jKTogUmVuYW1lZCBmcm9tIEN1c3RvbVVzZXJBZ2Vu
dC4KKyAgICAgICAgKE1haW5XaW5kb3c6Om9uVVJMQmFyRW50ZXIpOiBFeHRyYWN0ZWQgZnJvbSBF
ZGl0UHJvYy4KKyAgICAgICAgKEJhY2tCdXR0b25Qcm9jKTogRGVsZXRlZC4KKyAgICAgICAgKEZv
cndhcmRCdXR0b25Qcm9jKTogRGVsZXRlZC4KKyAgICAgICAgKENhY2hlcyk6IFJlbmFtZWQgdG8g
TWFpbldpbmRvdzo6Y2FjaGVzRGlhbG9nUHJvYy4KKyAgICAgICAgKEN1c3RvbVVzZXJBZ2VudCk6
IFJlbmFtZWQgdG8gTWFpbldpbmRvdzo6Y3VzdG9tVXNlckFnZW50RGlhbG9nUHJvYy4KKyAgICAg
ICAgKiBNaW5pQnJvd3Nlci93aW4vTWFpbldpbmRvdy5oOiBDb252ZXJ0IGhDYWNoZVduZCBnbG9i
YWwgdmFyaWFibGUgdG8gYSBtZW1iZXIgdmFyaWFibGUgb2YgTWFpbldpbmRvdy4KKyAgICAgICAg
KiBNaW5pQnJvd3Nlci93aW4vTWluaUJyb3dzZXJMaWIucmM6CisgICAgICAgICogTWluaUJyb3dz
ZXIvd2luL01pbmlCcm93c2VyTGliUmVzb3VyY2UuaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93
aW4vV2luTWFpbi5jcHA6CisgICAgICAgICh3V2luTWFpbik6CisKIDIwMTgtMDUtMzAgIEZ1amlp
IEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl1bTWlu
aUJyb3dzZXJdIE1vdmUgTWFpbldpbmRvdyByZWxhdGVkIGNvZGUgZnJvbSBDb21tb24uY3BwIHRv
IE1haW5XaW5kb3cuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29tbW9u
LmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uY3BwCmluZGV4IGIxMWZlZmExZDM1
Yzc2MTAxMWU1MTgwM2RkNTI3NjAwZWZlZTEwNDUuLjRjMjc4MjRjNWY5NzI5MjU4OWZjYjgwYmU5
YzhiZDhiMmEwZmI0Y2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24u
Y3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uY3BwCkBAIC0zNiw3ICszNiw2
IEBACiAvLyBHbG9iYWwgVmFyaWFibGVzOgogSElOU1RBTkNFIGhJbnN0OwogTWFpbldpbmRvdyog
Z01haW5XaW5kb3cgPSBudWxscHRyOwotTWluaUJyb3dzZXIqIGdNaW5pQnJvd3NlciA9IG51bGxw
dHI7CiAKIC8vIFN1cHBvcnQgbW92aW5nIHRoZSB0cmFuc3BhcmVudCB3aW5kb3cKIFBPSU5UIHNf
d2luZG93UG9zaXRpb24gPSB7IDEwMCwgMTAwIH07CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJv
d3Nlci93aW4vQ29tbW9uLmggYi9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29tbW9uLmgKaW5kZXgg
YzBjNDc5Njk3MmUwMTE0OTg2N2EwZDdiNTI2ODk1MTJlZDlmYTg1MC4uNjY2M2QyNTg2ZTUwMDI0
ZTUyMmNiN2ZhOTMzYThhOTM4NjhmM2JiMSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
d2luL0NvbW1vbi5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uaApAQCAtMzYs
NiArMzYsNSBAQCB2b2lkIGNyZWF0ZUNyYXNoUmVwb3J0KEVYQ0VQVElPTl9QT0lOVEVSUyopOwog
CiBleHRlcm4gSElOU1RBTkNFIGhJbnN0OwogZXh0ZXJuIE1haW5XaW5kb3cqIGdNYWluV2luZG93
OwotZXh0ZXJuIE1pbmlCcm93c2VyKiBnTWluaUJyb3dzZXI7CiBleHRlcm4gUE9JTlQgc193aW5k
b3dQb3NpdGlvbjsKIGV4dGVybiBTSVpFIHNfd2luZG93U2l6ZTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L01pbmlCcm93c2VyL3dpbi9NYWluV2luZG93LmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9N
YWluV2luZG93LmNwcAppbmRleCAxZjVmN2FkNDYwNmIzMzBmNmJlZTkxYzU1ODEwYmNmZDFlMjBh
YWE1Li40MDkwYTVjODQ5ZTI0NDRjYWQxMjc5ZDIyM2UwYzhmNWEzOGUyY2Y5IDEwMDY0NAotLS0g
YS9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWFpbldpbmRvdy5jcHAKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvd2luL01haW5XaW5kb3cuY3BwCkBAIC0zNiwxNyArMzYsMTAgQEAgZmxvYXQgZGV2aWNl
U2NhbGVGYWN0b3JGb3JXaW5kb3coSFdORCk7CiAKIHN0YXRpYyBjb25zdGV4cHIgaW50IGNvbnRy
b2xCdXR0b25XaWR0aCA9IDI0OwogCi1zdGF0aWMgSFdORCBoQ2FjaGVXbmQ7CiBzdGF0aWMgV05E
UFJPQyBEZWZFZGl0UHJvYyA9IG51bGxwdHI7Ci1zdGF0aWMgV05EUFJPQyBEZWZCdXR0b25Qcm9j
ID0gbnVsbHB0cjsKIAogc3RhdGljIExSRVNVTFQgQ0FMTEJBQ0sgRWRpdFByb2MoSFdORCwgVUlO
VCwgV1BBUkFNLCBMUEFSQU0pOwotc3RhdGljIExSRVNVTFQgQ0FMTEJBQ0sgQmFja0J1dHRvblBy
b2MoSFdORCwgVUlOVCwgV1BBUkFNLCBMUEFSQU0pOwotc3RhdGljIExSRVNVTFQgQ0FMTEJBQ0sg
Rm9yd2FyZEJ1dHRvblByb2MoSFdORCwgVUlOVCwgV1BBUkFNLCBMUEFSQU0pOwotc3RhdGljIExS
RVNVTFQgQ0FMTEJBQ0sgUmVsb2FkQnV0dG9uUHJvYyhIV05ELCBVSU5ULCBXUEFSQU0sIExQQVJB
TSk7CiBzdGF0aWMgSU5UX1BUUiBDQUxMQkFDSyBBYm91dChIV05ELCBVSU5ULCBXUEFSQU0sIExQ
QVJBTSk7Ci1zdGF0aWMgSU5UX1BUUiBDQUxMQkFDSyBDdXN0b21Vc2VyQWdlbnQoSFdORCwgVUlO
VCwgV1BBUkFNLCBMUEFSQU0pOwotc3RhdGljIElOVF9QVFIgQ0FMTEJBQ0sgQ2FjaGVzKEhXTkQs
IFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKIAogc3RkOjp3c3RyaW5nIE1haW5XaW5kb3c6OnNfd2lu
ZG93Q2xhc3M7CiAKQEAgLTkxLDIxICs4NCwxOCBAQCBib29sIE1haW5XaW5kb3c6OmluaXQoSElO
U1RBTkNFIGhJbnN0YW5jZSwgYm9vbCB1c2VzTGF5ZXJlZFdlYlZpZXcsIGJvb2wgcGFnZUxvYQog
ICAgIGF1dG8gdGl0bGUgPSBsb2FkU3RyaW5nKElEU19BUFBfVElUTEUpOwogCiAgICAgbV9oTWFp
blduZCA9IENyZWF0ZVdpbmRvdyhzX3dpbmRvd0NsYXNzLmNfc3RyKCksIHRpdGxlLmNfc3RyKCks
IFdTX09WRVJMQVBQRURXSU5ET1csCi0gICAgICAgIENXX1VTRURFRkFVTFQsIDAsIENXX1VTRURF
RkFVTFQsIDAsIDAsIDAsIGhJbnN0YW5jZSwgMCk7CisgICAgICAgIENXX1VTRURFRkFVTFQsIDAs
IENXX1VTRURFRkFVTFQsIDAsIDAsIDAsIGhJbnN0YW5jZSwgdGhpcyk7CiAKICAgICBpZiAoIW1f
aE1haW5XbmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZsb2F0IHNjYWxlRmFjdG9y
ID0gV2ViQ29yZTo6ZGV2aWNlU2NhbGVGYWN0b3JGb3JXaW5kb3cobnVsbHB0cik7Ci0gICAgbV9o
QmFja0J1dHRvblduZCA9IENyZWF0ZVdpbmRvdyhMIkJVVFRPTiIsIEwiPCIsIFdTX0NISUxEIHwg
V1NfVklTSUJMRSAgfCBCU19URVhULCAwLCAwLCAwLCAwLCBtX2hNYWluV25kLCAwLCBoSW5zdGFu
Y2UsIDApOwotICAgIG1faEZvcndhcmRCdXR0b25XbmQgPSBDcmVhdGVXaW5kb3coTCJCVVRUT04i
LCBMIj4iLCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBCU19URVhULCBzY2FsZUZhY3RvciAqIGNv
bnRyb2xCdXR0b25XaWR0aCwgMCwgMCwgMCwgbV9oTWFpblduZCwgMCwgaEluc3RhbmNlLCAwKTsK
KyAgICBtX2hCYWNrQnV0dG9uV25kID0gQ3JlYXRlV2luZG93KEwiQlVUVE9OIiwgTCI8IiwgV1Nf
Q0hJTEQgfCBXU19WSVNJQkxFICB8IEJTX1RFWFQsIDAsIDAsIDAsIDAsIG1faE1haW5XbmQsIHJl
aW50ZXJwcmV0X2Nhc3Q8SE1FTlU+KElETV9ISVNUT1JZX0JBQ0tXQVJEKSwgaEluc3RhbmNlLCAw
KTsKKyAgICBtX2hGb3J3YXJkQnV0dG9uV25kID0gQ3JlYXRlV2luZG93KEwiQlVUVE9OIiwgTCI+
IiwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgQlNfVEVYVCwgc2NhbGVGYWN0b3IgKiBjb250cm9s
QnV0dG9uV2lkdGgsIDAsIDAsIDAsIG1faE1haW5XbmQsIHJlaW50ZXJwcmV0X2Nhc3Q8SE1FTlU+
KElETV9ISVNUT1JZX0ZPUldBUkQpLCBoSW5zdGFuY2UsIDApOwogICAgIG1faFVSTEJhclduZCA9
IENyZWF0ZVdpbmRvdyhMIkVESVQiLCAwLCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBXU19CT1JE
RVIgfCBFU19MRUZUIHwgRVNfQVVUT1ZTQ1JPTEwsIHNjYWxlRmFjdG9yICogY29udHJvbEJ1dHRv
bldpZHRoICogMiwgMCwgMCwgMCwgbV9oTWFpblduZCwgMCwgaEluc3RhbmNlLCAwKTsKIAogICAg
IERlZkVkaXRQcm9jID0gcmVpbnRlcnByZXRfY2FzdDxXTkRQUk9DPihHZXRXaW5kb3dMb25nUHRy
KG1faFVSTEJhclduZCwgR1dMUF9XTkRQUk9DKSk7Ci0gICAgRGVmQnV0dG9uUHJvYyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8V05EUFJPQz4oR2V0V2luZG93TG9uZ1B0cihtX2hCYWNrQnV0dG9uV25kLCBH
V0xQX1dORFBST0MpKTsKICAgICBTZXRXaW5kb3dMb25nUHRyKG1faFVSTEJhclduZCwgR1dMUF9X
TkRQUk9DLCByZWludGVycHJldF9jYXN0PExPTkdfUFRSPihFZGl0UHJvYykpOwotICAgIFNldFdp
bmRvd0xvbmdQdHIobV9oQmFja0J1dHRvblduZCwgR1dMUF9XTkRQUk9DLCByZWludGVycHJldF9j
YXN0PExPTkdfUFRSPihCYWNrQnV0dG9uUHJvYykpOwotICAgIFNldFdpbmRvd0xvbmdQdHIobV9o
Rm9yd2FyZEJ1dHRvblduZCwgR1dMUF9XTkRQUk9DLCByZWludGVycHJldF9jYXN0PExPTkdfUFRS
PihGb3J3YXJkQnV0dG9uUHJvYykpOwogCiAgICAgbV9icm93c2VyV2luZG93ID0gc3RkOjptYWtl
X3VuaXF1ZTxNaW5pQnJvd3Nlcj4obV9oTWFpblduZCwgbV9oVVJMQmFyV25kLCB1c2VzTGF5ZXJl
ZFdlYlZpZXcsIHBhZ2VMb2FkVGVzdGluZyk7CiAgICAgaWYgKCFtX2Jyb3dzZXJXaW5kb3cpCkBA
IC0xNDMsMTcgKzEzMywzMCBAQCB2b2lkIE1haW5XaW5kb3c6OnJlc2l6ZVN1YlZpZXdzKCkKIAog
TFJFU1VMVCBDQUxMQkFDSyBNYWluV2luZG93OjpXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNz
YWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogeworICAgIE1haW5XaW5kb3cqIHRo
aXogPSByZWludGVycHJldF9jYXN0PE1haW5XaW5kb3cqPihHZXRXaW5kb3dMb25nUHRyKGhXbmQs
IEdXTFBfVVNFUkRBVEEpKTsKICAgICBzd2l0Y2ggKG1lc3NhZ2UpIHsKKyAgICBjYXNlIFdNX0NS
RUFURToKKyAgICAgICAgU2V0V2luZG93TG9uZ1B0cihoV25kLCBHV0xQX1VTRVJEQVRBLCByZWlu
dGVycHJldF9jYXN0PExPTkdfUFRSPihyZWludGVycHJldF9jYXN0PExQQ1JFQVRFU1RSVUNUPihs
UGFyYW0pLT5scENyZWF0ZVBhcmFtcykpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFdNX0NP
TU1BTkQ6IHsKICAgICAgICAgaW50IHdtSWQgPSBMT1dPUkQod1BhcmFtKTsKICAgICAgICAgaW50
IHdtRXZlbnQgPSBISVdPUkQod1BhcmFtKTsKKyAgICAgICAgc3dpdGNoICh3bUV2ZW50KSB7Cisg
ICAgICAgIGNhc2UgMDogLy8gTWVudSBvciBCTl9DTElDS0VECisgICAgICAgIGNhc2UgMTogLy8g
QWNjZWxlcmF0b3IKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgcmV0dXJuIERlZldpbmRvd1Byb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0p
OworICAgICAgICB9CiAgICAgICAgIGlmICh3bUlkID49IElETV9ISVNUT1JZX0xJTkswICYmIHdt
SWQgPD0gSURNX0hJU1RPUllfTElOSzkpIHsKLSAgICAgICAgICAgIGlmIChnTWluaUJyb3dzZXIp
Ci0gICAgICAgICAgICAgICAgZ01pbmlCcm93c2VyLT5uYXZpZ2F0ZVRvSGlzdG9yeShoV25kLCB3
bUlkKTsKKyAgICAgICAgICAgIHRoaXotPmJyb3dzZXJXaW5kb3coKS0+bmF2aWdhdGVUb0hpc3Rv
cnkoaFduZCwgd21JZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAv
LyBQYXJzZSB0aGUgbWVudSBzZWxlY3Rpb25zOgogICAgICAgICBzd2l0Y2ggKHdtSWQpIHsKKyAg
ICAgICAgY2FzZSBJRENfVVJMX0JBUjoKKyAgICAgICAgICAgIHRoaXotPm9uVVJMQmFyRW50ZXIo
KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIElETV9BQk9VVDoKICAgICAgICAg
ICAgIERpYWxvZ0JveChoSW5zdCwgTUFLRUlOVFJFU09VUkNFKElERF9BQk9VVEJPWCksIGhXbmQs
IEFib3V0KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTYxLDQ3ICsxNjQsMzggQEAgTFJFU1VM
VCBDQUxMQkFDSyBNYWluV2luZG93OjpXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBX
UEFSQU0gd1BhcmFtLCBMUEEKICAgICAgICAgICAgIERlc3Ryb3lXaW5kb3coaFduZCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJRE1fUFJJTlQ6Ci0gICAgICAgICAgICBnTWlu
aUJyb3dzZXItPnByaW50KCk7CisgICAgICAgICAgICB0aGl6LT5icm93c2VyV2luZG93KCktPnBy
aW50KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJRE1fV0VCX0lOU1BFQ1RP
UjoKLSAgICAgICAgICAgIGlmIChnTWluaUJyb3dzZXIpCi0gICAgICAgICAgICAgICAgZ01pbmlC
cm93c2VyLT5sYXVuY2hJbnNwZWN0b3IoKTsKKyAgICAgICAgICAgIHRoaXotPmJyb3dzZXJXaW5k
b3coKS0+bGF1bmNoSW5zcGVjdG9yKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBJRE1fQ0FDSEVTOgotICAgICAgICAgICAgaWYgKCE6OklzV2luZG93KGhDYWNoZVduZCkpIHsK
LSAgICAgICAgICAgICAgICBoQ2FjaGVXbmQgPSBDcmVhdGVEaWFsb2coaEluc3QsIE1BS0VJTlRS
RVNPVVJDRShJRERfQ0FDSEVTKSwgaFduZCwgQ2FjaGVzKTsKLSAgICAgICAgICAgICAgICA6OlNo
b3dXaW5kb3coaENhY2hlV25kLCBTV19TSE9XKTsKKyAgICAgICAgICAgIGlmICghOjpJc1dpbmRv
dyh0aGl6LT5tX2hDYWNoZVduZCkpIHsKKyAgICAgICAgICAgICAgICB0aGl6LT5tX2hDYWNoZVdu
ZCA9IENyZWF0ZURpYWxvZ1BhcmFtKGhJbnN0LCBNQUtFSU5UUkVTT1VSQ0UoSUREX0NBQ0hFUyks
IGhXbmQsIGNhY2hlc0RpYWxvZ1Byb2MsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPih0aGl6KSk7
CisgICAgICAgICAgICAgICAgOjpTaG93V2luZG93KHRoaXotPm1faENhY2hlV25kLCBTV19TSE9X
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIElETV9I
SVNUT1JZX0JBQ0tXQVJEOgogICAgICAgICBjYXNlIElETV9ISVNUT1JZX0ZPUldBUkQ6Ci0gICAg
ICAgICAgICBpZiAoZ01pbmlCcm93c2VyKQotICAgICAgICAgICAgICAgIGdNaW5pQnJvd3Nlci0+
bmF2aWdhdGVGb3J3YXJkT3JCYWNrd2FyZChoV25kLCB3bUlkKTsKKyAgICAgICAgICAgIHRoaXot
PmJyb3dzZXJXaW5kb3coKS0+bmF2aWdhdGVGb3J3YXJkT3JCYWNrd2FyZChoV25kLCB3bUlkKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIElETV9VQV9PVEhFUjoKLSAgICAgICAg
ICAgIGlmICh3bUV2ZW50KQotICAgICAgICAgICAgICAgIGdNYWluV2luZG93LT50b2dnbGVNZW51
SXRlbSh3bUlkKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBEaWFsb2dCb3go
aEluc3QsIE1BS0VJTlRSRVNPVVJDRShJRERfVVNFUl9BR0VOVCksIGhXbmQsIEN1c3RvbVVzZXJB
Z2VudCk7CisgICAgICAgICAgICBEaWFsb2dCb3hQYXJhbShoSW5zdCwgTUFLRUlOVFJFU09VUkNF
KElERF9VU0VSX0FHRU5UKSwgaFduZCwgY3VzdG9tVXNlckFnZW50RGlhbG9nUHJvYywgcmVpbnRl
cnByZXRfY2FzdDxMUEFSQU0+KHRoaXopKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIElETV9BQ1RVQUxfU0laRToKLSAgICAgICAgICAgIGlmIChnTWluaUJyb3dzZXIpCi0gICAg
ICAgICAgICAgICAgZ01pbmlCcm93c2VyLT5yZXNldFpvb20oKTsKKyAgICAgICAgICAgIHRoaXot
PmJyb3dzZXJXaW5kb3coKS0+cmVzZXRab29tKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBJRE1fWk9PTV9JTjoKLSAgICAgICAgICAgIGlmIChnTWluaUJyb3dzZXIpCi0gICAg
ICAgICAgICAgICAgZ01pbmlCcm93c2VyLT56b29tSW4oKTsKKyAgICAgICAgICAgIHRoaXotPmJy
b3dzZXJXaW5kb3coKS0+em9vbUluKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBJRE1fWk9PTV9PVVQ6Ci0gICAgICAgICAgICBpZiAoZ01pbmlCcm93c2VyKQotICAgICAgICAg
ICAgICAgIGdNaW5pQnJvd3Nlci0+em9vbU91dCgpOworICAgICAgICAgICAgdGhpei0+YnJvd3Nl
cldpbmRvdygpLT56b29tT3V0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJ
RE1fU0hPV19MQVlFUl9UUkVFOgotICAgICAgICAgICAgaWYgKGdNaW5pQnJvd3NlcikKLSAgICAg
ICAgICAgICAgICBnTWluaUJyb3dzZXItPnNob3dMYXllclRyZWUoKTsKKyAgICAgICAgICAgIHRo
aXotPmJyb3dzZXJXaW5kb3coKS0+c2hvd0xheWVyVHJlZSgpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBpZiAoIWdNYWluV2luZG93LT50b2dnbGVN
ZW51SXRlbSh3bUlkKSkKKyAgICAgICAgICAgIGlmICghdGhpei0+dG9nZ2xlTWVudUl0ZW0od21J
ZCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIERlZldpbmRvd1Byb2MoaFduZCwgbWVzc2FnZSwg
d1BhcmFtLCBsUGFyYW0pOwogICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIxMywxNCArMjA3LDEw
IEBAIExSRVNVTFQgQ0FMTEJBQ0sgTWFpbldpbmRvdzo6V25kUHJvYyhIV05EIGhXbmQsIFVJTlQg
bWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBCiAgICAgICAgIFBvc3RRdWl0TWVzc2FnZSgwKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXTV9TSVpFOgotICAgICAgICBpZiAoIWdNaW5pQnJv
d3NlciB8fCAhZ01pbmlCcm93c2VyLT5oYXNXZWJWaWV3KCkpCi0gICAgICAgICAgICByZXR1cm4g
RGVmV2luZG93UHJvYyhoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7Ci0KLSAgICAgICAg
Z01haW5XaW5kb3ctPnJlc2l6ZVN1YlZpZXdzKCk7CisgICAgICAgIHRoaXotPnJlc2l6ZVN1YlZp
ZXdzKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV01fRFBJQ0hBTkdFRDoKLSAgICAgICAg
aWYgKGdNaW5pQnJvd3NlcikKLSAgICAgICAgICAgIGdNaW5pQnJvd3Nlci0+dXBkYXRlRGV2aWNl
U2NhbGVGYWN0b3IoKTsKKyAgICAgICAgdGhpei0+YnJvd3NlcldpbmRvdygpLT51cGRhdGVEZXZp
Y2VTY2FsZUZhY3RvcigpOwogICAgICAgICByZXR1cm4gRGVmV2luZG93UHJvYyhoV25kLCBtZXNz
YWdlLCB3UGFyYW0sIGxQYXJhbSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIERlZldp
bmRvd1Byb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwpAQCAtMjk4LDE0ICsyODgs
NyBAQCBMUkVTVUxUIENBTExCQUNLIEVkaXRQcm9jKEhXTkQgaERsZywgVUlOVCBtZXNzYWdlLCBX
UEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIGNhc2UgV01fQ0hBUjoKICAgICAgICAg
aWYgKHdQYXJhbSA9PSAxMykgewogICAgICAgICAgICAgLy8gRW50ZXIgS2V5Ci0gICAgICAgICAg
ICB3Y2hhcl90IHN0clB0cltJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSF07Ci0gICAgICAgICAgICAq
KChMUFdPUkQpc3RyUHRyKSA9IElOVEVSTkVUX01BWF9VUkxfTEVOR1RIOwotICAgICAgICAgICAg
aW50IHN0ckxlbiA9IFNlbmRNZXNzYWdlKGhEbGcsIEVNX0dFVExJTkUsIDAsIChMUEFSQU0pc3Ry
UHRyKTsKLQotICAgICAgICAgICAgc3RyUHRyW3N0ckxlbl0gPSAwOwotICAgICAgICAgICAgX2Jz
dHJfdCBic3RyKHN0clB0cik7Ci0gICAgICAgICAgICBnTWFpbldpbmRvdy0+bG9hZFVSTChic3Ry
LkdldEJTVFIoKSk7Ci0KKyAgICAgICAgICAgIDo6UG9zdE1lc3NhZ2UoR2V0UGFyZW50KGhEbGcp
LCBzdGF0aWNfY2FzdDxVSU5UPihXTV9DT01NQU5EKSwgTUFLRUxQQVJBTShJRENfVVJMX0JBUiwg
MCksIDApOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICBkZWZhdWx0OgpA
QCAtMzEzLDI2ICsyOTYsNiBAQCBMUkVTVUxUIENBTExCQUNLIEVkaXRQcm9jKEhXTkQgaERsZywg
VUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIH0KIH0KIAot
TFJFU1VMVCBDQUxMQkFDSyBCYWNrQnV0dG9uUHJvYyhIV05EIGhEbGcsIFVJTlQgbWVzc2FnZSwg
V1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKLXsKLSAgICBzd2l0Y2ggKG1lc3NhZ2UpIHsK
LSAgICBjYXNlIFdNX0xCVVRUT05VUDoKLSAgICAgICAgZ01pbmlCcm93c2VyLT5nb0JhY2soKTsK
LSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gQ2FsbFdpbmRvd1Byb2MoRGVmQnV0dG9uUHJv
YywgaERsZywgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwotICAgIH0KLX0KLQotTFJFU1VMVCBD
QUxMQkFDSyBGb3J3YXJkQnV0dG9uUHJvYyhIV05EIGhEbGcsIFVJTlQgbWVzc2FnZSwgV1BBUkFN
IHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKLXsKLSAgICBzd2l0Y2ggKG1lc3NhZ2UpIHsKLSAgICBj
YXNlIFdNX0xCVVRUT05VUDoKLSAgICAgICAgZ01pbmlCcm93c2VyLT5nb0ZvcndhcmQoKTsKLSAg
ICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gQ2FsbFdpbmRvd1Byb2MoRGVmQnV0dG9uUHJvYywg
aERsZywgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwotICAgIH0KLX0KLQogLy8gTWVzc2FnZSBo
YW5kbGVyIGZvciBhYm91dCBib3guCiBJTlRfUFRSIENBTExCQUNLIEFib3V0KEhXTkQgaERsZywg
VUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogewpAQCAtMzUxLDEx
ICszMTQsMTMgQEAgSU5UX1BUUiBDQUxMQkFDSyBBYm91dChIV05EIGhEbGcsIFVJTlQgbWVzc2Fn
ZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICByZXR1cm4gKElOVF9QVFIpRkFM
U0U7CiB9CiAKLUlOVF9QVFIgQ0FMTEJBQ0sgQ2FjaGVzKEhXTkQgaERsZywgVUlOVCBtZXNzYWdl
LCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQorSU5UX1BUUiBDQUxMQkFDSyBNYWluV2lu
ZG93OjpjYWNoZXNEaWFsb2dQcm9jKEhXTkQgaERsZywgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1Bh
cmFtLCBMUEFSQU0gbFBhcmFtKQogewotICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIobFBhcmFt
KTsKKyAgICBNYWluV2luZG93KiB0aGl6ID0gcmVpbnRlcnByZXRfY2FzdDxNYWluV2luZG93Kj4o
R2V0V2luZG93TG9uZ1B0cihoRGxnLCBEV0xQX1VTRVIpKTsKICAgICBzd2l0Y2ggKG1lc3NhZ2Up
IHsKICAgICBjYXNlIFdNX0lOSVRESUFMT0c6CisgICAgICAgIHRoaXogPSByZWludGVycHJldF9j
YXN0PE1haW5XaW5kb3cqPihsUGFyYW0pOworICAgICAgICBTZXRXaW5kb3dMb25nUHRyKGhEbGcs
IERXTFBfVVNFUiwgcmVpbnRlcnByZXRfY2FzdDxMT05HX1BUUj4odGhpeikpOwogICAgICAgICA6
OlNldFRpbWVyKGhEbGcsIElEVF9VUERBVEVfU1RBVFMsIDEwMDAsIG51bGxwdHIpOwogICAgICAg
ICByZXR1cm4gKElOVF9QVFIpVFJVRTsKIApAQCAtMzYzLDcgKzMyOCw3IEBAIElOVF9QVFIgQ0FM
TEJBQ0sgQ2FjaGVzKEhXTkQgaERsZywgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFS
QU0gbFBhcmFtKQogICAgICAgICBpZiAoTE9XT1JEKHdQYXJhbSkgPT0gSURPSyB8fCBMT1dPUkQo
d1BhcmFtKSA9PSBJRENBTkNFTCkgewogICAgICAgICAgICAgOjpLaWxsVGltZXIoaERsZywgSURU
X1VQREFURV9TVEFUUyk7CiAgICAgICAgICAgICA6OkRlc3Ryb3lXaW5kb3coaERsZyk7Ci0gICAg
ICAgICAgICBoQ2FjaGVXbmQgPSAwOworICAgICAgICAgICAgdGhpei0+bV9oQ2FjaGVXbmQgPSAw
OwogICAgICAgICAgICAgcmV0dXJuIChJTlRfUFRSKVRSVUU7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7CkBAIC0zNzMsMjIgKzMzOCwyMyBAQCBJTlRfUFRSIENBTExCQUNLIENhY2hlcyhIV05E
IGhEbGcsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICAg
ICAgcmV0dXJuIChJTlRfUFRSKVRSVUU7CiAKICAgICBjYXNlIFdNX1BBSU5UOgotICAgICAgICBn
TWluaUJyb3dzZXItPnVwZGF0ZVN0YXRpc3RpY3MoaERsZyk7CisgICAgICAgIHRoaXotPmJyb3dz
ZXJXaW5kb3coKS0+dXBkYXRlU3RhdGlzdGljcyhoRGxnKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCiAgICAgcmV0dXJuIChJTlRfUFRSKUZBTFNFOwogfQogCi1JTlRfUFRSIENBTExCQUNLIEN1
c3RvbVVzZXJBZ2VudChIV05EIGhEbGcsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBB
UkFNIGxQYXJhbSkKK0lOVF9QVFIgQ0FMTEJBQ0sgTWFpbldpbmRvdzo6Y3VzdG9tVXNlckFnZW50
RGlhbG9nUHJvYyhIV05EIGhEbGcsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFN
IGxQYXJhbSkKIHsKLSAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKGxQYXJhbSk7CisgICAgTWFp
bldpbmRvdyogdGhpeiA9IHJlaW50ZXJwcmV0X2Nhc3Q8TWFpbldpbmRvdyo+KEdldFdpbmRvd0xv
bmdQdHIoaERsZywgRFdMUF9VU0VSKSk7CiAgICAgc3dpdGNoIChtZXNzYWdlKSB7CiAgICAgY2Fz
ZSBXTV9JTklURElBTE9HOiB7CisgICAgICAgIHRoaXogPSByZWludGVycHJldF9jYXN0PE1haW5X
aW5kb3cqPihsUGFyYW0pOworICAgICAgICBTZXRXaW5kb3dMb25nUHRyKGhEbGcsIERXTFBfVVNF
UiwgcmVpbnRlcnByZXRfY2FzdDxMT05HX1BUUj4odGhpeikpOwogICAgICAgICBIV05EIGVkaXQg
PSA6OkdldERsZ0l0ZW0oaERsZywgSURDX1VTRVJfQUdFTlRfSU5QVVQpOwogICAgICAgICBfYnN0
cl90IHVzZXJBZ2VudDsKLSAgICAgICAgaWYgKGdNaW5pQnJvd3NlcikKLSAgICAgICAgICAgIHVz
ZXJBZ2VudCA9IGdNaW5pQnJvd3Nlci0+dXNlckFnZW50KCk7CisgICAgICAgIHVzZXJBZ2VudCA9
IHRoaXotPmJyb3dzZXJXaW5kb3coKS0+dXNlckFnZW50KCk7CiAKICAgICAgICAgOjpTZXRXaW5k
b3dUZXh0KGVkaXQsIHN0YXRpY19jYXN0PExQQ1RTVFI+KHVzZXJBZ2VudCkpOwogICAgICAgICBy
ZXR1cm4gKElOVF9QVFIpVFJVRTsKQEAgLTQwNCw4ICszNzAsOCBAQCBJTlRfUFRSIENBTExCQUNL
IEN1c3RvbVVzZXJBZ2VudChIV05EIGhEbGcsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwg
TFBBUkFNCiAKICAgICAgICAgICAgIF9ic3RyX3QgYnN0cihidWZmZXIpOwogICAgICAgICAgICAg
aWYgKGJzdHIubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgICAgICBnTWluaUJyb3dzZXItPnNldFVz
ZXJBZ2VudChic3RyKTsKLSAgICAgICAgICAgICAgICA6OlBvc3RNZXNzYWdlKGdNYWluV2luZG93
LT5od25kKCksIHN0YXRpY19jYXN0PFVJTlQ+KFdNX0NPTU1BTkQpLCBNQUtFTFBBUkFNKElETV9V
QV9PVEhFUiwgMSksIDApOworICAgICAgICAgICAgICAgIHRoaXotPmJyb3dzZXJXaW5kb3coKS0+
c2V0VXNlckFnZW50KGJzdHIpOworICAgICAgICAgICAgICAgIHRoaXotPnRvZ2dsZU1lbnVJdGVt
KElETV9VQV9PVEhFUik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNDc1LDMgKzQ0
MSwxNCBAQCB2b2lkIE1haW5XaW5kb3c6OmxvYWRVUkwoQlNUUiB1cmwpCiAKICAgICBTZXRGb2N1
cyhtX2Jyb3dzZXJXaW5kb3ctPmh3bmQoKSk7CiB9CisKK3ZvaWQgTWFpbldpbmRvdzo6b25VUkxC
YXJFbnRlcigpCit7CisgICAgd2NoYXJfdCBzdHJQdHJbSU5URVJORVRfTUFYX1VSTF9MRU5HVEhd
OworICAgICoocmVpbnRlcnByZXRfY2FzdDxMUFdPUkQ+KHN0clB0cikpID0gSU5URVJORVRfTUFY
X1VSTF9MRU5HVEg7CisgICAgaW50IHN0ckxlbiA9IFNlbmRNZXNzYWdlKG1faFVSTEJhclduZCwg
RU1fR0VUTElORSwgMCwgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KHN0clB0cikpOworCisgICAg
c3RyUHRyW3N0ckxlbl0gPSAwOworICAgIF9ic3RyX3QgYnN0cihzdHJQdHIpOworICAgIGxvYWRV
UkwoYnN0ci5HZXRCU1RSKCkpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2lu
L01haW5XaW5kb3cuaCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NYWluV2luZG93LmgKaW5kZXgg
MjkwMGJkMjg1MjQ0M2QzODA3MGE0NjM3ODdhNWFhMDZhYmFmOTUyZC4uMWM4OGVkZWQzODQ4NWNm
ZGFkMGQ4MGQ1MDQ5YTA0NjEyMzVmZjlmMCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
d2luL01haW5XaW5kb3cuaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWFpbldpbmRvdy5o
CkBAIC00MywxNCArNDMsMTggQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMg
TFJFU1VMVCBDQUxMQkFDSyBXbmRQcm9jKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKKyAg
ICBzdGF0aWMgSU5UX1BUUiBDQUxMQkFDSyBjdXN0b21Vc2VyQWdlbnREaWFsb2dQcm9jKEhXTkQs
IFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKKyAgICBzdGF0aWMgSU5UX1BUUiBDQUxMQkFDSyBjYWNo
ZXNEaWFsb2dQcm9jKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKICAgICBzdGF0aWMgdm9p
ZCByZWdpc3RlckNsYXNzKEhJTlNUQU5DRSBoSW5zdGFuY2UpOwogICAgIHN0YXRpYyBzdGQ6Ondz
dHJpbmcgc193aW5kb3dDbGFzczsKIAogICAgIGJvb2wgdG9nZ2xlTWVudUl0ZW0oVUlOVCBtZW51
SUQpOworICAgIHZvaWQgb25VUkxCYXJFbnRlcigpOwogCiAgICAgSFdORCBtX2hNYWluV25kIHsg
bnVsbHB0ciB9OwogICAgIEhXTkQgbV9oVVJMQmFyV25kIHsgbnVsbHB0ciB9OwogICAgIEhXTkQg
bV9oQmFja0J1dHRvblduZCB7IG51bGxwdHIgfTsKICAgICBIV05EIG1faEZvcndhcmRCdXR0b25X
bmQgeyBudWxscHRyIH07CisgICAgSFdORCBtX2hDYWNoZVduZCB7IG51bGxwdHIgfTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8TWluaUJyb3dzZXI+IG1fYnJvd3NlcldpbmRvdzsKIH07CmRpZmYgLS1n
aXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWluaUJyb3dzZXJMaWIucmMgYi9Ub29scy9NaW5p
QnJvd3Nlci93aW4vTWluaUJyb3dzZXJMaWIucmMKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEw
MDc1NQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGliUmVz
b3VyY2UuaCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYlJlc291cmNlLmgK
aW5kZXggN2FmY2E3ODAwNjJmMTY2OTAzYmE2MTc5ZWUyNGU0NDgxZDdmMWQyMy4uMGJkYTA2YWU1
NDliMTczMDA4MGRjNjFiMDI1NjQzNTQ3NzBkYzkwYiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJy
b3dzZXIvd2luL01pbmlCcm93c2VyTGliUmVzb3VyY2UuaAorKysgYi9Ub29scy9NaW5pQnJvd3Nl
ci93aW4vTWluaUJyb3dzZXJMaWJSZXNvdXJjZS5oCkBAIC0xMDksNiArMTA5LDcgQEAKICNkZWZp
bmUgSURDX1VTRVJfQUdFTlRfSU5QVVQgICAgICAgICAgICAxMDUyCiAjZGVmaW5lIElEQ19BVVRI
X1VTRVIgICAgICAgICAgICAgICAgICAgMTA1MwogI2RlZmluZSBJRENfQVVUSF9QQVNTV09SRCAg
ICAgICAgICAgICAgIDEwNTQKKyNkZWZpbmUgSURDX1VSTF9CQVIgICAgICAgICAgICAgICAgICAg
ICAxMDU1CiAjZGVmaW5lIElEQ19TVEFUSUMgICAgICAgICAgICAgICAgICAgICAgLTEKIAogLy8g
TmV4dCBkZWZhdWx0IHZhbHVlcyBmb3IgbmV3IG9iamVjdHMKQEAgLTExOCw3ICsxMTksNyBAQAog
I2RlZmluZSBfQVBTX05PX01GQyAgICAgICAgICAgICAgICAgICAgIDEKICNkZWZpbmUgX0FQU19O
RVhUX1JFU09VUkNFX1ZBTFVFICAgICAgICAxNzUKICNkZWZpbmUgX0FQU19ORVhUX0NPTU1BTkRf
VkFMVUUgICAgICAgICAzMjc3NgotI2RlZmluZSBfQVBTX05FWFRfQ09OVFJPTF9WQUxVRSAgICAg
ICAgIDEwNTQKKyNkZWZpbmUgX0FQU19ORVhUX0NPTlRST0xfVkFMVUUgICAgICAgICAxMDU1CiAj
ZGVmaW5lIF9BUFNfTkVYVF9TWU1FRF9WQUxVRSAgICAgICAgICAgMTEwCiAjZW5kaWYKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dpbk1haW4uY3BwIGIvVG9vbHMv
TWluaUJyb3dzZXIvd2luL1dpbk1haW4uY3BwCmluZGV4IGU4YjU4ZDJkNGU2YWQ0OWM3ODFjMTA1
NjZmMzc5MWExNjljODM2YjEuLmZiOTNhNWIzYzgwNGE1NDEzNjQ3OTMxYmIwMzRlY2JkOTk3Yjk5
NmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XaW5NYWluLmNwcAorKysgYi9U
b29scy9NaW5pQnJvd3Nlci93aW4vV2luTWFpbi5jcHAKQEAgLTcwLDcgKzcwLDYgQEAgaW50IFdJ
TkFQSSB3V2luTWFpbihfSW5fIEhJTlNUQU5DRSBoSW5zdGFuY2UsIF9Jbl9vcHRfIEhJTlNUQU5D
RSBoUHJldkluc3RhbmNlLAogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICBnb3RvIGV4aXQ7
CiAKLSAgICBnTWluaUJyb3dzZXIgPSBnTWFpbldpbmRvdy0+YnJvd3NlcldpbmRvdygpOwogICAg
IFNob3dXaW5kb3coZ01haW5XaW5kb3ctPmh3bmQoKSwgbkNtZFNob3cpOwogCiAgICAgaEFjY2Vs
VGFibGUgPSBMb2FkQWNjZWxlcmF0b3JzKGhJbnN0LCBNQUtFSU5UUkVTT1VSQ0UoSURDX01JTklC
Uk9XU0VSKSk7CkBAIC03OCw3ICs3Nyw3IEBAIGludCBXSU5BUEkgd1dpbk1haW4oX0luXyBISU5T
VEFOQ0UgaEluc3RhbmNlLCBfSW5fb3B0XyBISU5TVEFOQ0UgaFByZXZJbnN0YW5jZSwKICAgICBp
ZiAocmVxdWVzdGVkVVJMLmxlbmd0aCgpKQogICAgICAgICBnTWFpbldpbmRvdy0+bG9hZFVSTChy
ZXF1ZXN0ZWRVUkwuR2V0QlNUUigpKTsKICAgICBlbHNlCi0gICAgICAgIGdNaW5pQnJvd3Nlci0+
bG9hZEhUTUxTdHJpbmcoX2JzdHJfdChkZWZhdWx0SFRNTCkuR2V0QlNUUigpKTsKKyAgICAgICAg
Z01haW5XaW5kb3ctPmJyb3dzZXJXaW5kb3coKS0+bG9hZEhUTUxTdHJpbmcoX2JzdHJfdChkZWZh
dWx0SFRNTCkuR2V0QlNUUigpKTsKIAogI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDUwOSkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341710</attachid>
            <date>2018-05-31 17:08:40 -0700</date>
            <delta_ts>2018-06-03 20:20:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186134-20180601090839.patch</filename>
            <type>text/plain</type>
            <size>17580</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMzc2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGQ0MDkzMzM1MWNiZWQxZjVkOTY4NTdlZjYzOWU4NmRm
NGNhOTdiYy4uOGI1MGM3MTY2YTMyYzlkMzU0YTM1MDgyNjI1NWYwZDFlYTM4ODlhNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDE4LTA1LTMxICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29t
PgorCisgICAgICAgIFtXaW5dW01pbmlCcm93c2VyXSBSZW1vdmUgZ01pbmlCcm93c2VyIGdsb2Jh
bCB2YXJpYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg2MTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSXQgc2hvdWxkIG5vdCBiZSBhc3N1bWVkIHRoZXJlIGlzIG9ubHkgb25lIG1haW4gd2luZG93
IGFuZCBvbmUgYnJvd3NlcgorICAgICAgICB3aW5kb3cgdG8gc3VwcG9ydCBtdWx0aXBsZSB3aW5k
b3dzIHByb3Blcmx5LiBnTWFpbldpbmRvdyBhbmQKKyAgICAgICAgZ01pbmlCcm93c2VyIGdsb2Jh
bCB2YXJpYWJsZXMgc2hvdWxkIGJlIHJlbW92ZWQuIFRoaXMgY2hhbmdlCisgICAgICAgIHJlbW92
ZXMgZ01pbmlCcm93c2VyLgorCisgICAgICAgICogTWluaUJyb3dzZXIvd2luL0NvbW1vbi5jcHA6
IFJlbW92ZWQgZ01pbmlCcm93c2VyIGdsb2JhbCB2YXJpYWJsZS4KKyAgICAgICAgKiBNaW5pQnJv
d3Nlci93aW4vQ29tbW9uLmg6IERpdHRvLgorICAgICAgICAqIE1pbmlCcm93c2VyL3dpbi9NYWlu
V2luZG93LmNwcDoKKyAgICAgICAgKE1haW5XaW5kb3c6OmluaXQpOgorICAgICAgICAoTWFpbldp
bmRvdzo6V25kUHJvYyk6CisgICAgICAgIChFZGl0UHJvYyk6IFBvc3QgV01fQ09NTUFORCBpZiB0
aGUgZW50ZXIga2V5IGlzIHByZXNzZWQgaW4gVVJMIGJhci4KKyAgICAgICAgKE1haW5XaW5kb3c6
OmNhY2hlc0RpYWxvZ1Byb2MpOiBSZW5hbWVkIGZyb20gQ2FjaGVzLgorICAgICAgICAoTWFpbldp
bmRvdzo6Y3VzdG9tVXNlckFnZW50RGlhbG9nUHJvYyk6IFJlbmFtZWQgZnJvbSBDdXN0b21Vc2Vy
QWdlbnQuCisgICAgICAgIChNYWluV2luZG93OjpvblVSTEJhckVudGVyKTogRXh0cmFjdGVkIGZy
b20gRWRpdFByb2MuCisgICAgICAgIChCYWNrQnV0dG9uUHJvYyk6IERlbGV0ZWQuCisgICAgICAg
IChGb3J3YXJkQnV0dG9uUHJvYyk6IERlbGV0ZWQuCisgICAgICAgIChDYWNoZXMpOiBSZW5hbWVk
IHRvIE1haW5XaW5kb3c6OmNhY2hlc0RpYWxvZ1Byb2MuCisgICAgICAgIChDdXN0b21Vc2VyQWdl
bnQpOiBSZW5hbWVkIHRvIE1haW5XaW5kb3c6OmN1c3RvbVVzZXJBZ2VudERpYWxvZ1Byb2MuCisg
ICAgICAgICogTWluaUJyb3dzZXIvd2luL01haW5XaW5kb3cuaDogQ29udmVydCBoQ2FjaGVXbmQg
Z2xvYmFsIHZhcmlhYmxlIHRvIGEgbWVtYmVyIHZhcmlhYmxlIG9mIE1haW5XaW5kb3cuCisgICAg
ICAgICogTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGliUmVzb3VyY2UuaDoKKyAgICAgICAg
KiBNaW5pQnJvd3Nlci93aW4vV2luTWFpbi5jcHA6CisgICAgICAgICh3V2luTWFpbik6CisKIDIw
MTgtMDUtMzEgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAg
VXBkYXRlIGV4cGVjdGVkIHJlc3VsdHMgZm9yIEJ1aWxkU3RlcHNDb25zdHJ1Y3RvclRlc3QKZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uY3BwIGIvVG9vbHMvTWluaUJy
b3dzZXIvd2luL0NvbW1vbi5jcHAKaW5kZXggYjExZmVmYTFkMzVjNzYxMDExZTUxODAzZGQ1Mjc2
MDBlZmVlMTA0NS4uNGMyNzgyNGM1Zjk3MjkyNTg5ZmNiODBiZTljOGJkOGIyYTBmYjRjZSAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5jcHAKKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvd2luL0NvbW1vbi5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKIC8vIEdsb2JhbCBWYXJp
YWJsZXM6CiBISU5TVEFOQ0UgaEluc3Q7CiBNYWluV2luZG93KiBnTWFpbldpbmRvdyA9IG51bGxw
dHI7Ci1NaW5pQnJvd3NlciogZ01pbmlCcm93c2VyID0gbnVsbHB0cjsKIAogLy8gU3VwcG9ydCBt
b3ZpbmcgdGhlIHRyYW5zcGFyZW50IHdpbmRvdwogUE9JTlQgc193aW5kb3dQb3NpdGlvbiA9IHsg
MTAwLCAxMDAgfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uaCBi
L1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uaAppbmRleCBjMGM0Nzk2OTcyZTAxMTQ5ODY3
YTBkN2I1MjY4OTUxMmVkOWZhODUwLi42NjYzZDI1ODZlNTAwMjRlNTIyY2I3ZmE5MzNhOGE5Mzg2
OGYzYmIxIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29tbW9uLmgKKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5oCkBAIC0zNiw2ICszNiw1IEBAIHZvaWQgY3Jl
YXRlQ3Jhc2hSZXBvcnQoRVhDRVBUSU9OX1BPSU5URVJTKik7CiAKIGV4dGVybiBISU5TVEFOQ0Ug
aEluc3Q7CiBleHRlcm4gTWFpbldpbmRvdyogZ01haW5XaW5kb3c7Ci1leHRlcm4gTWluaUJyb3dz
ZXIqIGdNaW5pQnJvd3NlcjsKIGV4dGVybiBQT0lOVCBzX3dpbmRvd1Bvc2l0aW9uOwogZXh0ZXJu
IFNJWkUgc193aW5kb3dTaXplOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL01h
aW5XaW5kb3cuY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL01haW5XaW5kb3cuY3BwCmluZGV4
IDFmNWY3YWQ0NjA2YjMzMGY2YmVlOTFjNTU4MTBiY2ZkMWUyMGFhYTUuLjQwOTBhNWM4NDllMjQ0
NGNhZDEyNzlkMjIzZTBjOGY1YTM4ZTJjZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2Vy
L3dpbi9NYWluV2luZG93LmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWFpbldpbmRv
dy5jcHAKQEAgLTM2LDE3ICszNiwxMCBAQCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvckZvcldpbmRv
dyhIV05EKTsKIAogc3RhdGljIGNvbnN0ZXhwciBpbnQgY29udHJvbEJ1dHRvbldpZHRoID0gMjQ7
CiAKLXN0YXRpYyBIV05EIGhDYWNoZVduZDsKIHN0YXRpYyBXTkRQUk9DIERlZkVkaXRQcm9jID0g
bnVsbHB0cjsKLXN0YXRpYyBXTkRQUk9DIERlZkJ1dHRvblByb2MgPSBudWxscHRyOwogCiBzdGF0
aWMgTFJFU1VMVCBDQUxMQkFDSyBFZGl0UHJvYyhIV05ELCBVSU5ULCBXUEFSQU0sIExQQVJBTSk7
Ci1zdGF0aWMgTFJFU1VMVCBDQUxMQkFDSyBCYWNrQnV0dG9uUHJvYyhIV05ELCBVSU5ULCBXUEFS
QU0sIExQQVJBTSk7Ci1zdGF0aWMgTFJFU1VMVCBDQUxMQkFDSyBGb3J3YXJkQnV0dG9uUHJvYyhI
V05ELCBVSU5ULCBXUEFSQU0sIExQQVJBTSk7Ci1zdGF0aWMgTFJFU1VMVCBDQUxMQkFDSyBSZWxv
YWRCdXR0b25Qcm9jKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKIHN0YXRpYyBJTlRfUFRS
IENBTExCQUNLIEFib3V0KEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKLXN0YXRpYyBJTlRf
UFRSIENBTExCQUNLIEN1c3RvbVVzZXJBZ2VudChIV05ELCBVSU5ULCBXUEFSQU0sIExQQVJBTSk7
Ci1zdGF0aWMgSU5UX1BUUiBDQUxMQkFDSyBDYWNoZXMoSFdORCwgVUlOVCwgV1BBUkFNLCBMUEFS
QU0pOwogCiBzdGQ6OndzdHJpbmcgTWFpbldpbmRvdzo6c193aW5kb3dDbGFzczsKIApAQCAtOTEs
MjEgKzg0LDE4IEBAIGJvb2wgTWFpbldpbmRvdzo6aW5pdChISU5TVEFOQ0UgaEluc3RhbmNlLCBi
b29sIHVzZXNMYXllcmVkV2ViVmlldywgYm9vbCBwYWdlTG9hCiAgICAgYXV0byB0aXRsZSA9IGxv
YWRTdHJpbmcoSURTX0FQUF9USVRMRSk7CiAKICAgICBtX2hNYWluV25kID0gQ3JlYXRlV2luZG93
KHNfd2luZG93Q2xhc3MuY19zdHIoKSwgdGl0bGUuY19zdHIoKSwgV1NfT1ZFUkxBUFBFRFdJTkRP
VywKLSAgICAgICAgQ1dfVVNFREVGQVVMVCwgMCwgQ1dfVVNFREVGQVVMVCwgMCwgMCwgMCwgaElu
c3RhbmNlLCAwKTsKKyAgICAgICAgQ1dfVVNFREVGQVVMVCwgMCwgQ1dfVVNFREVGQVVMVCwgMCwg
MCwgMCwgaEluc3RhbmNlLCB0aGlzKTsKIAogICAgIGlmICghbV9oTWFpblduZCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBXZWJDb3JlOjpkZXZpY2VT
Y2FsZUZhY3RvckZvcldpbmRvdyhudWxscHRyKTsKLSAgICBtX2hCYWNrQnV0dG9uV25kID0gQ3Jl
YXRlV2luZG93KEwiQlVUVE9OIiwgTCI8IiwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFICB8IEJTX1RF
WFQsIDAsIDAsIDAsIDAsIG1faE1haW5XbmQsIDAsIGhJbnN0YW5jZSwgMCk7Ci0gICAgbV9oRm9y
d2FyZEJ1dHRvblduZCA9IENyZWF0ZVdpbmRvdyhMIkJVVFRPTiIsIEwiPiIsIFdTX0NISUxEIHwg
V1NfVklTSUJMRSB8IEJTX1RFWFQsIHNjYWxlRmFjdG9yICogY29udHJvbEJ1dHRvbldpZHRoLCAw
LCAwLCAwLCBtX2hNYWluV25kLCAwLCBoSW5zdGFuY2UsIDApOworICAgIG1faEJhY2tCdXR0b25X
bmQgPSBDcmVhdGVXaW5kb3coTCJCVVRUT04iLCBMIjwiLCBXU19DSElMRCB8IFdTX1ZJU0lCTEUg
IHwgQlNfVEVYVCwgMCwgMCwgMCwgMCwgbV9oTWFpblduZCwgcmVpbnRlcnByZXRfY2FzdDxITUVO
VT4oSURNX0hJU1RPUllfQkFDS1dBUkQpLCBoSW5zdGFuY2UsIDApOworICAgIG1faEZvcndhcmRC
dXR0b25XbmQgPSBDcmVhdGVXaW5kb3coTCJCVVRUT04iLCBMIj4iLCBXU19DSElMRCB8IFdTX1ZJ
U0lCTEUgfCBCU19URVhULCBzY2FsZUZhY3RvciAqIGNvbnRyb2xCdXR0b25XaWR0aCwgMCwgMCwg
MCwgbV9oTWFpblduZCwgcmVpbnRlcnByZXRfY2FzdDxITUVOVT4oSURNX0hJU1RPUllfRk9SV0FS
RCksIGhJbnN0YW5jZSwgMCk7CiAgICAgbV9oVVJMQmFyV25kID0gQ3JlYXRlV2luZG93KEwiRURJ
VCIsIDAsIFdTX0NISUxEIHwgV1NfVklTSUJMRSB8IFdTX0JPUkRFUiB8IEVTX0xFRlQgfCBFU19B
VVRPVlNDUk9MTCwgc2NhbGVGYWN0b3IgKiBjb250cm9sQnV0dG9uV2lkdGggKiAyLCAwLCAwLCAw
LCBtX2hNYWluV25kLCAwLCBoSW5zdGFuY2UsIDApOwogCiAgICAgRGVmRWRpdFByb2MgPSByZWlu
dGVycHJldF9jYXN0PFdORFBST0M+KEdldFdpbmRvd0xvbmdQdHIobV9oVVJMQmFyV25kLCBHV0xQ
X1dORFBST0MpKTsKLSAgICBEZWZCdXR0b25Qcm9jID0gcmVpbnRlcnByZXRfY2FzdDxXTkRQUk9D
PihHZXRXaW5kb3dMb25nUHRyKG1faEJhY2tCdXR0b25XbmQsIEdXTFBfV05EUFJPQykpOwogICAg
IFNldFdpbmRvd0xvbmdQdHIobV9oVVJMQmFyV25kLCBHV0xQX1dORFBST0MsIHJlaW50ZXJwcmV0
X2Nhc3Q8TE9OR19QVFI+KEVkaXRQcm9jKSk7Ci0gICAgU2V0V2luZG93TG9uZ1B0cihtX2hCYWNr
QnV0dG9uV25kLCBHV0xQX1dORFBST0MsIHJlaW50ZXJwcmV0X2Nhc3Q8TE9OR19QVFI+KEJhY2tC
dXR0b25Qcm9jKSk7Ci0gICAgU2V0V2luZG93TG9uZ1B0cihtX2hGb3J3YXJkQnV0dG9uV25kLCBH
V0xQX1dORFBST0MsIHJlaW50ZXJwcmV0X2Nhc3Q8TE9OR19QVFI+KEZvcndhcmRCdXR0b25Qcm9j
KSk7CiAKICAgICBtX2Jyb3dzZXJXaW5kb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPE1pbmlCcm93c2Vy
PihtX2hNYWluV25kLCBtX2hVUkxCYXJXbmQsIHVzZXNMYXllcmVkV2ViVmlldywgcGFnZUxvYWRU
ZXN0aW5nKTsKICAgICBpZiAoIW1fYnJvd3NlcldpbmRvdykKQEAgLTE0MywxNyArMTMzLDMwIEBA
IHZvaWQgTWFpbldpbmRvdzo6cmVzaXplU3ViVmlld3MoKQogCiBMUkVTVUxUIENBTExCQUNLIE1h
aW5XaW5kb3c6OlduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0s
IExQQVJBTSBsUGFyYW0pCiB7CisgICAgTWFpbldpbmRvdyogdGhpeiA9IHJlaW50ZXJwcmV0X2Nh
c3Q8TWFpbldpbmRvdyo+KEdldFdpbmRvd0xvbmdQdHIoaFduZCwgR1dMUF9VU0VSREFUQSkpOwog
ICAgIHN3aXRjaCAobWVzc2FnZSkgeworICAgIGNhc2UgV01fQ1JFQVRFOgorICAgICAgICBTZXRX
aW5kb3dMb25nUHRyKGhXbmQsIEdXTFBfVVNFUkRBVEEsIHJlaW50ZXJwcmV0X2Nhc3Q8TE9OR19Q
VFI+KHJlaW50ZXJwcmV0X2Nhc3Q8TFBDUkVBVEVTVFJVQ1Q+KGxQYXJhbSktPmxwQ3JlYXRlUGFy
YW1zKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV01fQ09NTUFORDogewogICAgICAgICBp
bnQgd21JZCA9IExPV09SRCh3UGFyYW0pOwogICAgICAgICBpbnQgd21FdmVudCA9IEhJV09SRCh3
UGFyYW0pOworICAgICAgICBzd2l0Y2ggKHdtRXZlbnQpIHsKKyAgICAgICAgY2FzZSAwOiAvLyBN
ZW51IG9yIEJOX0NMSUNLRUQKKyAgICAgICAgY2FzZSAxOiAvLyBBY2NlbGVyYXRvcgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gRGVmV2lu
ZG93UHJvYyhoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CisgICAgICAgIH0KICAgICAg
ICAgaWYgKHdtSWQgPj0gSURNX0hJU1RPUllfTElOSzAgJiYgd21JZCA8PSBJRE1fSElTVE9SWV9M
SU5LOSkgewotICAgICAgICAgICAgaWYgKGdNaW5pQnJvd3NlcikKLSAgICAgICAgICAgICAgICBn
TWluaUJyb3dzZXItPm5hdmlnYXRlVG9IaXN0b3J5KGhXbmQsIHdtSWQpOworICAgICAgICAgICAg
dGhpei0+YnJvd3NlcldpbmRvdygpLT5uYXZpZ2F0ZVRvSGlzdG9yeShoV25kLCB3bUlkKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIC8vIFBhcnNlIHRoZSBtZW51IHNl
bGVjdGlvbnM6CiAgICAgICAgIHN3aXRjaCAod21JZCkgeworICAgICAgICBjYXNlIElEQ19VUkxf
QkFSOgorICAgICAgICAgICAgdGhpei0+b25VUkxCYXJFbnRlcigpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgSURNX0FCT1VUOgogICAgICAgICAgICAgRGlhbG9nQm94KGhJbnN0
LCBNQUtFSU5UUkVTT1VSQ0UoSUREX0FCT1VUQk9YKSwgaFduZCwgQWJvdXQpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xNjEsNDcgKzE2NCwzOCBAQCBMUkVTVUxUIENBTExCQUNLIE1haW5XaW5k
b3c6OlduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQQog
ICAgICAgICAgICAgRGVzdHJveVdpbmRvdyhoV25kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIElETV9QUklOVDoKLSAgICAgICAgICAgIGdNaW5pQnJvd3Nlci0+cHJpbnQoKTsK
KyAgICAgICAgICAgIHRoaXotPmJyb3dzZXJXaW5kb3coKS0+cHJpbnQoKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIElETV9XRUJfSU5TUEVDVE9SOgotICAgICAgICAgICAgaWYg
KGdNaW5pQnJvd3NlcikKLSAgICAgICAgICAgICAgICBnTWluaUJyb3dzZXItPmxhdW5jaEluc3Bl
Y3RvcigpOworICAgICAgICAgICAgdGhpei0+YnJvd3NlcldpbmRvdygpLT5sYXVuY2hJbnNwZWN0
b3IoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIElETV9DQUNIRVM6Ci0gICAg
ICAgICAgICBpZiAoITo6SXNXaW5kb3coaENhY2hlV25kKSkgewotICAgICAgICAgICAgICAgIGhD
YWNoZVduZCA9IENyZWF0ZURpYWxvZyhoSW5zdCwgTUFLRUlOVFJFU09VUkNFKElERF9DQUNIRVMp
LCBoV25kLCBDYWNoZXMpOwotICAgICAgICAgICAgICAgIDo6U2hvd1dpbmRvdyhoQ2FjaGVXbmQs
IFNXX1NIT1cpOworICAgICAgICAgICAgaWYgKCE6OklzV2luZG93KHRoaXotPm1faENhY2hlV25k
KSkgeworICAgICAgICAgICAgICAgIHRoaXotPm1faENhY2hlV25kID0gQ3JlYXRlRGlhbG9nUGFy
YW0oaEluc3QsIE1BS0VJTlRSRVNPVVJDRShJRERfQ0FDSEVTKSwgaFduZCwgY2FjaGVzRGlhbG9n
UHJvYywgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KHRoaXopKTsKKyAgICAgICAgICAgICAgICA6
OlNob3dXaW5kb3codGhpei0+bV9oQ2FjaGVXbmQsIFNXX1NIT1cpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSURNX0hJU1RPUllfQkFDS1dBUkQ6CiAg
ICAgICAgIGNhc2UgSURNX0hJU1RPUllfRk9SV0FSRDoKLSAgICAgICAgICAgIGlmIChnTWluaUJy
b3dzZXIpCi0gICAgICAgICAgICAgICAgZ01pbmlCcm93c2VyLT5uYXZpZ2F0ZUZvcndhcmRPckJh
Y2t3YXJkKGhXbmQsIHdtSWQpOworICAgICAgICAgICAgdGhpei0+YnJvd3NlcldpbmRvdygpLT5u
YXZpZ2F0ZUZvcndhcmRPckJhY2t3YXJkKGhXbmQsIHdtSWQpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgSURNX1VBX09USEVSOgotICAgICAgICAgICAgaWYgKHdtRXZlbnQpCi0g
ICAgICAgICAgICAgICAgZ01haW5XaW5kb3ctPnRvZ2dsZU1lbnVJdGVtKHdtSWQpOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIERpYWxvZ0JveChoSW5zdCwgTUFLRUlOVFJFU09V
UkNFKElERF9VU0VSX0FHRU5UKSwgaFduZCwgQ3VzdG9tVXNlckFnZW50KTsKKyAgICAgICAgICAg
IERpYWxvZ0JveFBhcmFtKGhJbnN0LCBNQUtFSU5UUkVTT1VSQ0UoSUREX1VTRVJfQUdFTlQpLCBo
V25kLCBjdXN0b21Vc2VyQWdlbnREaWFsb2dQcm9jLCByZWludGVycHJldF9jYXN0PExQQVJBTT4o
dGhpeikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSURNX0FDVFVBTF9TSVpF
OgotICAgICAgICAgICAgaWYgKGdNaW5pQnJvd3NlcikKLSAgICAgICAgICAgICAgICBnTWluaUJy
b3dzZXItPnJlc2V0Wm9vbSgpOworICAgICAgICAgICAgdGhpei0+YnJvd3NlcldpbmRvdygpLT5y
ZXNldFpvb20oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIElETV9aT09NX0lO
OgotICAgICAgICAgICAgaWYgKGdNaW5pQnJvd3NlcikKLSAgICAgICAgICAgICAgICBnTWluaUJy
b3dzZXItPnpvb21JbigpOworICAgICAgICAgICAgdGhpei0+YnJvd3NlcldpbmRvdygpLT56b29t
SW4oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIElETV9aT09NX09VVDoKLSAg
ICAgICAgICAgIGlmIChnTWluaUJyb3dzZXIpCi0gICAgICAgICAgICAgICAgZ01pbmlCcm93c2Vy
LT56b29tT3V0KCk7CisgICAgICAgICAgICB0aGl6LT5icm93c2VyV2luZG93KCktPnpvb21PdXQo
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIElETV9TSE9XX0xBWUVSX1RSRUU6
Ci0gICAgICAgICAgICBpZiAoZ01pbmlCcm93c2VyKQotICAgICAgICAgICAgICAgIGdNaW5pQnJv
d3Nlci0+c2hvd0xheWVyVHJlZSgpOworICAgICAgICAgICAgdGhpei0+YnJvd3NlcldpbmRvdygp
LT5zaG93TGF5ZXJUcmVlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIGlmICghZ01haW5XaW5kb3ctPnRvZ2dsZU1lbnVJdGVtKHdtSWQpKQorICAg
ICAgICAgICAgaWYgKCF0aGl6LT50b2dnbGVNZW51SXRlbSh3bUlkKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gRGVmV2luZG93UHJvYyhoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CiAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtMjEzLDE0ICsyMDcsMTAgQEAgTFJFU1VMVCBDQUxMQkFD
SyBNYWluV2luZG93OjpXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1Bh
cmFtLCBMUEEKICAgICAgICAgUG9zdFF1aXRNZXNzYWdlKDApOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFdNX1NJWkU6Ci0gICAgICAgIGlmICghZ01pbmlCcm93c2VyIHx8ICFnTWluaUJyb3dz
ZXItPmhhc1dlYlZpZXcoKSkKLSAgICAgICAgICAgIHJldHVybiBEZWZXaW5kb3dQcm9jKGhXbmQs
IG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKLQotICAgICAgICBnTWFpbldpbmRvdy0+cmVzaXpl
U3ViVmlld3MoKTsKKyAgICAgICAgdGhpei0+cmVzaXplU3ViVmlld3MoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBXTV9EUElDSEFOR0VEOgotICAgICAgICBpZiAoZ01pbmlCcm93c2VyKQot
ICAgICAgICAgICAgZ01pbmlCcm93c2VyLT51cGRhdGVEZXZpY2VTY2FsZUZhY3RvcigpOworICAg
ICAgICB0aGl6LT5icm93c2VyV2luZG93KCktPnVwZGF0ZURldmljZVNjYWxlRmFjdG9yKCk7CiAg
ICAgICAgIHJldHVybiBEZWZXaW5kb3dQcm9jKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFt
KTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gRGVmV2luZG93UHJvYyhoV25kLCBtZXNz
YWdlLCB3UGFyYW0sIGxQYXJhbSk7CkBAIC0yOTgsMTQgKzI4OCw3IEBAIExSRVNVTFQgQ0FMTEJB
Q0sgRWRpdFByb2MoSFdORCBoRGxnLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJB
TSBsUGFyYW0pCiAgICAgY2FzZSBXTV9DSEFSOgogICAgICAgICBpZiAod1BhcmFtID09IDEzKSB7
CiAgICAgICAgICAgICAvLyBFbnRlciBLZXkKLSAgICAgICAgICAgIHdjaGFyX3Qgc3RyUHRyW0lO
VEVSTkVUX01BWF9VUkxfTEVOR1RIXTsKLSAgICAgICAgICAgICooKExQV09SRClzdHJQdHIpID0g
SU5URVJORVRfTUFYX1VSTF9MRU5HVEg7Ci0gICAgICAgICAgICBpbnQgc3RyTGVuID0gU2VuZE1l
c3NhZ2UoaERsZywgRU1fR0VUTElORSwgMCwgKExQQVJBTSlzdHJQdHIpOwotCi0gICAgICAgICAg
ICBzdHJQdHJbc3RyTGVuXSA9IDA7Ci0gICAgICAgICAgICBfYnN0cl90IGJzdHIoc3RyUHRyKTsK
LSAgICAgICAgICAgIGdNYWluV2luZG93LT5sb2FkVVJMKGJzdHIuR2V0QlNUUigpKTsKLQorICAg
ICAgICAgICAgOjpQb3N0TWVzc2FnZShHZXRQYXJlbnQoaERsZyksIHN0YXRpY19jYXN0PFVJTlQ+
KFdNX0NPTU1BTkQpLCBNQUtFTFBBUkFNKElEQ19VUkxfQkFSLCAwKSwgMCk7CiAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIGRlZmF1bHQ6CkBAIC0zMTMsMjYgKzI5Niw2IEBA
IExSRVNVTFQgQ0FMTEJBQ0sgRWRpdFByb2MoSFdORCBoRGxnLCBVSU5UIG1lc3NhZ2UsIFdQQVJB
TSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAgICAgfQogfQogCi1MUkVTVUxUIENBTExCQUNLIEJh
Y2tCdXR0b25Qcm9jKEhXTkQgaERsZywgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFS
QU0gbFBhcmFtKQotewotICAgIHN3aXRjaCAobWVzc2FnZSkgewotICAgIGNhc2UgV01fTEJVVFRP
TlVQOgotICAgICAgICBnTWluaUJyb3dzZXItPmdvQmFjaygpOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiBDYWxsV2luZG93UHJvYyhEZWZCdXR0b25Qcm9jLCBoRGxnLCBtZXNzYWdlLCB3
UGFyYW0sIGxQYXJhbSk7Ci0gICAgfQotfQotCi1MUkVTVUxUIENBTExCQUNLIEZvcndhcmRCdXR0
b25Qcm9jKEhXTkQgaERsZywgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBh
cmFtKQotewotICAgIHN3aXRjaCAobWVzc2FnZSkgewotICAgIGNhc2UgV01fTEJVVFRPTlVQOgot
ICAgICAgICBnTWluaUJyb3dzZXItPmdvRm9yd2FyZCgpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IHJldHVybiBDYWxsV2luZG93UHJvYyhEZWZCdXR0b25Qcm9jLCBoRGxnLCBtZXNzYWdlLCB3UGFy
YW0sIGxQYXJhbSk7Ci0gICAgfQotfQotCiAvLyBNZXNzYWdlIGhhbmRsZXIgZm9yIGFib3V0IGJv
eC4KIElOVF9QVFIgQ0FMTEJBQ0sgQWJvdXQoSFdORCBoRGxnLCBVSU5UIG1lc3NhZ2UsIFdQQVJB
TSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiB7CkBAIC0zNTEsMTEgKzMxNCwxMyBAQCBJTlRfUFRS
IENBTExCQUNLIEFib3V0KEhXTkQgaERsZywgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBM
UEFSQU0gbFBhcmFtKQogICAgIHJldHVybiAoSU5UX1BUUilGQUxTRTsKIH0KIAotSU5UX1BUUiBD
QUxMQkFDSyBDYWNoZXMoSFdORCBoRGxnLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQ
QVJBTSBsUGFyYW0pCitJTlRfUFRSIENBTExCQUNLIE1haW5XaW5kb3c6OmNhY2hlc0RpYWxvZ1By
b2MoSFdORCBoRGxnLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0p
CiB7Ci0gICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihsUGFyYW0pOworICAgIE1haW5XaW5kb3cq
IHRoaXogPSByZWludGVycHJldF9jYXN0PE1haW5XaW5kb3cqPihHZXRXaW5kb3dMb25nUHRyKGhE
bGcsIERXTFBfVVNFUikpOwogICAgIHN3aXRjaCAobWVzc2FnZSkgewogICAgIGNhc2UgV01fSU5J
VERJQUxPRzoKKyAgICAgICAgdGhpeiA9IHJlaW50ZXJwcmV0X2Nhc3Q8TWFpbldpbmRvdyo+KGxQ
YXJhbSk7CisgICAgICAgIFNldFdpbmRvd0xvbmdQdHIoaERsZywgRFdMUF9VU0VSLCByZWludGVy
cHJldF9jYXN0PExPTkdfUFRSPih0aGl6KSk7CiAgICAgICAgIDo6U2V0VGltZXIoaERsZywgSURU
X1VQREFURV9TVEFUUywgMTAwMCwgbnVsbHB0cik7CiAgICAgICAgIHJldHVybiAoSU5UX1BUUilU
UlVFOwogCkBAIC0zNjMsNyArMzI4LDcgQEAgSU5UX1BUUiBDQUxMQkFDSyBDYWNoZXMoSFdORCBo
RGxnLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAgICAgICAg
IGlmIChMT1dPUkQod1BhcmFtKSA9PSBJRE9LIHx8IExPV09SRCh3UGFyYW0pID09IElEQ0FOQ0VM
KSB7CiAgICAgICAgICAgICA6OktpbGxUaW1lcihoRGxnLCBJRFRfVVBEQVRFX1NUQVRTKTsKICAg
ICAgICAgICAgIDo6RGVzdHJveVdpbmRvdyhoRGxnKTsKLSAgICAgICAgICAgIGhDYWNoZVduZCA9
IDA7CisgICAgICAgICAgICB0aGl6LT5tX2hDYWNoZVduZCA9IDA7CiAgICAgICAgICAgICByZXR1
cm4gKElOVF9QVFIpVFJVRTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTM3MywyMiAr
MzM4LDIzIEBAIElOVF9QVFIgQ0FMTEJBQ0sgQ2FjaGVzKEhXTkQgaERsZywgVUlOVCBtZXNzYWdl
LCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgICAgICByZXR1cm4gKElOVF9QVFIp
VFJVRTsKIAogICAgIGNhc2UgV01fUEFJTlQ6Ci0gICAgICAgIGdNaW5pQnJvd3Nlci0+dXBkYXRl
U3RhdGlzdGljcyhoRGxnKTsKKyAgICAgICAgdGhpei0+YnJvd3NlcldpbmRvdygpLT51cGRhdGVT
dGF0aXN0aWNzKGhEbGcpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICByZXR1cm4gKElO
VF9QVFIpRkFMU0U7CiB9CiAKLUlOVF9QVFIgQ0FMTEJBQ0sgQ3VzdG9tVXNlckFnZW50KEhXTkQg
aERsZywgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQorSU5UX1BU
UiBDQUxMQkFDSyBNYWluV2luZG93OjpjdXN0b21Vc2VyQWdlbnREaWFsb2dQcm9jKEhXTkQgaERs
ZywgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogewotICAgIFVO
UkVGRVJFTkNFRF9QQVJBTUVURVIobFBhcmFtKTsKKyAgICBNYWluV2luZG93KiB0aGl6ID0gcmVp
bnRlcnByZXRfY2FzdDxNYWluV2luZG93Kj4oR2V0V2luZG93TG9uZ1B0cihoRGxnLCBEV0xQX1VT
RVIpKTsKICAgICBzd2l0Y2ggKG1lc3NhZ2UpIHsKICAgICBjYXNlIFdNX0lOSVRESUFMT0c6IHsK
KyAgICAgICAgdGhpeiA9IHJlaW50ZXJwcmV0X2Nhc3Q8TWFpbldpbmRvdyo+KGxQYXJhbSk7Cisg
ICAgICAgIFNldFdpbmRvd0xvbmdQdHIoaERsZywgRFdMUF9VU0VSLCByZWludGVycHJldF9jYXN0
PExPTkdfUFRSPih0aGl6KSk7CiAgICAgICAgIEhXTkQgZWRpdCA9IDo6R2V0RGxnSXRlbShoRGxn
LCBJRENfVVNFUl9BR0VOVF9JTlBVVCk7CiAgICAgICAgIF9ic3RyX3QgdXNlckFnZW50OwotICAg
ICAgICBpZiAoZ01pbmlCcm93c2VyKQotICAgICAgICAgICAgdXNlckFnZW50ID0gZ01pbmlCcm93
c2VyLT51c2VyQWdlbnQoKTsKKyAgICAgICAgdXNlckFnZW50ID0gdGhpei0+YnJvd3NlcldpbmRv
dygpLT51c2VyQWdlbnQoKTsKIAogICAgICAgICA6OlNldFdpbmRvd1RleHQoZWRpdCwgc3RhdGlj
X2Nhc3Q8TFBDVFNUUj4odXNlckFnZW50KSk7CiAgICAgICAgIHJldHVybiAoSU5UX1BUUilUUlVF
OwpAQCAtNDA0LDggKzM3MCw4IEBAIElOVF9QVFIgQ0FMTEJBQ0sgQ3VzdG9tVXNlckFnZW50KEhX
TkQgaERsZywgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0KIAogICAgICAgICAg
ICAgX2JzdHJfdCBic3RyKGJ1ZmZlcik7CiAgICAgICAgICAgICBpZiAoYnN0ci5sZW5ndGgoKSkg
ewotICAgICAgICAgICAgICAgIGdNaW5pQnJvd3Nlci0+c2V0VXNlckFnZW50KGJzdHIpOwotICAg
ICAgICAgICAgICAgIDo6UG9zdE1lc3NhZ2UoZ01haW5XaW5kb3ctPmh3bmQoKSwgc3RhdGljX2Nh
c3Q8VUlOVD4oV01fQ09NTUFORCksIE1BS0VMUEFSQU0oSURNX1VBX09USEVSLCAxKSwgMCk7Cisg
ICAgICAgICAgICAgICAgdGhpei0+YnJvd3NlcldpbmRvdygpLT5zZXRVc2VyQWdlbnQoYnN0cik7
CisgICAgICAgICAgICAgICAgdGhpei0+dG9nZ2xlTWVudUl0ZW0oSURNX1VBX09USEVSKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC00NzUsMyArNDQxLDE0IEBAIHZvaWQgTWFpbldp
bmRvdzo6bG9hZFVSTChCU1RSIHVybCkKIAogICAgIFNldEZvY3VzKG1fYnJvd3NlcldpbmRvdy0+
aHduZCgpKTsKIH0KKwordm9pZCBNYWluV2luZG93OjpvblVSTEJhckVudGVyKCkKK3sKKyAgICB3
Y2hhcl90IHN0clB0cltJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSF07CisgICAgKihyZWludGVycHJl
dF9jYXN0PExQV09SRD4oc3RyUHRyKSkgPSBJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSDsKKyAgICBp
bnQgc3RyTGVuID0gU2VuZE1lc3NhZ2UobV9oVVJMQmFyV25kLCBFTV9HRVRMSU5FLCAwLCByZWlu
dGVycHJldF9jYXN0PExQQVJBTT4oc3RyUHRyKSk7CisKKyAgICBzdHJQdHJbc3RyTGVuXSA9IDA7
CisgICAgX2JzdHJfdCBic3RyKHN0clB0cik7CisgICAgbG9hZFVSTChic3RyLkdldEJTVFIoKSk7
Cit9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWFpbldpbmRvdy5oIGIvVG9v
bHMvTWluaUJyb3dzZXIvd2luL01haW5XaW5kb3cuaAppbmRleCAyOTAwYmQyODUyNDQzZDM4MDcw
YTQ2Mzc4N2E1YWEwNmFiYWY5NTJkLi4xYzg4ZWRlZDM4NDg1Y2ZkYWQwZDgwZDUwNDlhMDQ2MTIz
NWZmOWYwIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWFpbldpbmRvdy5oCisr
KyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NYWluV2luZG93LmgKQEAgLTQzLDE0ICs0MywxOCBA
QCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFdu
ZFByb2MoSFdORCwgVUlOVCwgV1BBUkFNLCBMUEFSQU0pOworICAgIHN0YXRpYyBJTlRfUFRSIENB
TExCQUNLIGN1c3RvbVVzZXJBZ2VudERpYWxvZ1Byb2MoSFdORCwgVUlOVCwgV1BBUkFNLCBMUEFS
QU0pOworICAgIHN0YXRpYyBJTlRfUFRSIENBTExCQUNLIGNhY2hlc0RpYWxvZ1Byb2MoSFdORCwg
VUlOVCwgV1BBUkFNLCBMUEFSQU0pOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQ2xhc3MoSElO
U1RBTkNFIGhJbnN0YW5jZSk7CiAgICAgc3RhdGljIHN0ZDo6d3N0cmluZyBzX3dpbmRvd0NsYXNz
OwogCiAgICAgYm9vbCB0b2dnbGVNZW51SXRlbShVSU5UIG1lbnVJRCk7CisgICAgdm9pZCBvblVS
TEJhckVudGVyKCk7CiAKICAgICBIV05EIG1faE1haW5XbmQgeyBudWxscHRyIH07CiAgICAgSFdO
RCBtX2hVUkxCYXJXbmQgeyBudWxscHRyIH07CiAgICAgSFdORCBtX2hCYWNrQnV0dG9uV25kIHsg
bnVsbHB0ciB9OwogICAgIEhXTkQgbV9oRm9yd2FyZEJ1dHRvblduZCB7IG51bGxwdHIgfTsKKyAg
ICBIV05EIG1faENhY2hlV25kIHsgbnVsbHB0ciB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNaW5p
QnJvd3Nlcj4gbV9icm93c2VyV2luZG93OwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93
c2VyL3dpbi9NaW5pQnJvd3NlckxpYlJlc291cmNlLmggYi9Ub29scy9NaW5pQnJvd3Nlci93aW4v
TWluaUJyb3dzZXJMaWJSZXNvdXJjZS5oCmluZGV4IDdhZmNhNzgwMDYyZjE2NjkwM2JhNjE3OWVl
MjRlNDQ4MWQ3ZjFkMjMuLjBiZGEwNmFlNTQ5YjE3MzAwODBkYzYxYjAyNTY0MzU0NzcwZGM5MGIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYlJlc291cmNl
LmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGliUmVzb3VyY2UuaApA
QCAtMTA5LDYgKzEwOSw3IEBACiAjZGVmaW5lIElEQ19VU0VSX0FHRU5UX0lOUFVUICAgICAgICAg
ICAgMTA1MgogI2RlZmluZSBJRENfQVVUSF9VU0VSICAgICAgICAgICAgICAgICAgIDEwNTMKICNk
ZWZpbmUgSURDX0FVVEhfUEFTU1dPUkQgICAgICAgICAgICAgICAxMDU0CisjZGVmaW5lIElEQ19V
UkxfQkFSICAgICAgICAgICAgICAgICAgICAgMTA1NQogI2RlZmluZSBJRENfU1RBVElDICAgICAg
ICAgICAgICAgICAgICAgIC0xCiAKIC8vIE5leHQgZGVmYXVsdCB2YWx1ZXMgZm9yIG5ldyBvYmpl
Y3RzCkBAIC0xMTgsNyArMTE5LDcgQEAKICNkZWZpbmUgX0FQU19OT19NRkMgICAgICAgICAgICAg
ICAgICAgICAxCiAjZGVmaW5lIF9BUFNfTkVYVF9SRVNPVVJDRV9WQUxVRSAgICAgICAgMTc1CiAj
ZGVmaW5lIF9BUFNfTkVYVF9DT01NQU5EX1ZBTFVFICAgICAgICAgMzI3NzYKLSNkZWZpbmUgX0FQ
U19ORVhUX0NPTlRST0xfVkFMVUUgICAgICAgICAxMDU0CisjZGVmaW5lIF9BUFNfTkVYVF9DT05U
Uk9MX1ZBTFVFICAgICAgICAgMTA1NQogI2RlZmluZSBfQVBTX05FWFRfU1lNRURfVkFMVUUgICAg
ICAgICAgIDExMAogI2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L3dpbi9XaW5NYWluLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XaW5NYWluLmNwcAppbmRl
eCBlOGI1OGQyZDRlNmFkNDljNzgxYzEwNTY2ZjM3OTFhMTY5YzgzNmIxLi5mYjkzYTViM2M4MDRh
NTQxMzY0NzkzMWJiMDM0ZWNiZDk5N2I5OTZlIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nl
ci93aW4vV2luTWFpbi5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dpbk1haW4uY3Bw
CkBAIC03MCw3ICs3MCw2IEBAIGludCBXSU5BUEkgd1dpbk1haW4oX0luXyBISU5TVEFOQ0UgaElu
c3RhbmNlLCBfSW5fb3B0XyBISU5TVEFOQ0UgaFByZXZJbnN0YW5jZSwKICAgICBpZiAoRkFJTEVE
KGhyKSkKICAgICAgICAgZ290byBleGl0OwogCi0gICAgZ01pbmlCcm93c2VyID0gZ01haW5XaW5k
b3ctPmJyb3dzZXJXaW5kb3coKTsKICAgICBTaG93V2luZG93KGdNYWluV2luZG93LT5od25kKCks
IG5DbWRTaG93KTsKIAogICAgIGhBY2NlbFRhYmxlID0gTG9hZEFjY2VsZXJhdG9ycyhoSW5zdCwg
TUFLRUlOVFJFU09VUkNFKElEQ19NSU5JQlJPV1NFUikpOwpAQCAtNzgsNyArNzcsNyBAQCBpbnQg
V0lOQVBJIHdXaW5NYWluKF9Jbl8gSElOU1RBTkNFIGhJbnN0YW5jZSwgX0luX29wdF8gSElOU1RB
TkNFIGhQcmV2SW5zdGFuY2UsCiAgICAgaWYgKHJlcXVlc3RlZFVSTC5sZW5ndGgoKSkKICAgICAg
ICAgZ01haW5XaW5kb3ctPmxvYWRVUkwocmVxdWVzdGVkVVJMLkdldEJTVFIoKSk7CiAgICAgZWxz
ZQotICAgICAgICBnTWluaUJyb3dzZXItPmxvYWRIVE1MU3RyaW5nKF9ic3RyX3QoZGVmYXVsdEhU
TUwpLkdldEJTVFIoKSk7CisgICAgICAgIGdNYWluV2luZG93LT5icm93c2VyV2luZG93KCktPmxv
YWRIVE1MU3RyaW5nKF9ic3RyX3QoZGVmYXVsdEhUTUwpLkdldEJTVFIoKSk7CiAKICNwcmFnbWEg
d2FybmluZyhkaXNhYmxlOjQ1MDkpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341885</attachid>
            <date>2018-06-03 20:20:38 -0700</date>
            <delta_ts>2018-06-03 20:20:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186134-20180604122037.patch</filename>
            <type>text/plain</type>
            <size>17421</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNDU2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWJmMjM5Y2ZmODM4YjkxODQ0MDM3MWRmYWZiZDkxMjBm
YjA5NDkxYS4uYTJjZmIwZDY0YjYxMjliOGU5YzI3ZDFlM2RlYjkzMjJkMjgzZDZjNCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDE4LTA2LTAzICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29t
PgorCisgICAgICAgIFtXaW5dW01pbmlCcm93c2VyXSBSZW1vdmUgZ01pbmlCcm93c2VyIGdsb2Jh
bCB2YXJpYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg2MTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAg
ICBJdCBzaG91bGQgbm90IGJlIGFzc3VtZWQgdGhlcmUgaXMgb25seSBvbmUgbWFpbiB3aW5kb3cg
YW5kIG9uZSBicm93c2VyCisgICAgICAgIHdpbmRvdyB0byBzdXBwb3J0IG11bHRpcGxlIHdpbmRv
d3MgcHJvcGVybHkuIGdNYWluV2luZG93IGFuZAorICAgICAgICBnTWluaUJyb3dzZXIgZ2xvYmFs
IHZhcmlhYmxlcyBzaG91bGQgYmUgcmVtb3ZlZC4gVGhpcyBjaGFuZ2UKKyAgICAgICAgcmVtb3Zl
cyBnTWluaUJyb3dzZXIuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93aW4vQ29tbW9uLmNwcDog
UmVtb3ZlZCBnTWluaUJyb3dzZXIgZ2xvYmFsIHZhcmlhYmxlLgorICAgICAgICAqIE1pbmlCcm93
c2VyL3dpbi9Db21tb24uaDogRGl0dG8uCisgICAgICAgICogTWluaUJyb3dzZXIvd2luL01haW5X
aW5kb3cuY3BwOgorICAgICAgICAoTWFpbldpbmRvdzo6aW5pdCk6CisgICAgICAgIChNYWluV2lu
ZG93OjpXbmRQcm9jKToKKyAgICAgICAgKEVkaXRQcm9jKTogUG9zdCBXTV9DT01NQU5EIGlmIHRo
ZSBlbnRlciBrZXkgaXMgcHJlc3NlZCBpbiBVUkwgYmFyLgorICAgICAgICAoTWFpbldpbmRvdzo6
Y2FjaGVzRGlhbG9nUHJvYyk6IFJlbmFtZWQgZnJvbSBDYWNoZXMuCisgICAgICAgIChNYWluV2lu
ZG93OjpjdXN0b21Vc2VyQWdlbnREaWFsb2dQcm9jKTogUmVuYW1lZCBmcm9tIEN1c3RvbVVzZXJB
Z2VudC4KKyAgICAgICAgKE1haW5XaW5kb3c6Om9uVVJMQmFyRW50ZXIpOiBFeHRyYWN0ZWQgZnJv
bSBFZGl0UHJvYy4KKyAgICAgICAgKEJhY2tCdXR0b25Qcm9jKTogRGVsZXRlZC4KKyAgICAgICAg
KEZvcndhcmRCdXR0b25Qcm9jKTogRGVsZXRlZC4KKyAgICAgICAgKENhY2hlcyk6IFJlbmFtZWQg
dG8gTWFpbldpbmRvdzo6Y2FjaGVzRGlhbG9nUHJvYy4KKyAgICAgICAgKEN1c3RvbVVzZXJBZ2Vu
dCk6IFJlbmFtZWQgdG8gTWFpbldpbmRvdzo6Y3VzdG9tVXNlckFnZW50RGlhbG9nUHJvYy4KKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci93aW4vTWFpbldpbmRvdy5oOiBDb252ZXJ0IGhDYWNoZVduZCBn
bG9iYWwgdmFyaWFibGUgdG8gYSBtZW1iZXIgdmFyaWFibGUgb2YgTWFpbldpbmRvdy4KKyAgICAg
ICAgKiBNaW5pQnJvd3Nlci93aW4vTWluaUJyb3dzZXJMaWJSZXNvdXJjZS5oOgorICAgICAgICAq
IE1pbmlCcm93c2VyL3dpbi9XaW5NYWluLmNwcDoKKyAgICAgICAgKHdXaW5NYWluKToKKwogMjAx
OC0wNi0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29h
XSBVcGRhdGUgc29tZSBjb2RlIHRvIGJlIG1vcmUgQVJDLWNvbXBhdGlibGUgdG8gcHJlcGFyZSBm
b3IgZnV0dXJlIEFSQyBhZG9wdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2lu
L0NvbW1vbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29tbW9uLmNwcAppbmRleCBiMTFm
ZWZhMWQzNWM3NjEwMTFlNTE4MDNkZDUyNzYwMGVmZWUxMDQ1Li40YzI3ODI0YzVmOTcyOTI1ODlm
Y2I4MGJlOWM4YmQ4YjJhMGZiNGNlIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4v
Q29tbW9uLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29tbW9uLmNwcApAQCAtMzYs
NyArMzYsNiBAQAogLy8gR2xvYmFsIFZhcmlhYmxlczoKIEhJTlNUQU5DRSBoSW5zdDsKIE1haW5X
aW5kb3cqIGdNYWluV2luZG93ID0gbnVsbHB0cjsKLU1pbmlCcm93c2VyKiBnTWluaUJyb3dzZXIg
PSBudWxscHRyOwogCiAvLyBTdXBwb3J0IG1vdmluZyB0aGUgdHJhbnNwYXJlbnQgd2luZG93CiBQ
T0lOVCBzX3dpbmRvd1Bvc2l0aW9uID0geyAxMDAsIDEwMCB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
TWluaUJyb3dzZXIvd2luL0NvbW1vbi5oIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5o
CmluZGV4IGMwYzQ3OTY5NzJlMDExNDk4NjdhMGQ3YjUyNjg5NTEyZWQ5ZmE4NTAuLjY2NjNkMjU4
NmU1MDAyNGU1MjJjYjdmYTkzM2E4YTkzODY4ZjNiYjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlC
cm93c2VyL3dpbi9Db21tb24uaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93aW4vQ29tbW9uLmgK
QEAgLTM2LDYgKzM2LDUgQEAgdm9pZCBjcmVhdGVDcmFzaFJlcG9ydChFWENFUFRJT05fUE9JTlRF
UlMqKTsKIAogZXh0ZXJuIEhJTlNUQU5DRSBoSW5zdDsKIGV4dGVybiBNYWluV2luZG93KiBnTWFp
bldpbmRvdzsKLWV4dGVybiBNaW5pQnJvd3NlciogZ01pbmlCcm93c2VyOwogZXh0ZXJuIFBPSU5U
IHNfd2luZG93UG9zaXRpb247CiBleHRlcm4gU0laRSBzX3dpbmRvd1NpemU7CmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWFpbldpbmRvdy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nl
ci93aW4vTWFpbldpbmRvdy5jcHAKaW5kZXggMWY1ZjdhZDQ2MDZiMzMwZjZiZWU5MWM1NTgxMGJj
ZmQxZTIwYWFhNS4uODdhNDc3Y2Y0NGQ4YWU2NzY3NGU4MmRmMzQzYjc1N2QzODM1YjU0NyAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL01haW5XaW5kb3cuY3BwCisrKyBiL1Rvb2xz
L01pbmlCcm93c2VyL3dpbi9NYWluV2luZG93LmNwcApAQCAtMzYsMTcgKzM2LDEwIEBAIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yRm9yV2luZG93KEhXTkQpOwogCiBzdGF0aWMgY29uc3RleHByIGlu
dCBjb250cm9sQnV0dG9uV2lkdGggPSAyNDsKIAotc3RhdGljIEhXTkQgaENhY2hlV25kOwogc3Rh
dGljIFdORFBST0MgRGVmRWRpdFByb2MgPSBudWxscHRyOwotc3RhdGljIFdORFBST0MgRGVmQnV0
dG9uUHJvYyA9IG51bGxwdHI7CiAKIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIEVkaXRQcm9jKEhX
TkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKLXN0YXRpYyBMUkVTVUxUIENBTExCQUNLIEJhY2tC
dXR0b25Qcm9jKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKLXN0YXRpYyBMUkVTVUxUIENB
TExCQUNLIEZvcndhcmRCdXR0b25Qcm9jKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKLXN0
YXRpYyBMUkVTVUxUIENBTExCQUNLIFJlbG9hZEJ1dHRvblByb2MoSFdORCwgVUlOVCwgV1BBUkFN
LCBMUEFSQU0pOwogc3RhdGljIElOVF9QVFIgQ0FMTEJBQ0sgQWJvdXQoSFdORCwgVUlOVCwgV1BB
UkFNLCBMUEFSQU0pOwotc3RhdGljIElOVF9QVFIgQ0FMTEJBQ0sgQ3VzdG9tVXNlckFnZW50KEhX
TkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKLXN0YXRpYyBJTlRfUFRSIENBTExCQUNLIENhY2hl
cyhIV05ELCBVSU5ULCBXUEFSQU0sIExQQVJBTSk7CiAKIHN0ZDo6d3N0cmluZyBNYWluV2luZG93
OjpzX3dpbmRvd0NsYXNzOwogCkBAIC05MSwyMSArODQsMTggQEAgYm9vbCBNYWluV2luZG93Ojpp
bml0KEhJTlNUQU5DRSBoSW5zdGFuY2UsIGJvb2wgdXNlc0xheWVyZWRXZWJWaWV3LCBib29sIHBh
Z2VMb2EKICAgICBhdXRvIHRpdGxlID0gbG9hZFN0cmluZyhJRFNfQVBQX1RJVExFKTsKIAogICAg
IG1faE1haW5XbmQgPSBDcmVhdGVXaW5kb3coc193aW5kb3dDbGFzcy5jX3N0cigpLCB0aXRsZS5j
X3N0cigpLCBXU19PVkVSTEFQUEVEV0lORE9XLAotICAgICAgICBDV19VU0VERUZBVUxULCAwLCBD
V19VU0VERUZBVUxULCAwLCAwLCAwLCBoSW5zdGFuY2UsIDApOworICAgICAgICBDV19VU0VERUZB
VUxULCAwLCBDV19VU0VERUZBVUxULCAwLCAwLCAwLCBoSW5zdGFuY2UsIHRoaXMpOwogCiAgICAg
aWYgKCFtX2hNYWluV25kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmbG9hdCBzY2Fs
ZUZhY3RvciA9IFdlYkNvcmU6OmRldmljZVNjYWxlRmFjdG9yRm9yV2luZG93KG51bGxwdHIpOwot
ICAgIG1faEJhY2tCdXR0b25XbmQgPSBDcmVhdGVXaW5kb3coTCJCVVRUT04iLCBMIjwiLCBXU19D
SElMRCB8IFdTX1ZJU0lCTEUgIHwgQlNfVEVYVCwgMCwgMCwgMCwgMCwgbV9oTWFpblduZCwgMCwg
aEluc3RhbmNlLCAwKTsKLSAgICBtX2hGb3J3YXJkQnV0dG9uV25kID0gQ3JlYXRlV2luZG93KEwi
QlVUVE9OIiwgTCI+IiwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgQlNfVEVYVCwgc2NhbGVGYWN0
b3IgKiBjb250cm9sQnV0dG9uV2lkdGgsIDAsIDAsIDAsIG1faE1haW5XbmQsIDAsIGhJbnN0YW5j
ZSwgMCk7CisgICAgbV9oQmFja0J1dHRvblduZCA9IENyZWF0ZVdpbmRvdyhMIkJVVFRPTiIsIEwi
PCIsIFdTX0NISUxEIHwgV1NfVklTSUJMRSAgfCBCU19URVhULCAwLCAwLCAwLCAwLCBtX2hNYWlu
V25kLCByZWludGVycHJldF9jYXN0PEhNRU5VPihJRE1fSElTVE9SWV9CQUNLV0FSRCksIGhJbnN0
YW5jZSwgMCk7CisgICAgbV9oRm9yd2FyZEJ1dHRvblduZCA9IENyZWF0ZVdpbmRvdyhMIkJVVFRP
TiIsIEwiPiIsIFdTX0NISUxEIHwgV1NfVklTSUJMRSB8IEJTX1RFWFQsIHNjYWxlRmFjdG9yICog
Y29udHJvbEJ1dHRvbldpZHRoLCAwLCAwLCAwLCBtX2hNYWluV25kLCByZWludGVycHJldF9jYXN0
PEhNRU5VPihJRE1fSElTVE9SWV9GT1JXQVJEKSwgaEluc3RhbmNlLCAwKTsKICAgICBtX2hVUkxC
YXJXbmQgPSBDcmVhdGVXaW5kb3coTCJFRElUIiwgMCwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwg
V1NfQk9SREVSIHwgRVNfTEVGVCB8IEVTX0FVVE9WU0NST0xMLCBzY2FsZUZhY3RvciAqIGNvbnRy
b2xCdXR0b25XaWR0aCAqIDIsIDAsIDAsIDAsIG1faE1haW5XbmQsIDAsIGhJbnN0YW5jZSwgMCk7
CiAKICAgICBEZWZFZGl0UHJvYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8V05EUFJPQz4oR2V0V2luZG93
TG9uZ1B0cihtX2hVUkxCYXJXbmQsIEdXTFBfV05EUFJPQykpOwotICAgIERlZkJ1dHRvblByb2Mg
PSByZWludGVycHJldF9jYXN0PFdORFBST0M+KEdldFdpbmRvd0xvbmdQdHIobV9oQmFja0J1dHRv
blduZCwgR1dMUF9XTkRQUk9DKSk7CiAgICAgU2V0V2luZG93TG9uZ1B0cihtX2hVUkxCYXJXbmQs
IEdXTFBfV05EUFJPQywgcmVpbnRlcnByZXRfY2FzdDxMT05HX1BUUj4oRWRpdFByb2MpKTsKLSAg
ICBTZXRXaW5kb3dMb25nUHRyKG1faEJhY2tCdXR0b25XbmQsIEdXTFBfV05EUFJPQywgcmVpbnRl
cnByZXRfY2FzdDxMT05HX1BUUj4oQmFja0J1dHRvblByb2MpKTsKLSAgICBTZXRXaW5kb3dMb25n
UHRyKG1faEZvcndhcmRCdXR0b25XbmQsIEdXTFBfV05EUFJPQywgcmVpbnRlcnByZXRfY2FzdDxM
T05HX1BUUj4oRm9yd2FyZEJ1dHRvblByb2MpKTsKIAogICAgIG1fYnJvd3NlcldpbmRvdyA9IHN0
ZDo6bWFrZV91bmlxdWU8TWluaUJyb3dzZXI+KG1faE1haW5XbmQsIG1faFVSTEJhclduZCwgdXNl
c0xheWVyZWRXZWJWaWV3LCBwYWdlTG9hZFRlc3RpbmcpOwogICAgIGlmICghbV9icm93c2VyV2lu
ZG93KQpAQCAtMTQzLDE3ICsxMzMsMzAgQEAgdm9pZCBNYWluV2luZG93OjpyZXNpemVTdWJWaWV3
cygpCiAKIExSRVNVTFQgQ0FMTEJBQ0sgTWFpbldpbmRvdzo6V25kUHJvYyhIV05EIGhXbmQsIFVJ
TlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsKKyAgICBNYWluV2lu
ZG93JiB0aGl6ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8TWFpbldpbmRvdyo+KEdldFdpbmRvd0xvbmdQ
dHIoaFduZCwgR1dMUF9VU0VSREFUQSkpOwogICAgIHN3aXRjaCAobWVzc2FnZSkgeworICAgIGNh
c2UgV01fQ1JFQVRFOgorICAgICAgICBTZXRXaW5kb3dMb25nUHRyKGhXbmQsIEdXTFBfVVNFUkRB
VEEsIHJlaW50ZXJwcmV0X2Nhc3Q8TE9OR19QVFI+KHJlaW50ZXJwcmV0X2Nhc3Q8TFBDUkVBVEVT
VFJVQ1Q+KGxQYXJhbSktPmxwQ3JlYXRlUGFyYW1zKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgV01fQ09NTUFORDogewogICAgICAgICBpbnQgd21JZCA9IExPV09SRCh3UGFyYW0pOwogICAg
ICAgICBpbnQgd21FdmVudCA9IEhJV09SRCh3UGFyYW0pOworICAgICAgICBzd2l0Y2ggKHdtRXZl
bnQpIHsKKyAgICAgICAgY2FzZSAwOiAvLyBNZW51IG9yIEJOX0NMSUNLRUQKKyAgICAgICAgY2Fz
ZSAxOiAvLyBBY2NlbGVyYXRvcgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gRGVmV2luZG93UHJvYyhoV25kLCBtZXNzYWdlLCB3UGFyYW0s
IGxQYXJhbSk7CisgICAgICAgIH0KICAgICAgICAgaWYgKHdtSWQgPj0gSURNX0hJU1RPUllfTElO
SzAgJiYgd21JZCA8PSBJRE1fSElTVE9SWV9MSU5LOSkgewotICAgICAgICAgICAgaWYgKGdNaW5p
QnJvd3NlcikKLSAgICAgICAgICAgICAgICBnTWluaUJyb3dzZXItPm5hdmlnYXRlVG9IaXN0b3J5
KGhXbmQsIHdtSWQpOworICAgICAgICAgICAgdGhpei5icm93c2VyV2luZG93KCktPm5hdmlnYXRl
VG9IaXN0b3J5KGhXbmQsIHdtSWQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgLy8gUGFyc2UgdGhlIG1lbnUgc2VsZWN0aW9uczoKICAgICAgICAgc3dpdGNoICh3bUlk
KSB7CisgICAgICAgIGNhc2UgSURDX1VSTF9CQVI6CisgICAgICAgICAgICB0aGl6Lm9uVVJMQmFy
RW50ZXIoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIElETV9BQk9VVDoKICAg
ICAgICAgICAgIERpYWxvZ0JveChoSW5zdCwgTUFLRUlOVFJFU09VUkNFKElERF9BQk9VVEJPWCks
IGhXbmQsIEFib3V0KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTYxLDQ3ICsxNjQsMzggQEAg
TFJFU1VMVCBDQUxMQkFDSyBNYWluV2luZG93OjpXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNz
YWdlLCBXUEFSQU0gd1BhcmFtLCBMUEEKICAgICAgICAgICAgIERlc3Ryb3lXaW5kb3coaFduZCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJRE1fUFJJTlQ6Ci0gICAgICAgICAg
ICBnTWluaUJyb3dzZXItPnByaW50KCk7CisgICAgICAgICAgICB0aGl6LmJyb3dzZXJXaW5kb3co
KS0+cHJpbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIElETV9XRUJfSU5T
UEVDVE9SOgotICAgICAgICAgICAgaWYgKGdNaW5pQnJvd3NlcikKLSAgICAgICAgICAgICAgICBn
TWluaUJyb3dzZXItPmxhdW5jaEluc3BlY3RvcigpOworICAgICAgICAgICAgdGhpei5icm93c2Vy
V2luZG93KCktPmxhdW5jaEluc3BlY3RvcigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgSURNX0NBQ0hFUzoKLSAgICAgICAgICAgIGlmICghOjpJc1dpbmRvdyhoQ2FjaGVXbmQp
KSB7Ci0gICAgICAgICAgICAgICAgaENhY2hlV25kID0gQ3JlYXRlRGlhbG9nKGhJbnN0LCBNQUtF
SU5UUkVTT1VSQ0UoSUREX0NBQ0hFUyksIGhXbmQsIENhY2hlcyk7Ci0gICAgICAgICAgICAgICAg
OjpTaG93V2luZG93KGhDYWNoZVduZCwgU1dfU0hPVyk7CisgICAgICAgICAgICBpZiAoITo6SXNX
aW5kb3codGhpei5tX2hDYWNoZVduZCkpIHsKKyAgICAgICAgICAgICAgICB0aGl6Lm1faENhY2hl
V25kID0gQ3JlYXRlRGlhbG9nUGFyYW0oaEluc3QsIE1BS0VJTlRSRVNPVVJDRShJRERfQ0FDSEVT
KSwgaFduZCwgY2FjaGVzRGlhbG9nUHJvYywgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KCZ0aGl6
KSk7CisgICAgICAgICAgICAgICAgOjpTaG93V2luZG93KHRoaXoubV9oQ2FjaGVXbmQsIFNXX1NI
T1cpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSURN
X0hJU1RPUllfQkFDS1dBUkQ6CiAgICAgICAgIGNhc2UgSURNX0hJU1RPUllfRk9SV0FSRDoKLSAg
ICAgICAgICAgIGlmIChnTWluaUJyb3dzZXIpCi0gICAgICAgICAgICAgICAgZ01pbmlCcm93c2Vy
LT5uYXZpZ2F0ZUZvcndhcmRPckJhY2t3YXJkKGhXbmQsIHdtSWQpOworICAgICAgICAgICAgdGhp
ei5icm93c2VyV2luZG93KCktPm5hdmlnYXRlRm9yd2FyZE9yQmFja3dhcmQoaFduZCwgd21JZCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJRE1fVUFfT1RIRVI6Ci0gICAgICAg
ICAgICBpZiAod21FdmVudCkKLSAgICAgICAgICAgICAgICBnTWFpbldpbmRvdy0+dG9nZ2xlTWVu
dUl0ZW0od21JZCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgRGlhbG9nQm94
KGhJbnN0LCBNQUtFSU5UUkVTT1VSQ0UoSUREX1VTRVJfQUdFTlQpLCBoV25kLCBDdXN0b21Vc2Vy
QWdlbnQpOworICAgICAgICAgICAgRGlhbG9nQm94UGFyYW0oaEluc3QsIE1BS0VJTlRSRVNPVVJD
RShJRERfVVNFUl9BR0VOVCksIGhXbmQsIGN1c3RvbVVzZXJBZ2VudERpYWxvZ1Byb2MsIHJlaW50
ZXJwcmV0X2Nhc3Q8TFBBUkFNPigmdGhpeikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgSURNX0FDVFVBTF9TSVpFOgotICAgICAgICAgICAgaWYgKGdNaW5pQnJvd3NlcikKLSAg
ICAgICAgICAgICAgICBnTWluaUJyb3dzZXItPnJlc2V0Wm9vbSgpOworICAgICAgICAgICAgdGhp
ei5icm93c2VyV2luZG93KCktPnJlc2V0Wm9vbSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgSURNX1pPT01fSU46Ci0gICAgICAgICAgICBpZiAoZ01pbmlCcm93c2VyKQotICAg
ICAgICAgICAgICAgIGdNaW5pQnJvd3Nlci0+em9vbUluKCk7CisgICAgICAgICAgICB0aGl6LmJy
b3dzZXJXaW5kb3coKS0+em9vbUluKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBJRE1fWk9PTV9PVVQ6Ci0gICAgICAgICAgICBpZiAoZ01pbmlCcm93c2VyKQotICAgICAgICAg
ICAgICAgIGdNaW5pQnJvd3Nlci0+em9vbU91dCgpOworICAgICAgICAgICAgdGhpei5icm93c2Vy
V2luZG93KCktPnpvb21PdXQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIElE
TV9TSE9XX0xBWUVSX1RSRUU6Ci0gICAgICAgICAgICBpZiAoZ01pbmlCcm93c2VyKQotICAgICAg
ICAgICAgICAgIGdNaW5pQnJvd3Nlci0+c2hvd0xheWVyVHJlZSgpOworICAgICAgICAgICAgdGhp
ei5icm93c2VyV2luZG93KCktPnNob3dMYXllclRyZWUoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKCFnTWFpbldpbmRvdy0+dG9nZ2xlTWVu
dUl0ZW0od21JZCkpCisgICAgICAgICAgICBpZiAoIXRoaXoudG9nZ2xlTWVudUl0ZW0od21JZCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIERlZldpbmRvd1Byb2MoaFduZCwgbWVzc2FnZSwgd1Bh
cmFtLCBsUGFyYW0pOwogICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIxMywxNCArMjA3LDEwIEBA
IExSRVNVTFQgQ0FMTEJBQ0sgTWFpbldpbmRvdzo6V25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVz
c2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBCiAgICAgICAgIFBvc3RRdWl0TWVzc2FnZSgwKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBXTV9TSVpFOgotICAgICAgICBpZiAoIWdNaW5pQnJvd3Nl
ciB8fCAhZ01pbmlCcm93c2VyLT5oYXNXZWJWaWV3KCkpCi0gICAgICAgICAgICByZXR1cm4gRGVm
V2luZG93UHJvYyhoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7Ci0KLSAgICAgICAgZ01h
aW5XaW5kb3ctPnJlc2l6ZVN1YlZpZXdzKCk7CisgICAgICAgIHRoaXoucmVzaXplU3ViVmlld3Mo
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXTV9EUElDSEFOR0VEOgotICAgICAgICBpZiAo
Z01pbmlCcm93c2VyKQotICAgICAgICAgICAgZ01pbmlCcm93c2VyLT51cGRhdGVEZXZpY2VTY2Fs
ZUZhY3RvcigpOworICAgICAgICB0aGl6LmJyb3dzZXJXaW5kb3coKS0+dXBkYXRlRGV2aWNlU2Nh
bGVGYWN0b3IoKTsKICAgICAgICAgcmV0dXJuIERlZldpbmRvd1Byb2MoaFduZCwgbWVzc2FnZSwg
d1BhcmFtLCBsUGFyYW0pOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBEZWZXaW5kb3dQ
cm9jKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKQEAgLTI5OCwxNCArMjg4LDcgQEAg
TFJFU1VMVCBDQUxMQkFDSyBFZGl0UHJvYyhIV05EIGhEbGcsIFVJTlQgbWVzc2FnZSwgV1BBUkFN
IHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICBjYXNlIFdNX0NIQVI6CiAgICAgICAgIGlmICh3
UGFyYW0gPT0gMTMpIHsKICAgICAgICAgICAgIC8vIEVudGVyIEtleQotICAgICAgICAgICAgd2No
YXJfdCBzdHJQdHJbSU5URVJORVRfTUFYX1VSTF9MRU5HVEhdOwotICAgICAgICAgICAgKigoTFBX
T1JEKXN0clB0cikgPSBJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSDsKLSAgICAgICAgICAgIGludCBz
dHJMZW4gPSBTZW5kTWVzc2FnZShoRGxnLCBFTV9HRVRMSU5FLCAwLCAoTFBBUkFNKXN0clB0cik7
Ci0KLSAgICAgICAgICAgIHN0clB0cltzdHJMZW5dID0gMDsKLSAgICAgICAgICAgIF9ic3RyX3Qg
YnN0cihzdHJQdHIpOwotICAgICAgICAgICAgZ01haW5XaW5kb3ctPmxvYWRVUkwoYnN0ci5HZXRC
U1RSKCkpOwotCisgICAgICAgICAgICA6OlBvc3RNZXNzYWdlKEdldFBhcmVudChoRGxnKSwgc3Rh
dGljX2Nhc3Q8VUlOVD4oV01fQ09NTUFORCksIE1BS0VMUEFSQU0oSURDX1VSTF9CQVIsIDApLCAw
KTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgZGVmYXVsdDoKQEAgLTMx
MywyNiArMjk2LDYgQEAgTFJFU1VMVCBDQUxMQkFDSyBFZGl0UHJvYyhIV05EIGhEbGcsIFVJTlQg
bWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICB9CiB9CiAKLUxSRVNV
TFQgQ0FMTEJBQ0sgQmFja0J1dHRvblByb2MoSFdORCBoRGxnLCBVSU5UIG1lc3NhZ2UsIFdQQVJB
TSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCi17Ci0gICAgc3dpdGNoIChtZXNzYWdlKSB7Ci0gICAg
Y2FzZSBXTV9MQlVUVE9OVVA6Ci0gICAgICAgIGdNaW5pQnJvd3Nlci0+Z29CYWNrKCk7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIENhbGxXaW5kb3dQcm9jKERlZkJ1dHRvblByb2MsIGhE
bGcsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKLSAgICB9Ci19Ci0KLUxSRVNVTFQgQ0FMTEJB
Q0sgRm9yd2FyZEJ1dHRvblByb2MoSFdORCBoRGxnLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFy
YW0sIExQQVJBTSBsUGFyYW0pCi17Ci0gICAgc3dpdGNoIChtZXNzYWdlKSB7Ci0gICAgY2FzZSBX
TV9MQlVUVE9OVVA6Ci0gICAgICAgIGdNaW5pQnJvd3Nlci0+Z29Gb3J3YXJkKCk7Ci0gICAgZGVm
YXVsdDoKLSAgICAgICAgcmV0dXJuIENhbGxXaW5kb3dQcm9jKERlZkJ1dHRvblByb2MsIGhEbGcs
IG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKLSAgICB9Ci19Ci0KIC8vIE1lc3NhZ2UgaGFuZGxl
ciBmb3IgYWJvdXQgYm94LgogSU5UX1BUUiBDQUxMQkFDSyBBYm91dChIV05EIGhEbGcsIFVJTlQg
bWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsKQEAgLTM1MSwxMSArMzE0
LDEyIEBAIElOVF9QVFIgQ0FMTEJBQ0sgQWJvdXQoSFdORCBoRGxnLCBVSU5UIG1lc3NhZ2UsIFdQ
QVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAgICAgcmV0dXJuIChJTlRfUFRSKUZBTFNFOwog
fQogCi1JTlRfUFRSIENBTExCQUNLIENhY2hlcyhIV05EIGhEbGcsIFVJTlQgbWVzc2FnZSwgV1BB
UkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKK0lOVF9QVFIgQ0FMTEJBQ0sgTWFpbldpbmRvdzo6
Y2FjaGVzRGlhbG9nUHJvYyhIV05EIGhEbGcsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwg
TFBBUkFNIGxQYXJhbSkKIHsKLSAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKGxQYXJhbSk7Cisg
ICAgTWFpbldpbmRvdyYgdGhpeiA9ICpyZWludGVycHJldF9jYXN0PE1haW5XaW5kb3cqPihHZXRX
aW5kb3dMb25nUHRyKGhEbGcsIERXTFBfVVNFUikpOwogICAgIHN3aXRjaCAobWVzc2FnZSkgewog
ICAgIGNhc2UgV01fSU5JVERJQUxPRzoKKyAgICAgICAgU2V0V2luZG93TG9uZ1B0cihoRGxnLCBE
V0xQX1VTRVIsIGxQYXJhbSk7CiAgICAgICAgIDo6U2V0VGltZXIoaERsZywgSURUX1VQREFURV9T
VEFUUywgMTAwMCwgbnVsbHB0cik7CiAgICAgICAgIHJldHVybiAoSU5UX1BUUilUUlVFOwogCkBA
IC0zNjMsNyArMzI3LDcgQEAgSU5UX1BUUiBDQUxMQkFDSyBDYWNoZXMoSFdORCBoRGxnLCBVSU5U
IG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAgICAgICAgIGlmIChMT1dP
UkQod1BhcmFtKSA9PSBJRE9LIHx8IExPV09SRCh3UGFyYW0pID09IElEQ0FOQ0VMKSB7CiAgICAg
ICAgICAgICA6OktpbGxUaW1lcihoRGxnLCBJRFRfVVBEQVRFX1NUQVRTKTsKICAgICAgICAgICAg
IDo6RGVzdHJveVdpbmRvdyhoRGxnKTsKLSAgICAgICAgICAgIGhDYWNoZVduZCA9IDA7CisgICAg
ICAgICAgICB0aGl6Lm1faENhY2hlV25kID0gMDsKICAgICAgICAgICAgIHJldHVybiAoSU5UX1BU
UilUUlVFOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMzczLDIyICszMzcsMjMgQEAg
SU5UX1BUUiBDQUxMQkFDSyBDYWNoZXMoSFdORCBoRGxnLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3
UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAgICAgICAgIHJldHVybiAoSU5UX1BUUilUUlVFOwogCiAg
ICAgY2FzZSBXTV9QQUlOVDoKLSAgICAgICAgZ01pbmlCcm93c2VyLT51cGRhdGVTdGF0aXN0aWNz
KGhEbGcpOworICAgICAgICB0aGl6LmJyb3dzZXJXaW5kb3coKS0+dXBkYXRlU3RhdGlzdGljcyho
RGxnKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIChJTlRfUFRSKUZBTFNF
OwogfQogCi1JTlRfUFRSIENBTExCQUNLIEN1c3RvbVVzZXJBZ2VudChIV05EIGhEbGcsIFVJTlQg
bWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKK0lOVF9QVFIgQ0FMTEJBQ0sg
TWFpbldpbmRvdzo6Y3VzdG9tVXNlckFnZW50RGlhbG9nUHJvYyhIV05EIGhEbGcsIFVJTlQgbWVz
c2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsKLSAgICBVTlJFRkVSRU5DRURf
UEFSQU1FVEVSKGxQYXJhbSk7CisgICAgTWFpbldpbmRvdyYgdGhpeiA9ICpyZWludGVycHJldF9j
YXN0PE1haW5XaW5kb3cqPihHZXRXaW5kb3dMb25nUHRyKGhEbGcsIERXTFBfVVNFUikpOwogICAg
IHN3aXRjaCAobWVzc2FnZSkgewogICAgIGNhc2UgV01fSU5JVERJQUxPRzogeworICAgICAgICBN
YWluV2luZG93JiB0aGl6ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8TWFpbldpbmRvdyo+KGxQYXJhbSk7
CisgICAgICAgIFNldFdpbmRvd0xvbmdQdHIoaERsZywgRFdMUF9VU0VSLCBsUGFyYW0pOwogICAg
ICAgICBIV05EIGVkaXQgPSA6OkdldERsZ0l0ZW0oaERsZywgSURDX1VTRVJfQUdFTlRfSU5QVVQp
OwogICAgICAgICBfYnN0cl90IHVzZXJBZ2VudDsKLSAgICAgICAgaWYgKGdNaW5pQnJvd3NlcikK
LSAgICAgICAgICAgIHVzZXJBZ2VudCA9IGdNaW5pQnJvd3Nlci0+dXNlckFnZW50KCk7CisgICAg
ICAgIHVzZXJBZ2VudCA9IHRoaXouYnJvd3NlcldpbmRvdygpLT51c2VyQWdlbnQoKTsKIAogICAg
ICAgICA6OlNldFdpbmRvd1RleHQoZWRpdCwgc3RhdGljX2Nhc3Q8TFBDVFNUUj4odXNlckFnZW50
KSk7CiAgICAgICAgIHJldHVybiAoSU5UX1BUUilUUlVFOwpAQCAtNDA0LDggKzM2OSw4IEBAIElO
VF9QVFIgQ0FMTEJBQ0sgQ3VzdG9tVXNlckFnZW50KEhXTkQgaERsZywgVUlOVCBtZXNzYWdlLCBX
UEFSQU0gd1BhcmFtLCBMUEFSQU0KIAogICAgICAgICAgICAgX2JzdHJfdCBic3RyKGJ1ZmZlcik7
CiAgICAgICAgICAgICBpZiAoYnN0ci5sZW5ndGgoKSkgewotICAgICAgICAgICAgICAgIGdNaW5p
QnJvd3Nlci0+c2V0VXNlckFnZW50KGJzdHIpOwotICAgICAgICAgICAgICAgIDo6UG9zdE1lc3Nh
Z2UoZ01haW5XaW5kb3ctPmh3bmQoKSwgc3RhdGljX2Nhc3Q8VUlOVD4oV01fQ09NTUFORCksIE1B
S0VMUEFSQU0oSURNX1VBX09USEVSLCAxKSwgMCk7CisgICAgICAgICAgICAgICAgdGhpei5icm93
c2VyV2luZG93KCktPnNldFVzZXJBZ2VudChic3RyKTsKKyAgICAgICAgICAgICAgICB0aGl6LnRv
Z2dsZU1lbnVJdGVtKElETV9VQV9PVEhFUik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApA
QCAtNDc1LDMgKzQ0MCwxMiBAQCB2b2lkIE1haW5XaW5kb3c6OmxvYWRVUkwoQlNUUiB1cmwpCiAK
ICAgICBTZXRGb2N1cyhtX2Jyb3dzZXJXaW5kb3ctPmh3bmQoKSk7CiB9CisKK3ZvaWQgTWFpbldp
bmRvdzo6b25VUkxCYXJFbnRlcigpCit7CisgICAgd2NoYXJfdCBzdHJQdHJbSU5URVJORVRfTUFY
X1VSTF9MRU5HVEhdOworICAgIEdldFdpbmRvd1RleHQobV9oVVJMQmFyV25kLCBzdHJQdHIsIElO
VEVSTkVUX01BWF9VUkxfTEVOR1RIKTsKKyAgICBzdHJQdHJbSU5URVJORVRfTUFYX1VSTF9MRU5H
VEggLSAxXSA9IDA7CisgICAgX2JzdHJfdCBic3RyKHN0clB0cik7CisgICAgbG9hZFVSTChic3Ry
LkdldEJTVFIoKSk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWFpbldp
bmRvdy5oIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL01haW5XaW5kb3cuaAppbmRleCAyOTAwYmQy
ODUyNDQzZDM4MDcwYTQ2Mzc4N2E1YWEwNmFiYWY5NTJkLi4xYzg4ZWRlZDM4NDg1Y2ZkYWQwZDgw
ZDUwNDlhMDQ2MTIzNWZmOWYwIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vTWFp
bldpbmRvdy5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NYWluV2luZG93LmgKQEAgLTQz
LDE0ICs0MywxOCBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBMUkVTVUxU
IENBTExCQUNLIFduZFByb2MoSFdORCwgVUlOVCwgV1BBUkFNLCBMUEFSQU0pOworICAgIHN0YXRp
YyBJTlRfUFRSIENBTExCQUNLIGN1c3RvbVVzZXJBZ2VudERpYWxvZ1Byb2MoSFdORCwgVUlOVCwg
V1BBUkFNLCBMUEFSQU0pOworICAgIHN0YXRpYyBJTlRfUFRSIENBTExCQUNLIGNhY2hlc0RpYWxv
Z1Byb2MoSFdORCwgVUlOVCwgV1BBUkFNLCBMUEFSQU0pOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyQ2xhc3MoSElOU1RBTkNFIGhJbnN0YW5jZSk7CiAgICAgc3RhdGljIHN0ZDo6d3N0cmluZyBz
X3dpbmRvd0NsYXNzOwogCiAgICAgYm9vbCB0b2dnbGVNZW51SXRlbShVSU5UIG1lbnVJRCk7Cisg
ICAgdm9pZCBvblVSTEJhckVudGVyKCk7CiAKICAgICBIV05EIG1faE1haW5XbmQgeyBudWxscHRy
IH07CiAgICAgSFdORCBtX2hVUkxCYXJXbmQgeyBudWxscHRyIH07CiAgICAgSFdORCBtX2hCYWNr
QnV0dG9uV25kIHsgbnVsbHB0ciB9OwogICAgIEhXTkQgbV9oRm9yd2FyZEJ1dHRvblduZCB7IG51
bGxwdHIgfTsKKyAgICBIV05EIG1faENhY2hlV25kIHsgbnVsbHB0ciB9OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxNaW5pQnJvd3Nlcj4gbV9icm93c2VyV2luZG93OwogfTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3NlckxpYlJlc291cmNlLmggYi9Ub29scy9NaW5p
QnJvd3Nlci93aW4vTWluaUJyb3dzZXJMaWJSZXNvdXJjZS5oCmluZGV4IDdhZmNhNzgwMDYyZjE2
NjkwM2JhNjE3OWVlMjRlNDQ4MWQ3ZjFkMjMuLjBiZGEwNmFlNTQ5YjE3MzAwODBkYzYxYjAyNTY0
MzU0NzcwZGM5MGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3Nl
ckxpYlJlc291cmNlLmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL01pbmlCcm93c2VyTGli
UmVzb3VyY2UuaApAQCAtMTA5LDYgKzEwOSw3IEBACiAjZGVmaW5lIElEQ19VU0VSX0FHRU5UX0lO
UFVUICAgICAgICAgICAgMTA1MgogI2RlZmluZSBJRENfQVVUSF9VU0VSICAgICAgICAgICAgICAg
ICAgIDEwNTMKICNkZWZpbmUgSURDX0FVVEhfUEFTU1dPUkQgICAgICAgICAgICAgICAxMDU0Cisj
ZGVmaW5lIElEQ19VUkxfQkFSICAgICAgICAgICAgICAgICAgICAgMTA1NQogI2RlZmluZSBJRENf
U1RBVElDICAgICAgICAgICAgICAgICAgICAgIC0xCiAKIC8vIE5leHQgZGVmYXVsdCB2YWx1ZXMg
Zm9yIG5ldyBvYmplY3RzCkBAIC0xMTgsNyArMTE5LDcgQEAKICNkZWZpbmUgX0FQU19OT19NRkMg
ICAgICAgICAgICAgICAgICAgICAxCiAjZGVmaW5lIF9BUFNfTkVYVF9SRVNPVVJDRV9WQUxVRSAg
ICAgICAgMTc1CiAjZGVmaW5lIF9BUFNfTkVYVF9DT01NQU5EX1ZBTFVFICAgICAgICAgMzI3NzYK
LSNkZWZpbmUgX0FQU19ORVhUX0NPTlRST0xfVkFMVUUgICAgICAgICAxMDU0CisjZGVmaW5lIF9B
UFNfTkVYVF9DT05UUk9MX1ZBTFVFICAgICAgICAgMTA1NQogI2RlZmluZSBfQVBTX05FWFRfU1lN
RURfVkFMVUUgICAgICAgICAgIDExMAogI2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xz
L01pbmlCcm93c2VyL3dpbi9XaW5NYWluLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XaW5N
YWluLmNwcAppbmRleCBlOGI1OGQyZDRlNmFkNDljNzgxYzEwNTY2ZjM3OTFhMTY5YzgzNmIxLi5m
YjkzYTViM2M4MDRhNTQxMzY0NzkzMWJiMDM0ZWNiZDk5N2I5OTZlIDEwMDY0NAotLS0gYS9Ub29s
cy9NaW5pQnJvd3Nlci93aW4vV2luTWFpbi5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2lu
L1dpbk1haW4uY3BwCkBAIC03MCw3ICs3MCw2IEBAIGludCBXSU5BUEkgd1dpbk1haW4oX0luXyBI
SU5TVEFOQ0UgaEluc3RhbmNlLCBfSW5fb3B0XyBISU5TVEFOQ0UgaFByZXZJbnN0YW5jZSwKICAg
ICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgZ290byBleGl0OwogCi0gICAgZ01pbmlCcm93c2Vy
ID0gZ01haW5XaW5kb3ctPmJyb3dzZXJXaW5kb3coKTsKICAgICBTaG93V2luZG93KGdNYWluV2lu
ZG93LT5od25kKCksIG5DbWRTaG93KTsKIAogICAgIGhBY2NlbFRhYmxlID0gTG9hZEFjY2VsZXJh
dG9ycyhoSW5zdCwgTUFLRUlOVFJFU09VUkNFKElEQ19NSU5JQlJPV1NFUikpOwpAQCAtNzgsNyAr
NzcsNyBAQCBpbnQgV0lOQVBJIHdXaW5NYWluKF9Jbl8gSElOU1RBTkNFIGhJbnN0YW5jZSwgX0lu
X29wdF8gSElOU1RBTkNFIGhQcmV2SW5zdGFuY2UsCiAgICAgaWYgKHJlcXVlc3RlZFVSTC5sZW5n
dGgoKSkKICAgICAgICAgZ01haW5XaW5kb3ctPmxvYWRVUkwocmVxdWVzdGVkVVJMLkdldEJTVFIo
KSk7CiAgICAgZWxzZQotICAgICAgICBnTWluaUJyb3dzZXItPmxvYWRIVE1MU3RyaW5nKF9ic3Ry
X3QoZGVmYXVsdEhUTUwpLkdldEJTVFIoKSk7CisgICAgICAgIGdNYWluV2luZG93LT5icm93c2Vy
V2luZG93KCktPmxvYWRIVE1MU3RyaW5nKF9ic3RyX3QoZGVmYXVsdEhUTUwpLkdldEJTVFIoKSk7
CiAKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ1MDkpCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>