<?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>184962</bug_id>
          
          <creation_ts>2018-04-25 02:09:54 -0700</creation_ts>
          <short_desc>PSON: Don&apos;t create a new process when navigating to a blob URL, data URL, and about:blank</short_desc>
          <delta_ts>2018-04-25 16:17:33 -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>WebKit2</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1417473</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-25 02:09:54 -0700</bug_when>
    <thetext>Don&apos;t create a new WebContent process when navigating to a blob object URL
if the source document has access to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417474</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-25 02:10:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/39715044&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417477</commentid>
    <comment_count>2</comment_count>
      <attachid>338716</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-25 02:21:36 -0700</bug_when>
    <thetext>Created attachment 338716
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417478</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-25 02:22:54 -0700</bug_when>
    <thetext>Attachment 338716 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:1057:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:1063:  Missing spaces around /  [whitespace/operators] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:1066:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 3 in 12 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>1417585</commentid>
    <comment_count>4</comment_count>
      <attachid>338716</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-04-25 09:44:30 -0700</bug_when>
    <thetext>Comment on attachment 338716
Fixes the bug

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

&gt; Source/WebCore/loader/NavigationAction.cpp:60
&gt; +    , m_isSameOriginBlobNavigation { isSameOriginBlogNavigation(source, resourceRequest.url()) }

Should we have the same strategy with data URLs for performance reasons?
Should we add a m_isConsideredAsSameOriginNavigation boolean flag taking care of all these cases (blob URLs, data URLs, about:blank, same origin URLs, file URLs...) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417637</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-25 11:15:16 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #4)
&gt; Comment on attachment 338716 [details]
&gt; Fixes the bug
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=338716&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/NavigationAction.cpp:60
&gt; &gt; +    , m_isSameOriginBlobNavigation { isSameOriginBlogNavigation(source, resourceRequest.url()) }
&gt; 
&gt; Should we have the same strategy with data URLs for performance reasons?
&gt; Should we add a m_isConsideredAsSameOriginNavigation boolean flag taking
&gt; care of all these cases (blob URLs, data URLs, about:blank, same origin
&gt; URLs, file URLs...) ?

That probably makes sense. Maybe m_shouldTreatAsSameOriginNavigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417668</commentid>
    <comment_count>6</comment_count>
      <attachid>338766</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-25 11:58:35 -0700</bug_when>
    <thetext>Created attachment 338766
Made data: and about: use same process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417670</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-25 12:01:43 -0700</bug_when>
    <thetext>Attachment 338766 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:1057:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:1063:  Missing spaces around /  [whitespace/operators] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:1066:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 3 in 12 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>1417718</commentid>
    <comment_count>8</comment_count>
      <attachid>338766</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-04-25 13:18:16 -0700</bug_when>
    <thetext>Comment on attachment 338766
Made data: and about: use same process

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        to avoid creating a new WebContent process when navigating to a blob object URL.

s/blob object//

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3959
&gt; +    navigation-&gt;settreatAsSameOriginNavigation(navigationActionData.treatAsSameOriginNavigation);

s/settreatAsSameOriginNavigation/setTreatAsSameOriginNavigation/

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:2027
&gt; +    if (navigation.treatAsSameOriginNavigation())

Can we simplify the logic here with the lines below checking for !url.isValid() || url.isEmpty() || url.isBlankURL() || protocolHostAndPortAreEqual(url, targetURL)? Maybe WebProcess could do the computation here.
I am wondering what we should do with file based origins/loads as well.

&gt; Source/WebKit/UIProcess/API/APINavigation.h:87
&gt; +    void settreatAsSameOriginNavigation(bool value) { m_treatAsSameOriginNavigation = value; }

s/sett/setT/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417744</commentid>
    <comment_count>9</comment_count>
      <attachid>338766</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-25 13:38:47 -0700</bug_when>
    <thetext>Comment on attachment 338766
Made data: and about: use same process

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

&gt;&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:2027
&gt;&gt; +    if (navigation.treatAsSameOriginNavigation())
&gt; 
&gt; Can we simplify the logic here with the lines below checking for !url.isValid() || url.isEmpty() || url.isBlankURL() || protocolHostAndPortAreEqual(url, targetURL)? Maybe WebProcess could do the computation here.
&gt; I am wondering what we should do with file based origins/loads as well.

Okay, I talked with Brady. We can&apos;t move protocolHostAndPortAreEqual because of redirects but we can move isEmpty() and isBlankURL() so let&apos;s do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417756</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-25 13:48:05 -0700</bug_when>
    <thetext>Committed r231019: &lt;https://trac.webkit.org/changeset/231019&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417777</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-25 14:28:42 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #9)
&gt; Comment on attachment 338766 [details]
&gt; Made data: and about: use same process
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=338766&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:2027
&gt; &gt;&gt; +    if (navigation.treatAsSameOriginNavigation())
&gt; &gt; 
&gt; &gt; Can we simplify the logic here with the lines below checking for !url.isValid() || url.isEmpty() || url.isBlankURL() || protocolHostAndPortAreEqual(url, targetURL)? Maybe WebProcess could do the computation here.
&gt; &gt; I am wondering what we should do with file based origins/loads as well.
&gt; 
&gt; Okay, I talked with Brady. We can&apos;t move protocolHostAndPortAreEqual because
&gt; of redirects but we can move isEmpty() and isBlankURL() so let&apos;s do that.

Actually, this breaks layout tests. We need to keep isBlankURL() and isEmpty() check here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417841</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-25 16:13:22 -0700</bug_when>
    <thetext>It&apos;s because the check in WebProcessPool::processForNavigation is about the originating / source URL, not the target URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417843</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-25 16:17:33 -0700</bug_when>
    <thetext>Committed r231031: &lt;https://trac.webkit.org/changeset/231031&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338716</attachid>
            <date>2018-04-25 02:21:36 -0700</date>
            <delta_ts>2018-04-25 11:58:34 -0700</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-184962-20180425022135.patch</filename>
            <type>text/plain</type>
            <size>18174</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMDk4MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE4LTA0LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFBTT046IERvbid0IGNyZWF0ZSBh
IG5ldyBwcm9jZXNzIHdoZW4gbmF2aWdhdGluZyB0byBhIGJsb2IgVVJMCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ5NjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBOYXZpZ2F0aW9uQWN0aW9u
Ojppc1NhbWVPcmlnaW5CbG9nTmF2aWdhdGlvbiwgd2hpY2ggc2lnbmlmaWVzIFdlYktpdCBjb2Rl
CisgICAgICAgIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IFdlYkNvbnRlbnQgcHJvY2VzcyB3aGVu
IG5hdmlnYXRpbmcgdG8gYSBibG9iIG9iamVjdCBVUkwuCisKKyAgICAgICAgVGVzdHM6IFByb2Nl
c3NTd2FwLlNhbWVPcmlnaW5CbG9iTmF2aWdhdGlvbgorICAgICAgICAgICAgICAgUHJvY2Vzc1N3
YXAuQ3Jvc3NPcmlnaW5CbG9iTmF2aWdhdGlvbgorCisgICAgICAgICogbG9hZGVyL05hdmlnYXRp
b25BY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTYW1lT3JpZ2luQmxvZ05hdmlnYXRp
b24pOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpOYXZpZ2F0aW9uQWN0aW9uOjppc1NhbWVPcmlnaW5CbG9iTmF2aWdhdGlvbiBjb25zdCk6
CisKIDIwMTgtMDQtMjQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVsZWFzZSBhc3NlcnQgaW4gU2NyaXB0Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMg
dmlhIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhIGR1cmluZwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAkocmV2aXNpb24gMjMwOTgy
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NCw2ICs0NCwxMSBAQCBOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0
aW9uKE5hdmlnCiBOYXZpZ2F0aW9uQWN0aW9uJiBOYXZpZ2F0aW9uQWN0aW9uOjpvcGVyYXRvcj0o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpID0gZGVmYXVsdDsKIE5hdmlnYXRpb25BY3Rpb24mIE5h
dmlnYXRpb25BY3Rpb246Om9wZXJhdG9yPShOYXZpZ2F0aW9uQWN0aW9uJiYpID0gZGVmYXVsdDsK
IAorc3RhdGljIGJvb2wgaXNTYW1lT3JpZ2luQmxvZ05hdmlnYXRpb24oRG9jdW1lbnQmIHNvdXJj
ZSwgY29uc3QgVVJMJiB1cmwpCit7CisgICAgcmV0dXJuIHVybC5wcm90b2NvbElzQmxvYigpICYm
IHNvdXJjZS5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKK30KKwogTmF2aWdhdGlv
bkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihEb2N1bWVudCYgc291cmNlLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgSW5pdGlhdGVkQnlNYWluRnJhbWUgaW5pdGlhdGVk
QnlNYWluRnJhbWUsIE5hdmlnYXRpb25UeXBlIHR5cGUsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgRXZlbnQqIGV2ZW50LCBjb25zdCBB
dG9taWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKQogICAgIDogbV9zb3VyY2VEb2N1bWVudCB7
IG1ha2VSZWZQdHIoc291cmNlKSB9CiAgICAgLCBtX3Jlc291cmNlUmVxdWVzdCB7IHJlc291cmNl
UmVxdWVzdCB9CkBAIC01Miw2ICs1Nyw3IEBAIE5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25B
Y3Rpb24oRG9jdW0KICAgICAsIG1faW5pdGlhdGVkQnlNYWluRnJhbWUgeyBpbml0aWF0ZWRCeU1h
aW5GcmFtZSB9CiAgICAgLCBtX2V2ZW50IHsgZXZlbnQgfQogICAgICwgbV9kb3dubG9hZEF0dHJp
YnV0ZSB7IGRvd25sb2FkQXR0cmlidXRlIH0KKyAgICAsIG1faXNTYW1lT3JpZ2luQmxvYk5hdmln
YXRpb24geyBpc1NhbWVPcmlnaW5CbG9nTmF2aWdhdGlvbihzb3VyY2UsIHJlc291cmNlUmVxdWVz
dC51cmwoKSkgfQogewogfQogCkBAIC03Niw2ICs4Miw3IEBAIE5hdmlnYXRpb25BY3Rpb246Ok5h
dmlnYXRpb25BY3Rpb24oRG9jdW0KICAgICAsIG1faW5pdGlhdGVkQnlNYWluRnJhbWUgeyBpbml0
aWF0ZWRCeU1haW5GcmFtZSB9CiAgICAgLCBtX2V2ZW50IHsgZXZlbnQgfQogICAgICwgbV9kb3du
bG9hZEF0dHJpYnV0ZSB7IGRvd25sb2FkQXR0cmlidXRlIH0KKyAgICAsIG1faXNTYW1lT3JpZ2lu
QmxvYk5hdmlnYXRpb24geyBpc1NhbWVPcmlnaW5CbG9nTmF2aWdhdGlvbihzb3VyY2UsIHJlc291
cmNlUmVxdWVzdC51cmwoKSkgfQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvbkFjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uQWN0aW9uLmgJKHJldmlzaW9uIDIzMDk4MikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDggQEAg
cHVibGljOgogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZG93bmxvYWRBdHRyaWJ1dGU7IH0KIAorICAgIGJvb2wgaXNTYW1lT3Jp
Z2luQmxvYk5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2lzU2FtZU9yaWdpbkJsb2JOYXZp
Z2F0aW9uOyB9CisKICAgICB2b2lkIHNldElzQ3Jvc3NPcmlnaW5XaW5kb3dPcGVuTmF2aWdhdGlv
bihib29sIHZhbHVlKSB7IG1faXNDcm9zc09yaWdpbldpbmRvd09wZW5OYXZpZ2F0aW9uID0gdmFs
dWU7IH0KICAgICBib29sIGlzQ3Jvc3NPcmlnaW5XaW5kb3dPcGVuTmF2aWdhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1faXNDcm9zc09yaWdpbldpbmRvd09wZW5OYXZpZ2F0aW9uOyB9CiAKQEAgLTg3
LDYgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7CiAgICAgUmVm
UHRyPFVzZXJHZXN0dXJlVG9rZW4+IG1fdXNlckdlc3R1cmVUb2tlbiB7IFVzZXJHZXN0dXJlSW5k
aWNhdG9yOjpjdXJyZW50VXNlckdlc3R1cmUoKSB9OwogICAgIEF0b21pY1N0cmluZyBtX2Rvd25s
b2FkQXR0cmlidXRlOworICAgIGJvb2wgbV9pc1NhbWVPcmlnaW5CbG9iTmF2aWdhdGlvbjsKICAg
ICBib29sIG1faXNDcm9zc09yaWdpbldpbmRvd09wZW5OYXZpZ2F0aW9uIHsgZmFsc2UgfTsKICAg
ICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjx1aW50NjRfdCAvKiBwYWdlSUQgKi8sIHVpbnQ2NF90
IC8qIGZyYW1lSUQgKi8+PiBtX29wZW5lcjsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjMw
OTgyKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwzNyBAQAorMjAxOC0wNC0yNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBQU09OOiBEb24ndCBjcmVhdGUgYSBuZXcgcHJvY2VzcyB3aGVuIG5hdmlnYXRpbmcg
dG8gYSBibG9iIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg0OTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRG9uJ3QgY3JlYXRlIGEgbmV3IFdlYkNvbnRlbnQgcHJvY2VzcyB3aGVuIG5hdmlnYXRp
bmcgdG8gYSBibG9iIG9iamVjdCBVUkwgc2luY2UgZG9pbmcgc28KKyAgICAgICAgY2FuIHJlc3Vs
dCBpbiBhIHJhY2UgY29uZGl0aW9uIGluIHdoaWNoIHRoZSBibG9nIFVSTCBpcyByZW1vdmVkIGZy
b20gdGhlIGJsb2IgcmVnaXN0cnkgb2YKKyAgICAgICAgdGhlIG5ldHdvcmsgcHJvY2VzcyBieSB0
aGUgdGltZSB0aGUgbmF2aWdhdGlvbiBnZXRzIGNvbW1pdGVkLiBUaGlzIGNhdXNlcyBhIGZhaWx1
cmUgaW4KKyAgICAgICAgZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2Fk
LXVuc2V0Lmh0bWwgYW5kIG9oZXIgbGF5b3V0IHRlc3RzLgorCisgICAgICAgIEluIHRoZSBmdXR1
cmUsIHRoZSBuZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gV2ViQ29u
dGVudCBwcm9jZXNzIGhhcyBhY2Nlc3MKKyAgICAgICAgdG8gYSBnaXZlbiBibG9iIFVSTC4gRm9y
IG5vdywgd2UgcmVseSBvbiBXZWJDb250ZW50IHByb2Nlc3MgdG8gdGVsbCB1cyB3aGV0aGVyIGl0
IGNhbgorICAgICAgICBuYXZpZ2F0ZSB0byBhIGdpdmVuIGJsb2IgVVJMIG9yIG5vdC4KKworICAg
ICAgICAqIFNoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5hdmlnYXRpb25BY3Rpb25EYXRhOjplbmNvZGUgY29uc3QpOiBFbmNvZGUgbmV3bHkgYWRkZWQg
aXNTYW1lT3JpZ2luQmxvYk5hdmlnYXRpb24uCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25B
Y3Rpb25EYXRhOjpkZWNvZGUpOiBEaXR0byBmb3IgZGVjb2RpbmcuCisgICAgICAgICogU2hhcmVk
L05hdmlnYXRpb25BY3Rpb25EYXRhLmg6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rp
b25EYXRhOjppc1NhbWVPcmlnaW5CbG9iTmF2aWdhdGlvbik6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uOjpz
ZXRJc1NhbWVPcmlnaW5CbG9iTmF2aWdhdGlvbik6IEFkZGVkLgorICAgICAgICAoQVBJOjpOYXZp
Z2F0aW9uOjppc1NhbWVPcmlnaW5CbG9iTmF2aWdhdGlvbiBjb25zdCk6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IFVzZSB0aGUgY3VycmVudCBw
cm9jZXNzIHdoZW4KKyAgICAgICAgaXNTYW1lT3JpZ2luQmxvYk5hdmlnYXRpb24gaXMgc2V0IHRv
IHRydWU7IGkuZS4gd2hlbiBuYXZpZ2F0aW5nIHRvIGEgYmxvYiBVUkwgdGhlIGN1cnJlbnQKKyAg
ICAgICAgZG9jdW1lbnQgaGFzIGFjY2Vzcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5h
dmlnYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKwogMjAxOC0wNC0yNCAg
RnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2lu
Q2Fpcm9dIEFkZCBXS1ZpZXcgYW5kIFdLQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9O
YXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFy
ZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCShyZXZpc2lvbiAyMzA5ODIpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDYgKzQ3LDcgQEAgdm9pZCBOYXZpZ2F0aW9uQWN0aW9uRGF0YTo6ZW5jb2RlKElQQzo6RQog
ICAgIGVuY29kZXIgPDwgZG93bmxvYWRBdHRyaWJ1dGU7CiAgICAgZW5jb2RlciA8PCBjbGlja0xv
Y2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIGVuY29kZXIgPDwgaXNSZWRpcmVjdDsK
KyAgICBlbmNvZGVyIDw8IGlzU2FtZU9yaWdpbkJsb2JOYXZpZ2F0aW9uOwogICAgIGVuY29kZXIg
PDwgaXNDcm9zc09yaWdpbldpbmRvd09wZW5OYXZpZ2F0aW9uOwogICAgIGVuY29kZXIgPDwgb3Bl
bmVyOwogfQpAQCAtOTcsNiArOTgsMTEgQEAgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9u
RGF0YT4gTmF2aQogICAgIGlmICghaXNSZWRpcmVjdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNTYW1lT3JpZ2luQmxvYk5hdmlnYXRp
b247CisgICAgZGVjb2RlciA+PiBpc1NhbWVPcmlnaW5CbG9iTmF2aWdhdGlvbjsKKyAgICBpZiAo
IWlzU2FtZU9yaWdpbkJsb2JOYXZpZ2F0aW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0Nyb3NzT3JpZ2luV2luZG93T3Blbk5hdmln
YXRpb247CiAgICAgZGVjb2RlciA+PiBpc0Nyb3NzT3JpZ2luV2luZG93T3Blbk5hdmlnYXRpb247
CiAgICAgaWYgKCFpc0Nyb3NzT3JpZ2luV2luZG93T3Blbk5hdmlnYXRpb24pCkBAIC0xMDcsNyAr
MTEzLDkgQEAgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uRGF0YT4gTmF2aQogICAgIGlm
ICghb3BlbmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7
IFdURk1vdmUobmF2aWdhdGlvblR5cGUpLCBXVEZNb3ZlKG1vZGlmaWVycyksIFdURk1vdmUobW91
c2VCdXR0b24pLCBXVEZNb3ZlKHN5bnRoZXRpY0NsaWNrVHlwZSksIFdURk1vdmUoKnVzZXJHZXN0
dXJlVG9rZW5JZGVudGlmaWVyKSwgV1RGTW92ZSgqY2FuSGFuZGxlUmVxdWVzdCksIFdURk1vdmUo
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSksIFdURk1vdmUoKmRvd25sb2FkQXR0cmlidXRl
KSwgV1RGTW92ZShjbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzKSwgV1RGTW92ZSgq
aXNSZWRpcmVjdCksICppc0Nyb3NzT3JpZ2luV2luZG93T3Blbk5hdmlnYXRpb24sIFdURk1vdmUo
Km9wZW5lcikgfX07CisgICAgcmV0dXJuIHt7IFdURk1vdmUobmF2aWdhdGlvblR5cGUpLCBXVEZN
b3ZlKG1vZGlmaWVycyksIFdURk1vdmUobW91c2VCdXR0b24pLCBXVEZNb3ZlKHN5bnRoZXRpY0Ns
aWNrVHlwZSksIFdURk1vdmUoKnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKSwKKyAgICAgICAg
V1RGTW92ZSgqY2FuSGFuZGxlUmVxdWVzdCksIFdURk1vdmUoc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSksIFdURk1vdmUoKmRvd25sb2FkQXR0cmlidXRlKSwgV1RGTW92ZShjbGlja0xvY2F0
aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzKSwKKyAgICAgICAgV1RGTW92ZSgqaXNSZWRpcmVjdCks
ICppc1NhbWVPcmlnaW5CbG9iTmF2aWdhdGlvbiwgKmlzQ3Jvc3NPcmlnaW5XaW5kb3dPcGVuTmF2
aWdhdGlvbiwgV1RGTW92ZSgqb3BlbmVyKSB9fTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmgJKHJl
dmlzaW9uIDIzMDk4MikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25E
YXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0IE5hdmlnYXRpb25B
Y3Rpb25EYXRhIHsKICAgICBXVEY6OlN0cmluZyBkb3dubG9hZEF0dHJpYnV0ZTsKICAgICBXZWJD
b3JlOjpGbG9hdFBvaW50IGNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAgICAg
Ym9vbCBpc1JlZGlyZWN0IHsgZmFsc2UgfTsKKyAgICBib29sIGlzU2FtZU9yaWdpbkJsb2JOYXZp
Z2F0aW9uIHsgZmFsc2UgfTsKICAgICBib29sIGlzQ3Jvc3NPcmlnaW5XaW5kb3dPcGVuTmF2aWdh
dGlvbiB7IGZhbHNlIH07CiAgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8dWludDY0X3QsIHVp
bnQ2NF90Pj4gb3BlbmVyOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkocmV2aXNpb24gMjMwOTgyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk1Niw2ICszOTU2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgIG5hdmlnYXRpb24tPnNl
dFNob3VsZEZvcmNlRG93bmxvYWQoIW5hdmlnYXRpb25BY3Rpb25EYXRhLmRvd25sb2FkQXR0cmli
dXRlLmlzTnVsbCgpKTsKICAgICBuYXZpZ2F0aW9uLT5zZXRDdXJyZW50UmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QocmVxdWVzdCksIG1fcHJvY2Vzcy0+Y29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwog
ICAgIG5hdmlnYXRpb24tPnNldEN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdChuYXZpZ2F0aW9uQWN0
aW9uRGF0YS5pc1JlZGlyZWN0KTsKKyAgICBuYXZpZ2F0aW9uLT5zZXRJc1NhbWVPcmlnaW5CbG9i
TmF2aWdhdGlvbihuYXZpZ2F0aW9uQWN0aW9uRGF0YS5pc1NhbWVPcmlnaW5CbG9iTmF2aWdhdGlv
bik7CiAgICAgbmF2aWdhdGlvbi0+c2V0SXNDcm9zc09yaWdpbldpbmRvd09wZW5OYXZpZ2F0aW9u
KG5hdmlnYXRpb25BY3Rpb25EYXRhLmlzQ3Jvc3NPcmlnaW5XaW5kb3dPcGVuTmF2aWdhdGlvbik7
CiAgICAgbmF2aWdhdGlvbi0+c2V0T3BlbmVyKG5hdmlnYXRpb25BY3Rpb25EYXRhLm9wZW5lcik7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJl
dmlzaW9uIDIzMDk4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyNCw2ICsyMDI0LDkgQEAgUmVmPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnBybwogICAgIGlmICghcGFnZS5wcm9jZXNzKCkuaGFzQ29t
bWl0dGVkQW55UHJvdmlzaW9uYWxMb2FkcygpKQogICAgICAgICByZXR1cm4gcGFnZS5wcm9jZXNz
KCk7CiAKKyAgICBpZiAobmF2aWdhdGlvbi5pc1NhbWVPcmlnaW5CbG9iTmF2aWdhdGlvbigpKQor
ICAgICAgICByZXR1cm4gcGFnZS5wcm9jZXNzKCk7CisKICAgICBpZiAobmF2aWdhdGlvbi5pc0Ny
b3NzT3JpZ2luV2luZG93T3Blbk5hdmlnYXRpb24oKSkgewogICAgICAgICBpZiAobmF2aWdhdGlv
bi5vcGVuZXIoKSAmJiAhbV9jb25maWd1cmF0aW9uLT5wcm9jZXNzU3dhcHNPbldpbmRvd09wZW5X
aXRoT3BlbmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gcGFnZS5wcm9jZXNzKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgJKHJldmlzaW9uIDIz
MDk4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxk
Rm9yY2VEb3dubG9hZChib29sIHZhbHVlKSB7IG1fc2hvdWxkRm9yY2VEb3dubG9hZCA9IHZhbHVl
OyB9CiAgICAgYm9vbCBzaG91bGRGb3JjZURvd25sb2FkKCkgY29uc3QgeyByZXR1cm4gbV9zaG91
bGRGb3JjZURvd25sb2FkOyB9CiAKKyAgICB2b2lkIHNldElzU2FtZU9yaWdpbkJsb2JOYXZpZ2F0
aW9uKGJvb2wgdmFsdWUpIHsgbV9pc1NhbWVPcmlnaW5CbG9iTmF2aWdhdGlvbiA9IHZhbHVlOyB9
CisgICAgYm9vbCBpc1NhbWVPcmlnaW5CbG9iTmF2aWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNTYW1lT3JpZ2luQmxvYk5hdmlnYXRpb247IH0KKwogICAgIHZvaWQgc2V0SXNDcm9zc09yaWdp
bldpbmRvd09wZW5OYXZpZ2F0aW9uKGJvb2wgdmFsdWUpIHsgbV9pc0Nyb3NzT3JpZ2luV2luZG93
T3Blbk5hdmlnYXRpb24gPSB2YWx1ZTsgfQogICAgIGJvb2wgaXNDcm9zc09yaWdpbldpbmRvd09w
ZW5OYXZpZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nyb3NzT3JpZ2luV2luZG93T3Blbk5h
dmlnYXRpb247IH0KIApAQCAtMTExLDYgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdl
YktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gbV90YXJnZXRJdGVtOwogICAgIFJlZlB0cjxX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IG1fZnJvbUl0ZW07CiAgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUxvYWRUeXBlPiBtX2JhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZTsK
KyAgICBib29sIG1faXNTYW1lT3JpZ2luQmxvYk5hdmlnYXRpb24geyBmYWxzZSB9OwogICAgIGJv
b2wgbV9pc0Nyb3NzT3JpZ2luV2luZG93T3Blbk5hdmlnYXRpb24geyBmYWxzZSB9OwogICAgIHN0
ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4+IG1fb3BlbmVyOwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjMwOTgyKQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODY0LDYgKzg2NCw3IEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gbmF2aWdhdGlvbkFjdGlvbi5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuZG93bmxvYWRB
dHRyaWJ1dGUgPSBuYXZpZ2F0aW9uQWN0aW9uLmRvd25sb2FkQXR0cmlidXRlKCk7CiAgICAgbmF2
aWdhdGlvbkFjdGlvbkRhdGEuaXNSZWRpcmVjdCA9IGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNl
OworICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmlzU2FtZU9yaWdpbkJsb2JOYXZpZ2F0aW9uID0g
bmF2aWdhdGlvbkFjdGlvbi5pc1NhbWVPcmlnaW5CbG9iTmF2aWdhdGlvbigpOwogICAgIG5hdmln
YXRpb25BY3Rpb25EYXRhLmlzQ3Jvc3NPcmlnaW5XaW5kb3dPcGVuTmF2aWdhdGlvbiA9IG5hdmln
YXRpb25BY3Rpb24uaXNDcm9zc09yaWdpbldpbmRvd09wZW5OYXZpZ2F0aW9uKCk7CiAgICAgbmF2
aWdhdGlvbkFjdGlvbkRhdGEub3BlbmVyID0gbmF2aWdhdGlvbkFjdGlvbi5vcGVuZXIoKTsKIApJ
bmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjMwOTg3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTgtMDQtMjUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUFNPTjogRG9uJ3QgY3JlYXRlIGEgbmV3IHByb2Nlc3Mgd2hlbiBuYXZpZ2F0aW5n
IHRvIGEgYmxvYiBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4NDk2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIHR3byB0ZXN0IGNhc2VzIGZvciBuYXZpZ2F0aW5nIHRvIGEgYmxvZyBVUkwg
d2l0aCBwcm9jZXNzLXN3YXAtb24tbmF2aWdhdGlvbiB0dXJuZWQgb24uCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1t
OgorICAgICAgICAoUHJvY2Vzc1N3YXAuU2FtZU9yaWdpbkJsb2JOYXZpZ2F0aW9uKTogQWRkZWQu
CisgICAgICAgIChQcm9jZXNzU3dhcC5Dcm9zc09yaWdpbkJsb2JOYXZpZ2F0aW9uKTogQWRkZWQu
CisKIDIwMTgtMDQtMjQgIFBhYmxvIFNhYXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS11bV1BFXSBGaXggdHJpZ2dlcmVkIGJvdCBuYW1lIG9uIHRoZSBXUEUgRGVi
dWcgQnVpbGQgYm90CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0JKHJldmlz
aW9uIDIzMDk4MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJv
Y2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNTQsNCArMTA1NCwx
MTAgQEAgVEVTVChQcm9jZXNzU3dhcCwgTG9hZFVubG9hZCkKIH0KICNlbmRpZiAvLyAhVEFSR0VU
X09TX0lQSE9ORQogCitzdGF0aWMgY29uc3QgY2hhciogc2FtZU9yaWdpbkJsb2JOYXZpZ2F0aW9u
VGVzdEJ5dGVzID0gUiJQU09OUkVTT1VSQ0UoCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJv
ZHk+Cis8cD48YSBpZD0ibGluayI+Q2xpY2sgaGVyZTwvYT48L3A+Cis8c2NyaXB0PgorY29uc3Qg
YmxvYiA9IG5ldyBCbG9iKFsnPCFET0NUWVBFIGh0bWw+PGh0bWw+PHA+UEFTUzwvcD48L2h0bWw+
J10sIHt0eXBlOiAndGV4dC9odG1sJ30pOworbGluay5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVS
TChibG9iKTsKKzwvc2NyaXB0PgorKVBTT05SRVNPVVJDRSI7CisKK1RFU1QoUHJvY2Vzc1N3YXAs
IFNhbWVPcmlnaW5CbG9iTmF2aWdhdGlvbikKK3sKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKKyAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25O
YXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9j
ZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKKworICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3Q29u
ZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07CisgICAgUmV0YWlu
UHRyPFBTT05TY2hlbWU+IGhhbmRsZXIgPSBhZG9wdE5TKFtbUFNPTlNjaGVtZSBhbGxvY10gaW5p
dFdpdGhCeXRlczpzYW1lT3JpZ2luQmxvYk5hdmlnYXRpb25UZXN0Qnl0ZXNdKTsKKyAgICBbd2Vi
Vmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVS
TFNjaGVtZTpAIlBTT04iXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gbmF2aWdhdGlv
bkRlbGVnYXRlID0gYWRvcHROUyhbW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRd
KTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRl
LmdldCgpXTsKKyAgICBhdXRvIHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtbUFNPTlVJRGVsZWdhdGUg
YWxsb2NdIGluaXRXaXRoTmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQo
KV0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZS5nZXQoKV07CisKKyAg
ICBudW1iZXJPZkRlY2lkZVBvbGljeUNhbGxzID0gMDsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNv
bjovL2hvc3QvbWFpbjEuaHRtbCJdXV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBhdXRvIHBpZDEgPSBbd2ViVmlldyBfd2Vi
UHJvY2Vzc0lkZW50aWZpZXJdOworICAgIEVYUEVDVF9UUlVFKCEhcGlkMSk7CisKKyAgICBbd2Vi
VmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOkAiZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2xpbmsnKS5jbGljaygpIiBjb21wbGV0aW9uSGFuZGxlcjogbmlsXTsKKwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOwor
ICAgIGF1dG8gcGlkMiA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgRVhQ
RUNUX1RSVUUoISFwaWQyKTsKKyAgICBFWFBFQ1RfRVEoMiwgbnVtYmVyT2ZEZWNpZGVQb2xpY3lD
YWxscyk7CisgICAgRVhQRUNUX0VRKHBpZDEsIHBpZDIpOworfQorCitURVNUKFByb2Nlc3NTd2Fw
LCBDcm9zc09yaWdpbkJsb2JOYXZpZ2F0aW9uKQoreworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNP
bk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1By
b2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5nZXQoKV0pOworCisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdD
b25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKKyAgICBSZXRh
aW5QdHI8UFNPTlNjaGVtZT4gaGFuZGxlciA9IGFkb3B0TlMoW1tQU09OU2NoZW1lIGFsbG9jXSBp
bml0V2l0aEJ5dGVzOnNhbWVPcmlnaW5CbG9iTmF2aWdhdGlvblRlc3RCeXRlc10pOworICAgIFt3
ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9y
VVJMU2NoZW1lOkAiUFNPTjEiXTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2No
ZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIlBTT04yIl07CisKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKKyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tQU09O
TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CisgICAgYXV0byB1aURlbGVn
YXRlID0gYWRvcHROUyhbW1BTT05VSURlbGVnYXRlIGFsbG9jXSBpbml0V2l0aE5hdmlnYXRpb25E
ZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldKTsKKyAgICBbd2ViVmlldyBzZXRVSURl
bGVnYXRlOnVpRGVsZWdhdGUuZ2V0KCldOworCisgICAgbnVtYmVyT2ZEZWNpZGVQb2xpY3lDYWxs
cyA9IDA7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInBzb24xOi8vaG9zdC9tYWluMS5odG1sIl1dXTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsK
KyAgICBhdXRvIHBpZDEgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOworICAgIEVY
UEVDVF9UUlVFKCEhcGlkMSk7CisKKyAgICBib29sIGZpbmlzaGVkUnVubmluZ1NjcmlwdCA9IGZh
bHNlOworICAgIFN0cmluZyBibG9iVVJMOworICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3Jp
cHRXaXRob3V0VXNlckdlc3R1cmU6QCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGluaycpLmhy
ZWYiIGNvbXBsZXRpb25IYW5kbGVyOiBbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsK
KyAgICAgICAgYmxvYlVSTCA9IFN0cmluZyhbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVA
IiwgcmVzdWx0XSk7CisgICAgICAgIGZpbmlzaGVkUnVubmluZ1NjcmlwdCA9IHRydWU7CisgICAg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZFJ1bm5pbmdTY3JpcHQp
OworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInBzb24yOi8vaG9zdC9tYWluMS5odG1sIl1dXTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKyAg
ICBhdXRvIHBpZDIgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOworICAgIEVYUEVD
VF9UUlVFKCEhcGlkMik7CisKKyAgICBmaW5pc2hlZFJ1bm5pbmdTY3JpcHQgPSBmYWxzZTsKKyAg
ICBTdHJpbmcgc2NyaXB0ID0gImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaW5rJykuaHJlZiA9
ICciICsgYmxvYlVSTCArICInIjsKKyAgICBbd2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0V2l0
aG91dFVzZXJHZXN0dXJlOihOU1N0cmluZyAqKXNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjogWyZd
IChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIGZpbmlzaGVkUnVubmluZ1Nj
cmlwdCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5p
c2hlZFJ1bm5pbmdTY3JpcHQpOworCisgICAgLy8gVGhpcyBuYXZpZ2F0aW9uIHdpbGwgZmFpbC4K
KyAgICBbd2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOkAiZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpbmsnKS5jbGljaygpIiBjb21wbGV0aW9uSGFuZGxlcjog
WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIGRvbmUgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9
IGZhbHNlOworICAgIGF1dG8gcGlkMyA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07
CisgICAgRVhQRUNUX1RSVUUoISFwaWQzKTsKKworICAgIEVYUEVDVF9FUSgyLCBudW1iZXJPZkRl
Y2lkZVBvbGljeUNhbGxzKTsKKyAgICBFWFBFQ1RfTkUocGlkMSwgcGlkMik7CisgICAgRVhQRUNU
X0VRKHBpZDIsIHBpZDMpOworfQorCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338766</attachid>
            <date>2018-04-25 11:58:35 -0700</date>
            <delta_ts>2018-04-25 13:18:16 -0700</delta_ts>
            <desc>Made data: and about: use same process</desc>
            <filename>bug-184962-20180425115834.patch</filename>
            <type>text/plain</type>
            <size>21959</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMDk4MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE4LTA0LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFBTT046IERvbid0IGNyZWF0ZSBh
IG5ldyBwcm9jZXNzIHdoZW4gbmF2aWdhdGluZyB0byBhIGJsb2IgVVJMLCBkYXRhIFVSTCwgYW5k
IGFib3V0OmJsYW5rCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODQ5NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCBOYXZpZ2F0aW9uQWN0aW9uOjp0cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb24s
IHdoaWNoIHNpZ25pZmllcyBXZWJLaXQgY29kZQorICAgICAgICB0byBhdm9pZCBjcmVhdGluZyBh
IG5ldyBXZWJDb250ZW50IHByb2Nlc3Mgd2hlbiBuYXZpZ2F0aW5nIHRvIGEgYmxvYiBvYmplY3Qg
VVJMLgorCisgICAgICAgIFRlc3RzOiBQcm9jZXNzU3dhcC5TYW1lT3JpZ2luQmxvYk5hdmlnYXRp
b24KKyAgICAgICAgICAgICAgIFByb2Nlc3NTd2FwLkNyb3NzT3JpZ2luQmxvYk5hdmlnYXRpb24K
KyAgICAgICAgICAgICAgIFByb2Nlc3NTd2FwLk5hdmlnYXRlVG9BYm91dEJsYW5rCisgICAgICAg
ICAgICAgICBQcm9jZXNzU3dhcC5OYXZpZ2F0ZVRvRGF0YVVSTAorCisgICAgICAgICogbG9hZGVy
L05hdmlnYXRpb25BY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJlYXRBc1NhbWVPcmln
aW5OYXZpZ2F0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbjo6dHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0
aW9uIGNvbnN0KToKKwogMjAxOC0wNC0yNCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZWxlYXNlIGFzc2VydCBpbiBTY3JpcHRDb250cm9sbGVyOjpjYW5FeGVj
dXRlU2NyaXB0cyB2aWEgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEgZHVyaW5n
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCShyZXZp
c2lvbiAyMzA5ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDEzIEBAIE5hdmlnYXRpb25BY3Rpb246Ok5h
dmlnYXRpb25BY3Rpb24oTmF2aWcKIE5hdmlnYXRpb25BY3Rpb24mIE5hdmlnYXRpb25BY3Rpb246
Om9wZXJhdG9yPShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgPSBkZWZhdWx0OwogTmF2aWdhdGlv
bkFjdGlvbiYgTmF2aWdhdGlvbkFjdGlvbjo6b3BlcmF0b3I9KE5hdmlnYXRpb25BY3Rpb24mJikg
PSBkZWZhdWx0OwogCitzdGF0aWMgYm9vbCBzaG91bGRUcmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRp
b24oRG9jdW1lbnQmIHNvdXJjZSwgY29uc3QgVVJMJiB1cmwpCit7CisgICAgcmV0dXJuIHVybC5p
c0JsYW5rVVJMKCkKKyAgICAgICAgfHwgdXJsLnByb3RvY29sSXNEYXRhKCkKKyAgICAgICAgfHwg
KHVybC5wcm90b2NvbElzQmxvYigpICYmIHNvdXJjZS5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVl
c3QodXJsKSk7Cit9CisKIE5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oRG9jdW1l
bnQmIHNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIEluaXRp
YXRlZEJ5TWFpbkZyYW1lIGluaXRpYXRlZEJ5TWFpbkZyYW1lLCBOYXZpZ2F0aW9uVHlwZSB0eXBl
LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3ksIEV2ZW50KiBldmVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkK
ICAgICA6IG1fc291cmNlRG9jdW1lbnQgeyBtYWtlUmVmUHRyKHNvdXJjZSkgfQogICAgICwgbV9y
ZXNvdXJjZVJlcXVlc3QgeyByZXNvdXJjZVJlcXVlc3QgfQpAQCAtNTIsNiArNTksNyBAQCBOYXZp
Z2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKERvY3VtCiAgICAgLCBtX2luaXRpYXRlZEJ5
TWFpbkZyYW1lIHsgaW5pdGlhdGVkQnlNYWluRnJhbWUgfQogICAgICwgbV9ldmVudCB7IGV2ZW50
IH0KICAgICAsIG1fZG93bmxvYWRBdHRyaWJ1dGUgeyBkb3dubG9hZEF0dHJpYnV0ZSB9CisgICAg
LCBtX3RyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbiB7IHNob3VsZFRyZWF0QXNTYW1lT3JpZ2lu
TmF2aWdhdGlvbihzb3VyY2UsIHJlc291cmNlUmVxdWVzdC51cmwoKSkgfQogewogfQogCkBAIC03
Niw2ICs4NCw3IEBAIE5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oRG9jdW0KICAg
ICAsIG1faW5pdGlhdGVkQnlNYWluRnJhbWUgeyBpbml0aWF0ZWRCeU1haW5GcmFtZSB9CiAgICAg
LCBtX2V2ZW50IHsgZXZlbnQgfQogICAgICwgbV9kb3dubG9hZEF0dHJpYnV0ZSB7IGRvd25sb2Fk
QXR0cmlidXRlIH0KKyAgICAsIG1fdHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uIHsgc2hvdWxk
VHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uKHNvdXJjZSwgcmVzb3VyY2VSZXF1ZXN0LnVybCgp
KSB9CiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24u
aAkocmV2aXNpb24gMjMwOTgyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25B
Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsOCBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9k
b3dubG9hZEF0dHJpYnV0ZTsgfQogCisgICAgYm9vbCB0cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3RyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbjsgfQorCiAg
ICAgdm9pZCBzZXRJc0Nyb3NzT3JpZ2luV2luZG93T3Blbk5hdmlnYXRpb24oYm9vbCB2YWx1ZSkg
eyBtX2lzQ3Jvc3NPcmlnaW5XaW5kb3dPcGVuTmF2aWdhdGlvbiA9IHZhbHVlOyB9CiAgICAgYm9v
bCBpc0Nyb3NzT3JpZ2luV2luZG93T3Blbk5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2lz
Q3Jvc3NPcmlnaW5XaW5kb3dPcGVuTmF2aWdhdGlvbjsgfQogCkBAIC04Nyw2ICs4OSw3IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPEV2ZW50PiBtX2V2ZW50OwogICAgIFJlZlB0cjxVc2VyR2VzdHVy
ZVRva2VuPiBtX3VzZXJHZXN0dXJlVG9rZW4geyBVc2VyR2VzdHVyZUluZGljYXRvcjo6Y3VycmVu
dFVzZXJHZXN0dXJlKCkgfTsKICAgICBBdG9taWNTdHJpbmcgbV9kb3dubG9hZEF0dHJpYnV0ZTsK
KyAgICBib29sIG1fdHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uOwogICAgIGJvb2wgbV9pc0Ny
b3NzT3JpZ2luV2luZG93T3Blbk5hdmlnYXRpb24geyBmYWxzZSB9OwogICAgIHN0ZDo6b3B0aW9u
YWw8c3RkOjpwYWlyPHVpbnQ2NF90IC8qIHBhZ2VJRCAqLywgdWludDY0X3QgLyogZnJhbWVJRCAq
Lz4+IG1fb3BlbmVyOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzA5ODIpCisrKyBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDE4
LTA0LTI1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFBTT046
IERvbid0IGNyZWF0ZSBhIG5ldyBwcm9jZXNzIHdoZW4gbmF2aWdhdGluZyB0byBhIGJsb2IgVVJM
LCBkYXRhIFVSTCwgYW5kIGFib3V0OmJsYW5rCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ5NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBEb24ndCBjcmVhdGUgYSBuZXcgV2ViQ29udGVudCBwcm9jZXNz
IHdoZW4gbmF2aWdhdGluZyB0byBhIGJsb2Igb2JqZWN0IFVSTCBzaW5jZSBkb2luZyBzbworICAg
ICAgICBjYW4gcmVzdWx0IGluIGEgcmFjZSBjb25kaXRpb24gaW4gd2hpY2ggdGhlIGJsb2cgVVJM
IGlzIHJlbW92ZWQgZnJvbSB0aGUgYmxvYiByZWdpc3RyeSBvZgorICAgICAgICB0aGUgbmV0d29y
ayBwcm9jZXNzIGJ5IHRoZSB0aW1lIHRoZSBuYXZpZ2F0aW9uIGdldHMgY29tbWl0ZWQuIFRoaXMg
Y2F1c2VzIGEgZmFpbHVyZSBpbgorICAgICAgICBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9h
bmNob3ItZG93bmxvYWQtdW5zZXQuaHRtbCBhbmQgb2hlciBsYXlvdXQgdGVzdHMuCisKKyAgICAg
ICAgSW4gdGhlIGZ1dHVyZSwgdGhlIG5ldHdvcmsgcHJvY2VzcyBzaG91bGQgdmVyaWZ5IHRoYXQg
YSBnaXZlbiBXZWJDb250ZW50IHByb2Nlc3MgaGFzIGFjY2VzcworICAgICAgICB0byBhIGdpdmVu
IGJsb2IgVVJMLiBGb3Igbm93LCB3ZSByZWx5IG9uIFdlYkNvbnRlbnQgcHJvY2VzcyB0byB0ZWxs
IHVzIHdoZXRoZXIgaXQgY2FuCisgICAgICAgIG5hdmlnYXRlIHRvIGEgZ2l2ZW4gYmxvYiBVUkwg
b3Igbm90LgorCisgICAgICAgICogU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGE6OmVuY29kZSBjb25zdCk6IEVuY29k
ZSBuZXdseSBhZGRlZCB0cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb24uCisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhOjpkZWNvZGUpOiBEaXR0byBmb3IgZGVjb2RpbmcuCisg
ICAgICAgICogU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmg6CisgICAgICAgIChXZWJLaXQ6
Ok5hdmlnYXRpb25BY3Rpb25EYXRhOjp0cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb24pOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaDoKKyAgICAgICAgKEFQ
STo6TmF2aWdhdGlvbjo6c2V0dHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uKTogQWRkZWQuCisg
ICAgICAgIChBUEk6Ok5hdmlnYXRpb246OnRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbiBjb25z
dCk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6
IFVzZSB0aGUgY3VycmVudCBwcm9jZXNzIHdoZW4KKyAgICAgICAgdHJlYXRBc1NhbWVPcmlnaW5O
YXZpZ2F0aW9uIGlzIHNldCB0byB0cnVlOyBpLmUuIHdoZW4gbmF2aWdhdGluZyB0byBhIGJsb2Ig
VVJMIHRoZSBjdXJyZW50CisgICAgICAgIGRvY3VtZW50IGhhcyBhY2Nlc3MuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisKIDIwMTgtMDQtMjQgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5j
b20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBBZGQgV0tWaWV3IGFuZCBXS0FQSQpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcAkocmV2aXNpb24g
MjMwOTgyKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIHZvaWQgTmF2aWdhdGlvbkFjdGlvbkRh
dGE6OmVuY29kZShJUEM6OkUKICAgICBlbmNvZGVyIDw8IGRvd25sb2FkQXR0cmlidXRlOwogICAg
IGVuY29kZXIgPDwgY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlczsKICAgICBlbmNv
ZGVyIDw8IGlzUmVkaXJlY3Q7CisgICAgZW5jb2RlciA8PCB0cmVhdEFzU2FtZU9yaWdpbk5hdmln
YXRpb247CiAgICAgZW5jb2RlciA8PCBpc0Nyb3NzT3JpZ2luV2luZG93T3Blbk5hdmlnYXRpb247
CiAgICAgZW5jb2RlciA8PCBvcGVuZXI7CiB9CkBAIC05Nyw2ICs5OCwxMSBAQCBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpb25BY3Rpb25EYXRhPiBOYXZpCiAgICAgaWYgKCFpc1JlZGlyZWN0KQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCisgICAgc3RkOjpvcHRpb25hbDxib29sPiB0cmVh
dEFzU2FtZU9yaWdpbk5hdmlnYXRpb247CisgICAgZGVjb2RlciA+PiB0cmVhdEFzU2FtZU9yaWdp
bk5hdmlnYXRpb247CisgICAgaWYgKCF0cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb24pCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzQ3Jv
c3NPcmlnaW5XaW5kb3dPcGVuTmF2aWdhdGlvbjsKICAgICBkZWNvZGVyID4+IGlzQ3Jvc3NPcmln
aW5XaW5kb3dPcGVuTmF2aWdhdGlvbjsKICAgICBpZiAoIWlzQ3Jvc3NPcmlnaW5XaW5kb3dPcGVu
TmF2aWdhdGlvbikKQEAgLTEwNyw3ICsxMTMsOSBAQCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25B
Y3Rpb25EYXRhPiBOYXZpCiAgICAgaWYgKCFvcGVuZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZShuYXZpZ2F0aW9uVHlwZSksIFdURk1vdmUo
bW9kaWZpZXJzKSwgV1RGTW92ZShtb3VzZUJ1dHRvbiksIFdURk1vdmUoc3ludGhldGljQ2xpY2tU
eXBlKSwgV1RGTW92ZSgqdXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpLCBXVEZNb3ZlKCpjYW5I
YW5kbGVSZXF1ZXN0KSwgV1RGTW92ZShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KSwgV1RG
TW92ZSgqZG93bmxvYWRBdHRyaWJ1dGUpLCBXVEZNb3ZlKGNsaWNrTG9jYXRpb25JblJvb3RWaWV3
Q29vcmRpbmF0ZXMpLCBXVEZNb3ZlKCppc1JlZGlyZWN0KSwgKmlzQ3Jvc3NPcmlnaW5XaW5kb3dP
cGVuTmF2aWdhdGlvbiwgV1RGTW92ZSgqb3BlbmVyKSB9fTsKKyAgICByZXR1cm4ge3sgV1RGTW92
ZShuYXZpZ2F0aW9uVHlwZSksIFdURk1vdmUobW9kaWZpZXJzKSwgV1RGTW92ZShtb3VzZUJ1dHRv
biksIFdURk1vdmUoc3ludGhldGljQ2xpY2tUeXBlKSwgV1RGTW92ZSgqdXNlckdlc3R1cmVUb2tl
bklkZW50aWZpZXIpLAorICAgICAgICBXVEZNb3ZlKCpjYW5IYW5kbGVSZXF1ZXN0KSwgV1RGTW92
ZShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KSwgV1RGTW92ZSgqZG93bmxvYWRBdHRyaWJ1
dGUpLCBXVEZNb3ZlKGNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMpLAorICAgICAg
ICBXVEZNb3ZlKCppc1JlZGlyZWN0KSwgKnRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbiwgKmlz
Q3Jvc3NPcmlnaW5XaW5kb3dPcGVuTmF2aWdhdGlvbiwgV1RGTW92ZSgqb3BlbmVyKSB9fTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZp
Z2F0aW9uQWN0aW9uRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL05h
dmlnYXRpb25BY3Rpb25EYXRhLmgJKHJldmlzaW9uIDIzMDk4MikKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUw
LDcgQEAgc3RydWN0IE5hdmlnYXRpb25BY3Rpb25EYXRhIHsKICAgICBXVEY6OlN0cmluZyBkb3du
bG9hZEF0dHJpYnV0ZTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGNsaWNrTG9jYXRpb25JblJv
b3RWaWV3Q29vcmRpbmF0ZXM7CiAgICAgYm9vbCBpc1JlZGlyZWN0IHsgZmFsc2UgfTsKKyAgICBi
b29sIHRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBpc0Ny
b3NzT3JpZ2luV2luZG93T3Blbk5hdmlnYXRpb24geyBmYWxzZSB9OwogICAgIHN0ZDo6b3B0aW9u
YWw8c3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4+IG9wZW5lcjsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzMDk4MikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5NTYsNiArMzk1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2EKICAgICBuYXZpZ2F0aW9uLT5zZXRTaG91bGRGb3JjZURvd25sb2FkKCFuYXZpZ2F0aW9u
QWN0aW9uRGF0YS5kb3dubG9hZEF0dHJpYnV0ZS5pc051bGwoKSk7CiAgICAgbmF2aWdhdGlvbi0+
c2V0Q3VycmVudFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBtX3Byb2Nlc3MtPmNv
cmVQcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBuYXZpZ2F0aW9uLT5zZXRDdXJyZW50UmVxdWVz
dElzUmVkaXJlY3QobmF2aWdhdGlvbkFjdGlvbkRhdGEuaXNSZWRpcmVjdCk7CisgICAgbmF2aWdh
dGlvbi0+c2V0dHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uKG5hdmlnYXRpb25BY3Rpb25EYXRh
LnRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbik7CiAgICAgbmF2aWdhdGlvbi0+c2V0SXNDcm9z
c09yaWdpbldpbmRvd09wZW5OYXZpZ2F0aW9uKG5hdmlnYXRpb25BY3Rpb25EYXRhLmlzQ3Jvc3NP
cmlnaW5XaW5kb3dPcGVuTmF2aWdhdGlvbik7CiAgICAgbmF2aWdhdGlvbi0+c2V0T3BlbmVyKG5h
dmlnYXRpb25BY3Rpb25EYXRhLm9wZW5lcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDIzMDk4MikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyNCw2
ICsyMDI0LDkgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnBybwogICAg
IGlmICghcGFnZS5wcm9jZXNzKCkuaGFzQ29tbWl0dGVkQW55UHJvdmlzaW9uYWxMb2FkcygpKQog
ICAgICAgICByZXR1cm4gcGFnZS5wcm9jZXNzKCk7CiAKKyAgICBpZiAobmF2aWdhdGlvbi50cmVh
dEFzU2FtZU9yaWdpbk5hdmlnYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIHBhZ2UucHJvY2Vzcygp
OworCiAgICAgaWYgKG5hdmlnYXRpb24uaXNDcm9zc09yaWdpbldpbmRvd09wZW5OYXZpZ2F0aW9u
KCkpIHsKICAgICAgICAgaWYgKG5hdmlnYXRpb24ub3BlbmVyKCkgJiYgIW1fY29uZmlndXJhdGlv
bi0+cHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0aE9wZW5lcigpKQogICAgICAgICAgICAgcmV0
dXJuIHBhZ2UucHJvY2VzcygpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTmF2aWdhdGlvbi5oCShyZXZpc2lvbiAyMzA5ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZEZvcmNlRG93bmxvYWQoYm9vbCB2YWx1ZSkgeyBt
X3Nob3VsZEZvcmNlRG93bmxvYWQgPSB2YWx1ZTsgfQogICAgIGJvb2wgc2hvdWxkRm9yY2VEb3du
bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkRm9yY2VEb3dubG9hZDsgfQogCisgICAgdm9p
ZCBzZXR0cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb24oYm9vbCB2YWx1ZSkgeyBtX3RyZWF0QXNT
YW1lT3JpZ2luTmF2aWdhdGlvbiA9IHZhbHVlOyB9CisgICAgYm9vbCB0cmVhdEFzU2FtZU9yaWdp
bk5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlv
bjsgfQorCiAgICAgdm9pZCBzZXRJc0Nyb3NzT3JpZ2luV2luZG93T3Blbk5hdmlnYXRpb24oYm9v
bCB2YWx1ZSkgeyBtX2lzQ3Jvc3NPcmlnaW5XaW5kb3dPcGVuTmF2aWdhdGlvbiA9IHZhbHVlOyB9
CiAgICAgYm9vbCBpc0Nyb3NzT3JpZ2luV2luZG93T3Blbk5hdmlnYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2lzQ3Jvc3NPcmlnaW5XaW5kb3dPcGVuTmF2aWdhdGlvbjsgfQogCkBAIC0xMTEsNiAr
MTE0LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtPiBtX3RhcmdldEl0ZW07CiAgICAgUmVmUHRyPFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0
SXRlbT4gbV9mcm9tSXRlbTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lTG9hZFR5
cGU+IG1fYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlOworICAgIGJvb2wgbV90cmVhdEFzU2FtZU9y
aWdpbk5hdmlnYXRpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0Nyb3NzT3JpZ2luV2luZG93
T3Blbk5hdmlnYXRpb24geyBmYWxzZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPHVp
bnQ2NF90LCB1aW50NjRfdD4+IG1fb3BlbmVyOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjMwOTgyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODY0LDYgKzg2NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWQKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5ID0gbmF2aWdhdGlvbkFjdGlvbi5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCk7CiAg
ICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuZG93bmxvYWRBdHRyaWJ1dGUgPSBuYXZpZ2F0aW9uQWN0
aW9uLmRvd25sb2FkQXR0cmlidXRlKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuaXNSZWRp
cmVjdCA9IGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOworICAgIG5hdmlnYXRpb25BY3Rpb25E
YXRhLnRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbiA9IG5hdmlnYXRpb25BY3Rpb24udHJlYXRB
c1NhbWVPcmlnaW5OYXZpZ2F0aW9uKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuaXNDcm9z
c09yaWdpbldpbmRvd09wZW5OYXZpZ2F0aW9uID0gbmF2aWdhdGlvbkFjdGlvbi5pc0Nyb3NzT3Jp
Z2luV2luZG93T3Blbk5hdmlnYXRpb24oKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5vcGVu
ZXIgPSBuYXZpZ2F0aW9uQWN0aW9uLm9wZW5lcigpOwogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzA5ODcpCisrKyBUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0wNC0yNSAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBQU09OOiBEb24ndCBj
cmVhdGUgYSBuZXcgcHJvY2VzcyB3aGVuIG5hdmlnYXRpbmcgdG8gYSBibG9iIFVSTCwgZGF0YSBV
UkwsIGFuZCBhYm91dDpibGFuaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg0OTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkZWQgZm91ciB0ZXN0IGNhc2VzIGZvciBuYXZpZ2F0aW5nIHRvIGEgYmxv
YiBVUkwsIGRhdGEgVVJMLCBhbmQgYWJvdXQ6Ymxhbmsgd2l0aCBwcm9jZXNzLXN3YXAtb24tbmF2
aWdhdGlvbiB0dXJuZWQgb24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tOgorICAgICAgICAoUHJvY2Vzc1N3YXAu
U2FtZU9yaWdpbkJsb2JOYXZpZ2F0aW9uKTogQWRkZWQuCisgICAgICAgIChQcm9jZXNzU3dhcC5D
cm9zc09yaWdpbkJsb2JOYXZpZ2F0aW9uKTogQWRkZWQuCisgICAgICAgIChQcm9jZXNzU3dhcC5O
YXZpZ2F0ZVRvQWJvdXRCbGFuayk6IEFkZGVkLgorICAgICAgICAoUHJvY2Vzc1N3YXAuTmF2aWdh
dGVUb0RhdGFVUkwpOiBBZGRlZC4KKwogMjAxOC0wNC0yNCAgUGFibG8gU2FhdmVkcmEgIDxwc2Fh
dmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIEZpeCB0cmlnZ2VyZWQgYm90
IG5hbWUgb24gdGhlIFdQRSBEZWJ1ZyBCdWlsZCBib3QKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9u
TmF2aWdhdGlvbi5tbQkocmV2aXNpb24gMjMwOTgyKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTA1NCw0ICsxMDU0LDE3OCBAQCBURVNUKFByb2Nlc3NTd2FwLCBMb2FkVW5sb2FkKQog
fQogI2VuZGlmIC8vICFUQVJHRVRfT1NfSVBIT05FCiAKK3N0YXRpYyBjb25zdCBjaGFyKiBzYW1l
T3JpZ2luQmxvYk5hdmlnYXRpb25UZXN0Qnl0ZXMgPSBSIlBTT05SRVNPVVJDRSgKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxwPjxhIGlkPSJsaW5rIj5DbGljayBoZXJlPC9hPjwv
cD4KKzxzY3JpcHQ+Citjb25zdCBibG9iID0gbmV3IEJsb2IoWyc8IURPQ1RZUEUgaHRtbD48aHRt
bD48cD5QQVNTPC9wPjwvaHRtbD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSk7CitsaW5rLmhyZWYg
PSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOworPC9zY3JpcHQ+CispUFNPTlJFU09VUkNFIjsK
KworVEVTVChQcm9jZXNzU3dhcCwgU2FtZU9yaWdpbkJsb2JOYXZpZ2F0aW9uKQoreworICAgIGF1
dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5n
ZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9v
bCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYXV0byB3ZWJWaWV3Q29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29s
LmdldCgpXTsKKyAgICBSZXRhaW5QdHI8UFNPTlNjaGVtZT4gaGFuZGxlciA9IGFkb3B0TlMoW1tQ
U09OU2NoZW1lIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnNhbWVPcmlnaW5CbG9iTmF2aWdhdGlvblRl
c3RCeXRlc10pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVy
OmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiUFNPTiJdOworCisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7
CisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbUFNPTk5hdmlnYXRpb25E
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tQU09OVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhOYXZpZ2F0aW9uRGVsZWdhdGU6bmF2
aWdhdGlvbkRlbGVnYXRlLmdldCgpXSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1aURl
bGVnYXRlLmdldCgpXTsKKworICAgIG51bWJlck9mRGVjaWRlUG9saWN5Q2FsbHMgPSAwOworICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJwc29uOi8vaG9zdC9tYWluMS5odG1sIl1dXTsKKworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworICAgIGF1dG8g
cGlkMSA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgRVhQRUNUX1RSVUUo
ISFwaWQxKTsKKworICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdl
c3R1cmU6QCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGluaycpLmNsaWNrKCkiIGNvbXBsZXRp
b25IYW5kbGVyOiBuaWxdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
KyAgICBkb25lID0gZmFsc2U7CisgICAgYXV0byBwaWQyID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyXTsKKyAgICBFWFBFQ1RfVFJVRSghIXBpZDIpOworICAgIEVYUEVDVF9FUSgyLCBu
dW1iZXJPZkRlY2lkZVBvbGljeUNhbGxzKTsKKyAgICBFWFBFQ1RfRVEocGlkMSwgcGlkMik7Cit9
CisKK1RFU1QoUHJvY2Vzc1N3YXAsIENyb3NzT3JpZ2luQmxvYk5hdmlnYXRpb24pCit7CisgICAg
YXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQ
b29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIHdlYlZpZXdD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bv
b2wuZ2V0KCldOworICAgIFJldGFpblB0cjxQU09OU2NoZW1lPiBoYW5kbGVyID0gYWRvcHROUyhb
W1BTT05TY2hlbWUgYWxsb2NdIGluaXRXaXRoQnl0ZXM6c2FtZU9yaWdpbkJsb2JOYXZpZ2F0aW9u
VGVzdEJ5dGVzXSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRs
ZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJQU09OMSJdOworICAgIFt3ZWJWaWV3Q29u
ZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1l
OkAiUFNPTjIiXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVn
YXRlID0gYWRvcHROUyhbW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAg
ICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgp
XTsKKyAgICBhdXRvIHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtbUFNPTlVJRGVsZWdhdGUgYWxsb2Nd
IGluaXRXaXRoTmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV0pOwor
ICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBudW1i
ZXJPZkRlY2lkZVBvbGljeUNhbGxzID0gMDsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjE6Ly9o
b3N0L21haW4xLmh0bWwiXV1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CisgICAgZG9uZSA9IGZhbHNlOworICAgIGF1dG8gcGlkMSA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNz
SWRlbnRpZmllcl07CisgICAgRVhQRUNUX1RSVUUoISFwaWQxKTsKKworICAgIGJvb2wgZmluaXNo
ZWRSdW5uaW5nU2NyaXB0ID0gZmFsc2U7CisgICAgU3RyaW5nIGJsb2JVUkw7CisgICAgW3dlYlZp
ZXcgX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVyZTpAImRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdsaW5rJykuaHJlZiIgY29tcGxldGlvbkhhbmRsZXI6IFsmXSAoaWQgcmVzdWx0
LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBibG9iVVJMID0gU3RyaW5nKFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiJUAiLCByZXN1bHRdKTsKKyAgICAgICAgZmluaXNoZWRSdW5uaW5n
U2NyaXB0ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZp
bmlzaGVkUnVubmluZ1NjcmlwdCk7CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjI6Ly9ob3N0
L21haW4xLmh0bWwiXV1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cisg
ICAgZG9uZSA9IGZhbHNlOworICAgIGF1dG8gcGlkMiA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRl
bnRpZmllcl07CisgICAgRVhQRUNUX1RSVUUoISFwaWQyKTsKKworICAgIGZpbmlzaGVkUnVubmlu
Z1NjcmlwdCA9IGZhbHNlOworICAgIFN0cmluZyBzY3JpcHQgPSAiZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2xpbmsnKS5ocmVmID0gJyIgKyBibG9iVVJMICsgIiciOworICAgIFt3ZWJWaWV3IF9l
dmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1cmU6KE5TU3RyaW5nICopc2NyaXB0IGNv
bXBsZXRpb25IYW5kbGVyOiBbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAg
ICAgZmluaXNoZWRSdW5uaW5nU2NyaXB0ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkUnVubmluZ1NjcmlwdCk7CisKKyAgICAvLyBUaGlzIG5h
dmlnYXRpb24gd2lsbCBmYWlsLgorICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHRXaXRo
b3V0VXNlckdlc3R1cmU6QCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGluaycpLmNsaWNrKCki
IGNvbXBsZXRpb25IYW5kbGVyOiBbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisgICAgYXV0byBwaWQzID0gW3dlYlZpZXcgX3dl
YlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBFWFBFQ1RfVFJVRSghIXBpZDMpOworCisgICAgRVhQ
RUNUX0VRKDIsIG51bWJlck9mRGVjaWRlUG9saWN5Q2FsbHMpOworICAgIEVYUEVDVF9ORShwaWQx
LCBwaWQyKTsKKyAgICBFWFBFQ1RfRVEocGlkMiwgcGlkMyk7Cit9CisKK1RFU1QoUHJvY2Vzc1N3
YXAsIE5hdmlnYXRlVG9BYm91dEJsYW5rKQoreworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5h
dmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nl
c3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5nZXQoKV0pOworCisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdDb25m
aWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKKyAgICBSZXRhaW5Q
dHI8UFNPTlNjaGVtZT4gaGFuZGxlciA9IGFkb3B0TlMoW1tQU09OU2NoZW1lIGFsbG9jXSBpbml0
V2l0aEJ5dGVzOnNhbWVPcmlnaW5CbG9iTmF2aWdhdGlvblRlc3RCeXRlc10pOworICAgIFt3ZWJW
aWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJM
U2NoZW1lOkAiUFNPTiJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBuYXZpZ2F0aW9u
RGVsZWdhdGUgPSBhZG9wdE5TKFtbUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUu
Z2V0KCldOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tQU09OVUlEZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhOYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgp
XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1aURlbGVnYXRlLmdldCgpXTsKKworICAg
IG51bWJlck9mRGVjaWRlUG9saWN5Q2FsbHMgPSAwOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29u
Oi8vaG9zdC9tYWluMS5odG1sIl1dXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBhdXRvIHBpZDEgPSBbd2ViVmlldyBfd2ViUHJv
Y2Vzc0lkZW50aWZpZXJdOworICAgIEVYUEVDVF9UUlVFKCEhcGlkMSk7CisKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiYWJvdXQ6YmxhbmsiXV1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworICAgIGF1dG8gcGlkMiA9IFt3ZWJWaWV3IF93ZWJQ
cm9jZXNzSWRlbnRpZmllcl07CisgICAgRVhQRUNUX1RSVUUoISFwaWQyKTsKKworICAgIEVYUEVD
VF9FUSgyLCBudW1iZXJPZkRlY2lkZVBvbGljeUNhbGxzKTsKKyAgICBFWFBFQ1RfRVEocGlkMSwg
cGlkMik7Cit9CisKK1RFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRlVG9EYXRhVVJMKQoreworICAg
IGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNz
UG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0
aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYXV0byB3ZWJWaWV3
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQ
b29sLmdldCgpXTsKKyAgICBSZXRhaW5QdHI8UFNPTlNjaGVtZT4gaGFuZGxlciA9IGFkb3B0TlMo
W1tQU09OU2NoZW1lIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnNhbWVPcmlnaW5CbG9iTmF2aWdhdGlv
blRlc3RCeXRlc10pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5k
bGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiUFNPTiJdOworCisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgp
XSk7CisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbUFNPTk5hdmlnYXRp
b25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxl
Z2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tQU09OVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhOYXZpZ2F0aW9uRGVsZWdhdGU6
bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1
aURlbGVnYXRlLmdldCgpXTsKKworICAgIG51bWJlck9mRGVjaWRlUG9saWN5Q2FsbHMgPSAwOwor
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJwc29uOi8vaG9zdC9tYWluMS5odG1sIl1dXTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBhdXRv
IHBpZDEgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOworICAgIEVYUEVDVF9UUlVF
KCEhcGlkMSk7CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZGF0YTp0ZXh0L3BsYWluLFBBU1MiXV1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNl
OworICAgIGF1dG8gcGlkMiA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAg
RVhQRUNUX1RSVUUoISFwaWQyKTsKKworICAgIEVYUEVDVF9FUSgyLCBudW1iZXJPZkRlY2lkZVBv
bGljeUNhbGxzKTsKKyAgICBFWFBFQ1RfRVEocGlkMSwgcGlkMik7Cit9CisKICNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRAo=
</data>
<flag name="review"
          id="357037"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
      

    </bug>

</bugzilla>