<?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>162836</bug_id>
          
          <creation_ts>2016-09-30 20:23:31 -0700</creation_ts>
          <short_desc>URLParser should ignore tabs at all locations</short_desc>
          <delta_ts>2016-10-03 15:59:02 -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>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1235576</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-09-30 20:23:31 -0700</bug_when>
    <thetext>URLParser should ignore tabs at all locations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235577</commentid>
    <comment_count>1</comment_count>
      <attachid>290421</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-09-30 20:25:42 -0700</bug_when>
    <thetext>Created attachment 290421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235911</commentid>
    <comment_count>2</comment_count>
      <attachid>290421</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-03 14:31:07 -0700</bug_when>
    <thetext>Comment on attachment 290421
Patch

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

Geoff said &quot;r=me&quot;

&gt; Source/WebCore/ChangeLog:3
&gt; +        URLParser should ignore tabs at all locations

s/ignore/strip/

&gt; Tools/TestWebKitAPI/Tests/WebCore/URLParser.cpp:72
&gt; +enum class CheckTabs { No, Yes };

enum class TestTabs?

&gt; Tools/TestWebKitAPI/Tests/WebCore/URLParser.cpp:73
&gt; +const CheckTabs containsEncodedSurrogatePairs = CheckTabs::No;

Maybe &quot;checkTabsValueForSurrogatePairs&quot;? And then a comment here that says we can&apos;t auto-insert tabs because they would ruin the encoding.

&gt; Tools/TestWebKitAPI/Tests/WebCore/URLParser.cpp:455
&gt; +    if (checkTabs == CheckTabs::Yes) {
&gt; +        for (size_t i = 0; i &lt; urlString.length(); ++i) {
&gt; +            String urlStringWithTab = makeString(urlString.substring(0, i), &quot;\t&quot;, urlString.substring(i));
&gt; +            ExpectedParts invalidPartsWithTab = {&quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;, 0, &quot;&quot; , &quot;&quot;, &quot;&quot;, urlStringWithTab};
&gt; +            checkURLDifferences(urlStringWithTab, partsNew.isInvalid() ? invalidPartsWithTab : partsNew, partsOld.isInvalid() ? invalidPartsWithTab : partsOld, CheckTabs::No);
&gt; +        }
&gt; +    }

Maybe some helper function action for tab checking?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235955</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-03 15:41:42 -0700</bug_when>
    <thetext>I&apos;m also going to remove the incorrect tests for &quot;http://123\t.256/&quot; and &quot;http://123.\t256/&quot; canonicalizing to &quot;http://123.256/&quot;.  Those tests were verifying incorrect behavior that this patch fixed.  There is already a test that canonicalizes it correctly to &quot;http://123.0.1.0/&quot; in the new URLParser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235964</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-03 15:58:27 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/206758</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290421</attachid>
            <date>2016-09-30 20:25:42 -0700</date>
            <delta_ts>2016-10-03 15:58:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162836-20160930202239.patch</filename>
            <type>text/plain</type>
            <size>16274</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjY1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE2LTA5LTMwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVVJMUGFyc2Vy
IHNob3VsZCBpZ25vcmUgdGFicyBhdCBhbGwgbG9jYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI4MzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGFkZGluZyB0YWJzIHRvIGVh
Y2ggbG9jYXRpb24gb2YgZWFjaCBBUEkgdGVzdAorICAgICAgICBleGNlcHQgdGVzdHMgdGhhdCB0
ZXN0IHRoZSBlbmNvZGluZyBvZiBzdXJyb2dhdGUgcGFpcnMsCisgICAgICAgIGJlY2F1c2UgaW5z
ZXJ0aW5nIGEgdGFiIGJldHdlZW4gdGhlIHBhaXJzIGNoYW5nZXMgdGhlIGVuY29kaW5nLgorCisg
ICAgICAgICogcGxhdGZvcm0vVVJMUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBh
cnNlcjo6dGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBh
cnNlcjo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZUlQdjROdW1i
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZUlQdjRIb3N0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9VUkxQYXJzZXIuaDoKKwogMjAxNi0wOS0zMCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBvZmYtYnktb25lIGVy
cm9yIGluIFVSTFBhcnNlcjo6cGFyc2VJUHY0SG9zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VUkxQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDY2NTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkxQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjYsNiArNDI2LDE4IEBAIEFM
V0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OmFkdmFuY2UoQ28KIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2Jvb2wgVVJMUGFyc2VyOjp0YWtlc1R3b0FkdmFuY2VzVW50
aWxFbmQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAg
aWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNl
PENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAg
ICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFu
Y2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwor
ICAgIHJldHVybiBpdGVyYXRvci5hdEVuZCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgogQUxXQVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6aXNXaW5kb3dzRHJpdmVM
ZXR0ZXIoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCiB7CiAgICAg
aWYgKGl0ZXJhdG9yLmF0RW5kKCkgfHwgIWlzQVNDSUlBbHBoYSgqaXRlcmF0b3IpKQpAQCAtMTU1
OCw3ICsxNTcwLDggQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAog
ICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIExPR19TVEFURSgiRmlsZUhvc3QiKTsK
ICAgICAgICAgICAgICAgICBpZiAoaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKSkgewotICAgICAg
ICAgICAgICAgICAgICBib29sIHdpbmRvd3NRdWlyayA9IGMuY29kZVVuaXRzU2luY2UoYXV0aG9y
aXR5T3JIb3N0QmVnaW4pID09IDIgJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYXV0aG9yaXR5T3JI
b3N0QmVnaW4pOworICAgICAgICAgICAgICAgICAgICBib29sIHdpbmRvd3NRdWlyayA9IHRha2Vz
VHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRo
b3JpdHlPckhvc3RCZWdpbiwgYykpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBpc1dpbmRv
d3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbik7CiAgICAgICAgICAgICAgICAgICAg
IGlmICh3aW5kb3dzUXVpcmspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcvJyk7CkBAIC0yMTE2LDYgKzIxMjksMTEgQEAgT3B0aW9uYWw8dWlu
dDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0TgogICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSAm
JiAqaXRlcmF0b3IgPT0gJy4nKQogICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICB3aGlsZSAo
IWl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgaWYgKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRv
cikpIHsKKyAgICAgICAgICAgIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7CisgICAgICAg
ICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICAgICAg
ICAgaWYgKCppdGVyYXRvciA9PSAnLicpIHsKICAgICAgICAgICAgIEFTU0VSVCghdmFsdWUuaGFz
T3ZlcmZsb3dlZCgpKTsKICAgICAgICAgICAgIHJldHVybiB2YWx1ZS51bnNhZmVHZXQoKTsKQEAg
LTIxODksNiArMjIwNywxMSBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjRBZGRyZXNzPiBVUkxQ
YXJzCiAgICAgaXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSg0KTsKICAgICBib29sIGRpZFNl
ZVN5bnRheFZpb2xhdGlvbiA9IGZhbHNlOwogICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkg
eworICAgICAgICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkgeworICAgICAgICAgICAg
ZGlkU2VlU3ludGF4VmlvbGF0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICsraXRlcmF0b3I7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogICAgICAgICBpZiAoaXRlbXMuc2l6ZSgp
ID49IDQpCiAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICAgICAgaWYgKGF1dG8gaXRl
bSA9IHBhcnNlSVB2NE51bWJlcihpdGVyYXRvciwgZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCShyZXZpc2lvbiAyMDY2NDgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzEs
NiArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWR2YW5jZShDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpIHsgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCByZXBvcnRT
eW50YXhWaW9sYXRpb24+KGl0ZXJhdG9yLCBpdGVyYXRvcik7IH0KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb24gPSBSZXBvcnRTeW50YXhW
aW9sYXRpb246Olllcz4KICAgICB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4mLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0
b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gYm9vbCB0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHZvaWQgc3ludGF4VmlvbGF0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+Jik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBmcmFnbWVu
dFN5bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYp
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNQZXJjZW50RW5j
b2RlZERvdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDY3MDQp
CisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAx
Ni0wOS0zMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFVSTFBhcnNlciBzaG91bGQgaWdub3JlIHRhYnMgYXQgYWxsIGxvY2F0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyODM2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OmNoZWNrVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrUmVsYXRpdmVVUkwpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tVUkxEaWZmZXJlbmNlcyk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAxNi0wOS0zMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBvZmYtYnktb25lIGVycm9yIGlu
IFVSTFBhcnNlcjo6cGFyc2VJUHY0SG9zdApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAJKHJldmlzaW9uIDIwNjY1MCkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw3ICs2OSwxMCBAQCBzdGF0aWMgYm9vbCBlcShjb25zdCBTdHJpbmcmIHMxLCBjb25z
dCBTCiAgICAgcmV0dXJuIHMxLnV0ZjgoKSA9PSBzMi51dGY4KCk7CiB9CiAKLXN0YXRpYyB2b2lk
IGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBw
YXJ0cywgYm9vbCBjaGVja1RhYnMgPSB0cnVlKQorZW51bSBjbGFzcyBDaGVja1RhYnMgeyBObywg
WWVzIH07Citjb25zdCBDaGVja1RhYnMgY29udGFpbnNFbmNvZGVkU3Vycm9nYXRlUGFpcnMgPSBD
aGVja1RhYnM6Ok5vOworCitzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMsIENoZWNrVGFicyBjaGVja1RhYnMgPSBD
aGVja1RhYnM6OlllcykKIHsKICAgICBib29sIHdhc0VuYWJsZWQgPSBVUkxQYXJzZXI6OmVuYWJs
ZWQoKTsKICAgICBVUkxQYXJzZXI6OnNldEVuYWJsZWQodHJ1ZSk7CkBAIC0xMDIsMTEgKzEwNSwx
MSBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0CiAgICAgRVhQRUNU
X1RSVUUoVVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7CiAgICAgRVhQ
RUNUX1RSVUUoVVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQob2xkVVJMKSk7CiAK
LSAgICBpZiAoY2hlY2tUYWJzKSB7CisgICAgaWYgKGNoZWNrVGFicyA9PSBDaGVja1RhYnM6Olll
cykgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVybFN0cmluZy5sZW5ndGgoKTsg
KytpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdXJsU3RyaW5nV2l0aFRhYiA9IG1ha2VTdHJpbmco
dXJsU3RyaW5nLnN1YnN0cmluZygwLCBpKSwgIlx0IiwgdXJsU3RyaW5nLnN1YnN0cmluZyhpKSk7
CiAgICAgICAgICAgICBFeHBlY3RlZFBhcnRzIGludmFsaWRQYXJ0c1dpdGhUYWIgPSB7IiIsICIi
LCAiIiwgIiIsIDAsICIiICwgIiIsICIiLCB1cmxTdHJpbmdXaXRoVGFifTsKLSAgICAgICAgICAg
IGNoZWNrVVJMKHVybFN0cmluZ1dpdGhUYWIsIHBhcnRzLmlzSW52YWxpZCgpID8gaW52YWxpZFBh
cnRzV2l0aFRhYiA6IHBhcnRzLCBmYWxzZSk7CisgICAgICAgICAgICBjaGVja1VSTCh1cmxTdHJp
bmdXaXRoVGFiLCBwYXJ0cy5pc0ludmFsaWQoKSA/IGludmFsaWRQYXJ0c1dpdGhUYWIgOiBwYXJ0
cywgQ2hlY2tUYWJzOjpObyk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0zMDUsNyArMzA4LDcg
QEAgVEVTVF9GKFVSTFBhcnNlclRlc3QsIEJhc2ljKQogICAgIGNoZWNrVVJMKCJodHRwOi8vOkBo
b3N0IiwgeyJodHRwIiwgIiIsICIiLCAiaG9zdCIsIDAsICIvIiwgIiIsICIiLCAiaHR0cDovL2hv
c3QvIn0pOwogfQogCi1zdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFy
dHMmIHBhcnRzLCBib29sIGNoZWNrVGFicyA9IHRydWUpCitzdGF0aWMgdm9pZCBjaGVja1JlbGF0
aXZlVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJp
bmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBDaGVja1RhYnMgY2hlY2tUYWJzID0gQ2hl
Y2tUYWJzOjpZZXMpCiB7CiAgICAgYm9vbCB3YXNFbmFibGVkID0gVVJMUGFyc2VyOjplbmFibGVk
KCk7CiAgICAgVVJMUGFyc2VyOjpzZXRFbmFibGVkKHRydWUpOwpAQCAtMzM4LDExICszNDEsMTEg
QEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTChjb25zdCBTdHJpbgogICAgIEVYUEVDVF9U
UlVFKFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOwogICAgIEVYUEVD
VF9UUlVFKFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KG9sZFVSTCkpOwogICAg
IAotICAgIGlmIChjaGVja1RhYnMpIHsKKyAgICBpZiAoY2hlY2tUYWJzID09IENoZWNrVGFiczo6
WWVzKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdXJsU3RyaW5nLmxlbmd0aCgp
OyArK2kpIHsKICAgICAgICAgICAgIFN0cmluZyB1cmxTdHJpbmdXaXRoVGFiID0gbWFrZVN0cmlu
Zyh1cmxTdHJpbmcuc3Vic3RyaW5nKDAsIGkpLCAiXHQiLCB1cmxTdHJpbmcuc3Vic3RyaW5nKGkp
KTsKICAgICAgICAgICAgIEV4cGVjdGVkUGFydHMgaW52YWxpZFBhcnRzV2l0aFRhYiA9IHsiIiwg
IiIsICIiLCAiIiwgMCwgIiIgLCAiIiwgIiIsIHVybFN0cmluZ1dpdGhUYWJ9OwotICAgICAgICAg
ICAgY2hlY2tSZWxhdGl2ZVVSTCh1cmxTdHJpbmdXaXRoVGFiLCBiYXNlVVJMU3RyaW5nLCBwYXJ0
cy5pc0ludmFsaWQoKSA/IGludmFsaWRQYXJ0c1dpdGhUYWIgOiBwYXJ0cywgZmFsc2UpOworICAg
ICAgICAgICAgY2hlY2tSZWxhdGl2ZVVSTCh1cmxTdHJpbmdXaXRoVGFiLCBiYXNlVVJMU3RyaW5n
LCBwYXJ0cy5pc0ludmFsaWQoKSA/IGludmFsaWRQYXJ0c1dpdGhUYWIgOiBwYXJ0cywgQ2hlY2tU
YWJzOjpObyk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC00MTAsNyArNDEzLDcgQEAgVEVTVF9G
KFVSTFBhcnNlclRlc3QsIFBhcnNlUmVsYXRpdmUpCiAgICAgY2hlY2tSZWxhdGl2ZVVSTCgiaHR0
cDpcXFxcaG9zdFxcZm9vIiwgImFib3V0OmJsYW5rIiwgeyJodHRwIiwgIiIsICIiLCAiaG9zdCIs
IDAsICIvZm9vIiwgIiIsICIiLCAiaHR0cDovL2hvc3QvZm9vIn0pOwogfQogCi1zdGF0aWMgdm9p
ZCBjaGVja1VSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBl
Y3RlZFBhcnRzJiBwYXJ0c05ldywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHNPbGQpCitzdGF0
aWMgdm9pZCBjaGVja1VSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBFeHBlY3RlZFBhcnRzJiBwYXJ0c05ldywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHNPbGQs
IENoZWNrVGFicyBjaGVja1RhYnMgPSBDaGVja1RhYnM6OlllcykKIHsKICAgICBib29sIHdhc0Vu
YWJsZWQgPSBVUkxQYXJzZXI6OmVuYWJsZWQoKTsKICAgICBVUkxQYXJzZXI6OnNldEVuYWJsZWQo
dHJ1ZSk7CkBAIC00NDMsMTAgKzQ0NiwxNiBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTERpZmZlcmVu
Y2VzKGNvbnN0IFN0CiAgICAgRVhQRUNUX1RSVUUoVVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0Nv
bnNpc3RlbnQodXJsKSk7CiAgICAgRVhQRUNUX1RSVUUoVVJMUGFyc2VyOjppbnRlcm5hbFZhbHVl
c0NvbnNpc3RlbnQob2xkVVJMKSk7CiAgICAgCi0gICAgLy8gRklYTUU6IGNoZWNrIHRhYnMgaGVy
ZSBsaWtlIHdlIGRvIGZvciBjaGVja1VSTCBhbmQgY2hlY2tSZWxhdGl2ZVVSTC4KKyAgICBpZiAo
Y2hlY2tUYWJzID09IENoZWNrVGFiczo6WWVzKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgdXJsU3RyaW5nLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIFN0cmluZyB1cmxT
dHJpbmdXaXRoVGFiID0gbWFrZVN0cmluZyh1cmxTdHJpbmcuc3Vic3RyaW5nKDAsIGkpLCAiXHQi
LCB1cmxTdHJpbmcuc3Vic3RyaW5nKGkpKTsKKyAgICAgICAgICAgIEV4cGVjdGVkUGFydHMgaW52
YWxpZFBhcnRzV2l0aFRhYiA9IHsiIiwgIiIsICIiLCAiIiwgMCwgIiIgLCAiIiwgIiIsIHVybFN0
cmluZ1dpdGhUYWJ9OworICAgICAgICAgICAgY2hlY2tVUkxEaWZmZXJlbmNlcyh1cmxTdHJpbmdX
aXRoVGFiLCBwYXJ0c05ldy5pc0ludmFsaWQoKSA/IGludmFsaWRQYXJ0c1dpdGhUYWIgOiBwYXJ0
c05ldywgcGFydHNPbGQuaXNJbnZhbGlkKCkgPyBpbnZhbGlkUGFydHNXaXRoVGFiIDogcGFydHNP
bGQsIENoZWNrVGFiczo6Tm8pOworICAgICAgICB9CisgICAgfQogfQogCi1zdGF0aWMgdm9pZCBj
aGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgYmFzZVVSTFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHNOZXcsIGNv
bnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzT2xkKQorc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVS
TERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VV
UkxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzTmV3LCBjb25zdCBFeHBlY3RlZFBh
cnRzJiBwYXJ0c09sZCwgQ2hlY2tUYWJzIGNoZWNrVGFicyA9IENoZWNrVGFiczo6WWVzKQogewog
ICAgIGJvb2wgd2FzRW5hYmxlZCA9IFVSTFBhcnNlcjo6ZW5hYmxlZCgpOwogICAgIFVSTFBhcnNl
cjo6c2V0RW5hYmxlZCh0cnVlKTsKQEAgLTQ3OSw3ICs0ODgsMTMgQEAgc3RhdGljIHZvaWQgY2hl
Y2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKAogICAgIEVYUEVDVF9UUlVFKFVSTFBhcnNlcjo6aW50
ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOwogICAgIEVYUEVDVF9UUlVFKFVSTFBhcnNlcjo6
aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KG9sZFVSTCkpOwogCi0gICAgLy8gRklYTUU6IGNoZWNr
IHRhYnMgaGVyZSBsaWtlIHdlIGRvIGZvciBjaGVja1VSTCBhbmQgY2hlY2tSZWxhdGl2ZVVSTC4K
KyAgICBpZiAoY2hlY2tUYWJzID09IENoZWNrVGFiczo6WWVzKSB7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdXJsU3RyaW5nLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIFN0
cmluZyB1cmxTdHJpbmdXaXRoVGFiID0gbWFrZVN0cmluZyh1cmxTdHJpbmcuc3Vic3RyaW5nKDAs
IGkpLCAiXHQiLCB1cmxTdHJpbmcuc3Vic3RyaW5nKGkpKTsKKyAgICAgICAgICAgIEV4cGVjdGVk
UGFydHMgaW52YWxpZFBhcnRzV2l0aFRhYiA9IHsiIiwgIiIsICIiLCAiIiwgMCwgIiIgLCAiIiwg
IiIsIHVybFN0cmluZ1dpdGhUYWJ9OworICAgICAgICAgICAgY2hlY2tSZWxhdGl2ZVVSTERpZmZl
cmVuY2VzKHVybFN0cmluZ1dpdGhUYWIsIGJhc2VVUkxTdHJpbmcsIHBhcnRzTmV3LmlzSW52YWxp
ZCgpID8gaW52YWxpZFBhcnRzV2l0aFRhYiA6IHBhcnRzTmV3LCBwYXJ0c09sZC5pc0ludmFsaWQo
KSA/IGludmFsaWRQYXJ0c1dpdGhUYWIgOiBwYXJ0c09sZCwgQ2hlY2tUYWJzOjpObyk7CisgICAg
ICAgIH0KKyAgICB9CiB9CiAKIC8vIFRoZXNlIGFyZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBu
ZXcgVVJMUGFyc2VyIGFuZCB0aGUgb2xkIFVSTDo6cGFyc2Ugd2hpY2ggbWFrZSBVUkxQYXJzZXIg
bW9yZSBzdGFuZGFyZHMgY29tcGxpYW50LgpAQCAtNjA1LDcgKzYyMCw3IEBAIFRFU1RfRihVUkxQ
YXJzZXJUZXN0LCBQYXJzZXJEaWZmZXJlbmNlcykKICAgICBjaGVja1JlbGF0aXZlVVJMRGlmZmVy
ZW5jZXMoImh0dHA6L2V4YW1wbGUuY29tLyIsICJodHRwOi8vZXhhbXBsZS5vcmcvZm9vL2JhciIs
CiAgICAgICAgIHsiaHR0cCIsICIiLCAiIiwgImV4YW1wbGUub3JnIiwgMCwgIi9leGFtcGxlLmNv
bS8iLCAiIiwgIiIsICJodHRwOi8vZXhhbXBsZS5vcmcvZXhhbXBsZS5jb20vIn0sCiAgICAgICAg
IHsiaHR0cCIsICIiLCAiIiwgImV4YW1wbGUuY29tIiwgMCwgIi8iLCAiIiwgIiIsICJodHRwOi8v
ZXhhbXBsZS5jb20vIn0pOwotICAgIAorCiAgICAgLy8gVGhpcyBiZWhhdmlvciBtYXRjaGVzIENo
cm9tZSBhbmQgRmlyZWZveCwgYnV0IG5vdCBXZWJLaXQgdXNpbmcgVVJMOjpwYXJzZS4KICAgICAv
LyBUaGUgYmVoYXZpb3Igb2YgVVJMOjpwYXJzZSBpcyBjbGVhcmx5IHdyb25nIGJlY2F1c2UgcmVw
YXJzaW5nIGZpbGU6Ly9wYXRoIHdvdWxkIG1ha2UgcGF0aCB0aGUgaG9zdC4KICAgICAvLyBUaGUg
c3BlYyBpcyB1bmNsZWFyLgpAQCAtNjMyLDEwICs2NDcsOSBAQCBURVNUX0YoVVJMUGFyc2VyVGVz
dCwgUGFyc2VyRGlmZmVyZW5jZXMpCiAgICAgY2hlY2tVUkxEaWZmZXJlbmNlcygiaHR0cDovL2hv
c3QvcGF0aCUyZS4lMkUiLAogICAgICAgICB7Imh0dHAiLCAiIiwgIiIsICJob3N0IiwgMCwgIi9w
YXRoLi4uIiwgIiIsICIiLCAiaHR0cDovL2hvc3QvcGF0aC4uLiJ9LAogICAgICAgICB7Imh0dHAi
LCAiIiwgIiIsICJob3N0IiwgMCwgIi9wYXRoJTJlLiUyRSIsICIiLCAiIiwgImh0dHA6Ly9ob3N0
L3BhdGglMmUuJTJFIn0pOwotCiAgICAgY2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKHV0ZjE2
U3RyaW5nKHUiaHR0cDovL2Zvbzrwn5KpQGV4YW1wbGUuY29tL2JhciIpLCAiaHR0cDovL290aGVy
LmNvbS8iLAogICAgICAgICB7Imh0dHAiLCAiZm9vIiwgdXRmMTZTdHJpbmcodSLwn5KpIiksICJl
eGFtcGxlLmNvbSIsIDAsICIvYmFyIiwgIiIsICIiLCAiaHR0cDovL2ZvbzolRjAlOUYlOTIlQTlA
ZXhhbXBsZS5jb20vYmFyIn0sCi0gICAgICAgIHsiIiwgIiIsICIiLCAiIiwgMCwgIiIsICIiLCAi
IiwgdXRmMTZTdHJpbmcodSJodHRwOi8vZm9vOvCfkqlAZXhhbXBsZS5jb20vYmFyIil9KTsKKyAg
ICAgICAgeyIiLCAiIiwgIiIsICIiLCAwLCAiIiwgIiIsICIiLCB1dGYxNlN0cmluZyh1Imh0dHA6
Ly9mb2868J+SqUBleGFtcGxlLmNvbS9iYXIiKX0sIGNvbnRhaW5zRW5jb2RlZFN1cnJvZ2F0ZVBh
aXJzKTsKICAgICBjaGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMoImh0dHA6Ly8mYTpmb28oYl1j
QGQ6Mi8iLCAiaHR0cDovL2V4YW1wbGUub3JnL2Zvby9iYXIiLAogICAgICAgICB7Imh0dHAiLCAi
JmEiLCAiZm9vKGJdYyIsICJkIiwgMiwgIi8iLCAiIiwgIiIsICJodHRwOi8vJmE6Zm9vKGIlNURj
QGQ6Mi8ifSwKICAgICAgICAgeyIiLCAiIiwgIiIsICIiLCAwLCAiIiwgIiIsICIiLCAiaHR0cDov
LyZhOmZvbyhiXWNAZDoyLyJ9KTsKQEAgLTY4OSw3ICs3MDMsNyBAQCBURVNUX0YoVVJMUGFyc2Vy
VGVzdCwgUGFyc2VyRGlmZmVyZW5jZXMpCiAgICAgICAgIHsiZm9vIiwgIiIsICIiLCAiIiwgMCwg
Ii8vIiwgIiIsICIiLCAiZm9vOi8vIn0pOwogICAgIGNoZWNrVVJMRGlmZmVyZW5jZXModXRmMTZT
dHJpbmcodSJodHRwOi8vaG9zdD/Dn/CfmI0jw5/wn5iNIiksCiAgICAgICAgIHsiaHR0cCIsICIi
LCAiIiwgImhvc3QiLCAwLCAiLyIsICIlQzMlOUYlRjAlOUYlOTglOEQiLCB1dGYxNlN0cmluZyh1
IsOf8J+YjSIpLCB1dGYxNlN0cmluZyh1Imh0dHA6Ly9ob3N0Lz8lQzMlOUYlRjAlOUYlOTglOEQj
w5/wn5iNIil9LAotICAgICAgICB7Imh0dHAiLCAiIiwgIiIsICJob3N0IiwgMCwgIi8iLCAiJUMz
JTlGJUYwJTlGJTk4JThEIiwgIiVDMyU5RiVGMCU5RiU5OCU4RCIsICJodHRwOi8vaG9zdC8/JUMz
JTlGJUYwJTlGJTk4JThEIyVDMyU5RiVGMCU5RiU5OCU4RCJ9KTsKKyAgICAgICAgeyJodHRwIiwg
IiIsICIiLCAiaG9zdCIsIDAsICIvIiwgIiVDMyU5RiVGMCU5RiU5OCU4RCIsICIlQzMlOUYlRjAl
OUYlOTglOEQiLCAiaHR0cDovL2hvc3QvPyVDMyU5RiVGMCU5RiU5OCU4RCMlQzMlOUYlRjAlOUYl
OTglOEQifSwgY29udGFpbnNFbmNvZGVkU3Vycm9nYXRlUGFpcnMpOwogICAgIGNoZWNrVVJMRGlm
ZmVyZW5jZXModXRmMTZTdHJpbmcodSJodHRwOi8vaG9zdC9wYXRoI/CfkqlcdPCfkqkiKSwKICAg
ICAgICAgeyJodHRwIiwgIiIsICIiLCAiaG9zdCIsIDAsICIvcGF0aCIsICIiLCB1dGYxNlN0cmlu
Zyh1IvCfkqnwn5KpIiksIHV0ZjE2U3RyaW5nKHUiaHR0cDovL2hvc3QvcGF0aCPwn5Kp8J+SqSIp
fSwKICAgICAgICAgeyJodHRwIiwgIiIsICIiLCAiaG9zdCIsIDAsICIvcGF0aCIsICIiLCAiJUYw
JTlGJTkyJUE5JUYwJTlGJTkyJUE5IiwgImh0dHA6Ly9ob3N0L3BhdGgjJUYwJTlGJTkyJUE5JUYw
JTlGJTkyJUE5In0pOwpAQCAtOTYzLDcgKzk3Nyw3IEBAIFRFU1RfRihVUkxQYXJzZXJUZXN0LCBB
ZGRpdGlvbmFsVGVzdHMpCiAgICAgY29uc3Qgd2NoYXJfdCB2YWxpZFN1cnJvZ2F0ZUVuZCA9IDB4
REQ1NTsKICAgICBjb25zdCB3Y2hhcl90IGludmFsaWRTdXJyb2dhdGVFbmQgPSAnQSc7CiAgICAg
Y2hlY2tVUkwodXRmMTZTdHJpbmc8MTI+KHsnaCcsICd0JywgJ3QnLCAncCcsICc6JywgJy8nLCAn
LycsICd3JywgJy8nLCBzdXJyb2dhdGVCZWdpbiwgdmFsaWRTdXJyb2dhdGVFbmQsICdcMCd9KSwK
LSAgICAgICAgeyJodHRwIiwgIiIsICIiLCAidyIsIDAsICIvJUYwJTkwJTg1JTk1IiwgIiIsICIi
LCAiaHR0cDovL3cvJUYwJTkwJTg1JTk1In0sIGZhbHNlKTsKKyAgICAgICAgeyJodHRwIiwgIiIs
ICIiLCAidyIsIDAsICIvJUYwJTkwJTg1JTk1IiwgIiIsICIiLCAiaHR0cDovL3cvJUYwJTkwJTg1
JTk1In0sIGNvbnRhaW5zRW5jb2RlZFN1cnJvZ2F0ZVBhaXJzKTsKIAogICAgIC8vIFVSTFBhcnNl
ciBtYXRjaGVzIENocm9tZSBhbmQgRmlyZWZveCBidXQgbm90IFVSTDo6cGFyc2UuCiAgICAgY2hl
Y2tVUkxEaWZmZXJlbmNlcyh1dGYxNlN0cmluZzwxMj4oeydoJywgJ3QnLCAndCcsICdwJywgJzon
LCAnLycsICcvJywgJ3cnLCAnLycsIHN1cnJvZ2F0ZUJlZ2luLCBpbnZhbGlkU3Vycm9nYXRlRW5k
fSksCkBAIC05ODMsNyArOTk3LDcgQEAgVEVTVF9GKFVSTFBhcnNlclRlc3QsIEFkZGl0aW9uYWxU
ZXN0cykKICAgICAgICAgeyJodHRwIiwgIiIsICIiLCAidyIsIDAsICIvIiwgIiVFRCVBMCU4MCIs
ICIiLCAiaHR0cDovL3cvPyVFRCVBMCU4MCJ9KTsKIH0KIAotc3RhdGljIHZvaWQgY2hlY2tVUkwo
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGNv
bnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBib29sIGNoZWNrVGFicyA9IHRydWUpCitzdGF0aWMg
dm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgVGV4dEVuY29kaW5n
JiBlbmNvZGluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMsIENoZWNrVGFicyBjaGVja1Rh
YnMgPSBDaGVja1RhYnM6OlllcykKIHsKICAgICBVUkxQYXJzZXIgcGFyc2VyKHVybFN0cmluZywg
eyB9LCBlbmNvZGluZyk7CiAgICAgYXV0byB1cmwgPSBwYXJzZXIucmVzdWx0KCk7CkBAIC05OTcs
MTkgKzEwMTEsMTkgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdAog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVy
KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5zdHJpbmcsIHVybC5zdHJpbmcoKSkpOwog
Ci0gICAgaWYgKGNoZWNrVGFicykgeworICAgIGlmIChjaGVja1RhYnMgPT0gQ2hlY2tUYWJzOjpZ
ZXMpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB1cmxTdHJpbmcubGVuZ3RoKCk7
ICsraSkgewogICAgICAgICAgICAgU3RyaW5nIHVybFN0cmluZ1dpdGhUYWIgPSBtYWtlU3RyaW5n
KHVybFN0cmluZy5zdWJzdHJpbmcoMCwgaSksICJcdCIsIHVybFN0cmluZy5zdWJzdHJpbmcoaSkp
OwogICAgICAgICAgICAgRXhwZWN0ZWRQYXJ0cyBpbnZhbGlkUGFydHNXaXRoVGFiID0geyIiLCAi
IiwgIiIsICIiLCAwLCAiIiAsICIiLCAiIiwgdXJsU3RyaW5nV2l0aFRhYn07Ci0gICAgICAgICAg
ICBjaGVja1VSTCh1cmxTdHJpbmdXaXRoVGFiLCBlbmNvZGluZywgcGFydHMuaXNJbnZhbGlkKCkg
PyBpbnZhbGlkUGFydHNXaXRoVGFiIDogcGFydHMsIGZhbHNlKTsKKyAgICAgICAgICAgIGNoZWNr
VVJMKHVybFN0cmluZ1dpdGhUYWIsIGVuY29kaW5nLCBwYXJ0cy5pc0ludmFsaWQoKSA/IGludmFs
aWRQYXJ0c1dpdGhUYWIgOiBwYXJ0cywgQ2hlY2tUYWJzOjpObyk7CiAgICAgICAgIH0KICAgICB9
CiB9CiAKIFRFU1RfRihVUkxQYXJzZXJUZXN0LCBRdWVyeUVuY29kaW5nKQogewotICAgIGNoZWNr
VVJMKHV0ZjE2U3RyaW5nKHUiaHR0cDovL2hvc3Q/w5/wn5iNI8Of8J+YjSIpLCBVVEY4RW5jb2Rp
bmcoKSwgeyJodHRwIiwgIiIsICIiLCAiaG9zdCIsIDAsICIvIiwgIiVDMyU5RiVGMCU5RiU5OCU4
RCIsIHV0ZjE2U3RyaW5nKHUiw5/wn5iNIiksIHV0ZjE2U3RyaW5nKHUiaHR0cDovL2hvc3QvPyVD
MyU5RiVGMCU5RiU5OCU4RCPDn/CfmI0iKX0sIGZhbHNlKTsKLSAgICBjaGVja1VSTCh1dGYxNlN0
cmluZyh1Imh0dHA6Ly9ob3N0P8Of8J+YjSPDn/CfmI0iKSwgVVRGOEVuY29kaW5nKCksIHsiaHR0
cCIsICIiLCAiIiwgImhvc3QiLCAwLCAiLyIsICIlQzMlOUYlRjAlOUYlOTglOEQiLCB1dGYxNlN0
cmluZyh1IsOf8J+YjSIpLCB1dGYxNlN0cmluZyh1Imh0dHA6Ly9ob3N0Lz8lQzMlOUYlRjAlOUYl
OTglOEQjw5/wn5iNIil9LCBmYWxzZSk7CisgICAgY2hlY2tVUkwodXRmMTZTdHJpbmcodSJodHRw
Oi8vaG9zdD/Dn/CfmI0jw5/wn5iNIiksIFVURjhFbmNvZGluZygpLCB7Imh0dHAiLCAiIiwgIiIs
ICJob3N0IiwgMCwgIi8iLCAiJUMzJTlGJUYwJTlGJTk4JThEIiwgdXRmMTZTdHJpbmcodSLDn/Cf
mI0iKSwgdXRmMTZTdHJpbmcodSJodHRwOi8vaG9zdC8/JUMzJTlGJUYwJTlGJTk4JThEI8Of8J+Y
jSIpfSwgY29udGFpbnNFbmNvZGVkU3Vycm9nYXRlUGFpcnMpOworICAgIGNoZWNrVVJMKHV0ZjE2
U3RyaW5nKHUiaHR0cDovL2hvc3Q/w5/wn5iNI8Of8J+YjSIpLCBVVEY4RW5jb2RpbmcoKSwgeyJo
dHRwIiwgIiIsICIiLCAiaG9zdCIsIDAsICIvIiwgIiVDMyU5RiVGMCU5RiU5OCU4RCIsIHV0ZjE2
U3RyaW5nKHUiw5/wn5iNIiksIHV0ZjE2U3RyaW5nKHUiaHR0cDovL2hvc3QvPyVDMyU5RiVGMCU5
RiU5OCU4RCPDn/CfmI0iKX0sIGNvbnRhaW5zRW5jb2RlZFN1cnJvZ2F0ZVBhaXJzKTsKIAogICAg
IFRleHRFbmNvZGluZyBsYXRpbjEoU3RyaW5nKCJsYXRpbjEiKSk7CiAgICAgY2hlY2tVUkwoImh0
dHA6Ly9ob3N0Lz9xdWVyeSB3aXRoJTIwc3BhY2VzIiwgbGF0aW4xLCB7Imh0dHAiLCAiIiwgIiIs
ICJob3N0IiwgMCwgIi8iLCAicXVlcnklMjB3aXRoJTIwc3BhY2VzIiwgIiIsICJodHRwOi8vaG9z
dC8/cXVlcnklMjB3aXRoJTIwc3BhY2VzIn0pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>