<?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>160913</bug_id>
          
          <creation_ts>2016-08-16 14:55:55 -0700</creation_ts>
          <short_desc>URLParser should parse URLs without credentials</short_desc>
          <delta_ts>2016-08-16 17:43:20 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1220582</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-16 14:55:55 -0700</bug_when>
    <thetext>URLParser should parse URLs without credentials</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220584</commentid>
    <comment_count>1</comment_count>
      <attachid>286209</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-16 15:03:11 -0700</bug_when>
    <thetext>Created attachment 286209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220656</commentid>
    <comment_count>2</comment_count>
      <attachid>286209</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-16 16:53:39 -0700</bug_when>
    <thetext>Comment on attachment 286209
Patch

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

&gt; Source/WebCore/platform/URLParser.cpp:60
&gt; +    while (isC0ControlOrSpace(*c))
&gt;          ++c;

From a readability standpoint, this seems dangerous - Like you&apos;d easily walk &quot;c&quot; off the end.

Why is this okay?

&gt; Source/WebCore/platform/URLParser.cpp:423
&gt; +    LOG(URLParser, &quot;%d %d %d %d %d %d %d %d %d %d %d %d %s\n%d %d %d %d %d %d %d %d %d %d %d %d %s&quot;,
&gt; +        a.m_isValid, a.m_protocolIsInHTTPFamily, a.m_schemeEnd, a.m_userStart, a.m_userEnd, a.m_passwordEnd, a.m_hostEnd, a.m_portEnd, a.m_pathAfterLastSlash, a.m_pathEnd, a.m_queryEnd, a.m_fragmentEnd, a.m_string.utf8().data(),
&gt; +        b.m_isValid, b.m_protocolIsInHTTPFamily, b.m_schemeEnd, b.m_userStart, b.m_userEnd, b.m_passwordEnd, b.m_hostEnd, b.m_portEnd, b.m_pathAfterLastSlash, b.m_pathEnd, b.m_queryEnd, b.m_fragmentEnd, b.m_string.utf8().data());
&gt; +

Debug-only code, I know. Makes me sad anyways.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220670</commentid>
    <comment_count>3</comment_count>
      <attachid>286236</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-16 17:09:26 -0700</bug_when>
    <thetext>Created attachment 286236
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220671</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-16 17:10:27 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 286209 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=286209&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/URLParser.cpp:60
&gt; &gt; +    while (isC0ControlOrSpace(*c))
&gt; &gt;          ++c;
&gt; 
&gt; From a readability standpoint, this seems dangerous - Like you&apos;d easily walk
&gt; &quot;c&quot; off the end.
&gt; 
&gt; Why is this okay?
This is not ok, and even though I thought it was not in the scope of this patch, I fixed it and added a test.
&gt; 
&gt; &gt; Source/WebCore/platform/URLParser.cpp:423
&gt; &gt; +    LOG(URLParser, &quot;%d %d %d %d %d %d %d %d %d %d %d %d %s\n%d %d %d %d %d %d %d %d %d %d %d %d %s&quot;,
&gt; &gt; +        a.m_isValid, a.m_protocolIsInHTTPFamily, a.m_schemeEnd, a.m_userStart, a.m_userEnd, a.m_passwordEnd, a.m_hostEnd, a.m_portEnd, a.m_pathAfterLastSlash, a.m_pathEnd, a.m_queryEnd, a.m_fragmentEnd, a.m_string.utf8().data(),
&gt; &gt; +        b.m_isValid, b.m_protocolIsInHTTPFamily, b.m_schemeEnd, b.m_userStart, b.m_userEnd, b.m_passwordEnd, b.m_hostEnd, b.m_portEnd, b.m_pathAfterLastSlash, b.m_pathEnd, b.m_queryEnd, b.m_fragmentEnd, b.m_string.utf8().data());
&gt; &gt; +
&gt; 
&gt; Debug-only code, I know. Makes me sad anyways.
This makes me happy.  I put them each on their own line, if that makes you happier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220688</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-16 17:43:20 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/204544</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286209</attachid>
            <date>2016-08-16 15:03:11 -0700</date>
            <delta_ts>2016-08-16 17:09:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160913-20160816150124.patch</filename>
            <type>text/plain</type>
            <size>21005</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDUxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDE2LTA4LTE2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVVJMUGFyc2Vy
IHNob3VsZCBwYXJzZSBVUkxzIHdpdGhvdXQgY3JlZGVudGlhbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDkxMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gcGFyc2luZyBhIFVSTCwgYWZ0ZXIg
dGhlIHNjaGVtZSB3ZSBkbyBub3Qga25vdyBpZiB3ZSBhcmUgcGFyc2luZyBhIHVzZXJuYW1lIGFu
ZCBwYXNzd29yZAorICAgICAgICBvciBpZiB3ZSBhcmUgcGFyc2luZyB0aGUgaG9zdCB1bnRpbCB3
ZSBoaXQgYSAnQCcgaW5kaWNhdGluZyB0aGUgZW5kIG9mIHRoZSBjcmVkZW50aWFscyBvciBhIC8s
ID8sIG9yICMKKyAgICAgICAgaW5kaWNhdGluZyB0aGUgZW5kIG9mIHRoZSBob3N0LiAgQmVjYXVz
ZSB0aGVyZSBhcmUgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgcnVsZXMgZm9yIHNlcmlhbGl6aW5n
IHVzZXJuYW1lcywKKyAgICAgICAgcGFzc3dvcmRzLCBhbmQgaG9zdHMgKGFsbCBvZiB3aGljaCBo
YXZlIHlldCB0byBiZSBpbXBsZW1lbnRlZCBpbiBVUkxQYXJzZXIpIHdlIHB1dCB0aGUgY29kZSBw
b2ludHMgYWZ0ZXIgdGhlIAorICAgICAgICBzY2hlbWUgaW4gYSBzcGVjaWFsIGJ1ZmZlciB0aGF0
IHdpbGwgYmUgcHJvY2Vzc2VkIG9uY2Ugd2Uga25vdyB3aGF0IHdlIGFyZSBwYXJzaW5nLgorICAg
ICAgICAKKyAgICAgICAgSW4gdGhlIGZ1dHVyZSwgdGhpcyBjb3VsZCBiZSBvcHRpbWl6ZWQgYnkg
YXNzdW1pbmcgdGhhdCB3ZSBhcmUgcGFyc2luZyB0aGUgaG9zdCBhbmQgaWYgd2UgZW5jb3VudGVy
IGEgJ0AnIGNoYXJhY3RlciwKKyAgICAgICAgdGhlbiBkbyBzb21lIGV4dHJhIHdvcmsuICBUaGlz
IHdvdWxkIHNhdmUgdXMgdGhlIGVmZm9ydCBvZiBjb3B5aW5nIHRoZSBob3N0IHR3aWNlIGJlY2F1
c2UgbW9zdCBVUkxzIGRvbid0IGhhdmUgY3JlZGVudGlhbHMuCisKKyAgICAgICAgVGhpcyBpcyBj
b3ZlcmVkIGJ5IGEgbmV3IFVSTFBhcnNlciBBUEkgdGVzdC4KKworICAgICAgICAqIHBsYXRmb3Jt
L0xvZ2dpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkxQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aXNDMENvbnRyb2wpOgorICAgICAgICAoV2ViQ29yZTo6aXNDMENvbnRyb2xPclNw
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVGFiT3JOZXdsaW5lKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzU3BlY2lhbFNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6YXV0aG9yaXR5RW5kUmVhY2hlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6Omhvc3RFbmRSZWFjaGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlVSTFBhcnNlcjo6YWxsVmFsdWVzRXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6aXNB
U0NJSURpZ2l0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQVNDSUlBbHBoYSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0FTQ0lJQWxwaGFudW1lcmljKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9VUkxQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBh
cnNlcjo6cGFyc2UpOgorCiAyMDE2LTA4LTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IFdpbkNhaXJvIGJ1aWxkIGFmdGVyIHIyMDQ1
MTIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCShyZXZpc2lvbiAyMDQ1MTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4
LDYgKzc4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oU3RvcmFnZUFQSSkgXAogICAg
IE0oVGV4dEF1dG9zaXppbmcpIFwKICAgICBNKFRocmVhZGluZykgXAorICAgIE0oVVJMUGFyc2Vy
KSBcCiAgICAgTShXZWJBdWRpbykgXAogICAgIE0oV2ViR0wpIFwKICAgICBNKFdlYlJlcGxheSkg
XApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDQ1
MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSwxOCArMjUsMTYgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlVSTFBhcnNlci5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wg
aXNDMENvbnRyb2woY29uc3QgU3RyaW5nVmlldzo6Q29kZVBvaW50czo6SXRlcmF0b3ImIGMpIHsg
cmV0dXJuICpjIDw9IDB4MDAxRjsgfQotc3RhdGljIGJvb2wgaXNDMENvbnRyb2xPclNwYWNlKGNv
bnN0IFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yJiBjKSB7IHJldHVybiBpc0MwQ29u
dHJvbChjKSB8fCAqYyA9PSAweDAwMjA7IH0KLXN0YXRpYyBib29sIGlzVGFiT3JOZXdsaW5lKGNv
bnN0IFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yJiBjKSB7IHJldHVybiAqYyA9PSAw
eDAwMDkgfHwgKmMgPT0gMHgwMDBBIHx8ICpjID09IDB4MDAwRDsgfQotc3RhdGljIGJvb2wgaXNB
U0NJSURpZ2l0KGNvbnN0IFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yJiBjKSB7IHJl
dHVybiAqYyA+PSAweDAwMzAgICYmICpjIDw9IDB4MDAzOTsgfQotc3RhdGljIGJvb2wgaXNBU0NJ
SUFscGhhKGNvbnN0IFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yJiBjKSB7IHJldHVy
biAoKmMgPj0gMHgwMDQxICYmICpjIDw9IDB4MDA1QSkgfHwgKCpjID49IDB4MDA2MSAmJiAqYyA8
PSAweDAwN0EpOyB9Ci1zdGF0aWMgYm9vbCBpc0FTQ0lJQWxwaGFudW1lcmljKGNvbnN0IFN0cmlu
Z1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yJiBjKSB7IHJldHVybiBpc0FTQ0lJRGlnaXQoYykg
fHwgaXNBU0NJSUFscGhhKGMpOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGF0aWMgYm9vbCBpc0MwQ29udHJvbChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4g
Y2hhcmFjdGVyIDw9IDB4MDAwMUY7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHN0YXRpYyBib29sIGlzQzBDb250cm9sT3JTcGFjZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rlcikg
eyByZXR1cm4gaXNDMENvbnRyb2woY2hhcmFjdGVyKSB8fCBjaGFyYWN0ZXIgPT0gMHgwMDIwOyB9
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgYm9vbCBpc1RhYk9yTmV3
bGluZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyID09IDB4MDAw
OSB8fCBjaGFyYWN0ZXIgPT0gMHgwMDBBIHx8IGNoYXJhY3RlciA9PSAweDAwMEQ7IH0KICAgICAK
IHN0YXRpYyBib29sIGlzU3BlY2lhbFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKQEAg
LTUxLDEzICs0OSwxNCBAQCBzdGF0aWMgYm9vbCBpc1NwZWNpYWxTY2hlbWUoY29uc3QgU3RyaW5n
CiAKIE9wdGlvbmFsPFVSTD4gVVJMUGFyc2VyOjpwYXJzZShjb25zdCBTdHJpbmcmIGlucHV0LCBj
b25zdCBVUkwmIGJhc2UsIGNvbnN0IFRleHRFbmNvZGluZyYpCiB7Ci0gICAgVVJMIHVybDsKLSAg
ICAKKyAgICBtX3VybCA9IHsgfTsKKyAgICBtX2J1ZmZlci5jbGVhcigpOworICAgIG1fYXV0aG9y
aXR5T3JIb3N0QnVmZmVyLmNsZWFyKCk7CisKICAgICBhdXRvIGNvZGVQb2ludHMgPSBTdHJpbmdW
aWV3KGlucHV0KS5jb2RlUG9pbnRzKCk7CiAgICAgYXV0byBjID0gY29kZVBvaW50cy5iZWdpbigp
OwogICAgIGF1dG8gZW5kID0gY29kZVBvaW50cy5lbmQoKTsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1
ZmZlcjsKLSAgICB3aGlsZSAoaXNDMENvbnRyb2xPclNwYWNlKGMpKQorICAgIHdoaWxlIChpc0Mw
Q29udHJvbE9yU3BhY2UoKmMpKQogICAgICAgICArK2M7CiAgICAgCiAgICAgZW51bSBjbGFzcyBT
dGF0ZSA6IHVpbnQ4X3QgewpAQCAtNzEsMTAgKzcwLDggQEAgT3B0aW9uYWw8VVJMPiBVUkxQYXJz
ZXI6OnBhcnNlKGNvbnN0IFN0cgogICAgICAgICBSZWxhdGl2ZVNsYXNoLAogICAgICAgICBTcGVj
aWFsQXV0aG9yaXR5U2xhc2hlcywKICAgICAgICAgU3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNo
ZXMsCi0gICAgICAgIEF1dGhvcml0eSwKKyAgICAgICAgQXV0aG9yaXR5T3JIb3N0LAogICAgICAg
ICBIb3N0LAotICAgICAgICBIb3N0bmFtZSwKLSAgICAgICAgUG9ydCwKICAgICAgICAgRmlsZSwK
ICAgICAgICAgRmlsZVNsYXNoLAogICAgICAgICBGaWxlSG9zdCwKQEAgLTg1LDExICs4MiwxMiBA
QCBPcHRpb25hbDxVUkw+IFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgU3RyCiAgICAgICAgIEZyYWdt
ZW50LAogICAgIH07CiAKLSNkZWZpbmUgTE9HX1NUQVRFKHgpCisjZGVmaW5lIExPR19TVEFURSh4
KSBMT0coVVJMUGFyc2VyLCB4KQorI2RlZmluZSBMT0dfRklOQUxfU1RBVEUoeCkgTE9HKFVSTFBh
cnNlciwgIkZpbmFsIFN0YXRlOiAlcyIsIHgpCiAKICAgICBTdGF0ZSBzdGF0ZSA9IFN0YXRlOjpT
Y2hlbWVTdGFydDsKICAgICB3aGlsZSAoYyAhPSBlbmQpIHsKLSAgICAgICAgaWYgKGlzVGFiT3JO
ZXdsaW5lKGMpKSB7CisgICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqYykpIHsKICAgICAgICAg
ICAgICsrYzsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC05Nyw4ICs5NSw4
IEBAIE9wdGlvbmFsPFVSTD4gVVJMUGFyc2VyOjpwYXJzZShjb25zdCBTdHIKICAgICAgICAgc3dp
dGNoIChzdGF0ZSkgewogICAgICAgICBjYXNlIFN0YXRlOjpTY2hlbWVTdGFydDoKICAgICAgICAg
ICAgIExPR19TVEFURSgiU2NoZW1lU3RhcnQiKTsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJQWxw
aGEoYykpIHsKLSAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHRvQVNDSUlMb3dlcigqYykp
OworICAgICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYSgqYykpIHsKKyAgICAgICAgICAgICAgICBt
X2J1ZmZlci5hcHBlbmQodG9BU0NJSUxvd2VyKCpjKSk7CiAgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6U2NoZW1lOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6Tm9TY2hlbWU7CkBAIC0xMDYsMTIgKzEwNCwxMiBAQCBPcHRpb25hbDxVUkw+
IFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgU3RyCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBTdGF0ZTo6U2NoZW1lOgogICAgICAgICAgICAgTE9HX1NUQVRFKCJTY2hlbWUiKTsKLSAg
ICAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKGMpIHx8ICpjID09ICcrJyB8fCAqYyA9
PSAnLScgfHwgKmMgPT0gJy4nKQotICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQodG9BU0NJ
SUxvd2VyKCpjKSk7CisgICAgICAgICAgICBpZiAoaXNBU0NJSUFscGhhbnVtZXJpYygqYykgfHwg
KmMgPT0gJysnIHx8ICpjID09ICctJyB8fCAqYyA9PSAnLicpCisgICAgICAgICAgICAgICAgbV9i
dWZmZXIuYXBwZW5kKHRvQVNDSUlMb3dlcigqYykpOwogICAgICAgICAgICAgZWxzZSBpZiAoKmMg
PT0gJzonKSB7Ci0gICAgICAgICAgICAgICAgdXJsLm1fc2NoZW1lRW5kID0gYnVmZmVyLmxlbmd0
aCgpOwotICAgICAgICAgICAgICAgIFN0cmluZyB1cmxTY2hlbWUgPSBidWZmZXIudG9TdHJpbmco
KTsgLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gZG8gdGhpcyB3aXRob3V0IHNocmlua2luZyB0aGUg
YnVmZmVyLgotICAgICAgICAgICAgICAgIHVybC5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSB1
cmxTY2hlbWUgPT0gImh0dHAiIHx8IHVybFNjaGVtZSA9PSAiaHR0cHMiOworICAgICAgICAgICAg
ICAgIG1fdXJsLm1fc2NoZW1lRW5kID0gbV9idWZmZXIubGVuZ3RoKCk7CisgICAgICAgICAgICAg
ICAgU3RyaW5nIHVybFNjaGVtZSA9IG1fYnVmZmVyLnRvU3RyaW5nKCk7IC8vIEZJWE1FOiBGaW5k
IGEgd2F5IHRvIGRvIHRoaXMgd2l0aG91dCBzaHJpbmtpbmcgdGhlIG1fYnVmZmVyLgorICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IHVybFNjaGVtZSA9PSAi
aHR0cCIgfHwgdXJsU2NoZW1lID09ICJodHRwcyI7CiAgICAgICAgICAgICAgICAgaWYgKHVybFNj
aGVtZSA9PSAiZmlsZSIpCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7
CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNTcGVjaWFsU2NoZW1lKHVybFNjaGVtZSkpIHsK
QEAgLTEyMSw5ICsxMTksOSBAQCBPcHRpb25hbDxVUkw+IFVSTFBhcnNlcjo6cGFyc2UoY29uc3Qg
U3RyCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9y
aXR5U2xhc2hlczsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6U2NoZW1lRW5kQ2hlY2tGb3JTbGFzaGVzOwotICAgICAgICAgICAgICAg
IGJ1ZmZlci5hcHBlbmQoJzonKTsKKyAgICAgICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQoJzon
KTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyLmNsZWFyKCk7
CisgICAgICAgICAgICAgICAgbV9idWZmZXIuY2xlYXIoKTsKICAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpOb1NjaGVtZTsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogRmluZCBhIHdh
eSB0byBzdGFydCBvdmVyIGhlcmUuCiAgICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsK
QEAgLTE3OSw5ICsxNzcsOSBAQCBPcHRpb25hbDxVUkw+IFVSTFBhcnNlcjo6cGFyc2UoY29uc3Qg
U3RyCiAgICAgICAgICAgICAgICAgKytjOwogICAgICAgICAgICAgICAgIGlmIChjID09IGVuZCkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Ci0gICAgICAgICAgICAgICAgYnVm
ZmVyLmFwcGVuZCgnLycpOworICAgICAgICAgICAgICAgIG1fYnVmZmVyLmFwcGVuZCgnLycpOwog
ICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICAgICAgYnVm
ZmVyLmFwcGVuZCgnLycpOworICAgICAgICAgICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQoJy8n
KTsKICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUln
bm9yZVNsYXNoZXM7CiAgICAgICAgICAgICAgICAgICAgICsrYzsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xOTMsNTkgKzE5MSwzMiBAQCBPcHRpb25hbDxVUkw+IFVSTFBhcnNlcjo6
cGFyc2UoY29uc3QgU3RyCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdGF0ZTo6
U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM6CiAgICAgICAgICAgICBMT0dfU1RBVEUoIlNw
ZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzIik7Ci0gICAgICAgICAgICBpZiAoKmMgIT0gJy8n
ICYmICpjICE9ICdcXCcpIHsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3Jp
dHk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgKytjOworICAgICAgICAgICAgaWYgKCpjID09
ICcvJyB8fCAqYyA9PSAnXFwnKQorICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgIG1f
dXJsLm1fdXNlclN0YXJ0ID0gbV9idWZmZXIubGVuZ3RoKCk7CisgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBTdGF0ZTo6QXV0aG9yaXR5OgotICAgICAgICAgICAgTE9HX1NUQVRFKCJBdXRob3JpdHkiKTsK
LSAgICAgICAgICAgIGlmICghdXJsLm1fdXNlclN0YXJ0KQotICAgICAgICAgICAgICAgIHVybC5t
X3VzZXJTdGFydCA9IGJ1ZmZlci5sZW5ndGgoKTsKKyAgICAgICAgY2FzZSBTdGF0ZTo6QXV0aG9y
aXR5T3JIb3N0OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJBdXRob3JpdHlPckhvc3QiKTsKICAg
ICAgICAgICAgIGlmICgqYyA9PSAnQCcpIHsKLSAgICAgICAgICAgICAgICB1cmwubV9wYXNzd29y
ZEVuZCA9IGJ1ZmZlci5sZW5ndGgoKTsKLSAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCdA
Jyk7CisgICAgICAgICAgICAgICAgYXV0aG9yaXR5RW5kUmVhY2hlZCgpOwogICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6Okhvc3Q7Ci0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgICAgICAgICAg
dXJsLm1fdXNlckVuZCA9IGJ1ZmZlci5sZW5ndGgoKTsKLSAgICAgICAgICAgICAgICBidWZmZXIu
YXBwZW5kKCpjKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCpj
ID09ICcvJyB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHVybC5tX3Bhc3N3b3JkRW5kID0gYnVmZmVyLmxlbmd0aCgpOwotICAgICAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpIb3N0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBidWZmZXIuYXBwZW5kKCpjKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICsrYzsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpIb3N0OgotICAgICAgICBjYXNl
IFN0YXRlOjpIb3N0bmFtZToKLSAgICAgICAgICAgIExPR19TVEFURSgiSG9zdC9Ib3N0bmFtZSIp
OwotICAgICAgICAgICAgaWYgKCpjID09ICc6JykgewotICAgICAgICAgICAgICAgIHVybC5tX2hv
c3RFbmQgPSBidWZmZXIubGVuZ3RoKCk7Ci0gICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgn
OicpOwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBvcnQ7CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAgICAg
ICAgICAgICAgdXJsLm1faG9zdEVuZCA9IGJ1ZmZlci5sZW5ndGgoKTsKKyAgICAgICAgICAgICAg
ICBob3N0RW5kUmVhY2hlZCgpOwogICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7
Ci0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCpjKTsKKyAgICAg
ICAgICAgICAgICBtX2F1dGhvcml0eU9ySG9zdEJ1ZmZlci5hcHBlbmQoKmMpOwogICAgICAgICAg
ICAgKytjOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlBvcnQ6Ci0g
ICAgICAgICAgICBMT0dfU1RBVEUoIlBvcnQiKTsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJRGln
aXQoYykpIHsKLSAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCpjKTsKLSAgICAgICAgICAg
IH0gZWxzZSBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICc/JyB8fCAqYyA9PSAnIycpIHsKLSAgICAg
ICAgICAgICAgICB1cmwubV9wb3J0RW5kID0gYnVmZmVyLmxlbmd0aCgpOwotICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OlBhdGhTdGFydDsKKyAgICAgICAgY2FzZSBTdGF0ZTo6SG9zdDoK
KyAgICAgICAgICAgIExPR19TVEFURSgiSG9zdCIpOworICAgICAgICAgICAgaWYgKCpjID09ICcv
JyB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7CisgICAgICAgICAgICAgICAgaG9zdEVuZFJl
YWNoZWQoKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2F1dGhvcml0eU9ySG9z
dEJ1ZmZlci5hcHBlbmQoKmMpOwogICAgICAgICAgICAgKytjOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgU3RhdGU6OkZpbGU6CkBAIC0yNzAsOCArMjQxLDggQEAgT3B0aW9uYWw8
VVJMPiBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IFN0cgogICAgICAgICBjYXNlIFN0YXRlOjpQYXRo
OgogICAgICAgICAgICAgTE9HX1NUQVRFKCJQYXRoIik7CiAgICAgICAgICAgICBpZiAoKmMgPT0g
Jy8nKSB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgnLycpOwotICAgICAgICAgICAg
ICAgIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGJ1ZmZlci5sZW5ndGgoKTsKKyAgICAgICAg
ICAgICAgICBtX2J1ZmZlci5hcHBlbmQoJy8nKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaCA9IG1fYnVmZmVyLmxlbmd0aCgpOwogICAgICAgICAgICAgICAgICsr
YzsKICAgICAgICAgICAgICAgICBpZiAoYyA9PSBlbmQpCiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMjg0LDE2ICsyNTUsMTYgQEAgT3B0aW9uYWw8VVJMPiBVUkxQYXJzZXI6OnBhcnNl
KGNvbnN0IFN0cgogICAgICAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJz8nKSB7Ci0gICAgICAg
ICAgICAgICAgdXJsLm1fcGF0aEVuZCA9IGJ1ZmZlci5sZW5ndGgoKTsKKyAgICAgICAgICAgICAg
ICBtX3VybC5tX3BhdGhFbmQgPSBtX2J1ZmZlci5sZW5ndGgoKTsKICAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpRdWVyeTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgdXJsLm1fcGF0aEVu
ZCA9IGJ1ZmZlci5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBt
X2J1ZmZlci5sZW5ndGgoKTsKICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVu
dDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IC8vIEZJWE1FOiBQZXJjZW50IGVuY29kZSBjCi0gICAgICAgICAgICBidWZmZXIuYXBwZW5kKCpj
KTsKKyAgICAgICAgICAgIG1fYnVmZmVyLmFwcGVuZCgqYyk7CiAgICAgICAgICAgICArK2M7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBh
dGg6CkBAIC0zMDQsNzkgKzI3NSwxNTIgQEAgT3B0aW9uYWw8VVJMPiBVUkxQYXJzZXI6OnBhcnNl
KGNvbnN0IFN0cgogICAgICAgICBjYXNlIFN0YXRlOjpRdWVyeToKICAgICAgICAgICAgIExPR19T
VEFURSgiUXVlcnkiKTsKICAgICAgICAgICAgIGlmICgqYyA9PSAnIycpIHsKLSAgICAgICAgICAg
ICAgICB1cmwubV9xdWVyeUVuZCA9IGJ1ZmZlci5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBt
X3VybC5tX3F1ZXJ5RW5kID0gbV9idWZmZXIubGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBidWZmZXIuYXBwZW5kKCpjKTsKKyAgICAgICAgICAgIG1fYnVm
ZmVyLmFwcGVuZCgqYyk7CiAgICAgICAgICAgICArK2M7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBTdGF0ZTo6RnJhZ21lbnQ6CiAgICAgICAgICAgICBMT0dfU1RBVEUoIkZyYWdt
ZW50Iik7Ci0gICAgICAgICAgICBidWZmZXIuYXBwZW5kKCpjKTsKKyAgICAgICAgICAgIG1fYnVm
ZmVyLmFwcGVuZCgqYyk7CiAgICAgICAgICAgICArK2M7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHN3aXRjaCAoc3RhdGUpIHsKICAgICBjYXNlIFN0
YXRlOjpTY2hlbWVTdGFydDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTY2hlbWVTdGFydCIp
OworICAgICAgICBicmVhazsKICAgICBjYXNlIFN0YXRlOjpTY2hlbWU6CisgICAgICAgIExPR19G
SU5BTF9TVEFURSgiU2NoZW1lIik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RhdGU6OlNj
aGVtZUVuZENoZWNrRm9yU2xhc2hlczoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTY2hlbWVF
bmRDaGVja0ZvclNsYXNoZXMiKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdGF0ZTo6Tm9T
Y2hlbWU6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiTm9TY2hlbWUiKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk6CisgICAgICAg
IExPR19GSU5BTF9TVEFURSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsKKyAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OgorICAgICAgICBMT0dfRklO
QUxfU1RBVEUoIlBhdGhPckF1dGhvcml0eSIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFN0
YXRlOjpSZWxhdGl2ZToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJSZWxhdGl2ZSIpOworICAg
ICAgICBicmVhazsKICAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZVNsYXNoOgorICAgICAgICBMT0df
RklOQUxfU1RBVEUoIlJlbGF0aXZlU2xhc2giKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBT
dGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgi
U3BlY2lhbEF1dGhvcml0eVNsYXNoZXMiKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdGF0
ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM6Ci0gICAgY2FzZSBTdGF0ZTo6QXV0aG9y
aXR5OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFz
aGVzIik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OkF1dGhvcml0eU9ySG9zdDoK
KyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJBdXRob3JpdHlPckhvc3QiKTsKKyAgICAgICAgbV91
cmwubV91c2VyRW5kID0gbV9idWZmZXIubGVuZ3RoKCk7CisgICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2Ug
U3RhdGU6Okhvc3Q6Ci0gICAgY2FzZSBTdGF0ZTo6SG9zdG5hbWU6Ci0gICAgICAgIHVybC5tX2hv
c3RFbmQgPSBidWZmZXIubGVuZ3RoKCk7Ci0gICAgICAgIHVybC5tX3BvcnRFbmQgPSB1cmwubV9o
b3N0RW5kOwotICAgICAgICBidWZmZXIuYXBwZW5kKCcvJyk7Ci0gICAgICAgIHVybC5tX3BhdGhF
bmQgPSB1cmwubV9ob3N0RW5kICsgMTsKLSAgICAgICAgdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gdXJsLm1fcGF0aEVuZDsKLSAgICAgICAgdXJsLm1fcXVlcnlFbmQgPSB1cmwubV9wYXRoRW5k
OwotICAgICAgICB1cmwubV9mcmFnbWVudEVuZCA9IHVybC5tX3BhdGhFbmQ7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgU3RhdGU6OlBvcnQ6Ci0gICAgICAgIHVybC5tX3BvcnRFbmQgPSBidWZm
ZXIubGVuZ3RoKCk7Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQoJy8nKTsKLSAgICAgICAgdXJsLm1f
cGF0aEVuZCA9IHVybC5tX3BvcnRFbmQgKyAxOwotICAgICAgICB1cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggPSB1cmwubV9wYXRoRW5kOwotICAgICAgICB1cmwubV9xdWVyeUVuZCA9IHVybC5tX3Bh
dGhFbmQ7Ci0gICAgICAgIHVybC5tX2ZyYWdtZW50RW5kID0gdXJsLm1fcGF0aEVuZDsKKyAgICAg
ICAgaWYgKHN0YXRlID09IFN0YXRlOjpIb3N0KQorICAgICAgICAgICAgTE9HX0ZJTkFMX1NUQVRF
KCJIb3N0Iik7CisgICAgICAgIGhvc3RFbmRSZWFjaGVkKCk7CisgICAgICAgIG1fYnVmZmVyLmFw
cGVuZCgnLycpOworICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BvcnRFbmQgKyAx
OworICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEVuZDsK
KyAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgbV91
cmwubV9mcmFnbWVudEVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBTdGF0ZTo6RmlsZToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlIik7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgU3RhdGU6OkZpbGVTbGFzaDoKKyAgICAgICAgTE9HX0ZJTkFM
X1NUQVRFKCJGaWxlU2xhc2giKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdGF0ZTo6Rmls
ZUhvc3Q6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiRmlsZUhvc3QiKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBTdGF0ZTo6UGF0aFN0YXJ0OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUo
IlBhdGhTdGFydCIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFN0YXRlOjpQYXRoOgotICAg
ICAgICB1cmwubV9wYXRoRW5kID0gYnVmZmVyLmxlbmd0aCgpOwotICAgICAgICB1cmwubV9xdWVy
eUVuZCA9IHVybC5tX3BhdGhFbmQ7Ci0gICAgICAgIHVybC5tX2ZyYWdtZW50RW5kID0gdXJsLm1f
cGF0aEVuZDsKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJQYXRoIik7CisgICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IG1fYnVmZmVyLmxlbmd0aCgpOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5k
ID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICBtX3VybC5tX2ZyYWdtZW50RW5kID0gbV91cmwu
bV9wYXRoRW5kOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0YXRlOjpDYW5ub3RCZUFCYXNl
VVJMUGF0aDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJDYW5ub3RCZUFCYXNlVVJMUGF0aCIp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0YXRlOjpRdWVyeToKLSAgICAgICAgdXJsLm1f
cXVlcnlFbmQgPSBidWZmZXIubGVuZ3RoKCk7Ci0gICAgICAgIHVybC5tX2ZyYWdtZW50RW5kID0g
dXJsLm1fcXVlcnlFbmQ7CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiUXVlcnkiKTsKKyAgICAg
ICAgbV91cmwubV9xdWVyeUVuZCA9IG1fYnVmZmVyLmxlbmd0aCgpOworICAgICAgICBtX3VybC5t
X2ZyYWdtZW50RW5kID0gbV91cmwubV9xdWVyeUVuZDsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBTdGF0ZTo6RnJhZ21lbnQ6Ci0gICAgICAgIHVybC5tX2ZyYWdtZW50RW5kID0gYnVmZmVyLmxl
bmd0aCgpOworICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZyYWdtZW50Iik7CisgICAgICAgIG1f
dXJsLm1fZnJhZ21lbnRFbmQgPSBtX2J1ZmZlci5sZW5ndGgoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCi0gICAgdXJsLm1fc3RyaW5nID0gYnVmZmVyLnRvU3RyaW5nKCk7Ci0gICAgdXJsLm1f
aXNWYWxpZCA9IHRydWU7Ci0gICAgcmV0dXJuIHVybDsKKyAgICBtX3VybC5tX3N0cmluZyA9IG1f
YnVmZmVyLnRvU3RyaW5nKCk7CisgICAgbV91cmwubV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICByZXR1
cm4gbV91cmw7Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjphdXRob3JpdHlFbmRSZWFjaGVkKCkKK3sK
KyAgICBhdXRvIGNvZGVQb2ludHMgPSBTdHJpbmdWaWV3KG1fYXV0aG9yaXR5T3JIb3N0QnVmZmVy
LnRvU3RyaW5nKCkpLmNvZGVQb2ludHMoKTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gY29kZVBvaW50
cy5iZWdpbigpOworICAgIGF1dG8gZW5kID0gY29kZVBvaW50cy5lbmQoKTsKKyAgICBmb3IgKDsg
aXRlcmF0b3IgIT0gZW5kOyArK2l0ZXJhdG9yKSB7CisgICAgICAgIG1fYnVmZmVyLmFwcGVuZCgq
aXRlcmF0b3IpOworICAgICAgICBpZiAoKml0ZXJhdG9yID09ICc6JykgeworICAgICAgICAgICAg
KytpdGVyYXRvcjsKKyAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fYnVmZmVyLmxlbmd0
aCgpIC0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGZvciAo
OyBpdGVyYXRvciAhPSBlbmQ7ICsraXRlcmF0b3IpCisgICAgICAgIG1fYnVmZmVyLmFwcGVuZCgq
aXRlcmF0b3IpOworICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX2J1ZmZlci5sZW5ndGgoKTsK
KyAgICBtX2J1ZmZlci5hcHBlbmQoJ0AnKTsKKyAgICBtX2F1dGhvcml0eU9ySG9zdEJ1ZmZlci5j
bGVhcigpOworfQorCit2b2lkIFVSTFBhcnNlcjo6aG9zdEVuZFJlYWNoZWQoKQoreworICAgIGF1
dG8gY29kZVBvaW50cyA9IFN0cmluZ1ZpZXcobV9hdXRob3JpdHlPckhvc3RCdWZmZXIudG9TdHJp
bmcoKSkuY29kZVBvaW50cygpOworICAgIGF1dG8gaXRlcmF0b3IgPSBjb2RlUG9pbnRzLmJlZ2lu
KCk7CisgICAgYXV0byBlbmQgPSBjb2RlUG9pbnRzLmVuZCgpOworICAgIGZvciAoOyBpdGVyYXRv
ciAhPSBlbmQ7ICsraXRlcmF0b3IpIHsKKyAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpIHsK
KyAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBt
X2J1ZmZlci5sZW5ndGgoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyLmFwcGVuZCgnOicpOworICAg
ICAgICAgICAgZm9yICg7IGl0ZXJhdG9yICE9IGVuZDsgKytpdGVyYXRvcikKKyAgICAgICAgICAg
ICAgICBtX2J1ZmZlci5hcHBlbmQoKml0ZXJhdG9yKTsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9y
dEVuZCA9IG1fYnVmZmVyLmxlbmd0aCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIG1fYnVmZmVyLmFwcGVuZCgqaXRlcmF0b3IpOworICAgIH0KKyAgICBtX3VybC5t
X2hvc3RFbmQgPSBtX2J1ZmZlci5sZW5ndGgoKTsKKyAgICBtX3VybC5tX3BvcnRFbmQgPSBtX3Vy
bC5tX2hvc3RFbmQ7CisgICAgbV9hdXRob3JpdHlPckhvc3RCdWZmZXIuY2xlYXIoKTsKIH0KIAog
Ym9vbCBVUkxQYXJzZXI6OmFsbFZhbHVlc0VxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBi
KQogeworICAgIExPRyhVUkxQYXJzZXIsICIlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAl
ZCAlZCAlc1xuJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJXMiLAorICAgICAg
ICBhLm1faXNWYWxpZCwgYS5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHksIGEubV9zY2hlbWVFbmQs
IGEubV91c2VyU3RhcnQsIGEubV91c2VyRW5kLCBhLm1fcGFzc3dvcmRFbmQsIGEubV9ob3N0RW5k
LCBhLm1fcG9ydEVuZCwgYS5tX3BhdGhBZnRlckxhc3RTbGFzaCwgYS5tX3BhdGhFbmQsIGEubV9x
dWVyeUVuZCwgYS5tX2ZyYWdtZW50RW5kLCBhLm1fc3RyaW5nLnV0ZjgoKS5kYXRhKCksCisgICAg
ICAgIGIubV9pc1ZhbGlkLCBiLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSwgYi5tX3NjaGVtZUVu
ZCwgYi5tX3VzZXJTdGFydCwgYi5tX3VzZXJFbmQsIGIubV9wYXNzd29yZEVuZCwgYi5tX2hvc3RF
bmQsIGIubV9wb3J0RW5kLCBiLm1fcGF0aEFmdGVyTGFzdFNsYXNoLCBiLm1fcGF0aEVuZCwgYi5t
X3F1ZXJ5RW5kLCBiLm1fZnJhZ21lbnRFbmQsIGIubV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7CisK
ICAgICByZXR1cm4gYS5tX3N0cmluZyA9PSBiLm1fc3RyaW5nCiAgICAgICAgICYmIGEubV9pc1Zh
bGlkID09IGIubV9pc1ZhbGlkCiAgICAgICAgICYmIGEubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5
ID09IGIubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkxQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
UkxQYXJzZXIuaAkocmV2aXNpb24gMjA0NTEyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwyMCBAQAogI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCiBjbGFzcyBVUkxQYXJzZXIgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBPcHRpb25hbDxVUkw+IHBhcnNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYg
PSB7IH0sIGNvbnN0IFRleHRFbmNvZGluZyYgPSBVVEY4RW5jb2RpbmcoKSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgT3B0aW9uYWw8VVJMPiBwYXJzZShjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmID0g
eyB9LCBjb25zdCBUZXh0RW5jb2RpbmcmID0gVVRGOEVuY29kaW5nKCkpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGFsbFZhbHVlc0VxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYp
OworcHJpdmF0ZToKKyAgICBVUkwgbV91cmw7CisgICAgU3RyaW5nQnVpbGRlciBtX2J1ZmZlcjsK
KyAgICBTdHJpbmdCdWlsZGVyIG1fYXV0aG9yaXR5T3JIb3N0QnVmZmVyOworICAgIHZvaWQgYXV0
aG9yaXR5RW5kUmVhY2hlZCgpOworICAgIHZvaWQgaG9zdEVuZFJlYWNoZWQoKTsKIH07CiAKIH0K
SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwNDUyNCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDE2LTA4LTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgVVJMUGFyc2VyIHNob3VsZCBwYXJzZSBVUkxzIHdpdGhvdXQg
Y3JlZGVudGlhbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MDkxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMTYtMDgtMTUgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQWRkIGlQYWQg
dmlld3BvcnQgYW5kIGZvcm0gdGVzdHMsIGFuZCByZXZlcnQgdGhlIGlQYWQtdGVzdGluZyBwYXJ0
IG9mIHIyMDIxMzIKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9VUkxQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDQ1MTIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMs
OCBAQCBzdHJ1Y3QgRXhwZWN0ZWRQYXJ0cyB7CiBzdGF0aWMgY29uc3QgY2hhciogcyhjb25zdCBT
dHJpbmcmIHMpIHsgcmV0dXJuIHMudXRmOCgpLmRhdGEoKTsgfQogc3RhdGljIHZvaWQgY2hlY2tV
UkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzKQog
ewotICAgIGF1dG8gdXJsID0gVVJMUGFyc2VyOjpwYXJzZSh1cmxTdHJpbmcpOworICAgIFVSTFBh
cnNlciBwYXJzZXI7CisgICAgYXV0byB1cmwgPSBwYXJzZXIucGFyc2UodXJsU3RyaW5nKTsKICAg
ICBFWFBFQ1RfU1RSRVEocyhwYXJ0cy5wcm90b2NvbCksIHModXJsLT5wcm90b2NvbCgpKSk7CiAg
ICAgRVhQRUNUX1NUUkVRKHMocGFydHMudXNlciksIHModXJsLT51c2VyKCkpKTsKICAgICBFWFBF
Q1RfU1RSRVEocyhwYXJ0cy5wYXNzd29yZCksIHModXJsLT5wYXNzKCkpKTsKQEAgLTg2LDYgKzg3
LDcgQEAgVEVTVF9GKFVSTFBhcnNlclRlc3QsIFBhcnNlKQogICAgIGNoZWNrVVJMKCJodHRwOi8v
dXNlcjpwYXNzQHdlYmtpdC5vcmc6MTIzLyIsIHsiaHR0cCIsICJ1c2VyIiwgInBhc3MiLCAid2Vi
a2l0Lm9yZyIsIDEyMywgIi8iLCAiIiwgIiIsICJodHRwOi8vdXNlcjpwYXNzQHdlYmtpdC5vcmc6
MTIzLyJ9KTsKICAgICBjaGVja1VSTCgiaHR0cDovL3VzZXI6cGFzc0B3ZWJraXQub3JnOjEyMyIs
IHsiaHR0cCIsICJ1c2VyIiwgInBhc3MiLCAid2Via2l0Lm9yZyIsIDEyMywgIi8iLCAiIiwgIiIs
ICJodHRwOi8vdXNlcjpwYXNzQHdlYmtpdC5vcmc6MTIzLyJ9KTsKICAgICBjaGVja1VSTCgiaHR0
cDovL3VzZXI6cGFzc0B3ZWJraXQub3JnIiwgeyJodHRwIiwgInVzZXIiLCAicGFzcyIsICJ3ZWJr
aXQub3JnIiwgMCwgIi8iLCAiIiwgIiIsICJodHRwOi8vdXNlcjpwYXNzQHdlYmtpdC5vcmcvIn0p
OworICAgIGNoZWNrVVJMKCJodHRwOi8vd2Via2l0Lm9yZyIsIHsiaHR0cCIsICIiLCAiIiwgIndl
YmtpdC5vcmciLCAwLCAiLyIsICIiLCAiIiwgImh0dHA6Ly93ZWJraXQub3JnLyJ9KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286236</attachid>
            <date>2016-08-16 17:09:26 -0700</date>
            <delta_ts>2016-08-16 17:12:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160913-20160816170739.patch</filename>
            <type>text/plain</type>
            <size>21504</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDUxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDE2LTA4LTE2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVVJMUGFyc2Vy
IHNob3VsZCBwYXJzZSBVUkxzIHdpdGhvdXQgY3JlZGVudGlhbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDkxMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gcGFyc2luZyBhIFVSTCwgYWZ0ZXIg
dGhlIHNjaGVtZSB3ZSBkbyBub3Qga25vdyBpZiB3ZSBhcmUgcGFyc2luZyBhIHVzZXJuYW1lIGFu
ZCBwYXNzd29yZAorICAgICAgICBvciBpZiB3ZSBhcmUgcGFyc2luZyB0aGUgaG9zdCB1bnRpbCB3
ZSBoaXQgYSAnQCcgaW5kaWNhdGluZyB0aGUgZW5kIG9mIHRoZSBjcmVkZW50aWFscyBvciBhIC8s
ID8sIG9yICMKKyAgICAgICAgaW5kaWNhdGluZyB0aGUgZW5kIG9mIHRoZSBob3N0LiAgQmVjYXVz
ZSB0aGVyZSBhcmUgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgcnVsZXMgZm9yIHNlcmlhbGl6aW5n
IHVzZXJuYW1lcywKKyAgICAgICAgcGFzc3dvcmRzLCBhbmQgaG9zdHMgKGFsbCBvZiB3aGljaCBo
YXZlIHlldCB0byBiZSBpbXBsZW1lbnRlZCBpbiBVUkxQYXJzZXIpIHdlIHB1dCB0aGUgY29kZSBw
b2ludHMgYWZ0ZXIgdGhlIAorICAgICAgICBzY2hlbWUgaW4gYSBzcGVjaWFsIGJ1ZmZlciB0aGF0
IHdpbGwgYmUgcHJvY2Vzc2VkIG9uY2Ugd2Uga25vdyB3aGF0IHdlIGFyZSBwYXJzaW5nLgorICAg
ICAgICAKKyAgICAgICAgSW4gdGhlIGZ1dHVyZSwgdGhpcyBjb3VsZCBiZSBvcHRpbWl6ZWQgYnkg
YXNzdW1pbmcgdGhhdCB3ZSBhcmUgcGFyc2luZyB0aGUgaG9zdCBhbmQgaWYgd2UgZW5jb3VudGVy
IGEgJ0AnIGNoYXJhY3RlciwKKyAgICAgICAgdGhlbiBkbyBzb21lIGV4dHJhIHdvcmsuICBUaGlz
IHdvdWxkIHNhdmUgdXMgdGhlIGVmZm9ydCBvZiBjb3B5aW5nIHRoZSBob3N0IHR3aWNlIGJlY2F1
c2UgbW9zdCBVUkxzIGRvbid0IGhhdmUgY3JlZGVudGlhbHMuCisKKyAgICAgICAgVGhpcyBpcyBj
b3ZlcmVkIGJ5IGEgbmV3IFVSTFBhcnNlciBBUEkgdGVzdC4KKworICAgICAgICAqIHBsYXRmb3Jt
L0xvZ2dpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkxQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aXNDMENvbnRyb2wpOgorICAgICAgICAoV2ViQ29yZTo6aXNDMENvbnRyb2xPclNw
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVGFiT3JOZXdsaW5lKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzU3BlY2lhbFNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6YXV0aG9yaXR5RW5kUmVhY2hlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6Omhvc3RFbmRSZWFjaGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlVSTFBhcnNlcjo6YWxsVmFsdWVzRXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6aXNB
U0NJSURpZ2l0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQVNDSUlBbHBoYSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0FTQ0lJQWxwaGFudW1lcmljKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9VUkxQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBh
cnNlcjo6cGFyc2UpOgorCiAyMDE2LTA4LTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IFdpbkNhaXJvIGJ1aWxkIGFmdGVyIHIyMDQ1
MTIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCShyZXZpc2lvbiAyMDQ1MTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4
LDYgKzc4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oU3RvcmFnZUFQSSkgXAogICAg
IE0oVGV4dEF1dG9zaXppbmcpIFwKICAgICBNKFRocmVhZGluZykgXAorICAgIE0oVVJMUGFyc2Vy
KSBcCiAgICAgTShXZWJBdWRpbykgXAogICAgIE0oV2ViR0wpIFwKICAgICBNKFdlYlJlcGxheSkg
XApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDQ1
MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSwxOCArMjUsMTYgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlVSTFBhcnNlci5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wg
aXNDMENvbnRyb2woY29uc3QgU3RyaW5nVmlldzo6Q29kZVBvaW50czo6SXRlcmF0b3ImIGMpIHsg
cmV0dXJuICpjIDw9IDB4MDAxRjsgfQotc3RhdGljIGJvb2wgaXNDMENvbnRyb2xPclNwYWNlKGNv
bnN0IFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yJiBjKSB7IHJldHVybiBpc0MwQ29u
dHJvbChjKSB8fCAqYyA9PSAweDAwMjA7IH0KLXN0YXRpYyBib29sIGlzVGFiT3JOZXdsaW5lKGNv
bnN0IFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yJiBjKSB7IHJldHVybiAqYyA9PSAw
eDAwMDkgfHwgKmMgPT0gMHgwMDBBIHx8ICpjID09IDB4MDAwRDsgfQotc3RhdGljIGJvb2wgaXNB
U0NJSURpZ2l0KGNvbnN0IFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yJiBjKSB7IHJl
dHVybiAqYyA+PSAweDAwMzAgICYmICpjIDw9IDB4MDAzOTsgfQotc3RhdGljIGJvb2wgaXNBU0NJ
SUFscGhhKGNvbnN0IFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yJiBjKSB7IHJldHVy
biAoKmMgPj0gMHgwMDQxICYmICpjIDw9IDB4MDA1QSkgfHwgKCpjID49IDB4MDA2MSAmJiAqYyA8
PSAweDAwN0EpOyB9Ci1zdGF0aWMgYm9vbCBpc0FTQ0lJQWxwaGFudW1lcmljKGNvbnN0IFN0cmlu
Z1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yJiBjKSB7IHJldHVybiBpc0FTQ0lJRGlnaXQoYykg
fHwgaXNBU0NJSUFscGhhKGMpOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGF0aWMgYm9vbCBpc0MwQ29udHJvbChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4g
Y2hhcmFjdGVyIDw9IDB4MDAwMUY7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHN0YXRpYyBib29sIGlzQzBDb250cm9sT3JTcGFjZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rlcikg
eyByZXR1cm4gaXNDMENvbnRyb2woY2hhcmFjdGVyKSB8fCBjaGFyYWN0ZXIgPT0gMHgwMDIwOyB9
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgYm9vbCBpc1RhYk9yTmV3
bGluZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyID09IDB4MDAw
OSB8fCBjaGFyYWN0ZXIgPT0gMHgwMDBBIHx8IGNoYXJhY3RlciA9PSAweDAwMEQ7IH0KICAgICAK
IHN0YXRpYyBib29sIGlzU3BlY2lhbFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKQEAg
LTUxLDEzICs0OSwxNCBAQCBzdGF0aWMgYm9vbCBpc1NwZWNpYWxTY2hlbWUoY29uc3QgU3RyaW5n
CiAKIE9wdGlvbmFsPFVSTD4gVVJMUGFyc2VyOjpwYXJzZShjb25zdCBTdHJpbmcmIGlucHV0LCBj
b25zdCBVUkwmIGJhc2UsIGNvbnN0IFRleHRFbmNvZGluZyYpCiB7Ci0gICAgVVJMIHVybDsKLSAg
ICAKKyAgICBtX3VybCA9IHsgfTsKKyAgICBtX2J1ZmZlci5jbGVhcigpOworICAgIG1fYXV0aG9y
aXR5T3JIb3N0QnVmZmVyLmNsZWFyKCk7CisKICAgICBhdXRvIGNvZGVQb2ludHMgPSBTdHJpbmdW
aWV3KGlucHV0KS5jb2RlUG9pbnRzKCk7CiAgICAgYXV0byBjID0gY29kZVBvaW50cy5iZWdpbigp
OwogICAgIGF1dG8gZW5kID0gY29kZVBvaW50cy5lbmQoKTsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1
ZmZlcjsKLSAgICB3aGlsZSAoaXNDMENvbnRyb2xPclNwYWNlKGMpKQorICAgIHdoaWxlIChjICE9
IGVuZCAmJiBpc0MwQ29udHJvbE9yU3BhY2UoKmMpKQogICAgICAgICArK2M7CiAgICAgCiAgICAg
ZW51bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3QgewpAQCAtNzEsMTAgKzcwLDggQEAgT3B0aW9uYWw8
VVJMPiBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IFN0cgogICAgICAgICBSZWxhdGl2ZVNsYXNoLAog
ICAgICAgICBTcGVjaWFsQXV0aG9yaXR5U2xhc2hlcywKICAgICAgICAgU3BlY2lhbEF1dGhvcml0
eUlnbm9yZVNsYXNoZXMsCi0gICAgICAgIEF1dGhvcml0eSwKKyAgICAgICAgQXV0aG9yaXR5T3JI
b3N0LAogICAgICAgICBIb3N0LAotICAgICAgICBIb3N0bmFtZSwKLSAgICAgICAgUG9ydCwKICAg
ICAgICAgRmlsZSwKICAgICAgICAgRmlsZVNsYXNoLAogICAgICAgICBGaWxlSG9zdCwKQEAgLTg1
LDExICs4MiwxMiBAQCBPcHRpb25hbDxVUkw+IFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgU3RyCiAg
ICAgICAgIEZyYWdtZW50LAogICAgIH07CiAKLSNkZWZpbmUgTE9HX1NUQVRFKHgpCisjZGVmaW5l
IExPR19TVEFURSh4KSBMT0coVVJMUGFyc2VyLCB4KQorI2RlZmluZSBMT0dfRklOQUxfU1RBVEUo
eCkgTE9HKFVSTFBhcnNlciwgIkZpbmFsIFN0YXRlOiAlcyIsIHgpCiAKICAgICBTdGF0ZSBzdGF0
ZSA9IFN0YXRlOjpTY2hlbWVTdGFydDsKICAgICB3aGlsZSAoYyAhPSBlbmQpIHsKLSAgICAgICAg
aWYgKGlzVGFiT3JOZXdsaW5lKGMpKSB7CisgICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqYykp
IHsKICAgICAgICAgICAgICsrYzsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBA
IC05Nyw4ICs5NSw4IEBAIE9wdGlvbmFsPFVSTD4gVVJMUGFyc2VyOjpwYXJzZShjb25zdCBTdHIK
ICAgICAgICAgc3dpdGNoIChzdGF0ZSkgewogICAgICAgICBjYXNlIFN0YXRlOjpTY2hlbWVTdGFy
dDoKICAgICAgICAgICAgIExPR19TVEFURSgiU2NoZW1lU3RhcnQiKTsKLSAgICAgICAgICAgIGlm
IChpc0FTQ0lJQWxwaGEoYykpIHsKLSAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHRvQVND
SUlMb3dlcigqYykpOworICAgICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYSgqYykpIHsKKyAgICAg
ICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQodG9BU0NJSUxvd2VyKCpjKSk7CiAgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6U2NoZW1lOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7CkBAIC0xMDYsMTIgKzEwNCwxMiBAQCBP
cHRpb25hbDxVUkw+IFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgU3RyCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBTdGF0ZTo6U2NoZW1lOgogICAgICAgICAgICAgTE9HX1NUQVRFKCJT
Y2hlbWUiKTsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKGMpIHx8ICpjID09
ICcrJyB8fCAqYyA9PSAnLScgfHwgKmMgPT0gJy4nKQotICAgICAgICAgICAgICAgIGJ1ZmZlci5h
cHBlbmQodG9BU0NJSUxvd2VyKCpjKSk7CisgICAgICAgICAgICBpZiAoaXNBU0NJSUFscGhhbnVt
ZXJpYygqYykgfHwgKmMgPT0gJysnIHx8ICpjID09ICctJyB8fCAqYyA9PSAnLicpCisgICAgICAg
ICAgICAgICAgbV9idWZmZXIuYXBwZW5kKHRvQVNDSUlMb3dlcigqYykpOwogICAgICAgICAgICAg
ZWxzZSBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgICAgICAgICAgdXJsLm1fc2NoZW1lRW5kID0g
YnVmZmVyLmxlbmd0aCgpOwotICAgICAgICAgICAgICAgIFN0cmluZyB1cmxTY2hlbWUgPSBidWZm
ZXIudG9TdHJpbmcoKTsgLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gZG8gdGhpcyB3aXRob3V0IHNo
cmlua2luZyB0aGUgYnVmZmVyLgotICAgICAgICAgICAgICAgIHVybC5tX3Byb3RvY29sSXNJbkhU
VFBGYW1pbHkgPSB1cmxTY2hlbWUgPT0gImh0dHAiIHx8IHVybFNjaGVtZSA9PSAiaHR0cHMiOwor
ICAgICAgICAgICAgICAgIG1fdXJsLm1fc2NoZW1lRW5kID0gbV9idWZmZXIubGVuZ3RoKCk7Cisg
ICAgICAgICAgICAgICAgU3RyaW5nIHVybFNjaGVtZSA9IG1fYnVmZmVyLnRvU3RyaW5nKCk7IC8v
IEZJWE1FOiBGaW5kIGEgd2F5IHRvIGRvIHRoaXMgd2l0aG91dCBzaHJpbmtpbmcgdGhlIG1fYnVm
ZmVyLgorICAgICAgICAgICAgICAgIG1fdXJsLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IHVy
bFNjaGVtZSA9PSAiaHR0cCIgfHwgdXJsU2NoZW1lID09ICJodHRwcyI7CiAgICAgICAgICAgICAg
ICAgaWYgKHVybFNjaGVtZSA9PSAiZmlsZSIpCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0g
U3RhdGU6OkZpbGU7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNTcGVjaWFsU2NoZW1lKHVy
bFNjaGVtZSkpIHsKQEAgLTEyMSw5ICsxMTksOSBAQCBPcHRpb25hbDxVUkw+IFVSTFBhcnNlcjo6
cGFyc2UoY29uc3QgU3RyCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpT
cGVjaWFsQXV0aG9yaXR5U2xhc2hlczsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U2NoZW1lRW5kQ2hlY2tGb3JTbGFzaGVzOwotICAg
ICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJzonKTsKKyAgICAgICAgICAgICAgICBtX2J1ZmZl
ci5hcHBlbmQoJzonKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYnVm
ZmVyLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgbV9idWZmZXIuY2xlYXIoKTsKICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogRmluZCBhIHdheSB0byBzdGFydCBvdmVyIGhlcmUuCiAgICAgICAgICAgICAgICAgbm90SW1w
bGVtZW50ZWQoKTsKQEAgLTE3OSw5ICsxNzcsOSBAQCBPcHRpb25hbDxVUkw+IFVSTFBhcnNlcjo6
cGFyc2UoY29uc3QgU3RyCiAgICAgICAgICAgICAgICAgKytjOwogICAgICAgICAgICAgICAgIGlm
IChjID09IGVuZCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Ci0gICAgICAg
ICAgICAgICAgYnVmZmVyLmFwcGVuZCgnLycpOworICAgICAgICAgICAgICAgIG1fYnVmZmVyLmFw
cGVuZCgnLycpOwogICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnLycpIHsKLSAgICAgICAgICAg
ICAgICAgICAgYnVmZmVyLmFwcGVuZCgnLycpOworICAgICAgICAgICAgICAgICAgICBtX2J1ZmZl
ci5hcHBlbmQoJy8nKTsKICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lh
bEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7CiAgICAgICAgICAgICAgICAgICAgICsrYzsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTMsNTkgKzE5MSwzMiBAQCBPcHRpb25hbDxVUkw+
IFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgU3RyCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM6CiAgICAgICAgICAgICBM
T0dfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzIik7Ci0gICAgICAgICAgICBp
ZiAoKmMgIT0gJy8nICYmICpjICE9ICdcXCcpIHsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpBdXRob3JpdHk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgKytjOworICAgICAgICAg
ICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKQorICAgICAgICAgICAgICAgICsrYzsKKyAg
ICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gbV9idWZmZXIubGVuZ3RoKCk7CisgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBTdGF0ZTo6QXV0aG9yaXR5OgotICAgICAgICAgICAgTE9HX1NUQVRFKCJB
dXRob3JpdHkiKTsKLSAgICAgICAgICAgIGlmICghdXJsLm1fdXNlclN0YXJ0KQotICAgICAgICAg
ICAgICAgIHVybC5tX3VzZXJTdGFydCA9IGJ1ZmZlci5sZW5ndGgoKTsKKyAgICAgICAgY2FzZSBT
dGF0ZTo6QXV0aG9yaXR5T3JIb3N0OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJBdXRob3JpdHlP
ckhvc3QiKTsKICAgICAgICAgICAgIGlmICgqYyA9PSAnQCcpIHsKLSAgICAgICAgICAgICAgICB1
cmwubV9wYXNzd29yZEVuZCA9IGJ1ZmZlci5sZW5ndGgoKTsKLSAgICAgICAgICAgICAgICBidWZm
ZXIuYXBwZW5kKCdAJyk7CisgICAgICAgICAgICAgICAgYXV0aG9yaXR5RW5kUmVhY2hlZCgpOwog
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Okhvc3Q7Ci0gICAgICAgICAgICAgICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJzonKSB7Ci0gICAg
ICAgICAgICAgICAgdXJsLm1fdXNlckVuZCA9IGJ1ZmZlci5sZW5ndGgoKTsKLSAgICAgICAgICAg
ICAgICBidWZmZXIuYXBwZW5kKCpjKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHVybC5tX3Bhc3N3b3JkRW5kID0gYnVmZmVyLmxlbmd0aCgpOwotICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpIb3N0OwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCpjKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICsrYzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpIb3N0Ogot
ICAgICAgICBjYXNlIFN0YXRlOjpIb3N0bmFtZToKLSAgICAgICAgICAgIExPR19TVEFURSgiSG9z
dC9Ib3N0bmFtZSIpOwotICAgICAgICAgICAgaWYgKCpjID09ICc6JykgewotICAgICAgICAgICAg
ICAgIHVybC5tX2hvc3RFbmQgPSBidWZmZXIubGVuZ3RoKCk7Ci0gICAgICAgICAgICAgICAgYnVm
ZmVyLmFwcGVuZCgnOicpOwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBvcnQ7CiAg
ICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMn
KSB7Ci0gICAgICAgICAgICAgICAgdXJsLm1faG9zdEVuZCA9IGJ1ZmZlci5sZW5ndGgoKTsKKyAg
ICAgICAgICAgICAgICBob3N0RW5kUmVhY2hlZCgpOwogICAgICAgICAgICAgICAgIHN0YXRlID0g
U3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5k
KCpjKTsKKyAgICAgICAgICAgICAgICBtX2F1dGhvcml0eU9ySG9zdEJ1ZmZlci5hcHBlbmQoKmMp
OwogICAgICAgICAgICAgKytjOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3Rh
dGU6OlBvcnQ6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlBvcnQiKTsKLSAgICAgICAgICAgIGlm
IChpc0FTQ0lJRGlnaXQoYykpIHsKLSAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCpjKTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICc/JyB8fCAqYyA9PSAn
IycpIHsKLSAgICAgICAgICAgICAgICB1cmwubV9wb3J0RW5kID0gYnVmZmVyLmxlbmd0aCgpOwot
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGhTdGFydDsKKyAgICAgICAgY2FzZSBT
dGF0ZTo6SG9zdDoKKyAgICAgICAgICAgIExPR19TVEFURSgiSG9zdCIpOworICAgICAgICAgICAg
aWYgKCpjID09ICcvJyB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7CisgICAgICAgICAgICAg
ICAgaG9zdEVuZFJlYWNoZWQoKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRo
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2F1
dGhvcml0eU9ySG9zdEJ1ZmZlci5hcHBlbmQoKmMpOwogICAgICAgICAgICAgKytjOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3RhdGU6OkZpbGU6CkBAIC0yNzAsOCArMjQxLDgg
QEAgT3B0aW9uYWw8VVJMPiBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IFN0cgogICAgICAgICBjYXNl
IFN0YXRlOjpQYXRoOgogICAgICAgICAgICAgTE9HX1NUQVRFKCJQYXRoIik7CiAgICAgICAgICAg
ICBpZiAoKmMgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgnLycpOwot
ICAgICAgICAgICAgICAgIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGJ1ZmZlci5sZW5ndGgo
KTsKKyAgICAgICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQoJy8nKTsKKyAgICAgICAgICAgICAg
ICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fYnVmZmVyLmxlbmd0aCgpOwogICAgICAg
ICAgICAgICAgICsrYzsKICAgICAgICAgICAgICAgICBpZiAoYyA9PSBlbmQpCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMjg0LDE2ICsyNTUsMTYgQEAgT3B0aW9uYWw8VVJMPiBVUkxQ
YXJzZXI6OnBhcnNlKGNvbnN0IFN0cgogICAgICAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJz8n
KSB7Ci0gICAgICAgICAgICAgICAgdXJsLm1fcGF0aEVuZCA9IGJ1ZmZlci5sZW5ndGgoKTsKKyAg
ICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX2J1ZmZlci5sZW5ndGgoKTsKICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpRdWVyeTsKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAg
dXJsLm1fcGF0aEVuZCA9IGJ1ZmZlci5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBtX3VybC5t
X3BhdGhFbmQgPSBtX2J1ZmZlci5sZW5ndGgoKTsKICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpGcmFnbWVudDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIC8vIEZJWE1FOiBQZXJjZW50IGVuY29kZSBjCi0gICAgICAgICAgICBidWZm
ZXIuYXBwZW5kKCpjKTsKKyAgICAgICAgICAgIG1fYnVmZmVyLmFwcGVuZCgqYyk7CiAgICAgICAg
ICAgICArK2M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdGF0ZTo6Q2Fubm90
QmVBQmFzZVVSTFBhdGg6CkBAIC0zMDQsNzkgKzI3NSwxNzcgQEAgT3B0aW9uYWw8VVJMPiBVUkxQ
YXJzZXI6OnBhcnNlKGNvbnN0IFN0cgogICAgICAgICBjYXNlIFN0YXRlOjpRdWVyeToKICAgICAg
ICAgICAgIExPR19TVEFURSgiUXVlcnkiKTsKICAgICAgICAgICAgIGlmICgqYyA9PSAnIycpIHsK
LSAgICAgICAgICAgICAgICB1cmwubV9xdWVyeUVuZCA9IGJ1ZmZlci5sZW5ndGgoKTsKKyAgICAg
ICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV9idWZmZXIubGVuZ3RoKCk7CiAgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBidWZmZXIuYXBwZW5kKCpjKTsKKyAgICAg
ICAgICAgIG1fYnVmZmVyLmFwcGVuZCgqYyk7CiAgICAgICAgICAgICArK2M7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBTdGF0ZTo6RnJhZ21lbnQ6CiAgICAgICAgICAgICBMT0df
U1RBVEUoIkZyYWdtZW50Iik7Ci0gICAgICAgICAgICBidWZmZXIuYXBwZW5kKCpjKTsKKyAgICAg
ICAgICAgIG1fYnVmZmVyLmFwcGVuZCgqYyk7CiAgICAgICAgICAgICArK2M7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHN3aXRjaCAoc3RhdGUpIHsK
ICAgICBjYXNlIFN0YXRlOjpTY2hlbWVTdGFydDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJT
Y2hlbWVTdGFydCIpOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBTdGF0ZTo6U2NoZW1lOgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlNjaGVtZSIp
OworICAgICAgICBicmVhazsKICAgICBjYXNlIFN0YXRlOjpTY2hlbWVFbmRDaGVja0ZvclNsYXNo
ZXM6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiU2NoZW1lRW5kQ2hlY2tGb3JTbGFzaGVzIik7
CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RhdGU6Ok5vU2NoZW1lOgorICAgICAgICBMT0df
RklOQUxfU1RBVEUoIk5vU2NoZW1lIik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RhdGU6
OlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlNw
ZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5Iik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3Rh
dGU6OlBhdGhPckF1dGhvcml0eToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJQYXRoT3JBdXRo
b3JpdHkiKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmU6CisgICAg
ICAgIExPR19GSU5BTF9TVEFURSgiUmVsYXRpdmUiKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJSZWxhdGl2
ZVNsYXNoIik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3Jp
dHlTbGFzaGVzOgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlTbGFz
aGVzIik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJ
Z25vcmVTbGFzaGVzOgotICAgIGNhc2UgU3RhdGU6OkF1dGhvcml0eToKKyAgICAgICAgTE9HX0ZJ
TkFMX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlcyIpOwogICAgICAgICBicmVh
azsKKyAgICBjYXNlIFN0YXRlOjpBdXRob3JpdHlPckhvc3Q6CisgICAgICAgIExPR19GSU5BTF9T
VEFURSgiQXV0aG9yaXR5T3JIb3N0Iik7CisgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fYnVm
ZmVyLmxlbmd0aCgpOworICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2Vy
RW5kOworICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIFN0YXRlOjpIb3N0OgotICAgIGNh
c2UgU3RhdGU6Okhvc3RuYW1lOgotICAgICAgICB1cmwubV9ob3N0RW5kID0gYnVmZmVyLmxlbmd0
aCgpOwotICAgICAgICB1cmwubV9wb3J0RW5kID0gdXJsLm1faG9zdEVuZDsKLSAgICAgICAgYnVm
ZmVyLmFwcGVuZCgnLycpOwotICAgICAgICB1cmwubV9wYXRoRW5kID0gdXJsLm1faG9zdEVuZCAr
IDE7Ci0gICAgICAgIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IHVybC5tX3BhdGhFbmQ7Ci0g
ICAgICAgIHVybC5tX3F1ZXJ5RW5kID0gdXJsLm1fcGF0aEVuZDsKLSAgICAgICAgdXJsLm1fZnJh
Z21lbnRFbmQgPSB1cmwubV9wYXRoRW5kOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRl
OjpQb3J0OgotICAgICAgICB1cmwubV9wb3J0RW5kID0gYnVmZmVyLmxlbmd0aCgpOwotICAgICAg
ICBidWZmZXIuYXBwZW5kKCcvJyk7Ci0gICAgICAgIHVybC5tX3BhdGhFbmQgPSB1cmwubV9wb3J0
RW5kICsgMTsKLSAgICAgICAgdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gdXJsLm1fcGF0aEVu
ZDsKLSAgICAgICAgdXJsLm1fcXVlcnlFbmQgPSB1cmwubV9wYXRoRW5kOwotICAgICAgICB1cmwu
bV9mcmFnbWVudEVuZCA9IHVybC5tX3BhdGhFbmQ7CisgICAgICAgIGlmIChzdGF0ZSA9PSBTdGF0
ZTo6SG9zdCkKKyAgICAgICAgICAgIExPR19GSU5BTF9TVEFURSgiSG9zdCIpOworICAgICAgICBo
b3N0RW5kUmVhY2hlZCgpOworICAgICAgICBtX2J1ZmZlci5hcHBlbmQoJy8nKTsKKyAgICAgICAg
bV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wb3J0RW5kICsgMTsKKyAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3BhdGhFbmQ7CisgICAgICAgIG1fdXJsLm1fcXVl
cnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7CisgICAgICAgIG1fdXJsLm1fZnJhZ21lbnRFbmQgPSBt
X3VybC5tX3BhdGhFbmQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RhdGU6OkZpbGU6Cisg
ICAgICAgIExPR19GSU5BTF9TVEFURSgiRmlsZSIpOworICAgICAgICBicmVhazsKICAgICBjYXNl
IFN0YXRlOjpGaWxlU2xhc2g6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiRmlsZVNsYXNoIik7
CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RhdGU6OkZpbGVIb3N0OgorICAgICAgICBMT0df
RklOQUxfU1RBVEUoIkZpbGVIb3N0Iik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RhdGU6
OlBhdGhTdGFydDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJQYXRoU3RhcnQiKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBTdGF0ZTo6UGF0aDoKLSAgICAgICAgdXJsLm1fcGF0aEVuZCA9
IGJ1ZmZlci5sZW5ndGgoKTsKLSAgICAgICAgdXJsLm1fcXVlcnlFbmQgPSB1cmwubV9wYXRoRW5k
OwotICAgICAgICB1cmwubV9mcmFnbWVudEVuZCA9IHVybC5tX3BhdGhFbmQ7CisgICAgICAgIExP
R19GSU5BTF9TVEFURSgiUGF0aCIpOworICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX2J1ZmZl
ci5sZW5ndGgoKTsKKyAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsK
KyAgICAgICAgbV91cmwubV9mcmFnbWVudEVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg6CisgICAgICAgIExP
R19GSU5BTF9TVEFURSgiQ2Fubm90QmVBQmFzZVVSTFBhdGgiKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBTdGF0ZTo6UXVlcnk6Ci0gICAgICAgIHVybC5tX3F1ZXJ5RW5kID0gYnVmZmVyLmxl
bmd0aCgpOwotICAgICAgICB1cmwubV9mcmFnbWVudEVuZCA9IHVybC5tX3F1ZXJ5RW5kOworICAg
ICAgICBMT0dfRklOQUxfU1RBVEUoIlF1ZXJ5Iik7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBtX2J1ZmZlci5sZW5ndGgoKTsKKyAgICAgICAgbV91cmwubV9mcmFnbWVudEVuZCA9IG1fdXJs
Lm1fcXVlcnlFbmQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RhdGU6OkZyYWdtZW50Ogot
ICAgICAgICB1cmwubV9mcmFnbWVudEVuZCA9IGJ1ZmZlci5sZW5ndGgoKTsKKyAgICAgICAgTE9H
X0ZJTkFMX1NUQVRFKCJGcmFnbWVudCIpOworICAgICAgICBtX3VybC5tX2ZyYWdtZW50RW5kID0g
bV9idWZmZXIubGVuZ3RoKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHVybC5tX3N0
cmluZyA9IGJ1ZmZlci50b1N0cmluZygpOwotICAgIHVybC5tX2lzVmFsaWQgPSB0cnVlOwotICAg
IHJldHVybiB1cmw7CisgICAgbV91cmwubV9zdHJpbmcgPSBtX2J1ZmZlci50b1N0cmluZygpOwor
ICAgIG1fdXJsLm1faXNWYWxpZCA9IHRydWU7CisgICAgcmV0dXJuIG1fdXJsOworfQorCit2b2lk
IFVSTFBhcnNlcjo6YXV0aG9yaXR5RW5kUmVhY2hlZCgpCit7CisgICAgYXV0byBjb2RlUG9pbnRz
ID0gU3RyaW5nVmlldyhtX2F1dGhvcml0eU9ySG9zdEJ1ZmZlci50b1N0cmluZygpKS5jb2RlUG9p
bnRzKCk7CisgICAgYXV0byBpdGVyYXRvciA9IGNvZGVQb2ludHMuYmVnaW4oKTsKKyAgICBhdXRv
IGVuZCA9IGNvZGVQb2ludHMuZW5kKCk7CisgICAgZm9yICg7IGl0ZXJhdG9yICE9IGVuZDsgKytp
dGVyYXRvcikgeworICAgICAgICBtX2J1ZmZlci5hcHBlbmQoKml0ZXJhdG9yKTsKKyAgICAgICAg
aWYgKCppdGVyYXRvciA9PSAnOicpIHsKKyAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAg
ICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX2J1ZmZlci5sZW5ndGgoKSAtIDE7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKDsgaXRlcmF0b3IgIT0gZW5kOyAr
K2l0ZXJhdG9yKQorICAgICAgICBtX2J1ZmZlci5hcHBlbmQoKml0ZXJhdG9yKTsKKyAgICBtX3Vy
bC5tX3Bhc3N3b3JkRW5kID0gbV9idWZmZXIubGVuZ3RoKCk7CisgICAgbV9idWZmZXIuYXBwZW5k
KCdAJyk7CisgICAgbV9hdXRob3JpdHlPckhvc3RCdWZmZXIuY2xlYXIoKTsKK30KKwordm9pZCBV
UkxQYXJzZXI6Omhvc3RFbmRSZWFjaGVkKCkKK3sKKyAgICBhdXRvIGNvZGVQb2ludHMgPSBTdHJp
bmdWaWV3KG1fYXV0aG9yaXR5T3JIb3N0QnVmZmVyLnRvU3RyaW5nKCkpLmNvZGVQb2ludHMoKTsK
KyAgICBhdXRvIGl0ZXJhdG9yID0gY29kZVBvaW50cy5iZWdpbigpOworICAgIGF1dG8gZW5kID0g
Y29kZVBvaW50cy5lbmQoKTsKKyAgICBmb3IgKDsgaXRlcmF0b3IgIT0gZW5kOyArK2l0ZXJhdG9y
KSB7CisgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKSB7CisgICAgICAgICAgICArK2l0ZXJh
dG9yOworICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV9idWZmZXIubGVuZ3RoKCk7Cisg
ICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQoJzonKTsKKyAgICAgICAgICAgIGZvciAoOyBpdGVy
YXRvciAhPSBlbmQ7ICsraXRlcmF0b3IpCisgICAgICAgICAgICAgICAgbV9idWZmZXIuYXBwZW5k
KCppdGVyYXRvcik7CisgICAgICAgICAgICBtX3VybC5tX3BvcnRFbmQgPSBtX2J1ZmZlci5sZW5n
dGgoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtX2J1ZmZlci5h
cHBlbmQoKml0ZXJhdG9yKTsKKyAgICB9CisgICAgbV91cmwubV9ob3N0RW5kID0gbV9idWZmZXIu
bGVuZ3RoKCk7CisgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV9ob3N0RW5kOworICAgIG1f
YXV0aG9yaXR5T3JIb3N0QnVmZmVyLmNsZWFyKCk7CiB9CiAKIGJvb2wgVVJMUGFyc2VyOjphbGxW
YWx1ZXNFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKIHsKKyAgICBMT0coVVJMUGFy
c2VyLCAiJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJXNcbiVkICVkICVkICVk
ICVkICVkICVkICVkICVkICVkICVkICVkICVzIiwKKyAgICAgICAgYS5tX2lzVmFsaWQsCisgICAg
ICAgIGEubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5LAorICAgICAgICBhLm1fc2NoZW1lRW5kLAor
ICAgICAgICBhLm1fdXNlclN0YXJ0LAorICAgICAgICBhLm1fdXNlckVuZCwKKyAgICAgICAgYS5t
X3Bhc3N3b3JkRW5kLAorICAgICAgICBhLm1faG9zdEVuZCwKKyAgICAgICAgYS5tX3BvcnRFbmQs
CisgICAgICAgIGEubV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCisgICAgICAgIGEubV9wYXRoRW5kLAor
ICAgICAgICBhLm1fcXVlcnlFbmQsCisgICAgICAgIGEubV9mcmFnbWVudEVuZCwKKyAgICAgICAg
YS5tX3N0cmluZy51dGY4KCkuZGF0YSgpLAorICAgICAgICBiLm1faXNWYWxpZCwKKyAgICAgICAg
Yi5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHksCisgICAgICAgIGIubV9zY2hlbWVFbmQsCisgICAg
ICAgIGIubV91c2VyU3RhcnQsCisgICAgICAgIGIubV91c2VyRW5kLAorICAgICAgICBiLm1fcGFz
c3dvcmRFbmQsCisgICAgICAgIGIubV9ob3N0RW5kLAorICAgICAgICBiLm1fcG9ydEVuZCwKKyAg
ICAgICAgYi5tX3BhdGhBZnRlckxhc3RTbGFzaCwKKyAgICAgICAgYi5tX3BhdGhFbmQsCisgICAg
ICAgIGIubV9xdWVyeUVuZCwKKyAgICAgICAgYi5tX2ZyYWdtZW50RW5kLAorICAgICAgICBiLm1f
c3RyaW5nLnV0ZjgoKS5kYXRhKCkpOworCiAgICAgcmV0dXJuIGEubV9zdHJpbmcgPT0gYi5tX3N0
cmluZwogICAgICAgICAmJiBhLm1faXNWYWxpZCA9PSBiLm1faXNWYWxpZAogICAgICAgICAmJiBh
Lm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9PSBiLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgJKHJldmlzaW9uIDIwNDUxMikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwxMyArMjgsMjAgQEAKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgVVJMUGFyc2VyIHsK
IHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8VVJMPiBwYXJzZShj
b25zdCBTdHJpbmcmLCBjb25zdCBVUkwmID0geyB9LCBjb25zdCBUZXh0RW5jb2RpbmcmID0gVVRG
OEVuY29kaW5nKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFVSTD4gcGFyc2UoY29u
c3QgU3RyaW5nJiwgY29uc3QgVVJMJiA9IHsgfSwgY29uc3QgVGV4dEVuY29kaW5nJiA9IFVURjhF
bmNvZGluZygpKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBhbGxWYWx1ZXNFcXVh
bChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK3ByaXZhdGU6CisgICAgVVJMIG1fdXJsOworICAg
IFN0cmluZ0J1aWxkZXIgbV9idWZmZXI7CisgICAgU3RyaW5nQnVpbGRlciBtX2F1dGhvcml0eU9y
SG9zdEJ1ZmZlcjsKKyAgICB2b2lkIGF1dGhvcml0eUVuZFJlYWNoZWQoKTsKKyAgICB2b2lkIGhv
c3RFbmRSZWFjaGVkKCk7CiB9OwogCiB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDQ1MjQpCisrKyBUb29scy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wOC0xNiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVSTFBhcnNlciBz
aG91bGQgcGFyc2UgVVJMcyB3aXRob3V0IGNyZWRlbnRpYWxzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA5MTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cyk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpjaGVja1VSTCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0Yp
OgorCiAyMDE2LTA4LTE1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1NdIEFkZCBpUGFkIHZpZXdwb3J0IGFuZCBmb3JtIHRlc3RzLCBhbmQgcmV2
ZXJ0IHRoZSBpUGFkLXRlc3RpbmcgcGFydCBvZiByMjAyMTMyCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcAkocmV2aXNpb24gMjA0NTEy
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAgc3RydWN0IEV4cGVjdGVkUGFydHMgewogc3Rh
dGljIGNvbnN0IGNoYXIqIHMoY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBzLnV0ZjgoKS5kYXRh
KCk7IH0KIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBFeHBlY3RlZFBhcnRzJiBwYXJ0cykKIHsKLSAgICBhdXRvIHVybCA9IFVSTFBhcnNlcjo6cGFy
c2UodXJsU3RyaW5nKTsKKyAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgIGF1dG8gdXJsID0gcGFy
c2VyLnBhcnNlKHVybFN0cmluZyk7CiAgICAgRVhQRUNUX1NUUkVRKHMocGFydHMucHJvdG9jb2wp
LCBzKHVybC0+cHJvdG9jb2woKSkpOwogICAgIEVYUEVDVF9TVFJFUShzKHBhcnRzLnVzZXIpLCBz
KHVybC0+dXNlcigpKSk7CiAgICAgRVhQRUNUX1NUUkVRKHMocGFydHMucGFzc3dvcmQpLCBzKHVy
bC0+cGFzcygpKSk7CkBAIC04Niw2ICs4NywxOSBAQCBURVNUX0YoVVJMUGFyc2VyVGVzdCwgUGFy
c2UpCiAgICAgY2hlY2tVUkwoImh0dHA6Ly91c2VyOnBhc3NAd2Via2l0Lm9yZzoxMjMvIiwgeyJo
dHRwIiwgInVzZXIiLCAicGFzcyIsICJ3ZWJraXQub3JnIiwgMTIzLCAiLyIsICIiLCAiIiwgImh0
dHA6Ly91c2VyOnBhc3NAd2Via2l0Lm9yZzoxMjMvIn0pOwogICAgIGNoZWNrVVJMKCJodHRwOi8v
dXNlcjpwYXNzQHdlYmtpdC5vcmc6MTIzIiwgeyJodHRwIiwgInVzZXIiLCAicGFzcyIsICJ3ZWJr
aXQub3JnIiwgMTIzLCAiLyIsICIiLCAiIiwgImh0dHA6Ly91c2VyOnBhc3NAd2Via2l0Lm9yZzox
MjMvIn0pOwogICAgIGNoZWNrVVJMKCJodHRwOi8vdXNlcjpwYXNzQHdlYmtpdC5vcmciLCB7Imh0
dHAiLCAidXNlciIsICJwYXNzIiwgIndlYmtpdC5vcmciLCAwLCAiLyIsICIiLCAiIiwgImh0dHA6
Ly91c2VyOnBhc3NAd2Via2l0Lm9yZy8ifSk7CisgICAgY2hlY2tVUkwoImh0dHA6Ly93ZWJraXQu
b3JnIiwgeyJodHRwIiwgIiIsICIiLCAid2Via2l0Lm9yZyIsIDAsICIvIiwgIiIsICIiLCAiaHR0
cDovL3dlYmtpdC5vcmcvIn0pOworfQorCitzdGF0aWMgdm9pZCBzaG91bGRGYWlsKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nKQoreworICAgIFVSTFBhcnNlciBwYXJzZXI7CisgICAgYXV0byBpbnZh
bGlkVVJMID0gcGFyc2VyLnBhcnNlKHVybFN0cmluZyk7CisgICAgRVhQRUNUX1RSVUUoaW52YWxp
ZFVSTCA9PSBOdWxsb3B0KTsKK30KKyAgICAKK1RFU1RfRihVUkxQYXJzZXJUZXN0LCBQYXJzZXJG
YWlsdXJlcykKK3sKKyAgICBzaG91bGRGYWlsKCIgICAgIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="309800"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>