<?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>155932</bug_id>
          
          <creation_ts>2016-03-27 12:35:45 -0700</creation_ts>
          <short_desc>[JSC] ArithSub should not propagate &quot;UsesAsOther&quot;</short_desc>
          <delta_ts>2016-03-28 17:59:10 -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="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1178330</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-27 12:35:45 -0700</bug_when>
    <thetext>[JSC] ArithSub should not propagate &quot;UsesAsOther&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178331</commentid>
    <comment_count>1</comment_count>
      <attachid>274998</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-27 12:43:21 -0700</bug_when>
    <thetext>Created attachment 274998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178332</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-27 15:04:41 -0700</bug_when>
    <thetext>                                                  Conf#1                    Conf#2                                      
SunSpider:
   3d-cube                                    4.9307+-0.0957            4.9222+-0.0950        
   3d-morph                                   5.1708+-0.0663     ?      5.1783+-0.0467        ?
   3d-raytrace                                5.5145+-0.0365     ?      5.5304+-0.0690        ?
   access-binary-trees                        2.1499+-0.0374     ?      2.1715+-0.0354        ? might be 1.0101x slower
   access-fannkuch                            5.8879+-0.0826     ?      5.8881+-0.0240        ?
   access-nbody                               2.5250+-0.0280            2.4996+-0.0457          might be 1.0102x faster
   access-nsieve                              3.2002+-0.0695            3.1330+-0.0525          might be 1.0214x faster
   bitops-3bit-bits-in-byte                   1.1306+-0.0221            1.1273+-0.0181        
   bitops-bits-in-byte                        2.7614+-0.0271     ?      2.8000+-0.0639        ? might be 1.0140x slower
   bitops-bitwise-and                         2.0536+-0.0398            2.0227+-0.0314          might be 1.0153x faster
   bitops-nsieve-bits                         3.0996+-0.0253     ?      3.1273+-0.0456        ?
   controlflow-recursive                      2.3840+-0.0648            2.3155+-0.0134          might be 1.0296x faster
   crypto-aes                                 3.9912+-0.0714     ?      3.9948+-0.0369        ?
   crypto-md5                                 2.5458+-0.1306            2.4669+-0.0393          might be 1.0320x faster
   crypto-sha1                                2.2936+-0.0105     ?      2.3261+-0.0345        ? might be 1.0142x slower
   date-format-tofte                          6.8176+-0.1320     ?      6.9643+-0.1718        ? might be 1.0215x slower
   date-format-xparb                          4.8542+-0.0625     ?      4.9652+-0.1971        ? might be 1.0229x slower
   math-cordic                                2.8032+-0.0174     ?      2.8302+-0.0545        ?
   math-partial-sums                          4.8268+-0.1292            4.8188+-0.0587        
   math-spectral-norm                         1.9849+-0.0231     ?      2.0026+-0.0258        ?
   regexp-dna                                 6.2192+-0.0898     ?      6.3581+-0.1502        ? might be 1.0223x slower
   string-base64                              4.3967+-0.0534     ?      4.4772+-0.1214        ? might be 1.0183x slower
   string-fasta                               5.9431+-0.1694            5.8292+-0.0227          might be 1.0195x faster
   string-tagcloud                            8.1152+-0.0659     ?      8.1860+-0.1629        ?
   string-unpack-code                        19.1718+-0.4984           18.8128+-0.3525          might be 1.0191x faster
   string-validate-input                      4.4078+-0.0887            4.3474+-0.0484          might be 1.0139x faster

   &lt;arithmetic&gt;                               4.5838+-0.0270            4.5806+-0.0203          might be 1.0007x faster

                                                  Conf#1                    Conf#2                                      
Octane:
   encrypt                                   0.16180+-0.00097    ?     0.16218+-0.00078       ?
   decrypt                                   2.79758+-0.00502    ?     2.80383+-0.00867       ?
   deltablue                        x2       0.14175+-0.00325          0.14040+-0.00215       
   earley                                    0.28110+-0.00106    ?     0.28187+-0.00103       ?
   boyer                                     4.93778+-0.04403    ?     4.94451+-0.03648       ?
   navier-stokes                    x2       4.92189+-0.00887          4.91822+-0.01628       
   raytrace                         x2       0.89016+-0.00361    ?     0.89089+-0.00244       ?
   richards                         x2       0.08144+-0.00055    ?     0.08185+-0.00059       ?
   splay                            x2       0.35024+-0.00148          0.34965+-0.00165       
   regexp                           x2      20.00284+-0.16960         19.88180+-0.20814       
   pdfjs                            x2      38.40403+-0.26182    ?    38.74045+-0.33592       ?
   mandreel                         x2      42.12221+-0.09619    ?    42.17890+-0.08240       ?
   gbemu                            x2      24.01798+-0.18105    ?    24.02125+-0.10917       ?
   closure                                   0.54906+-0.00173          0.54882+-0.00211       
   jquery                                    7.10231+-0.01710    ?     7.12101+-0.02288       ?
   box2d                            x2       9.12832+-0.12747          9.08929+-0.03892       
   zlib                             x2     356.50694+-3.60039        354.52699+-5.62696       
   typescript                       x2     632.61130+-3.01168    ?   636.36732+-3.26486       ?

   &lt;geometric&gt;                               5.12546+-0.01204    ?     5.12546+-0.00926       ? might be 1.0000x slower

                                                  Conf#1                    Conf#2                                      
Kraken:
   ai-astar                                   87.319+-0.789      ?      88.130+-1.996         ?
   audio-beat-detection                       44.910+-0.118      ^      43.010+-0.426         ^ definitely 1.0442x faster
   audio-dft                                  96.392+-0.788      ?      97.927+-1.455         ? might be 1.0159x slower
   audio-fft                                  35.294+-0.123      ^      33.320+-0.365         ^ definitely 1.0593x faster
   audio-oscillator                           47.883+-0.076      ?      48.304+-0.629         ?
   imaging-darkroom                           60.154+-0.090             60.102+-0.061         
   imaging-desaturate                         44.490+-0.213      ?      44.612+-0.668         ?
   imaging-gaussian-blur                      63.341+-1.290      ?      64.255+-1.269         ? might be 1.0144x slower
   json-parse-financial                       36.898+-0.241      ?      37.541+-0.489         ? might be 1.0174x slower
   json-stringify-tinderbox                   25.153+-0.710      ?      25.263+-0.728         ?
   stanford-crypto-aes                        39.040+-0.262             38.996+-0.262         
   stanford-crypto-ccm                        34.603+-0.828      ?      34.609+-1.151         ?
   stanford-crypto-pbkdf2                     97.953+-0.278      ?      98.177+-0.476         ?
   stanford-crypto-sha256-iterative           38.068+-0.517             37.815+-0.064         

   &lt;arithmetic&gt;                               53.678+-0.195      ?      53.719+-0.248         ? might be 1.0008x slower

                                                  Conf#1                    Conf#2                                      
AsmBench:
   bigfib.cpp                               434.1430+-3.7235     ?    437.7693+-3.5708        ?
   cray.c                                   361.0152+-1.4841     ?    361.6810+-1.4657        ?
   dry.c                                    447.9220+-24.1240         428.4335+-14.4602         might be 1.0455x faster
   FloatMM.c                                720.2708+-2.0867          719.4121+-5.6026        
   gcc-loops.cpp                           3667.4256+-7.7118     ?   3677.9957+-11.6719       ?
   n-body.c                                 809.6624+-1.8275          809.3548+-2.5638        
   Quicksort.c                              390.5018+-0.7997     ?    391.7016+-1.4568        ?
   stepanov_container.cpp                  3270.2863+-9.8415         3253.3661+-12.8740       
   Towers.c                                 268.8880+-1.9320          268.1651+-0.9033        

   &lt;geometric&gt;                              718.8807+-3.9822          716.1212+-2.7168          might be 1.0039x faster

                                                  Conf#1                    Conf#2                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                           30.8560+-0.0673           30.8272+-0.0792          might be 1.0009x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178486</commentid>
    <comment_count>3</comment_count>
      <attachid>274998</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-28 12:07:29 -0700</bug_when>
    <thetext>Comment on attachment 274998
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:21
&gt; +        This patch also adds this change and test coverage to ArithAdd.
&gt; +        ArithAdd was not a problem in practice because it is only
&gt; +        generated before Fixup if both operands are known to be numerical.
&gt; +        The change to ArithAdd is there to protect us of the ArithSub-like
&gt; +        problems if we ever improve our support of arithmetic operators.

ArithAdd should only operate on numbers or ints.  I think you can make this an assert instead of masking out the UsesAsOther flag.  We have already have + operator support in ValueAdd which handles the UsesAsOther case.

But is ValueAdd doing the right thing?  ValueAdd currently conditionally clears the UsesAsOther flag:

            if (node-&gt;child1()-&gt;hasNumberResult() || node-&gt;child2()-&gt;hasNumberResult())
                flags &amp;= ~NodeBytecodeUsesAsOther;

Since the ES6 spec also states that the +operator will always ToNumber (in the end) the operands before adding (see https://tc39.github.io/ecma262/2016/#sec-addition-operator-plus-runtime-semantics-evaluation), should we also unconditionally mask out the UsesAsOther flag there too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178574</commentid>
    <comment_count>4</comment_count>
      <attachid>275064</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-28 16:33:58 -0700</bug_when>
    <thetext>Created attachment 275064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178577</commentid>
    <comment_count>5</comment_count>
      <attachid>275064</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-28 16:48:39 -0700</bug_when>
    <thetext>Comment on attachment 275064
Patch

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

r=me.  Sorry for my previous confusion with ArithAdd and ValueAdd.

&gt; Source/JavaScriptCore/tests/stress/arith-add-on-double-array-with-holes.js:16
&gt; +    [&apos;{ toString: function() {Â return &quot;&quot;; } }&apos;, NaN, NaN, 1, 1],
&gt; +    [&apos;{ toString: function() {Â return &quot;WebKit&quot;; } }&apos;, NaN, NaN, NaN, NaN],

Please remove the non-ASCII character there.

&gt; Source/JavaScriptCore/tests/stress/arith-add-on-double-array-with-holes.js:30
&gt; +        `// Those holes are not observable by arithmetic operation.

Use &apos; instead of `?

&gt; Source/JavaScriptCore/tests/stress/arith-add-on-double-array-with-holes.js:98
&gt; +        }`

Use &apos; instead of `?

&gt; Source/JavaScriptCore/tests/stress/arith-sub-on-double-array-with-holes.js:16
&gt; +    [&apos;{ toString: function() {Â return &quot;&quot;; } }&apos;, 1, -1],
&gt; +    [&apos;{ toString: function() {Â return &quot;WebKit&quot;; } }&apos;, NaN, NaN],

Please remove the non-ASCII character there.

&gt; Source/JavaScriptCore/tests/stress/arith-sub-on-double-array-with-holes.js:28
&gt; +        `// Those holes are not observable by arithmetic operation.

Use &apos; instead of `?

&gt; Source/JavaScriptCore/tests/stress/arith-sub-on-double-array-with-holes.js:96
&gt; +        }`

Use &apos; instead of `?

&gt; Source/JavaScriptCore/tests/stress/value-add-on-double-array-with-holes.js:16
&gt; +    [&apos;{ toString: function() {Â return &quot;&quot;; } }&apos;, &apos;&quot;undefined&quot;&apos;, &apos;&quot;undefined&quot;&apos;, &apos;&quot;1&quot;&apos;, &apos;&quot;1&quot;&apos;],
&gt; +    [&apos;{ toString: function() {Â return &quot;WebKit&quot;; } }&apos;, &apos;&quot;undefinedWebKit&quot;&apos;, &apos;&quot;WebKitundefined&quot;&apos;, &apos;&quot;1WebKit&quot;&apos;, &apos;&quot;WebKit1&quot;&apos;],

Please remove the non-ASCII character there.

&gt; Source/JavaScriptCore/tests/stress/value-add-on-double-array-with-holes.js:30
&gt; +        `// Those holes are not observable by arithmetic operation.

Use &apos; instead of `?

&gt; Source/JavaScriptCore/tests/stress/value-add-on-double-array-with-holes.js:98
&gt; +        }`

Use &apos; instead of `?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178580</commentid>
    <comment_count>6</comment_count>
      <attachid>275067</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-28 16:58:06 -0700</bug_when>
    <thetext>Created attachment 275067
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178592</commentid>
    <comment_count>7</comment_count>
      <attachid>275067</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-28 17:59:06 -0700</bug_when>
    <thetext>Comment on attachment 275067
Patch for landing

Clearing flags on attachment: 275067

Committed r198770: &lt;http://trac.webkit.org/changeset/198770&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178593</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-28 17:59:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274998</attachid>
            <date>2016-03-27 12:43:21 -0700</date>
            <delta_ts>2016-03-28 16:33:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155932-20160327124324.patch</filename>
            <type>text/plain</type>
            <size>20542</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
Y2VhNjU1YWFlNDYyMjM1ZDk2ODI5ZTE1Y2NkMTE5YmY1NWM5MjBmLi43MzUxOTU5NjkzYTExN2Zm
YTM3ZDc1Y2MxMGYzOGE1MDAxNzJkNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAxNi0wMy0yNyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBcml0aFN1YiBzaG91bGQgbm90IHByb3BhZ2F0ZSAiVXNl
c0FzT3RoZXIiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTU5MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgbm9kZSBBcml0aFN1YiB3YXMgYmFja3Byb3BhZ2F0aW5nIFVzZXNBc090aGVyLgorICAg
ICAgICBUaGlzIGNhdXNlcyBhbnkgR2V0QnlWYWwgb24gYSBEb3VibGUgQXJyYXkgdG8gaGF2ZSBh
biBleHRyYQorICAgICAgICBob2xlIGNoZWNrIGlmIGl0IGZsb3dzIGludG8gYW4gQXJpdGhTdWIu
CisKKyAgICAgICAgVGhlIGRlZmluaXRpb24gb2YgQXJpdGhTdWIgKDEyLjguNC4xKSBoYXMgYm90
aCBvcGVyYW5kcyBnbworICAgICAgICB0aHJvdWdoIFRvTnVtYmVyKCkuIFRvTnVtYmVyKCkgb24g
InVuZGVmaW5lZCIgYWx3YXlzIHByb2R1Y2VzCisgICAgICAgIE5hTi4gSXQgaXMgc2FmZSB0byBp
Z25vcmUgdGhlIE5hTiBtYXJrZXIgZnJvbSBob2xlIHdoZW4KKyAgICAgICAgdGhlIERBRyBmbG93
cyBpbnRvIEFyaXRoU3ViLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIHRoaXMgY2hh
bmdlIGFuZCB0ZXN0IGNvdmVyYWdlIHRvIEFyaXRoQWRkLgorICAgICAgICBBcml0aEFkZCB3YXMg
bm90IGEgcHJvYmxlbSBpbiBwcmFjdGljZSBiZWNhdXNlIGl0IGlzIG9ubHkKKyAgICAgICAgZ2Vu
ZXJhdGVkIGJlZm9yZSBGaXh1cCBpZiBib3RoIG9wZXJhbmRzIGFyZSBrbm93biB0byBiZSBudW1l
cmljYWwuCisgICAgICAgIFRoZSBjaGFuZ2UgdG8gQXJpdGhBZGQgaXMgdGhlcmUgdG8gcHJvdGVj
dCB1cyBvZiB0aGUgQXJpdGhTdWItbGlrZQorICAgICAgICBwcm9ibGVtcyBpZiB3ZSBldmVyIGlt
cHJvdmUgb3VyIHN1cHBvcnQgb2YgYXJpdGhtZXRpYyBvcGVyYXRvcnMuCisKKyAgICAgICAgKiBk
ZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJpdGgtYWRkLW9uLWRvdWJsZS1hcnJheS13aXRoLWhvbGVzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGxldC50ZXN0Q2FzZS5vZi50ZXN0Q2FzZXMuZXZhbC5ub25PYnNlcnZhYmxlSG9sZU9u
TGhzKToKKyAgICAgICAgKGxldC50ZXN0Q2FzZS5vZi50ZXN0Q2FzZXMub2JzZXJ2YWJsZUhvbGVP
bkxocyk6CisgICAgICAgIChsZXQudGVzdENhc2Uub2YudGVzdENhc2VzLm5vbk9ic2VydmFibGVI
b2xlT25SaHMpOgorICAgICAgICAobGV0LnRlc3RDYXNlLm9mLnRlc3RDYXNlcy5vYnNlcnZhYmxl
SG9sZU9uUmhzKToKKyAgICAgICAgKGxldC50ZXN0Q2FzZS5vZi50ZXN0Q2FzZXMubGV0LmlzRXhw
ZWN0ZWRMZWZ0VmFsdWVXaXRoSG9sZSk6CisgICAgICAgIChsZXQudGVzdENhc2Uub2YudGVzdENh
c2VzLmxldC5pc0V4cGVjdGVkUmlnaHRWYWx1ZVdpdGhIb2xlKToKKyAgICAgICAgKGxldC50ZXN0
Q2FzZS5vZi50ZXN0Q2FzZXMubGV0LmlzRXhwZWN0ZWRMZWZWYWx1ZSk6CisgICAgICAgIChsZXQu
dGVzdENhc2Uub2YudGVzdENhc2VzLmxldC5pc0V4cGVjdGVkUmlnaHRWYWx1ZSk6CisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2FyaXRoLXN1Yi1vbi1kb3VibGUtYXJyYXktd2l0aC1ob2xlcy5qczog
QWRkZWQuCisgICAgICAgIChsZXQudGVzdENhc2Uub2YudGVzdENhc2VzLmV2YWwubm9uT2JzZXJ2
YWJsZUhvbGVPbkxocyk6CisgICAgICAgIChsZXQudGVzdENhc2Uub2YudGVzdENhc2VzLm9ic2Vy
dmFibGVIb2xlT25MaHMpOgorICAgICAgICAobGV0LnRlc3RDYXNlLm9mLnRlc3RDYXNlcy5ub25P
YnNlcnZhYmxlSG9sZU9uUmhzKToKKyAgICAgICAgKGxldC50ZXN0Q2FzZS5vZi50ZXN0Q2FzZXMu
b2JzZXJ2YWJsZUhvbGVPblJocyk6CisgICAgICAgIChsZXQudGVzdENhc2Uub2YudGVzdENhc2Vz
LmxldC5pc0V4cGVjdGVkTGVmVmFsdWUpOgorICAgICAgICAobGV0LnRlc3RDYXNlLm9mLnRlc3RD
YXNlcy5sZXQuaXNFeHBlY3RlZFJpZ2h0VmFsdWUpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy92
YWx1ZS1hZGQtb24tZG91YmxlLWFycmF5LXdpdGgtaG9sZXMuanM6IEFkZGVkLgorICAgICAgICAo
bGV0LnRlc3RDYXNlLm9mLnRlc3RDYXNlcy5ldmFsLm5vbk9ic2VydmFibGVIb2xlT25MaHMpOgor
ICAgICAgICAobGV0LnRlc3RDYXNlLm9mLnRlc3RDYXNlcy5vYnNlcnZhYmxlSG9sZU9uTGhzKToK
KyAgICAgICAgKGxldC50ZXN0Q2FzZS5vZi50ZXN0Q2FzZXMubm9uT2JzZXJ2YWJsZUhvbGVPblJo
cyk6CisgICAgICAgIChsZXQudGVzdENhc2Uub2YudGVzdENhc2VzLm9ic2VydmFibGVIb2xlT25S
aHMpOgorICAgICAgICAobGV0LnRlc3RDYXNlLm9mLnRlc3RDYXNlcy5sZXQuaXNFeHBlY3RlZExl
ZnRWYWx1ZVdpdGhIb2xlKToKKyAgICAgICAgKGxldC50ZXN0Q2FzZS5vZi50ZXN0Q2FzZXMubGV0
LmlzRXhwZWN0ZWRSaWdodFZhbHVlV2l0aEhvbGUpOgorICAgICAgICAobGV0LnRlc3RDYXNlLm9m
LnRlc3RDYXNlcy5sZXQuaXNFeHBlY3RlZExlZlZhbHVlKToKKyAgICAgICAgKGxldC50ZXN0Q2Fz
ZS5vZi50ZXN0Q2FzZXMubGV0LmlzRXhwZWN0ZWRSaWdodFZhbHVlKToKKwogMjAxNi0wMy0yNSAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIE1pc2MuIEph
dmFTY3JpcHRDb3JlIGJ1aWx0LWlucyBjbGVhbnVwcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXgg
OWUzYWNmMWRlYTAzZmI4YjBjN2FlYjI2YzA4YmYxOTE5YmRmZjllOS4uYjM5NDcyOTIwNzQ2Yzgx
MjBkMzhhNTI1MzRjZjAzY2NiZjQ3MzJmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yNDgs
NiArMjQ4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQXJpdGhBZGQ6
IHsKKyAgICAgICAgICAgIGZsYWdzICY9IH5Ob2RlQnl0ZWNvZGVVc2VzQXNPdGhlcjsKICAgICAg
ICAgICAgIGlmIChpc05vdE5lZ1plcm8obm9kZS0+Y2hpbGQxKCkubm9kZSgpKSB8fCBpc05vdE5l
Z1plcm8obm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkKICAgICAgICAgICAgICAgICBmbGFncyAmPSB+
Tm9kZUJ5dGVjb2RlTmVlZHNOZWdaZXJvOwogICAgICAgICAgICAgaWYgKCFpc1dpdGhpblBvd2Vy
T2ZUd288MzI+KG5vZGUtPmNoaWxkMSgpKSAmJiAhaXNXaXRoaW5Qb3dlck9mVHdvPDMyPihub2Rl
LT5jaGlsZDIoKSkpCkBAIC0yNjgsNiArMjY5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAg
ICAgICAgIGNhc2UgQXJpdGhTdWI6IHsKKyAgICAgICAgICAgIGZsYWdzICY9IH5Ob2RlQnl0ZWNv
ZGVVc2VzQXNPdGhlcjsKICAgICAgICAgICAgIGlmIChpc05vdE5lZ1plcm8obm9kZS0+Y2hpbGQx
KCkubm9kZSgpKSB8fCBpc05vdFBvc1plcm8obm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkKICAgICAg
ICAgICAgICAgICBmbGFncyAmPSB+Tm9kZUJ5dGVjb2RlTmVlZHNOZWdaZXJvOwogICAgICAgICAg
ICAgaWYgKCFpc1dpdGhpblBvd2VyT2ZUd288MzI+KG5vZGUtPmNoaWxkMSgpKSAmJiAhaXNXaXRo
aW5Qb3dlck9mVHdvPDMyPihub2RlLT5jaGlsZDIoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FyaXRoLWFkZC1vbi1kb3VibGUtYXJyYXktd2l0aC1o
b2xlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJpdGgtYWRkLW9u
LWRvdWJsZS1hcnJheS13aXRoLWhvbGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwZmUzOTEzYjFiYWQxZDhk
OTQ5MjQ3ZDFkYjBjYjQ4YmM4ODc0ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2FyaXRoLWFkZC1vbi1kb3VibGUtYXJyYXktd2l0aC1ob2xl
cy5qcwpAQCAtMCwwICsxLDExNiBAQAorbGV0IHRlc3RDYXNlcyA9IFsKKyAgICAvLyBOdW1iZXJz
CisgICAgWycxJywgTmFOLCBOYU4sIDIsIDJdLAorICAgIFsnMS41JywgTmFOLCBOYU4sIDEgKyAx
LjUsIDEgKyAxLjVdLAorICAgIFtOYU4sIE5hTiwgTmFOLCBOYU4sIE5hTl0sCisKKyAgICAvLyBT
dHJpbmdzLgorICAgIFsnIiInLCBOYU4sIE5hTiwgMSwgMV0sCisgICAgWyduZXcgU3RyaW5nKCkn
LCBOYU4sIE5hTiwgMSwgMV0sCisgICAgWyciV2ViS2l0ISInLCBOYU4sIE5hTiwgTmFOLCBOYU5d
LAorCisgICAgLy8gT2JqZWN0cy4KKyAgICBbJ3sgfScsIE5hTiwgTmFOLCBOYU4sIE5hTl0sCisg
ICAgWyd7IGZvbzogMSB9JywgTmFOLCBOYU4sIE5hTiwgTmFOXSwKKyAgICBbJ3sgdG9TdHJpbmc6
IGZ1bmN0aW9uKCkge8KgcmV0dXJuICIiOyB9IH0nLCBOYU4sIE5hTiwgMSwgMV0sCisgICAgWyd7
IHRvU3RyaW5nOiBmdW5jdGlvbigpIHvCoHJldHVybiAiV2ViS2l0IjsgfSB9JywgTmFOLCBOYU4s
IE5hTiwgTmFOXSwKKworICAgIC8vIE90aGVycy4KKyAgICBbJ251bGwnLCBOYU4sIE5hTiwgMSwg
MV0sCisgICAgWyd1bmRlZmluZWQnLCBOYU4sIE5hTiwgTmFOLCBOYU5dCitdOworCitmb3IgKGxl
dCB0ZXN0Q2FzZSBvZiB0ZXN0Q2FzZXMpIHsKKyAgICBsZXQgb3RoZXJPcGVyYW5kID0gdGVzdENh
c2VbMF07CisgICAgbGV0IGV4cGVjdGVkTGVmdFZhbHVlV2l0aEhvbGUgPSB0ZXN0Q2FzZVsxXTsK
KyAgICBsZXQgZXhwZWN0ZWRSaWdodFZhbHVlV2l0aEhvbGUgPSB0ZXN0Q2FzZVsyXTsKKyAgICBs
ZXQgZXhwZWN0ZWRMZWZ0VmFsdWUgPSB0ZXN0Q2FzZVszXTsKKyAgICBsZXQgZXhwZWN0ZWRSaWdo
dFZhbHVlID0gdGVzdENhc2VbNF07CisgICAgZXZhbCgKKyAgICAgICAgYC8vIFRob3NlIGhvbGVz
IGFyZSBub3Qgb2JzZXJ2YWJsZSBieSBhcml0aG1ldGljIG9wZXJhdGlvbi4KKyAgICAgICAgLy8g
VGhlIHJldHVybiB2YWx1ZSBpcyBhbHdheXMgZ29pbmcgdG8gYmUgTmFOLgorICAgICAgICBmdW5j
dGlvbiBub25PYnNlcnZhYmxlSG9sZU9uTGhzKGFycmF5LCBvdGhlclZhbHVlKSB7CisgICAgICAg
ICAgICByZXR1cm4gTWF0aC5taW4oYXJyYXlbMF0pICsgTWF0aC5taW4ob3RoZXJWYWx1ZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgbm9JbmxpbmUobm9uT2JzZXJ2YWJsZUhvbGVPbkxocyk7CisKKyAg
ICAgICAgZnVuY3Rpb24gb2JzZXJ2YWJsZUhvbGVPbkxocyhhcnJheSwgb3RoZXJWYWx1ZSkgewor
ICAgICAgICAgICAgbGV0IHZhbHVlID0gYXJyYXlbMF07CisgICAgICAgICAgICByZXR1cm4gW01h
dGgubWluKHZhbHVlKSArIE1hdGgubWluKG90aGVyVmFsdWUpLCB2YWx1ZV07CisgICAgICAgIH0K
KyAgICAgICAgbm9JbmxpbmUob2JzZXJ2YWJsZUhvbGVPbkxocyk7CisKKyAgICAgICAgZnVuY3Rp
b24gbm9uT2JzZXJ2YWJsZUhvbGVPblJocyhhcnJheSwgb3RoZXJWYWx1ZSkgeworICAgICAgICAg
ICAgcmV0dXJuIE1hdGgubWluKG90aGVyVmFsdWUpICsgTWF0aC5taW4oYXJyYXlbMF0pOworICAg
ICAgICB9CisgICAgICAgIG5vSW5saW5lKG5vbk9ic2VydmFibGVIb2xlT25SaHMpOworCisgICAg
ICAgIGZ1bmN0aW9uIG9ic2VydmFibGVIb2xlT25SaHMoYXJyYXksIG90aGVyVmFsdWUpIHsKKyAg
ICAgICAgICAgIGxldCB2YWx1ZSA9IGFycmF5WzBdOworICAgICAgICAgICAgcmV0dXJuIFtNYXRo
Lm1pbihvdGhlclZhbHVlKSArIE1hdGgubWluKHZhbHVlKSwgdmFsdWVdOworICAgICAgICB9Cisg
ICAgICAgIG5vSW5saW5lKG9ic2VydmFibGVIb2xlT25SaHMpOworCisgICAgICAgIGxldCB0ZXN0
QXJyYXkgPSBuZXcgQXJyYXk7CisgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgMzsgKytpKSB7
CisgICAgICAgICAgICB0ZXN0QXJyYXlbaV0gPSBpICsgMC41CisgICAgICAgIH0KKworICAgICAg
ICBsZXQgaXNFeHBlY3RlZExlZnRWYWx1ZVdpdGhIb2xlID0gZnVuY3Rpb24odmFsdWUpIHsKKyAg
ICAgICAgICAgIGlmICgke2V4cGVjdGVkTGVmdFZhbHVlV2l0aEhvbGV9ID09PSAke2V4cGVjdGVk
TGVmdFZhbHVlV2l0aEhvbGV9KQorICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA9PT0gJHtl
eHBlY3RlZExlZnRWYWx1ZVdpdGhIb2xlfTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZSAhPT0g
dmFsdWU7CisgICAgICAgIH0KKworICAgICAgICBsZXQgaXNFeHBlY3RlZFJpZ2h0VmFsdWVXaXRo
SG9sZSA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAgICAgICBpZiAoJHtleHBlY3RlZFJpZ2h0
VmFsdWVXaXRoSG9sZX0gPT09ICR7ZXhwZWN0ZWRSaWdodFZhbHVlV2l0aEhvbGV9KQorICAgICAg
ICAgICAgICAgIHJldHVybiB2YWx1ZSA9PT0gJHtleHBlY3RlZFJpZ2h0VmFsdWVXaXRoSG9sZX07
CisgICAgICAgICAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlOworICAgICAgICB9CisKKyAgICAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICAgICAgbGV0IGxoc1Jl
c3VsdDEgPSBub25PYnNlcnZhYmxlSG9sZU9uTGhzKHRlc3RBcnJheSwgJHtvdGhlck9wZXJhbmR9
KTsKKyAgICAgICAgICAgIGlmICghaXNFeHBlY3RlZExlZnRWYWx1ZVdpdGhIb2xlKGxoc1Jlc3Vs
dDEpKQorICAgICAgICAgICAgICAgIHRocm93ICJFcnJvciBvbiBub25PYnNlcnZhYmxlSG9sZU9u
TGhzIGF0IGkgPSAiICsgaSArICIgd2l0aCBvcGVyYW5kICIgKyAke290aGVyT3BlcmFuZH0gKyAi
IGV4cGVjdGVkICIgKyAke2V4cGVjdGVkTGVmdFZhbHVlV2l0aEhvbGV9ICsgIiBnb3QgIiArIGxo
c1Jlc3VsdDE7CisgICAgICAgICAgICBsZXQgbGhzUmVzdWx0MiA9IG9ic2VydmFibGVIb2xlT25M
aHModGVzdEFycmF5LCAke290aGVyT3BlcmFuZH0pOworICAgICAgICAgICAgaWYgKCFpc0V4cGVj
dGVkTGVmdFZhbHVlV2l0aEhvbGUobGhzUmVzdWx0MlswXSkgfHwgbGhzUmVzdWx0MlsxXSAhPT0g
dW5kZWZpbmVkKQorICAgICAgICAgICAgICAgIHRocm93ICJFcnJvciBvbiBvYnNlcnZhYmxlSG9s
ZU9uTGhzIGF0IGkgPSAiICsgaTsKKworICAgICAgICAgICAgbGV0IHJoc1Jlc3VsdDEgPSBub25P
YnNlcnZhYmxlSG9sZU9uUmhzKHRlc3RBcnJheSwgJHtvdGhlck9wZXJhbmR9KTsKKyAgICAgICAg
ICAgIGlmICghaXNFeHBlY3RlZFJpZ2h0VmFsdWVXaXRoSG9sZShyaHNSZXN1bHQxKSkKKyAgICAg
ICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24gbm9uT2JzZXJ2YWJsZUhvbGVPblJocyBhdCBpID0g
IiArIGkgKyAiIHdpdGggb3BlcmFuZCAiICsgJHtvdGhlck9wZXJhbmR9ICsgIiBleHBlY3RlZCAi
ICsgJHtleHBlY3RlZFJpZ2h0VmFsdWVXaXRoSG9sZX0gKyAiIGdvdCAiICsgcmhzUmVzdWx0MTsK
KyAgICAgICAgICAgIGxldCByaHNSZXN1bHQyID0gb2JzZXJ2YWJsZUhvbGVPblJocyh0ZXN0QXJy
YXksICR7b3RoZXJPcGVyYW5kfSk7CisgICAgICAgICAgICBpZiAoIWlzRXhwZWN0ZWRSaWdodFZh
bHVlV2l0aEhvbGUocmhzUmVzdWx0MlswXSkgfHwgcmhzUmVzdWx0MlsxXSAhPT0gdW5kZWZpbmVk
KQorICAgICAgICAgICAgICAgIHRocm93ICJFcnJvciBvbiBvYnNlcnZhYmxlSG9sZU9uUmhzIGF0
IGkgPSAiICsgaTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBpc0V4cGVjdGVkTGVmVmFsdWUg
PSBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgICAgICAgaWYgKCR7ZXhwZWN0ZWRMZWZ0VmFsdWV9
ID09PSAke2V4cGVjdGVkTGVmdFZhbHVlfSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUg
PT09ICR7ZXhwZWN0ZWRMZWZ0VmFsdWV9OworICAgICAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB2
YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBsZXQgaXNFeHBlY3RlZFJpZ2h0VmFsdWUgPSBmdW5j
dGlvbih2YWx1ZSkgeworICAgICAgICAgICAgaWYgKCR7ZXhwZWN0ZWRSaWdodFZhbHVlfSA9PT0g
JHtleHBlY3RlZFJpZ2h0VmFsdWV9KQorICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA9PT0g
JHtleHBlY3RlZFJpZ2h0VmFsdWV9OworICAgICAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB2YWx1
ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpbGwgdGhlIGhvbGUsIG1ha2Ugc3VyZSBldmVy
eXRoaW5nIHN0aWxsIHdvcmsgY29ycmVjdGx5LgorICAgICAgICB0ZXN0QXJyYXlbMF0gPSAxLjsK
KyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICAgICAgbGV0
IGxoc1Jlc3VsdDEgPSBub25PYnNlcnZhYmxlSG9sZU9uTGhzKHRlc3RBcnJheSwgJHtvdGhlck9w
ZXJhbmR9KTsKKyAgICAgICAgICAgIGlmICghaXNFeHBlY3RlZExlZlZhbHVlKGxoc1Jlc3VsdDEp
KQorICAgICAgICAgICAgICAgIHRocm93ICJFcnJvciBvbiBub24gaG9sZSBub25PYnNlcnZhYmxl
SG9sZU9uTGhzIGF0IGkgPSAiICsgaSArICIgZXhwZWN0ZWQgIiArICR7ZXhwZWN0ZWRMZWZ0VmFs
dWV9ICsgIiBnb3QgIiArIGxoc1Jlc3VsdDE7CisgICAgICAgICAgICBsZXQgbGhzUmVzdWx0MiA9
IG9ic2VydmFibGVIb2xlT25MaHModGVzdEFycmF5LCAke290aGVyT3BlcmFuZH0pOworICAgICAg
ICAgICAgaWYgKCFpc0V4cGVjdGVkTGVmVmFsdWUobGhzUmVzdWx0MlswXSkgfHwgbGhzUmVzdWx0
MlsxXSAhPT0gMSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24gbm9uIGhvbGUgb2Jz
ZXJ2YWJsZUhvbGVPbkxocyBhdCBpID0gIiArIGkgKyAiIGV4cGVjdGVkICIgKyAke2V4cGVjdGVk
TGVmdFZhbHVlfSArICIgZ290ICIgKyBsaHNSZXN1bHQyWzBdOworCisgICAgICAgICAgICBsZXQg
cmhzUmVzdWx0MSA9IG5vbk9ic2VydmFibGVIb2xlT25SaHModGVzdEFycmF5LCAke290aGVyT3Bl
cmFuZH0pOworICAgICAgICAgICAgaWYgKCFpc0V4cGVjdGVkUmlnaHRWYWx1ZShyaHNSZXN1bHQx
KSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24gbm9uIGhvbGUgbm9uT2JzZXJ2YWJs
ZUhvbGVPblJocyBhdCBpID0gIiArIGkgKyAiIHdpdGggb3BlcmFuZCAiICsgJHtvdGhlck9wZXJh
bmR9ICsgIiBleHBlY3RlZCAiICsgJHtleHBlY3RlZFJpZ2h0VmFsdWV9ICsgIiBnb3QgIiArIHJo
c1Jlc3VsdDE7CisgICAgICAgICAgICBsZXQgcmhzUmVzdWx0MiA9IG9ic2VydmFibGVIb2xlT25S
aHModGVzdEFycmF5LCAke290aGVyT3BlcmFuZH0pOworICAgICAgICAgICAgaWYgKCFpc0V4cGVj
dGVkUmlnaHRWYWx1ZShyaHNSZXN1bHQyWzBdKSB8fCByaHNSZXN1bHQyWzFdICE9PSAxKQorICAg
ICAgICAgICAgICAgIHRocm93ICJFcnJvciBvbiBub24gaG9sZSBvYnNlcnZhYmxlSG9sZU9uUmhz
IGF0IGkgPSAiICsgaTsKKyAgICAgICAgfWAKKyAgICApOworfQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJpdGgtc3ViLW9uLWRvdWJsZS1hcnJheS13aXRoLWhvbGVzLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcml0aC1zdWItb24tZG91YmxlLWFycmF5LXdpdGgtaG9sZXMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2ZkMjRiZTA1NDBmNWRhMDFjMmNlOWJiMmNiMzU2ZWIzNjY3OGFiYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJp
dGgtc3ViLW9uLWRvdWJsZS1hcnJheS13aXRoLWhvbGVzLmpzCkBAIC0wLDAgKzEsMTAyIEBACits
ZXQgdGVzdENhc2VzID0gWworICAgIC8vIE51bWJlcnMKKyAgICBbJzEnLCAwLCAwXSwKKyAgICBb
JzEuNScsIDEgLSAxLjUsIDEuNSAtIDFdLAorICAgIFtOYU4sIE5hTiwgTmFOXSwKKworICAgIC8v
IFN0cmluZ3MuCisgICAgWyciIicsIDEsIC0xXSwKKyAgICBbJ25ldyBTdHJpbmcoKScsIDEsIC0x
XSwKKyAgICBbJyJXZWJLaXQhIicsIE5hTiwgTmFOXSwKKworICAgIC8vIE9iamVjdHMuCisgICAg
Wyd7IH0nLCBOYU4sIE5hTl0sCisgICAgWyd7IGZvbzogMSB9JywgTmFOLCBOYU5dLAorICAgIFsn
eyB0b1N0cmluZzogZnVuY3Rpb24oKSB7wqByZXR1cm4gIiI7IH0gfScsIDEsIC0xXSwKKyAgICBb
J3sgdG9TdHJpbmc6IGZ1bmN0aW9uKCkge8KgcmV0dXJuICJXZWJLaXQiOyB9IH0nLCBOYU4sIE5h
Tl0sCisKKyAgICAvLyBPdGhlcnMuCisgICAgWydudWxsJywgMSwgLTFdLAorICAgIFsndW5kZWZp
bmVkJywgTmFOLCBOYU5dCitdOworCitmb3IgKGxldCB0ZXN0Q2FzZSBvZiB0ZXN0Q2FzZXMpIHsK
KyAgICBsZXQgb3RoZXJPcGVyYW5kID0gdGVzdENhc2VbMF07CisgICAgbGV0IGV4cGVjdGVkTGVm
dFZhbHVlID0gdGVzdENhc2VbMV07CisgICAgbGV0IGV4cGVjdGVkUmlnaHRWYWx1ZSA9IHRlc3RD
YXNlWzJdOworICAgIGV2YWwoCisgICAgICAgIGAvLyBUaG9zZSBob2xlcyBhcmUgbm90IG9ic2Vy
dmFibGUgYnkgYXJpdGhtZXRpYyBvcGVyYXRpb24uCisgICAgICAgIC8vIFRoZSByZXR1cm4gdmFs
dWUgaXMgYWx3YXlzIGdvaW5nIHRvIGJlIE5hTi4KKyAgICAgICAgZnVuY3Rpb24gbm9uT2JzZXJ2
YWJsZUhvbGVPbkxocyhhcnJheSwgb3RoZXJWYWx1ZSkgeworICAgICAgICAgICAgcmV0dXJuIGFy
cmF5WzBdIC0gb3RoZXJWYWx1ZTsKKyAgICAgICAgfQorICAgICAgICBub0lubGluZShub25PYnNl
cnZhYmxlSG9sZU9uTGhzKTsKKworICAgICAgICBmdW5jdGlvbiBvYnNlcnZhYmxlSG9sZU9uTGhz
KGFycmF5LCBvdGhlclZhbHVlKSB7CisgICAgICAgICAgICBsZXQgdmFsdWUgPSBhcnJheVswXTsK
KyAgICAgICAgICAgIHJldHVybiBbdmFsdWUgLSBvdGhlclZhbHVlLCB2YWx1ZV07CisgICAgICAg
IH0KKyAgICAgICAgbm9JbmxpbmUob2JzZXJ2YWJsZUhvbGVPbkxocyk7CisKKyAgICAgICAgZnVu
Y3Rpb24gbm9uT2JzZXJ2YWJsZUhvbGVPblJocyhhcnJheSwgb3RoZXJWYWx1ZSkgeworICAgICAg
ICAgICAgcmV0dXJuIG90aGVyVmFsdWUgLSBhcnJheVswXTsKKyAgICAgICAgfQorICAgICAgICBu
b0lubGluZShub25PYnNlcnZhYmxlSG9sZU9uUmhzKTsKKworICAgICAgICBmdW5jdGlvbiBvYnNl
cnZhYmxlSG9sZU9uUmhzKGFycmF5LCBvdGhlclZhbHVlKSB7CisgICAgICAgICAgICBsZXQgdmFs
dWUgPSBhcnJheVswXTsKKyAgICAgICAgICAgIHJldHVybiBbb3RoZXJWYWx1ZSAtIHZhbHVlLCB2
YWx1ZV07CisgICAgICAgIH0KKyAgICAgICAgbm9JbmxpbmUob2JzZXJ2YWJsZUhvbGVPblJocyk7
CisKKyAgICAgICAgbGV0IHRlc3RBcnJheSA9IG5ldyBBcnJheTsKKyAgICAgICAgZm9yIChsZXQg
aSA9IDE7IGkgPCAzOyArK2kpIHsKKyAgICAgICAgICAgIHRlc3RBcnJheVtpXSA9IGkgKyAwLjUK
KyAgICAgICAgfQorCisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAg
ICAgICAgICAgIGxldCBsaHNSZXN1bHQxID0gbm9uT2JzZXJ2YWJsZUhvbGVPbkxocyh0ZXN0QXJy
YXksICR7b3RoZXJPcGVyYW5kfSk7CisgICAgICAgICAgICBpZiAobGhzUmVzdWx0MSA9PSBsaHNS
ZXN1bHQxKQorICAgICAgICAgICAgICAgIHRocm93ICJFcnJvciBvbiBub25PYnNlcnZhYmxlSG9s
ZU9uTGhzIGF0IGkgPSAiICsgaTsKKyAgICAgICAgICAgIGxldCBsaHNSZXN1bHQyID0gb2JzZXJ2
YWJsZUhvbGVPbkxocyh0ZXN0QXJyYXksICR7b3RoZXJPcGVyYW5kfSk7CisgICAgICAgICAgICBp
ZiAobGhzUmVzdWx0MlswXSA9PSBsaHNSZXN1bHQyWzBdIHx8IGxoc1Jlc3VsdDJbMV0gIT09IHVu
ZGVmaW5lZCkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24gb2JzZXJ2YWJsZUhvbGVP
bkxocyBhdCBpID0gIiArIGk7CisKKyAgICAgICAgICAgIGxldCByaHNSZXN1bHQxID0gbm9uT2Jz
ZXJ2YWJsZUhvbGVPblJocyh0ZXN0QXJyYXksICR7b3RoZXJPcGVyYW5kfSk7CisgICAgICAgICAg
ICBpZiAocmhzUmVzdWx0MSA9PSByaHNSZXN1bHQxKQorICAgICAgICAgICAgICAgIHRocm93ICJF
cnJvciBvbiBub25PYnNlcnZhYmxlSG9sZU9uUmhzIGF0IGkgPSAiICsgaTsKKyAgICAgICAgICAg
IGxldCByaHNSZXN1bHQyID0gb2JzZXJ2YWJsZUhvbGVPblJocyh0ZXN0QXJyYXksICR7b3RoZXJP
cGVyYW5kfSk7CisgICAgICAgICAgICBpZiAocmhzUmVzdWx0MlswXSA9PSByaHNSZXN1bHQyWzBd
IHx8IHJoc1Jlc3VsdDJbMV0gIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgICAgICB0aHJvdyAi
RXJyb3Igb24gb2JzZXJ2YWJsZUhvbGVPblJocyBhdCBpID0gIiArIGk7CisgICAgICAgIH0KKwor
ICAgICAgICBsZXQgaXNFeHBlY3RlZExlZlZhbHVlID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICAg
ICAgICAgIGlmICgke2V4cGVjdGVkTGVmdFZhbHVlfSA9PT0gJHtleHBlY3RlZExlZnRWYWx1ZX0p
CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09PSAke2V4cGVjdGVkTGVmdFZhbHVlfTsK
KyAgICAgICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAg
bGV0IGlzRXhwZWN0ZWRSaWdodFZhbHVlID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgICAg
IGlmICgke2V4cGVjdGVkUmlnaHRWYWx1ZX0gPT09ICR7ZXhwZWN0ZWRSaWdodFZhbHVlfSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPT09ICR7ZXhwZWN0ZWRSaWdodFZhbHVlfTsKKyAg
ICAgICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdmFsdWU7CisgICAgICAgIH0KKworICAgICAgICAv
LyBGaWxsIHRoZSBob2xlLCBtYWtlIHN1cmUgZXZlcnl0aGluZyBzdGlsbCB3b3JrIGNvcnJlY3Rs
eS4KKyAgICAgICAgdGVzdEFycmF5WzBdID0gMS47CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMWU0OyArK2kpIHsKKyAgICAgICAgICAgIGxldCBsaHNSZXN1bHQxID0gbm9uT2JzZXJ2YWJs
ZUhvbGVPbkxocyh0ZXN0QXJyYXksICR7b3RoZXJPcGVyYW5kfSk7CisgICAgICAgICAgICBpZiAo
IWlzRXhwZWN0ZWRMZWZWYWx1ZShsaHNSZXN1bHQxKSkKKyAgICAgICAgICAgICAgICB0aHJvdyAi
RXJyb3Igb24gbm9uIGhvbGUgbm9uT2JzZXJ2YWJsZUhvbGVPbkxocyBhdCBpID0gIiArIGkgKyAi
IGV4cGVjdGVkICIgKyAke2V4cGVjdGVkTGVmdFZhbHVlfSArICIgZ290ICIgKyBsaHNSZXN1bHQx
OworICAgICAgICAgICAgbGV0IGxoc1Jlc3VsdDIgPSBvYnNlcnZhYmxlSG9sZU9uTGhzKHRlc3RB
cnJheSwgJHtvdGhlck9wZXJhbmR9KTsKKyAgICAgICAgICAgIGlmICghaXNFeHBlY3RlZExlZlZh
bHVlKGxoc1Jlc3VsdDJbMF0pIHx8IGxoc1Jlc3VsdDJbMV0gIT09IDEpCisgICAgICAgICAgICAg
ICAgdGhyb3cgIkVycm9yIG9uIG5vbiBob2xlIG9ic2VydmFibGVIb2xlT25MaHMgYXQgaSA9ICIg
KyBpICsgIiBleHBlY3RlZCAiICsgJHtleHBlY3RlZExlZnRWYWx1ZX0gKyAiIGdvdCAiICsgbGhz
UmVzdWx0MlswXTsKKworICAgICAgICAgICAgbGV0IHJoc1Jlc3VsdDEgPSBub25PYnNlcnZhYmxl
SG9sZU9uUmhzKHRlc3RBcnJheSwgJHtvdGhlck9wZXJhbmR9KTsKKyAgICAgICAgICAgIGlmICgh
aXNFeHBlY3RlZFJpZ2h0VmFsdWUocmhzUmVzdWx0MSkpCisgICAgICAgICAgICAgICAgdGhyb3cg
IkVycm9yIG9uIG5vbiBob2xlIG5vbk9ic2VydmFibGVIb2xlT25SaHMgYXQgaSA9ICIgKyBpICsg
IiBleHBlY3RlZCAiICsgJHtleHBlY3RlZFJpZ2h0VmFsdWV9ICsgIiBnb3QgIiArIHJoc1Jlc3Vs
dDE7CisgICAgICAgICAgICBsZXQgcmhzUmVzdWx0MiA9IG9ic2VydmFibGVIb2xlT25SaHModGVz
dEFycmF5LCAke290aGVyT3BlcmFuZH0pOworICAgICAgICAgICAgaWYgKCFpc0V4cGVjdGVkUmln
aHRWYWx1ZShyaHNSZXN1bHQyWzBdKSB8fCByaHNSZXN1bHQyWzFdICE9PSAxKQorICAgICAgICAg
ICAgICAgIHRocm93ICJFcnJvciBvbiBub24gaG9sZSBvYnNlcnZhYmxlSG9sZU9uUmhzIGF0IGkg
PSAiICsgaTsKKyAgICAgICAgfWAKKyAgICApOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdmFsdWUt
YWRkLW9uLWRvdWJsZS1hcnJheS13aXRoLWhvbGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy92YWx1ZS1hZGQtb24tZG91YmxlLWFycmF5LXdpdGgtaG9sZXMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWRjY2FjNjNmZjk5YzZkYzZlY2M5ZjRhZGJmYzc1MTdlZTE0MTY1ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdmFsdWUtYWRk
LW9uLWRvdWJsZS1hcnJheS13aXRoLWhvbGVzLmpzCkBAIC0wLDAgKzEsMTE2IEBACitsZXQgdGVz
dENhc2VzID0gWworICAgIC8vIE51bWJlcnMKKyAgICBbJzEnLCBOYU4sIE5hTiwgMiwgMl0sCisg
ICAgWycxLjUnLCBOYU4sIE5hTiwgMSArIDEuNSwgMSArIDEuNV0sCisgICAgW05hTiwgTmFOLCBO
YU4sIE5hTiwgTmFOXSwKKworICAgIC8vIFN0cmluZ3MuCisgICAgWyciIicsICcidW5kZWZpbmVk
IicsICcidW5kZWZpbmVkIicsICciMSInLCAnIjEiJ10sCisgICAgWyduZXcgU3RyaW5nKCknLCAn
InVuZGVmaW5lZCInLCAnInVuZGVmaW5lZCInLCAnIjEiJywgJyIxIiddLAorICAgIFsnIldlYktp
dCEiJywgJyJ1bmRlZmluZWRXZWJLaXQhIicsICciV2ViS2l0IXVuZGVmaW5lZCInLCAnIjFXZWJL
aXQhIicsICciV2ViS2l0ITEiJ10sCisKKyAgICAvLyBPYmplY3RzLgorICAgIFsneyB9JywgJyJ1
bmRlZmluZWRbb2JqZWN0IE9iamVjdF0iJywgJyJbb2JqZWN0IE9iamVjdF11bmRlZmluZWQiJywg
JyIxW29iamVjdCBPYmplY3RdIicsICciW29iamVjdCBPYmplY3RdMSInXSwKKyAgICBbJ3sgZm9v
OiAxIH0nLCAnInVuZGVmaW5lZFtvYmplY3QgT2JqZWN0XSInLCAnIltvYmplY3QgT2JqZWN0XXVu
ZGVmaW5lZCInLCAnIjFbb2JqZWN0IE9iamVjdF0iJywgJyJbb2JqZWN0IE9iamVjdF0xIiddLAor
ICAgIFsneyB0b1N0cmluZzogZnVuY3Rpb24oKSB7wqByZXR1cm4gIiI7IH0gfScsICcidW5kZWZp
bmVkIicsICcidW5kZWZpbmVkIicsICciMSInLCAnIjEiJ10sCisgICAgWyd7IHRvU3RyaW5nOiBm
dW5jdGlvbigpIHvCoHJldHVybiAiV2ViS2l0IjsgfSB9JywgJyJ1bmRlZmluZWRXZWJLaXQiJywg
JyJXZWJLaXR1bmRlZmluZWQiJywgJyIxV2ViS2l0IicsICciV2ViS2l0MSInXSwKKworICAgIC8v
IE90aGVycy4KKyAgICBbJ251bGwnLCBOYU4sIE5hTiwgMSwgMV0sCisgICAgWyd1bmRlZmluZWQn
LCBOYU4sIE5hTiwgTmFOLCBOYU5dCitdOworCitmb3IgKGxldCB0ZXN0Q2FzZSBvZiB0ZXN0Q2Fz
ZXMpIHsKKyAgICBsZXQgb3RoZXJPcGVyYW5kID0gdGVzdENhc2VbMF07CisgICAgbGV0IGV4cGVj
dGVkTGVmdFZhbHVlV2l0aEhvbGUgPSB0ZXN0Q2FzZVsxXTsKKyAgICBsZXQgZXhwZWN0ZWRSaWdo
dFZhbHVlV2l0aEhvbGUgPSB0ZXN0Q2FzZVsyXTsKKyAgICBsZXQgZXhwZWN0ZWRMZWZ0VmFsdWUg
PSB0ZXN0Q2FzZVszXTsKKyAgICBsZXQgZXhwZWN0ZWRSaWdodFZhbHVlID0gdGVzdENhc2VbNF07
CisgICAgZXZhbCgKKyAgICAgICAgYC8vIFRob3NlIGhvbGVzIGFyZSBub3Qgb2JzZXJ2YWJsZSBi
eSBhcml0aG1ldGljIG9wZXJhdGlvbi4KKyAgICAgICAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBh
bHdheXMgZ29pbmcgdG8gYmUgTmFOLgorICAgICAgICBmdW5jdGlvbiBub25PYnNlcnZhYmxlSG9s
ZU9uTGhzKGFycmF5LCBvdGhlclZhbHVlKSB7CisgICAgICAgICAgICByZXR1cm4gYXJyYXlbMF0g
KyBvdGhlclZhbHVlOworICAgICAgICB9CisgICAgICAgIG5vSW5saW5lKG5vbk9ic2VydmFibGVI
b2xlT25MaHMpOworCisgICAgICAgIGZ1bmN0aW9uIG9ic2VydmFibGVIb2xlT25MaHMoYXJyYXks
IG90aGVyVmFsdWUpIHsKKyAgICAgICAgICAgIGxldCB2YWx1ZSA9IGFycmF5WzBdOworICAgICAg
ICAgICAgcmV0dXJuIFt2YWx1ZSArIG90aGVyVmFsdWUsIHZhbHVlXTsKKyAgICAgICAgfQorICAg
ICAgICBub0lubGluZShvYnNlcnZhYmxlSG9sZU9uTGhzKTsKKworICAgICAgICBmdW5jdGlvbiBu
b25PYnNlcnZhYmxlSG9sZU9uUmhzKGFycmF5LCBvdGhlclZhbHVlKSB7CisgICAgICAgICAgICBy
ZXR1cm4gb3RoZXJWYWx1ZSArIGFycmF5WzBdOworICAgICAgICB9CisgICAgICAgIG5vSW5saW5l
KG5vbk9ic2VydmFibGVIb2xlT25SaHMpOworCisgICAgICAgIGZ1bmN0aW9uIG9ic2VydmFibGVI
b2xlT25SaHMoYXJyYXksIG90aGVyVmFsdWUpIHsKKyAgICAgICAgICAgIGxldCB2YWx1ZSA9IGFy
cmF5WzBdOworICAgICAgICAgICAgcmV0dXJuIFtvdGhlclZhbHVlICsgdmFsdWUsIHZhbHVlXTsK
KyAgICAgICAgfQorICAgICAgICBub0lubGluZShvYnNlcnZhYmxlSG9sZU9uUmhzKTsKKworICAg
ICAgICBsZXQgdGVzdEFycmF5ID0gbmV3IEFycmF5OworICAgICAgICBmb3IgKGxldCBpID0gMTsg
aSA8IDM7ICsraSkgeworICAgICAgICAgICAgdGVzdEFycmF5W2ldID0gaSArIDAuNQorICAgICAg
ICB9CisKKyAgICAgICAgbGV0IGlzRXhwZWN0ZWRMZWZ0VmFsdWVXaXRoSG9sZSA9IGZ1bmN0aW9u
KHZhbHVlKSB7CisgICAgICAgICAgICBpZiAoJHtleHBlY3RlZExlZnRWYWx1ZVdpdGhIb2xlfSA9
PT0gJHtleHBlY3RlZExlZnRWYWx1ZVdpdGhIb2xlfSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
dmFsdWUgPT09ICR7ZXhwZWN0ZWRMZWZ0VmFsdWVXaXRoSG9sZX07CisgICAgICAgICAgICByZXR1
cm4gdmFsdWUgIT09IHZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGlzRXhwZWN0ZWRS
aWdodFZhbHVlV2l0aEhvbGUgPSBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgICAgICAgaWYgKCR7
ZXhwZWN0ZWRSaWdodFZhbHVlV2l0aEhvbGV9ID09PSAke2V4cGVjdGVkUmlnaHRWYWx1ZVdpdGhI
b2xlfSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPT09ICR7ZXhwZWN0ZWRSaWdodFZh
bHVlV2l0aEhvbGV9OworICAgICAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAg
ICAgIGxldCBsaHNSZXN1bHQxID0gbm9uT2JzZXJ2YWJsZUhvbGVPbkxocyh0ZXN0QXJyYXksICR7
b3RoZXJPcGVyYW5kfSk7CisgICAgICAgICAgICBpZiAoIWlzRXhwZWN0ZWRMZWZ0VmFsdWVXaXRo
SG9sZShsaHNSZXN1bHQxKSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24gbm9uT2Jz
ZXJ2YWJsZUhvbGVPbkxocyBhdCBpID0gIiArIGkgKyAiIHdpdGggb3BlcmFuZCAiICsgJHtvdGhl
ck9wZXJhbmR9ICsgIiBleHBlY3RlZCAiICsgJHtleHBlY3RlZExlZnRWYWx1ZVdpdGhIb2xlfSAr
ICIgZ290ICIgKyBsaHNSZXN1bHQxOworICAgICAgICAgICAgbGV0IGxoc1Jlc3VsdDIgPSBvYnNl
cnZhYmxlSG9sZU9uTGhzKHRlc3RBcnJheSwgJHtvdGhlck9wZXJhbmR9KTsKKyAgICAgICAgICAg
IGlmICghaXNFeHBlY3RlZExlZnRWYWx1ZVdpdGhIb2xlKGxoc1Jlc3VsdDJbMF0pIHx8IGxoc1Jl
c3VsdDJbMV0gIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24g
b2JzZXJ2YWJsZUhvbGVPbkxocyBhdCBpID0gIiArIGk7CisKKyAgICAgICAgICAgIGxldCByaHNS
ZXN1bHQxID0gbm9uT2JzZXJ2YWJsZUhvbGVPblJocyh0ZXN0QXJyYXksICR7b3RoZXJPcGVyYW5k
fSk7CisgICAgICAgICAgICBpZiAoIWlzRXhwZWN0ZWRSaWdodFZhbHVlV2l0aEhvbGUocmhzUmVz
dWx0MSkpCisgICAgICAgICAgICAgICAgdGhyb3cgIkVycm9yIG9uIG5vbk9ic2VydmFibGVIb2xl
T25SaHMgYXQgaSA9ICIgKyBpICsgIiB3aXRoIG9wZXJhbmQgIiArICR7b3RoZXJPcGVyYW5kfSAr
ICIgZXhwZWN0ZWQgIiArICR7ZXhwZWN0ZWRSaWdodFZhbHVlV2l0aEhvbGV9ICsgIiBnb3QgIiAr
IHJoc1Jlc3VsdDE7CisgICAgICAgICAgICBsZXQgcmhzUmVzdWx0MiA9IG9ic2VydmFibGVIb2xl
T25SaHModGVzdEFycmF5LCAke290aGVyT3BlcmFuZH0pOworICAgICAgICAgICAgaWYgKCFpc0V4
cGVjdGVkUmlnaHRWYWx1ZVdpdGhIb2xlKHJoc1Jlc3VsdDJbMF0pIHx8IHJoc1Jlc3VsdDJbMV0g
IT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24gb2JzZXJ2YWJs
ZUhvbGVPblJocyBhdCBpID0gIiArIGk7CisgICAgICAgIH0KKworICAgICAgICBsZXQgaXNFeHBl
Y3RlZExlZlZhbHVlID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgICAgIGlmICgke2V4cGVj
dGVkTGVmdFZhbHVlfSA9PT0gJHtleHBlY3RlZExlZnRWYWx1ZX0pCisgICAgICAgICAgICAgICAg
cmV0dXJuIHZhbHVlID09PSAke2V4cGVjdGVkTGVmdFZhbHVlfTsKKyAgICAgICAgICAgIHJldHVy
biB2YWx1ZSAhPT0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgbGV0IGlzRXhwZWN0ZWRSaWdo
dFZhbHVlID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgICAgIGlmICgke2V4cGVjdGVkUmln
aHRWYWx1ZX0gPT09ICR7ZXhwZWN0ZWRSaWdodFZhbHVlfSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdmFsdWUgPT09ICR7ZXhwZWN0ZWRSaWdodFZhbHVlfTsKKyAgICAgICAgICAgIHJldHVybiB2
YWx1ZSAhPT0gdmFsdWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBGaWxsIHRoZSBob2xlLCBt
YWtlIHN1cmUgZXZlcnl0aGluZyBzdGlsbCB3b3JrIGNvcnJlY3RseS4KKyAgICAgICAgdGVzdEFy
cmF5WzBdID0gMS47CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAg
ICAgICAgICAgIGxldCBsaHNSZXN1bHQxID0gbm9uT2JzZXJ2YWJsZUhvbGVPbkxocyh0ZXN0QXJy
YXksICR7b3RoZXJPcGVyYW5kfSk7CisgICAgICAgICAgICBpZiAoIWlzRXhwZWN0ZWRMZWZWYWx1
ZShsaHNSZXN1bHQxKSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24gbm9uIGhvbGUg
bm9uT2JzZXJ2YWJsZUhvbGVPbkxocyBhdCBpID0gIiArIGkgKyAiIGV4cGVjdGVkICIgKyAke2V4
cGVjdGVkTGVmdFZhbHVlfSArICIgZ290ICIgKyBsaHNSZXN1bHQxOworICAgICAgICAgICAgbGV0
IGxoc1Jlc3VsdDIgPSBvYnNlcnZhYmxlSG9sZU9uTGhzKHRlc3RBcnJheSwgJHtvdGhlck9wZXJh
bmR9KTsKKyAgICAgICAgICAgIGlmICghaXNFeHBlY3RlZExlZlZhbHVlKGxoc1Jlc3VsdDJbMF0p
IHx8IGxoc1Jlc3VsdDJbMV0gIT09IDEpCisgICAgICAgICAgICAgICAgdGhyb3cgIkVycm9yIG9u
IG5vbiBob2xlIG9ic2VydmFibGVIb2xlT25MaHMgYXQgaSA9ICIgKyBpICsgIiBleHBlY3RlZCAi
ICsgJHtleHBlY3RlZExlZnRWYWx1ZX0gKyAiIGdvdCAiICsgbGhzUmVzdWx0MlswXTsKKworICAg
ICAgICAgICAgbGV0IHJoc1Jlc3VsdDEgPSBub25PYnNlcnZhYmxlSG9sZU9uUmhzKHRlc3RBcnJh
eSwgJHtvdGhlck9wZXJhbmR9KTsKKyAgICAgICAgICAgIGlmICghaXNFeHBlY3RlZFJpZ2h0VmFs
dWUocmhzUmVzdWx0MSkpCisgICAgICAgICAgICAgICAgdGhyb3cgIkVycm9yIG9uIG5vbiBob2xl
IG5vbk9ic2VydmFibGVIb2xlT25SaHMgYXQgaSA9ICIgKyBpICsgIiB3aXRoIG9wZXJhbmQgIiAr
ICR7b3RoZXJPcGVyYW5kfSArICIgZXhwZWN0ZWQgIiArICR7ZXhwZWN0ZWRSaWdodFZhbHVlfSAr
ICIgZ290ICIgKyByaHNSZXN1bHQxOworICAgICAgICAgICAgbGV0IHJoc1Jlc3VsdDIgPSBvYnNl
cnZhYmxlSG9sZU9uUmhzKHRlc3RBcnJheSwgJHtvdGhlck9wZXJhbmR9KTsKKyAgICAgICAgICAg
IGlmICghaXNFeHBlY3RlZFJpZ2h0VmFsdWUocmhzUmVzdWx0MlswXSkgfHwgcmhzUmVzdWx0Mlsx
XSAhPT0gMSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24gbm9uIGhvbGUgb2JzZXJ2
YWJsZUhvbGVPblJocyBhdCBpID0gIiArIGk7CisgICAgICAgIH1gCisgICAgKTsKK30KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275064</attachid>
            <date>2016-03-28 16:33:58 -0700</date>
            <delta_ts>2016-03-28 16:58:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155932-20160328163401.patch</filename>
            <type>text/plain</type>
            <size>18236</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YjdkOThkYmRhY2E2Y2EzMGJlNGE1MTM2OWFlZmNhZDNlNWI3ZjBhLi5hYWU3NDRkYTVkYjc5ZGRj
NTYwZmQ4M2I0MTIyM2Y4Yjk0NzQzZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxNi0wMy0yOCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBcml0aFN1YiBzaG91bGQgbm90IHByb3BhZ2F0ZSAiVXNl
c0FzT3RoZXIiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTU5MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgbm9kZSBBcml0aFN1YiB3YXMgYmFja3Byb3BhZ2F0aW5nIFVzZXNBc090aGVyLgorICAg
ICAgICBUaGlzIGNhdXNlcyBhbnkgR2V0QnlWYWwgb24gYSBEb3VibGUgQXJyYXkgdG8gaGF2ZSBh
biBleHRyYQorICAgICAgICBob2xlIGNoZWNrIGlmIGl0IGZsb3dzIGludG8gYW4gQXJpdGhTdWIu
CisKKyAgICAgICAgVGhlIGRlZmluaXRpb24gb2YgQXJpdGhTdWIgKDEyLjguNC4xKSBoYXMgYm90
aCBvcGVyYW5kcyBnbworICAgICAgICB0aHJvdWdoIFRvTnVtYmVyKCkuIFRvTnVtYmVyKCkgb24g
InVuZGVmaW5lZCIgYWx3YXlzIHByb2R1Y2VzCisgICAgICAgIE5hTi4gSXQgaXMgc2FmZSB0byBp
Z25vcmUgdGhlIE5hTiBtYXJrZXIgZnJvbSBob2xlIHdoZW4KKyAgICAgICAgdGhlIERBRyBmbG93
cyBpbnRvIEFyaXRoU3ViLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIHRoaXMgY2hh
bmdlIGFuZCB0ZXN0IGNvdmVyYWdlIHRvIEFyaXRoQWRkLgorICAgICAgICBBcml0aEFkZCB3YXMg
bm90IGEgcHJvYmxlbSBpbiBwcmFjdGljZSBiZWNhdXNlIGl0IGlzIG9ubHkKKyAgICAgICAgZ2Vu
ZXJhdGVkIGJlZm9yZSBGaXh1cCBpZiBib3RoIG9wZXJhbmRzIGFyZSBrbm93biB0byBiZSBudW1l
cmljYWwuCisgICAgICAgIFRoZSBjaGFuZ2UgdG8gQXJpdGhBZGQgaXMgdGhlcmUgdG8gcHJvdGVj
dCB1cyBvZiB0aGUgQXJpdGhTdWItbGlrZQorICAgICAgICBwcm9ibGVtcyBpZiB3ZSBldmVyIGlt
cHJvdmUgb3VyIHN1cHBvcnQgb2YgYXJpdGhtZXRpYyBvcGVyYXRvcnMuCisKKyAgICAgICAgKiBk
ZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJpdGgtYWRkLW9uLWRvdWJsZS1hcnJheS13aXRoLWhvbGVzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGxldC50ZXN0Q2FzZS5vZi50ZXN0Q2FzZXMuZXZhbC5ub25PYnNlcnZhYmxlSG9sZU9u
TGhzKToKKyAgICAgICAgKGxldC50ZXN0Q2FzZS5vZi50ZXN0Q2FzZXMub2JzZXJ2YWJsZUhvbGVP
bkxocyk6CisgICAgICAgIChsZXQudGVzdENhc2Uub2YudGVzdENhc2VzLm5vbk9ic2VydmFibGVI
b2xlT25SaHMpOgorICAgICAgICAobGV0LnRlc3RDYXNlLm9mLnRlc3RDYXNlcy5vYnNlcnZhYmxl
SG9sZU9uUmhzKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJpdGgtc3ViLW9uLWRvdWJsZS1h
cnJheS13aXRoLWhvbGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC50ZXN0Q2FzZS5vZi50ZXN0
Q2FzZXMuZXZhbC5ub25PYnNlcnZhYmxlSG9sZU9uTGhzKToKKyAgICAgICAgKGxldC50ZXN0Q2Fz
ZS5vZi50ZXN0Q2FzZXMub2JzZXJ2YWJsZUhvbGVPbkxocyk6CisgICAgICAgIChsZXQudGVzdENh
c2Uub2YudGVzdENhc2VzLm5vbk9ic2VydmFibGVIb2xlT25SaHMpOgorICAgICAgICAobGV0LnRl
c3RDYXNlLm9mLnRlc3RDYXNlcy5vYnNlcnZhYmxlSG9sZU9uUmhzKToKKyAgICAgICAgKiB0ZXN0
cy9zdHJlc3MvdmFsdWUtYWRkLW9uLWRvdWJsZS1hcnJheS13aXRoLWhvbGVzLmpzOiBBZGRlZC4K
KyAgICAgICAgKGxldC50ZXN0Q2FzZS5vZi50ZXN0Q2FzZXMuZXZhbC5ub25PYnNlcnZhYmxlSG9s
ZU9uTGhzKToKKyAgICAgICAgKGxldC50ZXN0Q2FzZS5vZi50ZXN0Q2FzZXMub2JzZXJ2YWJsZUhv
bGVPbkxocyk6CisgICAgICAgIChsZXQudGVzdENhc2Uub2YudGVzdENhc2VzLm5vbk9ic2VydmFi
bGVIb2xlT25SaHMpOgorICAgICAgICAobGV0LnRlc3RDYXNlLm9mLnRlc3RDYXNlcy5vYnNlcnZh
YmxlSG9sZU9uUmhzKToKKwogMjAxNi0wMy0yOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBwcm90b2NvbCBnZW5lcmF0b3Igc2hvdWxkIGdl
bmVyYXRlIEMrKyBzdHJpbmctdG8tZW51bSBoZWxwZXIgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNl
LmNwcAppbmRleCA5ZTNhY2YxZGVhMDNmYjhiMGM3YWViMjZjMDhiZjE5MTliZGZmOWU5Li5iMzk0
NzI5MjA3NDZjODEyMGQzOGE1MjUzNGNmMDNjY2JmNDczMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5j
cHAKQEAgLTI0OCw2ICsyNDgsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBBcml0aEFkZDogeworICAgICAgICAgICAgZmxhZ3MgJj0gfk5vZGVCeXRlY29kZVVzZXNBc090
aGVyOwogICAgICAgICAgICAgaWYgKGlzTm90TmVnWmVybyhub2RlLT5jaGlsZDEoKS5ub2RlKCkp
IHx8IGlzTm90TmVnWmVybyhub2RlLT5jaGlsZDIoKS5ub2RlKCkpKQogICAgICAgICAgICAgICAg
IGZsYWdzICY9IH5Ob2RlQnl0ZWNvZGVOZWVkc05lZ1plcm87CiAgICAgICAgICAgICBpZiAoIWlz
V2l0aGluUG93ZXJPZlR3bzwzMj4obm9kZS0+Y2hpbGQxKCkpICYmICFpc1dpdGhpblBvd2VyT2ZU
d288MzI+KG5vZGUtPmNoaWxkMigpKSkKQEAgLTI2OCw2ICsyNjksNyBAQCBwcml2YXRlOgogICAg
ICAgICB9CiAKICAgICAgICAgY2FzZSBBcml0aFN1YjogeworICAgICAgICAgICAgZmxhZ3MgJj0g
fk5vZGVCeXRlY29kZVVzZXNBc090aGVyOwogICAgICAgICAgICAgaWYgKGlzTm90TmVnWmVybyhu
b2RlLT5jaGlsZDEoKS5ub2RlKCkpIHx8IGlzTm90UG9zWmVybyhub2RlLT5jaGlsZDIoKS5ub2Rl
KCkpKQogICAgICAgICAgICAgICAgIGZsYWdzICY9IH5Ob2RlQnl0ZWNvZGVOZWVkc05lZ1plcm87
CiAgICAgICAgICAgICBpZiAoIWlzV2l0aGluUG93ZXJPZlR3bzwzMj4obm9kZS0+Y2hpbGQxKCkp
ICYmICFpc1dpdGhpblBvd2VyT2ZUd288MzI+KG5vZGUtPmNoaWxkMigpKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJpdGgtYWRkLW9uLWRvdWJsZS1h
cnJheS13aXRoLWhvbGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cml0aC1hZGQtb24tZG91YmxlLWFycmF5LXdpdGgtaG9sZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRmZjg4
OWE1ZWM1ODU0Y2ZlMzU1NWFmMWEzM2I5N2U3YzE5YjFjZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJpdGgtYWRkLW9uLWRvdWJsZS1hcnJh
eS13aXRoLWhvbGVzLmpzCkBAIC0wLDAgKzEsMTAwIEBACitsZXQgdGVzdENhc2VzID0gWworICAg
IC8vIE51bWJlcnMKKyAgICBbJzEnLCBOYU4sIE5hTiwgMiwgMl0sCisgICAgWycxLjUnLCBOYU4s
IE5hTiwgMSArIDEuNSwgMSArIDEuNV0sCisgICAgW05hTiwgTmFOLCBOYU4sIE5hTiwgTmFOXSwK
KworICAgIC8vIFN0cmluZ3MuCisgICAgWyciIicsIE5hTiwgTmFOLCAxLCAxXSwKKyAgICBbJ25l
dyBTdHJpbmcoKScsIE5hTiwgTmFOLCAxLCAxXSwKKyAgICBbJyJXZWJLaXQhIicsIE5hTiwgTmFO
LCBOYU4sIE5hTl0sCisKKyAgICAvLyBPYmplY3RzLgorICAgIFsneyB9JywgTmFOLCBOYU4sIE5h
TiwgTmFOXSwKKyAgICBbJ3sgZm9vOiAxIH0nLCBOYU4sIE5hTiwgTmFOLCBOYU5dLAorICAgIFsn
eyB0b1N0cmluZzogZnVuY3Rpb24oKSB7wqByZXR1cm4gIiI7IH0gfScsIE5hTiwgTmFOLCAxLCAx
XSwKKyAgICBbJ3sgdG9TdHJpbmc6IGZ1bmN0aW9uKCkge8KgcmV0dXJuICJXZWJLaXQiOyB9IH0n
LCBOYU4sIE5hTiwgTmFOLCBOYU5dLAorCisgICAgLy8gT3RoZXJzLgorICAgIFsnbnVsbCcsIE5h
TiwgTmFOLCAxLCAxXSwKKyAgICBbJ3VuZGVmaW5lZCcsIE5hTiwgTmFOLCBOYU4sIE5hTl0KK107
CisKK2ZvciAobGV0IHRlc3RDYXNlIG9mIHRlc3RDYXNlcykgeworICAgIGxldCBvdGhlck9wZXJh
bmQgPSB0ZXN0Q2FzZVswXTsKKyAgICBsZXQgZXhwZWN0ZWRMZWZ0VmFsdWVXaXRoSG9sZSA9IHRl
c3RDYXNlWzFdOworICAgIGxldCBleHBlY3RlZFJpZ2h0VmFsdWVXaXRoSG9sZSA9IHRlc3RDYXNl
WzJdOworICAgIGxldCBleHBlY3RlZExlZnRWYWx1ZSA9IHRlc3RDYXNlWzNdOworICAgIGxldCBl
eHBlY3RlZFJpZ2h0VmFsdWUgPSB0ZXN0Q2FzZVs0XTsKKyAgICBldmFsKAorICAgICAgICBgLy8g
VGhvc2UgaG9sZXMgYXJlIG5vdCBvYnNlcnZhYmxlIGJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uLgor
ICAgICAgICAvLyBUaGUgcmV0dXJuIHZhbHVlIGlzIGFsd2F5cyBnb2luZyB0byBiZSBOYU4uCisg
ICAgICAgIGZ1bmN0aW9uIG5vbk9ic2VydmFibGVIb2xlT25MaHMoYXJyYXksIG90aGVyVmFsdWUp
IHsKKyAgICAgICAgICAgIHJldHVybiBNYXRoLm1pbihhcnJheVswXSkgKyBNYXRoLm1pbihvdGhl
clZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBub0lubGluZShub25PYnNlcnZhYmxlSG9sZU9u
TGhzKTsKKworICAgICAgICBmdW5jdGlvbiBvYnNlcnZhYmxlSG9sZU9uTGhzKGFycmF5LCBvdGhl
clZhbHVlKSB7CisgICAgICAgICAgICBsZXQgdmFsdWUgPSBhcnJheVswXTsKKyAgICAgICAgICAg
IHJldHVybiBbTWF0aC5taW4odmFsdWUpICsgTWF0aC5taW4ob3RoZXJWYWx1ZSksIHZhbHVlXTsK
KyAgICAgICAgfQorICAgICAgICBub0lubGluZShvYnNlcnZhYmxlSG9sZU9uTGhzKTsKKworICAg
ICAgICBmdW5jdGlvbiBub25PYnNlcnZhYmxlSG9sZU9uUmhzKGFycmF5LCBvdGhlclZhbHVlKSB7
CisgICAgICAgICAgICByZXR1cm4gTWF0aC5taW4ob3RoZXJWYWx1ZSkgKyBNYXRoLm1pbihhcnJh
eVswXSk7CisgICAgICAgIH0KKyAgICAgICAgbm9JbmxpbmUobm9uT2JzZXJ2YWJsZUhvbGVPblJo
cyk7CisKKyAgICAgICAgZnVuY3Rpb24gb2JzZXJ2YWJsZUhvbGVPblJocyhhcnJheSwgb3RoZXJW
YWx1ZSkgeworICAgICAgICAgICAgbGV0IHZhbHVlID0gYXJyYXlbMF07CisgICAgICAgICAgICBy
ZXR1cm4gW01hdGgubWluKG90aGVyVmFsdWUpICsgTWF0aC5taW4odmFsdWUpLCB2YWx1ZV07Cisg
ICAgICAgIH0KKyAgICAgICAgbm9JbmxpbmUob2JzZXJ2YWJsZUhvbGVPblJocyk7CisKKyAgICAg
ICAgbGV0IHRlc3RBcnJheSA9IG5ldyBBcnJheTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkg
PCAzOyArK2kpIHsKKyAgICAgICAgICAgIHRlc3RBcnJheVtpXSA9IGkgKyAwLjUKKyAgICAgICAg
fQorCisgICAgICAgIGxldCBpc0VxdWFsID0gZnVuY3Rpb24oYSwgYikgeworICAgICAgICAgICAg
aWYgKGEgPT09IGEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYSA9PT0gYjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiBiICE9PSBiOworICAgICAgICB9CisKKyAgICAgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICAgICAgbGV0IGxoc1Jlc3Vs
dDEgPSBub25PYnNlcnZhYmxlSG9sZU9uTGhzKHRlc3RBcnJheSwgJHtvdGhlck9wZXJhbmR9KTsK
KyAgICAgICAgICAgIGlmICghaXNFcXVhbChsaHNSZXN1bHQxLCAke2V4cGVjdGVkTGVmdFZhbHVl
V2l0aEhvbGV9KSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24gbm9uT2JzZXJ2YWJs
ZUhvbGVPbkxocyBhdCBpID0gIiArIGkgKyAiIHdpdGggb3BlcmFuZCAiICsgJHtvdGhlck9wZXJh
bmR9ICsgIiBleHBlY3RlZCAiICsgJHtleHBlY3RlZExlZnRWYWx1ZVdpdGhIb2xlfSArICIgZ290
ICIgKyBsaHNSZXN1bHQxOworICAgICAgICAgICAgbGV0IGxoc1Jlc3VsdDIgPSBvYnNlcnZhYmxl
SG9sZU9uTGhzKHRlc3RBcnJheSwgJHtvdGhlck9wZXJhbmR9KTsKKyAgICAgICAgICAgIGlmICgh
aXNFcXVhbChsaHNSZXN1bHQyWzBdLCAke2V4cGVjdGVkTGVmdFZhbHVlV2l0aEhvbGV9KSB8fCBs
aHNSZXN1bHQyWzFdICE9PSB1bmRlZmluZWQpCisgICAgICAgICAgICAgICAgdGhyb3cgIkVycm9y
IG9uIG9ic2VydmFibGVIb2xlT25MaHMgYXQgaSA9ICIgKyBpOworCisgICAgICAgICAgICBsZXQg
cmhzUmVzdWx0MSA9IG5vbk9ic2VydmFibGVIb2xlT25SaHModGVzdEFycmF5LCAke290aGVyT3Bl
cmFuZH0pOworICAgICAgICAgICAgaWYgKCFpc0VxdWFsKHJoc1Jlc3VsdDEsICR7ZXhwZWN0ZWRS
aWdodFZhbHVlV2l0aEhvbGV9KSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24gbm9u
T2JzZXJ2YWJsZUhvbGVPblJocyBhdCBpID0gIiArIGkgKyAiIHdpdGggb3BlcmFuZCAiICsgJHtv
dGhlck9wZXJhbmR9ICsgIiBleHBlY3RlZCAiICsgJHtleHBlY3RlZFJpZ2h0VmFsdWVXaXRoSG9s
ZX0gKyAiIGdvdCAiICsgcmhzUmVzdWx0MTsKKyAgICAgICAgICAgIGxldCByaHNSZXN1bHQyID0g
b2JzZXJ2YWJsZUhvbGVPblJocyh0ZXN0QXJyYXksICR7b3RoZXJPcGVyYW5kfSk7CisgICAgICAg
ICAgICBpZiAoIWlzRXF1YWwocmhzUmVzdWx0MlswXSwgJHtleHBlY3RlZFJpZ2h0VmFsdWVXaXRo
SG9sZX0pIHx8IHJoc1Jlc3VsdDJbMV0gIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgICAgICB0
aHJvdyAiRXJyb3Igb24gb2JzZXJ2YWJsZUhvbGVPblJocyBhdCBpID0gIiArIGk7CisgICAgICAg
IH0KKworICAgICAgICAvLyBGaWxsIHRoZSBob2xlLCBtYWtlIHN1cmUgZXZlcnl0aGluZyBzdGls
bCB3b3JrIGNvcnJlY3RseS4KKyAgICAgICAgdGVzdEFycmF5WzBdID0gMS47CisgICAgICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgICAgIGxldCBsaHNSZXN1bHQx
ID0gbm9uT2JzZXJ2YWJsZUhvbGVPbkxocyh0ZXN0QXJyYXksICR7b3RoZXJPcGVyYW5kfSk7Cisg
ICAgICAgICAgICBpZiAoIWlzRXF1YWwobGhzUmVzdWx0MSwgJHtleHBlY3RlZExlZnRWYWx1ZX0p
KQorICAgICAgICAgICAgICAgIHRocm93ICJFcnJvciBvbiBub24gaG9sZSBub25PYnNlcnZhYmxl
SG9sZU9uTGhzIGF0IGkgPSAiICsgaSArICIgZXhwZWN0ZWQgIiArICR7ZXhwZWN0ZWRMZWZ0VmFs
dWV9ICsgIiBnb3QgIiArIGxoc1Jlc3VsdDE7CisgICAgICAgICAgICBsZXQgbGhzUmVzdWx0MiA9
IG9ic2VydmFibGVIb2xlT25MaHModGVzdEFycmF5LCAke290aGVyT3BlcmFuZH0pOworICAgICAg
ICAgICAgaWYgKCFpc0VxdWFsKGxoc1Jlc3VsdDJbMF0sICR7ZXhwZWN0ZWRMZWZ0VmFsdWV9KSB8
fCBsaHNSZXN1bHQyWzFdICE9PSAxKQorICAgICAgICAgICAgICAgIHRocm93ICJFcnJvciBvbiBu
b24gaG9sZSBvYnNlcnZhYmxlSG9sZU9uTGhzIGF0IGkgPSAiICsgaSArICIgZXhwZWN0ZWQgIiAr
ICR7ZXhwZWN0ZWRMZWZ0VmFsdWV9ICsgIiBnb3QgIiArIGxoc1Jlc3VsdDJbMF07CisKKyAgICAg
ICAgICAgIGxldCByaHNSZXN1bHQxID0gbm9uT2JzZXJ2YWJsZUhvbGVPblJocyh0ZXN0QXJyYXks
ICR7b3RoZXJPcGVyYW5kfSk7CisgICAgICAgICAgICBpZiAoIWlzRXF1YWwocmhzUmVzdWx0MSwg
JHtleHBlY3RlZFJpZ2h0VmFsdWV9KSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24g
bm9uIGhvbGUgbm9uT2JzZXJ2YWJsZUhvbGVPblJocyBhdCBpID0gIiArIGkgKyAiIHdpdGggb3Bl
cmFuZCAiICsgJHtvdGhlck9wZXJhbmR9ICsgIiBleHBlY3RlZCAiICsgJHtleHBlY3RlZFJpZ2h0
VmFsdWV9ICsgIiBnb3QgIiArIHJoc1Jlc3VsdDE7CisgICAgICAgICAgICBsZXQgcmhzUmVzdWx0
MiA9IG9ic2VydmFibGVIb2xlT25SaHModGVzdEFycmF5LCAke290aGVyT3BlcmFuZH0pOworICAg
ICAgICAgICAgaWYgKCFpc0VxdWFsKHJoc1Jlc3VsdDJbMF0sICR7ZXhwZWN0ZWRSaWdodFZhbHVl
fSkgfHwgcmhzUmVzdWx0MlsxXSAhPT0gMSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Ig
b24gbm9uIGhvbGUgb2JzZXJ2YWJsZUhvbGVPblJocyBhdCBpID0gIiArIGk7CisgICAgICAgIH1g
CisgICAgKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FyaXRoLXN1Yi1vbi1kb3VibGUtYXJyYXkt
d2l0aC1ob2xlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJpdGgt
c3ViLW9uLWRvdWJsZS1hcnJheS13aXRoLWhvbGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2OTc2Y2UwYTg0
N2VlNzMxNWE3YTAzNWExMzIwNjUxMTlmMWY3ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FyaXRoLXN1Yi1vbi1kb3VibGUtYXJyYXktd2l0
aC1ob2xlcy5qcwpAQCAtMCwwICsxLDk4IEBACitsZXQgdGVzdENhc2VzID0gWworICAgIC8vIE51
bWJlcnMKKyAgICBbJzEnLCAwLCAwXSwKKyAgICBbJzEuNScsIDEgLSAxLjUsIDEuNSAtIDFdLAor
ICAgIFtOYU4sIE5hTiwgTmFOXSwKKworICAgIC8vIFN0cmluZ3MuCisgICAgWyciIicsIDEsIC0x
XSwKKyAgICBbJ25ldyBTdHJpbmcoKScsIDEsIC0xXSwKKyAgICBbJyJXZWJLaXQhIicsIE5hTiwg
TmFOXSwKKworICAgIC8vIE9iamVjdHMuCisgICAgWyd7IH0nLCBOYU4sIE5hTl0sCisgICAgWyd7
IGZvbzogMSB9JywgTmFOLCBOYU5dLAorICAgIFsneyB0b1N0cmluZzogZnVuY3Rpb24oKSB7wqBy
ZXR1cm4gIiI7IH0gfScsIDEsIC0xXSwKKyAgICBbJ3sgdG9TdHJpbmc6IGZ1bmN0aW9uKCkge8Kg
cmV0dXJuICJXZWJLaXQiOyB9IH0nLCBOYU4sIE5hTl0sCisKKyAgICAvLyBPdGhlcnMuCisgICAg
WydudWxsJywgMSwgLTFdLAorICAgIFsndW5kZWZpbmVkJywgTmFOLCBOYU5dCitdOworCitmb3Ig
KGxldCB0ZXN0Q2FzZSBvZiB0ZXN0Q2FzZXMpIHsKKyAgICBsZXQgb3RoZXJPcGVyYW5kID0gdGVz
dENhc2VbMF07CisgICAgbGV0IGV4cGVjdGVkTGVmdFZhbHVlID0gdGVzdENhc2VbMV07CisgICAg
bGV0IGV4cGVjdGVkUmlnaHRWYWx1ZSA9IHRlc3RDYXNlWzJdOworICAgIGV2YWwoCisgICAgICAg
IGAvLyBUaG9zZSBob2xlcyBhcmUgbm90IG9ic2VydmFibGUgYnkgYXJpdGhtZXRpYyBvcGVyYXRp
b24uCisgICAgICAgIC8vIFRoZSByZXR1cm4gdmFsdWUgaXMgYWx3YXlzIGdvaW5nIHRvIGJlIE5h
Ti4KKyAgICAgICAgZnVuY3Rpb24gbm9uT2JzZXJ2YWJsZUhvbGVPbkxocyhhcnJheSwgb3RoZXJW
YWx1ZSkgeworICAgICAgICAgICAgcmV0dXJuIGFycmF5WzBdIC0gb3RoZXJWYWx1ZTsKKyAgICAg
ICAgfQorICAgICAgICBub0lubGluZShub25PYnNlcnZhYmxlSG9sZU9uTGhzKTsKKworICAgICAg
ICBmdW5jdGlvbiBvYnNlcnZhYmxlSG9sZU9uTGhzKGFycmF5LCBvdGhlclZhbHVlKSB7CisgICAg
ICAgICAgICBsZXQgdmFsdWUgPSBhcnJheVswXTsKKyAgICAgICAgICAgIHJldHVybiBbdmFsdWUg
LSBvdGhlclZhbHVlLCB2YWx1ZV07CisgICAgICAgIH0KKyAgICAgICAgbm9JbmxpbmUob2JzZXJ2
YWJsZUhvbGVPbkxocyk7CisKKyAgICAgICAgZnVuY3Rpb24gbm9uT2JzZXJ2YWJsZUhvbGVPblJo
cyhhcnJheSwgb3RoZXJWYWx1ZSkgeworICAgICAgICAgICAgcmV0dXJuIG90aGVyVmFsdWUgLSBh
cnJheVswXTsKKyAgICAgICAgfQorICAgICAgICBub0lubGluZShub25PYnNlcnZhYmxlSG9sZU9u
UmhzKTsKKworICAgICAgICBmdW5jdGlvbiBvYnNlcnZhYmxlSG9sZU9uUmhzKGFycmF5LCBvdGhl
clZhbHVlKSB7CisgICAgICAgICAgICBsZXQgdmFsdWUgPSBhcnJheVswXTsKKyAgICAgICAgICAg
IHJldHVybiBbb3RoZXJWYWx1ZSAtIHZhbHVlLCB2YWx1ZV07CisgICAgICAgIH0KKyAgICAgICAg
bm9JbmxpbmUob2JzZXJ2YWJsZUhvbGVPblJocyk7CisKKyAgICAgICAgbGV0IHRlc3RBcnJheSA9
IG5ldyBBcnJheTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCAzOyArK2kpIHsKKyAgICAg
ICAgICAgIHRlc3RBcnJheVtpXSA9IGkgKyAwLjUKKyAgICAgICAgfQorCisgICAgICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgICAgIGxldCBsaHNSZXN1bHQxID0g
bm9uT2JzZXJ2YWJsZUhvbGVPbkxocyh0ZXN0QXJyYXksICR7b3RoZXJPcGVyYW5kfSk7CisgICAg
ICAgICAgICBpZiAobGhzUmVzdWx0MSA9PSBsaHNSZXN1bHQxKQorICAgICAgICAgICAgICAgIHRo
cm93ICJFcnJvciBvbiBub25PYnNlcnZhYmxlSG9sZU9uTGhzIGF0IGkgPSAiICsgaTsKKyAgICAg
ICAgICAgIGxldCBsaHNSZXN1bHQyID0gb2JzZXJ2YWJsZUhvbGVPbkxocyh0ZXN0QXJyYXksICR7
b3RoZXJPcGVyYW5kfSk7CisgICAgICAgICAgICBpZiAobGhzUmVzdWx0MlswXSA9PSBsaHNSZXN1
bHQyWzBdIHx8IGxoc1Jlc3VsdDJbMV0gIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgICAgICB0
aHJvdyAiRXJyb3Igb24gb2JzZXJ2YWJsZUhvbGVPbkxocyBhdCBpID0gIiArIGk7CisKKyAgICAg
ICAgICAgIGxldCByaHNSZXN1bHQxID0gbm9uT2JzZXJ2YWJsZUhvbGVPblJocyh0ZXN0QXJyYXks
ICR7b3RoZXJPcGVyYW5kfSk7CisgICAgICAgICAgICBpZiAocmhzUmVzdWx0MSA9PSByaHNSZXN1
bHQxKQorICAgICAgICAgICAgICAgIHRocm93ICJFcnJvciBvbiBub25PYnNlcnZhYmxlSG9sZU9u
UmhzIGF0IGkgPSAiICsgaTsKKyAgICAgICAgICAgIGxldCByaHNSZXN1bHQyID0gb2JzZXJ2YWJs
ZUhvbGVPblJocyh0ZXN0QXJyYXksICR7b3RoZXJPcGVyYW5kfSk7CisgICAgICAgICAgICBpZiAo
cmhzUmVzdWx0MlswXSA9PSByaHNSZXN1bHQyWzBdIHx8IHJoc1Jlc3VsdDJbMV0gIT09IHVuZGVm
aW5lZCkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24gb2JzZXJ2YWJsZUhvbGVPblJo
cyBhdCBpID0gIiArIGk7CisgICAgICAgIH0KKworICAgICAgICBsZXQgaXNFcXVhbCA9IGZ1bmN0
aW9uKGEsIGIpIHsKKyAgICAgICAgICAgIGlmIChhID09PSBhKSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGEgPT09IGI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gYiAhPT0g
YjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpbGwgdGhlIGhvbGUsIG1ha2Ugc3VyZSBldmVy
eXRoaW5nIHN0aWxsIHdvcmsgY29ycmVjdGx5LgorICAgICAgICB0ZXN0QXJyYXlbMF0gPSAxLjsK
KyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICAgICAgbGV0
IGxoc1Jlc3VsdDEgPSBub25PYnNlcnZhYmxlSG9sZU9uTGhzKHRlc3RBcnJheSwgJHtvdGhlck9w
ZXJhbmR9KTsKKyAgICAgICAgICAgIGlmICghaXNFcXVhbChsaHNSZXN1bHQxLCAke2V4cGVjdGVk
TGVmdFZhbHVlfSkpCisgICAgICAgICAgICAgICAgdGhyb3cgIkVycm9yIG9uIG5vbiBob2xlIG5v
bk9ic2VydmFibGVIb2xlT25MaHMgYXQgaSA9ICIgKyBpICsgIiBleHBlY3RlZCAiICsgJHtleHBl
Y3RlZExlZnRWYWx1ZX0gKyAiIGdvdCAiICsgbGhzUmVzdWx0MTsKKyAgICAgICAgICAgIGxldCBs
aHNSZXN1bHQyID0gb2JzZXJ2YWJsZUhvbGVPbkxocyh0ZXN0QXJyYXksICR7b3RoZXJPcGVyYW5k
fSk7CisgICAgICAgICAgICBpZiAoIWlzRXF1YWwobGhzUmVzdWx0MlswXSwgJHtleHBlY3RlZExl
ZnRWYWx1ZX0pIHx8IGxoc1Jlc3VsdDJbMV0gIT09IDEpCisgICAgICAgICAgICAgICAgdGhyb3cg
IkVycm9yIG9uIG5vbiBob2xlIG9ic2VydmFibGVIb2xlT25MaHMgYXQgaSA9ICIgKyBpICsgIiBl
eHBlY3RlZCAiICsgJHtleHBlY3RlZExlZnRWYWx1ZX0gKyAiIGdvdCAiICsgbGhzUmVzdWx0Mlsw
XTsKKworICAgICAgICAgICAgbGV0IHJoc1Jlc3VsdDEgPSBub25PYnNlcnZhYmxlSG9sZU9uUmhz
KHRlc3RBcnJheSwgJHtvdGhlck9wZXJhbmR9KTsKKyAgICAgICAgICAgIGlmICghaXNFcXVhbChy
aHNSZXN1bHQxLCAke2V4cGVjdGVkUmlnaHRWYWx1ZX0pKQorICAgICAgICAgICAgICAgIHRocm93
ICJFcnJvciBvbiBub24gaG9sZSBub25PYnNlcnZhYmxlSG9sZU9uUmhzIGF0IGkgPSAiICsgaSAr
ICIgZXhwZWN0ZWQgIiArICR7ZXhwZWN0ZWRSaWdodFZhbHVlfSArICIgZ290ICIgKyByaHNSZXN1
bHQxOworICAgICAgICAgICAgbGV0IHJoc1Jlc3VsdDIgPSBvYnNlcnZhYmxlSG9sZU9uUmhzKHRl
c3RBcnJheSwgJHtvdGhlck9wZXJhbmR9KTsKKyAgICAgICAgICAgIGlmICghaXNFcXVhbChyaHNS
ZXN1bHQyWzBdLCAke2V4cGVjdGVkUmlnaHRWYWx1ZX0pIHx8IHJoc1Jlc3VsdDJbMV0gIT09IDEp
CisgICAgICAgICAgICAgICAgdGhyb3cgIkVycm9yIG9uIG5vbiBob2xlIG9ic2VydmFibGVIb2xl
T25SaHMgYXQgaSA9ICIgKyBpOworICAgICAgICB9YAorICAgICk7Cit9ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy92YWx1ZS1hZGQtb24tZG91YmxlLWFycmF5LXdpdGgtaG9sZXMuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3ZhbHVlLWFkZC1vbi1kb3VibGUtYXJyYXktd2l0aC1o
b2xlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jOTlmZmM0Y2QzMjIxYTY5ZDc2MWQ1ZGFlZTA1MzAzMmVhMzRi
ZTA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy92YWx1ZS1hZGQtb24tZG91YmxlLWFycmF5LXdpdGgtaG9sZXMuanMKQEAgLTAsMCArMSwxMDAg
QEAKK2xldCB0ZXN0Q2FzZXMgPSBbCisgICAgLy8gTnVtYmVycworICAgIFsnMScsIE5hTiwgTmFO
LCAyLCAyXSwKKyAgICBbJzEuNScsIE5hTiwgTmFOLCAxICsgMS41LCAxICsgMS41XSwKKyAgICBb
TmFOLCBOYU4sIE5hTiwgTmFOLCBOYU5dLAorCisgICAgLy8gU3RyaW5ncy4KKyAgICBbJyIiJywg
JyJ1bmRlZmluZWQiJywgJyJ1bmRlZmluZWQiJywgJyIxIicsICciMSInXSwKKyAgICBbJ25ldyBT
dHJpbmcoKScsICcidW5kZWZpbmVkIicsICcidW5kZWZpbmVkIicsICciMSInLCAnIjEiJ10sCisg
ICAgWyciV2ViS2l0ISInLCAnInVuZGVmaW5lZFdlYktpdCEiJywgJyJXZWJLaXQhdW5kZWZpbmVk
IicsICciMVdlYktpdCEiJywgJyJXZWJLaXQhMSInXSwKKworICAgIC8vIE9iamVjdHMuCisgICAg
Wyd7IH0nLCAnInVuZGVmaW5lZFtvYmplY3QgT2JqZWN0XSInLCAnIltvYmplY3QgT2JqZWN0XXVu
ZGVmaW5lZCInLCAnIjFbb2JqZWN0IE9iamVjdF0iJywgJyJbb2JqZWN0IE9iamVjdF0xIiddLAor
ICAgIFsneyBmb286IDEgfScsICcidW5kZWZpbmVkW29iamVjdCBPYmplY3RdIicsICciW29iamVj
dCBPYmplY3RddW5kZWZpbmVkIicsICciMVtvYmplY3QgT2JqZWN0XSInLCAnIltvYmplY3QgT2Jq
ZWN0XTEiJ10sCisgICAgWyd7IHRvU3RyaW5nOiBmdW5jdGlvbigpIHvCoHJldHVybiAiIjsgfSB9
JywgJyJ1bmRlZmluZWQiJywgJyJ1bmRlZmluZWQiJywgJyIxIicsICciMSInXSwKKyAgICBbJ3sg
dG9TdHJpbmc6IGZ1bmN0aW9uKCkge8KgcmV0dXJuICJXZWJLaXQiOyB9IH0nLCAnInVuZGVmaW5l
ZFdlYktpdCInLCAnIldlYktpdHVuZGVmaW5lZCInLCAnIjFXZWJLaXQiJywgJyJXZWJLaXQxIidd
LAorCisgICAgLy8gT3RoZXJzLgorICAgIFsnbnVsbCcsIE5hTiwgTmFOLCAxLCAxXSwKKyAgICBb
J3VuZGVmaW5lZCcsIE5hTiwgTmFOLCBOYU4sIE5hTl0KK107CisKK2ZvciAobGV0IHRlc3RDYXNl
IG9mIHRlc3RDYXNlcykgeworICAgIGxldCBvdGhlck9wZXJhbmQgPSB0ZXN0Q2FzZVswXTsKKyAg
ICBsZXQgZXhwZWN0ZWRMZWZ0VmFsdWVXaXRoSG9sZSA9IHRlc3RDYXNlWzFdOworICAgIGxldCBl
eHBlY3RlZFJpZ2h0VmFsdWVXaXRoSG9sZSA9IHRlc3RDYXNlWzJdOworICAgIGxldCBleHBlY3Rl
ZExlZnRWYWx1ZSA9IHRlc3RDYXNlWzNdOworICAgIGxldCBleHBlY3RlZFJpZ2h0VmFsdWUgPSB0
ZXN0Q2FzZVs0XTsKKyAgICBldmFsKAorICAgICAgICBgLy8gVGhvc2UgaG9sZXMgYXJlIG5vdCBv
YnNlcnZhYmxlIGJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uLgorICAgICAgICAvLyBUaGUgcmV0dXJu
IHZhbHVlIGlzIGFsd2F5cyBnb2luZyB0byBiZSBOYU4uCisgICAgICAgIGZ1bmN0aW9uIG5vbk9i
c2VydmFibGVIb2xlT25MaHMoYXJyYXksIG90aGVyVmFsdWUpIHsKKyAgICAgICAgICAgIHJldHVy
biBhcnJheVswXSArIG90aGVyVmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgbm9JbmxpbmUobm9u
T2JzZXJ2YWJsZUhvbGVPbkxocyk7CisKKyAgICAgICAgZnVuY3Rpb24gb2JzZXJ2YWJsZUhvbGVP
bkxocyhhcnJheSwgb3RoZXJWYWx1ZSkgeworICAgICAgICAgICAgbGV0IHZhbHVlID0gYXJyYXlb
MF07CisgICAgICAgICAgICByZXR1cm4gW3ZhbHVlICsgb3RoZXJWYWx1ZSwgdmFsdWVdOworICAg
ICAgICB9CisgICAgICAgIG5vSW5saW5lKG9ic2VydmFibGVIb2xlT25MaHMpOworCisgICAgICAg
IGZ1bmN0aW9uIG5vbk9ic2VydmFibGVIb2xlT25SaHMoYXJyYXksIG90aGVyVmFsdWUpIHsKKyAg
ICAgICAgICAgIHJldHVybiBvdGhlclZhbHVlICsgYXJyYXlbMF07CisgICAgICAgIH0KKyAgICAg
ICAgbm9JbmxpbmUobm9uT2JzZXJ2YWJsZUhvbGVPblJocyk7CisKKyAgICAgICAgZnVuY3Rpb24g
b2JzZXJ2YWJsZUhvbGVPblJocyhhcnJheSwgb3RoZXJWYWx1ZSkgeworICAgICAgICAgICAgbGV0
IHZhbHVlID0gYXJyYXlbMF07CisgICAgICAgICAgICByZXR1cm4gW290aGVyVmFsdWUgKyB2YWx1
ZSwgdmFsdWVdOworICAgICAgICB9CisgICAgICAgIG5vSW5saW5lKG9ic2VydmFibGVIb2xlT25S
aHMpOworCisgICAgICAgIGxldCB0ZXN0QXJyYXkgPSBuZXcgQXJyYXk7CisgICAgICAgIGZvciAo
bGV0IGkgPSAxOyBpIDwgMzsgKytpKSB7CisgICAgICAgICAgICB0ZXN0QXJyYXlbaV0gPSBpICsg
MC41CisgICAgICAgIH0KKworICAgICAgICBsZXQgaXNFcXVhbCA9IGZ1bmN0aW9uKGEsIGIpIHsK
KyAgICAgICAgICAgIGlmIChhID09PSBhKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEgPT09
IGI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gYiAhPT0gYjsKKyAgICAgICAg
fQorCisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgICAg
IGxldCBsaHNSZXN1bHQxID0gbm9uT2JzZXJ2YWJsZUhvbGVPbkxocyh0ZXN0QXJyYXksICR7b3Ro
ZXJPcGVyYW5kfSk7CisgICAgICAgICAgICBpZiAoIWlzRXF1YWwobGhzUmVzdWx0MSwgJHtleHBl
Y3RlZExlZnRWYWx1ZVdpdGhIb2xlfSkpCisgICAgICAgICAgICAgICAgdGhyb3cgIkVycm9yIG9u
IG5vbk9ic2VydmFibGVIb2xlT25MaHMgYXQgaSA9ICIgKyBpICsgIiB3aXRoIG9wZXJhbmQgIiAr
ICR7b3RoZXJPcGVyYW5kfSArICIgZXhwZWN0ZWQgIiArICR7ZXhwZWN0ZWRMZWZ0VmFsdWVXaXRo
SG9sZX0gKyAiIGdvdCAiICsgbGhzUmVzdWx0MTsKKyAgICAgICAgICAgIGxldCBsaHNSZXN1bHQy
ID0gb2JzZXJ2YWJsZUhvbGVPbkxocyh0ZXN0QXJyYXksICR7b3RoZXJPcGVyYW5kfSk7CisgICAg
ICAgICAgICBpZiAoIWlzRXF1YWwobGhzUmVzdWx0MlswXSwgJHtleHBlY3RlZExlZnRWYWx1ZVdp
dGhIb2xlfSkgfHwgbGhzUmVzdWx0MlsxXSAhPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgICAg
IHRocm93ICJFcnJvciBvbiBvYnNlcnZhYmxlSG9sZU9uTGhzIGF0IGkgPSAiICsgaTsKKworICAg
ICAgICAgICAgbGV0IHJoc1Jlc3VsdDEgPSBub25PYnNlcnZhYmxlSG9sZU9uUmhzKHRlc3RBcnJh
eSwgJHtvdGhlck9wZXJhbmR9KTsKKyAgICAgICAgICAgIGlmICghaXNFcXVhbChyaHNSZXN1bHQx
LCAke2V4cGVjdGVkUmlnaHRWYWx1ZVdpdGhIb2xlfSkpCisgICAgICAgICAgICAgICAgdGhyb3cg
IkVycm9yIG9uIG5vbk9ic2VydmFibGVIb2xlT25SaHMgYXQgaSA9ICIgKyBpICsgIiB3aXRoIG9w
ZXJhbmQgIiArICR7b3RoZXJPcGVyYW5kfSArICIgZXhwZWN0ZWQgIiArICR7ZXhwZWN0ZWRSaWdo
dFZhbHVlV2l0aEhvbGV9ICsgIiBnb3QgIiArIHJoc1Jlc3VsdDE7CisgICAgICAgICAgICBsZXQg
cmhzUmVzdWx0MiA9IG9ic2VydmFibGVIb2xlT25SaHModGVzdEFycmF5LCAke290aGVyT3BlcmFu
ZH0pOworICAgICAgICAgICAgaWYgKCFpc0VxdWFsKHJoc1Jlc3VsdDJbMF0sICR7ZXhwZWN0ZWRS
aWdodFZhbHVlV2l0aEhvbGV9KSB8fCByaHNSZXN1bHQyWzFdICE9PSB1bmRlZmluZWQpCisgICAg
ICAgICAgICAgICAgdGhyb3cgIkVycm9yIG9uIG9ic2VydmFibGVIb2xlT25SaHMgYXQgaSA9ICIg
KyBpOworICAgICAgICB9CisKKyAgICAgICAgLy8gRmlsbCB0aGUgaG9sZSwgbWFrZSBzdXJlIGV2
ZXJ5dGhpbmcgc3RpbGwgd29yayBjb3JyZWN0bHkuCisgICAgICAgIHRlc3RBcnJheVswXSA9IDEu
OworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgICAgICBs
ZXQgbGhzUmVzdWx0MSA9IG5vbk9ic2VydmFibGVIb2xlT25MaHModGVzdEFycmF5LCAke290aGVy
T3BlcmFuZH0pOworICAgICAgICAgICAgaWYgKCFpc0VxdWFsKGxoc1Jlc3VsdDEsICR7ZXhwZWN0
ZWRMZWZ0VmFsdWV9KSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24gbm9uIGhvbGUg
bm9uT2JzZXJ2YWJsZUhvbGVPbkxocyBhdCBpID0gIiArIGkgKyAiIGV4cGVjdGVkICIgKyAke2V4
cGVjdGVkTGVmdFZhbHVlfSArICIgZ290ICIgKyBsaHNSZXN1bHQxOworICAgICAgICAgICAgbGV0
IGxoc1Jlc3VsdDIgPSBvYnNlcnZhYmxlSG9sZU9uTGhzKHRlc3RBcnJheSwgJHtvdGhlck9wZXJh
bmR9KTsKKyAgICAgICAgICAgIGlmICghaXNFcXVhbChsaHNSZXN1bHQyWzBdLCAke2V4cGVjdGVk
TGVmdFZhbHVlfSkgfHwgbGhzUmVzdWx0MlsxXSAhPT0gMSkKKyAgICAgICAgICAgICAgICB0aHJv
dyAiRXJyb3Igb24gbm9uIGhvbGUgb2JzZXJ2YWJsZUhvbGVPbkxocyBhdCBpID0gIiArIGkgKyAi
IGV4cGVjdGVkICIgKyAke2V4cGVjdGVkTGVmdFZhbHVlfSArICIgZ290ICIgKyBsaHNSZXN1bHQy
WzBdOworCisgICAgICAgICAgICBsZXQgcmhzUmVzdWx0MSA9IG5vbk9ic2VydmFibGVIb2xlT25S
aHModGVzdEFycmF5LCAke290aGVyT3BlcmFuZH0pOworICAgICAgICAgICAgaWYgKCFpc0VxdWFs
KHJoc1Jlc3VsdDEsICR7ZXhwZWN0ZWRSaWdodFZhbHVlfSkpCisgICAgICAgICAgICAgICAgdGhy
b3cgIkVycm9yIG9uIG5vbiBob2xlIG5vbk9ic2VydmFibGVIb2xlT25SaHMgYXQgaSA9ICIgKyBp
ICsgIiB3aXRoIG9wZXJhbmQgIiArICR7b3RoZXJPcGVyYW5kfSArICIgZXhwZWN0ZWQgIiArICR7
ZXhwZWN0ZWRSaWdodFZhbHVlfSArICIgZ290ICIgKyByaHNSZXN1bHQxOworICAgICAgICAgICAg
bGV0IHJoc1Jlc3VsdDIgPSBvYnNlcnZhYmxlSG9sZU9uUmhzKHRlc3RBcnJheSwgJHtvdGhlck9w
ZXJhbmR9KTsKKyAgICAgICAgICAgIGlmICghaXNFcXVhbChyaHNSZXN1bHQyWzBdLCAke2V4cGVj
dGVkUmlnaHRWYWx1ZX0pIHx8IHJoc1Jlc3VsdDJbMV0gIT09IDEpCisgICAgICAgICAgICAgICAg
dGhyb3cgIkVycm9yIG9uIG5vbiBob2xlIG9ic2VydmFibGVIb2xlT25SaHMgYXQgaSA9ICIgKyBp
OworICAgICAgICB9YAorICAgICk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275067</attachid>
            <date>2016-03-28 16:58:06 -0700</date>
            <delta_ts>2016-03-28 17:59:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-155932-20160328165809.patch</filename>
            <type>text/plain</type>
            <size>18224</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YjdkOThkYmRhY2E2Y2EzMGJlNGE1MTM2OWFlZmNhZDNlNWI3ZjBhLi5lNzYyNjU1OGY5ZDNhYjMy
ZTk5ZGJjOWQyMzNkY2Y5N2Y0MGFlZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxNi0wMy0yOCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBcml0aFN1YiBzaG91bGQgbm90IHByb3BhZ2F0ZSAiVXNl
c0FzT3RoZXIiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTU5MzIKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICBUaGUg
bm9kZSBBcml0aFN1YiB3YXMgYmFja3Byb3BhZ2F0aW5nIFVzZXNBc090aGVyLgorICAgICAgICBU
aGlzIGNhdXNlcyBhbnkgR2V0QnlWYWwgb24gYSBEb3VibGUgQXJyYXkgdG8gaGF2ZSBhbiBleHRy
YQorICAgICAgICBob2xlIGNoZWNrIGlmIGl0IGZsb3dzIGludG8gYW4gQXJpdGhTdWIuCisKKyAg
ICAgICAgVGhlIGRlZmluaXRpb24gb2YgQXJpdGhTdWIgKDEyLjguNC4xKSBoYXMgYm90aCBvcGVy
YW5kcyBnbworICAgICAgICB0aHJvdWdoIFRvTnVtYmVyKCkuIFRvTnVtYmVyKCkgb24gInVuZGVm
aW5lZCIgYWx3YXlzIHByb2R1Y2VzCisgICAgICAgIE5hTi4gSXQgaXMgc2FmZSB0byBpZ25vcmUg
dGhlIE5hTiBtYXJrZXIgZnJvbSBob2xlIHdoZW4KKyAgICAgICAgdGhlIERBRyBmbG93cyBpbnRv
IEFyaXRoU3ViLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIHRoaXMgY2hhbmdlIGFu
ZCB0ZXN0IGNvdmVyYWdlIHRvIEFyaXRoQWRkLgorICAgICAgICBBcml0aEFkZCB3YXMgbm90IGEg
cHJvYmxlbSBpbiBwcmFjdGljZSBiZWNhdXNlIGl0IGlzIG9ubHkKKyAgICAgICAgZ2VuZXJhdGVk
IGJlZm9yZSBGaXh1cCBpZiBib3RoIG9wZXJhbmRzIGFyZSBrbm93biB0byBiZSBudW1lcmljYWwu
CisgICAgICAgIFRoZSBjaGFuZ2UgdG8gQXJpdGhBZGQgaXMgdGhlcmUgdG8gcHJvdGVjdCB1cyBv
ZiB0aGUgQXJpdGhTdWItbGlrZQorICAgICAgICBwcm9ibGVtcyBpZiB3ZSBldmVyIGltcHJvdmUg
b3VyIHN1cHBvcnQgb2YgYXJpdGhtZXRpYyBvcGVyYXRvcnMuCisKKyAgICAgICAgKiBkZmcvREZH
QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QmFja3dh
cmRzUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
YXJpdGgtYWRkLW9uLWRvdWJsZS1hcnJheS13aXRoLWhvbGVzLmpzOiBBZGRlZC4KKyAgICAgICAg
KGxldC50ZXN0Q2FzZS5vZi50ZXN0Q2FzZXMuZXZhbC5ub25PYnNlcnZhYmxlSG9sZU9uTGhzKToK
KyAgICAgICAgKGxldC50ZXN0Q2FzZS5vZi50ZXN0Q2FzZXMub2JzZXJ2YWJsZUhvbGVPbkxocyk6
CisgICAgICAgIChsZXQudGVzdENhc2Uub2YudGVzdENhc2VzLm5vbk9ic2VydmFibGVIb2xlT25S
aHMpOgorICAgICAgICAobGV0LnRlc3RDYXNlLm9mLnRlc3RDYXNlcy5vYnNlcnZhYmxlSG9sZU9u
UmhzKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJpdGgtc3ViLW9uLWRvdWJsZS1hcnJheS13
aXRoLWhvbGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC50ZXN0Q2FzZS5vZi50ZXN0Q2FzZXMu
ZXZhbC5ub25PYnNlcnZhYmxlSG9sZU9uTGhzKToKKyAgICAgICAgKGxldC50ZXN0Q2FzZS5vZi50
ZXN0Q2FzZXMub2JzZXJ2YWJsZUhvbGVPbkxocyk6CisgICAgICAgIChsZXQudGVzdENhc2Uub2Yu
dGVzdENhc2VzLm5vbk9ic2VydmFibGVIb2xlT25SaHMpOgorICAgICAgICAobGV0LnRlc3RDYXNl
Lm9mLnRlc3RDYXNlcy5vYnNlcnZhYmxlSG9sZU9uUmhzKToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvdmFsdWUtYWRkLW9uLWRvdWJsZS1hcnJheS13aXRoLWhvbGVzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGxldC50ZXN0Q2FzZS5vZi50ZXN0Q2FzZXMuZXZhbC5ub25PYnNlcnZhYmxlSG9sZU9uTGhz
KToKKyAgICAgICAgKGxldC50ZXN0Q2FzZS5vZi50ZXN0Q2FzZXMub2JzZXJ2YWJsZUhvbGVPbkxo
cyk6CisgICAgICAgIChsZXQudGVzdENhc2Uub2YudGVzdENhc2VzLm5vbk9ic2VydmFibGVIb2xl
T25SaHMpOgorICAgICAgICAobGV0LnRlc3RDYXNlLm9mLnRlc3RDYXNlcy5vYnNlcnZhYmxlSG9s
ZU9uUmhzKToKKwogMjAxNi0wMy0yOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBwcm90b2NvbCBnZW5lcmF0b3Igc2hvdWxkIGdlbmVyYXRl
IEMrKyBzdHJpbmctdG8tZW51bSBoZWxwZXIgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcApp
bmRleCA5ZTNhY2YxZGVhMDNmYjhiMGM3YWViMjZjMDhiZjE5MTliZGZmOWU5Li5iMzk0NzI5MjA3
NDZjODEyMGQzOGE1MjUzNGNmMDNjY2JmNDczMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAg
LTI0OCw2ICsyNDgsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBBcml0
aEFkZDogeworICAgICAgICAgICAgZmxhZ3MgJj0gfk5vZGVCeXRlY29kZVVzZXNBc090aGVyOwog
ICAgICAgICAgICAgaWYgKGlzTm90TmVnWmVybyhub2RlLT5jaGlsZDEoKS5ub2RlKCkpIHx8IGlz
Tm90TmVnWmVybyhub2RlLT5jaGlsZDIoKS5ub2RlKCkpKQogICAgICAgICAgICAgICAgIGZsYWdz
ICY9IH5Ob2RlQnl0ZWNvZGVOZWVkc05lZ1plcm87CiAgICAgICAgICAgICBpZiAoIWlzV2l0aGlu
UG93ZXJPZlR3bzwzMj4obm9kZS0+Y2hpbGQxKCkpICYmICFpc1dpdGhpblBvd2VyT2ZUd288MzI+
KG5vZGUtPmNoaWxkMigpKSkKQEAgLTI2OCw2ICsyNjksNyBAQCBwcml2YXRlOgogICAgICAgICB9
CiAKICAgICAgICAgY2FzZSBBcml0aFN1YjogeworICAgICAgICAgICAgZmxhZ3MgJj0gfk5vZGVC
eXRlY29kZVVzZXNBc090aGVyOwogICAgICAgICAgICAgaWYgKGlzTm90TmVnWmVybyhub2RlLT5j
aGlsZDEoKS5ub2RlKCkpIHx8IGlzTm90UG9zWmVybyhub2RlLT5jaGlsZDIoKS5ub2RlKCkpKQog
ICAgICAgICAgICAgICAgIGZsYWdzICY9IH5Ob2RlQnl0ZWNvZGVOZWVkc05lZ1plcm87CiAgICAg
ICAgICAgICBpZiAoIWlzV2l0aGluUG93ZXJPZlR3bzwzMj4obm9kZS0+Y2hpbGQxKCkpICYmICFp
c1dpdGhpblBvd2VyT2ZUd288MzI+KG5vZGUtPmNoaWxkMigpKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJpdGgtYWRkLW9uLWRvdWJsZS1hcnJheS13
aXRoLWhvbGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcml0aC1h
ZGQtb24tZG91YmxlLWFycmF5LXdpdGgtaG9sZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU4OWZmZTI1NGFh
YTAzNzEwMzU4MGU0YzdjOTJmMjA0MDk5ZDQ1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJpdGgtYWRkLW9uLWRvdWJsZS1hcnJheS13aXRo
LWhvbGVzLmpzCkBAIC0wLDAgKzEsMTAwIEBACitsZXQgdGVzdENhc2VzID0gWworICAgIC8vIE51
bWJlcnMKKyAgICBbJzEnLCBOYU4sIE5hTiwgMiwgMl0sCisgICAgWycxLjUnLCBOYU4sIE5hTiwg
MSArIDEuNSwgMSArIDEuNV0sCisgICAgW05hTiwgTmFOLCBOYU4sIE5hTiwgTmFOXSwKKworICAg
IC8vIFN0cmluZ3MuCisgICAgWyciIicsIE5hTiwgTmFOLCAxLCAxXSwKKyAgICBbJ25ldyBTdHJp
bmcoKScsIE5hTiwgTmFOLCAxLCAxXSwKKyAgICBbJyJXZWJLaXQhIicsIE5hTiwgTmFOLCBOYU4s
IE5hTl0sCisKKyAgICAvLyBPYmplY3RzLgorICAgIFsneyB9JywgTmFOLCBOYU4sIE5hTiwgTmFO
XSwKKyAgICBbJ3sgZm9vOiAxIH0nLCBOYU4sIE5hTiwgTmFOLCBOYU5dLAorICAgIFsneyB0b1N0
cmluZzogZnVuY3Rpb24oKSB7IHJldHVybiAiIjsgfSB9JywgTmFOLCBOYU4sIDEsIDFdLAorICAg
IFsneyB0b1N0cmluZzogZnVuY3Rpb24oKSB7IHJldHVybiAiV2ViS2l0IjsgfSB9JywgTmFOLCBO
YU4sIE5hTiwgTmFOXSwKKworICAgIC8vIE90aGVycy4KKyAgICBbJ251bGwnLCBOYU4sIE5hTiwg
MSwgMV0sCisgICAgWyd1bmRlZmluZWQnLCBOYU4sIE5hTiwgTmFOLCBOYU5dCitdOworCitmb3Ig
KGxldCB0ZXN0Q2FzZSBvZiB0ZXN0Q2FzZXMpIHsKKyAgICBsZXQgb3RoZXJPcGVyYW5kID0gdGVz
dENhc2VbMF07CisgICAgbGV0IGV4cGVjdGVkTGVmdFZhbHVlV2l0aEhvbGUgPSB0ZXN0Q2FzZVsx
XTsKKyAgICBsZXQgZXhwZWN0ZWRSaWdodFZhbHVlV2l0aEhvbGUgPSB0ZXN0Q2FzZVsyXTsKKyAg
ICBsZXQgZXhwZWN0ZWRMZWZ0VmFsdWUgPSB0ZXN0Q2FzZVszXTsKKyAgICBsZXQgZXhwZWN0ZWRS
aWdodFZhbHVlID0gdGVzdENhc2VbNF07CisgICAgZXZhbCgKKyAgICAgICAgYC8vIFRob3NlIGhv
bGVzIGFyZSBub3Qgb2JzZXJ2YWJsZSBieSBhcml0aG1ldGljIG9wZXJhdGlvbi4KKyAgICAgICAg
Ly8gVGhlIHJldHVybiB2YWx1ZSBpcyBhbHdheXMgZ29pbmcgdG8gYmUgTmFOLgorICAgICAgICBm
dW5jdGlvbiBub25PYnNlcnZhYmxlSG9sZU9uTGhzKGFycmF5LCBvdGhlclZhbHVlKSB7CisgICAg
ICAgICAgICByZXR1cm4gTWF0aC5taW4oYXJyYXlbMF0pICsgTWF0aC5taW4ob3RoZXJWYWx1ZSk7
CisgICAgICAgIH0KKyAgICAgICAgbm9JbmxpbmUobm9uT2JzZXJ2YWJsZUhvbGVPbkxocyk7CisK
KyAgICAgICAgZnVuY3Rpb24gb2JzZXJ2YWJsZUhvbGVPbkxocyhhcnJheSwgb3RoZXJWYWx1ZSkg
eworICAgICAgICAgICAgbGV0IHZhbHVlID0gYXJyYXlbMF07CisgICAgICAgICAgICByZXR1cm4g
W01hdGgubWluKHZhbHVlKSArIE1hdGgubWluKG90aGVyVmFsdWUpLCB2YWx1ZV07CisgICAgICAg
IH0KKyAgICAgICAgbm9JbmxpbmUob2JzZXJ2YWJsZUhvbGVPbkxocyk7CisKKyAgICAgICAgZnVu
Y3Rpb24gbm9uT2JzZXJ2YWJsZUhvbGVPblJocyhhcnJheSwgb3RoZXJWYWx1ZSkgeworICAgICAg
ICAgICAgcmV0dXJuIE1hdGgubWluKG90aGVyVmFsdWUpICsgTWF0aC5taW4oYXJyYXlbMF0pOwor
ICAgICAgICB9CisgICAgICAgIG5vSW5saW5lKG5vbk9ic2VydmFibGVIb2xlT25SaHMpOworCisg
ICAgICAgIGZ1bmN0aW9uIG9ic2VydmFibGVIb2xlT25SaHMoYXJyYXksIG90aGVyVmFsdWUpIHsK
KyAgICAgICAgICAgIGxldCB2YWx1ZSA9IGFycmF5WzBdOworICAgICAgICAgICAgcmV0dXJuIFtN
YXRoLm1pbihvdGhlclZhbHVlKSArIE1hdGgubWluKHZhbHVlKSwgdmFsdWVdOworICAgICAgICB9
CisgICAgICAgIG5vSW5saW5lKG9ic2VydmFibGVIb2xlT25SaHMpOworCisgICAgICAgIGxldCB0
ZXN0QXJyYXkgPSBuZXcgQXJyYXk7CisgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgMzsgKytp
KSB7CisgICAgICAgICAgICB0ZXN0QXJyYXlbaV0gPSBpICsgMC41CisgICAgICAgIH0KKworICAg
ICAgICBsZXQgaXNFcXVhbCA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICAgICAgICAgIGlmIChhID09
PSBhKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEgPT09IGI7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICByZXR1cm4gYiAhPT0gYjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgICAgIGxldCBsaHNSZXN1bHQxID0gbm9u
T2JzZXJ2YWJsZUhvbGVPbkxocyh0ZXN0QXJyYXksICR7b3RoZXJPcGVyYW5kfSk7CisgICAgICAg
ICAgICBpZiAoIWlzRXF1YWwobGhzUmVzdWx0MSwgJHtleHBlY3RlZExlZnRWYWx1ZVdpdGhIb2xl
fSkpCisgICAgICAgICAgICAgICAgdGhyb3cgIkVycm9yIG9uIG5vbk9ic2VydmFibGVIb2xlT25M
aHMgYXQgaSA9ICIgKyBpICsgIiB3aXRoIG9wZXJhbmQgIiArICR7b3RoZXJPcGVyYW5kfSArICIg
ZXhwZWN0ZWQgIiArICR7ZXhwZWN0ZWRMZWZ0VmFsdWVXaXRoSG9sZX0gKyAiIGdvdCAiICsgbGhz
UmVzdWx0MTsKKyAgICAgICAgICAgIGxldCBsaHNSZXN1bHQyID0gb2JzZXJ2YWJsZUhvbGVPbkxo
cyh0ZXN0QXJyYXksICR7b3RoZXJPcGVyYW5kfSk7CisgICAgICAgICAgICBpZiAoIWlzRXF1YWwo
bGhzUmVzdWx0MlswXSwgJHtleHBlY3RlZExlZnRWYWx1ZVdpdGhIb2xlfSkgfHwgbGhzUmVzdWx0
MlsxXSAhPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgICAgIHRocm93ICJFcnJvciBvbiBvYnNl
cnZhYmxlSG9sZU9uTGhzIGF0IGkgPSAiICsgaTsKKworICAgICAgICAgICAgbGV0IHJoc1Jlc3Vs
dDEgPSBub25PYnNlcnZhYmxlSG9sZU9uUmhzKHRlc3RBcnJheSwgJHtvdGhlck9wZXJhbmR9KTsK
KyAgICAgICAgICAgIGlmICghaXNFcXVhbChyaHNSZXN1bHQxLCAke2V4cGVjdGVkUmlnaHRWYWx1
ZVdpdGhIb2xlfSkpCisgICAgICAgICAgICAgICAgdGhyb3cgIkVycm9yIG9uIG5vbk9ic2VydmFi
bGVIb2xlT25SaHMgYXQgaSA9ICIgKyBpICsgIiB3aXRoIG9wZXJhbmQgIiArICR7b3RoZXJPcGVy
YW5kfSArICIgZXhwZWN0ZWQgIiArICR7ZXhwZWN0ZWRSaWdodFZhbHVlV2l0aEhvbGV9ICsgIiBn
b3QgIiArIHJoc1Jlc3VsdDE7CisgICAgICAgICAgICBsZXQgcmhzUmVzdWx0MiA9IG9ic2VydmFi
bGVIb2xlT25SaHModGVzdEFycmF5LCAke290aGVyT3BlcmFuZH0pOworICAgICAgICAgICAgaWYg
KCFpc0VxdWFsKHJoc1Jlc3VsdDJbMF0sICR7ZXhwZWN0ZWRSaWdodFZhbHVlV2l0aEhvbGV9KSB8
fCByaHNSZXN1bHQyWzFdICE9PSB1bmRlZmluZWQpCisgICAgICAgICAgICAgICAgdGhyb3cgIkVy
cm9yIG9uIG9ic2VydmFibGVIb2xlT25SaHMgYXQgaSA9ICIgKyBpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gRmlsbCB0aGUgaG9sZSwgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgc3RpbGwgd29yayBj
b3JyZWN0bHkuCisgICAgICAgIHRlc3RBcnJheVswXSA9IDEuOworICAgICAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgICAgICBsZXQgbGhzUmVzdWx0MSA9IG5vbk9i
c2VydmFibGVIb2xlT25MaHModGVzdEFycmF5LCAke290aGVyT3BlcmFuZH0pOworICAgICAgICAg
ICAgaWYgKCFpc0VxdWFsKGxoc1Jlc3VsdDEsICR7ZXhwZWN0ZWRMZWZ0VmFsdWV9KSkKKyAgICAg
ICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24gbm9uIGhvbGUgbm9uT2JzZXJ2YWJsZUhvbGVPbkxo
cyBhdCBpID0gIiArIGkgKyAiIGV4cGVjdGVkICIgKyAke2V4cGVjdGVkTGVmdFZhbHVlfSArICIg
Z290ICIgKyBsaHNSZXN1bHQxOworICAgICAgICAgICAgbGV0IGxoc1Jlc3VsdDIgPSBvYnNlcnZh
YmxlSG9sZU9uTGhzKHRlc3RBcnJheSwgJHtvdGhlck9wZXJhbmR9KTsKKyAgICAgICAgICAgIGlm
ICghaXNFcXVhbChsaHNSZXN1bHQyWzBdLCAke2V4cGVjdGVkTGVmdFZhbHVlfSkgfHwgbGhzUmVz
dWx0MlsxXSAhPT0gMSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24gbm9uIGhvbGUg
b2JzZXJ2YWJsZUhvbGVPbkxocyBhdCBpID0gIiArIGkgKyAiIGV4cGVjdGVkICIgKyAke2V4cGVj
dGVkTGVmdFZhbHVlfSArICIgZ290ICIgKyBsaHNSZXN1bHQyWzBdOworCisgICAgICAgICAgICBs
ZXQgcmhzUmVzdWx0MSA9IG5vbk9ic2VydmFibGVIb2xlT25SaHModGVzdEFycmF5LCAke290aGVy
T3BlcmFuZH0pOworICAgICAgICAgICAgaWYgKCFpc0VxdWFsKHJoc1Jlc3VsdDEsICR7ZXhwZWN0
ZWRSaWdodFZhbHVlfSkpCisgICAgICAgICAgICAgICAgdGhyb3cgIkVycm9yIG9uIG5vbiBob2xl
IG5vbk9ic2VydmFibGVIb2xlT25SaHMgYXQgaSA9ICIgKyBpICsgIiB3aXRoIG9wZXJhbmQgIiAr
ICR7b3RoZXJPcGVyYW5kfSArICIgZXhwZWN0ZWQgIiArICR7ZXhwZWN0ZWRSaWdodFZhbHVlfSAr
ICIgZ290ICIgKyByaHNSZXN1bHQxOworICAgICAgICAgICAgbGV0IHJoc1Jlc3VsdDIgPSBvYnNl
cnZhYmxlSG9sZU9uUmhzKHRlc3RBcnJheSwgJHtvdGhlck9wZXJhbmR9KTsKKyAgICAgICAgICAg
IGlmICghaXNFcXVhbChyaHNSZXN1bHQyWzBdLCAke2V4cGVjdGVkUmlnaHRWYWx1ZX0pIHx8IHJo
c1Jlc3VsdDJbMV0gIT09IDEpCisgICAgICAgICAgICAgICAgdGhyb3cgIkVycm9yIG9uIG5vbiBo
b2xlIG9ic2VydmFibGVIb2xlT25SaHMgYXQgaSA9ICIgKyBpOworICAgICAgICB9YAorICAgICk7
Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcml0aC1zdWItb24tZG91YmxlLWFycmF5LXdpdGgtaG9s
ZXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FyaXRoLXN1Yi1vbi1k
b3VibGUtYXJyYXktd2l0aC1ob2xlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTVjNzhjYTg0MzYwOTE3NmVj
Yzk2NTBhOWMyNWQ0ZWNjMDE0NWVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcml0aC1zdWItb24tZG91YmxlLWFycmF5LXdpdGgtaG9sZXMu
anMKQEAgLTAsMCArMSw5OCBAQAorbGV0IHRlc3RDYXNlcyA9IFsKKyAgICAvLyBOdW1iZXJzCisg
ICAgWycxJywgMCwgMF0sCisgICAgWycxLjUnLCAxIC0gMS41LCAxLjUgLSAxXSwKKyAgICBbTmFO
LCBOYU4sIE5hTl0sCisKKyAgICAvLyBTdHJpbmdzLgorICAgIFsnIiInLCAxLCAtMV0sCisgICAg
WyduZXcgU3RyaW5nKCknLCAxLCAtMV0sCisgICAgWyciV2ViS2l0ISInLCBOYU4sIE5hTl0sCisK
KyAgICAvLyBPYmplY3RzLgorICAgIFsneyB9JywgTmFOLCBOYU5dLAorICAgIFsneyBmb286IDEg
fScsIE5hTiwgTmFOXSwKKyAgICBbJ3sgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgeyByZXR1cm4gIiI7
IH0gfScsIDEsIC0xXSwKKyAgICBbJ3sgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgeyByZXR1cm4gIldl
YktpdCI7IH0gfScsIE5hTiwgTmFOXSwKKworICAgIC8vIE90aGVycy4KKyAgICBbJ251bGwnLCAx
LCAtMV0sCisgICAgWyd1bmRlZmluZWQnLCBOYU4sIE5hTl0KK107CisKK2ZvciAobGV0IHRlc3RD
YXNlIG9mIHRlc3RDYXNlcykgeworICAgIGxldCBvdGhlck9wZXJhbmQgPSB0ZXN0Q2FzZVswXTsK
KyAgICBsZXQgZXhwZWN0ZWRMZWZ0VmFsdWUgPSB0ZXN0Q2FzZVsxXTsKKyAgICBsZXQgZXhwZWN0
ZWRSaWdodFZhbHVlID0gdGVzdENhc2VbMl07CisgICAgZXZhbCgKKyAgICAgICAgYC8vIFRob3Nl
IGhvbGVzIGFyZSBub3Qgb2JzZXJ2YWJsZSBieSBhcml0aG1ldGljIG9wZXJhdGlvbi4KKyAgICAg
ICAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBhbHdheXMgZ29pbmcgdG8gYmUgTmFOLgorICAgICAg
ICBmdW5jdGlvbiBub25PYnNlcnZhYmxlSG9sZU9uTGhzKGFycmF5LCBvdGhlclZhbHVlKSB7Cisg
ICAgICAgICAgICByZXR1cm4gYXJyYXlbMF0gLSBvdGhlclZhbHVlOworICAgICAgICB9CisgICAg
ICAgIG5vSW5saW5lKG5vbk9ic2VydmFibGVIb2xlT25MaHMpOworCisgICAgICAgIGZ1bmN0aW9u
IG9ic2VydmFibGVIb2xlT25MaHMoYXJyYXksIG90aGVyVmFsdWUpIHsKKyAgICAgICAgICAgIGxl
dCB2YWx1ZSA9IGFycmF5WzBdOworICAgICAgICAgICAgcmV0dXJuIFt2YWx1ZSAtIG90aGVyVmFs
dWUsIHZhbHVlXTsKKyAgICAgICAgfQorICAgICAgICBub0lubGluZShvYnNlcnZhYmxlSG9sZU9u
TGhzKTsKKworICAgICAgICBmdW5jdGlvbiBub25PYnNlcnZhYmxlSG9sZU9uUmhzKGFycmF5LCBv
dGhlclZhbHVlKSB7CisgICAgICAgICAgICByZXR1cm4gb3RoZXJWYWx1ZSAtIGFycmF5WzBdOwor
ICAgICAgICB9CisgICAgICAgIG5vSW5saW5lKG5vbk9ic2VydmFibGVIb2xlT25SaHMpOworCisg
ICAgICAgIGZ1bmN0aW9uIG9ic2VydmFibGVIb2xlT25SaHMoYXJyYXksIG90aGVyVmFsdWUpIHsK
KyAgICAgICAgICAgIGxldCB2YWx1ZSA9IGFycmF5WzBdOworICAgICAgICAgICAgcmV0dXJuIFtv
dGhlclZhbHVlIC0gdmFsdWUsIHZhbHVlXTsKKyAgICAgICAgfQorICAgICAgICBub0lubGluZShv
YnNlcnZhYmxlSG9sZU9uUmhzKTsKKworICAgICAgICBsZXQgdGVzdEFycmF5ID0gbmV3IEFycmF5
OworICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IDM7ICsraSkgeworICAgICAgICAgICAgdGVz
dEFycmF5W2ldID0gaSArIDAuNQorICAgICAgICB9CisKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxZTQ7ICsraSkgeworICAgICAgICAgICAgbGV0IGxoc1Jlc3VsdDEgPSBub25PYnNlcnZh
YmxlSG9sZU9uTGhzKHRlc3RBcnJheSwgJHtvdGhlck9wZXJhbmR9KTsKKyAgICAgICAgICAgIGlm
IChsaHNSZXN1bHQxID09IGxoc1Jlc3VsdDEpCisgICAgICAgICAgICAgICAgdGhyb3cgIkVycm9y
IG9uIG5vbk9ic2VydmFibGVIb2xlT25MaHMgYXQgaSA9ICIgKyBpOworICAgICAgICAgICAgbGV0
IGxoc1Jlc3VsdDIgPSBvYnNlcnZhYmxlSG9sZU9uTGhzKHRlc3RBcnJheSwgJHtvdGhlck9wZXJh
bmR9KTsKKyAgICAgICAgICAgIGlmIChsaHNSZXN1bHQyWzBdID09IGxoc1Jlc3VsdDJbMF0gfHwg
bGhzUmVzdWx0MlsxXSAhPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgICAgIHRocm93ICJFcnJv
ciBvbiBvYnNlcnZhYmxlSG9sZU9uTGhzIGF0IGkgPSAiICsgaTsKKworICAgICAgICAgICAgbGV0
IHJoc1Jlc3VsdDEgPSBub25PYnNlcnZhYmxlSG9sZU9uUmhzKHRlc3RBcnJheSwgJHtvdGhlck9w
ZXJhbmR9KTsKKyAgICAgICAgICAgIGlmIChyaHNSZXN1bHQxID09IHJoc1Jlc3VsdDEpCisgICAg
ICAgICAgICAgICAgdGhyb3cgIkVycm9yIG9uIG5vbk9ic2VydmFibGVIb2xlT25SaHMgYXQgaSA9
ICIgKyBpOworICAgICAgICAgICAgbGV0IHJoc1Jlc3VsdDIgPSBvYnNlcnZhYmxlSG9sZU9uUmhz
KHRlc3RBcnJheSwgJHtvdGhlck9wZXJhbmR9KTsKKyAgICAgICAgICAgIGlmIChyaHNSZXN1bHQy
WzBdID09IHJoc1Jlc3VsdDJbMF0gfHwgcmhzUmVzdWx0MlsxXSAhPT0gdW5kZWZpbmVkKQorICAg
ICAgICAgICAgICAgIHRocm93ICJFcnJvciBvbiBvYnNlcnZhYmxlSG9sZU9uUmhzIGF0IGkgPSAi
ICsgaTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBpc0VxdWFsID0gZnVuY3Rpb24oYSwgYikg
eworICAgICAgICAgICAgaWYgKGEgPT09IGEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYSA9
PT0gYjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBiICE9PSBiOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gRmlsbCB0aGUgaG9sZSwgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgc3Rp
bGwgd29yayBjb3JyZWN0bHkuCisgICAgICAgIHRlc3RBcnJheVswXSA9IDEuOworICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgICAgICBsZXQgbGhzUmVzdWx0
MSA9IG5vbk9ic2VydmFibGVIb2xlT25MaHModGVzdEFycmF5LCAke290aGVyT3BlcmFuZH0pOwor
ICAgICAgICAgICAgaWYgKCFpc0VxdWFsKGxoc1Jlc3VsdDEsICR7ZXhwZWN0ZWRMZWZ0VmFsdWV9
KSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24gbm9uIGhvbGUgbm9uT2JzZXJ2YWJs
ZUhvbGVPbkxocyBhdCBpID0gIiArIGkgKyAiIGV4cGVjdGVkICIgKyAke2V4cGVjdGVkTGVmdFZh
bHVlfSArICIgZ290ICIgKyBsaHNSZXN1bHQxOworICAgICAgICAgICAgbGV0IGxoc1Jlc3VsdDIg
PSBvYnNlcnZhYmxlSG9sZU9uTGhzKHRlc3RBcnJheSwgJHtvdGhlck9wZXJhbmR9KTsKKyAgICAg
ICAgICAgIGlmICghaXNFcXVhbChsaHNSZXN1bHQyWzBdLCAke2V4cGVjdGVkTGVmdFZhbHVlfSkg
fHwgbGhzUmVzdWx0MlsxXSAhPT0gMSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24g
bm9uIGhvbGUgb2JzZXJ2YWJsZUhvbGVPbkxocyBhdCBpID0gIiArIGkgKyAiIGV4cGVjdGVkICIg
KyAke2V4cGVjdGVkTGVmdFZhbHVlfSArICIgZ290ICIgKyBsaHNSZXN1bHQyWzBdOworCisgICAg
ICAgICAgICBsZXQgcmhzUmVzdWx0MSA9IG5vbk9ic2VydmFibGVIb2xlT25SaHModGVzdEFycmF5
LCAke290aGVyT3BlcmFuZH0pOworICAgICAgICAgICAgaWYgKCFpc0VxdWFsKHJoc1Jlc3VsdDEs
ICR7ZXhwZWN0ZWRSaWdodFZhbHVlfSkpCisgICAgICAgICAgICAgICAgdGhyb3cgIkVycm9yIG9u
IG5vbiBob2xlIG5vbk9ic2VydmFibGVIb2xlT25SaHMgYXQgaSA9ICIgKyBpICsgIiBleHBlY3Rl
ZCAiICsgJHtleHBlY3RlZFJpZ2h0VmFsdWV9ICsgIiBnb3QgIiArIHJoc1Jlc3VsdDE7CisgICAg
ICAgICAgICBsZXQgcmhzUmVzdWx0MiA9IG9ic2VydmFibGVIb2xlT25SaHModGVzdEFycmF5LCAk
e290aGVyT3BlcmFuZH0pOworICAgICAgICAgICAgaWYgKCFpc0VxdWFsKHJoc1Jlc3VsdDJbMF0s
ICR7ZXhwZWN0ZWRSaWdodFZhbHVlfSkgfHwgcmhzUmVzdWx0MlsxXSAhPT0gMSkKKyAgICAgICAg
ICAgICAgICB0aHJvdyAiRXJyb3Igb24gbm9uIGhvbGUgb2JzZXJ2YWJsZUhvbGVPblJocyBhdCBp
ID0gIiArIGk7CisgICAgICAgIH1gCisgICAgKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3ZhbHVl
LWFkZC1vbi1kb3VibGUtYXJyYXktd2l0aC1ob2xlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvdmFsdWUtYWRkLW9uLWRvdWJsZS1hcnJheS13aXRoLWhvbGVzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM2N2U4Zjc0OTY3NmIwZmFiYjA4OTZmMzdhN2NiMzY3ZTNhMzI4ODMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3ZhbHVlLWFk
ZC1vbi1kb3VibGUtYXJyYXktd2l0aC1ob2xlcy5qcwpAQCAtMCwwICsxLDEwMCBAQAorbGV0IHRl
c3RDYXNlcyA9IFsKKyAgICAvLyBOdW1iZXJzCisgICAgWycxJywgTmFOLCBOYU4sIDIsIDJdLAor
ICAgIFsnMS41JywgTmFOLCBOYU4sIDEgKyAxLjUsIDEgKyAxLjVdLAorICAgIFtOYU4sIE5hTiwg
TmFOLCBOYU4sIE5hTl0sCisKKyAgICAvLyBTdHJpbmdzLgorICAgIFsnIiInLCAnInVuZGVmaW5l
ZCInLCAnInVuZGVmaW5lZCInLCAnIjEiJywgJyIxIiddLAorICAgIFsnbmV3IFN0cmluZygpJywg
JyJ1bmRlZmluZWQiJywgJyJ1bmRlZmluZWQiJywgJyIxIicsICciMSInXSwKKyAgICBbJyJXZWJL
aXQhIicsICcidW5kZWZpbmVkV2ViS2l0ISInLCAnIldlYktpdCF1bmRlZmluZWQiJywgJyIxV2Vi
S2l0ISInLCAnIldlYktpdCExIiddLAorCisgICAgLy8gT2JqZWN0cy4KKyAgICBbJ3sgfScsICci
dW5kZWZpbmVkW29iamVjdCBPYmplY3RdIicsICciW29iamVjdCBPYmplY3RddW5kZWZpbmVkIics
ICciMVtvYmplY3QgT2JqZWN0XSInLCAnIltvYmplY3QgT2JqZWN0XTEiJ10sCisgICAgWyd7IGZv
bzogMSB9JywgJyJ1bmRlZmluZWRbb2JqZWN0IE9iamVjdF0iJywgJyJbb2JqZWN0IE9iamVjdF11
bmRlZmluZWQiJywgJyIxW29iamVjdCBPYmplY3RdIicsICciW29iamVjdCBPYmplY3RdMSInXSwK
KyAgICBbJ3sgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgeyByZXR1cm4gIiI7IH0gfScsICcidW5kZWZp
bmVkIicsICcidW5kZWZpbmVkIicsICciMSInLCAnIjEiJ10sCisgICAgWyd7IHRvU3RyaW5nOiBm
dW5jdGlvbigpIHsgcmV0dXJuICJXZWJLaXQiOyB9IH0nLCAnInVuZGVmaW5lZFdlYktpdCInLCAn
IldlYktpdHVuZGVmaW5lZCInLCAnIjFXZWJLaXQiJywgJyJXZWJLaXQxIiddLAorCisgICAgLy8g
T3RoZXJzLgorICAgIFsnbnVsbCcsIE5hTiwgTmFOLCAxLCAxXSwKKyAgICBbJ3VuZGVmaW5lZCcs
IE5hTiwgTmFOLCBOYU4sIE5hTl0KK107CisKK2ZvciAobGV0IHRlc3RDYXNlIG9mIHRlc3RDYXNl
cykgeworICAgIGxldCBvdGhlck9wZXJhbmQgPSB0ZXN0Q2FzZVswXTsKKyAgICBsZXQgZXhwZWN0
ZWRMZWZ0VmFsdWVXaXRoSG9sZSA9IHRlc3RDYXNlWzFdOworICAgIGxldCBleHBlY3RlZFJpZ2h0
VmFsdWVXaXRoSG9sZSA9IHRlc3RDYXNlWzJdOworICAgIGxldCBleHBlY3RlZExlZnRWYWx1ZSA9
IHRlc3RDYXNlWzNdOworICAgIGxldCBleHBlY3RlZFJpZ2h0VmFsdWUgPSB0ZXN0Q2FzZVs0XTsK
KyAgICBldmFsKAorICAgICAgICBgLy8gVGhvc2UgaG9sZXMgYXJlIG5vdCBvYnNlcnZhYmxlIGJ5
IGFyaXRobWV0aWMgb3BlcmF0aW9uLgorICAgICAgICAvLyBUaGUgcmV0dXJuIHZhbHVlIGlzIGFs
d2F5cyBnb2luZyB0byBiZSBOYU4uCisgICAgICAgIGZ1bmN0aW9uIG5vbk9ic2VydmFibGVIb2xl
T25MaHMoYXJyYXksIG90aGVyVmFsdWUpIHsKKyAgICAgICAgICAgIHJldHVybiBhcnJheVswXSAr
IG90aGVyVmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgbm9JbmxpbmUobm9uT2JzZXJ2YWJsZUhv
bGVPbkxocyk7CisKKyAgICAgICAgZnVuY3Rpb24gb2JzZXJ2YWJsZUhvbGVPbkxocyhhcnJheSwg
b3RoZXJWYWx1ZSkgeworICAgICAgICAgICAgbGV0IHZhbHVlID0gYXJyYXlbMF07CisgICAgICAg
ICAgICByZXR1cm4gW3ZhbHVlICsgb3RoZXJWYWx1ZSwgdmFsdWVdOworICAgICAgICB9CisgICAg
ICAgIG5vSW5saW5lKG9ic2VydmFibGVIb2xlT25MaHMpOworCisgICAgICAgIGZ1bmN0aW9uIG5v
bk9ic2VydmFibGVIb2xlT25SaHMoYXJyYXksIG90aGVyVmFsdWUpIHsKKyAgICAgICAgICAgIHJl
dHVybiBvdGhlclZhbHVlICsgYXJyYXlbMF07CisgICAgICAgIH0KKyAgICAgICAgbm9JbmxpbmUo
bm9uT2JzZXJ2YWJsZUhvbGVPblJocyk7CisKKyAgICAgICAgZnVuY3Rpb24gb2JzZXJ2YWJsZUhv
bGVPblJocyhhcnJheSwgb3RoZXJWYWx1ZSkgeworICAgICAgICAgICAgbGV0IHZhbHVlID0gYXJy
YXlbMF07CisgICAgICAgICAgICByZXR1cm4gW290aGVyVmFsdWUgKyB2YWx1ZSwgdmFsdWVdOwor
ICAgICAgICB9CisgICAgICAgIG5vSW5saW5lKG9ic2VydmFibGVIb2xlT25SaHMpOworCisgICAg
ICAgIGxldCB0ZXN0QXJyYXkgPSBuZXcgQXJyYXk7CisgICAgICAgIGZvciAobGV0IGkgPSAxOyBp
IDwgMzsgKytpKSB7CisgICAgICAgICAgICB0ZXN0QXJyYXlbaV0gPSBpICsgMC41CisgICAgICAg
IH0KKworICAgICAgICBsZXQgaXNFcXVhbCA9IGZ1bmN0aW9uKGEsIGIpIHsKKyAgICAgICAgICAg
IGlmIChhID09PSBhKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEgPT09IGI7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICByZXR1cm4gYiAhPT0gYjsKKyAgICAgICAgfQorCisgICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgICAgIGxldCBsaHNSZXN1
bHQxID0gbm9uT2JzZXJ2YWJsZUhvbGVPbkxocyh0ZXN0QXJyYXksICR7b3RoZXJPcGVyYW5kfSk7
CisgICAgICAgICAgICBpZiAoIWlzRXF1YWwobGhzUmVzdWx0MSwgJHtleHBlY3RlZExlZnRWYWx1
ZVdpdGhIb2xlfSkpCisgICAgICAgICAgICAgICAgdGhyb3cgIkVycm9yIG9uIG5vbk9ic2VydmFi
bGVIb2xlT25MaHMgYXQgaSA9ICIgKyBpICsgIiB3aXRoIG9wZXJhbmQgIiArICR7b3RoZXJPcGVy
YW5kfSArICIgZXhwZWN0ZWQgIiArICR7ZXhwZWN0ZWRMZWZ0VmFsdWVXaXRoSG9sZX0gKyAiIGdv
dCAiICsgbGhzUmVzdWx0MTsKKyAgICAgICAgICAgIGxldCBsaHNSZXN1bHQyID0gb2JzZXJ2YWJs
ZUhvbGVPbkxocyh0ZXN0QXJyYXksICR7b3RoZXJPcGVyYW5kfSk7CisgICAgICAgICAgICBpZiAo
IWlzRXF1YWwobGhzUmVzdWx0MlswXSwgJHtleHBlY3RlZExlZnRWYWx1ZVdpdGhIb2xlfSkgfHwg
bGhzUmVzdWx0MlsxXSAhPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgICAgIHRocm93ICJFcnJv
ciBvbiBvYnNlcnZhYmxlSG9sZU9uTGhzIGF0IGkgPSAiICsgaTsKKworICAgICAgICAgICAgbGV0
IHJoc1Jlc3VsdDEgPSBub25PYnNlcnZhYmxlSG9sZU9uUmhzKHRlc3RBcnJheSwgJHtvdGhlck9w
ZXJhbmR9KTsKKyAgICAgICAgICAgIGlmICghaXNFcXVhbChyaHNSZXN1bHQxLCAke2V4cGVjdGVk
UmlnaHRWYWx1ZVdpdGhIb2xlfSkpCisgICAgICAgICAgICAgICAgdGhyb3cgIkVycm9yIG9uIG5v
bk9ic2VydmFibGVIb2xlT25SaHMgYXQgaSA9ICIgKyBpICsgIiB3aXRoIG9wZXJhbmQgIiArICR7
b3RoZXJPcGVyYW5kfSArICIgZXhwZWN0ZWQgIiArICR7ZXhwZWN0ZWRSaWdodFZhbHVlV2l0aEhv
bGV9ICsgIiBnb3QgIiArIHJoc1Jlc3VsdDE7CisgICAgICAgICAgICBsZXQgcmhzUmVzdWx0MiA9
IG9ic2VydmFibGVIb2xlT25SaHModGVzdEFycmF5LCAke290aGVyT3BlcmFuZH0pOworICAgICAg
ICAgICAgaWYgKCFpc0VxdWFsKHJoc1Jlc3VsdDJbMF0sICR7ZXhwZWN0ZWRSaWdodFZhbHVlV2l0
aEhvbGV9KSB8fCByaHNSZXN1bHQyWzFdICE9PSB1bmRlZmluZWQpCisgICAgICAgICAgICAgICAg
dGhyb3cgIkVycm9yIG9uIG9ic2VydmFibGVIb2xlT25SaHMgYXQgaSA9ICIgKyBpOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gRmlsbCB0aGUgaG9sZSwgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgc3Rp
bGwgd29yayBjb3JyZWN0bHkuCisgICAgICAgIHRlc3RBcnJheVswXSA9IDEuOworICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgICAgICBsZXQgbGhzUmVzdWx0
MSA9IG5vbk9ic2VydmFibGVIb2xlT25MaHModGVzdEFycmF5LCAke290aGVyT3BlcmFuZH0pOwor
ICAgICAgICAgICAgaWYgKCFpc0VxdWFsKGxoc1Jlc3VsdDEsICR7ZXhwZWN0ZWRMZWZ0VmFsdWV9
KSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24gbm9uIGhvbGUgbm9uT2JzZXJ2YWJs
ZUhvbGVPbkxocyBhdCBpID0gIiArIGkgKyAiIGV4cGVjdGVkICIgKyAke2V4cGVjdGVkTGVmdFZh
bHVlfSArICIgZ290ICIgKyBsaHNSZXN1bHQxOworICAgICAgICAgICAgbGV0IGxoc1Jlc3VsdDIg
PSBvYnNlcnZhYmxlSG9sZU9uTGhzKHRlc3RBcnJheSwgJHtvdGhlck9wZXJhbmR9KTsKKyAgICAg
ICAgICAgIGlmICghaXNFcXVhbChsaHNSZXN1bHQyWzBdLCAke2V4cGVjdGVkTGVmdFZhbHVlfSkg
fHwgbGhzUmVzdWx0MlsxXSAhPT0gMSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRXJyb3Igb24g
bm9uIGhvbGUgb2JzZXJ2YWJsZUhvbGVPbkxocyBhdCBpID0gIiArIGkgKyAiIGV4cGVjdGVkICIg
KyAke2V4cGVjdGVkTGVmdFZhbHVlfSArICIgZ290ICIgKyBsaHNSZXN1bHQyWzBdOworCisgICAg
ICAgICAgICBsZXQgcmhzUmVzdWx0MSA9IG5vbk9ic2VydmFibGVIb2xlT25SaHModGVzdEFycmF5
LCAke290aGVyT3BlcmFuZH0pOworICAgICAgICAgICAgaWYgKCFpc0VxdWFsKHJoc1Jlc3VsdDEs
ICR7ZXhwZWN0ZWRSaWdodFZhbHVlfSkpCisgICAgICAgICAgICAgICAgdGhyb3cgIkVycm9yIG9u
IG5vbiBob2xlIG5vbk9ic2VydmFibGVIb2xlT25SaHMgYXQgaSA9ICIgKyBpICsgIiB3aXRoIG9w
ZXJhbmQgIiArICR7b3RoZXJPcGVyYW5kfSArICIgZXhwZWN0ZWQgIiArICR7ZXhwZWN0ZWRSaWdo
dFZhbHVlfSArICIgZ290ICIgKyByaHNSZXN1bHQxOworICAgICAgICAgICAgbGV0IHJoc1Jlc3Vs
dDIgPSBvYnNlcnZhYmxlSG9sZU9uUmhzKHRlc3RBcnJheSwgJHtvdGhlck9wZXJhbmR9KTsKKyAg
ICAgICAgICAgIGlmICghaXNFcXVhbChyaHNSZXN1bHQyWzBdLCAke2V4cGVjdGVkUmlnaHRWYWx1
ZX0pIHx8IHJoc1Jlc3VsdDJbMV0gIT09IDEpCisgICAgICAgICAgICAgICAgdGhyb3cgIkVycm9y
IG9uIG5vbiBob2xlIG9ic2VydmFibGVIb2xlT25SaHMgYXQgaSA9ICIgKyBpOworICAgICAgICB9
YAorICAgICk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>