<?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>171388</bug_id>
          
          <creation_ts>2017-04-27 12:48:21 -0700</creation_ts>
          <short_desc>Update DOMTokenList.replace() to match the latest DOM specification</short_desc>
          <delta_ts>2017-04-28 13:52:35 -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>DOM</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>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annevk</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1302242</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-04-27 12:48:21 -0700</bug_when>
    <thetext>Update DOMTokenList.replace() to match the latest DOM specification after:
- https://github.com/whatwg/dom/issues/442
- https://github.com/whatwg/infra/pull/126

Test:
- https://github.com/w3c/web-platform-tests/pull/5725

Basically, (a, b, c).replace(a, c) should return (c, b) instead of (b, c).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302311</commentid>
    <comment_count>1</comment_count>
      <attachid>308450</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-04-27 14:51:51 -0700</bug_when>
    <thetext>Created attachment 308450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302318</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-27 14:54:24 -0700</bug_when>
    <thetext>Attachment 308450 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:566:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:567:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:570:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:571:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:572:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:573:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:574:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:575:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:601:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:604:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:607:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:609:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:643:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:645:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:647:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:650:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 16 in 8 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>1302354</commentid>
    <comment_count>3</comment_count>
      <attachid>308450</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-27 15:56:52 -0700</bug_when>
    <thetext>Comment on attachment 308450
Patch

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

&gt; Source/WebCore/html/DOMTokenList.cpp:181
&gt; +    tokens.removeFirstMatching(matchesItemOrReplacement, index + 1);

Do we only want to remove the first one? Can the lists have duplicate values? Can we test this? Can we assert that there aren&apos;t duplicates?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302366</commentid>
    <comment_count>4</comment_count>
      <attachid>308450</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-04-27 16:10:27 -0700</bug_when>
    <thetext>Comment on attachment 308450
Patch

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

&gt;&gt; Source/WebCore/html/DOMTokenList.cpp:181
&gt;&gt; +    tokens.removeFirstMatching(matchesItemOrReplacement, index + 1);
&gt; 
&gt; Do we only want to remove the first one? Can the lists have duplicate values? Can we test this? Can we assert that there aren&apos;t duplicates?

I can assert, yes. a DOMTokenList is meant to wrap an ordered set as per the spec, so there should be no duplicate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302440</commentid>
    <comment_count>5</comment_count>
      <attachid>308490</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-04-27 18:39:38 -0700</bug_when>
    <thetext>Created attachment 308490
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302441</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-04-27 18:40:09 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; Comment on attachment 308450 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=308450&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/html/DOMTokenList.cpp:181
&gt; &gt;&gt; +    tokens.removeFirstMatching(matchesItemOrReplacement, index + 1);
&gt; &gt; 
&gt; &gt; Do we only want to remove the first one? Can the lists have duplicate values? Can we test this? Can we assert that there aren&apos;t duplicates?
&gt; 
&gt; I can assert, yes. a DOMTokenList is meant to wrap an ordered set as per the
&gt; spec, so there should be no duplicate.

I added assertions in this latest iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302442</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-27 18:42:08 -0700</bug_when>
    <thetext>Attachment 308490 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:566:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:567:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:570:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:571:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:572:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:573:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:574:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:575:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:601:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:604:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:607:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:609:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:643:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:645:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:647:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:650:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 16 in 8 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>1302772</commentid>
    <comment_count>8</comment_count>
      <attachid>308490</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-04-28 13:52:32 -0700</bug_when>
    <thetext>Comment on attachment 308490
Patch

Clearing flags on attachment: 308490

Committed r215943: &lt;http://trac.webkit.org/changeset/215943&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302773</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-04-28 13:52:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308450</attachid>
            <date>2017-04-27 14:51:51 -0700</date>
            <delta_ts>2017-04-27 18:39:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171388-20170427145150.patch</filename>
            <type>text/plain</type>
            <size>13711</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1ODgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk1NDc1MTdiYzI2MGJkNDUxNzdmYWU2
NTA0Nzk0YzEzYmJjZTAwMjcuLjk3NGVhOWJlYTkyMzZhNDVkZTc4ZjI2ZjMzY2MwNzk2ZjE2ZWI5
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMDQtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgRE9NVG9rZW5MaXN0LnJlcGxhY2UoKSB0byBt
YXRjaCB0aGUgbGF0ZXN0IERPTSBzcGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEzODgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVmVjdG9yOjpmaW5kTWF0Y2hpbmcoKSBBUEkg
d2hpY2ggdGFrZXMgaW4gYSBsYW1iZGEgZnVuY3Rpb24gZm9yIGNvbnZlbmllbmNlLgorICAgICAg
ICBBZGQgb3B0aW9uYWwgc3RhcnRJbmRleCBwYXJhbWV0ZXIgdG8gVmVjdG9yOjpyZW1vdmVGaXJz
dE1hdGNoaW5nKCkgLyByZW1vdmVBbGxNYXRjaGluZygpCisgICAgICAgIHRvIHJlbW92ZSBpdGVt
cyBvbmx5IGFmdGVyIGdpdmVuIGluZGV4LgorCisgICAgICAgICogd3RmL1ZlY3Rvci5oOgorICAg
ICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmZpbmRNYXRjaGluZyk6CisgICAgICAgIChXVEY6Om1p
bkNhcGFjaXR5Pjo6ZmluZCk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVtb3ZlRmly
c3RNYXRjaGluZyk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVtb3ZlQWxsTWF0Y2hp
bmcpOgorCiAyMDE3LTA0LTI2ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIExvY2tsZXNzQmFnIG5lZWRzIGEgZGVzdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDA1YTdjZGFiMGY1NzAzZWFkZmZiOWM0NmU2YTM1NmVmNTMzYTNkYzEuLjE4MWRlOThkODU1NDRk
MDczNmY5NTRkNjMyOTg3MWQ0MDg1ZmVmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAor
MjAxNy0wNC0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVw
ZGF0ZSBET01Ub2tlbkxpc3QucmVwbGFjZSgpIHRvIG1hdGNoIHRoZSBsYXRlc3QgRE9NIHNwZWNp
ZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MTM4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSBET01Ub2tlbkxpc3QucmVwbGFjZSgpIHRvIG1hdGNoIHRoZSBsYXRlc3QgRE9NIHNw
ZWNpZmljYXRpb24gYWZ0ZXI6CisgICAgICAgIC0gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9k
b20vaXNzdWVzLzQ0MgorICAgICAgICAtIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaW5mcmEv
cHVsbC8xMjYKKworICAgICAgICBUaGUgbGF0ZXN0IHNwZWMgdGV4dCBpcyBhdDoKKyAgICAgICAg
LSBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1kb210b2tlbmxpc3QtcmVwbGFjZQor
ICAgICAgICAtIGh0dHBzOi8vaW5mcmEuc3BlYy53aGF0d2cub3JnLyNzZXQtcmVwbGFjZQorCisg
ICAgICAgIFRoZSBiZWhhdmlvciBjaGFuZ2UgaW4gdGhpcyBwYXRjaCBjYXVzZXMgKGEsIGIsIGMp
LnJlcGxhY2UoYSwgYykgdG8gcmV0dXJuCisgICAgICAgIChjLCBiKSBpbnN0ZWFkIG9mIChiLCBj
KS4gVGhpcyBuZXcgYmVoYXZpb3IgaXMgYWxpZ25lZCB3aXRoIEZpcmVmb3ggYXMgd2VsbC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIHVwZGF0ZWQgZXhpc3RpbmcgdGVzdC4KKworICAgICAgICAq
IGh0bWwvRE9NVG9rZW5MaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6
cmVwbGFjZSk6CisKIDIwMTctMDQtMjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFVwZGF0ZSBOZXR3b3JrU3RvcmFnZVNlc3Npb24gdG8gc3VwcG9ydCBtdWx0
aXBsZSBwZXJzaXN0ZW50IHNlc3Npb25zIGFuZCBleHBsaWNpdGx5IHNldCBjb29raWUgc3RvcmFn
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3Rm
L1ZlY3Rvci5oCmluZGV4IDkzMzMxMjEwMDk0NWM2YTc4MDFmOGIzOWM4NmNkMTY3ZGRkYjFhMmUu
LmYxMDVkNDE4MDQzYTcxMmJhODkyM2VkMTFhY2M1NGUxOGYxN2U3NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC03
MDQsNiArNzA0LDcgQEAgcHVibGljOgogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJv
b2wgY29udGFpbnMoY29uc3QgVSYpIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHNp
emVfdCBmaW5kKGNvbnN0IFUmKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaEZ1
bmN0aW9uPiBzaXplX3QgZmluZE1hdGNoaW5nKGNvbnN0IE1hdGNoRnVuY3Rpb24mKSBjb25zdDsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgVSYpIGNv
bnN0OwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgYXBwZW5kSWZOb3RDb250
YWlucyhjb25zdCBVJik7CkBAIC03MzksOSArNzQwLDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVt
b3ZlKHNpemVfdCBwb3NpdGlvbik7CiAgICAgdm9pZCByZW1vdmUoc2l6ZV90IHBvc2l0aW9uLCBz
aXplX3QgbGVuZ3RoKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHJlbW92ZUZpcnN0
KGNvbnN0IFUmKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaEZ1bmN0aW9uPiBib29sIHJl
bW92ZUZpcnN0TWF0Y2hpbmcoY29uc3QgTWF0Y2hGdW5jdGlvbiYpOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE1hdGNoRnVuY3Rpb24+IGJvb2wgcmVtb3ZlRmlyc3RNYXRjaGluZyhjb25zdCBNYXRj
aEZ1bmN0aW9uJiwgc2l6ZV90IHN0YXJ0SW5kZXggPSAwKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiB1bnNpZ25lZCByZW1vdmVBbGwoY29uc3QgVSYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE1hdGNoRnVuY3Rpb24+IHVuc2lnbmVkIHJlbW92ZUFsbE1hdGNoaW5nKGNvbnN0IE1hdGNoRnVu
Y3Rpb24mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaEZ1bmN0aW9uPiB1bnNpZ25lZCBy
ZW1vdmVBbGxNYXRjaGluZyhjb25zdCBNYXRjaEZ1bmN0aW9uJiwgc2l6ZV90IHN0YXJ0SW5kZXgg
PSAwKTsKIAogICAgIHZvaWQgcmVtb3ZlTGFzdCgpIAogICAgIHsKQEAgLTkwNCwxMSArOTA1LDEx
IEBAIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNh
cGFjaXR5Pjo6Y29udGFpbnMoY29uc3QgVSYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5D
YXBhY2l0eT4KLXRlbXBsYXRlPHR5cGVuYW1lIFU+Ci1zaXplX3QgVmVjdG9yPFQsIGlubGluZUNh
cGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6ZmluZChjb25zdCBVJiB2YWx1
ZSkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIE1hdGNoRnVuY3Rpb24+CitzaXplX3QgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6ZmluZE1h
dGNoaW5nKGNvbnN0IE1hdGNoRnVuY3Rpb24mIG1hdGNoZXMpIGNvbnN0CiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkgewotICAgICAgICBpZiAoYXQoaSkgPT0gdmFs
dWUpCisgICAgICAgIGlmIChtYXRjaGVzKGF0KGkpKSkKICAgICAgICAgICAgIHJldHVybiBpOwog
ICAgIH0KICAgICByZXR1cm4gbm90Rm91bmQ7CkBAIC05MTYsNiArOTE3LDE1IEBAIHNpemVfdCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+Ojpm
aW5kKGNvbnN0IFUmIHZhCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPgorc2l6ZV90IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZs
b3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmZpbmQoY29uc3QgVSYgdmFsdWUpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGZpbmRNYXRjaGluZyhbJl0oYXV0byYgaXRlbSkgeworICAgICAgICByZXR1cm4g
aXRlbSA9PSB2YWx1ZTsKKyAgICB9KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBh
Y2l0eT4KK3RlbXBsYXRlPHR5cGVuYW1lIFU+CiBzaXplX3QgVmVjdG9yPFQsIGlubGluZUNhcGFj
aXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmV2ZXJzZUZpbmQoY29uc3QgVSYg
dmFsdWUpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPD0gc2l6ZSgpOyArK2kp
IHsKQEAgLTEzOTYsOSArMTQwNiw5IEBAIGlubGluZSBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnJlbW92ZUZpcnN0CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dI
YW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaEZ1bmN0
aW9uPgotaW5saW5lIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRs
ZXIsIG1pbkNhcGFjaXR5Pjo6cmVtb3ZlRmlyc3RNYXRjaGluZyhjb25zdCBNYXRjaEZ1bmN0aW9u
JiBtYXRjaGVzKQoraW5saW5lIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxv
d0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmVtb3ZlRmlyc3RNYXRjaGluZyhjb25zdCBNYXRjaEZ1
bmN0aW9uJiBtYXRjaGVzLCBzaXplX3Qgc3RhcnRJbmRleCkKIHsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemUoKTsgKytpKSB7CisgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7
IGkgPCBzaXplKCk7ICsraSkgewogICAgICAgICBpZiAobWF0Y2hlcyhhdChpKSkpIHsKICAgICAg
ICAgICAgIHJlbW92ZShpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQxOCwxMiAr
MTQyOCwxMiBAQCBpbmxpbmUgdW5zaWduZWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmVtb3ZlQQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90
IG1pbkNhcGFjaXR5PgogdGVtcGxhdGU8dHlwZW5hbWUgTWF0Y2hGdW5jdGlvbj4KLWlubGluZSB1
bnNpZ25lZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2Fw
YWNpdHk+OjpyZW1vdmVBbGxNYXRjaGluZyhjb25zdCBNYXRjaEZ1bmN0aW9uJiBtYXRjaGVzKQor
aW5saW5lIHVuc2lnbmVkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
LCBtaW5DYXBhY2l0eT46OnJlbW92ZUFsbE1hdGNoaW5nKGNvbnN0IE1hdGNoRnVuY3Rpb24mIG1h
dGNoZXMsIHNpemVfdCBzdGFydEluZGV4KQogewogICAgIGl0ZXJhdG9yIGhvbGVCZWdpbiA9IGVu
ZCgpOwogICAgIGl0ZXJhdG9yIGhvbGVFbmQgPSBlbmQoKTsKICAgICB1bnNpZ25lZCBtYXRjaENv
dW50ID0gMDsKLSAgICBmb3IgKGF1dG8gaXQgPSBiZWdpbigpLCBpdEVuZCA9IGVuZCgpOyBpdCAh
PSBpdEVuZDsgKytpdCkgeworICAgIGZvciAoYXV0byBpdCA9IGJlZ2luKCkgKyBzdGFydEluZGV4
LCBpdEVuZCA9IGVuZCgpOyBpdCA8IGl0RW5kOyArK2l0KSB7CiAgICAgICAgIGlmIChtYXRjaGVz
KCppdCkpIHsKICAgICAgICAgICAgIGlmIChob2xlQmVnaW4gPT0gZW5kKCkpCiAgICAgICAgICAg
ICAgICAgaG9sZUJlZ2luID0gaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RP
TVRva2VuTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAKaW5k
ZXggMDM5NWEyZTBmMWE2NTUyNjExMzQ0NmNkZjdiYzRhMWQ1YWQ5NzhmZi4uMTEwYjJhNTc4MmI1
NzQ2OWU4OWNhNTczZWJmMmNjNjQ1MWQ5MmMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9ET01Ub2tlbkxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5M
aXN0LmNwcApAQCAtMTU4LDIzICsxNTgsMjcgQEAgRXhjZXB0aW9uT3I8Ym9vbD4gRE9NVG9rZW5M
aXN0Ojp0b2dnbGUoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgc3RkOjpvcHRpb25hbDwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gRE9NVG9rZW5MaXN0OjpyZXBs
YWNlKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VG9r
ZW4pCisvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1kb210b2tlbmxpc3QtcmVw
bGFjZQorRXhjZXB0aW9uT3I8dm9pZD4gRE9NVG9rZW5MaXN0OjpyZXBsYWNlKGNvbnN0IEF0b21p
Y1N0cmluZyYgaXRlbSwgY29uc3QgQXRvbWljU3RyaW5nJiByZXBsYWNlbWVudCkKIHsKLSAgICBp
ZiAodG9rZW4uaXNFbXB0eSgpIHx8IG5ld1Rva2VuLmlzRW1wdHkoKSkKKyAgICBpZiAoaXRlbS5p
c0VtcHR5KCkgfHwgcmVwbGFjZW1lbnQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgU1lOVEFYX0VSUiB9OwogCi0gICAgaWYgKHRva2VuQ29udGFpbnNIVE1MU3BhY2UodG9r
ZW4pIHx8IHRva2VuQ29udGFpbnNIVE1MU3BhY2UobmV3VG9rZW4pKQorICAgIGlmICh0b2tlbkNv
bnRhaW5zSFRNTFNwYWNlKGl0ZW0pIHx8IHRva2VuQ29udGFpbnNIVE1MU3BhY2UocmVwbGFjZW1l
bnQpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9DSEFSQUNURVJfRVJSIH07
CiAKICAgICBhdXRvJiB0b2tlbnMgPSB0aGlzLT50b2tlbnMoKTsKLSAgICBzaXplX3QgaW5kZXgg
PSB0b2tlbnMuZmluZCh0b2tlbik7CisKKyAgICBhdXRvIG1hdGNoZXNJdGVtT3JSZXBsYWNlbWVu
dCA9IFsmXShhdXRvJiB0b2tlbikgeworICAgICAgICByZXR1cm4gdG9rZW4gPT0gaXRlbSB8fCB0
b2tlbiA9PSByZXBsYWNlbWVudDsKKyAgICB9OworCisgICAgc2l6ZV90IGluZGV4ID0gdG9rZW5z
LmZpbmRNYXRjaGluZyhtYXRjaGVzSXRlbU9yUmVwbGFjZW1lbnQpOwogICAgIGlmIChpbmRleCA9
PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGlmICh0b2tlbnMuZmluZChu
ZXdUb2tlbikgIT0gbm90Rm91bmQpCi0gICAgICAgIHRva2Vucy5yZW1vdmUoaW5kZXgpOwotICAg
IGVsc2UKLSAgICAgICAgdG9rZW5zW2luZGV4XSA9IG5ld1Rva2VuOworICAgIHRva2Vuc1tpbmRl
eF0gPSByZXBsYWNlbWVudDsKKyAgICB0b2tlbnMucmVtb3ZlRmlyc3RNYXRjaGluZyhtYXRjaGVz
SXRlbU9yUmVwbGFjZW1lbnQsIGluZGV4ICsgMSk7CiAKICAgICB1cGRhdGVBc3NvY2lhdGVkQXR0
cmlidXRlRnJvbVRva2VucygpOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNmE1YTNiNDk5MDIxMTM3ZmM5ZDM3ZjIyNjAxNmU1MGU3YjUxN2Yy
My4uNGYyMmIzNjFlYjBkNDNkZDhiNzRiZWRkMjFlOWViYjBhYjAzMGMyYSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDE3LTA0LTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXBk
YXRlIERPTVRva2VuTGlzdC5yZXBsYWNlKCkgdG8gbWF0Y2ggdGhlIGxhdGVzdCBET00gc3BlY2lm
aWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTcxMzg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIEFQSSB0ZXN0IGNvdmVyYWdlIGZvciBuZXcgVmVjdG9yIEFQSS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKwogMjAxNy0wNC0yNiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgc29tZSBtb3JlIHRlc3RpbmcgbW9kZXMgZm9yIFdhc20gdGVzdHMgbm93
IHRoYXQgd2UgaGF2ZSB0aWVyIHVwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9WZWN0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9y
LmNwcAppbmRleCA0ODIzNWIxZmNmMmI1ZGMyZDc5NWU4MGMwOTMzNTQ5YWEwNzVkMzljLi40ZGFi
YTMwMDc2Yzg3Njk3MDI2MTE4MjhhNjM1NWMzZDEyMjdjZGMzIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAKQEAgLTU2MCw2ICs1NjAsMjEgQEAgVEVTVChXVEZfVmVj
dG9yLCBSZW1vdmVBbGwpCiAgICAgRVhQRUNUX1RSVUUodjIgPT0gdkV4cGVjdGVkKTsKIH0KIAor
VEVTVChXVEZfVmVjdG9yLCBGaW5kTWF0Y2hpbmcpCit7CisgICAgVmVjdG9yPGludD4gdjsKKyAg
ICBFWFBFQ1RfVFJVRSh2LmZpbmRNYXRjaGluZyhbXShpbnQpIHsgcmV0dXJuIGZhbHNlOyB9KSA9
PSBub3RGb3VuZCk7CisgICAgRVhQRUNUX1RSVUUodi5maW5kTWF0Y2hpbmcoW10oaW50KSB7IHJl
dHVybiB0cnVlOyB9KSA9PSBub3RGb3VuZCk7CisKKyAgICB2ID0gezMsIDEsIDIsIDEsIDIsIDEs
IDIsIDIsIDEsIDEsIDEsIDN9OworICAgIEVYUEVDVF9UUlVFKHYuZmluZE1hdGNoaW5nKFtdKGlu
dCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPiAzOyB9KSA9PSBub3RGb3VuZCk7CisgICAgRVhQRUNU
X1RSVUUodi5maW5kTWF0Y2hpbmcoW10oaW50KSB7IHJldHVybiBmYWxzZTsgfSkgPT0gbm90Rm91
bmQpOworICAgIEVYUEVDVF9FUSgwVSwgdi5maW5kTWF0Y2hpbmcoW10oaW50KSB7IHJldHVybiB0
cnVlOyB9KSk7CisgICAgRVhQRUNUX0VRKDBVLCB2LmZpbmRNYXRjaGluZyhbXShpbnQgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlIDw9IDM7IH0pKTsKKyAgICBFWFBFQ1RfRVEoMVUsIHYuZmluZE1hdGNo
aW5nKFtdKGludCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPCAzOyB9KSk7CisgICAgRVhQRUNUX0VR
KDJVLCB2LmZpbmRNYXRjaGluZyhbXShpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IDI7IH0p
KTsKK30KKwogVEVTVChXVEZfVmVjdG9yLCBSZW1vdmVGaXJzdE1hdGNoaW5nKQogewogICAgIFZl
Y3RvcjxpbnQ+IHY7CkBAIC01ODMsNiArNTk4LDE2IEBAIFRFU1QoV1RGX1ZlY3RvciwgUmVtb3Zl
Rmlyc3RNYXRjaGluZykKICAgICBFWFBFQ1RfVFJVRSh2LnJlbW92ZUZpcnN0TWF0Y2hpbmcoW10g
KGludCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPiAyOyB9KSk7CiAgICAgRVhQRUNUX0VRKDlVLCB2
LnNpemUoKSk7CiAgICAgRVhQRUNUX1RSVUUodiA9PSBWZWN0b3I8aW50Pih7MiwgMSwgMiwgMSwg
MiwgMiwgMSwgMSwgMX0pKTsKKyAgICBFWFBFQ1RfVFJVRSh2LnJlbW92ZUZpcnN0TWF0Y2hpbmco
W10gKGludCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gMTsgfSwgMSkpOworICAgIEVYUEVDVF9F
USg4VSwgdi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKHYgPT0gVmVjdG9yPGludD4oezIsIDIs
IDEsIDIsIDIsIDEsIDEsIDF9KSk7CisgICAgRVhQRUNUX1RSVUUodi5yZW1vdmVGaXJzdE1hdGNo
aW5nKFtdIChpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IDE7IH0sIDMpKTsKKyAgICBFWFBF
Q1RfRVEoN1UsIHYuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRSh2ID09IFZlY3RvcjxpbnQ+KHsy
LCAyLCAxLCAyLCAyLCAxLCAxfSkpOworICAgIEVYUEVDVF9GQUxTRSh2LnJlbW92ZUZpcnN0TWF0
Y2hpbmcoW10gKGludCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gMTsgfSwgNykpOworICAgIEVY
UEVDVF9FUSg3VSwgdi5zaXplKCkpOworICAgIEVYUEVDVF9GQUxTRSh2LnJlbW92ZUZpcnN0TWF0
Y2hpbmcoW10gKGludCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gMTsgfSwgMTApKTsKKyAgICBF
WFBFQ1RfRVEoN1UsIHYuc2l6ZSgpKTsKIH0KIAogVEVTVChXVEZfVmVjdG9yLCBSZW1vdmVBbGxN
YXRjaGluZykKQEAgLTYxMiw2ICs2MzcsMTggQEAgVEVTVChXVEZfVmVjdG9yLCBSZW1vdmVBbGxN
YXRjaGluZykKICAgICBFWFBFQ1RfVFJVRSh2ID09IFZlY3RvcjxpbnQ+KHsyLCAyLCAyLCAyfSkp
OwogICAgIEVYUEVDVF9FUSg0VSwgdi5yZW1vdmVBbGxNYXRjaGluZyhbXSAoaW50IHZhbHVlKSB7
IHJldHVybiB2YWx1ZSA9PSAyOyB9KSk7CiAgICAgRVhQRUNUX1RSVUUodi5pc0VtcHR5KCkpOwor
CisgICAgdiA9IHszLCAxLCAyLCAxLCAyLCAxLCAzLCAyLCAyLCAxLCAxLCAxLCAzfTsKKyAgICBF
WFBFQ1RfRVEoMTNVLCB2LnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDBVLCB2LnJlbW92ZUFsbE1h
dGNoaW5nKFtdIChpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID4gMDsgfSwgMTMpKTsKKyAgICBF
WFBFQ1RfRVEoMTNVLCB2LnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDBVLCB2LnJlbW92ZUFsbE1h
dGNoaW5nKFtdIChpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID4gMDsgfSwgMjApKTsKKyAgICBF
WFBFQ1RfRVEoMTNVLCB2LnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDVVLCB2LnJlbW92ZUFsbE1h
dGNoaW5nKFtdIChpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID4gMTsgfSwgMykpOworICAgIEVY
UEVDVF9FUSg4VSwgdi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKHYgPT0gVmVjdG9yPGludD4o
ezMsIDEsIDIsIDEsIDEsIDEsIDEsIDF9KSk7CisgICAgRVhQRUNUX0VRKDhVLCB2LnJlbW92ZUFs
bE1hdGNoaW5nKFtdIChpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID4gMDsgfSwgMCkpOworICAg
IEVYUEVDVF9FUSgwVSwgdi5zaXplKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBlODVkODBlNjU0YmNiZjM2MTIy
MWRlZmYzY2Y2ZjQ2M2ZjMTcxZjg3Li43MzZmYzJlOTAwNjZjZjEyMjc2ZjdjZmQ5ZGVlNzJlZTNj
OTM5ZThhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxNy0wNC0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVw
ZGF0ZSBET01Ub2tlbkxpc3QucmVwbGFjZSgpIHRvIG1hdGNoIHRoZSBsYXRlc3QgRE9NIHNwZWNp
ZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MTM4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlLXN5bmMgd2ViLXBsYXRmb3JtLXRlc3QgYWZ0ZXI6CisgICAgICAgIC0gaHR0cHM6Ly9naXRo
dWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcHVsbC81NzI1CisKKyAgICAgICAgVGhpcyBh
ZGRzIHRlc3QgY292ZXJhZ2UgZm9yIHRoZSBiZWhhdmlvciBjaGFuZ2UgaW4gdGhpcyBwYXRjaC4K
KworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvRWxlbWVudC1jbGFzc2xp
c3QuaHRtbDoKKwogMjAxNy0wNC0yNyAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+
CiAKICAgICAgICAgRml4IHNvbWUgdGVzdHMgZnJvbSBwbGF0Zm9ybS10ZXN0cy9jc3NvbS12aWV3
L2Nzc29tLXZpZXcvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2RvbS9ub2Rlcy9FbGVtZW50LWNsYXNzbGlzdC5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvRWxlbWVudC1jbGFz
c2xpc3QuaHRtbAppbmRleCBlOTg2ZTgxZjJlNTE1NTJlZmZmZmM0MTI5YjliZTdmYzAwOWMxY2I1
Li5mZDgyYjAwYTg2ZWVlOGUwMDgyZmNhNmY4N2VhNGQ0NjQ3NWFjYzE0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ub2Rlcy9FbGVt
ZW50LWNsYXNzbGlzdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZG9tL25vZGVzL0VsZW1lbnQtY2xhc3NsaXN0Lmh0bWwKQEAgLTMsOCArMyw4
IEBACiAgIDxoZWFkIGNsYXNzPSJ0ZXN0IHRlc3QiPgogICAgIDx0aXRsZSBjbGFzcz0iICI+RWxl
bWVudC5jbGFzc0xpc3QgaW4gY2FzZS1zZW5zaXRpdmUgZG9jdW1lbnRzPC90aXRsZT4KICAgICA8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jY29uY2Vw
dC1jbGFzcyI+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4v
Li4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgogICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAuZm9vIHsg
Zm9udC1zdHlsZTogaXRhbGljOyB9CiAgICAgPC9zdHlsZT4KQEAgLTEwOSw2ICsxMDksOCBAQCB0
ZXN0KGZ1bmN0aW9uICgpIHsKICAgYXNzZXJ0X2ZhbHNlKCBmb28uY2xhc3NMaXN0LmNvbnRhaW5z
KCd0b2tlbjEnKSApOwogICBhc3NlcnRfdHJ1ZSggZm9vLmNsYXNzTGlzdC5jb250YWlucygndG9r
ZW4yJykgKTsKICAgYXNzZXJ0X3RydWUoIGZvby5jbGFzc0xpc3QuY29udGFpbnMoJ3Rva2VuMycp
ICk7CisgIGFzc2VydF9lcXVhbHMoIGZvby5jbGFzc0xpc3QuaXRlbSgwKSwgJ3Rva2VuMycgKTsK
KyAgYXNzZXJ0X2VxdWFscyggZm9vLmNsYXNzTGlzdC5pdGVtKDEpLCAndG9rZW4yJyApOwogfSwg
Jy5yZXBsYWNlIHdpdGggYW4gYWxyZWFkeSBleGlzdGluZyB0b2tlbicpCiBlbGVtLmNsYXNzTmFt
ZSA9ICdmb28nOwogdGVzdChmdW5jdGlvbiAoKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308490</attachid>
            <date>2017-04-27 18:39:38 -0700</date>
            <delta_ts>2017-04-28 13:52:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171388-20170427183935.patch</filename>
            <type>text/plain</type>
            <size>13914</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1OTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk1NDc1MTdiYzI2MGJkNDUxNzdmYWU2
NTA0Nzk0YzEzYmJjZTAwMjcuLjk3NGVhOWJlYTkyMzZhNDVkZTc4ZjI2ZjMzY2MwNzk2ZjE2ZWI5
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMDQtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgRE9NVG9rZW5MaXN0LnJlcGxhY2UoKSB0byBt
YXRjaCB0aGUgbGF0ZXN0IERPTSBzcGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEzODgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVmVjdG9yOjpmaW5kTWF0Y2hpbmcoKSBBUEkg
d2hpY2ggdGFrZXMgaW4gYSBsYW1iZGEgZnVuY3Rpb24gZm9yIGNvbnZlbmllbmNlLgorICAgICAg
ICBBZGQgb3B0aW9uYWwgc3RhcnRJbmRleCBwYXJhbWV0ZXIgdG8gVmVjdG9yOjpyZW1vdmVGaXJz
dE1hdGNoaW5nKCkgLyByZW1vdmVBbGxNYXRjaGluZygpCisgICAgICAgIHRvIHJlbW92ZSBpdGVt
cyBvbmx5IGFmdGVyIGdpdmVuIGluZGV4LgorCisgICAgICAgICogd3RmL1ZlY3Rvci5oOgorICAg
ICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmZpbmRNYXRjaGluZyk6CisgICAgICAgIChXVEY6Om1p
bkNhcGFjaXR5Pjo6ZmluZCk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVtb3ZlRmly
c3RNYXRjaGluZyk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVtb3ZlQWxsTWF0Y2hp
bmcpOgorCiAyMDE3LTA0LTI2ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIExvY2tsZXNzQmFnIG5lZWRzIGEgZGVzdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGM4MjE0ZDgyNDhhMzA1ZDI5ZTNiNWMzNjQwOGY5YmM1ZDM0MDMyODAuLmYxY2JiNjc2ODU1ZWIw
MGJmZDYyMjE1YzZkOTFlOGFjNjhjZmUzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAor
MjAxNy0wNC0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVw
ZGF0ZSBET01Ub2tlbkxpc3QucmVwbGFjZSgpIHRvIG1hdGNoIHRoZSBsYXRlc3QgRE9NIHNwZWNp
ZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MTM4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSBET01Ub2tlbkxpc3QucmVwbGFjZSgpIHRvIG1hdGNoIHRoZSBsYXRlc3QgRE9NIHNw
ZWNpZmljYXRpb24gYWZ0ZXI6CisgICAgICAgIC0gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9k
b20vaXNzdWVzLzQ0MgorICAgICAgICAtIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaW5mcmEv
cHVsbC8xMjYKKworICAgICAgICBUaGUgbGF0ZXN0IHNwZWMgdGV4dCBpcyBhdDoKKyAgICAgICAg
LSBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1kb210b2tlbmxpc3QtcmVwbGFjZQor
ICAgICAgICAtIGh0dHBzOi8vaW5mcmEuc3BlYy53aGF0d2cub3JnLyNzZXQtcmVwbGFjZQorCisg
ICAgICAgIFRoZSBiZWhhdmlvciBjaGFuZ2UgaW4gdGhpcyBwYXRjaCBjYXVzZXMgKGEsIGIsIGMp
LnJlcGxhY2UoYSwgYykgdG8gcmV0dXJuCisgICAgICAgIChjLCBiKSBpbnN0ZWFkIG9mIChiLCBj
KS4gVGhpcyBuZXcgYmVoYXZpb3IgaXMgYWxpZ25lZCB3aXRoIEZpcmVmb3ggYXMgd2VsbC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIHVwZGF0ZWQgZXhpc3RpbmcgdGVzdC4KKworICAgICAgICAq
IGh0bWwvRE9NVG9rZW5MaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6
cmVwbGFjZSk6CisKIDIwMTctMDQtMjcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgV0tVSURlbGVnYXRlUHJpdmF0ZSBuZWVkcyBhIGhvb2sgdG8gdmVu
ZCBkYXRhIHVzZWQgdG8gaW5pdGlhbGl6ZSBpdGVtIHByb3ZpZGVycyBmb3IgZGF0YSBpbnRlcmFj
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0
Zi9WZWN0b3IuaAppbmRleCA5MzMzMTIxMDA5NDVjNmE3ODAxZjhiMzljODZjZDE2N2RkZGIxYTJl
Li5mMTA1ZDQxODA0M2E3MTJiYTg5MjNlZDExYWNjNTRlMThmMTdlNzc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAt
NzA0LDYgKzcwNCw3IEBAIHB1YmxpYzoKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBi
b29sIGNvbnRhaW5zKGNvbnN0IFUmKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBz
aXplX3QgZmluZChjb25zdCBVJikgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWF0Y2hG
dW5jdGlvbj4gc2l6ZV90IGZpbmRNYXRjaGluZyhjb25zdCBNYXRjaEZ1bmN0aW9uJikgY29uc3Q7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFUmKSBj
b25zdDsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIGFwcGVuZElmTm90Q29u
dGFpbnMoY29uc3QgVSYpOwpAQCAtNzM5LDkgKzc0MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
bW92ZShzaXplX3QgcG9zaXRpb24pOwogICAgIHZvaWQgcmVtb3ZlKHNpemVfdCBwb3NpdGlvbiwg
c2l6ZV90IGxlbmd0aCk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCByZW1vdmVGaXJz
dChjb25zdCBVJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTWF0Y2hGdW5jdGlvbj4gYm9vbCBy
ZW1vdmVGaXJzdE1hdGNoaW5nKGNvbnN0IE1hdGNoRnVuY3Rpb24mKTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBNYXRjaEZ1bmN0aW9uPiBib29sIHJlbW92ZUZpcnN0TWF0Y2hpbmcoY29uc3QgTWF0
Y2hGdW5jdGlvbiYsIHNpemVfdCBzdGFydEluZGV4ID0gMCk7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4gdW5zaWduZWQgcmVtb3ZlQWxsKGNvbnN0IFUmKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBNYXRjaEZ1bmN0aW9uPiB1bnNpZ25lZCByZW1vdmVBbGxNYXRjaGluZyhjb25zdCBNYXRjaEZ1
bmN0aW9uJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWF0Y2hGdW5jdGlvbj4gdW5zaWduZWQg
cmVtb3ZlQWxsTWF0Y2hpbmcoY29uc3QgTWF0Y2hGdW5jdGlvbiYsIHNpemVfdCBzdGFydEluZGV4
ID0gMCk7CiAKICAgICB2b2lkIHJlbW92ZUxhc3QoKSAKICAgICB7CkBAIC05MDQsMTEgKzkwNSwx
MSBAQCBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5D
YXBhY2l0eT46OmNvbnRhaW5zKGNvbnN0IFUmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWlu
Q2FwYWNpdHk+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBVPgotc2l6ZV90IFZlY3RvcjxULCBpbmxpbmVD
YXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmZpbmQoY29uc3QgVSYgdmFs
dWUpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaEZ1bmN0aW9uPgorc2l6ZV90IFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmZpbmRN
YXRjaGluZyhjb25zdCBNYXRjaEZ1bmN0aW9uJiBtYXRjaGVzKSBjb25zdAogewogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGF0KGkpID09IHZh
bHVlKQorICAgICAgICBpZiAobWF0Y2hlcyhhdChpKSkpCiAgICAgICAgICAgICByZXR1cm4gaTsK
ICAgICB9CiAgICAgcmV0dXJuIG5vdEZvdW5kOwpAQCAtOTE2LDYgKzkxNywxNSBAQCBzaXplX3Qg
VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6
ZmluZChjb25zdCBVJiB2YQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgogdGVt
cGxhdGU8dHlwZW5hbWUgVT4KK3NpemVfdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJm
bG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpmaW5kKGNvbnN0IFUmIHZhbHVlKSBjb25zdAorewor
ICAgIHJldHVybiBmaW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgcmV0dXJu
IGl0ZW0gPT0gdmFsdWU7CisgICAgfSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2Fw
YWNpdHk+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBVPgogc2l6ZV90IFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnJldmVyc2VGaW5kKGNvbnN0IFUm
IHZhbHVlKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDw9IHNpemUoKTsgKytp
KSB7CkBAIC0xMzk2LDkgKzE0MDYsOSBAQCBpbmxpbmUgYm9vbCBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpyZW1vdmVGaXJzdAogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93
SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgogdGVtcGxhdGU8dHlwZW5hbWUgTWF0Y2hGdW5j
dGlvbj4KLWlubGluZSBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5k
bGVyLCBtaW5DYXBhY2l0eT46OnJlbW92ZUZpcnN0TWF0Y2hpbmcoY29uc3QgTWF0Y2hGdW5jdGlv
biYgbWF0Y2hlcykKK2lubGluZSBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZs
b3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnJlbW92ZUZpcnN0TWF0Y2hpbmcoY29uc3QgTWF0Y2hG
dW5jdGlvbiYgbWF0Y2hlcywgc2l6ZV90IHN0YXJ0SW5kZXgpCiB7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplKCk7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSBzdGFydEluZGV4
OyBpIDwgc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1hdGNoZXMoYXQoaSkpKSB7CiAgICAg
ICAgICAgICByZW1vdmUoaSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0MTgsMTIg
KzE0MjgsMTIgQEAgaW5saW5lIHVuc2lnbmVkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3Zl
cmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnJlbW92ZUEKIAogdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVf
dCBtaW5DYXBhY2l0eT4KIHRlbXBsYXRlPHR5cGVuYW1lIE1hdGNoRnVuY3Rpb24+Ci1pbmxpbmUg
dW5zaWduZWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNh
cGFjaXR5Pjo6cmVtb3ZlQWxsTWF0Y2hpbmcoY29uc3QgTWF0Y2hGdW5jdGlvbiYgbWF0Y2hlcykK
K2lubGluZSB1bnNpZ25lZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
ciwgbWluQ2FwYWNpdHk+OjpyZW1vdmVBbGxNYXRjaGluZyhjb25zdCBNYXRjaEZ1bmN0aW9uJiBt
YXRjaGVzLCBzaXplX3Qgc3RhcnRJbmRleCkKIHsKICAgICBpdGVyYXRvciBob2xlQmVnaW4gPSBl
bmQoKTsKICAgICBpdGVyYXRvciBob2xlRW5kID0gZW5kKCk7CiAgICAgdW5zaWduZWQgbWF0Y2hD
b3VudCA9IDA7Ci0gICAgZm9yIChhdXRvIGl0ID0gYmVnaW4oKSwgaXRFbmQgPSBlbmQoKTsgaXQg
IT0gaXRFbmQ7ICsraXQpIHsKKyAgICBmb3IgKGF1dG8gaXQgPSBiZWdpbigpICsgc3RhcnRJbmRl
eCwgaXRFbmQgPSBlbmQoKTsgaXQgPCBpdEVuZDsgKytpdCkgewogICAgICAgICBpZiAobWF0Y2hl
cygqaXQpKSB7CiAgICAgICAgICAgICBpZiAoaG9sZUJlZ2luID09IGVuZCgpKQogICAgICAgICAg
ICAgICAgIGhvbGVCZWdpbiA9IGl0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9E
T01Ub2tlbkxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCmlu
ZGV4IDAzOTVhMmUwZjFhNjU1MjYxMTM0NDZjZGY3YmM0YTFkNWFkOTc4ZmYuLjNhODBjZDczN2Vj
NzFmYTJlN2YxMTQwMTUwYWEyYWJlMjFkZmRmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVG9rZW5MaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2Vu
TGlzdC5jcHAKQEAgLTE1OCwyMyArMTU4LDI5IEBAIEV4Y2VwdGlvbk9yPGJvb2w+IERPTVRva2Vu
TGlzdDo6dG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIHN0ZDo6b3B0aW9uYWw8CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IERPTVRva2VuTGlzdDo6cmVw
bGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1Rv
a2VuKQorLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb20tZG9tdG9rZW5saXN0LXJl
cGxhY2UKK0V4Y2VwdGlvbk9yPHZvaWQ+IERPTVRva2VuTGlzdDo6cmVwbGFjZShjb25zdCBBdG9t
aWNTdHJpbmcmIGl0ZW0sIGNvbnN0IEF0b21pY1N0cmluZyYgcmVwbGFjZW1lbnQpCiB7Ci0gICAg
aWYgKHRva2VuLmlzRW1wdHkoKSB8fCBuZXdUb2tlbi5pc0VtcHR5KCkpCisgICAgaWYgKGl0ZW0u
aXNFbXB0eSgpIHx8IHJlcGxhY2VtZW50LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFNZTlRBWF9FUlIgfTsKIAotICAgIGlmICh0b2tlbkNvbnRhaW5zSFRNTFNwYWNlKHRv
a2VuKSB8fCB0b2tlbkNvbnRhaW5zSFRNTFNwYWNlKG5ld1Rva2VuKSkKKyAgICBpZiAodG9rZW5D
b250YWluc0hUTUxTcGFjZShpdGVtKSB8fCB0b2tlbkNvbnRhaW5zSFRNTFNwYWNlKHJlcGxhY2Vt
ZW50KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfQ0hBUkFDVEVSX0VSUiB9
OwogCiAgICAgYXV0byYgdG9rZW5zID0gdGhpcy0+dG9rZW5zKCk7Ci0gICAgc2l6ZV90IGluZGV4
ID0gdG9rZW5zLmZpbmQodG9rZW4pOworCisgICAgYXV0byBtYXRjaGVzSXRlbU9yUmVwbGFjZW1l
bnQgPSBbJl0oYXV0byYgdG9rZW4pIHsKKyAgICAgICAgcmV0dXJuIHRva2VuID09IGl0ZW0gfHwg
dG9rZW4gPT0gcmVwbGFjZW1lbnQ7CisgICAgfTsKKworICAgIHNpemVfdCBpbmRleCA9IHRva2Vu
cy5maW5kTWF0Y2hpbmcobWF0Y2hlc0l0ZW1PclJlcGxhY2VtZW50KTsKICAgICBpZiAoaW5kZXgg
PT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBpZiAodG9rZW5zLmZpbmQo
bmV3VG9rZW4pICE9IG5vdEZvdW5kKQotICAgICAgICB0b2tlbnMucmVtb3ZlKGluZGV4KTsKLSAg
ICBlbHNlCi0gICAgICAgIHRva2Vuc1tpbmRleF0gPSBuZXdUb2tlbjsKKyAgICB0b2tlbnNbaW5k
ZXhdID0gcmVwbGFjZW1lbnQ7CisgICAgdG9rZW5zLnJlbW92ZUZpcnN0TWF0Y2hpbmcobWF0Y2hl
c0l0ZW1PclJlcGxhY2VtZW50LCBpbmRleCArIDEpOworICAgIEFTU0VSVCh0b2tlbnMuZmluZChp
dGVtKSA9PSBub3RGb3VuZCk7CisgICAgQVNTRVJUKHRva2Vucy5yZXZlcnNlRmluZChyZXBsYWNl
bWVudCkgPT0gaW5kZXgpOwogCiAgICAgdXBkYXRlQXNzb2NpYXRlZEF0dHJpYnV0ZUZyb21Ub2tl
bnMoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDllZmIyZDlhYTJhZmQ1MmI4YWQ5YTg1MGY4NGI3NzAwNTc2ZmYyNmUuLjY2ODU1NzY4NDgw
YjYxMjJmOGQ1Mjc0MmI0Mjg3ZmUyNWJhOWRiMTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wNC0yNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBET01Ub2tlbkxp
c3QucmVwbGFjZSgpIHRvIG1hdGNoIHRoZSBsYXRlc3QgRE9NIHNwZWNpZmljYXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTM4OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBj
b3ZlcmFnZSBmb3IgbmV3IFZlY3RvciBBUEkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9WZWN0b3IuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIw
MTctMDQtMjcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBBZGQgc3R1YiBTUEkgZm9yIHNldHRpbmcgY29va2llIHN0b3JhZ2UgcGF0aCBvbiBf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1ZlY3Rvci5jcHAKaW5kZXggNDgyMzViMWZjZjJiNWRjMmQ3OTVlODBjMDkzMzU0OWFhMDc1
ZDM5Yy4uNGRhYmEzMDA3NmM4NzY5NzAyNjExODI4YTYzNTVjM2QxMjI3Y2RjMyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwCkBAIC01NjAsNiArNTYwLDIxIEBAIFRF
U1QoV1RGX1ZlY3RvciwgUmVtb3ZlQWxsKQogICAgIEVYUEVDVF9UUlVFKHYyID09IHZFeHBlY3Rl
ZCk7CiB9CiAKK1RFU1QoV1RGX1ZlY3RvciwgRmluZE1hdGNoaW5nKQoreworICAgIFZlY3Rvcjxp
bnQ+IHY7CisgICAgRVhQRUNUX1RSVUUodi5maW5kTWF0Y2hpbmcoW10oaW50KSB7IHJldHVybiBm
YWxzZTsgfSkgPT0gbm90Rm91bmQpOworICAgIEVYUEVDVF9UUlVFKHYuZmluZE1hdGNoaW5nKFtd
KGludCkgeyByZXR1cm4gdHJ1ZTsgfSkgPT0gbm90Rm91bmQpOworCisgICAgdiA9IHszLCAxLCAy
LCAxLCAyLCAxLCAyLCAyLCAxLCAxLCAxLCAzfTsKKyAgICBFWFBFQ1RfVFJVRSh2LmZpbmRNYXRj
aGluZyhbXShpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID4gMzsgfSkgPT0gbm90Rm91bmQpOwor
ICAgIEVYUEVDVF9UUlVFKHYuZmluZE1hdGNoaW5nKFtdKGludCkgeyByZXR1cm4gZmFsc2U7IH0p
ID09IG5vdEZvdW5kKTsKKyAgICBFWFBFQ1RfRVEoMFUsIHYuZmluZE1hdGNoaW5nKFtdKGludCkg
eyByZXR1cm4gdHJ1ZTsgfSkpOworICAgIEVYUEVDVF9FUSgwVSwgdi5maW5kTWF0Y2hpbmcoW10o
aW50IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA8PSAzOyB9KSk7CisgICAgRVhQRUNUX0VRKDFVLCB2
LmZpbmRNYXRjaGluZyhbXShpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlIDwgMzsgfSkpOworICAg
IEVYUEVDVF9FUSgyVSwgdi5maW5kTWF0Y2hpbmcoW10oaW50IHZhbHVlKSB7IHJldHVybiB2YWx1
ZSA9PSAyOyB9KSk7Cit9CisKIFRFU1QoV1RGX1ZlY3RvciwgUmVtb3ZlRmlyc3RNYXRjaGluZykK
IHsKICAgICBWZWN0b3I8aW50PiB2OwpAQCAtNTgzLDYgKzU5OCwxNiBAQCBURVNUKFdURl9WZWN0
b3IsIFJlbW92ZUZpcnN0TWF0Y2hpbmcpCiAgICAgRVhQRUNUX1RSVUUodi5yZW1vdmVGaXJzdE1h
dGNoaW5nKFtdIChpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID4gMjsgfSkpOwogICAgIEVYUEVD
VF9FUSg5VSwgdi5zaXplKCkpOwogICAgIEVYUEVDVF9UUlVFKHYgPT0gVmVjdG9yPGludD4oezIs
IDEsIDIsIDEsIDIsIDIsIDEsIDEsIDF9KSk7CisgICAgRVhQRUNUX1RSVUUodi5yZW1vdmVGaXJz
dE1hdGNoaW5nKFtdIChpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IDE7IH0sIDEpKTsKKyAg
ICBFWFBFQ1RfRVEoOFUsIHYuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRSh2ID09IFZlY3Rvcjxp
bnQ+KHsyLCAyLCAxLCAyLCAyLCAxLCAxLCAxfSkpOworICAgIEVYUEVDVF9UUlVFKHYucmVtb3Zl
Rmlyc3RNYXRjaGluZyhbXSAoaW50IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSAxOyB9LCAzKSk7
CisgICAgRVhQRUNUX0VRKDdVLCB2LnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUodiA9PSBWZWN0
b3I8aW50Pih7MiwgMiwgMSwgMiwgMiwgMSwgMX0pKTsKKyAgICBFWFBFQ1RfRkFMU0Uodi5yZW1v
dmVGaXJzdE1hdGNoaW5nKFtdIChpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IDE7IH0sIDcp
KTsKKyAgICBFWFBFQ1RfRVEoN1UsIHYuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uodi5yZW1v
dmVGaXJzdE1hdGNoaW5nKFtdIChpbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IDE7IH0sIDEw
KSk7CisgICAgRVhQRUNUX0VRKDdVLCB2LnNpemUoKSk7CiB9CiAKIFRFU1QoV1RGX1ZlY3Rvciwg
UmVtb3ZlQWxsTWF0Y2hpbmcpCkBAIC02MTIsNiArNjM3LDE4IEBAIFRFU1QoV1RGX1ZlY3Rvciwg
UmVtb3ZlQWxsTWF0Y2hpbmcpCiAgICAgRVhQRUNUX1RSVUUodiA9PSBWZWN0b3I8aW50Pih7Miwg
MiwgMiwgMn0pKTsKICAgICBFWFBFQ1RfRVEoNFUsIHYucmVtb3ZlQWxsTWF0Y2hpbmcoW10gKGlu
dCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gMjsgfSkpOwogICAgIEVYUEVDVF9UUlVFKHYuaXNF
bXB0eSgpKTsKKworICAgIHYgPSB7MywgMSwgMiwgMSwgMiwgMSwgMywgMiwgMiwgMSwgMSwgMSwg
M307CisgICAgRVhQRUNUX0VRKDEzVSwgdi5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwVSwgdi5y
ZW1vdmVBbGxNYXRjaGluZyhbXSAoaW50IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+IDA7IH0sIDEz
KSk7CisgICAgRVhQRUNUX0VRKDEzVSwgdi5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwVSwgdi5y
ZW1vdmVBbGxNYXRjaGluZyhbXSAoaW50IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+IDA7IH0sIDIw
KSk7CisgICAgRVhQRUNUX0VRKDEzVSwgdi5zaXplKCkpOworICAgIEVYUEVDVF9FUSg1VSwgdi5y
ZW1vdmVBbGxNYXRjaGluZyhbXSAoaW50IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+IDE7IH0sIDMp
KTsKKyAgICBFWFBFQ1RfRVEoOFUsIHYuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRSh2ID09IFZl
Y3RvcjxpbnQ+KHszLCAxLCAyLCAxLCAxLCAxLCAxLCAxfSkpOworICAgIEVYUEVDVF9FUSg4VSwg
di5yZW1vdmVBbGxNYXRjaGluZyhbXSAoaW50IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA+IDA7IH0s
IDApKTsKKyAgICBFWFBFQ1RfRVEoMFUsIHYuc2l6ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMTVkYjM1MjVj
NWIzOTI3NmRkNDVjNWIwZWJkMDA5OTcwMzRiM2ViZS4uYWE1ZTg3YWMzYjNhNGYxMmJmODZkN2Y2
MzVjYjIxYjgyOGQ2YWZiNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsMTkgQEAKIDIwMTctMDQtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAor
ICAgICAgICBVcGRhdGUgRE9NVG9rZW5MaXN0LnJlcGxhY2UoKSB0byBtYXRjaCB0aGUgbGF0ZXN0
IERPTSBzcGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzEzODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZS1zeW5jIHdlYi1wbGF0Zm9ybS10ZXN0IGFmdGVyOgorICAgICAgICAtIGh0
dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3B1bGwvNTcyNQorCisgICAg
ICAgIFRoaXMgYWRkcyB0ZXN0IGNvdmVyYWdlIGZvciB0aGUgYmVoYXZpb3IgY2hhbmdlIGluIHRo
aXMgcGF0Y2guCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL0VsZW1l
bnQtY2xhc3NsaXN0Lmh0bWw6CisKKzIwMTctMDQtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKwogICAgICAgICBFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIC8gZ2V0
Q2xpZW50UmVjdHMoKSBzaG91bGQgcmV0dXJuIGEgRE9NUmVjdCB0eXBlcwogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjI2CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL0Vs
ZW1lbnQtY2xhc3NsaXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2RvbS9ub2Rlcy9FbGVtZW50LWNsYXNzbGlzdC5odG1sCmluZGV4IGU5ODZlODFm
MmU1MTU1MmVmZmZmYzQxMjliOWJlN2ZjMDA5YzFjYjUuLmZkODJiMDBhODZlZWU4ZTAwODJmY2E2
Zjg3ZWE0ZDQ2NDc1YWNjMTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL0VsZW1lbnQtY2xhc3NsaXN0Lmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvRWxl
bWVudC1jbGFzc2xpc3QuaHRtbApAQCAtMyw4ICszLDggQEAKICAgPGhlYWQgY2xhc3M9InRlc3Qg
dGVzdCI+CiAgICAgPHRpdGxlIGNsYXNzPSIgIj5FbGVtZW50LmNsYXNzTGlzdCBpbiBjYXNlLXNl
bnNpdGl2ZSBkb2N1bWVudHM8L3RpdGxlPgogICAgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0
cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWNsYXNzIj4KLSAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9Ii4uLy4uLy4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHN0eWxlIHR5cGU9InRleHQvY3NzIj4KIC5mb28geyBmb250LXN0eWxlOiBpdGFsaWM7IH0KICAg
ICA8L3N0eWxlPgpAQCAtMTA5LDYgKzEwOSw4IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICBhc3Nl
cnRfZmFsc2UoIGZvby5jbGFzc0xpc3QuY29udGFpbnMoJ3Rva2VuMScpICk7CiAgIGFzc2VydF90
cnVlKCBmb28uY2xhc3NMaXN0LmNvbnRhaW5zKCd0b2tlbjInKSApOwogICBhc3NlcnRfdHJ1ZSgg
Zm9vLmNsYXNzTGlzdC5jb250YWlucygndG9rZW4zJykgKTsKKyAgYXNzZXJ0X2VxdWFscyggZm9v
LmNsYXNzTGlzdC5pdGVtKDApLCAndG9rZW4zJyApOworICBhc3NlcnRfZXF1YWxzKCBmb28uY2xh
c3NMaXN0Lml0ZW0oMSksICd0b2tlbjInICk7CiB9LCAnLnJlcGxhY2Ugd2l0aCBhbiBhbHJlYWR5
IGV4aXN0aW5nIHRva2VuJykKIGVsZW0uY2xhc3NOYW1lID0gJ2Zvbyc7CiB0ZXN0KGZ1bmN0aW9u
ICgpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>