<?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>157399</bug_id>
          
          <creation_ts>2016-05-05 16:48:01 -0700</creation_ts>
          <short_desc>[JSC] Get rid of NonNegZeroDouble, it is broken</short_desc>
          <delta_ts>2016-05-06 14:16:50 -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>1190518</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-05-05 16:48:01 -0700</bug_when>
    <thetext>[JSC] Get rid of NonNegZeroDouble, it is broken</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190533</commentid>
    <comment_count>1</comment_count>
      <attachid>278208</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-05-05 17:23:08 -0700</bug_when>
    <thetext>Created attachment 278208
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190534</commentid>
    <comment_count>2</comment_count>
      <attachid>278208</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-05-05 17:30:17 -0700</bug_when>
    <thetext>Comment on attachment 278208
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        garanteed to end up in a recompile loop.

typo: /garanteed/guaranteed/.

&gt; Source/JavaScriptCore/ChangeLog:17
&gt; +        -We speculate you have Int32 depsite producing doubles.

typo: /depsite/despite/.

&gt; Source/JavaScriptCore/ChangeLog:18
&gt; +        -We OSR exit on an other node (ValueToInt32 for example) from the result of this ArithMul.

typo: /an other/another/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190535</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-05-05 17:30:59 -0700</bug_when>
    <thetext>Can we have perf numbers to confirm that this is a good thing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190541</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-05-05 17:50:29 -0700</bug_when>
    <thetext>Sure:

                                                  Conf#1                    Conf#2                                      
SunSpider:
   3d-cube                                    8.0846+-0.3743            8.0459+-0.2575        
   3d-morph                                   7.8293+-0.2526            7.8116+-0.1000        
   3d-raytrace                                8.6219+-0.1723            8.6099+-0.0754        
   access-binary-trees                        3.1553+-0.1817            2.9854+-0.1235          might be 1.0569x faster
   access-fannkuch                            8.6970+-0.1854     ?      8.7535+-0.2042        ?
   access-nbody                               4.2295+-0.2341            4.1943+-0.2971        
   access-nsieve                              4.4164+-0.1774     ?      4.4925+-0.1428        ? might be 1.0172x slower
   bitops-3bit-bits-in-byte                   1.5233+-0.0870     ?      1.5759+-0.1377        ? might be 1.0345x slower
   bitops-bits-in-byte                        4.8295+-0.0882            4.8259+-0.1795        
   bitops-bitwise-and                         2.5401+-0.4048     ?      2.5502+-0.2171        ?
   bitops-nsieve-bits                         4.5153+-0.1806            4.4999+-0.2230        
   controlflow-recursive                      3.3527+-0.0785            3.3500+-0.1449        
   crypto-aes                                 6.6942+-0.2688     ?      6.9943+-0.3257        ? might be 1.0448x slower
   crypto-md5                                 3.6370+-0.1232     ?      3.7021+-0.1336        ? might be 1.0179x slower
   crypto-sha1                                3.3739+-0.2113     ?      3.4261+-0.1425        ? might be 1.0155x slower
   date-format-tofte                         12.5109+-0.5631     ?     12.8644+-0.2872        ? might be 1.0283x slower
   date-format-xparb                          7.3212+-0.4179            7.2598+-0.2875        
   math-cordic                                4.4948+-0.1218            4.4470+-0.2341          might be 1.0107x faster
   math-partial-sums                          8.3100+-0.2988     ?      8.3120+-0.3920        ?
   math-spectral-norm                         3.2461+-0.1463            3.1270+-0.1298          might be 1.0381x faster
   regexp-dna                                 9.9422+-0.1440     ?     10.1365+-0.1793        ? might be 1.0195x slower
   string-base64                              6.6079+-0.2937     ?      6.8386+-0.7408        ? might be 1.0349x slower
   string-fasta                               8.7205+-0.2405            8.5977+-0.1590          might be 1.0143x faster
   string-tagcloud                           13.7374+-0.5479           13.4935+-0.5171          might be 1.0181x faster
   string-unpack-code                        27.5786+-1.2333           27.5617+-0.4642        
   string-validate-input                      6.4800+-0.2418     ?      6.6505+-0.4393        ? might be 1.0263x slower

   &lt;arithmetic&gt;                               7.0942+-0.0951     ?      7.1195+-0.0483        ? might be 1.0036x slower

                                                  Conf#1                    Conf#2                                      
Octane:
   encrypt                                   0.27384+-0.00265          0.27241+-0.00445       
   decrypt                                   4.95010+-0.01478    ?     4.99333+-0.17006       ?
   deltablue                        x2       0.22430+-0.01941          0.20671+-0.00270         might be 1.0851x faster
   earley                                    0.50916+-0.00116          0.50767+-0.00636       
   boyer                                     8.61669+-0.15549          8.55408+-0.09662       
   navier-stokes                    x2       6.45209+-0.04611          6.43432+-0.01428       
   raytrace                         x2       1.38773+-0.04821    ?     1.38773+-0.03789       ?
   richards                         x2       0.13988+-0.00163    ?     0.14312+-0.00345       ? might be 1.0231x slower
   splay                            x2       0.52022+-0.00754          0.51874+-0.00838       
   regexp                           x2      27.47515+-0.22017         27.36919+-0.38902       
   pdfjs                            x2      60.43762+-0.91144         60.07478+-1.49832       
   mandreel                         x2      67.93454+-1.61191         67.26845+-0.09297       
   gbemu                            x2      55.01648+-2.00744    ?    55.26581+-1.82016       ?
   closure                                   0.83052+-0.00235          0.82970+-0.00841       
   jquery                                   10.47478+-0.13644    ?    10.51687+-0.18635       ?
   box2d                            x2      16.15290+-0.14111         16.11744+-0.20800       
   zlib                             x2     544.71757+-3.02098        544.45734+-4.92492       
   typescript                       x2    1065.56360+-7.26251       1058.31647+-10.26854      

   &lt;geometric&gt;                               8.29946+-0.03544          8.24984+-0.02481         might be 1.0060x faster

                                                  Conf#1                    Conf#2                                      
Kraken:
   ai-astar                                  132.196+-0.666            131.749+-0.676         
   audio-beat-detection                       65.659+-1.021             65.544+-0.916         
   audio-dft                                 128.693+-0.780      ?     129.680+-1.228         ?
   audio-fft                                  54.094+-0.580      ?      55.206+-1.691         ? might be 1.0206x slower
   audio-oscillator                           78.290+-0.406      ?      78.573+-0.708         ?
   imaging-darkroom                           96.707+-0.360             96.335+-0.341         
   imaging-desaturate                         92.778+-0.873             92.473+-0.714         
   imaging-gaussian-blur                     118.468+-0.573      ^     105.053+-4.718         ^ definitely 1.1277x faster
   json-parse-financial                       61.865+-0.263      ^      61.173+-0.318         ^ definitely 1.0113x faster
   json-stringify-tinderbox                   39.372+-0.298             39.231+-0.392         
   stanford-crypto-aes                        59.222+-0.259      ?      59.385+-0.613         ?
   stanford-crypto-ccm                        53.943+-2.839      ?      54.580+-0.890         ? might be 1.0118x slower
   stanford-crypto-pbkdf2                    142.284+-1.253            140.631+-0.595           might be 1.0117x faster
   stanford-crypto-sha256-iterative           55.831+-0.902      ?      56.101+-0.846         ?

   &lt;arithmetic&gt;                               84.243+-0.430      ^      83.265+-0.319         ^ definitely 1.0117x faster

                                                  Conf#1                    Conf#2                                      
AsmBench:
   bigfib.cpp                               676.8022+-8.1014          653.6763+-22.9224         might be 1.0354x faster
   cray.c                                   572.9987+-5.4750          570.0806+-5.9688        
   dry.c                                    658.0568+-29.5948         657.9347+-28.2415       
   FloatMM.c                                889.4448+-1.4215          889.3693+-0.5424        
   gcc-loops.cpp                           6420.7363+-39.9265        6390.6307+-16.4554       
   n-body.c                                1551.2932+-82.5923    ?   1576.6259+-82.3750       ? might be 1.0163x slower
   Quicksort.c                              599.7567+-5.7173     ?    600.9503+-3.5734        ?
   stepanov_container.cpp                  4477.7452+-44.8298        4437.8970+-72.5955       
   Towers.c                                 390.1205+-0.4479     ?    390.3469+-0.3121        ?

   &lt;geometric&gt;                             1100.4780+-11.7008        1096.1716+-3.9390          might be 1.0039x faster

                                                  Conf#1                    Conf#2                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                           48.3353+-0.2945           48.1180+-0.0780          might be 1.0045x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190562</commentid>
    <comment_count>5</comment_count>
      <attachid>278216</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-05-05 18:27:54 -0700</bug_when>
    <thetext>Created attachment 278216
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190581</commentid>
    <comment_count>6</comment_count>
      <attachid>278216</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-05 19:30:13 -0700</bug_when>
    <thetext>Comment on attachment 278216
Patch for landing

Clearing flags on attachment: 278216

Committed r200502: &lt;http://trac.webkit.org/changeset/200502&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190582</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-05 19:30:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190714</commentid>
    <comment_count>8</comment_count>
      <attachid>278216</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-06 12:22:15 -0700</bug_when>
    <thetext>Comment on attachment 278216
Patch for landing

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

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        The profile &quot;NonNegZeroDouble&quot; is fundamentally broken.

Why is it fundamentally broken?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190719</commentid>
    <comment_count>9</comment_count>
      <attachid>278216</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-06 12:27:31 -0700</bug_when>
    <thetext>Comment on attachment 278216
Patch for landing

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

&gt; Source/JavaScriptCore/bytecode/ValueProfile.h:224
&gt; -        NonNegZeroDouble = 1 &lt;&lt; 0,
&gt; -        NegZeroDouble    = 1 &lt;&lt; 1,
&gt; -        NonNumber        = 1 &lt;&lt; 2,
&gt; -        Int32Overflow    = 1 &lt;&lt; 3,
&gt; -        Int52Overflow    = 1 &lt;&lt; 4,
&gt; +        NegZeroDouble    = 1 &lt;&lt; 0,
&gt; +        NonNumber        = 1 &lt;&lt; 1,
&gt; +        Int32Overflow    = 1 &lt;&lt; 2,
&gt; +        Int52Overflow    = 1 &lt;&lt; 3,

I really don&apos;t like what you did here.  Prior to your change, this had a clear story to tell: NonNegZeroDouble and NegZeroDouble can be used together to form the set of doubles.  Now all you can do here is detect if something is NegZeroDouble.

I get that the previous profiling was incomplete, but that&apos;s not a good reason to break it even more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190721</commentid>
    <comment_count>10</comment_count>
      <attachid>278216</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-06 12:37:44 -0700</bug_when>
    <thetext>Comment on attachment 278216
Patch for landing

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

&gt; Source/JavaScriptCore/ChangeLog:26
&gt; +        In LLINT, the flag is only set on the slow path.
&gt; +        Since double*double is on the fast path, those cases are ignored.

It&apos;s OK for this flag to never be set by the LLInt, because the code must have been profiled in the baseline JIT before making it to the DFG.

&gt; Source/JavaScriptCore/ChangeLog:30
&gt; +        In Baseline, the flag is set for any case that falls back on double
&gt; +        multiplication. BUT, the DFG flag was only set for nodes that spend
&gt; +        many iteration in slow path, which obviously does not apply to double*double.

I&apos;m confused by this.  Are you saying that the problem here is that this occurred so rarely that the baseline JIT never saw it, and the only time we would see it was upon OSR exit from DFG?

If that&apos;s the case then I think it&apos;s fixable.  We need the DFG to immediately speculate that the result of the Mul is Int32, right after executing it.  That speculation should feed a BadResultType ExitKind back to the op_mul.  Then the DFG won&apos;t make the same mistake upon recompile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190723</commentid>
    <comment_count>11</comment_count>
      <attachid>278216</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-06 12:51:20 -0700</bug_when>
    <thetext>Comment on attachment 278216
Patch for landing

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

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        The problem is you are likely to mispredict, and when you do, you are
&gt; +        guaranteed to end up in a recompile loop.

You introduced a different kind of bug in this patch.  If a program multiplies integers but one of the integers comes from an object with a valueOf method, then all downstream logic that touches either that integer or any integer derived from it via any computation will see a double instead.  This will also lead to recompilations, since in baseline, the operation would have returned integers and so all downstream uses would report integers in their profiling.  Then when the multiplication tiers up into the DFG, it will start producing doubles.  Then everything else will have to recompile.

It&apos;s great that your rollout fixed a bug on one website without hurting any of synthetic benchmarks.  But for changes to the profiling, I think we have to be extra careful.  We should avoid introducing this kind of int-&gt;double pollution as much as possible.  It&apos;s as bad as recompilations.  And in this case, you could have just fixed the profiler to catch the case where the DFG exited.  It&apos;s not hard to catch.  We already have support for this for ValueProfiles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190752</commentid>
    <comment_count>12</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-05-06 13:58:51 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 278216 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=278216&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:14
&gt; &gt; +        The problem is you are likely to mispredict, and when you do, you are
&gt; &gt; +        guaranteed to end up in a recompile loop.
&gt; 
&gt; You introduced a different kind of bug in this patch.  If a program
&gt; multiplies integers but one of the integers comes from an object with a
&gt; valueOf method, then all downstream logic that touches either that integer
&gt; or any integer derived from it via any computation will see a double
&gt; instead.  This will also lead to recompilations, since in baseline, the
&gt; operation would have returned integers and so all downstream uses would
&gt; report integers in their profiling.  Then when the multiplication tiers up
&gt; into the DFG, it will start producing doubles.  Then everything else will
&gt; have to recompile.
&gt; 
&gt; It&apos;s great that your rollout fixed a bug on one website without hurting any
&gt; of synthetic benchmarks.  But for changes to the profiling, I think we have
&gt; to be extra careful.  We should avoid introducing this kind of int-&gt;double
&gt; pollution as much as possible.  It&apos;s as bad as recompilations.  And in this
&gt; case, you could have just fixed the profiler to catch the case where the DFG
&gt; exited.  It&apos;s not hard to catch.  We already have support for this for
&gt; ValueProfiles.

If the goal of NonNegZeroDouble was to type the fallback snippet properly, that is not at all what the original patch did.

Again, if that the original patch did not do any of what it was supposed to, I do not believe it is worth trying to salvage it. Better reimplement this properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190767</commentid>
    <comment_count>13</comment_count>
      <attachid>278216</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-06 14:16:50 -0700</bug_when>
    <thetext>Comment on attachment 278216
Patch for landing

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

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:14
&gt;&gt;&gt; +        guaranteed to end up in a recompile loop.
&gt;&gt; 
&gt;&gt; You introduced a different kind of bug in this patch.  If a program multiplies integers but one of the integers comes from an object with a valueOf method, then all downstream logic that touches either that integer or any integer derived from it via any computation will see a double instead.  This will also lead to recompilations, since in baseline, the operation would have returned integers and so all downstream uses would report integers in their profiling.  Then when the multiplication tiers up into the DFG, it will start producing doubles.  Then everything else will have to recompile.
&gt;&gt; 
&gt;&gt; It&apos;s great that your rollout fixed a bug on one website without hurting any of synthetic benchmarks.  But for changes to the profiling, I think we have to be extra careful.  We should avoid introducing this kind of int-&gt;double pollution as much as possible.  It&apos;s as bad as recompilations.  And in this case, you could have just fixed the profiler to catch the case where the DFG exited.  It&apos;s not hard to catch.  We already have support for this for ValueProfiles.
&gt; 
&gt; If the goal of NonNegZeroDouble was to type the fallback snippet properly, that is not at all what the original patch did.
&gt; 
&gt; Again, if that the original patch did not do any of what it was supposed to, I do not believe it is worth trying to salvage it. Better reimplement this properly.

I don&apos;t know why you say that it&apos;s &quot;not at all&quot; what the original patch did.  Clearly, it&apos;s setting the bit if the baseline JIT sees double.  Do you dispute this?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278208</attachid>
            <date>2016-05-05 17:23:08 -0700</date>
            <delta_ts>2016-05-05 18:27:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157399-20160505172349.patch</filename>
            <type>text/plain</type>
            <size>11929</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MTMwYjMxYzFjMTE1YzY1YzUyOWVjMGRiZWE2ZWYwYjUyOWE0MmQ0Li5hZGU2YWIzNGZhZjlhOWNh
MmQ1NDc2YzNiZmY1OTM3ZDU0NmYzY2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxNi0wNS0wNSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBHZXQgcmlkIG9mIE5vbk5lZ1plcm9Eb3VibGUsIGl0IGlz
IGJyb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3Mzk5CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI1MzM5NjQ3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHByb2ZpbGUgIk5vbk5lZ1plcm9E
b3VibGUiIGlzIGZ1bmRhbWVudGFsbHkgYnJva2VuLgorCisgICAgICAgIEl0IGlzIHVzZWQgYnkg
REZHIHRvIHByZWRpY3QgdGhlIHJlc3VsdCBvZiBBcml0aE11bCBhcyBiZWluZyBhIERvdWJsZQor
ICAgICAgICBvciBJbnQzMi4KKyAgICAgICAgVGhlIHByb2JsZW0gaXMgeW91IGFyZSBsaWtlbHkg
dG8gbWlzcHJlZGljdCwgYW5kIHdoZW4geW91IGRvLCB5b3UgYXJlCisgICAgICAgIGdhcmFudGVl
ZCB0byBlbmQgdXAgaW4gYSByZWNvbXBpbGUgbG9vcC4KKworICAgICAgICBUaGUgY29tcGlsZSBs
b29wcyB1c3VhbGx5IGhhcHBlbiBsaWtlIHRoaXM6CisgICAgICAgIC1XZSBzcGVjdWxhdGUgeW91
IGhhdmUgSW50MzIgZGVwc2l0ZSBwcm9kdWNpbmcgZG91Ymxlcy4KKyAgICAgICAgLVdlIE9TUiBl
eGl0IG9uIGFuIG90aGVyIG5vZGUgKFZhbHVlVG9JbnQzMiBmb3IgZXhhbXBsZSkgZnJvbSB0aGUg
cmVzdWx0IG9mIHRoaXMgQXJpdGhNdWwuCisgICAgICAgIC1XaGVuIHdlIGNvbXBpbGUgdGhpcyBi
bG9jayBhZ2FpbiwgQXJpdGhNdWwgd2lsbCBkbyB0aGUgc2FtZSBtaXNwcmVkaWN0aW9uCisgICAg
ICAgICBiZWNhdXNlIGl0IHVuY29uZGl0aW9uYWxseSBwcmVkaWN0cyBJbnQzMi4KKworICAgICAg
ICBUaGUgZmxhZyBOb25OZWdaZXJvRG91YmxlIHdhcyB2ZXJ5IHVubGlrZWx5IHRvIGJlIHNldCBj
b3JyZWN0bHkKKyAgICAgICAgaW4gdGhlIGZpcnN0IHBsYWNlLgorCisgICAgICAgIEluIExMSU5U
LCB0aGUgZmxhZyBpcyBvbmx5IHNldCBvbiB0aGUgc2xvdyBwYXRoLgorICAgICAgICBTaW5jZSBk
b3VibGUqZG91YmxlIGlzIG9uIHRoZSBmYXN0IHBhdGgsIHRob3NlIGNhc2VzIGFyZSBpZ25vcmVk
LgorCisgICAgICAgIEluIEJhc2VsaW5lLCB0aGUgZmxhZyBpcyBzZXQgZm9yIGFueSBjYXNlIHRo
YXQgZmFsbHMgYmFjayBvbiBkb3VibGUKKyAgICAgICAgbXVsdGlwbGljYXRpb24uIEJVVCwgdGhl
IERGRyBmbGFnIHdhcyBvbmx5IHNldCBmb3Igbm9kZXMgdGhhdCBzcGVuZAorICAgICAgICBtYW55
IGl0ZXJhdGlvbiBpbiBzbG93IHBhdGgsIHdoaWNoIG9idmlvdXNseSBkb2VzIG5vdCBhcHBseSB0
byBkb3VibGUqZG91YmxlLgorCisgICAgICAgIEdpdmVuIHRoZSBwZXJmIGRyYXdiYWNrcyBhbmQg
dGhlIHJlY29tcGlsZSBsb29wcywgSSByZW1vdmVkCisgICAgICAgIHRoZSB3aG9sZSBmbGFnIGZv
ciBub3cuCisKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuY3BwOgorICAgICAgICAo
V1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoK
KyAgICAgICAgKEpTQzo6UmVzdWx0UHJvZmlsZTo6ZGlkT2JzZXJ2ZU5vbkludDMyKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6UmVzdWx0UHJvZmlsZTo6ZGlkT2JzZXJ2ZURvdWJsZSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OlJlc3VsdFByb2ZpbGU6OmRpZE9ic2VydmVOb25OZWdaZXJvRG91
YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVzdWx0UHJvZmlsZTo6c2V0T2JzZXJ2ZWRO
b25OZWdaZXJvRG91YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjptYWtlU2FmZSk6IERl
bGV0ZWQuCisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjptYXlIYXZlTm9uSW50UmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZUZs
YWdzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkdW1wTm9kZUZsYWdzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBkZmcvREZHTm9kZUZsYWdzLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBqaXQvSklUTXVsR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6SklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6
OnVwZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKTogRGVsZXRlZC4KKwogMjAxNi0w
NS0wNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVjZSB0
aHJlc2hvbGRzIHRoYXQgY29udHJvbCB0aGUgbWF4aW11bSBJQyBzdHViIHNpemUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuY3BwCmluZGV4IDg3NmNl
MzBlODkxMWQzZDYwYmM1ZWVmY2ZkMDkxOTJlNDMwODE2ODYuLmYwNDZhOWQzMzU4NmE0NWI1MjRm
NzNiMGM3M2VlYzUzZTI3OGZiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9WYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9WYWx1ZVByb2ZpbGUuY3BwCkBAIC0zNCwzMSArMzQsMjMgQEAgdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IFJlc3VsdFByb2ZpbGUmIHByb2ZpbGUpCiB7CiAg
ICAgY29uc3QgY2hhciogc2VwYXJhdG9yID0gIiI7CiAKLSAgICBpZiAoIXByb2ZpbGUuZGlkT2Jz
ZXJ2ZU5vbkludDMyKCkpIHsKLSAgICAgICAgb3V0LnByaW50KCJJbnQzMiIpOworICAgIGlmIChw
cm9maWxlLmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkpIHsKKyAgICAgICAgb3V0LnByaW50KHNl
cGFyYXRvciwgIk5lZ1plcm9Eb3VibGUiKTsKICAgICAgICAgc2VwYXJhdG9yID0gInwiOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIGlmIChwcm9maWxlLmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkp
IHsKLSAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJOZWdaZXJvRG91YmxlIik7Ci0g
ICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHByb2Zp
bGUuZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSkgewotICAgICAgICAgICAgb3V0LnByaW50
KCJOb25OZWdaZXJvRG91YmxlIik7Ci0gICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZU5vbk51bWJlcigpKSB7Ci0gICAg
ICAgICAgICBvdXQucHJpbnQoIk5vbk51bWJlciIpOwotICAgICAgICAgICAgc2VwYXJhdG9yID0g
InwiOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm9maWxlLmRpZE9ic2VydmVJbnQzMk92ZXJm
bG93KCkpIHsKLSAgICAgICAgICAgIG91dC5wcmludCgiSW50MzJPdmVyZmxvdyIpOwotICAgICAg
ICAgICAgc2VwYXJhdG9yID0gInwiOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm9maWxlLmRp
ZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkpIHsKLSAgICAgICAgICAgIG91dC5wcmludCgiSW50NTJP
dmVyZmxvdyIpOwotICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOwotICAgICAgICB9CiAgICAg
fQorICAgIGlmIChwcm9maWxlLmRpZE9ic2VydmVOb25OdW1iZXIoKSkgeworICAgICAgICBvdXQu
cHJpbnQoIk5vbk51bWJlciIpOworICAgICAgICBzZXBhcmF0b3IgPSAifCI7CisgICAgfQorICAg
IGlmIChwcm9maWxlLmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkpIHsKKyAgICAgICAgb3V0LnBy
aW50KCJJbnQzMk92ZXJmbG93Iik7CisgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsKKyAgICB9Cisg
ICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSkgeworICAgICAgICBvdXQu
cHJpbnQoIkludDUyT3ZlcmZsb3ciKTsKKyAgICAgICAgc2VwYXJhdG9yID0gInwiOworICAgIH0K
KwogICAgIGlmIChwcm9maWxlLnNwZWNpYWxGYXN0UGF0aENvdW50KCkpIHsKICAgICAgICAgb3V0
LnByaW50KCIgc3BlY2lhbCBmYXN0IHBhdGg6ICIpOwogICAgICAgICBvdXQucHJpbnQocHJvZmls
ZS5zcGVjaWFsRmFzdFBhdGhDb3VudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9WYWx1ZVByb2ZpbGUuaAppbmRleCA0OGI0N2RhN2M3ZTcyYWZjZjk0OTk5YTYxYjExNjRj
NmY2NTc5NzAyLi4xZmFjNmI0NjRmZWM4N2M3MTQ0ZDExMzFkYzc2NzE1MTZkOTQxYzJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCkBAIC0yMTgs
MjUgKzIxOCwyMCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgZW51bSBPYnNlcnZlZFJlc3VsdHMg
ewotICAgICAgICBOb25OZWdaZXJvRG91YmxlID0gMSA8PCAwLAotICAgICAgICBOZWdaZXJvRG91
YmxlICAgID0gMSA8PCAxLAotICAgICAgICBOb25OdW1iZXIgICAgICAgID0gMSA8PCAyLAotICAg
ICAgICBJbnQzMk92ZXJmbG93ICAgID0gMSA8PCAzLAotICAgICAgICBJbnQ1Mk92ZXJmbG93ICAg
ID0gMSA8PCA0LAorICAgICAgICBOZWdaZXJvRG91YmxlICAgID0gMSA8PCAwLAorICAgICAgICBO
b25OdW1iZXIgICAgICAgID0gMSA8PCAxLAorICAgICAgICBJbnQzMk92ZXJmbG93ICAgID0gMSA8
PCAyLAorICAgICAgICBJbnQ1Mk92ZXJmbG93ICAgID0gMSA8PCAzLAogICAgIH07CiAKICAgICBp
bnQgYnl0ZWNvZGVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0QW5kRmxh
Z3MgPj4gbnVtYmVyT2ZGbGFnQml0czsgfQogICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0UGF0aENv
dW50KCkgY29uc3QgeyByZXR1cm4gbV9zcGVjaWFsRmFzdFBhdGhDb3VudDsgfQogCi0gICAgYm9v
bCBkaWRPYnNlcnZlTm9uSW50MzIoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtYmVyKTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2
ZURvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1pl
cm9Eb3VibGUpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSgpIGNvbnN0
IHsgcmV0dXJuIGhhc0JpdHMoTm9uTmVnWmVyb0RvdWJsZSk7IH0KICAgICBib29sIGRpZE9ic2Vy
dmVOZWdaZXJvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOZWdaZXJvRG91YmxlKTsg
fQogICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWJlcigpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMo
Tm9uTnVtYmVyKTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7
IHJldHVybiBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlSW50
NTJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoSW50NTJPdmVyZmxvdyk7IH0KIAot
ICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoTm9uTmVnWmVy
b0RvdWJsZSk7IH0KICAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0
KE5lZ1plcm9Eb3VibGUpOyB9CiAgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWJlcigpIHsgc2V0
Qml0KE5vbk51bWJlcik7IH0KICAgICB2b2lkIHNldE9ic2VydmVkSW50MzJPdmVyZmxvdygpIHsg
c2V0Qml0KEludDMyT3ZlcmZsb3cpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDZjMTE5NDFmNWIwZDk3OTc0NjA0YTllYzIxOTNj
NTBkMWQ0NGJhOTMuLmMyMWFmYTFjMDcxMThmOTJiZDljZDJkNjNiZDk0MGEyMzgzZjVlMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBA
IC05MzQsOCArOTM0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZs
YWdzKE5vZGVNYXlPdmVyZmxvd0ludDMySW5CYXNlbGluZSk7CiAgICAgICAgICAgICBpZiAocmVz
dWx0UHJvZmlsZS5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykp
CiAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5TmVnWmVyb0luQmFzZWxp
bmUpOwotICAgICAgICAgICAgaWYgKHJlc3VsdFByb2ZpbGUuZGlkT2JzZXJ2ZU5vbkludDMyKCkp
Ci0gICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbkludFJlc3Vs
dCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCmluZGV4IDRiN2ZhOWIxYzg0ZTU2ZGI5ZmIyMzlkY2IzYzQ1Y2I5MjQ3OGM3MDEu
LjRmYjY5NGNiYjVmMjk4NmI4MTg0OTFjZWQ0ZTAzMTViY2RjNWQxZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCkBAIC05NTAsMTEgKzk1MCw2IEBAIHN0cnVjdCBOb2RlIHsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdCAmIH5Ob2RlQnl0ZWNvZGVOZWVkc05lZ1plcm87CiAgICAgfQog
Ci0gICAgYm9vbCBtYXlIYXZlTm9uSW50UmVzdWx0KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2ZsYWdzICYgTm9kZU1heUhhdmVOb25JbnRSZXN1bHQ7Ci0gICAgfQotCiAgICAgYm9vbCBoYXND
b25zdGFudEJ1ZmZlcigpCiAgICAgewogICAgICAgICByZXR1cm4gb3AoKSA9PSBOZXdBcnJheUJ1
ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcAppbmRleCA3
OWY0YjQzMDI0Y2E3OTNjYzU1Yjc4NzJmZjhiMWU0ZGI4NWRlZjNhLi40ODk0MjQyMmU4NTM3N2Rl
YmVkMGJhNWY4MzIwN2Y3YmM3NGJlZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVGbGFncy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlRmxhZ3MuY3BwCkBAIC04NSw5ICs4NSw2IEBAIHZvaWQgZHVtcE5vZGVGbGFncyhQcmlu
dFN0cmVhbSYgYWN0dWFsT3V0LCBOb2RlRmxhZ3MgZmxhZ3MpCiAgICAgICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJVc2VBc090aGVyIik7CiAgICAgfQogCi0gICAgaWYgKGZsYWdzICYgTm9kZU1h
eUhhdmVOb25JbnRSZXN1bHQpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIk1heUhhdmVOb25J
bnRSZXN1bHQiKTsKLQogICAgIGlmIChmbGFncyAmIE5vZGVNYXlPdmVyZmxvd0ludDUyKQogICAg
ICAgICBvdXQucHJpbnQoY29tbWEsICJNYXlPdmVyZmxvd0ludDUyIik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCmluZGV4IDYyNmI5YmIyYjUyMzUzOWUwOWU4NDhj
N2YwODQwODRjYzM0MzQzNjcuLjMwODY0MWU3MDY5MzBkYjZjZDBhMzg2YjdkMjZjNGEyODM0N2Mx
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaApAQCAtNDgsNyAr
NDgsNiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAjZGVmaW5lIE5vZGVIYXNW
YXJBcmdzICAgICAgICAgICAgICAgICAgIDB4MDAxMAogICAgIAogI2RlZmluZSBOb2RlQmVoYXZp
b3JNYXNrICAgICAgICAgICAgICAgICAweDA3ZTAKLSNkZWZpbmUgTm9kZU1heUhhdmVOb25JbnRS
ZXN1bHQgICAgICAgICAgMHgwMDIwCiAjZGVmaW5lIE5vZGVNYXlPdmVyZmxvd0ludDUyICAgICAg
ICAgICAgIDB4MDA0MAogI2RlZmluZSBOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUgICAw
eDAwODAKICNkZWZpbmUgTm9kZU1heU92ZXJmbG93SW50MzJJbkRGRyAgICAgICAgMHgwMTAwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDNiOTkyNzJhNTIwOWZjYmMwMTZiZmNiMTg4NzFmNWZh
NjYwMDQyODUuLmIxNGRjY2IwMmNlMzEwMjdmY2Q0ZDI1YjhhYTZkNTY3NTUxYzgxYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0yNzUsMTIgKzI3NSw4IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50NTJPbmx5
KTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oc3BlY3VsYXRlZERvdWJsZVR5cGVGb3JQcmVkaWN0aW9u
cyhsZWZ0LCByaWdodCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5tYXlIYXZlTm9uSW50UmVzdWx0KCkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzJPbmx5IHwgU3BlY0J5
dGVjb2RlRG91YmxlKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7Ci0gICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzJPbmx5IHwgU3BlY0J5dGVjb2Rl
RG91YmxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAKaW5kZXggYjFm
YjBiMGQwZGUyN2IyOTBkODlmOTk3NDQ3ZGEyZGQyYzAwMDlhZS4uMTU1MjcwNzBlYzQwMDYwM2Vj
YWIyZDdhMDIyNWZjMDQ2YmUwZWVlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUTXVsR2VuZXJhdG9yLmNwcApAQCAtMTUzLDcgKzE1Myw2IEBAIHZvaWQgSklUTXVsR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0KQogICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJv
LmxpbmsoJmppdCk7Ci0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KFJlc3VsdFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRl
QWRkcmVzcyhtX3Jlc3VsdFByb2ZpbGUtPmFkZHJlc3NPZkZsYWdzKCkpKTsKIAogICAgICAgICBq
aXQubW92ZShtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIGpp
dC51cnNoaWZ0UHRyKENDYWxsSGVscGVyczo6SW1tMzIoNTIpLCBtX3NjcmF0Y2hHUFIpOwpAQCAt
MTc1LDcgKzE3NCw2IEBAIHZvaWQgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKEND
YWxsSGVscGVycyYgaml0KQogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5q
dW1wKCk7CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAgIGpp
dC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKFJlc3VsdFByb2ZpbGU6Ok5vbk5lZ1pl
cm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhtX3Jlc3VsdFByb2ZpbGUt
PmFkZHJlc3NPZkZsYWdzKCkpKTsKIAogICAgICAgICBqaXQubW92ZShtX3Jlc3VsdC50YWdHUFIo
KSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgaml0LnVyc2hpZnRQdHIoQ0NhbGxIZWxwZXJzOjpJ
bW0zMig1MiAtIDMyKSwgbV9zY3JhdGNoR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGFkODMyN2ExODYxNjE2OWU5MmUw
NzdmZjk1Mjg5MjdhZDRkM2IwNWYuLjExZGQyZTJkMjczZGVjNzk1MWQ4MGRjNjQ4MGQ4NzhlYzFk
OWY3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtMzc4LDggKzM3OCw2IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVJlc3VsdFBy
b2ZpbGVGb3JCaW5hcnlBcml0aE9wKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjCiAg
ICAgICAgICAgICBpZiAoIWRvdWJsZVZhbCAmJiBzdGQ6OnNpZ25iaXQoZG91YmxlVmFsKSkKICAg
ICAgICAgICAgICAgICBwcm9maWxlLT5zZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKTsKICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHByb2ZpbGUtPnNldE9ic2VydmVkTm9uTmVn
WmVyb0RvdWJsZSgpOwotCiAgICAgICAgICAgICAgICAgLy8gVGhlIEludDUyIG92ZXJmbG93IGNo
ZWNrIGhlcmUgaW50ZW50aW9uYWxseSBvbWl0cyAxbGwgPDwgNTEgYXMgYSB2YWxpZCBuZWdhdGl2
ZSBJbnQ1MiB2YWx1ZS4KICAgICAgICAgICAgICAgICAvLyBUaGVyZWZvcmUsIHdlIHdpbGwgZ2V0
IGEgZmFsc2UgcG9zaXRpdmUgaWYgdGhlIHJlc3VsdCBpcyB0aGF0IHZhbHVlLiBUaGlzIGlzIGlu
dGVudGlvbmFsbHkKICAgICAgICAgICAgICAgICAvLyBkb25lIHRvIHNpbXBsaWZ5IHRoZSBjaGVj
a2luZyBhbGdvcml0aG0uCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278216</attachid>
            <date>2016-05-05 18:27:54 -0700</date>
            <delta_ts>2016-05-05 19:30:13 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-157399-20160505182835.patch</filename>
            <type>text/plain</type>
            <size>11969</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
Njk2ZDc2YjRhMzkzMWI0ZDZmMTk4MjRlZDZhNTJlM2RmOTE5YmY2Li4zNzNhNTIyNzI1YWMwZGYz
YmJhMTA4OWRiYzhkNzBkM2Q4N2RkZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxNi0wNS0wNSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBHZXQgcmlkIG9mIE5vbk5lZ1plcm9Eb3VibGUsIGl0IGlz
IGJyb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3Mzk5CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI1MzM5NjQ3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTWFyayBMYW0uCisKKyAgICAgICAgVGhlIHByb2ZpbGUgIk5vbk5lZ1plcm9Eb3VibGUi
IGlzIGZ1bmRhbWVudGFsbHkgYnJva2VuLgorCisgICAgICAgIEl0IGlzIHVzZWQgYnkgREZHIHRv
IHByZWRpY3QgdGhlIHJlc3VsdCBvZiBBcml0aE11bCBhcyBiZWluZyBhIERvdWJsZQorICAgICAg
ICBvciBJbnQzMi4KKyAgICAgICAgVGhlIHByb2JsZW0gaXMgeW91IGFyZSBsaWtlbHkgdG8gbWlz
cHJlZGljdCwgYW5kIHdoZW4geW91IGRvLCB5b3UgYXJlCisgICAgICAgIGd1YXJhbnRlZWQgdG8g
ZW5kIHVwIGluIGEgcmVjb21waWxlIGxvb3AuCisKKyAgICAgICAgVGhlIGNvbXBpbGUgbG9vcHMg
dXN1YWxseSBoYXBwZW4gbGlrZSB0aGlzOgorICAgICAgICAtV2Ugc3BlY3VsYXRlIHlvdSBoYXZl
IEludDMyIGRlc3BpdGUgcHJvZHVjaW5nIGRvdWJsZXMuCisgICAgICAgIC1XZSBPU1IgZXhpdCBv
biBhbm90aGVyIG5vZGUgKFZhbHVlVG9JbnQzMiBmb3IgZXhhbXBsZSkgZnJvbSB0aGUgcmVzdWx0
IG9mIHRoaXMgQXJpdGhNdWwuCisgICAgICAgIC1XaGVuIHdlIGNvbXBpbGUgdGhpcyBibG9jayBh
Z2FpbiwgQXJpdGhNdWwgd2lsbCBkbyB0aGUgc2FtZSBtaXNwcmVkaWN0aW9uCisgICAgICAgICBi
ZWNhdXNlIGl0IHVuY29uZGl0aW9uYWxseSBwcmVkaWN0cyBJbnQzMi4KKworICAgICAgICBUaGUg
ZmxhZyBOb25OZWdaZXJvRG91YmxlIHdhcyB2ZXJ5IHVubGlrZWx5IHRvIGJlIHNldCBjb3JyZWN0
bHkKKyAgICAgICAgaW4gdGhlIGZpcnN0IHBsYWNlLgorCisgICAgICAgIEluIExMSU5ULCB0aGUg
ZmxhZyBpcyBvbmx5IHNldCBvbiB0aGUgc2xvdyBwYXRoLgorICAgICAgICBTaW5jZSBkb3VibGUq
ZG91YmxlIGlzIG9uIHRoZSBmYXN0IHBhdGgsIHRob3NlIGNhc2VzIGFyZSBpZ25vcmVkLgorCisg
ICAgICAgIEluIEJhc2VsaW5lLCB0aGUgZmxhZyBpcyBzZXQgZm9yIGFueSBjYXNlIHRoYXQgZmFs
bHMgYmFjayBvbiBkb3VibGUKKyAgICAgICAgbXVsdGlwbGljYXRpb24uIEJVVCwgdGhlIERGRyBm
bGFnIHdhcyBvbmx5IHNldCBmb3Igbm9kZXMgdGhhdCBzcGVuZAorICAgICAgICBtYW55IGl0ZXJh
dGlvbiBpbiBzbG93IHBhdGgsIHdoaWNoIG9idmlvdXNseSBkb2VzIG5vdCBhcHBseSB0byBkb3Vi
bGUqZG91YmxlLgorCisgICAgICAgIEdpdmVuIHRoZSBwZXJmIGRyYXdiYWNrcyBhbmQgdGhlIHJl
Y29tcGlsZSBsb29wcywgSSByZW1vdmVkCisgICAgICAgIHRoZSB3aG9sZSBmbGFnIGZvciBub3cu
CisKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuY3BwOgorICAgICAgICAoV1RGOjpw
cmludEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAg
ICAgKEpTQzo6UmVzdWx0UHJvZmlsZTo6ZGlkT2JzZXJ2ZU5vbkludDMyKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6UmVzdWx0UHJvZmlsZTo6ZGlkT2JzZXJ2ZURvdWJsZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OlJlc3VsdFByb2ZpbGU6OmRpZE9ic2VydmVOb25OZWdaZXJvRG91YmxlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVzdWx0UHJvZmlsZTo6c2V0T2JzZXJ2ZWROb25OZWda
ZXJvRG91YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjptYWtlU2FmZSk6IERlbGV0ZWQu
CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjptYXlI
YXZlTm9uSW50UmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZUZsYWdzLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpkdW1wTm9kZUZsYWdzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBkZmcvREZHTm9kZUZsYWdzLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBqaXQvSklUTXVsR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OnVwZGF0
ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKTogRGVsZXRlZC4KKwogMjAxNi0wNS0wNSAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjIwMDQyMik6IFdlYiBJbnNwZWN0b3I6IE1ha2UgbmV3IEFycmF5IEl0ZXJhdG9yIG9iamVj
dHMgcGxheSBuaWNlIHdpdGggV2ViIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmNwcAppbmRleCA4NzZjZTMwZTg5MTFkM2Q2MGJjNWVl
ZmNmZDA5MTkyZTQzMDgxNjg2Li5mMDQ2YTlkMzM1ODZhNDViNTI0ZjczYjBjNzNlZWM1M2UyNzhm
YjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9m
aWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxl
LmNwcApAQCAtMzQsMzEgKzM0LDIzIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBjb25zdCBSZXN1bHRQcm9maWxlJiBwcm9maWxlKQogewogICAgIGNvbnN0IGNoYXIqIHNl
cGFyYXRvciA9ICIiOwogCi0gICAgaWYgKCFwcm9maWxlLmRpZE9ic2VydmVOb25JbnQzMigpKSB7
Ci0gICAgICAgIG91dC5wcmludCgiSW50MzIiKTsKKyAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZl
TmVnWmVyb0RvdWJsZSgpKSB7CisgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJOZWdaZXJv
RG91YmxlIik7CiAgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsKLSAgICB9IGVsc2UgewotICAgICAg
ICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpKSB7Ci0gICAgICAgICAgICBv
dXQucHJpbnQoc2VwYXJhdG9yLCAiTmVnWmVyb0RvdWJsZSIpOwotICAgICAgICAgICAgc2VwYXJh
dG9yID0gInwiOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm9maWxlLmRpZE9ic2VydmVOb25O
ZWdaZXJvRG91YmxlKCkpIHsKLSAgICAgICAgICAgIG91dC5wcmludCgiTm9uTmVnWmVyb0RvdWJs
ZSIpOwotICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChwcm9maWxlLmRpZE9ic2VydmVOb25OdW1iZXIoKSkgewotICAgICAgICAgICAgb3V0LnByaW50
KCJOb25OdW1iZXIiKTsKLSAgICAgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsKLSAgICAgICAgfQot
ICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpKSB7Ci0gICAgICAg
ICAgICBvdXQucHJpbnQoIkludDMyT3ZlcmZsb3ciKTsKLSAgICAgICAgICAgIHNlcGFyYXRvciA9
ICJ8IjsKLSAgICAgICAgfQotICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlSW50NTJPdmVy
ZmxvdygpKSB7Ci0gICAgICAgICAgICBvdXQucHJpbnQoIkludDUyT3ZlcmZsb3ciKTsKLSAgICAg
ICAgICAgIHNlcGFyYXRvciA9ICJ8IjsKLSAgICAgICAgfQogICAgIH0KKyAgICBpZiAocHJvZmls
ZS5kaWRPYnNlcnZlTm9uTnVtYmVyKCkpIHsKKyAgICAgICAgb3V0LnByaW50KCJOb25OdW1iZXIi
KTsKKyAgICAgICAgc2VwYXJhdG9yID0gInwiOworICAgIH0KKyAgICBpZiAocHJvZmlsZS5kaWRP
YnNlcnZlSW50MzJPdmVyZmxvdygpKSB7CisgICAgICAgIG91dC5wcmludCgiSW50MzJPdmVyZmxv
dyIpOworICAgICAgICBzZXBhcmF0b3IgPSAifCI7CisgICAgfQorICAgIGlmIChwcm9maWxlLmRp
ZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkpIHsKKyAgICAgICAgb3V0LnByaW50KCJJbnQ1Mk92ZXJm
bG93Iik7CisgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsKKyAgICB9CisKICAgICBpZiAocHJvZmls
ZS5zcGVjaWFsRmFzdFBhdGhDb3VudCgpKSB7CiAgICAgICAgIG91dC5wcmludCgiIHNwZWNpYWwg
ZmFzdCBwYXRoOiAiKTsKICAgICAgICAgb3V0LnByaW50KHByb2ZpbGUuc3BlY2lhbEZhc3RQYXRo
Q291bnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFs
dWVQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxl
LmgKaW5kZXggNDhiNDdkYTdjN2U3MmFmY2Y5NDk5OWE2MWIxMTY0YzZmNjU3OTcwMi4uMWZhYzZi
NDY0ZmVjODdjNzE0NGQxMTMxZGM3NjcxNTE2ZDk0MWMyYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaApAQCAtMjE4LDI1ICsyMTgsMjAgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIGVudW0gT2JzZXJ2ZWRSZXN1bHRzIHsKLSAgICAgICAgTm9uTmVn
WmVyb0RvdWJsZSA9IDEgPDwgMCwKLSAgICAgICAgTmVnWmVyb0RvdWJsZSAgICA9IDEgPDwgMSwK
LSAgICAgICAgTm9uTnVtYmVyICAgICAgICA9IDEgPDwgMiwKLSAgICAgICAgSW50MzJPdmVyZmxv
dyAgICA9IDEgPDwgMywKLSAgICAgICAgSW50NTJPdmVyZmxvdyAgICA9IDEgPDwgNCwKKyAgICAg
ICAgTmVnWmVyb0RvdWJsZSAgICA9IDEgPDwgMCwKKyAgICAgICAgTm9uTnVtYmVyICAgICAgICA9
IDEgPDwgMSwKKyAgICAgICAgSW50MzJPdmVyZmxvdyAgICA9IDEgPDwgMiwKKyAgICAgICAgSW50
NTJPdmVyZmxvdyAgICA9IDEgPDwgMywKICAgICB9OwogCiAgICAgaW50IGJ5dGVjb2RlT2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldEFuZEZsYWdzID4+IG51bWJlck9mRmxh
Z0JpdHM7IH0KICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdFBhdGhDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3BlY2lhbEZhc3RQYXRoQ291bnQ7IH0KIAotICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbklu
dDMyKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0Rv
dWJsZSB8IE5vbk51bWJlcik7IH0KLSAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25zdCB7
IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQotICAg
IGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRz
KE5vbk5lZ1plcm9Eb3VibGUpOyB9CiAgICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgp
IGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVnWmVyb0RvdWJsZSk7IH0KICAgICBib29sIGRpZE9i
c2VydmVOb25OdW1iZXIoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk51bWJlcik7IH0KICAg
ICBib29sIGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhJ
bnQzMk92ZXJmbG93KTsgfQogICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSBjb25z
dCB7IHJldHVybiBoYXNCaXRzKEludDUyT3ZlcmZsb3cpOyB9CiAKLSAgICB2b2lkIHNldE9ic2Vy
dmVkTm9uTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5vbk5lZ1plcm9Eb3VibGUpOyB9CiAgICAg
dm9pZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChOZWdaZXJvRG91YmxlKTsg
fQogICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OdW1iZXIoKSB7IHNldEJpdChOb25OdW1iZXIpOyB9
CiAgICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChJbnQzMk92ZXJm
bG93KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAppbmRleCA2YzExOTQxZjViMGQ5Nzk3NDYwNGE5ZWMyMTkzYzUwZDFkNDRiYTkzLi5jMjFh
ZmExYzA3MTE4ZjkyYmQ5Y2QyZDYzYmQ5NDBhMjM4M2Y1ZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtOTM0LDggKzkzNCw2IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZs
b3dJbnQzMkluQmFzZWxpbmUpOwogICAgICAgICAgICAgaWYgKHJlc3VsdFByb2ZpbGUuZGlkT2Jz
ZXJ2ZU5lZ1plcm9Eb3VibGUoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQogICAgICAgICAgICAgICAg
IG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU5lZ1plcm9JbkJhc2VsaW5lKTsKLSAgICAgICAgICAg
IGlmIChyZXN1bHRQcm9maWxlLmRpZE9ic2VydmVOb25JbnQzMigpKQotICAgICAgICAgICAgICAg
IG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25JbnRSZXN1bHQpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCA0
YjdmYTliMWM4NGU1NmRiOWZiMjM5ZGNiM2M0NWNiOTI0NzhjNzAxLi40ZmI2OTRjYmI1ZjI5ODZi
ODE4NDkxY2VkNGUwMzE1YmNkYzVkMWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aApAQCAtOTUwLDExICs5NTAsNiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiByZXN1
bHQgJiB+Tm9kZUJ5dGVjb2RlTmVlZHNOZWdaZXJvOwogICAgIH0KIAotICAgIGJvb2wgbWF5SGF2
ZU5vbkludFJlc3VsdCgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9mbGFncyAmIE5vZGVNYXlI
YXZlTm9uSW50UmVzdWx0OwotICAgIH0KLQogICAgIGJvb2wgaGFzQ29uc3RhbnRCdWZmZXIoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gTmV3QXJyYXlCdWZmZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5jcHAKaW5kZXggNzlmNGI0MzAyNGNhNzkzY2M1
NWI3ODcyZmY4YjFlNGRiODVkZWYzYS4uNDg5NDI0MjJlODUzNzdkZWJlZDBiYTVmODMyMDdmN2Jj
NzRiZWVlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxh
Z3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmNwcApA
QCAtODUsOSArODUsNiBAQCB2b2lkIGR1bXBOb2RlRmxhZ3MoUHJpbnRTdHJlYW0mIGFjdHVhbE91
dCwgTm9kZUZsYWdzIGZsYWdzKQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiVXNlQXNP
dGhlciIpOwogICAgIH0KIAotICAgIGlmIChmbGFncyAmIE5vZGVNYXlIYXZlTm9uSW50UmVzdWx0
KQotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJNYXlIYXZlTm9uSW50UmVzdWx0Iik7Ci0KICAg
ICBpZiAoZmxhZ3MgJiBOb2RlTWF5T3ZlcmZsb3dJbnQ1MikKICAgICAgICAgb3V0LnByaW50KGNv
bW1hLCAiTWF5T3ZlcmZsb3dJbnQ1MiIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlRmxhZ3MuaAppbmRleCA2MjZiOWJiMmI1MjM1MzllMDllODQ4YzdmMDg0MDg0Y2MzNDM0MzY3
Li4zMDg2NDFlNzA2OTMwZGI2Y2QwYTM4NmI3ZDI2YzRhMjgzNDdjMTVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKQEAgLTQ4LDcgKzQ4LDYgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogI2RlZmluZSBOb2RlSGFzVmFyQXJncyAgICAgICAgICAg
ICAgICAgICAweDAwMTAKICAgICAKICNkZWZpbmUgTm9kZUJlaGF2aW9yTWFzayAgICAgICAgICAg
ICAgICAgMHgwN2UwCi0jZGVmaW5lIE5vZGVNYXlIYXZlTm9uSW50UmVzdWx0ICAgICAgICAgIDB4
MDAyMAogI2RlZmluZSBOb2RlTWF5T3ZlcmZsb3dJbnQ1MiAgICAgICAgICAgICAweDAwNDAKICNk
ZWZpbmUgTm9kZU1heU92ZXJmbG93SW50MzJJbkJhc2VsaW5lICAgMHgwMDgwCiAjZGVmaW5lIE5v
ZGVNYXlPdmVyZmxvd0ludDMySW5ERkcgICAgICAgIDB4MDEwMApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAppbmRleCAzYjk5MjcyYTUyMDlmY2JjMDE2YmZjYjE4ODcxZjVmYTY2MDA0Mjg1Li5iMTRkY2Ni
MDJjZTMxMDI3ZmNkNGQyNWI4YWE2ZDU2NzU1MWM4MWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cApAQCAtMjc1LDEyICsyNzUsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDUyT25seSk7CiAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKHNwZWN1bGF0ZWREb3VibGVUeXBlRm9yUHJlZGljdGlvbnMobGVmdCwgcmlnaHQpKTsK
LSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
bWF5SGF2ZU5vbkludFJlc3VsdCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyT25seSB8IFNwZWNCeXRlY29kZURvdWJsZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24oU3BlY0ludDMyT25seSB8IFNwZWNCeXRlY29kZURvdWJsZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCmluZGV4IGIxZmIwYjBkMGRlMjdiMjkwZDg5
Zjk5NzQ0N2RhMmRkMmMwMDA5YWUuLjE1NTI3MDcwZWM0MDA2MDNlY2FiMmQ3YTAyMjVmYzA0NmJl
MGVlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5j
cHAKQEAgLTE1Myw3ICsxNTMsNiBAQCB2b2lkIEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0
UGF0aChDQ2FsbEhlbHBlcnMmIGppdCkKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUg
PSBqaXQuanVtcCgpOwogCiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5saW5rKCZqaXQpOwotICAg
ICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihSZXN1bHRQcm9maWxlOjpO
b25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MobV9yZXN1bHRQ
cm9maWxlLT5hZGRyZXNzT2ZGbGFncygpKSk7CiAKICAgICAgICAgaml0Lm1vdmUobV9yZXN1bHQu
cGF5bG9hZEdQUigpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBqaXQudXJzaGlmdFB0cihDQ2Fs
bEhlbHBlcnM6OkltbTMyKDUyKSwgbV9zY3JhdGNoR1BSKTsKQEAgLTE3NSw3ICsxNzQsNiBAQCB2
b2lkIEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCkK
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwogCiAgICAgICAg
IG5vdE5lZ2F0aXZlWmVyby5saW5rKCZqaXQpOwotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihSZXN1bHRQcm9maWxlOjpOb25OZWdaZXJvRG91YmxlKSwgQ0NhbGxI
ZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MobV9yZXN1bHRQcm9maWxlLT5hZGRyZXNzT2ZGbGFncygp
KSk7CiAKICAgICAgICAgaml0Lm1vdmUobV9yZXN1bHQudGFnR1BSKCksIG1fc2NyYXRjaEdQUik7
CiAgICAgICAgIGppdC51cnNoaWZ0UHRyKENDYWxsSGVscGVyczo6SW1tMzIoNTIgLSAzMiksIG1f
c2NyYXRjaEdQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcAppbmRleCBhZDgzMjdhMTg2MTYxNjllOTJlMDc3ZmY5NTI4OTI3YWQ0ZDNi
MDVmLi4xMWRkMmUyZDI3M2RlYzc5NTFkODBkYzY0ODBkODc4ZWMxZDlmNzYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM3
OCw4ICszNzgsNiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVSZXN1bHRQcm9maWxlRm9yQmluYXJ5QXJp
dGhPcChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYwogICAgICAgICAgICAgaWYgKCFk
b3VibGVWYWwgJiYgc3RkOjpzaWduYml0KGRvdWJsZVZhbCkpCiAgICAgICAgICAgICAgICAgcHJv
ZmlsZS0+c2V0T2JzZXJ2ZWROZWdaZXJvRG91YmxlKCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBwcm9maWxlLT5zZXRPYnNlcnZlZE5vbk5lZ1plcm9Eb3VibGUoKTsKLQog
ICAgICAgICAgICAgICAgIC8vIFRoZSBJbnQ1MiBvdmVyZmxvdyBjaGVjayBoZXJlIGludGVudGlv
bmFsbHkgb21pdHMgMWxsIDw8IDUxIGFzIGEgdmFsaWQgbmVnYXRpdmUgSW50NTIgdmFsdWUuCiAg
ICAgICAgICAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSB3aWxsIGdldCBhIGZhbHNlIHBvc2l0aXZl
IGlmIHRoZSByZXN1bHQgaXMgdGhhdCB2YWx1ZS4gVGhpcyBpcyBpbnRlbnRpb25hbGx5CiAgICAg
ICAgICAgICAgICAgLy8gZG9uZSB0byBzaW1wbGlmeSB0aGUgY2hlY2tpbmcgYWxnb3JpdGhtLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>