<?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>64942</bug_id>
          
          <creation_ts>2011-07-21 07:26:20 -0700</creation_ts>
          <short_desc>[chromium] incorrect 3D CSS anti-aliasing</short_desc>
          <delta_ts>2011-08-05 13:02:33 -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>WebCore Misc.</component>
          <version>528+ (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>
          
          <blocked>65037</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Reveman">reveman</reporter>
          <assigned_to name="David Reveman">reveman</assigned_to>
          <cc>alokp</cc>
    
    <cc>bsalomon</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>jianli</cc>
    
    <cc>senorblanco</cc>
    
    <cc>vangelis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>440394</commentid>
    <comment_count>0</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-07-21 07:26:20 -0700</bug_when>
    <thetext>We should use an edge distance based method instead of the current linear filtering method for producing anti-aliased edges on 3D transformed layers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440751</commentid>
    <comment_count>1</comment_count>
      <attachid>101677</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-07-21 17:38:44 -0700</bug_when>
    <thetext>Created attachment 101677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440944</commentid>
    <comment_count>2</comment_count>
      <attachid>101732</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-07-22 07:43:22 -0700</bug_when>
    <thetext>Created attachment 101732
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440975</commentid>
    <comment_count>3</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-07-22 09:04:47 -0700</bug_when>
    <thetext>This patch is not ready to land yet but some feedback on the current version would be appreciated.

It affects more layout tests than the ones added to test_exceptions.txt. I&apos;ve only added the ones that will necessarily change. 

I haven&apos;t moved any of the edge intersection code into the vertex shader as I&apos;m not sure how to do that without increasing the number of uniforms.

The fragment shader is relatively simple but it&apos;s probably worth using a different shader in the case where we don&apos;t have to produce anti-aliased edges. Current patch doesn&apos;t do this.

The same tile size is now used for all tiles in a layer. I&apos;m clamping texture coordinates in the fragment shader to make sure that we&apos;re not sampling outside the contents region of a tile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441027</commentid>
    <comment_count>4</comment_count>
    <who name="Brian Salomon">bsalomon</who>
    <bug_when>2011-07-22 11:07:24 -0700</bug_when>
    <thetext>Meta-comment: The layer update current code requires each tile in accelerated drawing to be the same size in order to share a stencil buffer via a single DrawingBuffer. In the M15 timeframe this won&apos;t be a requirement at all. Skia will create stencil-buffers on demand and mixed tiles won&apos;t be a problem. Is it worth doing significant changes to make accelerated drawing work for M14? Another option is to disable the flag for M14.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441042</commentid>
    <comment_count>5</comment_count>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-07-22 11:19:21 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Meta-comment: The layer update current code requires each tile in accelerated drawing to be the same size in order to share a stencil buffer via a single DrawingBuffer. In the M15 timeframe this won&apos;t be a requirement at all. Skia will create stencil-buffers on demand and mixed tiles won&apos;t be a problem. 

Is this still true for pure GLES2 implementation? I thought gles2 requires all buffers in an FBO to be of the same size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441044</commentid>
    <comment_count>6</comment_count>
    <who name="Brian Salomon">bsalomon</who>
    <bug_when>2011-07-22 11:24:56 -0700</bug_when>
    <thetext>That is true, but if skia is managing the buffers it will see the edge tiles&apos; sizes are different, create a stencil for them, and put it in its cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441047</commentid>
    <comment_count>7</comment_count>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-07-22 11:27:00 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; That is true, but if skia is managing the buffers it will see the edge tiles&apos; sizes are different, create a stencil for them, and put it in its cache.

Which means skia will have to create fewer stencil buffers if texture sizes are same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441050</commentid>
    <comment_count>8</comment_count>
    <who name="Brian Salomon">bsalomon</who>
    <bug_when>2011-07-22 11:30:43 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; That is true, but if skia is managing the buffers it will see the edge tiles&apos; sizes are different, create a stencil for them, and put it in its cache.
&gt; 
&gt; Which means skia will have to create fewer stencil buffers if texture sizes are same.

Yes. I assume the top/left tiles aligned so worst case would be 4 stencils (full size, right edge, bottom edge, and bottom/right corner). I also hope we are able to use the more relaxed fbo completeness rules in chrome on desktop hw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441056</commentid>
    <comment_count>9</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-07-22 11:44:53 -0700</bug_when>
    <thetext>I will also point out that the tiler has some code to try to reuse tile textures.  If tiles are not going to be the same size, that code should be stripped out.

My personal feeling is that we should make all tiles the same size, because it makes life simpler and we will (likely) have fewer floating point inconsistencies in testing for tests where texture coordinates (1/texture size) cannot be represented exactly for some texture sizes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441088</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-22 12:24:34 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Meta-comment: The layer update current code requires each tile in accelerated drawing to be the same size in order to share a stencil buffer via a single DrawingBuffer. In the M15 timeframe this won&apos;t be a requirement at all. Skia will create stencil-buffers on demand and mixed tiles won&apos;t be a problem. Is it worth doing significant changes to make accelerated drawing work for M14? Another option is to disable the flag for M14.

I don&apos;t think --accelerated-drawing is a priority for M14, so don&apos;t worry about it too much in that context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442000</commentid>
    <comment_count>11</comment_count>
      <attachid>101945</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-07-25 17:07:00 -0700</bug_when>
    <thetext>Created attachment 101945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442332</commentid>
    <comment_count>12</comment_count>
      <attachid>102020</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-07-26 10:10:39 -0700</bug_when>
    <thetext>Created attachment 102020
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442335</commentid>
    <comment_count>13</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-07-26 10:11:42 -0700</bug_when>
    <thetext>I&apos;m comfortable landing the current patch. It adds a few instructions to the fragment shader used for all tile rendering which I don&apos;t think will have any performance impact but without a good set of performance tests it&apos;s hard to know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442363</commentid>
    <comment_count>14</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-07-26 10:59:43 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I&apos;m comfortable landing the current patch. It adds a few instructions to the fragment shader used for all tile rendering which I don&apos;t think will have any performance impact but without a good set of performance tests it&apos;s hard to know.

Have we measured the performance impact of edge-AA on lower end devices (e.g. on CrOS devices).  Is it something we want to enable on demand?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442523</commentid>
    <comment_count>15</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-07-26 14:16:44 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; I&apos;m comfortable landing the current patch. It adds a few instructions to the fragment shader used for all tile rendering which I don&apos;t think will have any performance impact but without a good set of performance tests it&apos;s hard to know.
&gt; 
&gt; Have we measured the performance impact of edge-AA on lower end devices (e.g. on CrOS devices).  Is it something we want to enable on demand?

I don&apos;t think this is something we want to enable on a per device bases. If it has a measurable performance impact it shouldn&apos;t be significant enough that we would consider aliased output.

My only concern is that this anti-aliasing code is currently used for all tiled layers. Including the root layer, which obviously doesn&apos;t need anti-aliasing. I like using the same code path for everything but there might be cases where this has a small negative performance impact. So far I haven&apos;t found a page where this is the case on any of my cros devices.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442556</commentid>
    <comment_count>16</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-07-26 15:00:13 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; (In reply to comment #13)
&gt; &gt; &gt; I&apos;m comfortable landing the current patch. It adds a few instructions to the fragment shader used for all tile rendering which I don&apos;t think will have any performance impact but without a good set of performance tests it&apos;s hard to know.
&gt; &gt; 
&gt; &gt; Have we measured the performance impact of edge-AA on lower end devices (e.g. on CrOS devices).  Is it something we want to enable on demand?
&gt; 
&gt; I don&apos;t think this is something we want to enable on a per device bases. If it has a measurable performance impact it shouldn&apos;t be significant enough that we would consider aliased output.
&gt; 
&gt; My only concern is that this anti-aliasing code is currently used for all tiled layers. Including the root layer, which obviously doesn&apos;t need anti-aliasing. I like using the same code path for everything but there might be cases where this has a small negative performance impact. So far I haven&apos;t found a page where this is the case on any of my cros devices.

The fact that we&apos;re using it for all tiled layers including the root makes me think that we&apos;d want to have an option to turn it off. There are devices that we want to squeeze as much performance out of them, or have weak (read:non-existent) vector units, or possibly the resolution is such that AA wouldn&apos;t matter.  Would it be hard to also provide the old shaders and drawing code alongside the new ones?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443502</commentid>
    <comment_count>17</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-07-28 08:16:59 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; (In reply to comment #14)
&gt; &gt; &gt; (In reply to comment #13)
&gt; &gt; &gt; &gt; I&apos;m comfortable landing the current patch. It adds a few instructions to the fragment shader used for all tile rendering which I don&apos;t think will have any performance impact but without a good set of performance tests it&apos;s hard to know.
&gt; &gt; &gt; 
&gt; &gt; &gt; Have we measured the performance impact of edge-AA on lower end devices (e.g. on CrOS devices).  Is it something we want to enable on demand?
&gt; &gt; 
&gt; &gt; I don&apos;t think this is something we want to enable on a per device bases. If it has a measurable performance impact it shouldn&apos;t be significant enough that we would consider aliased output.
&gt; &gt; 
&gt; &gt; My only concern is that this anti-aliasing code is currently used for all tiled layers. Including the root layer, which obviously doesn&apos;t need anti-aliasing. I like using the same code path for everything but there might be cases where this has a small negative performance impact. So far I haven&apos;t found a page where this is the case on any of my cros devices.
&gt; 
&gt; The fact that we&apos;re using it for all tiled layers including the root makes me think that we&apos;d want to have an option to turn it off. There are devices that we want to squeeze as much performance out of them, or have weak (read:non-existent) vector units, or possibly the resolution is such that AA wouldn&apos;t matter.  Would it be hard to also provide the old shaders and drawing code alongside the new ones?

No, not hard. If there&apos;s cases like these where we want to turn off AA we probably also want to turn off linear filtering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443514</commentid>
    <comment_count>18</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-07-28 09:17:28 -0700</bug_when>
    <thetext>(In reply to comment #17)

&gt; No, not hard. If there&apos;s cases like these where we want to turn off AA we probably also want to turn off linear filtering.

Not necessarily? On a lot of hardware, bilinear filtering is as free as nearest neighbor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443518</commentid>
    <comment_count>19</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-07-28 09:33:42 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; 
&gt; &gt; No, not hard. If there&apos;s cases like these where we want to turn off AA we probably also want to turn off linear filtering.
&gt; 
&gt; Not necessarily? On a lot of hardware, bilinear filtering is as free as nearest neighbor.

Sure, turning off linear filtering would be more for consistency than performance. If the edges are aliased, I prefer the interior to be aliased too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443560</commentid>
    <comment_count>20</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-07-28 10:53:07 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; (In reply to comment #17)
&gt; &gt; 
&gt; &gt; &gt; No, not hard. If there&apos;s cases like these where we want to turn off AA we probably also want to turn off linear filtering.
&gt; &gt; 
&gt; &gt; Not necessarily? On a lot of hardware, bilinear filtering is as free as nearest neighbor.
&gt; 
&gt; Sure, turning off linear filtering would be more for consistency than performance. If the edges are aliased, I prefer the interior to be aliased too.

There&apos;s a lot of cases where the composited layer&apos;s edges aren&apos;t really visible.  For example if the background color is the same as that of the target surface or it&apos;s transparent.

I would prefer to keep filtering on always and just have the option to turn of edge AA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443562</commentid>
    <comment_count>21</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-28 11:05:15 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; (In reply to comment #17)
&gt; &gt; 
&gt; &gt; &gt; No, not hard. If there&apos;s cases like these where we want to turn off AA we probably also want to turn off linear filtering.
&gt; &gt; 
&gt; &gt; Not necessarily? On a lot of hardware, bilinear filtering is as free as nearest neighbor.
&gt; 
&gt; Sure, turning off linear filtering would be more for consistency than performance. If the edges are aliased, I prefer the interior to be aliased too.

We have to be able to scale without antialiasing the edges.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443648</commentid>
    <comment_count>22</comment_count>
      <attachid>102296</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-07-28 14:02:07 -0700</bug_when>
    <thetext>Created attachment 102296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443649</commentid>
    <comment_count>23</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-07-28 14:14:00 -0700</bug_when>
    <thetext>New patch only uses the more complicated anti-aliasing shader when necessary. We would need a different fragment shader to do aliased edges on linear filtered transformed tiles as we would otherwise incorrectly sample outside the layer region of tile textures. But that&apos;s a relatively small change for us to do when we need that functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443652</commentid>
    <comment_count>24</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-07-28 14:16:51 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #19)
&gt; &gt; (In reply to comment #18)
&gt; &gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; No, not hard. If there&apos;s cases like these where we want to turn off AA we probably also want to turn off linear filtering.
&gt; &gt; &gt; 
&gt; &gt; &gt; Not necessarily? On a lot of hardware, bilinear filtering is as free as nearest neighbor.
&gt; &gt; 
&gt; &gt; Sure, turning off linear filtering would be more for consistency than performance. If the edges are aliased, I prefer the interior to be aliased too.
&gt; 
&gt; We have to be able to scale without antialiasing the edges.

Are you saying we need that for a different reason than performance? Please provide some more details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443703</commentid>
    <comment_count>25</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-28 16:29:54 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; (In reply to comment #18)
&gt; &gt; &gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; No, not hard. If there&apos;s cases like these where we want to turn off AA we probably also want to turn off linear filtering.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Not necessarily? On a lot of hardware, bilinear filtering is as free as nearest neighbor.
&gt; &gt; &gt; 
&gt; &gt; &gt; Sure, turning off linear filtering would be more for consistency than performance. If the edges are aliased, I prefer the interior to be aliased too.
&gt; &gt; 
&gt; &gt; We have to be able to scale without antialiasing the edges.
&gt; 
&gt; Are you saying we need that for a different reason than performance? Please provide some more details.

As Vangelis said, sometimes the edges aren&apos;t visible (for example with the root layer).  If we want to disable edge AA for those layers when scaling, then we obviously still need linear filtering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443931</commentid>
    <comment_count>26</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-07-29 07:10:29 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; &gt; (In reply to comment #18)
&gt; &gt; &gt; &gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; No, not hard. If there&apos;s cases like these where we want to turn off AA we probably also want to turn off linear filtering.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Not necessarily? On a lot of hardware, bilinear filtering is as free as nearest neighbor.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Sure, turning off linear filtering would be more for consistency than performance. If the edges are aliased, I prefer the interior to be aliased too.
&gt; &gt; &gt; 
&gt; &gt; &gt; We have to be able to scale without antialiasing the edges.
&gt; &gt; 
&gt; &gt; Are you saying we need that for a different reason than performance? Please provide some more details.
&gt; 
&gt; As Vangelis said, sometimes the edges aren&apos;t visible (for example with the root layer).  If we want to disable edge AA for those layers when scaling, then we obviously still need linear filtering.

Ah, yes if we have a non-aa shader, we can use it in all cases where it produces the same output as the anti-aliasing shader. Current patch does that for integer translation but it can easily be made to use the non-aa shader for special case scaling too. However, this is all just for performance. We don&apos;t *have* to be able to scale without anti-aliasing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444024</commentid>
    <comment_count>27</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-07-29 11:34:02 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; (In reply to comment #24)
&gt; &gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; &gt; &gt; (In reply to comment #18)
&gt; &gt; &gt; &gt; &gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; &gt; No, not hard. If there&apos;s cases like these where we want to turn off AA we probably also want to turn off linear filtering.
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Not necessarily? On a lot of hardware, bilinear filtering is as free as nearest neighbor.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Sure, turning off linear filtering would be more for consistency than performance. If the edges are aliased, I prefer the interior to be aliased too.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; We have to be able to scale without antialiasing the edges.
&gt; &gt; &gt; 
&gt; &gt; &gt; Are you saying we need that for a different reason than performance? Please provide some more details.
&gt; &gt; 
&gt; &gt; As Vangelis said, sometimes the edges aren&apos;t visible (for example with the root layer).  If we want to disable edge AA for those layers when scaling, then we obviously still need linear filtering.
&gt; 
&gt; Ah, yes if we have a non-aa shader, we can use it in all cases where it produces the same output as the anti-aliasing shader. Current patch does that for integer translation but it can easily be made to use the non-aa shader for special case scaling too. However, this is all just for performance. We don&apos;t *have* to be able to scale without anti-aliasing.

There&apos;s the case where edge AA won&apos;t make a difference (e.g. axis aligned layers) but also there could be platforms where edge AA is either not required or the speed vs quality tradeoffs are don&apos;t warrant it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444038</commentid>
    <comment_count>28</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-07-29 12:11:15 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; (In reply to comment #25)
&gt; &gt; &gt; (In reply to comment #24)
&gt; &gt; &gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; &gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; &gt; &gt; &gt; (In reply to comment #18)
&gt; &gt; &gt; &gt; &gt; &gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; No, not hard. If there&apos;s cases like these where we want to turn off AA we probably also want to turn off linear filtering.
&gt; &gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; &gt; Not necessarily? On a lot of hardware, bilinear filtering is as free as nearest neighbor.
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Sure, turning off linear filtering would be more for consistency than performance. If the edges are aliased, I prefer the interior to be aliased too.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; We have to be able to scale without antialiasing the edges.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Are you saying we need that for a different reason than performance? Please provide some more details.
&gt; &gt; &gt; 
&gt; &gt; &gt; As Vangelis said, sometimes the edges aren&apos;t visible (for example with the root layer).  If we want to disable edge AA for those layers when scaling, then we obviously still need linear filtering.
&gt; &gt; 
&gt; &gt; Ah, yes if we have a non-aa shader, we can use it in all cases where it produces the same output as the anti-aliasing shader. Current patch does that for integer translation but it can easily be made to use the non-aa shader for special case scaling too. However, this is all just for performance. We don&apos;t *have* to be able to scale without anti-aliasing.
&gt; 
&gt; There&apos;s the case where edge AA won&apos;t make a difference (e.g. axis aligned layers) but also there could be platforms where edge AA is either not required or the speed vs quality tradeoffs are don&apos;t warrant it.

Linear filtering and non AA edges requires an additional shader that does texture coordinate clamping but no edge distance calculations. The current patch makes it easy to add this at a later stage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444172</commentid>
    <comment_count>29</comment_count>
      <attachid>102296</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-07-29 16:32:39 -0700</bug_when>
    <thetext>Comment on attachment 102296
Patch

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

Is there a reason that we&apos;re doing so much complicated CPU-side work to keep track of edge positions? It still seems like we&apos;re doing the work of a vertex shader on the CPU.  If we&apos;re pushing work to the fragment shader, why not also to the vertex shader? Thinking about this naively, it would also mean that you wouldn&apos;t have to duplicate all the edge calculation and geometry generation code from LayerTilerChromium for render surfaces.

This approach would also make the draw function less complicated.  It would also make it less brittle in terms of keeping track of scale flipping and previous edges when skipping tiles.  I&apos;m partially concerned here because the brittleness of this function&apos;s iteration order (every tile, top to bottom, left to right, in content space) caused a lot of pain for me in getting the RTL patch working.

&gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:401
&gt; +    // Use anti-aliasing programs when border texels are preset and transform
&gt; +    // is not an integer translation.
&gt; +    bool useAA = (m_tilingData.borderTexels() &amp;&amp; !globalTransform.isIntegerTranslation());

Aren&apos;t integer scales also ok?

&gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:466
&gt; +    IntRect layerRect = contentRectToLayerRect(contentRect);
&gt; +    IntRect bounds(layerRect);
&gt; +    bounds.move(m_layerPosition.x(), m_layerPosition.y());

Nit: use bounds = contentRect.size() here?

&gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:513
&gt; +            // Skip empty rows.
&gt; +            if (tileRect.isEmpty())
&gt; +                continue;

When does this occur? I would expect that we&apos;d only be iterating through tiles intersecting layerRect.

&gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:544
&gt; +            IntRect displayRect = tileRect;
&gt; +            tileRect.intersect(layerRect);

tileRect is in content space at this point.  You should intersect by the content space rect of the tile and not the layer space one.  This doesn&apos;t make a difference now because no layers actually use translations, but it will when I land my RTL layer patch.

&gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:552
&gt; +            // Skip empty tiles.
&gt; +            if (tileRect.isEmpty())
&gt; +                continue;

Don&apos;t you need to be setting previous edges here?

&gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:562
&gt; +            FloatRect clampRect(tileRect);
&gt; +            // Clamp texture coordinates to avoid sampling outside the layer.
&gt; +            const float epsilon = 1 / 1024.0f;
&gt; +            float clampX = min(0.5, clampRect.width() / 2.0 - epsilon);
&gt; +            float clampY = min(0.5, clampRect.height() / 2.0 - epsilon);
&gt; +            clampRect.inflateX(-clampX);
&gt; +            clampRect.inflateY(-clampY);

Forgive me for asking, but I don&apos;t follow this.  The comment says &quot;sampling outside the layer&quot;, but you&apos;re clamping to the tile rect in content space.  We already set CLAMP_TO_EDGE for all textures requested from the TextureManager, so I&apos;m unsure of what this is needed for.

&gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:579
&gt; +            // Map clamping rectangle to unit square.
&gt; +            float vsTexTranslateX = -clampRect.x() / clampRect.width();
&gt; +            float vsTexTranslateY = -clampRect.y() / clampRect.height();
&gt; +            float vsTexScaleX = tileRect.width() / clampRect.width();
&gt; +            float vsTexScaleY = tileRect.height() / clampRect.height();
&gt; +
&gt; +            // Map to normalized texture coordinates.
&gt; +            float fsTexTranslateX = texOffset.x() / tileWidth;
&gt; +            float fsTexTranslateY = texOffset.y() / tileHeight;
&gt; +            float fsTexScaleX = clampRect.width() / tileWidth;
&gt; +            float fsTexScaleY = clampRect.height() / tileHeight;

Style nit: don&apos;t abbreviate vs and fs here.

&gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:634
&gt; +                GLC(context, context-&gt;uniform4fv(edgeLocation, edge, 4));

Can&apos;t we just pass the layer edges as a uniform once instead of the tile edges for every draw call? FragmentShaderRGBATexAlphaAA looks like it converts fragment position into viewport space and then compares against tile edges.  Would it be incorrect to compare against layer edges there?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444693</commentid>
    <comment_count>30</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-08-01 08:00:25 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 102296 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102296&amp;action=review
&gt; 
&gt; Is there a reason that we&apos;re doing so much complicated CPU-side work to keep track of edge positions? It still seems like we&apos;re doing the work of a vertex shader on the CPU.  If we&apos;re pushing work to the fragment shader, why not also to the vertex shader? Thinking about this naively, it would also mean that you wouldn&apos;t have to duplicate all the edge calculation and geometry generation code from LayerTilerChromium for render surfaces.

The main reason for doing this on the CPU-side right now is that I didn&apos;t want this first patch to get too large. My plan is to move what makes sense to the vertex shader after this first patch has landed.

It&apos;s also not obvious how this CPU-side work is efficiently moved to the shader but I was hoping we could have that discussion after this has landed. The CPU-side work done in this patch is not different from what&apos;s done currently in trunk so we can land this without having to worry about any performance regressions related to it.

For render surface support, we would either move things to the vertex shader or re-factor some of this to make sure we don&apos;t duplicate code.

&gt; 
&gt; This approach would also make the draw function less complicated.  It would also make it less brittle in terms of keeping track of scale flipping and previous edges when skipping tiles.  I&apos;m partially concerned here because the brittleness of this function&apos;s iteration order (every tile, top to bottom, left to right, in content space) caused a lot of pain for me in getting the RTL patch working.

Well, it&apos;s an optimization. If we want to sacrifice some performance for making it less complicated, that&apos;s easy to do. The reason we have the current code is that people were pushing for these kind of optimization during the review process for the previous anti-aliasing patch. It will change if we move things to the vertex shader...

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:401
&gt; &gt; +    // Use anti-aliasing programs when border texels are preset and transform
&gt; &gt; +    // is not an integer translation.
&gt; &gt; +    bool useAA = (m_tilingData.borderTexels() &amp;&amp; !globalTransform.isIntegerTranslation());
&gt; 
&gt; Aren&apos;t integer scales also ok?

No, they need fragment shader clamping of texture coordinates to avoid sampling outside the contents area of tiles.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:466
&gt; &gt; +    IntRect layerRect = contentRectToLayerRect(contentRect);
&gt; &gt; +    IntRect bounds(layerRect);
&gt; &gt; +    bounds.move(m_layerPosition.x(), m_layerPosition.y());
&gt; 
&gt; Nit: use bounds = contentRect.size() here?

Ok.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:513
&gt; &gt; +            // Skip empty rows.
&gt; &gt; +            if (tileRect.isEmpty())
&gt; &gt; +                continue;
&gt; 
&gt; When does this occur? I would expect that we&apos;d only be iterating through tiles intersecting layerRect.

It seems to happen when the layer shrinks so that some tiles are no longer used. I guess we could intersect the contentRect by the layerRect before passing it to contentRectToTileIndices. The current code is the way it was before I touched this.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:544
&gt; &gt; +            IntRect displayRect = tileRect;
&gt; &gt; +            tileRect.intersect(layerRect);
&gt; 
&gt; tileRect is in content space at this point.  You should intersect by the content space rect of the tile and not the layer space one.  This doesn&apos;t make a difference now because no layers actually use translations, but it will when I land my RTL layer patch.

Ok, this code is from before landing any anti-aliasing patches. I&apos;ll change it if you think it should be part of this patch.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:552
&gt; &gt; +            // Skip empty tiles.
&gt; &gt; +            if (tileRect.isEmpty())
&gt; &gt; +                continue;
&gt; 
&gt; Don&apos;t you need to be setting previous edges here?

The only time we encounter this is for right-most tiles and we wouldn&apos;t actually want to update the previous edge if it happened for the left-most tile anyhow.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:562
&gt; &gt; +            FloatRect clampRect(tileRect);
&gt; &gt; +            // Clamp texture coordinates to avoid sampling outside the layer.
&gt; &gt; +            const float epsilon = 1 / 1024.0f;
&gt; &gt; +            float clampX = min(0.5, clampRect.width() / 2.0 - epsilon);
&gt; &gt; +            float clampY = min(0.5, clampRect.height() / 2.0 - epsilon);
&gt; &gt; +            clampRect.inflateX(-clampX);
&gt; &gt; +            clampRect.inflateY(-clampY);
&gt; 
&gt; Forgive me for asking, but I don&apos;t follow this.  The comment says &quot;sampling outside the layer&quot;, but you&apos;re clamping to the tile rect in content space.  We already set CLAMP_TO_EDGE for all textures requested from the TextureManager, so I&apos;m unsure of what this is needed for.

Tile is often larger than the contents and we need to constrain texture sampling to the contents area. Linear filtering will sample outside the contents area when the texture is scaled or when anti-aliasing is used. This is to prevent that.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:579
&gt; &gt; +            // Map clamping rectangle to unit square.
&gt; &gt; +            float vsTexTranslateX = -clampRect.x() / clampRect.width();
&gt; &gt; +            float vsTexTranslateY = -clampRect.y() / clampRect.height();
&gt; &gt; +            float vsTexScaleX = tileRect.width() / clampRect.width();
&gt; &gt; +            float vsTexScaleY = tileRect.height() / clampRect.height();
&gt; &gt; +
&gt; &gt; +            // Map to normalized texture coordinates.
&gt; &gt; +            float fsTexTranslateX = texOffset.x() / tileWidth;
&gt; &gt; +            float fsTexTranslateY = texOffset.y() / tileHeight;
&gt; &gt; +            float fsTexScaleX = clampRect.width() / tileWidth;
&gt; &gt; +            float fsTexScaleY = clampRect.height() / tileHeight;
&gt; 
&gt; Style nit: don&apos;t abbreviate vs and fs here.

Sure. I assume you want the ShaderChromium.* code changed too.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:634
&gt; &gt; +                GLC(context, context-&gt;uniform4fv(edgeLocation, edge, 4));
&gt; 
&gt; Can&apos;t we just pass the layer edges as a uniform once instead of the tile edges for every draw call? FragmentShaderRGBATexAlphaAA looks like it converts fragment position into viewport space and then compares against tile edges.  Would it be incorrect to compare against layer edges there?

We could. Doing it once per tile is just in line with eventually moving the edge intersection code to the vertex shader but now that I&apos;m thinking about it seems like I can make the patch a bit smaller by not doing this and just setting it once per tile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444781</commentid>
    <comment_count>31</comment_count>
      <attachid>102537</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-08-01 11:20:45 -0700</bug_when>
    <thetext>Created attachment 102537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444791</commentid>
    <comment_count>32</comment_count>
      <attachid>102541</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-08-01 12:07:04 -0700</bug_when>
    <thetext>Created attachment 102541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444794</commentid>
    <comment_count>33</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-08-01 12:08:41 -0700</bug_when>
    <thetext>This latest patch became simpler by not setting the edge uniform for each tile which allowed me to remove the LayerTilerChromium:Edge type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444821</commentid>
    <comment_count>34</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-08-01 13:14:56 -0700</bug_when>
    <thetext>(In reply to comment #30)

&gt; The main reason for doing this on the CPU-side right now is that I didn&apos;t want this first patch to get too large. My plan is to move what makes sense to the vertex shader after this first patch has landed.

Ok.  If you&apos;re planning to follow up with that, then I&apos;m fine with it not being in this patch.  Can you file a bug to do so now and make this one block it?

&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:513
&gt; &gt; &gt; +            // Skip empty rows.
&gt; &gt; &gt; +            if (tileRect.isEmpty())
&gt; &gt; &gt; +                continue;
&gt; &gt; 
&gt; &gt; When does this occur? I would expect that we&apos;d only be iterating through tiles intersecting layerRect.
&gt; 
&gt; It seems to happen when the layer shrinks so that some tiles are no longer used. I guess we could intersect the contentRect by the layerRect before passing it to contentRectToTileIndices. The current code is the way it was before I touched this.

Thanks for the info.  That&apos;s fine to leave, I was mostly just curious when it might happen.  Maybe things would be more clear if the tiler had an explicit resize layer function.

&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:544
&gt; &gt; &gt; +            IntRect displayRect = tileRect;
&gt; &gt; &gt; +            tileRect.intersect(layerRect);
&gt; &gt; 
&gt; &gt; tileRect is in content space at this point.  You should intersect by the content space rect of the tile and not the layer space one.  This doesn&apos;t make a difference now because no layers actually use translations, but it will when I land my RTL layer patch.
&gt; 
&gt; Ok, this code is from before landing any anti-aliasing patches. I&apos;ll change it if you think it should be part of this patch.

Just as a side note, David and I talked about this offline and I think I&apos;m wrong here.  I&apos;ll look at this again when I look at fixing the RTL issues.

&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:562
&gt; &gt; &gt; +            FloatRect clampRect(tileRect);
&gt; &gt; &gt; +            // Clamp texture coordinates to avoid sampling outside the layer.
&gt; &gt; &gt; +            const float epsilon = 1 / 1024.0f;
&gt; &gt; &gt; +            float clampX = min(0.5, clampRect.width() / 2.0 - epsilon);
&gt; &gt; &gt; +            float clampY = min(0.5, clampRect.height() / 2.0 - epsilon);
&gt; &gt; &gt; +            clampRect.inflateX(-clampX);
&gt; &gt; &gt; +            clampRect.inflateY(-clampY);
&gt; &gt; 
&gt; &gt; Forgive me for asking, but I don&apos;t follow this.  The comment says &quot;sampling outside the layer&quot;, but you&apos;re clamping to the tile rect in content space.  We already set CLAMP_TO_EDGE for all textures requested from the TextureManager, so I&apos;m unsure of what this is needed for.
&gt; 
&gt; Tile is often larger than the contents and we need to constrain texture sampling to the contents area. Linear filtering will sample outside the contents area when the texture is scaled or when anti-aliasing is used. This is to prevent that.

Ah, I see.  So, you go in half a pixel on either end and implement a fake clamp to edge (via the clamp instruction in the fragment shader and two texture transforms) so you don&apos;t double apply the edge fading for right/bottom tiles.

And, in case you have a tile with only one pixel in content space (but on a larger texture with borders), you have to subtract epsilon so you don&apos;t divide by a zero width when normalizing and unnormalizing to this &quot;half texel deflated&quot; space.

Would it be more simple to just explicitly pass a max/min texture coord pair to the fragment shader rather than this double transform and extra code here? (It might not be.  I&apos;m just curious.) If it&apos;s not, could you instead add more comments here about what all this code is doing?

&gt; &gt; Style nit: don&apos;t abbreviate vs and fs here.
&gt; 
&gt; Sure. I assume you want the ShaderChromium.* code changed too.

Yup.  That&apos;s WebKit for you.  Also, please update the ChangeLog to reflect that too.

&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:634
&gt; &gt; &gt; +                GLC(context, context-&gt;uniform4fv(edgeLocation, edge, 4));
&gt; &gt; 
&gt; &gt; Can&apos;t we just pass the layer edges as a uniform once instead of the tile edges for every draw call? FragmentShaderRGBATexAlphaAA looks like it converts fragment position into viewport space and then compares against tile edges.  Would it be incorrect to compare against layer edges there?
&gt; 
&gt; We could. Doing it once per tile is just in line with eventually moving the edge intersection code to the vertex shader but now that I&apos;m thinking about it seems like I can make the patch a bit smaller by not doing this and just setting it once per tile.

Thanks for doing that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444843</commentid>
    <comment_count>35</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-08-01 13:45:55 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #30)
&gt; 
&gt; &gt; The main reason for doing this on the CPU-side right now is that I didn&apos;t want this first patch to get too large. My plan is to move what makes sense to the vertex shader after this first patch has landed.
&gt; 
&gt; Ok.  If you&apos;re planning to follow up with that, then I&apos;m fine with it not being in this patch.  Can you file a bug to do so now and make this one block it?

Done.

&gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:513
&gt; &gt; &gt; &gt; +            // Skip empty rows.
&gt; &gt; &gt; &gt; +            if (tileRect.isEmpty())
&gt; &gt; &gt; &gt; +                continue;
&gt; &gt; &gt; 
&gt; &gt; &gt; When does this occur? I would expect that we&apos;d only be iterating through tiles intersecting layerRect.
&gt; &gt; 
&gt; &gt; It seems to happen when the layer shrinks so that some tiles are no longer used. I guess we could intersect the contentRect by the layerRect before passing it to contentRectToTileIndices. The current code is the way it was before I touched this.
&gt; 
&gt; Thanks for the info.  That&apos;s fine to leave, I was mostly just curious when it might happen.  Maybe things would be more clear if the tiler had an explicit resize layer function.
&gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:544
&gt; &gt; &gt; &gt; +            IntRect displayRect = tileRect;
&gt; &gt; &gt; &gt; +            tileRect.intersect(layerRect);
&gt; &gt; &gt; 
&gt; &gt; &gt; tileRect is in content space at this point.  You should intersect by the content space rect of the tile and not the layer space one.  This doesn&apos;t make a difference now because no layers actually use translations, but it will when I land my RTL layer patch.
&gt; &gt; 
&gt; &gt; Ok, this code is from before landing any anti-aliasing patches. I&apos;ll change it if you think it should be part of this patch.
&gt; 
&gt; Just as a side note, David and I talked about this offline and I think I&apos;m wrong here.  I&apos;ll look at this again when I look at fixing the RTL issues.
&gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:562
&gt; &gt; &gt; &gt; +            FloatRect clampRect(tileRect);
&gt; &gt; &gt; &gt; +            // Clamp texture coordinates to avoid sampling outside the layer.
&gt; &gt; &gt; &gt; +            const float epsilon = 1 / 1024.0f;
&gt; &gt; &gt; &gt; +            float clampX = min(0.5, clampRect.width() / 2.0 - epsilon);
&gt; &gt; &gt; &gt; +            float clampY = min(0.5, clampRect.height() / 2.0 - epsilon);
&gt; &gt; &gt; &gt; +            clampRect.inflateX(-clampX);
&gt; &gt; &gt; &gt; +            clampRect.inflateY(-clampY);
&gt; &gt; &gt; 
&gt; &gt; &gt; Forgive me for asking, but I don&apos;t follow this.  The comment says &quot;sampling outside the layer&quot;, but you&apos;re clamping to the tile rect in content space.  We already set CLAMP_TO_EDGE for all textures requested from the TextureManager, so I&apos;m unsure of what this is needed for.
&gt; &gt; 
&gt; &gt; Tile is often larger than the contents and we need to constrain texture sampling to the contents area. Linear filtering will sample outside the contents area when the texture is scaled or when anti-aliasing is used. This is to prevent that.
&gt; 
&gt; Ah, I see.  So, you go in half a pixel on either end and implement a fake clamp to edge (via the clamp instruction in the fragment shader and two texture transforms) so you don&apos;t double apply the edge fading for right/bottom tiles.

Exactly.

&gt; 
&gt; And, in case you have a tile with only one pixel in content space (but on a larger texture with borders), you have to subtract epsilon so you don&apos;t divide by a zero width when normalizing and unnormalizing to this &quot;half texel deflated&quot; space.

Yup.

&gt; 
&gt; Would it be more simple to just explicitly pass a max/min texture coord pair to the fragment shader rather than this double transform and extra code here? (It might not be.  I&apos;m just curious.) If it&apos;s not, could you instead add more comments here about what all this code is doing?

My intuition tells me that clamping to 0-1 range + a MAD instruction with two constants is more efficient on the GPU than clamping to a specific range. I could be wrong.

I&apos;ll add some more comments.

&gt; 
&gt; &gt; &gt; Style nit: don&apos;t abbreviate vs and fs here.
&gt; &gt; 
&gt; &gt; Sure. I assume you want the ShaderChromium.* code changed too.
&gt; 
&gt; Yup.  That&apos;s WebKit for you.  Also, please update the ChangeLog to reflect that too.

Oh, good catch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444896</commentid>
    <comment_count>36</comment_count>
      <attachid>102562</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-08-01 14:52:43 -0700</bug_when>
    <thetext>Created attachment 102562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445384</commentid>
    <comment_count>37</comment_count>
      <attachid>102670</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-08-02 11:42:02 -0700</bug_when>
    <thetext>Created attachment 102670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445399</commentid>
    <comment_count>38</comment_count>
      <attachid>102562</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-08-02 12:01:58 -0700</bug_when>
    <thetext>Comment on attachment 102562
Patch

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

I&apos;m afraid I&apos;m still a bit uncertain about how edge AA works.  A high level description of how it affects the tiles, which tiles get borders, and how the shader deals with them would be super helpful (both for the review and also for posterity).

I&apos;m also somewhat concerned that, according to my reading of the code, it looks like we&apos;ll be loosing subpixel AA text in all tiled layers, including the root.  Is that correct?

&gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:443
&gt; +void LayerTilerChromium::drawTiles(const IntRect&amp; contentRect, const TransformationMatrix&amp; globalTransform, float opacity, const T* program, int fragmentTexTransformLocation, int edgeLocation)

Nit:  It might be more clear to call this method drawTilesAA.  The arguments alone are not a good indication of how it differs from the &quot;regular&quot; drawTiles method. As a matter of fact, it looks lik the fragmentTexTransformLocation and edgeLocation can both be computed in this method directly from the program, thus reducing the number of arguments passed.

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:129
&gt; +        LayerTilerChromium::HasBorderTexels);

if we force all tiles to have border texels, it seems like we will looks subpixel AA text everywhere (including the root layer).  LayerTextureUpdatedBitmap::prepareToUpdate uses the existence of border texels as a sign to turn off  AA text</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445553</commentid>
    <comment_count>39</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-08-02 14:56:46 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; (From update of attachment 102562 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102562&amp;action=review
&gt; 
&gt; I&apos;m afraid I&apos;m still a bit uncertain about how edge AA works.  A high level description of how it affects the tiles, which tiles get borders, and how the shader deals with them would be super helpful (both for the review and also for posterity).

Sure, I can put together that. What&apos;s done in the shader and not will likely change after this patch has landed though.

Here&apos;s the short description for now:

1. Device space layer edges are computed and passed to the fragment shader.
2. Vertex and texture coordinates are adjusted so that all fragments that are partially covered by the layer are at least 50% covered. This is simply to make sure that all fragments that are affected by the layer anti-aliasing are processed.
3. The alpha value of each fragment is computed based on the distance to each of the 4 device space layer edges.

That&apos;s basically it for non-tiled layers. The difference for a tiled layer is that step 2 is done only to tile edges that represent a real edge of the layer and texture coordinates need to be clamped to avoid sampling outside the contents area of tile textures.

&gt; 
&gt; I&apos;m also somewhat concerned that, according to my reading of the code, it looks like we&apos;ll be loosing subpixel AA text in all tiled layers, including the root.  Is that correct?

No, nothing changes in that respect.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:443
&gt; &gt; +void LayerTilerChromium::drawTiles(const IntRect&amp; contentRect, const TransformationMatrix&amp; globalTransform, float opacity, const T* program, int fragmentTexTransformLocation, int edgeLocation)
&gt; 
&gt; Nit:  It might be more clear to call this method drawTilesAA.  The arguments alone are not a good indication of how it differs from the &quot;regular&quot; drawTiles method. As a matter of fact, it looks lik the fragmentTexTransformLocation and edgeLocation can both be computed in this method directly from the program, thus reducing the number of arguments passed.

|drawTiles| does both anti-aliased drawing an aliased drawing so I&apos;m not sure |drawTilesAA| is a good name. The |draw| function determines what shader program to use for drawing the layer. |drawTiles| uses a template type for the program argument and cannot access AA program specific members, which is why fragmentTexTransformLocation and edgeLocation are passed as arguments to |drawTiles|.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:129
&gt; &gt; +        LayerTilerChromium::HasBorderTexels);
&gt; 
&gt; if we force all tiles to have border texels, it seems like we will looks subpixel AA text everywhere (including the root layer).  LayerTextureUpdatedBitmap::prepareToUpdate uses the existence of border texels as a sign to turn off  AA text

This is the same as before the first AA patch landed. The root layer is not affected by this. The reason this is currently not always HasBorderTexels in ToT is that the mask layer rendering code can&apos;t handle layers that include the outer border used by the AA method currently in ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445601</commentid>
    <comment_count>40</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-08-02 16:29:17 -0700</bug_when>
    <thetext>Ok, thanks!  I have a much better understanding of the code now.  I was mostly reading it wrong... Unofficial r+ from me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445603</commentid>
    <comment_count>41</comment_count>
      <attachid>102670</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-02 16:35:22 -0700</bug_when>
    <thetext>Comment on attachment 102670
Patch

OK, R=me.  I&apos;ll land by hand to make sure that we don&apos;t check bad expectations into test_expectations.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445696</commentid>
    <comment_count>42</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-02 19:52:35 -0700</bug_when>
    <thetext>Committed r92255: &lt;http://trac.webkit.org/changeset/92255&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447285</commentid>
    <comment_count>43</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2011-08-05 10:55:25 -0700</bug_when>
    <thetext>Reactivate this bug since the following tests are still failing:

BUGWK64942 WIN GPU : compositing/color-matching/image-color-matching.html = IMAGE
BUGWK64942 WIN GPU : compositing/direct-image-compositing.html = IMAGE
BUGWK64942 WIN GPU : compositing/geometry/ancestor-overflow-change.html = IMAGE
BUGWK64942 WIN GPU : compositing/geometry/fixed-position.html = IMAGE
BUGWK64942 WIN GPU : compositing/geometry/horizontal-scroll-composited.html = IMAGE
BUGWK64942 WIN GPU : compositing/geometry/layer-due-to-layer-children-deep.html = IMAGE
BUGWK64942 WIN GPU : compositing/geometry/layer-due-to-layer-children.html = IMAGE
BUGWK64942 WIN GPU : compositing/geometry/vertical-scroll-composited.html = IMAGE
BUGWK64942 WIN GPU : compositing/iframes/composited-iframe-alignment.html = IMAGE
BUGWK64942 WIN GPU : compositing/masks/masked-ancestor.html = IMAGE
BUGWK64942 WIN GPU : compositing/overflow/fixed-position-ancestor-clip.html = IMAGE
BUGWK64942 WIN GPU : compositing/reflections/nested-reflection-transition.html = IMAGE
BUGWK64942 WIN GPU : compositing/reflections/transform-inside-reflection.html = IMAGE
BUGWK64942 WIN GPU : compositing/shadows/shadow-drawing.html = IMAGE
BUGWK64942 WIN MAC GPU :  compositing/transitions/scale-transition-no-start.html = IMAGE
BUGWK64942 MAC GPU : media/video-transformed.html = IMAGE
BUGWK64942 MAC GPU : media/video-zoom-controls.html = IMAGE
BUGWK64942 MAC GPU : platform/chromium/compositing/backface-visibility-transformed.html = IMAGE
BUGWK64942 MAC GPU : platform/chromium/compositing/huge-layer-rotated.html = IMAGE
BUGWK64942 MAC GPU : platform/chromium/compositing/layout-width-change.html = IMAGE
BUGWK64942 MAC GPU : platform/chromium/compositing/perpendicular-layer-sorting.html = IMAGE
BUGWK64942 MAC GPU : platform/chromium/compositing/tiny-layer-rotated.html = IMAGE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447375</commentid>
    <comment_count>44</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-08-05 13:02:33 -0700</bug_when>
    <thetext>AFAIK, this is only related to rebaselining of affected tests. Closing this bug and reopening https://bugs.webkit.org/show_bug.cgi?id=65736 instead.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101677</attachid>
            <date>2011-07-21 17:38:44 -0700</date>
            <delta_ts>2011-07-22 07:43:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64942-20110721203842.patch</filename>
            <type>text/plain</type>
            <size>70644</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE0OTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyM2MzZmY1MDcyNDFkNDNlYmYxOWUz
ZTExYThlZWM2MjA1MWRkN2MwLi4xMzg3MDlmYzhkNDk4NDFmNDMwZmRlNDczZjc2MjQ0ZDJlYzg3
YTFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMjEgIERhdmlkIFJldmVtYW4gIDxy
ZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFVzZSBlZGdlLWRpc3Rh
bmNlIG1ldGhvZCBmb3IgbGF5ZXIgYW50aS1hbGlhc2luZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGVkIHJlc3VsdHMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEt
MDctMjEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW9yZSBD
aHJvbWl1bSByZWJhc2VsaW5lcyBmb3IgcjkxNDc0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IGY0ZjVjZTNiMTM4YmUy
ZmRlOGNiN2YwMDQ4ODRiYWMyYjgxMTFkZTIuLmVmZThhNDZiNGM2ZTRlMDgwYzcyMzcwMWMwNGJi
YWMxODdjMzczZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTM3OTUsMyArMzc5NSwxMSBAQCBCVUdXSzY0OTQ4IFdJ
TiBERUJVRyA6IGZhc3QvZm9ybXMvaW5wdXQtZmlsZS1sYWJlbC5odG1sID0gQ1JBU0ggUEFTUwog
CiBCVUdXSzY0OTUxIDogZmFzdC9mcmFtZXMvbWV0YS1yZWZyZXNoLXVzZXItZ2VzdHVyZS5odG1s
ID0gQ1JBU0ggVElNRU9VVCBQQVNTCiAKK0JVR1dLNjQ5NDIgOiBjb21wb3NpdGluZy9nZW9tZXRy
eS9sYXllci1kdWUtdG8tbGF5ZXItY2hpbGRyZW4uaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDog
Y29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tdHJhbnNpdGlvbi5odG1s
ID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21wb3NpdGluZy9yZWZsZWN0aW9ucy90cmFuc2Zvcm0t
aW5zaWRlLXJlZmxlY3Rpb24uaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogY29tcG9zaXRpbmcv
dHJhbnNpdGlvbnMvc2NhbGUtdHJhbnNpdGlvbi1uby1zdGFydC5odG1sID0gSU1BR0UKK0JVR1dL
NjQ5NDIgOiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5
LXRyYW5zZm9ybWVkLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IHBsYXRmb3JtL2Nocm9taXVt
L2NvbXBvc2l0aW5nL2h1Z2UtbGF5ZXItcm90YXRlZC5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIg
OiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9wZXJwZW5kaWN1bGFyLWxheWVyLXNvcnRp
bmcuaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRp
bmcvdGlueS1sYXllci1yb3RhdGVkLmh0bWwgPSBJTUFHRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNlMzMzOGVh
Nzg3ZmE1NTgyM2FjYzIyOWIwN2NlZjc3MjZkY2FlNzEuLjA0NjkzN2I1YzU1MGRjZDZmODNkN2Nm
MTZmZTRhM2ZhMzlkYzYyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NSBAQAorMjAxMS0wNy0y
MSAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJv
bWl1bV0gVXNlIGVkZ2UtZGlzdGFuY2UgbWV0aG9kIGZvciBsYXllciBhbnRpLWFsaWFzaW5nLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ5NDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYW4gZWRn
ZSBkaXN0YW5jZSBiYXNlZCBtZXRob2QgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBsaW5lYXIKKyAg
ICAgICAgZmlsdGVyaW5nIG1ldGhvZCBmb3IgcHJvZHVjaW5nIGFudGktYWxpYXNlZCBlZGdlcyBv
biAzRCB0cmFuc2Zvcm1lZAorICAgICAgICBsYXllcnMuIFRoaXMgcmVtb3ZlcyB0aGUgb3V0ZXIg
Ym9yZGVyIGhhbmRsaW5nIGZyb20gVGlsaW5nRGF0YSBhcworICAgICAgICBpdCdzIG5vIGxvbmdl
ciBuZWVkZWQgZm9yIGFudGktYWxpYXNpbmcuCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL2No
cm9taXVtL2NvbXBvc2l0aW5nL3RpbnktbGF5ZXItcm90YXRlZC5odG1sIChleGlzdGluZykKKyAg
ICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2h1Z2UtbGF5ZXItcm90
YXRlZC5odG1sIChleGlzdGluZykKKyAgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL2ltYWdlcy9j
b250ZW50LWltYWdlLWNoYW5nZS5odG1sIChleGlzdGluZykKKyAgICAgICAgICAgICAgIFRpbGlu
Z0RhdGFUZXN0IGluIHdlYmtpdF91bml0X3Rlc3RzCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2NyZWVuTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OnNldERyYXdWaWV3cG9ydFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjp3aW5kb3dNYXRyaXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRpbGVyQ2hyb21pdW06OkVkZ2U6OkVkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxl
ckNocm9taXVtOjpFZGdlOjppbnRlcnNlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxl
ckNocm9taXVtOjpzZXRUaWxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hy
b21pdW06OnRpbGVMYXllclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9t
aXVtOjppbnZhbGlkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21p
dW06OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpn
cm93TGF5ZXJUb0NvbnRhaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVt
OjpkcmF3VGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpkcmF3
VGV4dHVyZWRRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRpbGVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6
RWRnZTo6RWRnZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OkVkZ2U6
OngpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpFZGdlOjpzZXRYKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6RWRnZTo6eSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OkVkZ2U6OnNldFkpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpFZGdlOjp6KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyVGlsZXJDaHJvbWl1bTo6RWRnZTo6c2V0Wik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRp
bGVyQ2hyb21pdW06OkVkZ2U6OncpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9t
aXVtOjpFZGdlOjpzZXRXKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6
RWRnZTo6c2NhbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRl
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclBvc1RleFRyYW5z
Zm9ybTo6VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlZl
cnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0
ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm06OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpWZXJ0ZXhTaGFkZXJRdWFkOjpWZXJ0ZXhTaGFkZXJRdWFkKToKKyAgICAgICAgKFdlYkNv
cmU6OlZlcnRleFNoYWRlclF1YWQ6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hh
ZGVyUXVhZDo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hh
ZGVyUkdCQVRleEZsaXBBbHBoYTo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhOjpnZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZzo6RnJhZ21lbnRUZXhBbHBoYUFBQmlu
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFRleEFscGhhQUFCaW5kaW5nOjppbml0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUE6OmdldFNo
YWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6
emxlQWxwaGFBQTo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hh
ZGVyUXVhZDo6bWF0cml4TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVy
UXVhZDo6cG9pbnRMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJRdWFk
Ojp2c1RleFRyYW5zZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4
QWxwaGFBQUJpbmRpbmc6OmFscGhhTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21l
bnRUZXhBbHBoYUFBQmluZGluZzo6c2FtcGxlckxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmc6OmZzVGV4VHJhbnNmb3JtTG9jYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZzo6ZWRnZUxvY2F0aW9uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpUaWxlZExheWVyQ2hy
b21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVUaWxl
U2l6ZUFuZFRpbGluZ09wdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21p
dW06OmNyZWF0ZVRpbGVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNo
cm9taXVtOjpzZXRJc01hc2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9U
aWxpbmdEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVOdW1UaWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpUaWxpbmdEYXRhOjp0aWxlWEluZGV4RnJvbVNyY0Nvb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6OnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsaW5nRGF0YTo6dGlsZVNpemVYKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGluZ0RhdGE6OnRpbGVTaXplWSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxpbmdEYXRhOjppbnRl
cnNlY3REcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxpbmdEYXRhOjp0ZXh0dXJlT2Zm
c2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5oOgorCiAy
MDExLTA3LTIxICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZW1vdmUgTGVnYWN5RGVmYXVsdE9wdGlvbmFsQXJndW1lbnRzIGZsYWcgZnJvbSBGaWxlQVBJ
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA0YTNiYTE4NjUyMmQ5
MDgyNDJjOTRjNWQ4YmFmNTQyZjY3NzU3ZGRmLi43MjIwNTRiYmM3YjExN2U1MmJjMDlmMzY4ZTU5
MTVjYjg3MDNkZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAg
LTk2LDYgKzk2LDIxIEBAIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcnRob01hdHJpeChm
bG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBmCiAgICAgcmV0dXJuIG9ydGhv
OwogfQogCitzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggc2NyZWVuTWF0cml4KGludCB4LCBp
bnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHNjcmVlbjsKKworICAgIC8vIE1hcCB0byB2aWV3cG9ydC4KKyAgICBzY3JlZW4udHJhbnNsYXRl
M2QoeCwgeSwgMCk7CisgICAgc2NyZWVuLnNjYWxlM2Qod2lkdGgsIGhlaWdodCwgMCk7CisKKyAg
ICAvLyBNYXAgeCwgeSBhbmQgeiB0byB1bml0IHNxdWFyZS4KKyAgICBzY3JlZW4udHJhbnNsYXRl
M2QoMC41LCAwLjUsIDAuNSk7CisgICAgc2NyZWVuLnNjYWxlM2QoMC41LCAwLjUsIDAuNSk7CisK
KyAgICByZXR1cm4gc2NyZWVuOworfQorCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIG1hdHJpeCBo
YXMgbm8gcm90YXRpb24sIHNrZXcgb3IgcGVyc3BlY3RpdmUgY29tcG9uZW50cyB0byBpdC4KIHN0
YXRpYyBib29sIGlzU2NhbGVPclRyYW5zbGF0aW9uKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtKQogewpAQCAtNDk5LDYgKzUxNCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3TGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKIAogICAg
IC8vIFRoZSBHTCB2aWV3cG9ydCBjb3ZlcnMgdGhlIGVudGlyZSB2aXNpYmxlIGFyZWEsIGluY2x1
ZGluZyB0aGUgc2Nyb2xsYmFycy4KICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQt
PnZpZXdwb3J0KDAsIDAsIG1fdmlld3BvcnRWaXNpYmxlUmVjdC53aWR0aCgpLCBtX3ZpZXdwb3J0
VmlzaWJsZVJlY3QuaGVpZ2h0KCkpKTsKKyAgICBtX3dpbmRvd01hdHJpeCA9IHNjcmVlbk1hdHJp
eCgwLCAwLCBtX3ZpZXdwb3J0VmlzaWJsZVJlY3Qud2lkdGgoKSwgbV92aWV3cG9ydFZpc2libGVS
ZWN0LmhlaWdodCgpKTsKIAogICAgIC8vIEJpbmQgdGhlIGNvbW1vbiB2ZXJ0ZXggYXR0cmlidXRl
cyB1c2VkIGZvciBkcmF3aW5nIGFsbCB0aGUgbGF5ZXJzLgogICAgIG1fc2hhcmVkR2VvbWV0cnkt
PnByZXBhcmVGb3JEcmF3KCk7CkBAIC0xMTM3LDYgKzExNTMsNyBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6c2V0RHJhd1ZpZXdwb3J0UmVjdChjb25zdCBJbnRSZWN0JiBkcmF3UmVjdCwg
Ym9vbCBmbAogICAgIGVsc2UKICAgICAgICAgbV9wcm9qZWN0aW9uTWF0cml4ID0gb3J0aG9NYXRy
aXgoZHJhd1JlY3QueCgpLCBkcmF3UmVjdC5tYXhYKCksIGRyYXdSZWN0LnkoKSwgZHJhd1JlY3Qu
bWF4WSgpKTsKICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPnZpZXdwb3J0KDAs
IDAsIGRyYXdSZWN0LndpZHRoKCksIGRyYXdSZWN0LmhlaWdodCgpKSk7CisgICAgbV93aW5kb3dN
YXRyaXggPSBzY3JlZW5NYXRyaXgoMCwgMCwgZHJhd1JlY3Qud2lkdGgoKSwgZHJhd1JlY3QuaGVp
Z2h0KCkpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggOTM4
ZTA1ZjdlNDZjMDQ1YjhiODhmZDNlNTg2OTRmYzViMjQ5Nzk2NS4uM2IzZjg1OGRiNTM4NjYxMWU5
MmY3YmIzMGU5MDBhZmFmZGU2MGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKQEAgLTEyMiw2ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGVidWdHTENh
bGwoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBjaGFyKiBjb21tYW5kLCBjb25zdCBjaGFyKiBm
aWxlLCBpbnQgbGluZSk7CiAKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVj
dGlvbk1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlvbk1hdHJpeDsgfQorICAgIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB3aW5kb3dNYXRyaXgoKSBjb25zdCB7IHJldHVybiBt
X3dpbmRvd01hdHJpeDsgfQogCiAgICAgYm9vbCBjaGVja1RleHR1cmVTaXplKGNvbnN0IEludFNp
emUmKTsKICAgICBpbnQgbWF4VGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBtX21heFRleHR1
cmVTaXplOyB9CkBAIC0yMTAsNiArMjExLDcgQEAgcHJpdmF0ZToKICAgICBJbnRQb2ludCBtX3Zp
ZXdwb3J0U2Nyb2xsUG9zaXRpb247CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3Byb2pl
Y3Rpb25NYXRyaXg7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV93aW5kb3dNYXRyaXg7CiAK
ICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290TGF5ZXI7CiAgICAgT3duUHRyPExheWVy
VGV4dHVyZVVwZGF0ZXI+IG1fcm9vdExheWVyVGV4dHVyZVVwZGF0ZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJU
aWxlckNocm9taXVtLmNwcAppbmRleCA3NjlmOGU3MWRiM2I4NmQzMWZkNWYwNGNjNDRjZWU3ZDBi
NTc2ZTFhLi43YmJhMDVmYmVjZDE2OTI3MDFjY2VkNjFkMTU3ZmI4MWQxYWJiNDAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKQEAgLTQ0LDcgKzQ0LDI2IEBAIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBGbG9hdFBvaW50M0Qg
RWRnZTsKK0xheWVyVGlsZXJDaHJvbWl1bTo6RWRnZTo6RWRnZShjb25zdCBGbG9hdFBvaW50JiBw
LCBjb25zdCBGbG9hdFBvaW50JiBxKQoreworICAgIEFTU0VSVChwICE9IHEpOworCisgICAgRmxv
YXRQb2ludCB0YW5nZW50KHAueSgpIC0gcS55KCksIHEueCgpIC0gcC54KCkpOworICAgIGZsb2F0
IHNjYWxlID0gMS4wIC8gdGFuZ2VudC5sZW5ndGgoKTsKKyAgICBmbG9hdCBjcm9zczIgPSBwLngo
KSAqIHEueSgpIC0gcS54KCkgKiBwLnkoKTsKKworICAgIG1feCA9IHRhbmdlbnQueCgpICogc2Nh
bGU7CisgICAgbV95ID0gdGFuZ2VudC55KCkgKiBzY2FsZTsKKyAgICBtX3ogPSBjcm9zczIgKiBz
Y2FsZTsKKyAgICBtX3cgPSAxOworfQorCitGbG9hdFBvaW50IExheWVyVGlsZXJDaHJvbWl1bTo6
RWRnZTo6aW50ZXJzZWN0KGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6RWRnZSYgYSwgY29uc3Qg
TGF5ZXJUaWxlckNocm9taXVtOjpFZGdlJiBiKQoreworICAgIHJldHVybiBGbG9hdFBvaW50KAor
ICAgICAgICAoYS5tX3kgKiBiLm1feiAtIGIubV95ICogYS5tX3opIC8gKGEubV94ICogYi5tX3kg
LSBiLm1feCAqIGEubV95KSwKKyAgICAgICAgKGEubV94ICogYi5tX3ogLSBiLm1feCAqIGEubV96
KSAvIChiLm1feCAqIGEubV95IC0gYS5tX3ggKiBiLm1feSkpOworfQogCiBQYXNzT3duUHRyPExh
eWVyVGlsZXJDaHJvbWl1bT4gTGF5ZXJUaWxlckNocm9taXVtOjpjcmVhdGUoTGF5ZXJSZW5kZXJl
ckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQm9yZGVy
VGV4ZWxPcHRpb24gYm9yZGVyKQogewpAQCAtODQsNiArMTAzLDcgQEAgdm9pZCBMYXllclRpbGVy
Q2hyb21pdW06OnNldFRpbGVTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgcmVzZXQoKTsK
IAogICAgIG1fdGlsZVNpemUgPSBzaXplOworICAgIG1fdGlsaW5nRGF0YS5zZXRNYXhUZXh0dXJl
U2l6ZShtYXgoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CiB9CiAKIExheWVyVGV4dHVy
ZSogTGF5ZXJUaWxlckNocm9taXVtOjpnZXRTaW5nbGVUZXh0dXJlKCkKQEAgLTE4OSwxMyArMjA5
LDkgQEAgSW50UmVjdCBMYXllclRpbGVyQ2hyb21pdW06OnRpbGVDb250ZW50UmVjdChjb25zdCBU
aWxlKiB0aWxlKSBjb25zdAogSW50UmVjdCBMYXllclRpbGVyQ2hyb21pdW06OnRpbGVMYXllclJl
Y3QoY29uc3QgVGlsZSogdGlsZSkgY29uc3QKIHsKICAgICBjb25zdCBpbnQgaW5kZXggPSBtX3Rp
bGluZ0RhdGEudGlsZUluZGV4KHRpbGUtPmkoKSwgdGlsZS0+aigpKTsKLSAgICByZXR1cm4gbV90
aWxpbmdEYXRhLnRpbGVCb3VuZHNXaXRoQm9yZGVyKGluZGV4KTsKLX0KLQotSW50UmVjdCBMYXll
clRpbGVyQ2hyb21pdW06OnRpbGVUZXhSZWN0KGNvbnN0IFRpbGUqIHRpbGUpIGNvbnN0Ci17Ci0g
ICAgY29uc3QgaW50IGluZGV4ID0gbV90aWxpbmdEYXRhLnRpbGVJbmRleCh0aWxlLT5pKCksIHRp
bGUtPmooKSk7Ci0gICAgcmV0dXJuIG1fdGlsaW5nRGF0YS50aWxlQm91bmRzV2l0aE91dGVyQm9y
ZGVyKGluZGV4KTsKKyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IG1fdGlsaW5nRGF0YS50aWxlQm91
bmRzV2l0aEJvcmRlcihpbmRleCk7CisgICAgbGF5ZXJSZWN0LnNldFNpemUobV90aWxlU2l6ZSk7
CisgICAgcmV0dXJuIGxheWVyUmVjdDsKIH0KIAogdm9pZCBMYXllclRpbGVyQ2hyb21pdW06Omlu
dmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQpAQCAtMjAzLDkgKzIxOSw2
IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCkKICAgICBpZiAoY29udGVudFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNE
cmF3KQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRTaXplIG9sZExheWVyU2l6ZShtX3RpbGlu
Z0RhdGEudG90YWxTaXplWCgpLCBtX3RpbGluZ0RhdGEudG90YWxTaXplWSgpKTsKLSAgICBjb25z
dCBJbnRSZWN0IG9sZExheWVyUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgb2xkTGF5ZXJTaXpl
KTsKLQogICAgIGdyb3dMYXllclRvQ29udGFpbihjb250ZW50UmVjdCk7CiAKICAgICAvLyBEaXJ0
eSByZWN0cyBhcmUgYWx3YXlzIGluIGxheWVyIHNwYWNlLCBhcyB0aGUgbGF5ZXIgY291bGQgYmUg
cmVwb3NpdGlvbmVkCkBAIC0yMjIsMTIgKzIzNSw2IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVt
OjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKICAgICAgICAgICAg
IEludFJlY3QgYm91bmQgPSB0aWxlTGF5ZXJSZWN0KHRpbGUpOwogICAgICAgICAgICAgYm91bmQu
aW50ZXJzZWN0KGxheWVyUmVjdCk7CiAgICAgICAgICAgICB0aWxlLT5tX2RpcnR5TGF5ZXJSZWN0
LnVuaXRlKGJvdW5kKTsKLQotICAgICAgICAgICAgLy8gSW52YWxpZGF0ZSBvbGQgbGF5ZXIgYXJl
YSB0byBjbGVhciBhbnkgY29udGVudHMgbGVmdCBmcm9tCi0gICAgICAgICAgICAvLyBwcmV2aW91
cyBsYXllciBzaXplLgotICAgICAgICAgICAgSW50UmVjdCBvbGRCb3VuZCA9IHRpbGVMYXllclJl
Y3QodGlsZSk7Ci0gICAgICAgICAgICBvbGRCb3VuZC5pbnRlcnNlY3Qob2xkTGF5ZXJSZWN0KTsK
LSAgICAgICAgICAgIHRpbGUtPm1fZGlydHlMYXllclJlY3QudW5pdGUob2xkQm91bmQpOwogICAg
ICAgICB9CiAgICAgfQogfQpAQCAtMjg0LDcgKzI5MSw2IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9t
aXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIExheWVyVGV4
dHVyCiAgICAgLy8gQ3JlYXRlIHRpbGVzIGFzIG5lZWRlZCwgZXhwYW5kaW5nIGEgZGlydHkgcmVj
dCB0byBjb250YWluIGFsbAogICAgIC8vIHRoZSBkaXJ0eSByZWdpb25zIGN1cnJlbnRseSBiZWlu
ZyBkcmF3bi4KICAgICBJbnRSZWN0IGRpcnR5TGF5ZXJSZWN0OwotICAgIEludFNpemUgdGlsZVNp
emU7CiAgICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKICAgICBjb250ZW50UmVjdFRv
VGlsZUluZGljZXMoY29udGVudFJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAgICAg
Zm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsraikgewpAQCAtMjkzLDE5ICsyOTksMTYg
QEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCwgTGF5ZXJUZXh0dXIKICAgICAgICAgICAgIGlmICghdGlsZSkKICAgICAg
ICAgICAgICAgICB0aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKIAotICAgICAgICAgICAgSW50U2l6
ZSB0ZXhTaXplID0gdGlsZVRleFJlY3QodGlsZSkuc2l6ZSgpOwotICAgICAgICAgICAgaWYgKCF0
aWxlLT50ZXh0dXJlKCktPmlzVmFsaWQodGV4U2l6ZSwgbV90ZXh0dXJlRm9ybWF0KSkKKyAgICAg
ICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZVNpemUsIG1fdGV4dHVy
ZUZvcm1hdCkpCiAgICAgICAgICAgICAgICAgdGlsZS0+bV9kaXJ0eUxheWVyUmVjdCA9IHRpbGVM
YXllclJlY3QodGlsZSk7CiAKLSAgICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5yZXNl
cnZlKHRleFNpemUsIG1fdGV4dHVyZUZvcm1hdCkpIHsKKyAgICAgICAgICAgIGlmICghdGlsZS0+
dGV4dHVyZSgpLT5yZXNlcnZlKG1fdGlsZVNpemUsIG1fdGV4dHVyZUZvcm1hdCkpIHsKICAgICAg
ICAgICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmVzZXQoKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGRp
cnR5TGF5ZXJSZWN0LnVuaXRlKHRpbGUtPm1fZGlydHlMYXllclJlY3QpOwotCi0gICAgICAgICAg
ICB0aWxlU2l6ZSA9IHRpbGVTaXplLmV4cGFuZGVkVG8odGV4U2l6ZSk7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTMxOCw3ICszMjEsNyBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBMYXllclRleHR1cgogICAgIGlm
IChkaXJ0eUxheWVyUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHRleHR1
cmVVcGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIHRpbGVTaXplLCBtX3RpbGlu
Z0RhdGEuYm9yZGVyVGV4ZWxzKCkpOworICAgIHRleHR1cmVVcGRhdGVyLT5wcmVwYXJlVG9VcGRh
dGUobV9wYWludFJlY3QsIG1fdGlsZVNpemUsIG1fdGlsaW5nRGF0YS5ib3JkZXJUZXhlbHMoKSk7
CiB9CiAKIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjp1cGRhdGVSZWN0KExheWVyVGV4dHVyZVVw
ZGF0ZXIqIHRleHR1cmVVcGRhdGVyKQpAQCAtMzQzLDggKzM0Niw3IEBAIHZvaWQgTGF5ZXJUaWxl
ckNocm9taXVtOjp1cGRhdGVSZWN0KExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVy
KQogCiAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgcGFnZS1zcGFjZSByZWN0YW5nbGUgdG8gY29w
eSBmcm9tLgogICAgICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gdGlsZUNvbnRlbnRSZWN0
KHRpbGUpOwotICAgICAgICAgICAgSW50UmVjdCB0ZXhSZWN0ID0gdGlsZVRleFJlY3QodGlsZSk7
Ci0gICAgICAgICAgICBjb25zdCBJbnRQb2ludCBhbmNob3IgPSB0ZXhSZWN0LmxvY2F0aW9uKCk7
CisgICAgICAgICAgICBjb25zdCBJbnRQb2ludCBhbmNob3IgPSBzb3VyY2VSZWN0LmxvY2F0aW9u
KCk7CiAgICAgICAgICAgICBzb3VyY2VSZWN0LmludGVyc2VjdChsYXllclJlY3RUb0NvbnRlbnRS
ZWN0KHRpbGUtPm1fZGlydHlMYXllclJlY3QpKTsKICAgICAgICAgICAgIC8vIFBhaW50IHJlY3Qg
bm90IGd1YXJhbnRlZWQgdG8gbGluZSB1cCBvbiB0aWxlIGJvdW5kYXJpZXMsIHNvCiAgICAgICAg
ICAgICAvLyBtYWtlIHN1cmUgdGhhdCBzb3VyY2VSZWN0IGRvZXNuJ3QgZXh0ZW5kIG91dHNpZGUg
b2YgaXQuCkBAIC00MTEsMTcgKzQxMyw3IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpncm93
TGF5ZXJUb0NvbnRhaW4oY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgLy8gR3JvdyB0
aGUgdGlsZSBhcnJheSB0byBjb250YWluIHRoaXMgY29udGVudCByZWN0LgogICAgIEludFJlY3Qg
bGF5ZXJSZWN0ID0gY29udGVudFJlY3RUb0xheWVyUmVjdChjb250ZW50UmVjdCk7CiAgICAgSW50
U2l6ZSByZWN0U2l6ZSA9IEludFNpemUobGF5ZXJSZWN0Lm1heFgoKSwgbGF5ZXJSZWN0Lm1heFko
KSk7Ci0gICAgSW50U2l6ZSB0ZXhTaXplID0gbV90aWxlU2l6ZTsKLQotICAgIC8vIFVzZSByZWN0
IHdpdGggYm9yZGVyIHRleGVscyBhcyBtYXggdGV4dHVyZSBzaXplIHdoZW4gdGlsZSBzaXplCi0g
ICAgLy8gaGFzIG5vdCBiZWVuIHNwZWNpZmllZC4KLSAgICBpZiAodGV4U2l6ZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgdGV4U2l6ZSA9IHJlY3RTaXplOwotICAgICAgICBpZiAobV90aWxpbmdEYXRh
LmJvcmRlclRleGVscygpKQotICAgICAgICAgICAgdGV4U2l6ZS5leHBhbmQoMiwgMik7Ci0gICAg
fQogCi0gICAgbV90aWxpbmdEYXRhLnNldE1heFRleHR1cmVTaXplKG1heCh0ZXhTaXplLndpZHRo
KCksIHRleFNpemUuaGVpZ2h0KCkpKTsKICAgICBJbnRTaXplIG9sZExheWVyU2l6ZShtX3RpbGlu
Z0RhdGEudG90YWxTaXplWCgpLCBtX3RpbGluZ0RhdGEudG90YWxTaXplWSgpKTsKICAgICBJbnRT
aXplIG5ld1NpemUgPSByZWN0U2l6ZS5leHBhbmRlZFRvKG9sZExheWVyU2l6ZSk7CiAgICAgbV90
aWxpbmdEYXRhLnNldFRvdGFsU2l6ZShuZXdTaXplLndpZHRoKCksIG5ld1NpemUuaGVpZ2h0KCkp
OwpAQCAtNDM2LDM1ICs0MjgsMTAgQEAgc3RhdGljIGJvb2wgaXNDQ1coY29uc3QgRmxvYXRRdWFk
JiBxdWFkKQogICAgIHJldHVybiAodjEueCgpICogdjIueSgpIC0gdjEueSgpICogdjIueCgpKSA8
IDA7CiB9CiAKLXN0YXRpYyBFZGdlIGNvbXB1dGVFZGdlKGNvbnN0IEZsb2F0UG9pbnQmIHAsIGNv
bnN0IEZsb2F0UG9pbnQmIHEsIGZsb2F0IHNpZ24pCi17Ci0gICAgQVNTRVJUKHAgIT0gcSk7Ci0K
LSAgICBGbG9hdFBvaW50IHRhbmdlbnQocC55KCkgLSBxLnkoKSwgcS54KCkgLSBwLngoKSk7Ci0g
ICAgZmxvYXQgc2NhbGUgPSBzaWduIC8gdGFuZ2VudC5sZW5ndGgoKTsKLSAgICBmbG9hdCBjcm9z
czIgPSBwLngoKSAqIHEueSgpIC0gcS54KCkgKiBwLnkoKTsKLQotICAgIHJldHVybiBFZGdlKHRh
bmdlbnQueCgpICogc2NhbGUsCi0gICAgICAgICAgICAgICAgdGFuZ2VudC55KCkgKiBzY2FsZSwK
LSAgICAgICAgICAgICAgICBjcm9zczIgKiBzY2FsZSk7Ci19Ci0KLXN0YXRpYyBGbG9hdFBvaW50
IGludGVyc2VjdChjb25zdCBFZGdlJiBhLCBjb25zdCBFZGdlJiBiKQotewotICAgIHJldHVybiBG
bG9hdFBvaW50KAotICAgICAgICAoYS55KCkgKiBiLnooKSAtIGIueSgpICogYS56KCkpIC8gKGEu
eCgpICogYi55KCkgLSBiLngoKSAqIGEueSgpKSwKLSAgICAgICAgKGEueCgpICogYi56KCkgLSBi
LngoKSAqIGEueigpKSAvIChiLngoKSAqIGEueSgpIC0gYS54KCkgKiBiLnkoKSkpOwotfQotCiB0
ZW1wbGF0ZSA8Y2xhc3MgVD4KIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGlsZXMoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBnbG9i
YWxUcmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIGNvbnN0IFQqIHByb2dyYW0pCiB7Ci0gICAgR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyQ29udGV4dCgpOwotICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwotICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIo
KS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5hY3Rp
dmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwotCi0gICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggbWF0cml4KGdsb2JhbFRyYW5zZm9ybSk7CisgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggbWF0cml4KGxheWVyUmVuZGVyZXIoKS0+d2luZG93TWF0cml4KCkgKiBsYXllclJlbmRl
cmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSAqIGdsb2JhbFRyYW5zZm9ybSk7CiAKICAgICAvLyBX
ZSBkb24ndCBjYXJlIGFib3V0IFogY29tcG9uZW50LgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IG1hdHJpeFhZVyA9CkBAIC00NzgsMzMgKzQ0NSw0NiBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1
bTo6ZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dAogICAgICAgICByZXR1cm47CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlID0g
bWF0cml4WFlXLmludmVyc2UoKTsKLSAgICBJbnRSZWN0IGJvdW5kcyhtX2xheWVyUG9zaXRpb24s
IEludFNpemUobV90aWxpbmdEYXRhLnRvdGFsU2l6ZVgoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV90aWxpbmdEYXRhLnRvdGFsU2l6ZVkoKSkpOwogCi0g
ICAgLy8gSW5jbHVkZSBvdXRlciBib3JkZXIgdGV4ZWxzIGluIGJvdW5kcy4KLSAgICBib3VuZHMu
aW5mbGF0ZShtX3RpbGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkpOworICAgIEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKKyAgICBHTEMoY29udGV4dCwg
Y29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKKyAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxv
Y2F0aW9uKCksIDApKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YWN0aXZlVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKKworICAgIEludFJlY3QgbGF5ZXJSZWN0ID0g
Y29udGVudFJlY3RUb0xheWVyUmVjdChjb250ZW50UmVjdCk7CisgICAgSW50UmVjdCBib3VuZHMo
bGF5ZXJSZWN0KTsKKyAgICBib3VuZHMubW92ZShtX2xheWVyUG9zaXRpb24ueCgpLCBtX2xheWVy
UG9zaXRpb24ueSgpKTsKIAogICAgIC8vIE1hcCBib3VuZHMgdG8gZGV2aWNlIHNwYWNlLgogICAg
IEZsb2F0UXVhZCBib3VuZHNRdWFkID0gbWF0cml4Lm1hcFF1YWQoRmxvYXRRdWFkKGJvdW5kcykp
OwogCisgICAgLy8gQ3JlYXRlIG91dGVyIGVkZ2VzLgorICAgIEVkZ2UgbGVmdEVkZ2UoYm91bmRz
UXVhZC5wNCgpLCBib3VuZHNRdWFkLnAxKCkpOworICAgIEVkZ2UgcmlnaHRFZGdlKGJvdW5kc1F1
YWQucDIoKSwgYm91bmRzUXVhZC5wMygpKTsKKyAgICBFZGdlIHRvcEVkZ2UoYm91bmRzUXVhZC5w
MSgpLCBib3VuZHNRdWFkLnAyKCkpOworICAgIEVkZ2UgYm90dG9tRWRnZShib3VuZHNRdWFkLnAz
KCksIGJvdW5kc1F1YWQucDQoKSk7CisKICAgICAvLyBDb3VudGVyLWNsb2Nrd2lzZT8KICAgICBm
bG9hdCBzaWduID0gaXNDQ1coYm91bmRzUXVhZCkgPyAtMSA6IDE7Ci0KLSAgICAvLyBDb21wdXRl
IG91dGVyIGVkZ2VzLgotICAgIEVkZ2UgbGVmdEVkZ2UgPSBjb21wdXRlRWRnZShib3VuZHNRdWFk
LnA0KCksIGJvdW5kc1F1YWQucDEoKSwgc2lnbik7Ci0gICAgRWRnZSByaWdodEVkZ2UgPSBjb21w
dXRlRWRnZShib3VuZHNRdWFkLnAyKCksIGJvdW5kc1F1YWQucDMoKSwgc2lnbik7Ci0gICAgRWRn
ZSB0b3BFZGdlID0gY29tcHV0ZUVkZ2UoYm91bmRzUXVhZC5wMSgpLCBib3VuZHNRdWFkLnAyKCks
IHNpZ24pOwotICAgIEVkZ2UgYm90dG9tRWRnZSA9IGNvbXB1dGVFZGdlKGJvdW5kc1F1YWQucDMo
KSwgYm91bmRzUXVhZC5wNCgpLCBzaWduKTsKKyAgICBsZWZ0RWRnZS5zY2FsZShzaWduKTsKKyAg
ICByaWdodEVkZ2Uuc2NhbGUoc2lnbik7CisgICAgdG9wRWRnZS5zY2FsZShzaWduKTsKKyAgICBi
b3R0b21FZGdlLnNjYWxlKHNpZ24pOwogCiAgICAgLy8gTW92ZSBvdXRlciBlZGdlcyB0byBlbnN1
cmUgdGhhdCBhbGwgcGFydGlhbGx5IGNvdmVyZWQgcGl4ZWxzIGFyZQogICAgIC8vIHByb2Nlc3Nl
ZC4KICAgICBmbG9hdCB6RGlzdGFuY2UgPSBtX3RpbGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkgKiAw
LjVmOwotICAgIGxlZnRFZGdlLm1vdmUoMCwgMCwgekRpc3RhbmNlKTsKLSAgICByaWdodEVkZ2Uu
bW92ZSgwLCAwLCB6RGlzdGFuY2UpOwotICAgIHRvcEVkZ2UubW92ZSgwLCAwLCB6RGlzdGFuY2Up
OwotICAgIGJvdHRvbUVkZ2UubW92ZSgwLCAwLCB6RGlzdGFuY2UpOwotCi0gICAgR0MzRGludCBm
aWx0ZXIgPSAobV90aWxpbmdEYXRhLmJvcmRlclRleGVscygpICYmICFtYXRyaXguaXNJbnRlZ2Vy
VHJhbnNsYXRpb24oKSkgPyBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSIDogR3JhcGhpY3NDb250
ZXh0M0Q6Ok5FQVJFU1Q7CisgICAgbGVmdEVkZ2Uuc2V0WihsZWZ0RWRnZS56KCkgKyB6RGlzdGFu
Y2UpOworICAgIHJpZ2h0RWRnZS5zZXRaKHJpZ2h0RWRnZS56KCkgKyB6RGlzdGFuY2UpOworICAg
IHRvcEVkZ2Uuc2V0Wih0b3BFZGdlLnooKSArIHpEaXN0YW5jZSk7CisgICAgYm90dG9tRWRnZS5z
ZXRaKGJvdHRvbUVkZ2UueigpICsgekRpc3RhbmNlKTsKKworICAgIC8vIFVzZSBzb2Z0IGVkZ2Vz
LgorICAgIGZsb2F0IGVkZ2VTaGFycG5lc3MgPSBtX3RpbGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkg
PyAwIDogMTsKKyAgICBsZWZ0RWRnZS5zZXRXKGVkZ2VTaGFycG5lc3MpOworICAgIHJpZ2h0RWRn
ZS5zZXRXKGVkZ2VTaGFycG5lc3MpOworICAgIHRvcEVkZ2Uuc2V0VyhlZGdlU2hhcnBuZXNzKTsK
KyAgICBib3R0b21FZGdlLnNldFcoZWRnZVNoYXJwbmVzcyk7CiAKICAgICBFZGdlIHByZXZFZGdl
WSA9IHRvcEVkZ2U7CiAKQEAgLTUxNiw2ICs0OTYsMTIgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21p
dW06OmRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXQKICAgICAgICAgRWRnZSBlZGdlWSA9IGJvdHRvbUVkZ2U7CiAgICAgICAgIGlmIChqIDwgKG1f
dGlsaW5nRGF0YS5udW1UaWxlc1koKSAtIDEpKSB7CiAgICAgICAgICAgICBJbnRSZWN0IHRpbGVS
ZWN0ID0gbV90aWxpbmdEYXRhLnRpbGVCb3VuZHMobV90aWxpbmdEYXRhLnRpbGVJbmRleCgwLCBq
KSk7CisgICAgICAgICAgICB0aWxlUmVjdC5pbnRlcnNlY3QobGF5ZXJSZWN0KTsKKworICAgICAg
ICAgICAgLy8gU2tpcCBlbXB0eSByb3dzLgorICAgICAgICAgICAgaWYgKHRpbGVSZWN0LmlzRW1w
dHkoKSkKKyAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgICAgIHRpbGVSZWN0Lm1v
dmUobV9sYXllclBvc2l0aW9uLngoKSwgbV9sYXllclBvc2l0aW9uLnkoKSk7CiAKICAgICAgICAg
ICAgIEZsb2F0UG9pbnQgcDEodGlsZVJlY3QubWF4WCgpLCB0aWxlUmVjdC5tYXhZKCkpOwpAQCAt
NTI1LDggKzUxMSwxMSBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdAogICAgICAgICAgICAgcDEg
PSBtYXRyaXgubWFwUG9pbnQocDEpOwogICAgICAgICAgICAgcDIgPSBtYXRyaXgubWFwUG9pbnQo
cDIpOwogCi0gICAgICAgICAgICAvLyBDb21wdXRlIGhvcml6b250YWwgZWRnZS4KLSAgICAgICAg
ICAgIGVkZ2VZID0gY29tcHV0ZUVkZ2UocDEsIHAyLCBzaWduKTsKKyAgICAgICAgICAgIC8vIENy
ZWF0ZSBob3Jpem9udGFsIGVkZ2UuCisgICAgICAgICAgICBlZGdlWSA9IEVkZ2UocDEsIHAyKTsK
KworICAgICAgICAgICAgLy8gQWRqdXN0IGRpcmVjdGlvbi4KKyAgICAgICAgICAgIGVkZ2VZLnNj
YWxlKHNpZ24pOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0g
cmlnaHQ7ICsraSkgewpAQCAtNTM3LDI3ICs1MjYsNTMgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21p
dW06OmRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXQKICAgICAgICAgICAgIEFTU0VSVCh0aWxlLT50ZXh0dXJlKCktPmlzUmVzZXJ2ZWQoKSk7CiAK
ICAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+YmluZFRleHR1cmUoKTsKLSAgICAgICAgICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBmaWx0ZXIp
KTsKLSAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdf
RklMVEVSLCBmaWx0ZXIpKTsKIAogICAgICAgICAgICAgLy8gRG9uJ3QgdXNlIHRpbGVDb250ZW50
UmVjdCBoZXJlLCBhcyB0aGF0IGNvbnRhaW5zIHRoZSBmdWxsCiAgICAgICAgICAgICAvLyByZWN0
IHdpdGggYm9yZGVyIHRleGVscyB3aGljaCBzaG91bGRuJ3QgYmUgZHJhd24uCiAgICAgICAgICAg
ICBJbnRSZWN0IHRpbGVSZWN0ID0gbV90aWxpbmdEYXRhLnRpbGVCb3VuZHMobV90aWxpbmdEYXRh
LnRpbGVJbmRleCh0aWxlLT5pKCksIHRpbGUtPmooKSkpOworICAgICAgICAgICAgSW50UmVjdCBk
aXNwbGF5UmVjdCA9IHRpbGVSZWN0OworICAgICAgICAgICAgdGlsZVJlY3QuaW50ZXJzZWN0KGxh
eWVyUmVjdCk7CisKKyAgICAgICAgICAgIC8vIEtlZXAgdHJhY2sgb2YgaG93IHRoZSB0b3AgbGVm
dCBoYXMgbW92ZWQsIHNvIHRoZSB0ZXh0dXJlIGNhbiBiZQorICAgICAgICAgICAgLy8gb2Zmc2V0
IHRoZSBzYW1lIGFtb3VudC4KKyAgICAgICAgICAgIEludFNpemUgZGlzcGxheU9mZnNldCA9IHRp
bGVSZWN0Lm1pblhNaW5ZQ29ybmVyKCkgLSBkaXNwbGF5UmVjdC5taW5YTWluWUNvcm5lcigpOwor
CisgICAgICAgICAgICAvLyBTa2lwIGVtcHR5IHRpbGVzLgorICAgICAgICAgICAgaWYgKHRpbGVS
ZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgICAgIHRp
bGVSZWN0Lm1vdmUobV9sYXllclBvc2l0aW9uLngoKSwgbV9sYXllclBvc2l0aW9uLnkoKSk7CiAK
LSAgICAgICAgICAgIEludFBvaW50IHRleE9mZnNldCA9IG1fdGlsaW5nRGF0YS50ZXh0dXJlT2Zm
c2V0KCk7Ci0gICAgICAgICAgICBJbnRSZWN0IHRleFJlY3QgPSB0aWxlVGV4UmVjdCh0aWxlKTsK
LSAgICAgICAgICAgIGZsb2F0IHRpbGVXaWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0Pih0ZXhSZWN0
LndpZHRoKCkpOwotICAgICAgICAgICAgZmxvYXQgdGlsZUhlaWdodCA9IHN0YXRpY19jYXN0PGZs
b2F0Pih0ZXhSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgICAgIGZsb2F0IHRleFRyYW5zbGF0ZVgg
PSAodGV4T2Zmc2V0LngoKSAtIHRpbGVSZWN0LngoKSkgLyB0aWxlV2lkdGg7Ci0gICAgICAgICAg
ICBmbG9hdCB0ZXhUcmFuc2xhdGVZID0gKHRleE9mZnNldC55KCkgLSB0aWxlUmVjdC55KCkpIC8g
dGlsZUhlaWdodDsKLSAgICAgICAgICAgIGZsb2F0IHRleFNjYWxlWCA9IHRpbGVSZWN0LndpZHRo
KCkgLyB0aWxlV2lkdGg7Ci0gICAgICAgICAgICBmbG9hdCB0ZXhTY2FsZVkgPSB0aWxlUmVjdC5o
ZWlnaHQoKSAvIHRpbGVIZWlnaHQ7CisgICAgICAgICAgICBGbG9hdFJlY3QgY2xhbXBSZWN0KHRp
bGVSZWN0KTsKKyAgICAgICAgICAgIC8vIENsYW1wIHRleHR1cmUgY29vcmRpbmF0ZXMgdG8gYXZv
aWQgc2FtcGxpbmcgb3V0c2lkZSB0aGUgbGF5ZXIuCisgICAgICAgICAgICAvLyBUT0RPKHJldmVt
YW4pOiBIYW5kbGUgc2luZ2xlIHBpeGVsIHdpZHRoL2hlaWdodC4KKyAgICAgICAgICAgIGlmIChj
bGFtcFJlY3Qud2lkdGgoKSA+IDEpCisgICAgICAgICAgICAgIGNsYW1wUmVjdC5pbmZsYXRlWCgt
MC41KTsKKyAgICAgICAgICAgIGlmIChjbGFtcFJlY3QuaGVpZ2h0KCkgPiAxKQorICAgICAgICAg
ICAgICBjbGFtcFJlY3QuaW5mbGF0ZVkoLTAuNSk7CisgICAgICAgICAgICBGbG9hdFNpemUgY2xh
bXBPZmZzZXQgPSBjbGFtcFJlY3QubWluWE1pbllDb3JuZXIoKSAtIEZsb2F0UmVjdCh0aWxlUmVj
dCkubWluWE1pbllDb3JuZXIoKTsKKworICAgICAgICAgICAgRmxvYXRQb2ludCB0ZXhPZmZzZXQg
PSBtX3RpbGluZ0RhdGEudGV4dHVyZU9mZnNldCh0aWxlLT5pKCksIHRpbGUtPmooKSkgKyBjbGFt
cE9mZnNldCArIEZsb2F0U2l6ZShkaXNwbGF5T2Zmc2V0KTsKKyAgICAgICAgICAgIGZsb2F0IHRp
bGVXaWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0PihtX3RpbGVTaXplLndpZHRoKCkpOworICAgICAg
ICAgICAgZmxvYXQgdGlsZUhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0PihtX3RpbGVTaXplLmhl
aWdodCgpKTsKKworICAgICAgICAgICAgLy8gTWFwIGNsYW1waW5nIHJlY3RhbmdsZSB0byB1bml0
IHNxdWFyZS4KKyAgICAgICAgICAgIGZsb2F0IHZzVGV4VHJhbnNsYXRlWCA9IC1jbGFtcFJlY3Qu
eCgpIC8gY2xhbXBSZWN0LndpZHRoKCk7CisgICAgICAgICAgICBmbG9hdCB2c1RleFRyYW5zbGF0
ZVkgPSAtY2xhbXBSZWN0LnkoKSAvIGNsYW1wUmVjdC5oZWlnaHQoKTsKKyAgICAgICAgICAgIGZs
b2F0IHZzVGV4U2NhbGVYID0gdGlsZVJlY3Qud2lkdGgoKSAvIGNsYW1wUmVjdC53aWR0aCgpOwor
ICAgICAgICAgICAgZmxvYXQgdnNUZXhTY2FsZVkgPSB0aWxlUmVjdC5oZWlnaHQoKSAvIGNsYW1w
UmVjdC5oZWlnaHQoKTsKKworICAgICAgICAgICAgLy8gTWFwIHRvIG5vcm1hbGl6ZWQgdGV4dHVy
ZSBjb29yZGluYXRlcy4KKyAgICAgICAgICAgIGZsb2F0IGZzVGV4VHJhbnNsYXRlWCA9IHRleE9m
ZnNldC54KCkgLyB0aWxlV2lkdGg7CisgICAgICAgICAgICBmbG9hdCBmc1RleFRyYW5zbGF0ZVkg
PSB0ZXhPZmZzZXQueSgpIC8gdGlsZUhlaWdodDsKKyAgICAgICAgICAgIGZsb2F0IGZzVGV4U2Nh
bGVYID0gY2xhbXBSZWN0LndpZHRoKCkgLyB0aWxlV2lkdGg7CisgICAgICAgICAgICBmbG9hdCBm
c1RleFNjYWxlWSA9IGNsYW1wUmVjdC5oZWlnaHQoKSAvIHRpbGVIZWlnaHQ7CisKICAgICAgICAg
ICAgIC8vIE9wZW5HTCBjb29yZGluYXRlIHN5c3RlbSBpcyBib3R0b20tdXAuCiAgICAgICAgICAg
ICAvLyBJZiB0aWxlIHRleHR1cmUgaXMgdG9wLWRvd24sIHdlIG5lZWQgdG8gZmxpcCB0aGUgdGV4
dHVyZSBjb29yZGluYXRlcy4KICAgICAgICAgICAgIGlmIChtX3RleHR1cmVPcmllbnRhdGlvbiA9
PSBMYXllclRleHR1cmVVcGRhdGVyOjpUb3BEb3duT3JpZW50YXRpb24pIHsKLSAgICAgICAgICAg
ICAgICB0ZXhUcmFuc2xhdGVZID0gMS4wIC0gdGV4VHJhbnNsYXRlWTsKLSAgICAgICAgICAgICAg
ICB0ZXhTY2FsZVkgKj0gLTEuMDsKKyAgICAgICAgICAgICAgICBmc1RleFRyYW5zbGF0ZVkgPSAx
LjAgLSBmc1RleFRyYW5zbGF0ZVk7CisgICAgICAgICAgICAgICAgZnNUZXhTY2FsZVkgKj0gLTEu
MDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgRWRnZSBlZGdlWCA9IHJpZ2h0RWRnZTsK
QEAgLTU2OSwxNSArNTg0LDE4IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGlsZXMo
Y29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0CiAgICAgICAgICAg
ICAgICAgcDEgPSBtYXRyaXgubWFwUG9pbnQocDEpOwogICAgICAgICAgICAgICAgIHAyID0gbWF0
cml4Lm1hcFBvaW50KHAyKTsKIAotICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgdmVydGljYWwg
ZWRnZS4KLSAgICAgICAgICAgICAgICBlZGdlWCA9IGNvbXB1dGVFZGdlKHAxLCBwMiwgc2lnbik7
CisgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHZlcnRpY2FsIGVkZ2UuCisgICAgICAgICAgICAg
ICAgZWRnZVggPSBFZGdlKHAxLCBwMik7CisKKyAgICAgICAgICAgICAgICAvLyBBZGp1c3QgZGly
ZWN0aW9uLgorICAgICAgICAgICAgICAgIGVkZ2VYLnNjYWxlKHNpZ24pOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAvLyBDcmVhdGUgZGV2aWNlIHNwYWNlIHF1YWQuCi0gICAgICAgICAg
ICBGbG9hdFF1YWQgZGV2aWNlUXVhZChpbnRlcnNlY3QoZWRnZVksIHByZXZFZGdlWCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3QocHJldkVkZ2VYLCBwcmV2RWRn
ZVkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJzZWN0KHByZXZFZGdl
WSwgZWRnZVgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJzZWN0KGVk
Z2VYLCBlZGdlWSkpOworICAgICAgICAgICAgRmxvYXRRdWFkIGRldmljZVF1YWQoRWRnZTo6aW50
ZXJzZWN0KGVkZ2VZLCBwcmV2RWRnZVgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRWRnZTo6aW50ZXJzZWN0KHByZXZFZGdlWCwgcHJldkVkZ2VZKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVkZ2U6OmludGVyc2VjdChwcmV2RWRnZVksIGVkZ2VYKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2U6OmludGVyc2VjdChlZGdlWCwgZWRn
ZVkpKTsKIAogICAgICAgICAgICAgLy8gTWFwIHF1YWQgdG8gbGF5ZXIgc3BhY2UuCiAgICAgICAg
ICAgICBGbG9hdFF1YWQgcXVhZCA9IGludmVyc2UubWFwUXVhZChkZXZpY2VRdWFkKTsKQEAgLTU4
NSwyMCArNjAzLDI2IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGlsZXMoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0CiAgICAgICAgICAgICAvLyBO
b3JtYWxpemUgdG8gdGlsZVJlY3QuCiAgICAgICAgICAgICBxdWFkLnNjYWxlKDEuMGYgLyB0aWxl
UmVjdC53aWR0aCgpLCAxLjBmIC8gdGlsZVJlY3QuaGVpZ2h0KCkpOwogCi0gICAgICAgICAgICBk
cmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIHF1YWQsIGxheWVyUmVuZGVyZXIoKS0+cHJvamVjdGlv
bk1hdHJpeCgpLCBtYXRyaXgsIHRpbGVSZWN0LndpZHRoKCksIHRpbGVSZWN0LmhlaWdodCgpLCBv
cGFjaXR5LCB0ZXhUcmFuc2xhdGVYLCB0ZXhUcmFuc2xhdGVZLCB0ZXhTY2FsZVgsIHRleFNjYWxl
WSwgcHJvZ3JhbSk7CisgICAgICAgICAgICBkcmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIHF1YWQs
IHByZXZFZGdlWCwgcHJldkVkZ2VZLCBlZGdlWCwgZWRnZVksIGxheWVyUmVuZGVyZXIoKS0+cHJv
amVjdGlvbk1hdHJpeCgpLCBnbG9iYWxUcmFuc2Zvcm0sIHRpbGVSZWN0LndpZHRoKCksIHRpbGVS
ZWN0LmhlaWdodCgpLCBvcGFjaXR5LCB2c1RleFRyYW5zbGF0ZVgsIHZzVGV4VHJhbnNsYXRlWSwg
dnNUZXhTY2FsZVgsIHZzVGV4U2NhbGVZLCBmc1RleFRyYW5zbGF0ZVgsIGZzVGV4VHJhbnNsYXRl
WSwgZnNUZXhTY2FsZVgsIGZzVGV4U2NhbGVZLCBwcm9ncmFtKTsKIAogICAgICAgICAgICAgcHJl
dkVkZ2VYID0gZWRnZVg7CisgICAgICAgICAgICAvLyBSZXZlcnNlIGRpcmVjdGlvbi4KKyAgICAg
ICAgICAgIHByZXZFZGdlWC5zY2FsZSgtMSk7CiAgICAgICAgIH0KIAogICAgICAgICBwcmV2RWRn
ZVkgPSBlZGdlWTsKKyAgICAgICAgLy8gUmV2ZXJzZSBkaXJlY3Rpb24uCisgICAgICAgIHByZXZF
ZGdlWS5zY2FsZSgtMSk7CiAgICAgfQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLXZvaWQgTGF5
ZXJUaWxlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBw
cm9qZWN0aW9uTWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCwK
K3ZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IEVkZ2UmIGxlZnQsIGNv
bnN0IEVkZ2UmIHRvcCwgY29uc3QgRWRnZSYgcmlnaHQsIGNvbnN0IEVkZ2UmIGJvdHRvbSwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHByb2plY3Rpb25NYXRyaXgsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBkcmF3TWF0cml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0eSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRleFRyYW5zbGF0
ZVgsIGZsb2F0IHRleFRyYW5zbGF0ZVksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCB0ZXhTY2FsZVgsIGZsb2F0IHRleFNjYWxlWSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHZzVGV4VHJhbnNsYXRlWCwgZmxv
YXQgdnNUZXhUcmFuc2xhdGVZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxvYXQgdnNUZXhTY2FsZVgsIGZsb2F0IHZzVGV4U2NhbGVZLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZnNUZXhUcmFuc2xhdGVYLCBmbG9h
dCBmc1RleFRyYW5zbGF0ZVksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbG9hdCBmc1RleFNjYWxlWCwgZmxvYXQgZnNUZXhTY2FsZVksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUKiBwcm9ncmFtKQogewogICAgIHN0
YXRpYyBmbG9hdCBnbE1hdHJpeFsxNl07CkBAIC02MTUsOCArNjM5LDExIEBAIHZvaWQgTGF5ZXJU
aWxlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBjb25zdCBGbG9hCiAKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFmKHByb2dy
YW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLCBvcGFjaXR5KSk7CiAKLSAgICBH
TEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTRmKHByb2dyYW0tPnZlcnRleFNoYWRlcigpLnRl
eFRyYW5zZm9ybUxvY2F0aW9uKCksCi0gICAgICAgIHRleFRyYW5zbGF0ZVgsIHRleFRyYW5zbGF0
ZVksIHRleFNjYWxlWCwgdGV4U2NhbGVZKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVu
aWZvcm00Zihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS52c1RleFRyYW5zZm9ybUxvY2F0aW9uKCks
CisgICAgICAgIHZzVGV4VHJhbnNsYXRlWCwgdnNUZXhUcmFuc2xhdGVZLCB2c1RleFNjYWxlWCwg
dnNUZXhTY2FsZVkpKTsKKworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtNGYocHJv
Z3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5mc1RleFRyYW5zZm9ybUxvY2F0aW9uKCksCisgICAgICAg
IGZzVGV4VHJhbnNsYXRlWCwgZnNUZXhUcmFuc2xhdGVZLCBmc1RleFNjYWxlWCwgZnNUZXhTY2Fs
ZVkpKTsKIAogICAgIGZsb2F0IHBvaW50WzhdOwogICAgIHBvaW50WzBdID0gcXVhZC5wMSgpLngo
KTsKQEAgLTYyOSw2ICs2NTYsMjUgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXdUZXh0
dXJlZFF1YWQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEZsb2EKICAgICBwb2lu
dFs3XSA9IHF1YWQucDQoKS55KCk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0y
ZnYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkucG9pbnRMb2NhdGlvbigpLCBwb2ludCwgNCkpOwog
CisgICAgZmxvYXQgZWRnZVsxNl07CisgICAgZWRnZVswXSA9IGxlZnQueCgpOworICAgIGVkZ2Vb
MV0gPSBsZWZ0LnkoKTsKKyAgICBlZGdlWzJdID0gbGVmdC56KCk7CisgICAgZWRnZVszXSA9IGxl
ZnQudygpOworICAgIGVkZ2VbNF0gPSB0b3AueCgpOworICAgIGVkZ2VbNV0gPSB0b3AueSgpOwor
ICAgIGVkZ2VbNl0gPSB0b3AueigpOworICAgIGVkZ2VbN10gPSB0b3AudygpOworICAgIGVkZ2Vb
OF0gPSByaWdodC54KCk7CisgICAgZWRnZVs5XSA9IHJpZ2h0LnkoKTsKKyAgICBlZGdlWzEwXSA9
IHJpZ2h0LnooKTsKKyAgICBlZGdlWzExXSA9IHJpZ2h0LncoKTsKKyAgICBlZGdlWzEyXSA9IGJv
dHRvbS54KCk7CisgICAgZWRnZVsxM10gPSBib3R0b20ueSgpOworICAgIGVkZ2VbMTRdID0gYm90
dG9tLnooKTsKKyAgICBlZGdlWzE1XSA9IGJvdHRvbS53KCk7CisgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPnVuaWZvcm00ZnYocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5lZGdlTG9jYXRpb24o
KSwgZWRnZSwgNCkpOworCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRyYXdFbGVtZW50cyhH
cmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVTLCA2LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdO
RURfU0hPUlQsIDApKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaAppbmRleCAwZWYx
MWEyNTVhZDFiNTE0MzM0ODUyOGQ5OTgzNGVlZTcyNDY3ZDI1Li42ZmNlOTFhMjA0MDJhNDJiNzNj
YzEzZTAzMjhlM2RiZGM4MzVjNjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaApAQCAt
NDcsNiArNDcsNDUgQEAgY2xhc3MgTGF5ZXJUaWxlckNocm9taXVtIHsKIHB1YmxpYzoKICAgICBl
bnVtIEJvcmRlclRleGVsT3B0aW9uIHsgSGFzQm9yZGVyVGV4ZWxzLCBOb0JvcmRlclRleGVscyB9
OwogCisgICAgY2xhc3MgRWRnZSB7CisgICAgcHVibGljOgorICAgICAgICBFZGdlKCkKKyAgICAg
ICAgICAgIDogbV94KDApCisgICAgICAgICAgICAsIG1feSgwKQorICAgICAgICAgICAgLCBtX3oo
MCkKKyAgICAgICAgICAgICwgbV93KDApCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBF
ZGdlKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jik7CisKKyAgICAgICAgZmxv
YXQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQorICAgICAgICB2b2lkIHNldFgoZmxvYXQgeCkg
eyBtX3ggPSB4OyB9CisKKyAgICAgICAgZmxvYXQgeSgpIGNvbnN0IHsgcmV0dXJuIG1feTsgfQor
ICAgICAgICB2b2lkIHNldFkoZmxvYXQgeSkgeyBtX3kgPSB5OyB9CisKKyAgICAgICAgZmxvYXQg
eigpIGNvbnN0IHsgcmV0dXJuIG1fejsgfQorICAgICAgICB2b2lkIHNldFooZmxvYXQgeikgeyBt
X3ogPSB6OyB9CisKKyAgICAgICAgZmxvYXQgdygpIGNvbnN0IHsgcmV0dXJuIG1fdzsgfQorICAg
ICAgICB2b2lkIHNldFcoZmxvYXQgdykgeyBtX3cgPSB3OyB9CisKKyAgICAgICAgdm9pZCBzY2Fs
ZShmbG9hdCBzKQorICAgICAgICB7CisgICAgICAgICAgICBtX3ggKj0gczsKKyAgICAgICAgICAg
IG1feSAqPSBzOworICAgICAgICAgICAgbV96ICo9IHM7CisgICAgICAgIH0KKworICAgICAgICBz
dGF0aWMgRmxvYXRQb2ludCBpbnRlcnNlY3QoY29uc3QgTGF5ZXJUaWxlckNocm9taXVtOjpFZGdl
JiwgY29uc3QgTGF5ZXJUaWxlckNocm9taXVtOjpFZGdlJik7CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBmbG9hdCBtX3g7CisgICAgICAgIGZsb2F0IG1feTsKKyAgICAgICAgZmxvYXQgbV96Owor
ICAgICAgICBmbG9hdCBtX3c7CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVy
VGlsZXJDaHJvbWl1bT4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGNvbnN0IEludFNp
emUmIHRpbGVTaXplLCBCb3JkZXJUZXhlbE9wdGlvbik7CiAKICAgICB+TGF5ZXJUaWxlckNocm9t
aXVtKCk7CkBAIC03NSwxMCArMTE0LDEwIEBAIHB1YmxpYzoKICAgICAvLyByZWN5Y2xlZCBieSB0
aGUgdGV4dHVyZSBtYW5hZ2VyLgogICAgIHZvaWQgcHJvdGVjdFRpbGVUZXh0dXJlcyhjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCk7CiAKLSAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRl
eFNoYWRlclBvc1RleFRyYW5zZm9ybSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGE+IFByb2dy
YW07CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJRdWFkLCBGcmFnbWVu
dFNoYWRlclJHQkFUZXhBbHBoYUFBPiBQcm9ncmFtOwogICAgIC8vIFNoYWRlciBwcm9ncmFtIHRo
YXQgc3dhcHMgcmVkIGFuZCBibHVlIGNvbXBvbmVudHMgb2YgdGV4dHVyZS4KICAgICAvLyBVc2Vk
IHdoZW4gdGV4dHVyZSBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggbmF0aXZlIGNvbG9yIGZvcm1hdC4K
LSAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwg
RnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhhPiBQcm9ncmFtU3dpenpsZTsKKyAgICB0
eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclF1YWQsIEZyYWdtZW50U2hhZGVyUkdC
QVRleFN3aXp6bGVBbHBoYUFBPiBQcm9ncmFtU3dpenpsZTsKIAogICAgIC8vIElmIHRoaXMgdGls
ZXIgaGFzIGV4YWN0bHkgb25lIHRpbGUsIHJldHVybiBpdHMgdGV4dHVyZS4gT3RoZXJ3aXNlLCBu
dWxsLgogICAgIExheWVyVGV4dHVyZSogZ2V0U2luZ2xlVGV4dHVyZSgpOwpAQCAtMTEzLDEwICsx
NTIsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25z
dCBUKiBwcm9ncmFtKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHZvaWQgZHJhd1Rl
eHR1cmVkUXVhZChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEZsb2F0UXVhZCYsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgZHJhd01hdHJpeCwKKyAgICB2b2lkIGRyYXdUZXh0dXJlZFF1YWQoR3JhcGhpY3ND
b250ZXh0M0QqLCBjb25zdCBGbG9hdFF1YWQmLCBjb25zdCBFZGdlJiwgY29uc3QgRWRnZSYsIGNv
bnN0IEVkZ2UmLCBjb25zdCBFZGdlJiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHByb2pl
Y3Rpb25NYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBv
cGFjaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0ZXhUcmFuc2xhdGVYLCBm
bG9hdCB0ZXhUcmFuc2xhdGVZLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0ZXhT
Y2FsZVgsIGZsb2F0IHRleFNjYWxlWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
dnNUZXhUcmFuc2xhdGVYLCBmbG9hdCB2c1RleFRyYW5zbGF0ZVksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IHZzVGV4U2NhbGVYLCBmbG9hdCB2c1RleFNjYWxlWSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgZnNUZXhUcmFuc2xhdGVYLCBmbG9hdCBmc1RleFRyYW5z
bGF0ZVksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGZzVGV4U2NhbGVYLCBmbG9h
dCBmc1RleFNjYWxlWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCogcHJvZ3Jh
bSk7CiAKICAgICAvLyBHcm93IGxheWVyIHNpemUgdG8gY29udGFpbiB0aGlzIHJlY3RhbmdsZS4K
QEAgLTEzNSw3ICsxNzYsNiBAQCBwcml2YXRlOgogICAgIFRpbGUqIHRpbGVBdChpbnQsIGludCkg
Y29uc3Q7CiAgICAgSW50UmVjdCB0aWxlQ29udGVudFJlY3QoY29uc3QgVGlsZSopIGNvbnN0Owog
ICAgIEludFJlY3QgdGlsZUxheWVyUmVjdChjb25zdCBUaWxlKikgY29uc3Q7Ci0gICAgSW50UmVj
dCB0aWxlVGV4UmVjdChjb25zdCBUaWxlKikgY29uc3Q7CiAKICAgICBHQzNEZW51bSBtX3RleHR1
cmVGb3JtYXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcAppbmRleCA2M2I4NjcwM2ZjYjFlMDgz
NDNhN2M5MGY3MjdkMGMwMTMxYjQ2NjA1Li5mMGFkNDc4MjQyNzY1ZjRiZjg1YjkxMzdhMWVkZGEx
ZGQyYjk0MGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCkBAIC0xMjQsNyArMTI0LDYgQEAg
U3RyaW5nIFZlcnRleFNoYWRlclBvczo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKIFZlcnRleFNo
YWRlclBvc1RleFRyYW5zZm9ybTo6VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtKCkKICAgICA6
IG1fbWF0cml4TG9jYXRpb24oLTEpCiAgICAgLCBtX3RleFRyYW5zZm9ybUxvY2F0aW9uKC0xKQot
ICAgICwgbV9wb2ludExvY2F0aW9uKC0xKQogewogfQogCkBAIC0xMzIsOCArMTMxLDcgQEAgdm9p
ZCBWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm06OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIHVuc2lnbmVkIHByb2cKIHsKICAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+
Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKICAgICBtX3RleFRyYW5zZm9y
bUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhUcmFu
c2Zvcm0iKTsKLSAgICBtX3BvaW50TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgInBvaW50Iik7Ci0gICAgQVNTRVJUKG1fbWF0cml4TG9jYXRpb24gIT0gLTEg
JiYgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiAhPSAtMSAmJiBtX3BvaW50TG9jYXRpb24gIT0gLTEp
OworICAgIEFTU0VSVChtX21hdHJpeExvY2F0aW9uICE9IC0xICYmIG1fdGV4VHJhbnNmb3JtTG9j
YXRpb24gIT0gLTEpOwogfQogCiBTdHJpbmcgVmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtOjpn
ZXRTaGFkZXJTdHJpbmcoKSBjb25zdApAQCAtMTQzLDcgKzE0MSwzNyBAQCBTdHJpbmcgVmVydGV4
U2hhZGVyUG9zVGV4VHJhbnNmb3JtOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAogICAgICAgICBh
dHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOwogICAgICAgICB1bmlmb3JtIG1hdDQgbWF0cml4Owog
ICAgICAgICB1bmlmb3JtIHZlYzQgdGV4VHJhbnNmb3JtOworICAgICAgICB2YXJ5aW5nIHZlYzIg
dl90ZXhDb29yZDsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAg
Z2xfUG9zaXRpb24gPSBtYXRyaXggKiBhX3Bvc2l0aW9uOworICAgICAgICAgICAgdl90ZXhDb29y
ZCA9IGFfdGV4Q29vcmQueHkgKiB0ZXhUcmFuc2Zvcm0uencgKyB0ZXhUcmFuc2Zvcm0ueHk7Cisg
ICAgICAgIH0KKyAgICApOworfQorCitWZXJ0ZXhTaGFkZXJRdWFkOjpWZXJ0ZXhTaGFkZXJRdWFk
KCkKKyAgICA6IG1fbWF0cml4TG9jYXRpb24oLTEpCisgICAgLCBtX3BvaW50TG9jYXRpb24oLTEp
Cit7Cit9CisKK3ZvaWQgVmVydGV4U2hhZGVyUXVhZDo6aW5pdChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBtX21hdHJpeExvY2F0aW9uID0gY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKKyAgICBtX3BvaW50
TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInBvaW50Iik7
CisgICAgbV92c1RleFRyYW5zZm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICJ2c1RleFRyYW5zZm9ybSIpOworICAgIEFTU0VSVChtX21hdHJpeExvY2F0
aW9uICE9IC0xICYmIG1fcG9pbnRMb2NhdGlvbiAhPSAtMSAmJiBtX3ZzVGV4VHJhbnNmb3JtTG9j
YXRpb24gIT0gLTEpOworfQorCitTdHJpbmcgVmVydGV4U2hhZGVyUXVhZDo6Z2V0U2hhZGVyU3Ry
aW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU0hBREVSKAorICAgICAgICBhdHRyaWJ1dGUgdmVj
NCBhX3Bvc2l0aW9uOworICAgICAgICBhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOworICAgICAg
ICB1bmlmb3JtIG1hdDQgbWF0cml4OwogICAgICAgICB1bmlmb3JtIHZlYzIgcG9pbnRbNF07Cisg
ICAgICAgIHVuaWZvcm0gdmVjNCB2c1RleFRyYW5zZm9ybTsKICAgICAgICAgdmFyeWluZyB2ZWMy
IHZfdGV4Q29vcmQ7CiAgICAgICAgIHZvaWQgbWFpbigpCiAgICAgICAgIHsKQEAgLTE1NCw3ICsx
ODIsNyBAQCBTdHJpbmcgVmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtOjpnZXRTaGFkZXJTdHJp
bmcoKSBjb25zdAogICAgICAgICAgICAgcG9zLnh5ICs9IChhX3RleENvb3JkLnggKiBhX3RleENv
b3JkLnkpICogcG9pbnRbMl07CiAgICAgICAgICAgICBwb3MueHkgKz0gKGNvbXBsZW1lbnQueCAq
IGFfdGV4Q29vcmQueSkgKiBwb2ludFszXTsKICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gbWF0
cml4ICogcG9zOwotICAgICAgICAgICAgdl90ZXhDb29yZCA9IHBvcy54eSAqIHRleFRyYW5zZm9y
bS56dyArIHRleFRyYW5zZm9ybS54eTsKKyAgICAgICAgICAgIHZfdGV4Q29vcmQgPSBwb3MueHkg
KiB2c1RleFRyYW5zZm9ybS56dyArIHZzVGV4VHJhbnNmb3JtLnh5OwogICAgICAgICB9CiAgICAg
KTsKIH0KQEAgLTIxOCw2ICsyNDYsNzAgQEAgU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleFN3
aXp6bGVBbHBoYTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKICAgICApOwogfQogCitGcmFnbWVu
dFRleEFscGhhQUFCaW5kaW5nOjpGcmFnbWVudFRleEFscGhhQUFCaW5kaW5nKCkKKyAgICA6IG1f
c2FtcGxlckxvY2F0aW9uKC0xKQorICAgICwgbV9hbHBoYUxvY2F0aW9uKC0xKQorICAgICwgbV9m
c1RleFRyYW5zZm9ybUxvY2F0aW9uKC0xKQorICAgICwgbV9lZGdlTG9jYXRpb24oLTEpCit7Cit9
CisKK3ZvaWQgRnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZzo6aW5pdChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9
IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7CisgICAg
bV9hbHBoYUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJh
bHBoYSIpOworICAgIG1fZnNUZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtLCAiZnNUZXhUcmFuc2Zvcm0iKTsKKyAgICBtX2VkZ2VMb2NhdGlv
biA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiZWRnZSIpOworCisgICAg
QVNTRVJUKG1fc2FtcGxlckxvY2F0aW9uICE9IC0xICYmIG1fYWxwaGFMb2NhdGlvbiAhPSAtMSAm
JiBtX2ZzVGV4VHJhbnNmb3JtTG9jYXRpb24gIT0gLTEgJiYgbV9lZGdlTG9jYXRpb24gIT0gLTEp
OworfQorCitTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQTo6Z2V0U2hhZGVyU3Ry
aW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU0hBREVSKAorICAgICAgICBwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAgIHVu
aWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsKKyAgICAgICAgdW5pZm9ybSBmbG9hdCBhbHBoYTsK
KyAgICAgICAgdW5pZm9ybSB2ZWM0IGZzVGV4VHJhbnNmb3JtOworICAgICAgICB1bmlmb3JtIHZl
YzQgZWRnZVs0XTsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmVjMiB0ZXhDb29yZCA9IGNsYW1wKHZfdGV4Q29vcmQsIDAuMCwgMS4wKSAqIGZzVGV4VHJhbnNm
b3JtLnp3ICsgZnNUZXhUcmFuc2Zvcm0ueHk7CisgICAgICAgICAgICB2ZWM0IHRleENvbG9yID0g
dGV4dHVyZTJEKHNfdGV4dHVyZSwgdGV4Q29vcmQpOworICAgICAgICAgICAgdmVjNCBwb3MgPSB2
ZWM0KGdsX0ZyYWdDb29yZC54eSwgMSwgMSk7CisgICAgICAgICAgICBmbG9hdCBhMCA9IGNsYW1w
KGRvdChlZGdlWzBdLCBwb3MpLCAwLjAsIDEuMCk7CisgICAgICAgICAgICBmbG9hdCBhMSA9IGNs
YW1wKGRvdChlZGdlWzFdLCBwb3MpLCAwLjAsIDEuMCk7CisgICAgICAgICAgICBmbG9hdCBhMiA9
IGNsYW1wKGRvdChlZGdlWzJdLCBwb3MpLCAwLjAsIDEuMCk7CisgICAgICAgICAgICBmbG9hdCBh
MyA9IGNsYW1wKGRvdChlZGdlWzNdLCBwb3MpLCAwLjAsIDEuMCk7CisgICAgICAgICAgICBnbF9G
cmFnQ29sb3IgPSB0ZXhDb2xvciAqIGFscGhhICogbWluKGEwLCBhMikgKiBtaW4oYTEsIGEzKTsK
KyAgICAgICAgfQorICAgICk7Cit9CisKK1N0cmluZyBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6
emxlQWxwaGFBQTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU0hBREVS
KAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgdmFyeWluZyB2ZWMy
IHZfdGV4Q29vcmQ7CisgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsKKyAgICAg
ICAgdW5pZm9ybSBmbG9hdCBhbHBoYTsKKyAgICAgICAgdW5pZm9ybSB2ZWM0IGZzVGV4VHJhbnNm
b3JtOworICAgICAgICB1bmlmb3JtIHZlYzQgZWRnZVs0XTsKKyAgICAgICAgdm9pZCBtYWluKCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmVjMiB0ZXhDb29yZCA9IGNsYW1wKHZfdGV4Q29vcmQs
IDAuMCwgMS4wKSAqIGZzVGV4VHJhbnNmb3JtLnp3ICsgZnNUZXhUcmFuc2Zvcm0ueHk7CisgICAg
ICAgICAgICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdGV4Q29vcmQpOwor
ICAgICAgICAgICAgdmVjNCBwb3MgPSB2ZWM0KGdsX0ZyYWdDb29yZC54eSwgMSwgMSk7CisgICAg
ICAgICAgICBmbG9hdCBhMCA9IGNsYW1wKGRvdChlZGdlWzBdLCBwb3MpLCAwLjAsIDEuMCk7Cisg
ICAgICAgICAgICBmbG9hdCBhMSA9IGNsYW1wKGRvdChlZGdlWzFdLCBwb3MpLCAwLjAsIDEuMCk7
CisgICAgICAgICAgICBmbG9hdCBhMiA9IGNsYW1wKGRvdChlZGdlWzJdLCBwb3MpLCAwLjAsIDEu
MCk7CisgICAgICAgICAgICBmbG9hdCBhMyA9IGNsYW1wKGRvdChlZGdlWzNdLCBwb3MpLCAwLjAs
IDEuMCk7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleENvbG9yLnosIHRleENv
bG9yLnksIHRleENvbG9yLngsIHRleENvbG9yLncpICogYWxwaGEgKiBtaW4oYTAsIGEyKSAqIG1p
bihhMSwgYTMpOworICAgICAgICB9CisgICAgKTsKK30KKwogRnJhZ21lbnRTaGFkZXJSR0JBVGV4
QWxwaGFNYXNrOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2soKQogICAgIDogbV9zYW1w
bGVyTG9jYXRpb24oLTEpCiAgICAgLCBtX21hc2tTYW1wbGVyTG9jYXRpb24oLTEpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVy
Q2hyb21pdW0uaAppbmRleCA0ZTgwYzgwN2UwOGM2NDBlMzA4MzVmMDViNjYyNjBlNjVkNmVjODIz
Li5iMTBjNjE0MGZkNDQ3ODgzMjEzMWFhODJmZGRiZWQ0ZDI2MjIzYzllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNo
cm9taXVtLmgKQEAgLTkwLDEyICs5MCwyNyBAQCBwdWJsaWM6CiAKICAgICBpbnQgbWF0cml4TG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9CiAgICAgaW50IHRleFRy
YW5zZm9ybUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsg
fQotICAgIGludCBwb2ludExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludExvY2F0aW9u
OyB9CiAKIHByaXZhdGU6CiAgICAgaW50IG1fbWF0cml4TG9jYXRpb247CiAgICAgaW50IG1fdGV4
VHJhbnNmb3JtTG9jYXRpb247Cit9OworCitjbGFzcyBWZXJ0ZXhTaGFkZXJRdWFkIHsKK3B1Ymxp
YzoKKyAgICBWZXJ0ZXhTaGFkZXJRdWFkKCk7CisKKyAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250
ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkg
Y29uc3Q7CisKKyAgICBpbnQgbWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21hdHJp
eExvY2F0aW9uOyB9CisgICAgaW50IHBvaW50TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bv
aW50TG9jYXRpb247IH0KKyAgICBpbnQgdnNUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fdnNUZXhUcmFuc2Zvcm1Mb2NhdGlvbjsgfQorCitwcml2YXRlOgorICAgIGludCBt
X21hdHJpeExvY2F0aW9uOwogICAgIGludCBtX3BvaW50TG9jYXRpb247CisgICAgaW50IG1fdnNU
ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsKIH07CiAKIGNsYXNzIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5n
IHsKQEAgLTEyNyw2ICsxNDIsMzQgQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJp
bmcoKSBjb25zdDsKIH07CiAKK2NsYXNzIEZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmcgeworcHVi
bGljOgorICAgIEZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmcoKTsKKworICAgIHZvaWQgaW5pdChH
cmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIGludCBhbHBoYUxvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbHBoYUxvY2F0aW9uOyB9CisgICAgaW50IHNhbXBsZXJM
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlckxvY2F0aW9uOyB9CisgICAgaW50IGZz
VGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZzVGV4VHJhbnNmb3JtTG9j
YXRpb247IH0KKyAgICBpbnQgZWRnZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lZGdlTG9j
YXRpb247IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV9zYW1wbGVyTG9jYXRpb247CisgICAgaW50
IG1fYWxwaGFMb2NhdGlvbjsKKyAgICBpbnQgbV9mc1RleFRyYW5zZm9ybUxvY2F0aW9uOworICAg
IGludCBtX2VkZ2VMb2NhdGlvbjsKK307CisKK2NsYXNzIEZyYWdtZW50U2hhZGVyUkdCQVRleEFs
cGhhQUEgOiBwdWJsaWMgRnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZyB7CitwdWJsaWM6CisgICAg
U3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OworfTsKKworLy8gU3dpenpsZXMgdGhlIHJl
ZCBhbmQgYmx1ZSBjb21wb25lbnQgb2Ygc2FtcGxlZCB0ZXhlbC4KK2NsYXNzIEZyYWdtZW50U2hh
ZGVyUkdCQVRleFN3aXp6bGVBbHBoYUFBIDogcHVibGljIEZyYWdtZW50VGV4QWxwaGFBQUJpbmRp
bmcgeworcHVibGljOgorICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKK307CisK
IGNsYXNzIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzayB7CiBwdWJsaWM6CiAgICAgRnJh
Z21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcAppbmRleCAzZTllNmRkMDQ4ZjIyMTVkMjg5NDkxNzU5MzQxZDdlMzc2YmMwZDI3Li41Njc1
Y2VhMTNhNmViZGFjMWQ5Y2IzYWE0ZTJmZmNjNTQ5YTA0ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KIAogLy8gU3RhcnQgdGlsaW5nIHdoZW4gdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgYSBs
YXllciBhcmUgbGFyZ2VyIHRoYW4gdGhpcyBzaXplLgotc3RhdGljIGludCBtYXhVbnRpbGVkU2l6
ZSA9IDUxMDsKK3N0YXRpYyBpbnQgbWF4VW50aWxlZFNpemUgPSA1MTI7CiAKIC8vIFdoZW4gdGls
aW5nIGlzIGVuYWJsZWQsIHVzZSB0aWxlcyBvZiB0aGlzIGRpbWVuc2lvbiBzcXVhcmVkLgogc3Rh
dGljIGludCBkZWZhdWx0VGlsZVNpemUgPSAyNTY7CkBAIC01MCw3ICs1MCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIFRpbGVkTGF5ZXJDaHJvbWl1bTo6VGlsZWRMYXllckNocm9taXVtKEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCiAgICAgOiBMYXllckNocm9taXVtKG93bmVyKQogICAg
ICwgbV90aWxpbmdPcHRpb24oQXV0b1RpbGUpCi0gICAgLCBtX2JvcmRlclRleGVscyh0cnVlKQog
ewogfQogCkBAIC04MCw3ICs3OSw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVU
aWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpCiAgICAgaWYgKCFtX3RpbGVyKQogICAgICAgICByZXR1
cm47CiAKLSAgICBjb25zdCBJbnRTaXplIHRpbGVTaXplKGRlZmF1bHRUaWxlU2l6ZSwgZGVmYXVs
dFRpbGVTaXplKTsKKyAgICBjb25zdCBJbnRTaXplIHRpbGVTaXplKG1pbihkZWZhdWx0VGlsZVNp
emUsIGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpKSwgbWluKGRlZmF1bHRUaWxlU2l6ZSwgY29udGVu
dEJvdW5kcygpLmhlaWdodCgpKSk7CiAKICAgICAvLyBUaWxlIGlmIGJvdGggZGltZW5zaW9ucyBs
YXJnZSwgb3IgYW55IG9uZSBkaW1lbnNpb24gbGFyZ2UgYW5kIHRoZSBvdGhlcgogICAgIC8vIGV4
dGVuZHMgaW50byBhIHNlY29uZCB0aWxlLiBUaGlzIGhldXJpc3RpYyBhbGxvd3MgZm9yIGxvbmcg
c2tpbm55IGxheWVycwpAQCAtOTcsOCArOTYsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6
dXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKQogICAgIGVsc2UKICAgICAgICAgaXNUaWxl
ZCA9IGF1dG9UaWxlZDsKIAotICAgIC8vIEVtcHR5IHRpbGUgc2l6ZSB0ZWxscyB0aGUgdGlsZXIg
dG8gYXZvaWQgdGlsaW5nLgotICAgIEludFNpemUgcmVxdWVzdGVkU2l6ZSA9IGlzVGlsZWQgPyB0
aWxlU2l6ZSA6IEludFNpemUoKTsKKyAgICBJbnRTaXplIHJlcXVlc3RlZFNpemUgPSBpc1RpbGVk
ID8gdGlsZVNpemUgOiBjb250ZW50Qm91bmRzKCk7CiAgICAgY29uc3QgaW50IG1heFNpemUgPSBs
YXllclJlbmRlcmVyKCktPm1heFRleHR1cmVTaXplKCk7CiAgICAgSW50U2l6ZSBjbGFtcGVkU2l6
ZSA9IHJlcXVlc3RlZFNpemUuc2hydW5rVG8oSW50U2l6ZShtYXhTaXplLCBtYXhTaXplKSk7CiAg
ICAgbV90aWxlci0+c2V0VGlsZVNpemUoY2xhbXBlZFNpemUpOwpAQCAtMTI4LDcgKzEyNiw3IEBA
IHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpjcmVhdGVUaWxlcklmTmVlZGVkKCkKICAgICBtX3Rp
bGVyID0gTGF5ZXJUaWxlckNocm9taXVtOjpjcmVhdGUoCiAgICAgICAgIGxheWVyUmVuZGVyZXIo
KSwKICAgICAgICAgSW50U2l6ZShkZWZhdWx0VGlsZVNpemUsIGRlZmF1bHRUaWxlU2l6ZSksCi0g
ICAgICAgIG1fYm9yZGVyVGV4ZWxzID8gTGF5ZXJUaWxlckNocm9taXVtOjpIYXNCb3JkZXJUZXhl
bHMgOiBMYXllclRpbGVyQ2hyb21pdW06Ok5vQm9yZGVyVGV4ZWxzKTsKKyAgICAgICAgTGF5ZXJU
aWxlckNocm9taXVtOjpIYXNCb3JkZXJUZXhlbHMpOwogfQogCiB2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpCkBAIC0xNDQsNyArMTQyLDYgQEAgdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnNldFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24gdGlsaW5n
T3B0aW9uKQogCiB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0SXNNYXNrKGJvb2wgaXNNYXNr
KQogewotICAgIG1fYm9yZGVyVGV4ZWxzID0gIWlzTWFzazsKICAgICBzZXRUaWxpbmdPcHRpb24o
aXNNYXNrID8gTmV2ZXJUaWxlIDogQXV0b1RpbGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5oCmluZGV4IDc4OGFkYzdmMTA4YWE2YTI1Y2IzZDRjZjhjZDE0OTMwZTY0NjQxNTcuLjJm
NDM2OWI2NDAzODM4NTE3MGM3NzE0MzJmZDdhMWVjMjcyMmNmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5oCkBAIC03Myw3ICs3Myw2IEBAIHByaXZhdGU6CiAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggdGlsaW5nVHJhbnNmb3JtKCkgY29uc3Q7CiAKICAgICBUaWxpbmdPcHRpb24gbV90
aWxpbmdPcHRpb247Ci0gICAgYm9vbCBtX2JvcmRlclRleGVsczsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcAppbmRl
eCAxMTNiZGUwYjIxMzhmOTFkNzcyZDNmZDUxYjhjMTNiNDA2Zjk4YTI5Li5mZjcwOGM3M2Q2YzNh
ODhjZGRmMDJjMDcyM2JiYWRlMzFjMzAwNGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuY3BwCkBAIC00NCwxMiArNDQsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgaW50IGNvbXB1dGVOdW1UaWxlcyhpbnQgbWF4
VGV4dHVyZVNpemUsIGludCB0b3RhbFNpemUsIGludCBib3JkZXJUZXhlbHMpCiB7Ci0gICAgaW50
IHRvdGFsU2l6ZVdpdGhCb3JkZXIgPSB0b3RhbFNpemUgKyAyICogYm9yZGVyVGV4ZWxzOwotCiAg
ICAgaWYgKG1heFRleHR1cmVTaXplIC0gMiAqIGJvcmRlclRleGVscyA8PSAwKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSA+IDAgJiYgbWF4VGV4dHVyZVNpemUg
Pj0gdG90YWxTaXplID8gMSA6IDA7CiAKLSAgICBpbnQgbnVtVGlsZXMgPSBtYXgoMSwgMSArICh0
b3RhbFNpemVXaXRoQm9yZGVyIC0gMSAtIDIgKiBib3JkZXJUZXhlbHMpIC8gKG1heFRleHR1cmVT
aXplIC0gMiAqIGJvcmRlclRleGVscykpOworICAgIGludCBudW1UaWxlcyA9IG1heCgxLCAxICsg
KHRvdGFsU2l6ZSAtIDEgLSAyICogYm9yZGVyVGV4ZWxzKSAvIChtYXhUZXh0dXJlU2l6ZSAtIDIg
KiBib3JkZXJUZXhlbHMpKTsKICAgICByZXR1cm4gdG90YWxTaXplID4gMCA/IG51bVRpbGVzIDog
MDsKIH0KIApAQCAtODEsNyArNzksNyBAQCBpbnQgVGlsaW5nRGF0YTo6dGlsZVhJbmRleEZyb21T
cmNDb29yZChpbnQgc3JjUG9zKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKIAogICAgIEFTU0VS
VChtX21heFRleHR1cmVTaXplIC0gMiAqIG1fYm9yZGVyVGV4ZWxzKTsKLSAgICBpbnQgeCA9IHNy
Y1BvcyAvIChtX21heFRleHR1cmVTaXplIC0gMiAqIG1fYm9yZGVyVGV4ZWxzKTsKKyAgICBpbnQg
eCA9IChzcmNQb3MgLSBtX2JvcmRlclRleGVscykgLyAobV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBt
X2JvcmRlclRleGVscyk7CiAgICAgcmV0dXJuIG1pbihtYXgoeCwgMCksIG51bVRpbGVzWCgpIC0g
MSk7CiB9CiAKQEAgLTkxLDcgKzg5LDcgQEAgaW50IFRpbGluZ0RhdGE6OnRpbGVZSW5kZXhGcm9t
U3JjQ29vcmQoaW50IHNyY1BvcykgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBBU1NF
UlQobV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBtX2JvcmRlclRleGVscyk7Ci0gICAgaW50IHkgPSBz
cmNQb3MgLyAobV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBtX2JvcmRlclRleGVscyk7CisgICAgaW50
IHkgPSAoc3JjUG9zIC0gbV9ib3JkZXJUZXhlbHMpIC8gKG1fbWF4VGV4dHVyZVNpemUgLSAyICog
bV9ib3JkZXJUZXhlbHMpOwogICAgIHJldHVybiBtaW4obWF4KHksIDApLCBudW1UaWxlc1koKSAt
IDEpOwogfQogCkBAIC0xMzQsMTYgKzEzMiw2IEBAIEludFJlY3QgVGlsaW5nRGF0YTo6dGlsZUJv
dW5kc1dpdGhCb3JkZXIoaW50IHRpbGUpIGNvbnN0CiAgICAgcmV0dXJuIGJvdW5kczsKIH0KIAot
SW50UmVjdCBUaWxpbmdEYXRhOjp0aWxlQm91bmRzV2l0aE91dGVyQm9yZGVyKGludCB0aWxlKSBj
b25zdAotewotICAgIEludFJlY3QgYm91bmRzID0gdGlsZUJvdW5kcyh0aWxlKTsKLQotICAgIGlm
IChtX2JvcmRlclRleGVscykKLSAgICAgICAgYm91bmRzLmluZmxhdGUoMSk7Ci0KLSAgICByZXR1
cm4gYm91bmRzOwotfQotCiBGbG9hdFJlY3QgVGlsaW5nRGF0YTo6dGlsZUJvdW5kc05vcm1hbGl6
ZWQoaW50IHRpbGUpIGNvbnN0CiB7CiAgICAgYXNzZXJ0VGlsZSh0aWxlKTsKQEAgLTE4MCw2ICsx
NjgsOCBAQCBpbnQgVGlsaW5nRGF0YTo6dGlsZVNpemVYKGludCB4SW5kZXgpIGNvbnN0CiAKICAg
ICBpZiAoIXhJbmRleCAmJiBtX251bVRpbGVzWCA9PSAxKQogICAgICAgICByZXR1cm4gbV90b3Rh
bFNpemVYOworICAgIGlmICgheEluZGV4ICYmIG1fbnVtVGlsZXNYID4gMSkKKyAgICAgICAgcmV0
dXJuIG1fbWF4VGV4dHVyZVNpemUgLSBtX2JvcmRlclRleGVsczsKICAgICBpZiAoeEluZGV4IDwg
bnVtVGlsZXNYKCkgLSAxKQogICAgICAgICByZXR1cm4gbV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBt
X2JvcmRlclRleGVsczsKICAgICBpZiAoeEluZGV4ID09IG51bVRpbGVzWCgpIC0gMSkKQEAgLTE5
NSw2ICsxODUsOCBAQCBpbnQgVGlsaW5nRGF0YTo6dGlsZVNpemVZKGludCB5SW5kZXgpIGNvbnN0
CiAKICAgICBpZiAoIXlJbmRleCAmJiBtX251bVRpbGVzWSA9PSAxKQogICAgICAgICByZXR1cm4g
bV90b3RhbFNpemVZOworICAgIGlmICgheUluZGV4ICYmIG1fbnVtVGlsZXNZID4gMSkKKyAgICAg
ICAgcmV0dXJuIG1fbWF4VGV4dHVyZVNpemUgLSBtX2JvcmRlclRleGVsczsKICAgICBpZiAoeUlu
ZGV4IDwgbnVtVGlsZXNZKCkgLSAxKQogICAgICAgICByZXR1cm4gbV9tYXhUZXh0dXJlU2l6ZSAt
IDIgKiBtX2JvcmRlclRleGVsczsKICAgICBpZiAoeUluZGV4ID09IG51bVRpbGVzWSgpIC0gMSkK
QEAgLTIzOCw4ICsyMzAsOCBAQCB2b2lkIFRpbGluZ0RhdGE6OmludGVyc2VjdERyYXdRdWFkKGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkcwogCiAgICAgKm5ld1Ny
YyA9IHNyY1JlY3RJbnRlcnNlY3RlZDsKICAgICBuZXdTcmMtPm1vdmUoCi0gICAgICAgIC10aWxl
Qm91bmRzLngoKSArIG1fYm9yZGVyVGV4ZWxzLAotICAgICAgICAtdGlsZUJvdW5kcy55KCkgKyBt
X2JvcmRlclRleGVscyk7CisgICAgICAgIC10aWxlQm91bmRzLngoKSArICgodGlsZVhJbmRleCh0
aWxlKSA+IDApID8gbV9ib3JkZXJUZXhlbHMgOiAwKSwKKyAgICAgICAgLXRpbGVCb3VuZHMueSgp
ICsgKCh0aWxlWUluZGV4KHRpbGUpID4gMCkgPyBtX2JvcmRlclRleGVscyA6IDApKTsKIAogICAg
ICpuZXdEc3QgPSBGbG9hdFJlY3QoCiAgICAgICAgIHNyY1JlY3RJbnRlcnNlY3RlZE5vcm1YICog
ZHN0UmVjdC53aWR0aCgpICsgZHN0UmVjdC54KCksCkBAIC0yNDgsOSArMjQwLDEyIEBAIHZvaWQg
VGlsaW5nRGF0YTo6aW50ZXJzZWN0RHJhd1F1YWQoY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIGRzCiAgICAgICAgIHNyY1JlY3RJbnRlcnNlY3RlZE5vcm1IICogZHN0
UmVjdC5oZWlnaHQoKSk7CiB9CiAKLUludFBvaW50IFRpbGluZ0RhdGE6OnRleHR1cmVPZmZzZXQo
KSBjb25zdAorSW50UG9pbnQgVGlsaW5nRGF0YTo6dGV4dHVyZU9mZnNldChpbnQgeEluZGV4LCBp
bnQgeUluZGV4KSBjb25zdAogewotICAgIHJldHVybiBJbnRQb2ludChtX2JvcmRlclRleGVscywg
bV9ib3JkZXJUZXhlbHMpOworICAgIGludCBsZWZ0ID0gKCF4SW5kZXggfHwgbV9udW1UaWxlc1gg
PT0gMSkgPyAwIDogbV9ib3JkZXJUZXhlbHM7CisgICAgaW50IHRvcCA9ICgheUluZGV4IHx8IG1f
bnVtVGlsZXNZID09IDEpID8gMCA6IG1fYm9yZGVyVGV4ZWxzOworCisgICAgcmV0dXJuIEludFBv
aW50KGxlZnQsIHRvcCk7CiB9CiAKIHZvaWQgVGlsaW5nRGF0YTo6cmVjb21wdXRlTnVtVGlsZXMo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGlu
Z0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRh
LmgKaW5kZXggNDNiMDhlMjI4NzQzYThkYmUzYTljZTE1OTllMjM0MzAzMjUzNWNhYy4uM2RhYmI1
ZGVjMzMwNmU3ZTI2MzE0MDViZGMyYzM0ZTk1MmQ0MjAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5oCkBAIC02MSw3ICs2MSw2IEBA
IHB1YmxpYzoKIAogICAgIEludFJlY3QgdGlsZUJvdW5kcyhpbnQgdGlsZSkgY29uc3Q7CiAgICAg
SW50UmVjdCB0aWxlQm91bmRzV2l0aEJvcmRlcihpbnQgdGlsZSkgY29uc3Q7Ci0gICAgSW50UmVj
dCB0aWxlQm91bmRzV2l0aE91dGVyQm9yZGVyKGludCB0aWxlKSBjb25zdDsKICAgICBGbG9hdFJl
Y3QgdGlsZUJvdW5kc05vcm1hbGl6ZWQoaW50IHRpbGUpIGNvbnN0OwogICAgIGludCB0aWxlUG9z
aXRpb25YKGludCB4SW5kZXgpIGNvbnN0OwogICAgIGludCB0aWxlUG9zaXRpb25ZKGludCB5SW5k
ZXgpIGNvbnN0OwpAQCAtNzUsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnRlcnNlY3RE
cmF3UXVhZChjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgaW50IHRpbGUsIEZsb2F0UmVjdCogbmV3U3JjLCBGbG9hdFJlY3QqIG5ld0RzdCkgY29uc3Q7
CiAKICAgICAvLyBEaWZmZXJlbmNlIGJldHdlZW4gdGlsZUJvdW5kJ3MgYW5kIHRpbGVCb3VuZFdp
dGhCb3JkZXIncyBsb2NhdGlvbigpLgotICAgIEludFBvaW50IHRleHR1cmVPZmZzZXQoKSBjb25z
dDsKKyAgICBJbnRQb2ludCB0ZXh0dXJlT2Zmc2V0KGludCB4SW5kZXgsIGludCB5SW5kZXgpIGNv
bnN0OwogCiBwcml2YXRlOgogICAgIFRpbGluZ0RhdGEoKSA6IG1fbWF4VGV4dHVyZVNpemUoMCks
IG1fdG90YWxTaXplWCgwKSwgbV90b3RhbFNpemVZKDApIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDE2YzJkNjMwYTZiYzYyODU1MmI0YWViNjY5M2YwZDliOTAwOGUyMjEuLjIyY2Ri
YmM2NTVmZmI5MDE2ZDNjOWFjM2VmYzNkZmUzOGFjMTA3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDctMjEgIERhdmlkIFJldmVtYW4gIDxyZXZl
bWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFJlbW92ZSBvdXRlciBib3Jk
ZXIgZnJvbSBUaWxpbmdEYXRhIGFzIGl0J3Mgbm8gbG9uZ2VyIG5lZWRlZCBieSBsYXllciBjb21w
b3NpdG9yIGZvciBhbnRpLWFsaWFzaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjQ5NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHRlc3RzL1RpbGluZ0RhdGFUZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRFU1QpOgorCiAyMDExLTA3LTIxICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bSBEZXZUb29sc10gUmVtb3ZlIHVudXNlZCBt
ZXRob2Qgc2V0QWdlbnRJZGVudGlmaWVyUHJlZml4IGZyb20gV2ViRGV2VG9vbEFnZW50LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxpbmdEYXRhVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGluZ0RhdGFUZXN0LmNwcAppbmRleCBk
ZGVmMGI5ODIyMzFmMjgwN2E0N2RjOTAzMjNkYmE0NTQ2YzM4OTY4Li43NjJlZGE5Mzk5MTUwZWJl
NGM5NzE5NDZhNzRlNTdjMzlhM2I1ZGQ1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1RpbGluZ0RhdGFUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1RpbGluZ0RhdGFUZXN0LmNwcApAQCAtNDEsMTAgKzQxLDEwIEBAIG5hbWVzcGFjZSB7
CiBURVNUKFRpbGluZ0RhdGFUZXN0LCBudW1UaWxlc19Ob1RpbGluZykKIHsKICAgICBFWFBFQ1Rf
RVEoMSwgVGlsaW5nRGF0YSgxNiwgMTYsIDE2LCBmYWxzZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQ
RUNUX0VRKDEsIFRpbGluZ0RhdGEoMTcsIDE1LCAxNSwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAg
RVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMTgsIDE2LCAxNiwgdHJ1ZSkubnVtVGlsZXMoKSk7Cisg
ICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMTYsIDE1LCAxNSwgdHJ1ZSkubnVtVGlsZXMoKSk7
CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMTYsIDE2LCAxNiwgdHJ1ZSkubnVtVGlsZXMo
KSk7CiAgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMTYsICAxLCAxNiwgZmFsc2UpLm51bVRp
bGVzKCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE3LCAxNSwgMTUsIHRydWUpLm51
bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE1LCAxNSwgMTUsIHRydWUp
Lm51bVRpbGVzKCkpOwogfQogCiBURVNUKFRpbGluZ0RhdGFUZXN0LCBudW1UaWxlc19UaWxpbmdO
b0JvcmRlcnMpCkBAIC0xMDksNDUgKzEwOSw0NSBAQCBURVNUKFRpbGluZ0RhdGFUZXN0LCBudW1U
aWxlc19UaWxpbmdXaXRoQm9yZGVycykKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgtMSwg
MSwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDAs
ICAxLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7CiAKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0
YSgxLCAgMSwgIDEsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdE
YXRhKDEsICAxLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7CiAgICAgRVhQRUNUX0VRKDAsIFRpbGlu
Z0RhdGEoMSwgIDEsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKICAgICBFWFBFQ1RfRVEoMCwgVGls
aW5nRGF0YSgxLCAgMiwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgwLCBU
aWxpbmdEYXRhKDIsICAxLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDAs
IFRpbGluZ0RhdGEoMiwgIDEsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEo
MCwgVGlsaW5nRGF0YSgyLCAgMiwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9F
USgwLCBUaWxpbmdEYXRhKDIsICAyLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0KLSAgICBFWFBF
Q1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgMSwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVY
UEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsICAxLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAg
RVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgIDIsICAxLCB0cnVlKS5udW1UaWxlcygpKTsKLSAg
ICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAgMiwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwot
ICAgIEVYUEVDVF9FUSg2LCBUaWxpbmdEYXRhKDMsICAyLCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7
Ci0gICAgRVhQRUNUX0VRKDYsIFRpbGluZ0RhdGEoMywgIDMsICAyLCB0cnVlKS5udW1UaWxlcygp
KTsKLSAgICBFWFBFQ1RfRVEoOSwgVGlsaW5nRGF0YSgzLCAgMywgIDMsIHRydWUpLm51bVRpbGVz
KCkpOwotCi0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwgIDEsICAyLCB0cnVlKS5udW1U
aWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg0LCAgMiwgIDIsIHRydWUpLm51
bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDQsICAzLCAgMiwgdHJ1ZSku
bnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNCwgIDQsICAyLCB0cnVl
KS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg0LCAgNSwgIDIsIHRy
dWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDQsICA2LCAgMiwg
dHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNCwgIDcsICAy
LCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg0LCAgOCwg
IDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDQsICA5
LCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNCwg
MTAsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoNiwgVGlsaW5nRGF0YSg0
LCAxMSwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotCi0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0Rh
dGEoNSwgIDEsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5n
RGF0YSg1LCAgMiwgIDMsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxp
bmdEYXRhKDUsICAzLCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRp
bGluZ0RhdGEoNSwgIDQsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMiwg
VGlsaW5nRGF0YSg1LCAgNSwgIDMsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgy
LCBUaWxpbmdEYXRhKDUsICA2LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VR
KDMsIFRpbGluZ0RhdGEoNSwgIDcsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1Rf
RVEoMywgVGlsaW5nRGF0YSg1LCAgOCwgIDMsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVD
VF9FUSgzLCBUaWxpbmdEYXRhKDUsICA5LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQ
RUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgMTAsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBF
WFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAxMSwgIDMsIHRydWUpLm51bVRpbGVzKCkpOworICAg
IEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDIsICAxLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7Cisg
ICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMiwgIDEsICAyLCB0cnVlKS5udW1UaWxlcygpKTsK
KyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgyLCAgMiwgIDEsIHRydWUpLm51bVRpbGVzKCkp
OworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDIsICAyLCAgMiwgdHJ1ZSkubnVtVGlsZXMo
KSk7CisKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgMSwgIDMsIHRydWUpLm51bVRp
bGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAyLCAgMywgdHJ1ZSkubnVt
VGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgIDMsICAzLCB0cnVlKS5u
dW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAgNCwgIDMsIHRydWUp
Lm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsICA1LCAgMywgdHJ1
ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgIDYsICAzLCB0
cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSgzLCAgNywgIDMs
IHRydWUpLm51bVRpbGVzKCkpOworCisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwgIDEs
ICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg0LCAg
MiwgIDQsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDQs
ICAzLCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEo
NCwgIDQsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0
YSg0LCAgNSwgIDQsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdE
YXRhKDQsICA2LCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGlu
Z0RhdGEoNCwgIDcsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGls
aW5nRGF0YSg0LCAgOCwgIDQsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSg0LCBU
aWxpbmdEYXRhKDQsICA5LCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDQs
IFRpbGluZ0RhdGEoNCwgMTAsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEo
NSwgVGlsaW5nRGF0YSg0LCAxMSwgIDQsIHRydWUpLm51bVRpbGVzKCkpOworCisgICAgRVhQRUNU
X0VRKDEsIFRpbGluZ0RhdGEoNSwgIDEsICA1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBF
Q1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgMiwgIDUsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVY
UEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICAzLCAgNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAg
RVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwgIDQsICA1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAg
ICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgNSwgIDUsIHRydWUpLm51bVRpbGVzKCkpOwor
ICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDUsICA2LCAgNSwgdHJ1ZSkubnVtVGlsZXMoKSk7
CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwgIDcsICA1LCB0cnVlKS5udW1UaWxlcygp
KTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSg1LCAgOCwgIDUsIHRydWUpLm51bVRpbGVz
KCkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA5LCAgNSwgdHJ1ZSkubnVtVGls
ZXMoKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMTAsICA1LCB0cnVlKS5udW1U
aWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMSwgIDUsIHRydWUpLm51
bVRpbGVzKCkpOwogfQogCiBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlWEluZGV4RnJvbVNyY0Nv
b3JkKQpAQCAtMTY2LDE3ICsxNjYsMTcgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgdGlsZVhJbmRl
eEZyb21TcmNDb29yZCkKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIGZh
bHNlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDExKSk7CiAKICAgICBFWFBFQ1RfRVEoMCwgVGls
aW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwotICAg
IEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21T
cmNDb29yZCgxKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVl
KS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDIpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0
YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMykpOwotICAgIEVYUEVD
VF9FUSg0LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29y
ZCg0KSk7Ci0gICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxl
WEluZGV4RnJvbVNyY0Nvb3JkKDUpKTsKLSAgICBFWFBFQ1RfRVEoNiwgVGlsaW5nRGF0YSgzLCAx
MCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoNikpOwotICAgIEVYUEVDVF9FUSg3
LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCg3KSk7
Ci0gICAgRVhQRUNUX0VRKDgsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4
RnJvbVNyY0Nvb3JkKDgpKTsKLSAgICBFWFBFQ1RfRVEoOSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAs
IHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoOSkpOwotICAgIEVYUEVDVF9FUSg5LCBUaWxp
bmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgxMCkpOwotICAg
IEVYUEVDVF9FUSg5LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21T
cmNDb29yZCgxMSkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1
ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgxKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0Rh
dGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDIpKTsKKyAgICBFWFBF
Q1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29v
cmQoMykpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGls
ZVhJbmRleEZyb21TcmNDb29yZCg0KSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywg
MTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDUpKTsKKyAgICBFWFBFQ1RfRVEo
NSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoNikp
OworICAgIEVYUEVDVF9FUSg2LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRl
eEZyb21TcmNDb29yZCg3KSk7CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEw
LCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDgpKTsKKyAgICBFWFBFQ1RfRVEoNywgVGls
aW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoOSkpOworICAg
IEVYUEVDVF9FUSg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21T
cmNDb29yZCgxMCkpOworICAgIEVYUEVDVF9FUSg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1
ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgxMSkpOwogCiAgICAgRVhQRUNUX0VRKDAsIFRpbGlu
Z0RhdGEoMSwgMSwgMSwgZmFsc2UpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwogICAgIEVY
UEVDVF9FUSgwLCBUaWxpbmdEYXRhKDIsIDIsIDIsIGZhbHNlKS50aWxlWEluZGV4RnJvbVNyY0Nv
b3JkKDApKTsKQEAgLTE5NCwxMyArMTk0LDEzIEBAIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVY
SW5kZXhGcm9tU3JjQ29vcmQpCiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgMiwgMiwg
dHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgwKSk7CiAgICAgRVhQRUNUX0VRKDAsIFRpbGlu
Z0RhdGEoMiwgMiwgMiwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgxKSk7CiAgICAgRVhQ
RUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29y
ZCgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMywgMywgdHJ1ZSkudGlsZVhJ
bmRleEZyb21TcmNDb29yZCgxKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMywg
MywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgyKSk7CisgICAgRVhQRUNUX0VRKDAsIFRp
bGluZ0RhdGEoMywgMywgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgxKSk7CisgICAg
RVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmND
b29yZCgyKSk7CiAKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSg0LCA0LCAzLCB0cnVlKS50
aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDApKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSg0
LCA0LCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKLSAgICBFWFBFQ1RfRVEo
MSwgVGlsaW5nRGF0YSg0LCA0LCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDIpKTsK
LSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg0LCA0LCAzLCB0cnVlKS50aWxlWEluZGV4RnJv
bVNyY0Nvb3JkKDMpKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCA0LCAzLCB0cnVl
KS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDApKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0
YSgzLCA0LCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKKyAgICBFWFBFQ1Rf
RVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDIp
KTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAzLCB0cnVlKS50aWxlWEluZGV4
RnJvbVNyY0Nvb3JkKDMpKTsKIH0KIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVZSW5kZXhGcm9t
U3JjQ29vcmQpCiB7CkBAIC0yMTgsMTcgKzIxOCwxNyBAQCBURVNUKFRpbGluZ0RhdGFUZXN0LCB0
aWxlWUluZGV4RnJvbVNyY0Nvb3JkKQogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDEw
LCAxMCwgZmFsc2UpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMTEpKTsKIAogICAgIEVYUEVDVF9F
USgwLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgw
KSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUlu
ZGV4RnJvbVNyY0Nvb3JkKDEpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAxMCwg
MTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMikpOwotICAgIEVYUEVDVF9FUSgzLCBU
aWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgzKSk7Ci0g
ICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJv
bVNyY0Nvb3JkKDQpKTsKLSAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRy
dWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNSkpOwotICAgIEVYUEVDVF9FUSg2LCBUaWxpbmdE
YXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg2KSk7Ci0gICAgRVhQ
RUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nv
b3JkKDcpKTsKLSAgICBFWFBFQ1RfRVEoOCwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRp
bGVZSW5kZXhGcm9tU3JjQ29vcmQoOCkpOwotICAgIEVYUEVDVF9FUSg5LCBUaWxpbmdEYXRhKDMs
IDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg5KSk7Ci0gICAgRVhQRUNUX0VR
KDksIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDEw
KSk7Ci0gICAgRVhQRUNUX0VRKDksIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUlu
ZGV4RnJvbVNyY0Nvb3JkKDExKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMTAs
IDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwg
VGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMikpOwor
ICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZy
b21TcmNDb29yZCgzKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0
cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDQpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5n
RGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNSkpOworICAgIEVY
UEVDVF9FUSg1LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmND
b29yZCg2KSk7CisgICAgRVhQRUNUX0VRKDYsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50
aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDcpKTsKKyAgICBFWFBFQ1RfRVEoNywgVGlsaW5nRGF0YSgz
LCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoOCkpOworICAgIEVYUEVDVF9F
USg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg5
KSk7CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUlu
ZGV4RnJvbVNyY0Nvb3JkKDEwKSk7CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAs
IDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDExKSk7CiAKICAgICBFWFBFQ1RfRVEo
MCwgVGlsaW5nRGF0YSgxLCAxLCAxLCBmYWxzZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgwKSk7
CiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgMiwgMiwgZmFsc2UpLnRpbGVZSW5kZXhG
cm9tU3JjQ29vcmQoMCkpOwpAQCAtMjQ2LDYxICsyNDYsNjEgQEAgVEVTVChUaWxpbmdEYXRhVGVz
dCwgdGlsZVlJbmRleEZyb21TcmNDb29yZCkKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgy
LCAyLCAyLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDApKTsKICAgICBFWFBFQ1RfRVEo
MCwgVGlsaW5nRGF0YSgyLCAyLCAyLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDEpKTsK
ICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxlWUluZGV4RnJv
bVNyY0Nvb3JkKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVl
KS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0
YSgzLCAzLCAzLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDIpKTsKKyAgICBFWFBFQ1Rf
RVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDEp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxlWUluZGV4
RnJvbVNyY0Nvb3JkKDIpKTsKIAotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDQsIDMsIDQs
IHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwotICAgIEVYUEVDVF9FUSgwLCBUaWxp
bmdEYXRhKDQsIDMsIDQsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkpOwotICAgIEVY
UEVDVF9FUSgxLCBUaWxpbmdEYXRhKDQsIDMsIDQsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29v
cmQoMikpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDQsIDMsIDQsIHRydWUpLnRpbGVZ
SW5kZXhGcm9tU3JjQ29vcmQoMykpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDMs
IDQsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMCkpOworICAgIEVYUEVDVF9FUSgwLCBU
aWxpbmdEYXRhKDMsIDMsIDQsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkpOworICAg
IEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDMsIDQsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3Jj
Q29vcmQoMikpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDMsIDQsIHRydWUpLnRp
bGVZSW5kZXhGcm9tU3JjQ29vcmQoMykpOwogfQogCiBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxl
U2l6ZVgpCiB7CiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDUsICA1LCBmYWxzZSku
dGlsZVNpemVYKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgNSwgIDUsIHRy
dWUpLnRpbGVTaXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDUsICA1
LCB0cnVlKS50aWxlU2l6ZVgoMCkpOwogCiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwg
IDYsICA2LCBmYWxzZSkudGlsZVNpemVYKDApKTsKICAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0
YSg1LCAgNiwgIDYsIGZhbHNlKS50aWxlU2l6ZVgoMSkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxp
bmdEYXRhKDUsICA2LCAgNiwgdHJ1ZSkudGlsZVNpemVYKDApKTsKLSAgICBFWFBFQ1RfRVEoMywg
VGlsaW5nRGF0YSg1LCAgNiwgIDYsIHRydWUpLnRpbGVTaXplWCgxKSk7CisgICAgRVhQRUNUX0VR
KDQsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVD
VF9FUSgyLCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgdHJ1ZSkudGlsZVNpemVYKDEpKTsKIAogICAg
IEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgZmFsc2UpLnRpbGVTaXplWCgwKSk7
CiAgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCBmYWxzZSkudGlsZVNpemVY
KDEpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIHRydWUpLnRpbGVT
aXplWCgwKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCB0cnVlKS50
aWxlU2l6ZVgoMSkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgdHJ1
ZSkudGlsZVNpemVYKDApKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAgOCwgIDgs
IHRydWUpLnRpbGVTaXplWCgxKSk7CiAKICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAx
MCwgMTAsIGZhbHNlKS50aWxlU2l6ZVgoMCkpOwogICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRh
KDUsIDEwLCAxMCwgZmFsc2UpLnRpbGVTaXplWCgxKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGlu
Z0RhdGEoNSwgMTAsIDEwLCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9FUSg0LCBU
aWxpbmdEYXRhKDUsIDEwLCAxMCwgdHJ1ZSkudGlsZVNpemVYKDApKTsKICAgICBFWFBFQ1RfRVEo
MywgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIHRydWUpLnRpbGVTaXplWCgxKSk7CiAgICAgRVhQRUNU
X0VRKDMsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCB0cnVlKS50aWxlU2l6ZVgoMikpOwogCi0gICAg
RVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMTEsIDExLCB0cnVlKS50aWxlU2l6ZVgoMikpOwor
ICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsIDExLCAxMSwgdHJ1ZSkudGlsZVNpemVYKDIp
KTsKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMiwgMTIsIHRydWUpLnRpbGVTaXpl
WCgyKSk7CiB9CiBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlU2l6ZVkpCiB7CiAgICAgRVhQRUNU
X0VRKDUsIFRpbGluZ0RhdGEoNSwgIDUsICA1LCBmYWxzZSkudGlsZVNpemVZKDApKTsKLSAgICBF
WFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgNSwgIDUsIHRydWUpLnRpbGVTaXplWSgwKSk7Cisg
ICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDUsICA1LCB0cnVlKS50aWxlU2l6ZVkoMCkp
OwogCiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCBmYWxzZSkudGlsZVNp
emVZKDApKTsKICAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIGZhbHNlKS50
aWxlU2l6ZVkoMSkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgdHJ1
ZSkudGlsZVNpemVZKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgNiwgIDYs
IHRydWUpLnRpbGVTaXplWSgxKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgIDYs
ICA2LCB0cnVlKS50aWxlU2l6ZVkoMCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDUs
ICA2LCAgNiwgdHJ1ZSkudGlsZVNpemVZKDEpKTsKIAogICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdE
YXRhKDUsICA4LCAgOCwgZmFsc2UpLnRpbGVTaXplWSgwKSk7CiAgICAgRVhQRUNUX0VRKDMsIFRp
bGluZ0RhdGEoNSwgIDgsICA4LCBmYWxzZSkudGlsZVNpemVZKDEpKTsKLSAgICBFWFBFQ1RfRVEo
MywgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIHRydWUpLnRpbGVTaXplWSgwKSk7Ci0gICAgRVhQRUNU
X0VRKDMsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCB0cnVlKS50aWxlU2l6ZVkoMSkpOworICAgIEVY
UEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgdHJ1ZSkudGlsZVNpemVZKDApKTsKKyAg
ICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIHRydWUpLnRpbGVTaXplWSgxKSk7
CiAKICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIGZhbHNlKS50aWxlU2l6
ZVkoMCkpOwogICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgZmFsc2UpLnRp
bGVTaXplWSgxKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCB0cnVl
KS50aWxlU2l6ZVkoMCkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwg
dHJ1ZSkudGlsZVNpemVZKDApKTsKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMCwg
MTAsIHRydWUpLnRpbGVTaXplWSgxKSk7CiAgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwg
MTAsIDEwLCB0cnVlKS50aWxlU2l6ZVkoMikpOwogCi0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0Rh
dGEoNSwgMTEsIDExLCB0cnVlKS50aWxlU2l6ZVkoMikpOworICAgIEVYUEVDVF9FUSg0LCBUaWxp
bmdEYXRhKDUsIDExLCAxMSwgdHJ1ZSkudGlsZVNpemVZKDIpKTsKICAgICBFWFBFQ1RfRVEoMywg
VGlsaW5nRGF0YSg1LCAxMiwgMTIsIHRydWUpLnRpbGVTaXplWSgyKSk7CiB9CiAKQEAgLTMxOSwx
MCArMzE5LDEwIEBAIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVTaXplWF9hbmRfdGlsZVBvc2l0
aW9uWCkKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAxLCAgIDEsIHRydWUpLnRpbGVQ
b3NpdGlvblgoMCkpOwogICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEsIDEwMCwgdHJ1
ZSkudGlsZVNpemVYKDApKTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAxLCAxMDAs
IHRydWUpLnRpbGVQb3NpdGlvblgoMCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUs
IDMsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDApKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0
YSg1LCAzLCAgIDEsIHRydWUpLnRpbGVQb3NpdGlvblgoMCkpOwotICAgIEVYUEVDVF9FUSgzLCBU
aWxpbmdEYXRhKDUsIDMsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDApKTsKLSAgICBFWFBFQ1RfRVEo
MCwgVGlsaW5nRGF0YSg1LCAzLCAxMDAsIHRydWUpLnRpbGVQb3NpdGlvblgoMCkpOworICAgIEVY
UEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDMsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDApKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAgIDEsIHRydWUpLnRpbGVQb3NpdGlvblgo
MCkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDMsIDEwMCwgdHJ1ZSkudGlsZVNp
emVYKDApKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAxMDAsIHRydWUpLnRp
bGVQb3NpdGlvblgoMCkpOwogCiAgICAgLy8gTXVsdGlwbGUgdGlsZXM6CiAgICAgLy8gbm8gYm9y
ZGVyCkBAIC0zNDAsMjMgKzM0MCwyMyBAQCBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlU2l6ZVhf
YW5kX3RpbGVQb3NpdGlvblgpCiAgICAgLy8gTXVsdGlwbGUgdGlsZXM6CiAgICAgLy8gd2l0aCBi
b3JkZXIKICAgICAvLyBwb3NpdGlvbnMgMCwgMiwgMywgNAotICAgIEVYUEVDVF9FUSg0LCBUaWxp
bmdEYXRhKDMsIDQsICAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRp
bGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS50aWxlU2l6ZVgoMCkpOwotICAgIEVYUEVDVF9FUSgx
LCBUaWxpbmdEYXRhKDMsIDQsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDEpKTsKLSAgICBFWFBFQ1Rf
RVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAgIDEsIHRydWUpLnRpbGVTaXplWCgyKSk7Ci0gICAgRVhQ
RUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS50aWxlU2l6ZVgoMykpOwotICAg
IEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDQsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgw
KSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS50aWxlUG9z
aXRpb25YKDEpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCA0LCAgIDEsIHRydWUp
LnRpbGVQb3NpdGlvblgoMikpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDQsICAg
MSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgzKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEo
MywgNCwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdE
YXRhKDMsIDQsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDEpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGls
aW5nRGF0YSgzLCA0LCAxMDAsIHRydWUpLnRpbGVTaXplWCgyKSk7Ci0gICAgRVhQRUNUX0VRKDEs
IFRpbGluZ0RhdGEoMywgNCwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMykpOwotICAgIEVYUEVDVF9F
USgwLCBUaWxpbmdEYXRhKDMsIDQsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7Ci0gICAg
RVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25YKDEp
KTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCA0LCAxMDAsIHRydWUpLnRpbGVQb3Np
dGlvblgoMikpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDQsIDEwMCwgdHJ1ZSku
dGlsZVBvc2l0aW9uWCgzKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgNiwgICAx
LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCA2LCAg
IDEsIHRydWUpLnRpbGVTaXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywg
NiwgICAxLCB0cnVlKS50aWxlU2l6ZVgoMSkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRh
KDMsIDYsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDIpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5n
RGF0YSgzLCA2LCAgIDEsIHRydWUpLnRpbGVTaXplWCgzKSk7CisgICAgRVhQRUNUX0VRKDAsIFRp
bGluZ0RhdGEoMywgNiwgICAxLCB0cnVlKS50aWxlUG9zaXRpb25YKDApKTsKKyAgICBFWFBFQ1Rf
RVEoMiwgVGlsaW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLnRpbGVQb3NpdGlvblgoMSkpOworICAg
IEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDYsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgy
KSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgNiwgICAxLCB0cnVlKS50aWxlUG9z
aXRpb25YKDMpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCA2LCAxMDAsIHRydWUp
LnRpbGVTaXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNiwgMTAwLCB0
cnVlKS50aWxlU2l6ZVgoMSkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDYsIDEw
MCwgdHJ1ZSkudGlsZVNpemVYKDIpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCA2
LCAxMDAsIHRydWUpLnRpbGVTaXplWCgzKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEo
MywgNiwgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25YKDApKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGls
aW5nRGF0YSgzLCA2LCAxMDAsIHRydWUpLnRpbGVQb3NpdGlvblgoMSkpOworICAgIEVYUEVDVF9F
USgzLCBUaWxpbmdEYXRhKDMsIDYsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgyKSk7CisgICAg
RVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgNiwgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25YKDMp
KTsKIH0KIAogVEVTVChUaWxpbmdEYXRhVGVzdCwgdGlsZVNpemVZX2FuZF90aWxlUG9zaXRpb25Z
KQpAQCAtMzc0LDEwICszNzQsMTAgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgdGlsZVNpemVZX2Fu
ZF90aWxlUG9zaXRpb25ZKQogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsICAgMSwgMSwg
dHJ1ZSkudGlsZVBvc2l0aW9uWSgwKSk7CiAgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywg
MTAwLCAxLCB0cnVlKS50aWxlU2l6ZVkoMCkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRh
KDMsIDEwMCwgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgwKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRp
bGluZ0RhdGEoNSwgICAxLCAzLCB0cnVlKS50aWxlU2l6ZVkoMCkpOwotICAgIEVYUEVDVF9FUSgw
LCBUaWxpbmdEYXRhKDUsICAgMSwgMywgdHJ1ZSkudGlsZVBvc2l0aW9uWSgwKSk7Ci0gICAgRVhQ
RUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMTAwLCAzLCB0cnVlKS50aWxlU2l6ZVkoMCkpOwotICAg
IEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDUsIDEwMCwgMywgdHJ1ZSkudGlsZVBvc2l0aW9uWSgw
KSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgICAxLCAzLCB0cnVlKS50aWxlU2l6
ZVkoMCkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsICAgMSwgMywgdHJ1ZSkudGls
ZVBvc2l0aW9uWSgwKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAwLCAzLCB0
cnVlKS50aWxlU2l6ZVkoMCkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEwMCwg
MywgdHJ1ZSkudGlsZVBvc2l0aW9uWSgwKSk7CiAKICAgICAvLyBNdWx0aXBsZSB0aWxlczoKICAg
ICAvLyBubyBib3JkZXIKQEAgLTM5NSwyMyArMzk1LDIzIEBAIFRFU1QoVGlsaW5nRGF0YVRlc3Qs
IHRpbGVTaXplWV9hbmRfdGlsZVBvc2l0aW9uWSkKICAgICAvLyBNdWx0aXBsZSB0aWxlczoKICAg
ICAvLyB3aXRoIGJvcmRlcgogICAgIC8vIHBvc2l0aW9ucyAwLCAyLCAzLCA0Ci0gICAgRVhQRUNU
X0VRKDQsIFRpbGluZ0RhdGEoMywgICAxLCA0LCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBF
Q1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgIDEsIDQsIHRydWUpLnRpbGVTaXplWSgwKSk7Ci0gICAg
RVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgICAxLCA0LCB0cnVlKS50aWxlU2l6ZVkoMSkpOwot
ICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAgMSwgNCwgdHJ1ZSkudGlsZVNpemVZKDIp
KTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgIDEsIDQsIHRydWUpLnRpbGVTaXpl
WSgzKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgICAxLCA0LCB0cnVlKS50aWxl
UG9zaXRpb25ZKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgIDEsIDQsIHRy
dWUpLnRpbGVQb3NpdGlvblkoMSkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsICAg
MSwgNCwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgyKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0Rh
dGEoMywgICAxLCA0LCB0cnVlKS50aWxlUG9zaXRpb25ZKDMpKTsKLSAgICBFWFBFQ1RfRVEoMSwg
VGlsaW5nRGF0YSgzLCAxMDAsIDQsIHRydWUpLnRpbGVTaXplWSgwKSk7Ci0gICAgRVhQRUNUX0VR
KDEsIFRpbGluZ0RhdGEoMywgMTAwLCA0LCB0cnVlKS50aWxlU2l6ZVkoMSkpOwotICAgIEVYUEVD
VF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwMCwgNCwgdHJ1ZSkudGlsZVNpemVZKDIpKTsKLSAgICBF
WFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDQsIHRydWUpLnRpbGVTaXplWSgzKSk7Ci0g
ICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMTAwLCA0LCB0cnVlKS50aWxlUG9zaXRpb25Z
KDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDQsIHRydWUpLnRpbGVQ
b3NpdGlvblkoMSkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDEwMCwgNCwgdHJ1
ZSkudGlsZVBvc2l0aW9uWSgyKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAw
LCA0LCB0cnVlKS50aWxlUG9zaXRpb25ZKDMpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0
YSgzLCAgIDEsIDYsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdE
YXRhKDMsICAgMSwgNiwgdHJ1ZSkudGlsZVNpemVZKDApKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGls
aW5nRGF0YSgzLCAgIDEsIDYsIHRydWUpLnRpbGVTaXplWSgxKSk7CisgICAgRVhQRUNUX0VRKDEs
IFRpbGluZ0RhdGEoMywgICAxLCA2LCB0cnVlKS50aWxlU2l6ZVkoMikpOworICAgIEVYUEVDVF9F
USgyLCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkudGlsZVNpemVZKDMpKTsKKyAgICBFWFBF
Q1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAgIDEsIDYsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOwor
ICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkudGlsZVBvc2l0aW9u
WSgxKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgICAxLCA2LCB0cnVlKS50aWxl
UG9zaXRpb25ZKDIpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAgIDEsIDYsIHRy
dWUpLnRpbGVQb3NpdGlvblkoMykpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDEw
MCwgNiwgdHJ1ZSkudGlsZVNpemVZKDApKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgz
LCAxMDAsIDYsIHRydWUpLnRpbGVTaXplWSgxKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0Rh
dGEoMywgMTAwLCA2LCB0cnVlKS50aWxlU2l6ZVkoMikpOworICAgIEVYUEVDVF9FUSgyLCBUaWxp
bmdEYXRhKDMsIDEwMCwgNiwgdHJ1ZSkudGlsZVNpemVZKDMpKTsKKyAgICBFWFBFQ1RfRVEoMCwg
VGlsaW5nRGF0YSgzLCAxMDAsIDYsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOworICAgIEVYUEVD
VF9FUSgyLCBUaWxpbmdEYXRhKDMsIDEwMCwgNiwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgxKSk7Cisg
ICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAwLCA2LCB0cnVlKS50aWxlUG9zaXRpb25Z
KDIpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAxMDAsIDYsIHRydWUpLnRpbGVQ
b3NpdGlvblkoMykpOwogfQogCiBURVNUKFRpbGluZ0RhdGFUZXN0LCBzZXRUb3RhbFNpemUpCkBA
IC00NjgsNyArNDY4LDcgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgc2V0TWF4VGV4dHVyZVNpemVO
b0JvcmRlcnMpCiAKIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHNldE1heFRleHR1cmVTaXplQm9yZGVy
cykKIHsKLSAgICBUaWxpbmdEYXRhIGRhdGEoOCwgMTYsIDMwLCB0cnVlKTsKKyAgICBUaWxpbmdE
YXRhIGRhdGEoOCwgMTYsIDMyLCB0cnVlKTsKICAgICBFWFBFQ1RfRVEoMywgZGF0YS5udW1UaWxl
c1goKSk7CiAgICAgRVhQRUNUX0VRKDUsIGRhdGEubnVtVGlsZXNZKCkpOwogCkBAIC00ODQsNyAr
NDg0LDcgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgc2V0TWF4VGV4dHVyZVNpemVCb3JkZXJzKQog
CiAgICAgZGF0YS5zZXRNYXhUZXh0dXJlU2l6ZSg1KTsKICAgICBFWFBFQ1RfRVEoNSwgZGF0YS5t
YXhUZXh0dXJlU2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVEoNiwgZGF0YS5udW1UaWxlc1goKSk7Cisg
ICAgRVhQRUNUX0VRKDUsIGRhdGEubnVtVGlsZXNYKCkpOwogICAgIEVYUEVDVF9FUSgxMCwgZGF0
YS5udW1UaWxlc1koKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101732</attachid>
            <date>2011-07-22 07:43:22 -0700</date>
            <delta_ts>2011-07-25 17:06:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64942-20110722104321.patch</filename>
            <type>text/plain</type>
            <size>70733</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE1NjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1Mjc0ODBjODllMmY1NjRhMDM4ZWQx
NTNhNmM3MDUxODMxMWRmNjg1Li5kNWE2Y2FkN2Y4ZmIyNjA0YTFlMWQyNGU5YWQwMzYyMTcwNDVk
N2Y4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMjEgIERhdmlkIFJldmVtYW4gIDxy
ZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFVzZSBlZGdlLWRpc3Rh
bmNlIG1ldGhvZCBmb3IgbGF5ZXIgYW50aS1hbGlhc2luZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGVkIHJlc3VsdHMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEt
MDctMjIgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OKHI4OTUzNSk6IEZvcm0gcmVzZXQgZG9lcyBub3QgcmVwYWludCBhIGZpbGUgdXBsb2Fk
IGNvbnRyb2wuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKaW5kZXggMTljN2E2NWE2Y2E5MzE5N2EyN2VmZmRhZTA2NmJjMjA1NTdh
MTYyOS4uNzRhMjUyMmIxMmQyNWE4ZGM3MTU2NmE5ZDJhY2UyNWFjNzA2YTBjNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApA
QCAtMzg0NiwzICszODQ2LDEyIEBAIEJVR1JOSVdBIFdJTiA6IGh0dHAvdGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS1ub24tdW5pcXVlLXVybC5oCiBCVUdSTklXQSA6
IGZhc3QvY3NzL2Fic29sdXRlLWNoaWxkLXdpdGgtcGVyY2VudC1oZWlnaHQtaW5zaWRlLXJlbGF0
aXZlLXBhcmVudC5odG1sID0gTUlTU0lORwogCiBCVUdXSzY1MDA5IE1BQyA6IHNjcm9sbGJhcnMv
c2Nyb2xsYmFyLWRyYWctdGh1bWItd2l0aC1sYXJnZS1jb250ZW50Lmh0bWwgPSBURVhUCisKK0JV
R1dLNjQ5NDIgOiBjb21wb3NpdGluZy9nZW9tZXRyeS9sYXllci1kdWUtdG8tbGF5ZXItY2hpbGRy
ZW4uaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVz
dGVkLXJlZmxlY3Rpb24tdHJhbnNpdGlvbi5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21w
b3NpdGluZy9yZWZsZWN0aW9ucy90cmFuc2Zvcm0taW5zaWRlLXJlZmxlY3Rpb24uaHRtbCA9IElN
QUdFCitCVUdXSzY0OTQyIDogY29tcG9zaXRpbmcvdHJhbnNpdGlvbnMvc2NhbGUtdHJhbnNpdGlv
bi1uby1zdGFydC5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBwbGF0Zm9ybS9jaHJvbWl1bS9j
b21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5LXRyYW5zZm9ybWVkLmh0bWwgPSBJTUFHRQor
QlVHV0s2NDk0MiA6IHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2h1Z2UtbGF5ZXItcm90
YXRlZC5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3Np
dGluZy9wZXJwZW5kaWN1bGFyLWxheWVyLXNvcnRpbmcuaHRtbCA9IElNQUdFCitCVUdXSzY0OTQy
IDogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvdGlueS1sYXllci1yb3RhdGVkLmh0bWwg
PSBJTUFHRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcwMmIxZTkxZTA0MmE2ZTJmYmI0MDFkOTY0OTc2M2RlZjkw
ZjQ3ZGYuLjM2MDkzYzhiMmU2NTljN2UwMzdkMDEyYThmODliY2YwMzEyOTNiZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw4NSBAQAorMjAxMS0wNy0yMSAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gVXNlIGVkZ2UtZGlzdGFuY2UgbWV0
aG9kIGZvciBsYXllciBhbnRpLWFsaWFzaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ5NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgYW4gZWRnZSBkaXN0YW5jZSBiYXNlZCBtZXRob2QgaW5z
dGVhZCBvZiB0aGUgY3VycmVudCBsaW5lYXIKKyAgICAgICAgZmlsdGVyaW5nIG1ldGhvZCBmb3Ig
cHJvZHVjaW5nIGFudGktYWxpYXNlZCBlZGdlcyBvbiAzRCB0cmFuc2Zvcm1lZAorICAgICAgICBs
YXllcnMuIFRoaXMgcmVtb3ZlcyB0aGUgb3V0ZXIgYm9yZGVyIGhhbmRsaW5nIGZyb20gVGlsaW5n
RGF0YSBhcworICAgICAgICBpdCdzIG5vIGxvbmdlciBuZWVkZWQgZm9yIGFudGktYWxpYXNpbmcu
CisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3RpbnktbGF5
ZXItcm90YXRlZC5odG1sIChleGlzdGluZykKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9t
aXVtL2NvbXBvc2l0aW5nL2h1Z2UtbGF5ZXItcm90YXRlZC5odG1sIChleGlzdGluZykKKyAgICAg
ICAgICAgICAgIGNvbXBvc2l0aW5nL2ltYWdlcy9jb250ZW50LWltYWdlLWNoYW5nZS5odG1sIChl
eGlzdGluZykKKyAgICAgICAgICAgICAgIFRpbGluZ0RhdGFUZXN0IGluIHdlYmtpdF91bml0X3Rl
c3RzCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuTWF0cml4KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldERyYXdWaWV3cG9ydFJlY3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5o
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp3aW5kb3dNYXRyaXgp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OkVkZ2U6OkVkZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpFZGdlOjppbnRlcnNlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpzZXRUaWxlU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OnRpbGVMYXllclJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjppbnZhbGlkYXRlUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0ZVJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpncm93TGF5ZXJUb0NvbnRhaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGlsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6RWRnZTo6RWRnZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclRpbGVyQ2hyb21pdW06OkVkZ2U6OngpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJUaWxlckNocm9taXVtOjpFZGdlOjpzZXRYKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGls
ZXJDaHJvbWl1bTo6RWRnZTo6eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21p
dW06OkVkZ2U6OnNldFkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpF
ZGdlOjp6KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6RWRnZTo6c2V0
Wik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OkVkZ2U6OncpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpFZGdlOjpzZXRXKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6RWRnZTo6c2NhbGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6VmVydGV4U2hhZGVyUG9zVGV4VHJh
bnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6
aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm06Omdl
dFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJRdWFkOjpWZXJ0
ZXhTaGFkZXJRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclF1YWQ6OmluaXQp
OgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUXVhZDo6Z2V0U2hhZGVyU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYTo6Z2V0U2hh
ZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhh
OjpnZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUFB
QmluZGluZzo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFnbWVudFRleEFscGhhQUFCaW5kaW5nOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdt
ZW50U2hhZGVyUkdCQVRleEFscGhhQUE6OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGFBQTo6Z2V0U2hhZGVyU3RyaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5o
OgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUXVhZDo6bWF0cml4TG9jYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUXVhZDo6cG9pbnRMb2NhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJRdWFkOjp2c1RleFRyYW5zZm9ybUxvY2F0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmc6OmFscGhhTG9jYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZzo6c2FtcGxl
ckxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmc6
OmZzVGV4VHJhbnNmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhB
bHBoYUFBQmluZGluZzo6ZWRnZUxvY2F0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRMYXllckNocm9taXVtOjpUaWxlZExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZVRpbGVySWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpzZXRJc01hc2spOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbXB1dGVOdW1UaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxpbmdEYXRhOjp0
aWxlWEluZGV4RnJvbVNyY0Nvb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6OnRp
bGVZSW5kZXhGcm9tU3JjQ29vcmQpOgorICAgICAgICAoV2ViQ29yZTo6VGlsaW5nRGF0YTo6dGls
ZVNpemVYKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6OnRpbGVTaXplWSk6CisgICAg
ICAgIChXZWJDb3JlOjpUaWxpbmdEYXRhOjppbnRlcnNlY3REcmF3UXVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUaWxpbmdEYXRhOjp0ZXh0dXJlT2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvVGlsaW5nRGF0YS5oOgorCiAyMDExLTA3LTIyICBLZW50YXJvIEhhcmEgIDxo
YXJha2VuQGdvb2dsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyODk1MzUpOiBGb3JtIHJl
c2V0IGRvZXMgbm90IHJlcGFpbnQgYSBmaWxlIHVwbG9hZCBjb250cm9sLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggNGEzYmExODY1MjJkOTA4MjQyYzk0YzVkOGJh
ZjU0MmY2Nzc1N2RkZi4uNzIyMDU0YmJjN2IxMTdlNTJiYzA5ZjM2OGU1OTE1Y2I4NzAzZGU3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC05Niw2ICs5NiwyMSBA
QCBzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggb3J0aG9NYXRyaXgoZmxvYXQgbGVmdCwgZmxv
YXQgcmlnaHQsIGZsb2F0IGJvdHRvbSwgZgogICAgIHJldHVybiBvcnRobzsKIH0KIAorc3RhdGlj
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHNjcmVlbk1hdHJpeChpbnQgeCwgaW50IHksIGludCB3aWR0
aCwgaW50IGhlaWdodCkKK3sKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW47CisKKyAg
ICAvLyBNYXAgdG8gdmlld3BvcnQuCisgICAgc2NyZWVuLnRyYW5zbGF0ZTNkKHgsIHksIDApOwor
ICAgIHNjcmVlbi5zY2FsZTNkKHdpZHRoLCBoZWlnaHQsIDApOworCisgICAgLy8gTWFwIHgsIHkg
YW5kIHogdG8gdW5pdCBzcXVhcmUuCisgICAgc2NyZWVuLnRyYW5zbGF0ZTNkKDAuNSwgMC41LCAw
LjUpOworICAgIHNjcmVlbi5zY2FsZTNkKDAuNSwgMC41LCAwLjUpOworCisgICAgcmV0dXJuIHNj
cmVlbjsKK30KKwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBtYXRyaXggaGFzIG5vIHJvdGF0aW9u
LCBza2V3IG9yIHBlcnNwZWN0aXZlIGNvbXBvbmVudHMgdG8gaXQuCiBzdGF0aWMgYm9vbCBpc1Nj
YWxlT3JUcmFuc2xhdGlvbihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbSkKIHsKQEAgLTQ5
OSw2ICs1MTQsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyhjb25z
dCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCiAKICAgICAvLyBUaGUgR0wgdmll
d3BvcnQgY292ZXJzIHRoZSBlbnRpcmUgdmlzaWJsZSBhcmVhLCBpbmNsdWRpbmcgdGhlIHNjcm9s
bGJhcnMuCiAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAw
LCBtX3ZpZXdwb3J0VmlzaWJsZVJlY3Qud2lkdGgoKSwgbV92aWV3cG9ydFZpc2libGVSZWN0Lmhl
aWdodCgpKSk7CisgICAgbV93aW5kb3dNYXRyaXggPSBzY3JlZW5NYXRyaXgoMCwgMCwgbV92aWV3
cG9ydFZpc2libGVSZWN0LndpZHRoKCksIG1fdmlld3BvcnRWaXNpYmxlUmVjdC5oZWlnaHQoKSk7
CiAKICAgICAvLyBCaW5kIHRoZSBjb21tb24gdmVydGV4IGF0dHJpYnV0ZXMgdXNlZCBmb3IgZHJh
d2luZyBhbGwgdGhlIGxheWVycy4KICAgICBtX3NoYXJlZEdlb21ldHJ5LT5wcmVwYXJlRm9yRHJh
dygpOwpAQCAtMTEzNyw2ICsxMTUzLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNl
dERyYXdWaWV3cG9ydFJlY3QoY29uc3QgSW50UmVjdCYgZHJhd1JlY3QsIGJvb2wgZmwKICAgICBl
bHNlCiAgICAgICAgIG1fcHJvamVjdGlvbk1hdHJpeCA9IG9ydGhvTWF0cml4KGRyYXdSZWN0Lngo
KSwgZHJhd1JlY3QubWF4WCgpLCBkcmF3UmVjdC55KCksIGRyYXdSZWN0Lm1heFkoKSk7CiAgICAg
R0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBkcmF3UmVjdC53
aWR0aCgpLCBkcmF3UmVjdC5oZWlnaHQoKSkpOworICAgIG1fd2luZG93TWF0cml4ID0gc2NyZWVu
TWF0cml4KDAsIDAsIGRyYXdSZWN0LndpZHRoKCksIGRyYXdSZWN0LmhlaWdodCgpKTsKIH0KIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDkzOGUwNWY3ZTQ2YzA0NWI4
Yjg4ZmQzZTU4Njk0ZmM1YjI0OTc5NjUuLjNiM2Y4NThkYjUzODY2MTFlOTJmN2JiMzBlOTAwYWZh
ZmRlNjBiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMjIsNiAr
MTIyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRlYnVnR0xDYWxsKEdyYXBoaWNzQ29u
dGV4dDNEKiwgY29uc3QgY2hhciogY29tbWFuZCwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUp
OwogCiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHByb2plY3Rpb25NYXRyaXgoKSBj
b25zdCB7IHJldHVybiBtX3Byb2plY3Rpb25NYXRyaXg7IH0KKyAgICBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgd2luZG93TWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dNYXRyaXg7
IH0KIAogICAgIGJvb2wgY2hlY2tUZXh0dXJlU2l6ZShjb25zdCBJbnRTaXplJik7CiAgICAgaW50
IG1heFRleHR1cmVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXhUZXh0dXJlU2l6ZTsgfQpAQCAt
MjEwLDYgKzIxMSw3IEBAIHByaXZhdGU6CiAgICAgSW50UG9pbnQgbV92aWV3cG9ydFNjcm9sbFBv
c2l0aW9uOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9wcm9qZWN0aW9uTWF0cml4Owor
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fd2luZG93TWF0cml4OwogCiAgICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwogICAgIE93blB0cjxMYXllclRleHR1cmVVcGRhdGVy
PiBtX3Jvb3RMYXllclRleHR1cmVVcGRhdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5j
cHAKaW5kZXggNzY5ZjhlNzFkYjNiODZkMzFmZDVmMDRjYzQ0Y2VlN2QwYjU3NmUxYS4uN2JiYTA1
ZmJlY2QxNjkyNzAxY2NlZDYxZDE1N2ZiODFkMWFiYjQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVy
Q2hyb21pdW0uY3BwCkBAIC00NCw3ICs0NCwyNiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgRmxvYXRQb2ludDNEIEVkZ2U7CitMYXllclRp
bGVyQ2hyb21pdW06OkVkZ2U6OkVkZ2UoY29uc3QgRmxvYXRQb2ludCYgcCwgY29uc3QgRmxvYXRQ
b2ludCYgcSkKK3sKKyAgICBBU1NFUlQocCAhPSBxKTsKKworICAgIEZsb2F0UG9pbnQgdGFuZ2Vu
dChwLnkoKSAtIHEueSgpLCBxLngoKSAtIHAueCgpKTsKKyAgICBmbG9hdCBzY2FsZSA9IDEuMCAv
IHRhbmdlbnQubGVuZ3RoKCk7CisgICAgZmxvYXQgY3Jvc3MyID0gcC54KCkgKiBxLnkoKSAtIHEu
eCgpICogcC55KCk7CisKKyAgICBtX3ggPSB0YW5nZW50LngoKSAqIHNjYWxlOworICAgIG1feSA9
IHRhbmdlbnQueSgpICogc2NhbGU7CisgICAgbV96ID0gY3Jvc3MyICogc2NhbGU7CisgICAgbV93
ID0gMTsKK30KKworRmxvYXRQb2ludCBMYXllclRpbGVyQ2hyb21pdW06OkVkZ2U6OmludGVyc2Vj
dChjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OkVkZ2UmIGEsIGNvbnN0IExheWVyVGlsZXJDaHJv
bWl1bTo6RWRnZSYgYikKK3sKKyAgICByZXR1cm4gRmxvYXRQb2ludCgKKyAgICAgICAgKGEubV95
ICogYi5tX3ogLSBiLm1feSAqIGEubV96KSAvIChhLm1feCAqIGIubV95IC0gYi5tX3ggKiBhLm1f
eSksCisgICAgICAgIChhLm1feCAqIGIubV96IC0gYi5tX3ggKiBhLm1feikgLyAoYi5tX3ggKiBh
Lm1feSAtIGEubV94ICogYi5tX3kpKTsKK30KIAogUGFzc093blB0cjxMYXllclRpbGVyQ2hyb21p
dW0+IExheWVyVGlsZXJDaHJvbWl1bTo6Y3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5
ZXJSZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJvcmRlclRleGVsT3B0aW9uIGJv
cmRlcikKIHsKQEAgLTg0LDYgKzEwMyw3IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpzZXRU
aWxlU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHJlc2V0KCk7CiAKICAgICBtX3RpbGVT
aXplID0gc2l6ZTsKKyAgICBtX3RpbGluZ0RhdGEuc2V0TWF4VGV4dHVyZVNpemUobWF4KHNpemUu
d2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwogfQogCiBMYXllclRleHR1cmUqIExheWVyVGlsZXJD
aHJvbWl1bTo6Z2V0U2luZ2xlVGV4dHVyZSgpCkBAIC0xODksMTMgKzIwOSw5IEBAIEludFJlY3Qg
TGF5ZXJUaWxlckNocm9taXVtOjp0aWxlQ29udGVudFJlY3QoY29uc3QgVGlsZSogdGlsZSkgY29u
c3QKIEludFJlY3QgTGF5ZXJUaWxlckNocm9taXVtOjp0aWxlTGF5ZXJSZWN0KGNvbnN0IFRpbGUq
IHRpbGUpIGNvbnN0CiB7CiAgICAgY29uc3QgaW50IGluZGV4ID0gbV90aWxpbmdEYXRhLnRpbGVJ
bmRleCh0aWxlLT5pKCksIHRpbGUtPmooKSk7Ci0gICAgcmV0dXJuIG1fdGlsaW5nRGF0YS50aWxl
Qm91bmRzV2l0aEJvcmRlcihpbmRleCk7Ci19Ci0KLUludFJlY3QgTGF5ZXJUaWxlckNocm9taXVt
Ojp0aWxlVGV4UmVjdChjb25zdCBUaWxlKiB0aWxlKSBjb25zdAotewotICAgIGNvbnN0IGludCBp
bmRleCA9IG1fdGlsaW5nRGF0YS50aWxlSW5kZXgodGlsZS0+aSgpLCB0aWxlLT5qKCkpOwotICAg
IHJldHVybiBtX3RpbGluZ0RhdGEudGlsZUJvdW5kc1dpdGhPdXRlckJvcmRlcihpbmRleCk7Cisg
ICAgSW50UmVjdCBsYXllclJlY3QgPSBtX3RpbGluZ0RhdGEudGlsZUJvdW5kc1dpdGhCb3JkZXIo
aW5kZXgpOworICAgIGxheWVyUmVjdC5zZXRTaXplKG1fdGlsZVNpemUpOworICAgIHJldHVybiBs
YXllclJlY3Q7CiB9CiAKIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjppbnZhbGlkYXRlUmVjdChj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKQEAgLTIwMyw5ICsyMTksNiBAQCB2b2lkIExheWVy
VGlsZXJDaHJvbWl1bTo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qp
CiAgICAgaWYgKGNvbnRlbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzRHJhdykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgSW50U2l6ZSBvbGRMYXllclNpemUobV90aWxpbmdEYXRhLnRvdGFsU2l6
ZVgoKSwgbV90aWxpbmdEYXRhLnRvdGFsU2l6ZVkoKSk7Ci0gICAgY29uc3QgSW50UmVjdCBvbGRM
YXllclJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG9sZExheWVyU2l6ZSk7Ci0KICAgICBncm93
TGF5ZXJUb0NvbnRhaW4oY29udGVudFJlY3QpOwogCiAgICAgLy8gRGlydHkgcmVjdHMgYXJlIGFs
d2F5cyBpbiBsYXllciBzcGFjZSwgYXMgdGhlIGxheWVyIGNvdWxkIGJlIHJlcG9zaXRpb25lZApA
QCAtMjIyLDEyICsyMzUsNiBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6aW52YWxpZGF0ZVJl
Y3QoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgICAgICAgICBJbnRSZWN0IGJvdW5k
ID0gdGlsZUxheWVyUmVjdCh0aWxlKTsKICAgICAgICAgICAgIGJvdW5kLmludGVyc2VjdChsYXll
clJlY3QpOwogICAgICAgICAgICAgdGlsZS0+bV9kaXJ0eUxheWVyUmVjdC51bml0ZShib3VuZCk7
Ci0KLSAgICAgICAgICAgIC8vIEludmFsaWRhdGUgb2xkIGxheWVyIGFyZWEgdG8gY2xlYXIgYW55
IGNvbnRlbnRzIGxlZnQgZnJvbQotICAgICAgICAgICAgLy8gcHJldmlvdXMgbGF5ZXIgc2l6ZS4K
LSAgICAgICAgICAgIEludFJlY3Qgb2xkQm91bmQgPSB0aWxlTGF5ZXJSZWN0KHRpbGUpOwotICAg
ICAgICAgICAgb2xkQm91bmQuaW50ZXJzZWN0KG9sZExheWVyUmVjdCk7Ci0gICAgICAgICAgICB0
aWxlLT5tX2RpcnR5TGF5ZXJSZWN0LnVuaXRlKG9sZEJvdW5kKTsKICAgICAgICAgfQogICAgIH0K
IH0KQEAgLTI4NCw3ICsyOTEsNiBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBMYXllclRleHR1cgogICAgIC8vIENy
ZWF0ZSB0aWxlcyBhcyBuZWVkZWQsIGV4cGFuZGluZyBhIGRpcnR5IHJlY3QgdG8gY29udGFpbiBh
bGwKICAgICAvLyB0aGUgZGlydHkgcmVnaW9ucyBjdXJyZW50bHkgYmVpbmcgZHJhd24uCiAgICAg
SW50UmVjdCBkaXJ0eUxheWVyUmVjdDsKLSAgICBJbnRTaXplIHRpbGVTaXplOwogICAgIGludCBs
ZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAgY29udGVudFJlY3RUb1RpbGVJbmRpY2VzKGNv
bnRlbnRSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwogICAgIGZvciAoaW50IGogPSB0
b3A7IGogPD0gYm90dG9tOyArK2opIHsKQEAgLTI5MywxOSArMjk5LDE2IEBAIHZvaWQgTGF5ZXJU
aWxlckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qs
IExheWVyVGV4dHVyCiAgICAgICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAgICAgICAgICAgdGls
ZSA9IGNyZWF0ZVRpbGUoaSwgaik7CiAKLSAgICAgICAgICAgIEludFNpemUgdGV4U2l6ZSA9IHRp
bGVUZXhSZWN0KHRpbGUpLnNpemUoKTsKLSAgICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgp
LT5pc1ZhbGlkKHRleFNpemUsIG1fdGV4dHVyZUZvcm1hdCkpCisgICAgICAgICAgICBpZiAoIXRp
bGUtPnRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVTaXplLCBtX3RleHR1cmVGb3JtYXQpKQogICAg
ICAgICAgICAgICAgIHRpbGUtPm1fZGlydHlMYXllclJlY3QgPSB0aWxlTGF5ZXJSZWN0KHRpbGUp
OwogCi0gICAgICAgICAgICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+cmVzZXJ2ZSh0ZXhTaXplLCBt
X3RleHR1cmVGb3JtYXQpKSB7CisgICAgICAgICAgICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+cmVz
ZXJ2ZShtX3RpbGVTaXplLCBtX3RleHR1cmVGb3JtYXQpKSB7CiAgICAgICAgICAgICAgICAgbV9z
a2lwc0RyYXcgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBkaXJ0eUxheWVyUmVjdC51
bml0ZSh0aWxlLT5tX2RpcnR5TGF5ZXJSZWN0KTsKLQotICAgICAgICAgICAgdGlsZVNpemUgPSB0
aWxlU2l6ZS5leHBhbmRlZFRvKHRleFNpemUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMTgs
NyArMzIxLDcgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgTGF5ZXJUZXh0dXIKICAgICBpZiAoZGlydHlMYXllclJl
Y3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICB0ZXh0dXJlVXBkYXRlci0+cHJl
cGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0LCB0aWxlU2l6ZSwgbV90aWxpbmdEYXRhLmJvcmRlclRl
eGVscygpKTsKKyAgICB0ZXh0dXJlVXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0
LCBtX3RpbGVTaXplLCBtX3RpbGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkpOwogfQogCiB2b2lkIExh
eWVyVGlsZXJDaHJvbWl1bTo6dXBkYXRlUmVjdChMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJl
VXBkYXRlcikKQEAgLTM0Myw4ICszNDYsNyBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6dXBk
YXRlUmVjdChMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcikKIAogICAgICAgICAg
ICAgLy8gQ2FsY3VsYXRlIHBhZ2Utc3BhY2UgcmVjdGFuZ2xlIHRvIGNvcHkgZnJvbS4KICAgICAg
ICAgICAgIEludFJlY3Qgc291cmNlUmVjdCA9IHRpbGVDb250ZW50UmVjdCh0aWxlKTsKLSAgICAg
ICAgICAgIEludFJlY3QgdGV4UmVjdCA9IHRpbGVUZXhSZWN0KHRpbGUpOwotICAgICAgICAgICAg
Y29uc3QgSW50UG9pbnQgYW5jaG9yID0gdGV4UmVjdC5sb2NhdGlvbigpOworICAgICAgICAgICAg
Y29uc3QgSW50UG9pbnQgYW5jaG9yID0gc291cmNlUmVjdC5sb2NhdGlvbigpOwogICAgICAgICAg
ICAgc291cmNlUmVjdC5pbnRlcnNlY3QobGF5ZXJSZWN0VG9Db250ZW50UmVjdCh0aWxlLT5tX2Rp
cnR5TGF5ZXJSZWN0KSk7CiAgICAgICAgICAgICAvLyBQYWludCByZWN0IG5vdCBndWFyYW50ZWVk
IHRvIGxpbmUgdXAgb24gdGlsZSBib3VuZGFyaWVzLCBzbwogICAgICAgICAgICAgLy8gbWFrZSBz
dXJlIHRoYXQgc291cmNlUmVjdCBkb2Vzbid0IGV4dGVuZCBvdXRzaWRlIG9mIGl0LgpAQCAtNDEx
LDE3ICs0MTMsNyBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6Z3Jvd0xheWVyVG9Db250YWlu
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAgIC8vIEdyb3cgdGhlIHRpbGUgYXJyYXkg
dG8gY29udGFpbiB0aGlzIGNvbnRlbnQgcmVjdC4KICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNv
bnRlbnRSZWN0VG9MYXllclJlY3QoY29udGVudFJlY3QpOwogICAgIEludFNpemUgcmVjdFNpemUg
PSBJbnRTaXplKGxheWVyUmVjdC5tYXhYKCksIGxheWVyUmVjdC5tYXhZKCkpOwotICAgIEludFNp
emUgdGV4U2l6ZSA9IG1fdGlsZVNpemU7Ci0KLSAgICAvLyBVc2UgcmVjdCB3aXRoIGJvcmRlciB0
ZXhlbHMgYXMgbWF4IHRleHR1cmUgc2l6ZSB3aGVuIHRpbGUgc2l6ZQotICAgIC8vIGhhcyBub3Qg
YmVlbiBzcGVjaWZpZWQuCi0gICAgaWYgKHRleFNpemUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRl
eFNpemUgPSByZWN0U2l6ZTsKLSAgICAgICAgaWYgKG1fdGlsaW5nRGF0YS5ib3JkZXJUZXhlbHMo
KSkKLSAgICAgICAgICAgIHRleFNpemUuZXhwYW5kKDIsIDIpOwotICAgIH0KIAotICAgIG1fdGls
aW5nRGF0YS5zZXRNYXhUZXh0dXJlU2l6ZShtYXgodGV4U2l6ZS53aWR0aCgpLCB0ZXhTaXplLmhl
aWdodCgpKSk7CiAgICAgSW50U2l6ZSBvbGRMYXllclNpemUobV90aWxpbmdEYXRhLnRvdGFsU2l6
ZVgoKSwgbV90aWxpbmdEYXRhLnRvdGFsU2l6ZVkoKSk7CiAgICAgSW50U2l6ZSBuZXdTaXplID0g
cmVjdFNpemUuZXhwYW5kZWRUbyhvbGRMYXllclNpemUpOwogICAgIG1fdGlsaW5nRGF0YS5zZXRU
b3RhbFNpemUobmV3U2l6ZS53aWR0aCgpLCBuZXdTaXplLmhlaWdodCgpKTsKQEAgLTQzNiwzNSAr
NDI4LDEwIEBAIHN0YXRpYyBib29sIGlzQ0NXKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKICAgICBy
ZXR1cm4gKHYxLngoKSAqIHYyLnkoKSAtIHYxLnkoKSAqIHYyLngoKSkgPCAwOwogfQogCi1zdGF0
aWMgRWRnZSBjb21wdXRlRWRnZShjb25zdCBGbG9hdFBvaW50JiBwLCBjb25zdCBGbG9hdFBvaW50
JiBxLCBmbG9hdCBzaWduKQotewotICAgIEFTU0VSVChwICE9IHEpOwotCi0gICAgRmxvYXRQb2lu
dCB0YW5nZW50KHAueSgpIC0gcS55KCksIHEueCgpIC0gcC54KCkpOwotICAgIGZsb2F0IHNjYWxl
ID0gc2lnbiAvIHRhbmdlbnQubGVuZ3RoKCk7Ci0gICAgZmxvYXQgY3Jvc3MyID0gcC54KCkgKiBx
LnkoKSAtIHEueCgpICogcC55KCk7Ci0KLSAgICByZXR1cm4gRWRnZSh0YW5nZW50LngoKSAqIHNj
YWxlLAotICAgICAgICAgICAgICAgIHRhbmdlbnQueSgpICogc2NhbGUsCi0gICAgICAgICAgICAg
ICAgY3Jvc3MyICogc2NhbGUpOwotfQotCi1zdGF0aWMgRmxvYXRQb2ludCBpbnRlcnNlY3QoY29u
c3QgRWRnZSYgYSwgY29uc3QgRWRnZSYgYikKLXsKLSAgICByZXR1cm4gRmxvYXRQb2ludCgKLSAg
ICAgICAgKGEueSgpICogYi56KCkgLSBiLnkoKSAqIGEueigpKSAvIChhLngoKSAqIGIueSgpIC0g
Yi54KCkgKiBhLnkoKSksCi0gICAgICAgIChhLngoKSAqIGIueigpIC0gYi54KCkgKiBhLnooKSkg
LyAoYi54KCkgKiBhLnkoKSAtIGEueCgpICogYi55KCkpKTsKLX0KLQogdGVtcGxhdGUgPGNsYXNz
IFQ+CiB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZ2xvYmFsVHJhbnNmb3JtLCBm
bG9hdCBvcGFjaXR5LCBjb25zdCBUKiBwcm9ncmFtKQogewotICAgIEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKLSAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKLSAgICBHTEMoY29udGV4dCwg
Y29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0
aW9uKCksIDApKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1h
dHJpeChnbG9iYWxUcmFuc2Zvcm0pOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeChs
YXllclJlbmRlcmVyKCktPndpbmRvd01hdHJpeCgpICogbGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0
aW9uTWF0cml4KCkgKiBnbG9iYWxUcmFuc2Zvcm0pOwogCiAgICAgLy8gV2UgZG9uJ3QgY2FyZSBh
Ym91dCBaIGNvbXBvbmVudC4KICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXhYWVcgPQpA
QCAtNDc4LDMzICs0NDUsNDYgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXdUaWxlcyhj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXQKICAgICAgICAgcmV0
dXJuOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW52ZXJzZSA9IG1hdHJpeFhZVy5pbnZl
cnNlKCk7Ci0gICAgSW50UmVjdCBib3VuZHMobV9sYXllclBvc2l0aW9uLCBJbnRTaXplKG1fdGls
aW5nRGF0YS50b3RhbFNpemVYKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fdGlsaW5nRGF0YS50b3RhbFNpemVZKCkpKTsKIAotICAgIC8vIEluY2x1ZGUg
b3V0ZXIgYm9yZGVyIHRleGVscyBpbiBib3VuZHMuCi0gICAgYm91bmRzLmluZmxhdGUobV90aWxp
bmdEYXRhLmJvcmRlclRleGVscygpKTsKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9
IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVzZVBy
b2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVu
aWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7
CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkUwKSk7CisKKyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNvbnRlbnRSZWN0VG9M
YXllclJlY3QoY29udGVudFJlY3QpOworICAgIEludFJlY3QgYm91bmRzKGxheWVyUmVjdCk7Cisg
ICAgYm91bmRzLm1vdmUobV9sYXllclBvc2l0aW9uLngoKSwgbV9sYXllclBvc2l0aW9uLnkoKSk7
CiAKICAgICAvLyBNYXAgYm91bmRzIHRvIGRldmljZSBzcGFjZS4KICAgICBGbG9hdFF1YWQgYm91
bmRzUXVhZCA9IG1hdHJpeC5tYXBRdWFkKEZsb2F0UXVhZChib3VuZHMpKTsKIAorICAgIC8vIENy
ZWF0ZSBvdXRlciBlZGdlcy4KKyAgICBFZGdlIGxlZnRFZGdlKGJvdW5kc1F1YWQucDQoKSwgYm91
bmRzUXVhZC5wMSgpKTsKKyAgICBFZGdlIHJpZ2h0RWRnZShib3VuZHNRdWFkLnAyKCksIGJvdW5k
c1F1YWQucDMoKSk7CisgICAgRWRnZSB0b3BFZGdlKGJvdW5kc1F1YWQucDEoKSwgYm91bmRzUXVh
ZC5wMigpKTsKKyAgICBFZGdlIGJvdHRvbUVkZ2UoYm91bmRzUXVhZC5wMygpLCBib3VuZHNRdWFk
LnA0KCkpOworCiAgICAgLy8gQ291bnRlci1jbG9ja3dpc2U/CiAgICAgZmxvYXQgc2lnbiA9IGlz
Q0NXKGJvdW5kc1F1YWQpID8gLTEgOiAxOwotCi0gICAgLy8gQ29tcHV0ZSBvdXRlciBlZGdlcy4K
LSAgICBFZGdlIGxlZnRFZGdlID0gY29tcHV0ZUVkZ2UoYm91bmRzUXVhZC5wNCgpLCBib3VuZHNR
dWFkLnAxKCksIHNpZ24pOwotICAgIEVkZ2UgcmlnaHRFZGdlID0gY29tcHV0ZUVkZ2UoYm91bmRz
UXVhZC5wMigpLCBib3VuZHNRdWFkLnAzKCksIHNpZ24pOwotICAgIEVkZ2UgdG9wRWRnZSA9IGNv
bXB1dGVFZGdlKGJvdW5kc1F1YWQucDEoKSwgYm91bmRzUXVhZC5wMigpLCBzaWduKTsKLSAgICBF
ZGdlIGJvdHRvbUVkZ2UgPSBjb21wdXRlRWRnZShib3VuZHNRdWFkLnAzKCksIGJvdW5kc1F1YWQu
cDQoKSwgc2lnbik7CisgICAgbGVmdEVkZ2Uuc2NhbGUoc2lnbik7CisgICAgcmlnaHRFZGdlLnNj
YWxlKHNpZ24pOworICAgIHRvcEVkZ2Uuc2NhbGUoc2lnbik7CisgICAgYm90dG9tRWRnZS5zY2Fs
ZShzaWduKTsKIAogICAgIC8vIE1vdmUgb3V0ZXIgZWRnZXMgdG8gZW5zdXJlIHRoYXQgYWxsIHBh
cnRpYWxseSBjb3ZlcmVkIHBpeGVscyBhcmUKICAgICAvLyBwcm9jZXNzZWQuCiAgICAgZmxvYXQg
ekRpc3RhbmNlID0gbV90aWxpbmdEYXRhLmJvcmRlclRleGVscygpICogMC41ZjsKLSAgICBsZWZ0
RWRnZS5tb3ZlKDAsIDAsIHpEaXN0YW5jZSk7Ci0gICAgcmlnaHRFZGdlLm1vdmUoMCwgMCwgekRp
c3RhbmNlKTsKLSAgICB0b3BFZGdlLm1vdmUoMCwgMCwgekRpc3RhbmNlKTsKLSAgICBib3R0b21F
ZGdlLm1vdmUoMCwgMCwgekRpc3RhbmNlKTsKLQotICAgIEdDM0RpbnQgZmlsdGVyID0gKG1fdGls
aW5nRGF0YS5ib3JkZXJUZXhlbHMoKSAmJiAhbWF0cml4LmlzSW50ZWdlclRyYW5zbGF0aW9uKCkp
ID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNU
OworICAgIGxlZnRFZGdlLnNldFoobGVmdEVkZ2UueigpICsgekRpc3RhbmNlKTsKKyAgICByaWdo
dEVkZ2Uuc2V0WihyaWdodEVkZ2UueigpICsgekRpc3RhbmNlKTsKKyAgICB0b3BFZGdlLnNldFoo
dG9wRWRnZS56KCkgKyB6RGlzdGFuY2UpOworICAgIGJvdHRvbUVkZ2Uuc2V0Wihib3R0b21FZGdl
LnooKSArIHpEaXN0YW5jZSk7CisKKyAgICAvLyBVc2Ugc29mdCBlZGdlcy4KKyAgICBmbG9hdCBl
ZGdlU2hhcnBuZXNzID0gbV90aWxpbmdEYXRhLmJvcmRlclRleGVscygpID8gMCA6IDE7CisgICAg
bGVmdEVkZ2Uuc2V0VyhlZGdlU2hhcnBuZXNzKTsKKyAgICByaWdodEVkZ2Uuc2V0VyhlZGdlU2hh
cnBuZXNzKTsKKyAgICB0b3BFZGdlLnNldFcoZWRnZVNoYXJwbmVzcyk7CisgICAgYm90dG9tRWRn
ZS5zZXRXKGVkZ2VTaGFycG5lc3MpOwogCiAgICAgRWRnZSBwcmV2RWRnZVkgPSB0b3BFZGdlOwog
CkBAIC01MTYsNiArNDk2LDEyIEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGlsZXMo
Y29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0CiAgICAgICAgIEVk
Z2UgZWRnZVkgPSBib3R0b21FZGdlOwogICAgICAgICBpZiAoaiA8IChtX3RpbGluZ0RhdGEubnVt
VGlsZXNZKCkgLSAxKSkgewogICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IG1fdGlsaW5n
RGF0YS50aWxlQm91bmRzKG1fdGlsaW5nRGF0YS50aWxlSW5kZXgoMCwgaikpOworICAgICAgICAg
ICAgdGlsZVJlY3QuaW50ZXJzZWN0KGxheWVyUmVjdCk7CisKKyAgICAgICAgICAgIC8vIFNraXAg
ZW1wdHkgcm93cy4KKyAgICAgICAgICAgIGlmICh0aWxlUmVjdC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICB0aWxlUmVjdC5tb3ZlKG1fbGF5ZXJQb3Np
dGlvbi54KCksIG1fbGF5ZXJQb3NpdGlvbi55KCkpOwogCiAgICAgICAgICAgICBGbG9hdFBvaW50
IHAxKHRpbGVSZWN0Lm1heFgoKSwgdGlsZVJlY3QubWF4WSgpKTsKQEAgLTUyNSw4ICs1MTEsMTEg
QEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXQKICAgICAgICAgICAgIHAxID0gbWF0cml4Lm1hcFBv
aW50KHAxKTsKICAgICAgICAgICAgIHAyID0gbWF0cml4Lm1hcFBvaW50KHAyKTsKIAotICAgICAg
ICAgICAgLy8gQ29tcHV0ZSBob3Jpem9udGFsIGVkZ2UuCi0gICAgICAgICAgICBlZGdlWSA9IGNv
bXB1dGVFZGdlKHAxLCBwMiwgc2lnbik7CisgICAgICAgICAgICAvLyBDcmVhdGUgaG9yaXpvbnRh
bCBlZGdlLgorICAgICAgICAgICAgZWRnZVkgPSBFZGdlKHAxLCBwMik7CisKKyAgICAgICAgICAg
IC8vIEFkanVzdCBkaXJlY3Rpb24uCisgICAgICAgICAgICBlZGdlWS5zY2FsZShzaWduKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0OyArK2kpIHsK
QEAgLTUzNywyNyArNTI2LDUzIEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGlsZXMo
Y29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0CiAgICAgICAgICAg
ICBBU1NFUlQodGlsZS0+dGV4dHVyZSgpLT5pc1Jlc2VydmVkKCkpOwogCiAgICAgICAgICAgICB0
aWxlLT50ZXh0dXJlKCktPmJpbmRUZXh0dXJlKCk7Ci0gICAgICAgICAgICBHTEMoY29udGV4dCwg
Y29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgZmlsdGVyKSk7Ci0gICAgICAgICAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgZmlsdGVy
KSk7CiAKICAgICAgICAgICAgIC8vIERvbid0IHVzZSB0aWxlQ29udGVudFJlY3QgaGVyZSwgYXMg
dGhhdCBjb250YWlucyB0aGUgZnVsbAogICAgICAgICAgICAgLy8gcmVjdCB3aXRoIGJvcmRlciB0
ZXhlbHMgd2hpY2ggc2hvdWxkbid0IGJlIGRyYXduLgogICAgICAgICAgICAgSW50UmVjdCB0aWxl
UmVjdCA9IG1fdGlsaW5nRGF0YS50aWxlQm91bmRzKG1fdGlsaW5nRGF0YS50aWxlSW5kZXgodGls
ZS0+aSgpLCB0aWxlLT5qKCkpKTsKKyAgICAgICAgICAgIEludFJlY3QgZGlzcGxheVJlY3QgPSB0
aWxlUmVjdDsKKyAgICAgICAgICAgIHRpbGVSZWN0LmludGVyc2VjdChsYXllclJlY3QpOworCisg
ICAgICAgICAgICAvLyBLZWVwIHRyYWNrIG9mIGhvdyB0aGUgdG9wIGxlZnQgaGFzIG1vdmVkLCBz
byB0aGUgdGV4dHVyZSBjYW4gYmUKKyAgICAgICAgICAgIC8vIG9mZnNldCB0aGUgc2FtZSBhbW91
bnQuCisgICAgICAgICAgICBJbnRTaXplIGRpc3BsYXlPZmZzZXQgPSB0aWxlUmVjdC5taW5YTWlu
WUNvcm5lcigpIC0gZGlzcGxheVJlY3QubWluWE1pbllDb3JuZXIoKTsKKworICAgICAgICAgICAg
Ly8gU2tpcCBlbXB0eSB0aWxlcy4KKyAgICAgICAgICAgIGlmICh0aWxlUmVjdC5pc0VtcHR5KCkp
CisgICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICB0aWxlUmVjdC5tb3ZlKG1f
bGF5ZXJQb3NpdGlvbi54KCksIG1fbGF5ZXJQb3NpdGlvbi55KCkpOwogCi0gICAgICAgICAgICBJ
bnRQb2ludCB0ZXhPZmZzZXQgPSBtX3RpbGluZ0RhdGEudGV4dHVyZU9mZnNldCgpOwotICAgICAg
ICAgICAgSW50UmVjdCB0ZXhSZWN0ID0gdGlsZVRleFJlY3QodGlsZSk7Ci0gICAgICAgICAgICBm
bG9hdCB0aWxlV2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4odGV4UmVjdC53aWR0aCgpKTsKLSAg
ICAgICAgICAgIGZsb2F0IHRpbGVIZWlnaHQgPSBzdGF0aWNfY2FzdDxmbG9hdD4odGV4UmVjdC5o
ZWlnaHQoKSk7Ci0gICAgICAgICAgICBmbG9hdCB0ZXhUcmFuc2xhdGVYID0gKHRleE9mZnNldC54
KCkgLSB0aWxlUmVjdC54KCkpIC8gdGlsZVdpZHRoOwotICAgICAgICAgICAgZmxvYXQgdGV4VHJh
bnNsYXRlWSA9ICh0ZXhPZmZzZXQueSgpIC0gdGlsZVJlY3QueSgpKSAvIHRpbGVIZWlnaHQ7Ci0g
ICAgICAgICAgICBmbG9hdCB0ZXhTY2FsZVggPSB0aWxlUmVjdC53aWR0aCgpIC8gdGlsZVdpZHRo
OwotICAgICAgICAgICAgZmxvYXQgdGV4U2NhbGVZID0gdGlsZVJlY3QuaGVpZ2h0KCkgLyB0aWxl
SGVpZ2h0OworICAgICAgICAgICAgRmxvYXRSZWN0IGNsYW1wUmVjdCh0aWxlUmVjdCk7CisgICAg
ICAgICAgICAvLyBDbGFtcCB0ZXh0dXJlIGNvb3JkaW5hdGVzIHRvIGF2b2lkIHNhbXBsaW5nIG91
dHNpZGUgdGhlIGxheWVyLgorICAgICAgICAgICAgLy8gVE9ETyhyZXZlbWFuKTogSGFuZGxlIHNp
bmdsZSBwaXhlbCB3aWR0aC9oZWlnaHQuCisgICAgICAgICAgICBpZiAoY2xhbXBSZWN0LndpZHRo
KCkgPiAxKQorICAgICAgICAgICAgICBjbGFtcFJlY3QuaW5mbGF0ZVgoLTAuNSk7CisgICAgICAg
ICAgICBpZiAoY2xhbXBSZWN0LmhlaWdodCgpID4gMSkKKyAgICAgICAgICAgICAgY2xhbXBSZWN0
LmluZmxhdGVZKC0wLjUpOworICAgICAgICAgICAgRmxvYXRTaXplIGNsYW1wT2Zmc2V0ID0gY2xh
bXBSZWN0Lm1pblhNaW5ZQ29ybmVyKCkgLSBGbG9hdFJlY3QodGlsZVJlY3QpLm1pblhNaW5ZQ29y
bmVyKCk7CisKKyAgICAgICAgICAgIEZsb2F0UG9pbnQgdGV4T2Zmc2V0ID0gbV90aWxpbmdEYXRh
LnRleHR1cmVPZmZzZXQodGlsZS0+aSgpLCB0aWxlLT5qKCkpICsgY2xhbXBPZmZzZXQgKyBGbG9h
dFNpemUoZGlzcGxheU9mZnNldCk7CisgICAgICAgICAgICBmbG9hdCB0aWxlV2lkdGggPSBzdGF0
aWNfY2FzdDxmbG9hdD4obV90aWxlU2l6ZS53aWR0aCgpKTsKKyAgICAgICAgICAgIGZsb2F0IHRp
bGVIZWlnaHQgPSBzdGF0aWNfY2FzdDxmbG9hdD4obV90aWxlU2l6ZS5oZWlnaHQoKSk7CisKKyAg
ICAgICAgICAgIC8vIE1hcCBjbGFtcGluZyByZWN0YW5nbGUgdG8gdW5pdCBzcXVhcmUuCisgICAg
ICAgICAgICBmbG9hdCB2c1RleFRyYW5zbGF0ZVggPSAtY2xhbXBSZWN0LngoKSAvIGNsYW1wUmVj
dC53aWR0aCgpOworICAgICAgICAgICAgZmxvYXQgdnNUZXhUcmFuc2xhdGVZID0gLWNsYW1wUmVj
dC55KCkgLyBjbGFtcFJlY3QuaGVpZ2h0KCk7CisgICAgICAgICAgICBmbG9hdCB2c1RleFNjYWxl
WCA9IHRpbGVSZWN0LndpZHRoKCkgLyBjbGFtcFJlY3Qud2lkdGgoKTsKKyAgICAgICAgICAgIGZs
b2F0IHZzVGV4U2NhbGVZID0gdGlsZVJlY3QuaGVpZ2h0KCkgLyBjbGFtcFJlY3QuaGVpZ2h0KCk7
CisKKyAgICAgICAgICAgIC8vIE1hcCB0byBub3JtYWxpemVkIHRleHR1cmUgY29vcmRpbmF0ZXMu
CisgICAgICAgICAgICBmbG9hdCBmc1RleFRyYW5zbGF0ZVggPSB0ZXhPZmZzZXQueCgpIC8gdGls
ZVdpZHRoOworICAgICAgICAgICAgZmxvYXQgZnNUZXhUcmFuc2xhdGVZID0gdGV4T2Zmc2V0Lnko
KSAvIHRpbGVIZWlnaHQ7CisgICAgICAgICAgICBmbG9hdCBmc1RleFNjYWxlWCA9IGNsYW1wUmVj
dC53aWR0aCgpIC8gdGlsZVdpZHRoOworICAgICAgICAgICAgZmxvYXQgZnNUZXhTY2FsZVkgPSBj
bGFtcFJlY3QuaGVpZ2h0KCkgLyB0aWxlSGVpZ2h0OworCiAgICAgICAgICAgICAvLyBPcGVuR0wg
Y29vcmRpbmF0ZSBzeXN0ZW0gaXMgYm90dG9tLXVwLgogICAgICAgICAgICAgLy8gSWYgdGlsZSB0
ZXh0dXJlIGlzIHRvcC1kb3duLCB3ZSBuZWVkIHRvIGZsaXAgdGhlIHRleHR1cmUgY29vcmRpbmF0
ZXMuCiAgICAgICAgICAgICBpZiAobV90ZXh0dXJlT3JpZW50YXRpb24gPT0gTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VG9wRG93bk9yaWVudGF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgdGV4VHJhbnNs
YXRlWSA9IDEuMCAtIHRleFRyYW5zbGF0ZVk7Ci0gICAgICAgICAgICAgICAgdGV4U2NhbGVZICo9
IC0xLjA7CisgICAgICAgICAgICAgICAgZnNUZXhUcmFuc2xhdGVZID0gMS4wIC0gZnNUZXhUcmFu
c2xhdGVZOworICAgICAgICAgICAgICAgIGZzVGV4U2NhbGVZICo9IC0xLjA7CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIEVkZ2UgZWRnZVggPSByaWdodEVkZ2U7CkBAIC01NjksMTUgKzU4
NCwxOCBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdAogICAgICAgICAgICAgICAgIHAxID0gbWF0
cml4Lm1hcFBvaW50KHAxKTsKICAgICAgICAgICAgICAgICBwMiA9IG1hdHJpeC5tYXBQb2ludChw
Mik7CiAKLSAgICAgICAgICAgICAgICAvLyBDb21wdXRlIHZlcnRpY2FsIGVkZ2UuCi0gICAgICAg
ICAgICAgICAgZWRnZVggPSBjb21wdXRlRWRnZShwMSwgcDIsIHNpZ24pOworICAgICAgICAgICAg
ICAgIC8vIENyZWF0ZSB2ZXJ0aWNhbCBlZGdlLgorICAgICAgICAgICAgICAgIGVkZ2VYID0gRWRn
ZShwMSwgcDIpOworCisgICAgICAgICAgICAgICAgLy8gQWRqdXN0IGRpcmVjdGlvbi4KKyAgICAg
ICAgICAgICAgICBlZGdlWC5zY2FsZShzaWduKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgLy8gQ3JlYXRlIGRldmljZSBzcGFjZSBxdWFkLgotICAgICAgICAgICAgRmxvYXRRdWFkIGRl
dmljZVF1YWQoaW50ZXJzZWN0KGVkZ2VZLCBwcmV2RWRnZVgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50ZXJzZWN0KHByZXZFZGdlWCwgcHJldkVkZ2VZKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdChwcmV2RWRnZVksIGVkZ2VYKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdChlZGdlWCwgZWRnZVkpKTsK
KyAgICAgICAgICAgIEZsb2F0UXVhZCBkZXZpY2VRdWFkKEVkZ2U6OmludGVyc2VjdChlZGdlWSwg
cHJldkVkZ2VYKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2U6OmludGVy
c2VjdChwcmV2RWRnZVgsIHByZXZFZGdlWSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFZGdlOjppbnRlcnNlY3QocHJldkVkZ2VZLCBlZGdlWCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFZGdlOjppbnRlcnNlY3QoZWRnZVgsIGVkZ2VZKSk7CiAKICAgICAg
ICAgICAgIC8vIE1hcCBxdWFkIHRvIGxheWVyIHNwYWNlLgogICAgICAgICAgICAgRmxvYXRRdWFk
IHF1YWQgPSBpbnZlcnNlLm1hcFF1YWQoZGV2aWNlUXVhZCk7CkBAIC01ODUsMjAgKzYwMywyNiBA
QCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdAogICAgICAgICAgICAgLy8gTm9ybWFsaXplIHRvIHRp
bGVSZWN0LgogICAgICAgICAgICAgcXVhZC5zY2FsZSgxLjBmIC8gdGlsZVJlY3Qud2lkdGgoKSwg
MS4wZiAvIHRpbGVSZWN0LmhlaWdodCgpKTsKIAotICAgICAgICAgICAgZHJhd1RleHR1cmVkUXVh
ZChjb250ZXh0LCBxdWFkLCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwgbWF0
cml4LCB0aWxlUmVjdC53aWR0aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwgb3BhY2l0eSwgdGV4VHJh
bnNsYXRlWCwgdGV4VHJhbnNsYXRlWSwgdGV4U2NhbGVYLCB0ZXhTY2FsZVksIHByb2dyYW0pOwor
ICAgICAgICAgICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBxdWFkLCBwcmV2RWRnZVgsIHBy
ZXZFZGdlWSwgZWRnZVgsIGVkZ2VZLCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgo
KSwgZ2xvYmFsVHJhbnNmb3JtLCB0aWxlUmVjdC53aWR0aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwg
b3BhY2l0eSwgdnNUZXhUcmFuc2xhdGVYLCB2c1RleFRyYW5zbGF0ZVksIHZzVGV4U2NhbGVYLCB2
c1RleFNjYWxlWSwgZnNUZXhUcmFuc2xhdGVYLCBmc1RleFRyYW5zbGF0ZVksIGZzVGV4U2NhbGVY
LCBmc1RleFNjYWxlWSwgcHJvZ3JhbSk7CiAKICAgICAgICAgICAgIHByZXZFZGdlWCA9IGVkZ2VY
OworICAgICAgICAgICAgLy8gUmV2ZXJzZSBkaXJlY3Rpb24uCisgICAgICAgICAgICBwcmV2RWRn
ZVguc2NhbGUoLTEpOwogICAgICAgICB9CiAKICAgICAgICAgcHJldkVkZ2VZID0gZWRnZVk7Cisg
ICAgICAgIC8vIFJldmVyc2UgZGlyZWN0aW9uLgorICAgICAgICBwcmV2RWRnZVkuc2NhbGUoLTEp
OwogICAgIH0KIH0KIAogdGVtcGxhdGUgPGNsYXNzIFQ+Ci12b2lkIExheWVyVGlsZXJDaHJvbWl1
bTo6ZHJhd1RleHR1cmVkUXVhZChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgRmxv
YXRRdWFkJiBxdWFkLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJp
eCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdNYXRyaXgsCit2b2lkIExheWVyVGls
ZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVkUXVhZChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
Y29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBFZGdlJiBsZWZ0LCBjb25zdCBFZGdlJiB0b3As
IGNvbnN0IEVkZ2UmIHJpZ2h0LCBjb25zdCBFZGdlJiBib3R0b20sIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
ZHJhd01hdHJpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNpdHksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0ZXhUcmFuc2xhdGVYLCBmbG9hdCB0ZXhU
cmFuc2xhdGVZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxv
YXQgdGV4U2NhbGVYLCBmbG9hdCB0ZXhTY2FsZVksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbG9hdCB2c1RleFRyYW5zbGF0ZVgsIGZsb2F0IHZzVGV4VHJhbnNs
YXRlWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHZz
VGV4U2NhbGVYLCBmbG9hdCB2c1RleFNjYWxlWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0IGZzVGV4VHJhbnNsYXRlWCwgZmxvYXQgZnNUZXhUcmFuc2xh
dGVZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZnNU
ZXhTY2FsZVgsIGZsb2F0IGZzVGV4U2NhbGVZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVCogcHJvZ3JhbSkKIHsKICAgICBzdGF0aWMgZmxvYXQgZ2xN
YXRyaXhbMTZdOwpAQCAtNjE1LDggKzYzOSwxMSBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6
ZHJhd1RleHR1cmVkUXVhZChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgRmxvYQog
CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xZihwcm9ncmFtLT5mcmFnbWVudFNo
YWRlcigpLmFscGhhTG9jYXRpb24oKSwgb3BhY2l0eSkpOwogCi0gICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPnVuaWZvcm00Zihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS50ZXhUcmFuc2Zvcm1Mb2Nh
dGlvbigpLAotICAgICAgICB0ZXhUcmFuc2xhdGVYLCB0ZXhUcmFuc2xhdGVZLCB0ZXhTY2FsZVgs
IHRleFNjYWxlWSkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtNGYocHJvZ3Jh
bS0+dmVydGV4U2hhZGVyKCkudnNUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpLAorICAgICAgICB2c1Rl
eFRyYW5zbGF0ZVgsIHZzVGV4VHJhbnNsYXRlWSwgdnNUZXhTY2FsZVgsIHZzVGV4U2NhbGVZKSk7
CisKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTRmKHByb2dyYW0tPmZyYWdtZW50
U2hhZGVyKCkuZnNUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpLAorICAgICAgICBmc1RleFRyYW5zbGF0
ZVgsIGZzVGV4VHJhbnNsYXRlWSwgZnNUZXhTY2FsZVgsIGZzVGV4U2NhbGVZKSk7CiAKICAgICBm
bG9hdCBwb2ludFs4XTsKICAgICBwb2ludFswXSA9IHF1YWQucDEoKS54KCk7CkBAIC02MjksNiAr
NjU2LDI1IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAgcG9pbnRbN10gPSBxdWFkLnA0
KCkueSgpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMmZ2KHByb2dyYW0tPnZl
cnRleFNoYWRlcigpLnBvaW50TG9jYXRpb24oKSwgcG9pbnQsIDQpKTsKIAorICAgIGZsb2F0IGVk
Z2VbMTZdOworICAgIGVkZ2VbMF0gPSBsZWZ0LngoKTsKKyAgICBlZGdlWzFdID0gbGVmdC55KCk7
CisgICAgZWRnZVsyXSA9IGxlZnQueigpOworICAgIGVkZ2VbM10gPSBsZWZ0LncoKTsKKyAgICBl
ZGdlWzRdID0gdG9wLngoKTsKKyAgICBlZGdlWzVdID0gdG9wLnkoKTsKKyAgICBlZGdlWzZdID0g
dG9wLnooKTsKKyAgICBlZGdlWzddID0gdG9wLncoKTsKKyAgICBlZGdlWzhdID0gcmlnaHQueCgp
OworICAgIGVkZ2VbOV0gPSByaWdodC55KCk7CisgICAgZWRnZVsxMF0gPSByaWdodC56KCk7Cisg
ICAgZWRnZVsxMV0gPSByaWdodC53KCk7CisgICAgZWRnZVsxMl0gPSBib3R0b20ueCgpOworICAg
IGVkZ2VbMTNdID0gYm90dG9tLnkoKTsKKyAgICBlZGdlWzE0XSA9IGJvdHRvbS56KCk7CisgICAg
ZWRnZVsxNV0gPSBib3R0b20udygpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3Jt
NGZ2KHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0aW9uKCksIGVkZ2UsIDQpKTsK
KwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kcmF3RWxlbWVudHMoR3JhcGhpY3NDb250ZXh0
M0Q6OlRSSUFOR0xFUywgNiwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JULCAwKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgKaW5kZXggMGVmMTFhMjU1YWQxYjUxNDMz
NDg1MjhkOTk4MzRlZWU3MjQ2N2QyNS4uNmZjZTkxYTIwNDAyYTQyYjczY2MxM2UwMzI4ZTNkYmRj
ODM1YzY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgKQEAgLTQ3LDYgKzQ3LDQ1IEBA
IGNsYXNzIExheWVyVGlsZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgZW51bSBCb3JkZXJUZXhl
bE9wdGlvbiB7IEhhc0JvcmRlclRleGVscywgTm9Cb3JkZXJUZXhlbHMgfTsKIAorICAgIGNsYXNz
IEVkZ2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgRWRnZSgpCisgICAgICAgICAgICA6IG1feCgw
KQorICAgICAgICAgICAgLCBtX3koMCkKKyAgICAgICAgICAgICwgbV96KDApCisgICAgICAgICAg
ICAsIG1fdygwKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgRWRnZShjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpOworCisgICAgICAgIGZsb2F0IHgoKSBjb25zdCB7
IHJldHVybiBtX3g7IH0KKyAgICAgICAgdm9pZCBzZXRYKGZsb2F0IHgpIHsgbV94ID0geDsgfQor
CisgICAgICAgIGZsb2F0IHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0KKyAgICAgICAgdm9pZCBz
ZXRZKGZsb2F0IHkpIHsgbV95ID0geTsgfQorCisgICAgICAgIGZsb2F0IHooKSBjb25zdCB7IHJl
dHVybiBtX3o7IH0KKyAgICAgICAgdm9pZCBzZXRaKGZsb2F0IHopIHsgbV96ID0gejsgfQorCisg
ICAgICAgIGZsb2F0IHcoKSBjb25zdCB7IHJldHVybiBtX3c7IH0KKyAgICAgICAgdm9pZCBzZXRX
KGZsb2F0IHcpIHsgbV93ID0gdzsgfQorCisgICAgICAgIHZvaWQgc2NhbGUoZmxvYXQgcykKKyAg
ICAgICAgeworICAgICAgICAgICAgbV94ICo9IHM7CisgICAgICAgICAgICBtX3kgKj0gczsKKyAg
ICAgICAgICAgIG1feiAqPSBzOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIEZsb2F0UG9p
bnQgaW50ZXJzZWN0KGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6RWRnZSYsIGNvbnN0IExheWVy
VGlsZXJDaHJvbWl1bTo6RWRnZSYpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZmxvYXQgbV94
OworICAgICAgICBmbG9hdCBtX3k7CisgICAgICAgIGZsb2F0IG1fejsKKyAgICAgICAgZmxvYXQg
bV93OworICAgIH07CisKICAgICBzdGF0aWMgUGFzc093blB0cjxMYXllclRpbGVyQ2hyb21pdW0+
IGNyZWF0ZShMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwg
Qm9yZGVyVGV4ZWxPcHRpb24pOwogCiAgICAgfkxheWVyVGlsZXJDaHJvbWl1bSgpOwpAQCAtNzUs
MTAgKzExNCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gcmVjeWNsZWQgYnkgdGhlIHRleHR1cmUgbWFu
YWdlci4KICAgICB2b2lkIHByb3RlY3RUaWxlVGV4dHVyZXMoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QpOwogCi0gICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhU
cmFuc2Zvcm0sIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhPiBQcm9ncmFtOworICAgIHR5cGVk
ZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUXVhZCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4
QWxwaGFBQT4gUHJvZ3JhbTsKICAgICAvLyBTaGFkZXIgcHJvZ3JhbSB0aGF0IHN3YXBzIHJlZCBh
bmQgYmx1ZSBjb21wb25lbnRzIG9mIHRleHR1cmUuCiAgICAgLy8gVXNlZCB3aGVuIHRleHR1cmUg
Zm9ybWF0IGRvZXMgbm90IG1hdGNoIG5hdGl2ZSBjb2xvciBmb3JtYXQuCi0gICAgdHlwZWRlZiBQ
cm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0sIEZyYWdtZW50U2hhZGVy
UkdCQVRleFN3aXp6bGVBbHBoYT4gUHJvZ3JhbVN3aXp6bGU7CisgICAgdHlwZWRlZiBQcm9ncmFt
QmluZGluZzxWZXJ0ZXhTaGFkZXJRdWFkLCBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxw
aGFBQT4gUHJvZ3JhbVN3aXp6bGU7CiAKICAgICAvLyBJZiB0aGlzIHRpbGVyIGhhcyBleGFjdGx5
IG9uZSB0aWxlLCByZXR1cm4gaXRzIHRleHR1cmUuIE90aGVyd2lzZSwgbnVsbC4KICAgICBMYXll
clRleHR1cmUqIGdldFNpbmdsZVRleHR1cmUoKTsKQEAgLTExMywxMCArMTUyLDEyIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkcmF3VGlsZXMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgVCogcHJvZ3JhbSk7
CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICB2b2lkIGRyYXdUZXh0dXJlZFF1YWQoR3Jh
cGhpY3NDb250ZXh0M0QqLCBjb25zdCBGbG9hdFF1YWQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgcHJvamVjdGlvbk1hdHJpeCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdN
YXRyaXgsCisgICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFkKEdyYXBoaWNzQ29udGV4dDNEKiwgY29u
c3QgRmxvYXRRdWFkJiwgY29uc3QgRWRnZSYsIGNvbnN0IEVkZ2UmLCBjb25zdCBFZGdlJiwgY29u
c3QgRWRnZSYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0eSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdGV4VHJhbnNsYXRlWCwgZmxvYXQgdGV4VHJhbnNs
YXRlWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdGV4U2NhbGVYLCBmbG9hdCB0
ZXhTY2FsZVksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHZzVGV4VHJhbnNsYXRl
WCwgZmxvYXQgdnNUZXhUcmFuc2xhdGVZLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCB2c1RleFNjYWxlWCwgZmxvYXQgdnNUZXhTY2FsZVksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0IGZzVGV4VHJhbnNsYXRlWCwgZmxvYXQgZnNUZXhUcmFuc2xhdGVZLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCBmc1RleFNjYWxlWCwgZmxvYXQgZnNUZXhTY2FsZVks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQqIHByb2dyYW0pOwogCiAgICAgLy8g
R3JvdyBsYXllciBzaXplIHRvIGNvbnRhaW4gdGhpcyByZWN0YW5nbGUuCkBAIC0xMzUsNyArMTc2
LDYgQEAgcHJpdmF0ZToKICAgICBUaWxlKiB0aWxlQXQoaW50LCBpbnQpIGNvbnN0OwogICAgIElu
dFJlY3QgdGlsZUNvbnRlbnRSZWN0KGNvbnN0IFRpbGUqKSBjb25zdDsKICAgICBJbnRSZWN0IHRp
bGVMYXllclJlY3QoY29uc3QgVGlsZSopIGNvbnN0OwotICAgIEludFJlY3QgdGlsZVRleFJlY3Qo
Y29uc3QgVGlsZSopIGNvbnN0OwogCiAgICAgR0MzRGVudW0gbV90ZXh0dXJlRm9ybWF0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFk
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9TaGFkZXJDaHJvbWl1bS5jcHAKaW5kZXggNjNiODY3MDNmY2IxZTA4MzQzYTdjOTBmNzI3ZDBj
MDEzMWI0NjYwNS4uZjBhZDQ3ODI0Mjc2NWY0YmY4NWI5MTM3YTFlZGRhMWRkMmI5NDBkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1NoYWRlckNocm9taXVtLmNwcApAQCAtMTI0LDcgKzEyNCw2IEBAIFN0cmluZyBWZXJ0ZXhT
aGFkZXJQb3M6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiBWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFu
c2Zvcm06OlZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSgpCiAgICAgOiBtX21hdHJpeExvY2F0
aW9uKC0xKQogICAgICwgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbigtMSkKLSAgICAsIG1fcG9pbnRM
b2NhdGlvbigtMSkKIHsKIH0KIApAQCAtMTMyLDggKzEzMSw3IEBAIHZvaWQgVmVydGV4U2hhZGVy
UG9zVGV4VHJhbnNmb3JtOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25l
ZCBwcm9nCiB7CiAgICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2Nh
dGlvbihwcm9ncmFtLCAibWF0cml4Iik7CiAgICAgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGNv
bnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4VHJhbnNmb3JtIik7Ci0gICAg
bV9wb2ludExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJw
b2ludCIpOwotICAgIEFTU0VSVChtX21hdHJpeExvY2F0aW9uICE9IC0xICYmIG1fdGV4VHJhbnNm
b3JtTG9jYXRpb24gIT0gLTEgJiYgbV9wb2ludExvY2F0aW9uICE9IC0xKTsKKyAgICBBU1NFUlQo
bV9tYXRyaXhMb2NhdGlvbiAhPSAtMSAmJiBtX3RleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xKTsK
IH0KIAogU3RyaW5nIFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6Z2V0U2hhZGVyU3RyaW5n
KCkgY29uc3QKQEAgLTE0Myw3ICsxNDEsMzcgQEAgU3RyaW5nIFZlcnRleFNoYWRlclBvc1RleFRy
YW5zZm9ybTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKICAgICAgICAgYXR0cmlidXRlIHZlYzIg
YV90ZXhDb29yZDsKICAgICAgICAgdW5pZm9ybSBtYXQ0IG1hdHJpeDsKICAgICAgICAgdW5pZm9y
bSB2ZWM0IHRleFRyYW5zZm9ybTsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7Cisg
ICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0g
bWF0cml4ICogYV9wb3NpdGlvbjsKKyAgICAgICAgICAgIHZfdGV4Q29vcmQgPSBhX3RleENvb3Jk
Lnh5ICogdGV4VHJhbnNmb3JtLnp3ICsgdGV4VHJhbnNmb3JtLnh5OworICAgICAgICB9CisgICAg
KTsKK30KKworVmVydGV4U2hhZGVyUXVhZDo6VmVydGV4U2hhZGVyUXVhZCgpCisgICAgOiBtX21h
dHJpeExvY2F0aW9uKC0xKQorICAgICwgbV9wb2ludExvY2F0aW9uKC0xKQoreworfQorCit2b2lk
IFZlcnRleFNoYWRlclF1YWQ6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2ln
bmVkIHByb2dyYW0pCit7CisgICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7CisgICAgbV9wb2ludExvY2F0aW9uID0gY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJwb2ludCIpOworICAgIG1fdnNUZXhU
cmFuc2Zvcm1Mb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAi
dnNUZXhUcmFuc2Zvcm0iKTsKKyAgICBBU1NFUlQobV9tYXRyaXhMb2NhdGlvbiAhPSAtMSAmJiBt
X3BvaW50TG9jYXRpb24gIT0gLTEgJiYgbV92c1RleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xKTsK
K30KKworU3RyaW5nIFZlcnRleFNoYWRlclF1YWQ6OmdldFNoYWRlclN0cmluZygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsK
KyAgICAgICAgYXR0cmlidXRlIHZlYzIgYV90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBtYXQ0
IG1hdHJpeDsKICAgICAgICAgdW5pZm9ybSB2ZWMyIHBvaW50WzRdOworICAgICAgICB1bmlmb3Jt
IHZlYzQgdnNUZXhUcmFuc2Zvcm07CiAgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOwog
ICAgICAgICB2b2lkIG1haW4oKQogICAgICAgICB7CkBAIC0xNTQsNyArMTgyLDcgQEAgU3RyaW5n
IFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKICAg
ICAgICAgICAgIHBvcy54eSArPSAoYV90ZXhDb29yZC54ICogYV90ZXhDb29yZC55KSAqIHBvaW50
WzJdOwogICAgICAgICAgICAgcG9zLnh5ICs9IChjb21wbGVtZW50LnggKiBhX3RleENvb3JkLnkp
ICogcG9pbnRbM107CiAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IG1hdHJpeCAqIHBvczsKLSAg
ICAgICAgICAgIHZfdGV4Q29vcmQgPSBwb3MueHkgKiB0ZXhUcmFuc2Zvcm0uencgKyB0ZXhUcmFu
c2Zvcm0ueHk7CisgICAgICAgICAgICB2X3RleENvb3JkID0gcG9zLnh5ICogdnNUZXhUcmFuc2Zv
cm0uencgKyB2c1RleFRyYW5zZm9ybS54eTsKICAgICAgICAgfQogICAgICk7CiB9CkBAIC0yMTgs
NiArMjQ2LDcwIEBAIFN0cmluZyBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGE6Omdl
dFNoYWRlclN0cmluZygpIGNvbnN0CiAgICAgKTsKIH0KIAorRnJhZ21lbnRUZXhBbHBoYUFBQmlu
ZGluZzo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZygpCisgICAgOiBtX3NhbXBsZXJMb2NhdGlv
bigtMSkKKyAgICAsIG1fYWxwaGFMb2NhdGlvbigtMSkKKyAgICAsIG1fZnNUZXhUcmFuc2Zvcm1M
b2NhdGlvbigtMSkKKyAgICAsIG1fZWRnZUxvY2F0aW9uKC0xKQoreworfQorCit2b2lkIEZyYWdt
ZW50VGV4QWxwaGFBQUJpbmRpbmc6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVu
c2lnbmVkIHByb2dyYW0pCit7CisgICAgbV9zYW1wbGVyTG9jYXRpb24gPSBjb250ZXh0LT5nZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfdGV4dHVyZSIpOworICAgIG1fYWxwaGFMb2NhdGlv
biA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiYWxwaGEiKTsKKyAgICBt
X2ZzVGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJv
Z3JhbSwgImZzVGV4VHJhbnNmb3JtIik7CisgICAgbV9lZGdlTG9jYXRpb24gPSBjb250ZXh0LT5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImVkZ2UiKTsKKworICAgIEFTU0VSVChtX3NhbXBs
ZXJMb2NhdGlvbiAhPSAtMSAmJiBtX2FscGhhTG9jYXRpb24gIT0gLTEgJiYgbV9mc1RleFRyYW5z
Zm9ybUxvY2F0aW9uICE9IC0xICYmIG1fZWRnZUxvY2F0aW9uICE9IC0xKTsKK30KKworU3RyaW5n
IEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cisg
ICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOworICAgICAgICB1bmlmb3JtIHNhbXBsZXIy
RCBzX3RleHR1cmU7CisgICAgICAgIHVuaWZvcm0gZmxvYXQgYWxwaGE7CisgICAgICAgIHVuaWZv
cm0gdmVjNCBmc1RleFRyYW5zZm9ybTsKKyAgICAgICAgdW5pZm9ybSB2ZWM0IGVkZ2VbNF07Cisg
ICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZlYzIgdGV4Q29vcmQg
PSBjbGFtcCh2X3RleENvb3JkLCAwLjAsIDEuMCkgKiBmc1RleFRyYW5zZm9ybS56dyArIGZzVGV4
VHJhbnNmb3JtLnh5OworICAgICAgICAgICAgdmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3Rl
eHR1cmUsIHRleENvb3JkKTsKKyAgICAgICAgICAgIHZlYzQgcG9zID0gdmVjNChnbF9GcmFnQ29v
cmQueHksIDEsIDEpOworICAgICAgICAgICAgZmxvYXQgYTAgPSBjbGFtcChkb3QoZWRnZVswXSwg
cG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxvYXQgYTEgPSBjbGFtcChkb3QoZWRnZVsx
XSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxvYXQgYTIgPSBjbGFtcChkb3QoZWRn
ZVsyXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxvYXQgYTMgPSBjbGFtcChkb3Qo
ZWRnZVszXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4
Q29sb3IgKiBhbHBoYSAqIG1pbihhMCwgYTIpICogbWluKGExLCBhMyk7CisgICAgICAgIH0KKyAg
ICApOworfQorCitTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhhQUE6Omdl
dFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOwor
ICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7CisgICAgICAgIHVuaWZvcm0gZmxv
YXQgYWxwaGE7CisgICAgICAgIHVuaWZvcm0gdmVjNCBmc1RleFRyYW5zZm9ybTsKKyAgICAgICAg
dW5pZm9ybSB2ZWM0IGVkZ2VbNF07CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZlYzIgdGV4Q29vcmQgPSBjbGFtcCh2X3RleENvb3JkLCAwLjAsIDEuMCkgKiBm
c1RleFRyYW5zZm9ybS56dyArIGZzVGV4VHJhbnNmb3JtLnh5OworICAgICAgICAgICAgdmVjNCB0
ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHRleENvb3JkKTsKKyAgICAgICAgICAgIHZl
YzQgcG9zID0gdmVjNChnbF9GcmFnQ29vcmQueHksIDEsIDEpOworICAgICAgICAgICAgZmxvYXQg
YTAgPSBjbGFtcChkb3QoZWRnZVswXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxv
YXQgYTEgPSBjbGFtcChkb3QoZWRnZVsxXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAg
ZmxvYXQgYTIgPSBjbGFtcChkb3QoZWRnZVsyXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAg
ICAgZmxvYXQgYTMgPSBjbGFtcChkb3QoZWRnZVszXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAg
ICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xvci56LCB0ZXhDb2xvci55LCB0ZXhDb2xv
ci54LCB0ZXhDb2xvci53KSAqIGFscGhhICogbWluKGEwLCBhMikgKiBtaW4oYTEsIGEzKTsKKyAg
ICAgICAgfQorICAgICk7Cit9CisKIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6RnJh
Z21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrKCkKICAgICA6IG1fc2FtcGxlckxvY2F0aW9uKC0x
KQogICAgICwgbV9tYXNrU2FtcGxlckxvY2F0aW9uKC0xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKaW5k
ZXggNGU4MGM4MDdlMDhjNjQwZTMwODM1ZjA1YjY2MjYwZTY1ZDZlYzgyMy4uYjEwYzYxNDBmZDQ0
Nzg4MzIxMzFhYTgyZmRkYmVkNGQyNjIyM2M5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCkBAIC05
MCwxMiArOTAsMjcgQEAgcHVibGljOgogCiAgICAgaW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsgfQogICAgIGludCB0ZXhUcmFuc2Zvcm1Mb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4VHJhbnNmb3JtTG9jYXRpb247IH0KLSAgICBpbnQgcG9p
bnRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRMb2NhdGlvbjsgfQogCiBwcml2YXRl
OgogICAgIGludCBtX21hdHJpeExvY2F0aW9uOwogICAgIGludCBtX3RleFRyYW5zZm9ybUxvY2F0
aW9uOworfTsKKworY2xhc3MgVmVydGV4U2hhZGVyUXVhZCB7CitwdWJsaWM6CisgICAgVmVydGV4
U2hhZGVyUXVhZCgpOworCisgICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWdu
ZWQgcHJvZ3JhbSk7CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OworCisgICAg
aW50IG1hdHJpeExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsgfQor
ICAgIGludCBwb2ludExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludExvY2F0aW9uOyB9
CisgICAgaW50IHZzVGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3ZzVGV4
VHJhbnNmb3JtTG9jYXRpb247IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV9tYXRyaXhMb2NhdGlv
bjsKICAgICBpbnQgbV9wb2ludExvY2F0aW9uOworICAgIGludCBtX3ZzVGV4VHJhbnNmb3JtTG9j
YXRpb247CiB9OwogCiBjbGFzcyBGcmFnbWVudFRleEFscGhhQmluZGluZyB7CkBAIC0xMjcsNiAr
MTQyLDM0IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiB9
OwogCitjbGFzcyBGcmFnbWVudFRleEFscGhhQUFCaW5kaW5nIHsKK3B1YmxpYzoKKyAgICBGcmFn
bWVudFRleEFscGhhQUFCaW5kaW5nKCk7CisKKyAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0
M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fYWxwaGFMb2NhdGlvbjsgfQorICAgIGludCBzYW1wbGVyTG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3NhbXBsZXJMb2NhdGlvbjsgfQorICAgIGludCBmc1RleFRyYW5zZm9ybUxv
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mc1RleFRyYW5zZm9ybUxvY2F0aW9uOyB9CisgICAg
aW50IGVkZ2VMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZWRnZUxvY2F0aW9uOyB9CisKK3By
aXZhdGU6CisgICAgaW50IG1fc2FtcGxlckxvY2F0aW9uOworICAgIGludCBtX2FscGhhTG9jYXRp
b247CisgICAgaW50IG1fZnNUZXhUcmFuc2Zvcm1Mb2NhdGlvbjsKKyAgICBpbnQgbV9lZGdlTG9j
YXRpb247Cit9OworCitjbGFzcyBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBIDogcHVibGlj
IEZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmcgeworcHVibGljOgorICAgIFN0cmluZyBnZXRTaGFk
ZXJTdHJpbmcoKSBjb25zdDsKK307CisKKy8vIFN3aXp6bGVzIHRoZSByZWQgYW5kIGJsdWUgY29t
cG9uZW50IG9mIHNhbXBsZWQgdGV4ZWwuCitjbGFzcyBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6
emxlQWxwaGFBQSA6IHB1YmxpYyBGcmFnbWVudFRleEFscGhhQUFCaW5kaW5nIHsKK3B1YmxpYzoK
KyAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7Cit9OworCiBjbGFzcyBGcmFnbWVu
dFNoYWRlclJHQkFUZXhBbHBoYU1hc2sgewogcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyUkdC
QVRleEFscGhhTWFzaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggM2U5
ZTZkZDA0OGYyMjE1ZDI4OTQ5MTc1OTM0MWQ3ZTM3NmJjMGQyNy4uNTY3NWNlYTEzYTZlYmRhYzFk
OWNiM2FhNGUyZmZjYzU0OWEwNGViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
CkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKIC8vIFN0
YXJ0IHRpbGluZyB3aGVuIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGEgbGF5ZXIgYXJlIGxhcmdl
ciB0aGFuIHRoaXMgc2l6ZS4KLXN0YXRpYyBpbnQgbWF4VW50aWxlZFNpemUgPSA1MTA7CitzdGF0
aWMgaW50IG1heFVudGlsZWRTaXplID0gNTEyOwogCiAvLyBXaGVuIHRpbGluZyBpcyBlbmFibGVk
LCB1c2UgdGlsZXMgb2YgdGhpcyBkaW1lbnNpb24gc3F1YXJlZC4KIHN0YXRpYyBpbnQgZGVmYXVs
dFRpbGVTaXplID0gMjU2OwpAQCAtNTAsNyArNTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBU
aWxlZExheWVyQ2hyb21pdW06OlRpbGVkTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21p
dW0qIG93bmVyKQogICAgIDogTGF5ZXJDaHJvbWl1bShvd25lcikKICAgICAsIG1fdGlsaW5nT3B0
aW9uKEF1dG9UaWxlKQotICAgICwgbV9ib3JkZXJUZXhlbHModHJ1ZSkKIHsKIH0KIApAQCAtODAs
NyArNzksNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZVNpemVBbmRUaWxp
bmdPcHRpb24oKQogICAgIGlmICghbV90aWxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29u
c3QgSW50U2l6ZSB0aWxlU2l6ZShkZWZhdWx0VGlsZVNpemUsIGRlZmF1bHRUaWxlU2l6ZSk7Cisg
ICAgY29uc3QgSW50U2l6ZSB0aWxlU2l6ZShtaW4oZGVmYXVsdFRpbGVTaXplLCBjb250ZW50Qm91
bmRzKCkud2lkdGgoKSksIG1pbihkZWZhdWx0VGlsZVNpemUsIGNvbnRlbnRCb3VuZHMoKS5oZWln
aHQoKSkpOwogCiAgICAgLy8gVGlsZSBpZiBib3RoIGRpbWVuc2lvbnMgbGFyZ2UsIG9yIGFueSBv
bmUgZGltZW5zaW9uIGxhcmdlIGFuZCB0aGUgb3RoZXIKICAgICAvLyBleHRlbmRzIGludG8gYSBz
ZWNvbmQgdGlsZS4gVGhpcyBoZXVyaXN0aWMgYWxsb3dzIGZvciBsb25nIHNraW5ueSBsYXllcnMK
QEAgLTk3LDggKzk2LDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZVRpbGVTaXpl
QW5kVGlsaW5nT3B0aW9uKCkKICAgICBlbHNlCiAgICAgICAgIGlzVGlsZWQgPSBhdXRvVGlsZWQ7
CiAKLSAgICAvLyBFbXB0eSB0aWxlIHNpemUgdGVsbHMgdGhlIHRpbGVyIHRvIGF2b2lkIHRpbGlu
Zy4KLSAgICBJbnRTaXplIHJlcXVlc3RlZFNpemUgPSBpc1RpbGVkID8gdGlsZVNpemUgOiBJbnRT
aXplKCk7CisgICAgSW50U2l6ZSByZXF1ZXN0ZWRTaXplID0gaXNUaWxlZCA/IHRpbGVTaXplIDog
Y29udGVudEJvdW5kcygpOwogICAgIGNvbnN0IGludCBtYXhTaXplID0gbGF5ZXJSZW5kZXJlcigp
LT5tYXhUZXh0dXJlU2l6ZSgpOwogICAgIEludFNpemUgY2xhbXBlZFNpemUgPSByZXF1ZXN0ZWRT
aXplLnNocnVua1RvKEludFNpemUobWF4U2l6ZSwgbWF4U2l6ZSkpOwogICAgIG1fdGlsZXItPnNl
dFRpbGVTaXplKGNsYW1wZWRTaXplKTsKQEAgLTEyOCw3ICsxMjYsNyBAQCB2b2lkIFRpbGVkTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlVGlsZXJJZk5lZWRlZCgpCiAgICAgbV90aWxlciA9IExheWVyVGls
ZXJDaHJvbWl1bTo6Y3JlYXRlKAogICAgICAgICBsYXllclJlbmRlcmVyKCksCiAgICAgICAgIElu
dFNpemUoZGVmYXVsdFRpbGVTaXplLCBkZWZhdWx0VGlsZVNpemUpLAotICAgICAgICBtX2JvcmRl
clRleGVscyA/IExheWVyVGlsZXJDaHJvbWl1bTo6SGFzQm9yZGVyVGV4ZWxzIDogTGF5ZXJUaWxl
ckNocm9taXVtOjpOb0JvcmRlclRleGVscyk7CisgICAgICAgIExheWVyVGlsZXJDaHJvbWl1bTo6
SGFzQm9yZGVyVGV4ZWxzKTsKIH0KIAogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoKQpAQCAtMTQ0LDcgKzE0Miw2IEBAIHZvaWQgVGlsZWRMYXllckNo
cm9taXVtOjpzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0aW9uIHRpbGluZ09wdGlvbikKIAogdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnNldElzTWFzayhib29sIGlzTWFzaykKIHsKLSAgICBtX2Jv
cmRlclRleGVscyA9ICFpc01hc2s7CiAgICAgc2V0VGlsaW5nT3B0aW9uKGlzTWFzayA/IE5ldmVy
VGlsZSA6IEF1dG9UaWxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRleCA3
ODhhZGM3ZjEwOGFhNmEyNWNiM2Q0Y2Y4Y2QxNDkzMGU2NDY0MTU3Li4yZjQzNjliNjQwMzgzODUx
NzBjNzcxNDMyZmQ3YTFlYzI3MjJjZjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApA
QCAtNzMsNyArNzMsNiBAQCBwcml2YXRlOgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRpbGlu
Z1RyYW5zZm9ybSgpIGNvbnN0OwogCiAgICAgVGlsaW5nT3B0aW9uIG1fdGlsaW5nT3B0aW9uOwot
ICAgIGJvb2wgbV9ib3JkZXJUZXhlbHM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5jcHAKaW5kZXggMTEzYmRlMGIyMTM4
ZjkxZDc3MmQzZmQ1MWI4YzEzYjQwNmY5OGEyOS4uZmY3MDhjNzNkNmMzYTg4Y2RkZjAyYzA3MjNi
YmFkZTMxYzMwMDRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1RpbGluZ0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9UaWxpbmdEYXRhLmNwcApAQCAtNDQsMTIgKzQ0LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIGludCBjb21wdXRlTnVtVGlsZXMoaW50IG1heFRleHR1cmVTaXplLCBp
bnQgdG90YWxTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKQogewotICAgIGludCB0b3RhbFNpemVXaXRo
Qm9yZGVyID0gdG90YWxTaXplICsgMiAqIGJvcmRlclRleGVsczsKLQogICAgIGlmIChtYXhUZXh0
dXJlU2l6ZSAtIDIgKiBib3JkZXJUZXhlbHMgPD0gMCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiB0b3RhbFNpemUgPiAwICYmIG1heFRleHR1cmVTaXplID49IHRvdGFsU2l6ZSA/
IDEgOiAwOwogCi0gICAgaW50IG51bVRpbGVzID0gbWF4KDEsIDEgKyAodG90YWxTaXplV2l0aEJv
cmRlciAtIDEgLSAyICogYm9yZGVyVGV4ZWxzKSAvIChtYXhUZXh0dXJlU2l6ZSAtIDIgKiBib3Jk
ZXJUZXhlbHMpKTsKKyAgICBpbnQgbnVtVGlsZXMgPSBtYXgoMSwgMSArICh0b3RhbFNpemUgLSAx
IC0gMiAqIGJvcmRlclRleGVscykgLyAobWF4VGV4dHVyZVNpemUgLSAyICogYm9yZGVyVGV4ZWxz
KSk7CiAgICAgcmV0dXJuIHRvdGFsU2l6ZSA+IDAgPyBudW1UaWxlcyA6IDA7CiB9CiAKQEAgLTgx
LDcgKzc5LDcgQEAgaW50IFRpbGluZ0RhdGE6OnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoaW50IHNy
Y1BvcykgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBBU1NFUlQobV9tYXhUZXh0dXJl
U2l6ZSAtIDIgKiBtX2JvcmRlclRleGVscyk7Ci0gICAgaW50IHggPSBzcmNQb3MgLyAobV9tYXhU
ZXh0dXJlU2l6ZSAtIDIgKiBtX2JvcmRlclRleGVscyk7CisgICAgaW50IHggPSAoc3JjUG9zIC0g
bV9ib3JkZXJUZXhlbHMpIC8gKG1fbWF4VGV4dHVyZVNpemUgLSAyICogbV9ib3JkZXJUZXhlbHMp
OwogICAgIHJldHVybiBtaW4obWF4KHgsIDApLCBudW1UaWxlc1goKSAtIDEpOwogfQogCkBAIC05
MSw3ICs4OSw3IEBAIGludCBUaWxpbmdEYXRhOjp0aWxlWUluZGV4RnJvbVNyY0Nvb3JkKGludCBz
cmNQb3MpIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgQVNTRVJUKG1fbWF4VGV4dHVy
ZVNpemUgLSAyICogbV9ib3JkZXJUZXhlbHMpOwotICAgIGludCB5ID0gc3JjUG9zIC8gKG1fbWF4
VGV4dHVyZVNpemUgLSAyICogbV9ib3JkZXJUZXhlbHMpOworICAgIGludCB5ID0gKHNyY1BvcyAt
IG1fYm9yZGVyVGV4ZWxzKSAvIChtX21heFRleHR1cmVTaXplIC0gMiAqIG1fYm9yZGVyVGV4ZWxz
KTsKICAgICByZXR1cm4gbWluKG1heCh5LCAwKSwgbnVtVGlsZXNZKCkgLSAxKTsKIH0KIApAQCAt
MTM0LDE2ICsxMzIsNiBAQCBJbnRSZWN0IFRpbGluZ0RhdGE6OnRpbGVCb3VuZHNXaXRoQm9yZGVy
KGludCB0aWxlKSBjb25zdAogICAgIHJldHVybiBib3VuZHM7CiB9CiAKLUludFJlY3QgVGlsaW5n
RGF0YTo6dGlsZUJvdW5kc1dpdGhPdXRlckJvcmRlcihpbnQgdGlsZSkgY29uc3QKLXsKLSAgICBJ
bnRSZWN0IGJvdW5kcyA9IHRpbGVCb3VuZHModGlsZSk7Ci0KLSAgICBpZiAobV9ib3JkZXJUZXhl
bHMpCi0gICAgICAgIGJvdW5kcy5pbmZsYXRlKDEpOwotCi0gICAgcmV0dXJuIGJvdW5kczsKLX0K
LQogRmxvYXRSZWN0IFRpbGluZ0RhdGE6OnRpbGVCb3VuZHNOb3JtYWxpemVkKGludCB0aWxlKSBj
b25zdAogewogICAgIGFzc2VydFRpbGUodGlsZSk7CkBAIC0xODAsNiArMTY4LDggQEAgaW50IFRp
bGluZ0RhdGE6OnRpbGVTaXplWChpbnQgeEluZGV4KSBjb25zdAogCiAgICAgaWYgKCF4SW5kZXgg
JiYgbV9udW1UaWxlc1ggPT0gMSkKICAgICAgICAgcmV0dXJuIG1fdG90YWxTaXplWDsKKyAgICBp
ZiAoIXhJbmRleCAmJiBtX251bVRpbGVzWCA+IDEpCisgICAgICAgIHJldHVybiBtX21heFRleHR1
cmVTaXplIC0gbV9ib3JkZXJUZXhlbHM7CiAgICAgaWYgKHhJbmRleCA8IG51bVRpbGVzWCgpIC0g
MSkKICAgICAgICAgcmV0dXJuIG1fbWF4VGV4dHVyZVNpemUgLSAyICogbV9ib3JkZXJUZXhlbHM7
CiAgICAgaWYgKHhJbmRleCA9PSBudW1UaWxlc1goKSAtIDEpCkBAIC0xOTUsNiArMTg1LDggQEAg
aW50IFRpbGluZ0RhdGE6OnRpbGVTaXplWShpbnQgeUluZGV4KSBjb25zdAogCiAgICAgaWYgKCF5
SW5kZXggJiYgbV9udW1UaWxlc1kgPT0gMSkKICAgICAgICAgcmV0dXJuIG1fdG90YWxTaXplWTsK
KyAgICBpZiAoIXlJbmRleCAmJiBtX251bVRpbGVzWSA+IDEpCisgICAgICAgIHJldHVybiBtX21h
eFRleHR1cmVTaXplIC0gbV9ib3JkZXJUZXhlbHM7CiAgICAgaWYgKHlJbmRleCA8IG51bVRpbGVz
WSgpIC0gMSkKICAgICAgICAgcmV0dXJuIG1fbWF4VGV4dHVyZVNpemUgLSAyICogbV9ib3JkZXJU
ZXhlbHM7CiAgICAgaWYgKHlJbmRleCA9PSBudW1UaWxlc1koKSAtIDEpCkBAIC0yMzgsOCArMjMw
LDggQEAgdm9pZCBUaWxpbmdEYXRhOjppbnRlcnNlY3REcmF3UXVhZChjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHMKIAogICAgICpuZXdTcmMgPSBzcmNSZWN0SW50
ZXJzZWN0ZWQ7CiAgICAgbmV3U3JjLT5tb3ZlKAotICAgICAgICAtdGlsZUJvdW5kcy54KCkgKyBt
X2JvcmRlclRleGVscywKLSAgICAgICAgLXRpbGVCb3VuZHMueSgpICsgbV9ib3JkZXJUZXhlbHMp
OworICAgICAgICAtdGlsZUJvdW5kcy54KCkgKyAoKHRpbGVYSW5kZXgodGlsZSkgPiAwKSA/IG1f
Ym9yZGVyVGV4ZWxzIDogMCksCisgICAgICAgIC10aWxlQm91bmRzLnkoKSArICgodGlsZVlJbmRl
eCh0aWxlKSA+IDApID8gbV9ib3JkZXJUZXhlbHMgOiAwKSk7CiAKICAgICAqbmV3RHN0ID0gRmxv
YXRSZWN0KAogICAgICAgICBzcmNSZWN0SW50ZXJzZWN0ZWROb3JtWCAqIGRzdFJlY3Qud2lkdGgo
KSArIGRzdFJlY3QueCgpLApAQCAtMjQ4LDkgKzI0MCwxMiBAQCB2b2lkIFRpbGluZ0RhdGE6Omlu
dGVyc2VjdERyYXdRdWFkKGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBkcwogICAgICAgICBzcmNSZWN0SW50ZXJzZWN0ZWROb3JtSCAqIGRzdFJlY3QuaGVpZ2h0KCkp
OwogfQogCi1JbnRQb2ludCBUaWxpbmdEYXRhOjp0ZXh0dXJlT2Zmc2V0KCkgY29uc3QKK0ludFBv
aW50IFRpbGluZ0RhdGE6OnRleHR1cmVPZmZzZXQoaW50IHhJbmRleCwgaW50IHlJbmRleCkgY29u
c3QKIHsKLSAgICByZXR1cm4gSW50UG9pbnQobV9ib3JkZXJUZXhlbHMsIG1fYm9yZGVyVGV4ZWxz
KTsKKyAgICBpbnQgbGVmdCA9ICgheEluZGV4IHx8IG1fbnVtVGlsZXNYID09IDEpID8gMCA6IG1f
Ym9yZGVyVGV4ZWxzOworICAgIGludCB0b3AgPSAoIXlJbmRleCB8fCBtX251bVRpbGVzWSA9PSAx
KSA/IDAgOiBtX2JvcmRlclRleGVsczsKKworICAgIHJldHVybiBJbnRQb2ludChsZWZ0LCB0b3Ap
OwogfQogCiB2b2lkIFRpbGluZ0RhdGE6OnJlY29tcHV0ZU51bVRpbGVzKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5oCmluZGV4IDQzYjA4
ZTIyODc0M2E4ZGJlM2E5Y2UxNTk5ZTIzNDMwMzI1MzVjYWMuLjNkYWJiNWRlYzMzMDZlN2UyNjMx
NDA1YmRjMmMzNGU5NTJkNDIwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuaApAQCAtNjEsNyArNjEsNiBAQCBwdWJsaWM6CiAKICAg
ICBJbnRSZWN0IHRpbGVCb3VuZHMoaW50IHRpbGUpIGNvbnN0OwogICAgIEludFJlY3QgdGlsZUJv
dW5kc1dpdGhCb3JkZXIoaW50IHRpbGUpIGNvbnN0OwotICAgIEludFJlY3QgdGlsZUJvdW5kc1dp
dGhPdXRlckJvcmRlcihpbnQgdGlsZSkgY29uc3Q7CiAgICAgRmxvYXRSZWN0IHRpbGVCb3VuZHNO
b3JtYWxpemVkKGludCB0aWxlKSBjb25zdDsKICAgICBpbnQgdGlsZVBvc2l0aW9uWChpbnQgeElu
ZGV4KSBjb25zdDsKICAgICBpbnQgdGlsZVBvc2l0aW9uWShpbnQgeUluZGV4KSBjb25zdDsKQEAg
LTc1LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW50ZXJzZWN0RHJhd1F1YWQoY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGludCB0aWxlLCBG
bG9hdFJlY3QqIG5ld1NyYywgRmxvYXRSZWN0KiBuZXdEc3QpIGNvbnN0OwogCiAgICAgLy8gRGlm
ZmVyZW5jZSBiZXR3ZWVuIHRpbGVCb3VuZCdzIGFuZCB0aWxlQm91bmRXaXRoQm9yZGVyJ3MgbG9j
YXRpb24oKS4KLSAgICBJbnRQb2ludCB0ZXh0dXJlT2Zmc2V0KCkgY29uc3Q7CisgICAgSW50UG9p
bnQgdGV4dHVyZU9mZnNldChpbnQgeEluZGV4LCBpbnQgeUluZGV4KSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICBUaWxpbmdEYXRhKCkgOiBtX21heFRleHR1cmVTaXplKDApLCBtX3RvdGFsU2l6ZVgo
MCksIG1fdG90YWxTaXplWSgwKSB7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmMDk1
MmMwZTdiZjhkYzE4NWMyNWQ4NjZmNjJlNzg3NTc5YTM4YzJlLi43ZGE2MDNhNWE4MTlhMWU2NjFj
NzgyNjA0OWNhMjU4NDYwYmQzZGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDExLTA3LTIxICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBSZW1vdmUgb3V0ZXIgYm9yZGVyIGZyb20gVGlsaW5n
RGF0YSBhcyBpdCdzIG5vIGxvbmdlciBuZWVkZWQgYnkgbGF5ZXIgY29tcG9zaXRvciBmb3IgYW50
aS1hbGlhc2luZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY0OTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB0ZXN0cy9UaWxpbmdEYXRhVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToK
KwogMjAxMS0wNy0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLiAgUm9sbGVkIERFUFMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1RpbGluZ0RhdGFUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvVGlsaW5nRGF0YVRlc3QuY3BwCmluZGV4IGRkZWYwYjk4MjIzMWYyODA3YTQ3ZGM5MDMy
M2RiYTQ1NDZjMzg5NjguLjc2MmVkYTkzOTkxNTBlYmU0Yzk3MTk0NmE3NGU1N2MzOWEzYjVkZDUg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsaW5nRGF0YVRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsaW5nRGF0YVRlc3QuY3Bw
CkBAIC00MSwxMCArNDEsMTAgQEAgbmFtZXNwYWNlIHsKIFRFU1QoVGlsaW5nRGF0YVRlc3QsIG51
bVRpbGVzX05vVGlsaW5nKQogewogICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE2LCAxNiwg
MTYsIGZhbHNlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgxNywg
MTUsIDE1LCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgx
OCwgMTYsIDE2LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0
YSgxNiwgMTUsIDE1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5n
RGF0YSgxNiwgMTYsIDE2LCB0cnVlKS5udW1UaWxlcygpKTsKICAgICBFWFBFQ1RfRVEoMSwgVGls
aW5nRGF0YSgxNiwgIDEsIDE2LCBmYWxzZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDEs
IFRpbGluZ0RhdGEoMTcsIDE1LCAxNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VR
KDEsIFRpbGluZ0RhdGEoMTUsIDE1LCAxNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CiB9CiAKIFRFU1Qo
VGlsaW5nRGF0YVRlc3QsIG51bVRpbGVzX1RpbGluZ05vQm9yZGVycykKQEAgLTEwOSw0NSArMTA5
LDQ1IEBAIFRFU1QoVGlsaW5nRGF0YVRlc3QsIG51bVRpbGVzX1RpbGluZ1dpdGhCb3JkZXJzKQog
ICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKC0xLCAxLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7
CiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMCwgIDEsICAxLCB0cnVlKS5udW1UaWxlcygp
KTsKIAotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDEsICAxLCAgMSwgdHJ1ZSkubnVtVGls
ZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMSwgIDEsICAxLCB0cnVlKS5udW1U
aWxlcygpKTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgxLCAgMSwgIDIsIHRydWUpLm51
bVRpbGVzKCkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDEsICAyLCAgMSwgdHJ1ZSku
bnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgIDEsICAxLCB0cnVl
KS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgyLCAgMSwgIDIsIHRy
dWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDIsICAyLCAgMSwg
dHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgIDIsICAy
LCB0cnVlKS5udW1UaWxlcygpKTsKLQotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAx
LCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywg
IDEsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgz
LCAgMiwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRh
KDMsICAyLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDYsIFRpbGluZ0Rh
dGEoMywgIDIsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoNiwgVGlsaW5n
RGF0YSgzLCAgMywgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg5LCBUaWxp
bmdEYXRhKDMsICAzLCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwg
VGlsaW5nRGF0YSg0LCAgMSwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgx
LCBUaWxpbmdEYXRhKDQsICAyLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VR
KDIsIFRpbGluZ0RhdGEoNCwgIDMsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1Rf
RVEoMiwgVGlsaW5nRGF0YSg0LCAgNCwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVD
VF9FUSgzLCBUaWxpbmdEYXRhKDQsICA1LCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQ
RUNUX0VRKDMsIFRpbGluZ0RhdGEoNCwgIDYsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBF
WFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg0LCAgNywgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAg
IEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDQsICA4LCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0g
ICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNCwgIDksICAyLCB0cnVlKS5udW1UaWxlcygpKTsK
LSAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg0LCAxMCwgIDIsIHRydWUpLm51bVRpbGVzKCkp
OwotICAgIEVYUEVDVF9FUSg2LCBUaWxpbmdEYXRhKDQsIDExLCAgMiwgdHJ1ZSkubnVtVGlsZXMo
KSk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgMSwgIDMsIHRydWUpLm51bVRp
bGVzKCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICAyLCAgMywgdHJ1ZSkubnVt
VGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwgIDMsICAzLCB0cnVlKS5u
dW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSg1LCAgNCwgIDMsIHRydWUp
Lm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDUsICA1LCAgMywgdHJ1
ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwgIDYsICAzLCB0
cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgNywgIDMs
IHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA4LCAg
MywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDks
ICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAx
MCwgIDMsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUs
IDExLCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEo
MiwgIDEsICAxLCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0
YSgyLCAgMSwgIDIsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdE
YXRhKDIsICAyLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGlu
Z0RhdGEoMiwgIDIsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKKworICAgIEVYUEVDVF9FUSgxLCBU
aWxpbmdEYXRhKDMsICAxLCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEs
IFRpbGluZ0RhdGEoMywgIDIsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEo
MSwgVGlsaW5nRGF0YSgzLCAgMywgIDMsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9F
USgyLCBUaWxpbmdEYXRhKDMsICA0LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNU
X0VRKDMsIFRpbGluZ0RhdGEoMywgIDUsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBF
Q1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAgNiwgIDMsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVY
UEVDVF9FUSg1LCBUaWxpbmdEYXRhKDMsICA3LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7CisKKyAg
ICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg0LCAgMSwgIDQsIHRydWUpLm51bVRpbGVzKCkpOwor
ICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDQsICAyLCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7
CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwgIDMsICA0LCB0cnVlKS5udW1UaWxlcygp
KTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg0LCAgNCwgIDQsIHRydWUpLm51bVRpbGVz
KCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDQsICA1LCAgNCwgdHJ1ZSkubnVtVGls
ZXMoKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNCwgIDYsICA0LCB0cnVlKS5udW1U
aWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg0LCAgNywgIDQsIHRydWUpLm51
bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDQsICA4LCAgNCwgdHJ1ZSku
bnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNCwgIDksICA0LCB0cnVl
KS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg0LCAxMCwgIDQsIHRy
dWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDQsIDExLCAgNCwg
dHJ1ZSkubnVtVGlsZXMoKSk7CisKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgMSwg
IDUsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICAy
LCAgNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwg
IDMsICA1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1
LCAgNCwgIDUsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRh
KDUsICA1LCAgNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0Rh
dGEoNSwgIDYsICA1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5n
RGF0YSg1LCAgNywgIDUsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxp
bmdEYXRhKDUsICA4LCAgNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDMsIFRp
bGluZ0RhdGEoNSwgIDksICA1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMywg
VGlsaW5nRGF0YSg1LCAxMCwgIDUsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgz
LCBUaWxpbmdEYXRhKDUsIDExLCAgNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CiB9CiAKIFRFU1QoVGls
aW5nRGF0YVRlc3QsIHRpbGVYSW5kZXhGcm9tU3JjQ29vcmQpCkBAIC0xNjYsMTcgKzE2NiwxNyBA
QCBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlWEluZGV4RnJvbVNyY0Nvb3JkKQogICAgIEVYUEVD
VF9FUSgzLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgZmFsc2UpLnRpbGVYSW5kZXhGcm9tU3JjQ29v
cmQoMTEpKTsKIAogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSku
dGlsZVhJbmRleEZyb21TcmNDb29yZCgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEo
MywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKLSAgICBFWFBFQ1Rf
RVEoMiwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQo
MikpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJ
bmRleEZyb21TcmNDb29yZCgzKSk7Ci0gICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgMTAs
IDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDQpKTsKLSAgICBFWFBFQ1RfRVEoNSwg
VGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoNSkpOwot
ICAgIEVYUEVDVF9FUSg2LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZy
b21TcmNDb29yZCg2KSk7Ci0gICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0
cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDcpKTsKLSAgICBFWFBFQ1RfRVEoOCwgVGlsaW5n
RGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoOCkpOwotICAgIEVY
UEVDVF9FUSg5LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmND
b29yZCg5KSk7Ci0gICAgRVhQRUNUX0VRKDksIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50
aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEwKSk7Ci0gICAgRVhQRUNUX0VRKDksIFRpbGluZ0RhdGEo
MywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDExKSk7CisgICAgRVhQRUNU
X0VRKDAsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3Jk
KDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVY
SW5kZXhGcm9tU3JjQ29vcmQoMikpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDEw
LCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgzKSk7CisgICAgRVhQRUNUX0VRKDMs
IFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDQpKTsK
KyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhG
cm9tU3JjQ29vcmQoNSkpOworICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwg
dHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCg2KSk7CisgICAgRVhQRUNUX0VRKDYsIFRpbGlu
Z0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDcpKTsKKyAgICBF
WFBFQ1RfRVEoNywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3Jj
Q29vcmQoOCkpOworICAgIEVYUEVDVF9FUSg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSku
dGlsZVhJbmRleEZyb21TcmNDb29yZCg5KSk7CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEo
MywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEwKSk7CisgICAgRVhQRUNU
X0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3Jk
KDExKSk7CiAKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgxLCAxLCAxLCBmYWxzZSkudGls
ZVhJbmRleEZyb21TcmNDb29yZCgwKSk7CiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwg
MiwgMiwgZmFsc2UpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwpAQCAtMTk0LDEzICsxOTQs
MTMgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgdGlsZVhJbmRleEZyb21TcmNDb29yZCkKICAgICBF
WFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgyLCAyLCAyLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nv
b3JkKDApKTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgyLCAyLCAyLCB0cnVlKS50aWxl
WEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAz
LCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwg
VGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKLSAg
ICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNy
Y0Nvb3JkKDIpKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50
aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgz
LCAzLCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDIpKTsKIAotICAgIEVYUEVDVF9F
USgwLCBUaWxpbmdEYXRhKDQsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkp
OwotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDQsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhG
cm9tU3JjQ29vcmQoMSkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDQsIDQsIDMsIHRy
dWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMikpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdE
YXRhKDQsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMykpOworICAgIEVYUEVD
VF9FUSgwLCBUaWxpbmdEYXRhKDMsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQo
MCkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDQsIDMsIHRydWUpLnRpbGVYSW5k
ZXhGcm9tU3JjQ29vcmQoMSkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsIDMs
IHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMikpOworICAgIEVYUEVDVF9FUSgxLCBUaWxp
bmdEYXRhKDMsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMykpOwogfQogVEVT
VChUaWxpbmdEYXRhVGVzdCwgdGlsZVlJbmRleEZyb21TcmNDb29yZCkKIHsKQEAgLTIxOCwxNyAr
MjE4LDE3IEBAIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVZSW5kZXhGcm9tU3JjQ29vcmQpCiAg
ICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCBmYWxzZSkudGlsZVlJbmRleEZy
b21TcmNDb29yZCgxMSkpOwogCiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMTAsIDEw
LCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGls
aW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkpOwotICAg
IEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21T
cmNDb29yZCgyKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVl
KS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDMpKTsKLSAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0
YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNCkpOwotICAgIEVYUEVD
VF9FUSg1LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29y
ZCg1KSk7Ci0gICAgRVhQRUNUX0VRKDYsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxl
WUluZGV4RnJvbVNyY0Nvb3JkKDYpKTsKLSAgICBFWFBFQ1RfRVEoNywgVGlsaW5nRGF0YSgzLCAx
MCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNykpOwotICAgIEVYUEVDVF9FUSg4
LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg4KSk7
Ci0gICAgRVhQRUNUX0VRKDksIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4
RnJvbVNyY0Nvb3JkKDkpKTsKLSAgICBFWFBFQ1RfRVEoOSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAs
IHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMTApKTsKLSAgICBFWFBFQ1RfRVEoOSwgVGls
aW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMTEpKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9t
U3JjQ29vcmQoMSkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1
ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgyKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0Rh
dGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDMpKTsKKyAgICBFWFBF
Q1RfRVEoMywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29v
cmQoNCkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGls
ZVlJbmRleEZyb21TcmNDb29yZCg1KSk7CisgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoMywg
MTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDYpKTsKKyAgICBFWFBFQ1RfRVEo
NiwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNykp
OworICAgIEVYUEVDVF9FUSg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRl
eEZyb21TcmNDb29yZCg4KSk7CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEw
LCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDkpKTsKKyAgICBFWFBFQ1RfRVEoNywgVGls
aW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMTApKTsKKyAg
ICBFWFBFQ1RfRVEoNywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9t
U3JjQ29vcmQoMTEpKTsKIAogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDEsIDEsIDEsIGZh
bHNlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDApKTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5n
RGF0YSgyLCAyLCAyLCBmYWxzZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgwKSk7CkBAIC0yNDYs
NjEgKzI0Niw2MSBAQCBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlWUluZGV4RnJvbVNyY0Nvb3Jk
KQogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDIsIDIsIDIsIHRydWUpLnRpbGVZSW5kZXhG
cm9tU3JjQ29vcmQoMCkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDIsIDIsIDIsIHRy
dWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdE
YXRhKDMsIDMsIDMsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwotICAgIEVYUEVD
VF9FUSgxLCBUaWxpbmdEYXRhKDMsIDMsIDMsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQo
MSkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDMsIDMsIHRydWUpLnRpbGVZSW5k
ZXhGcm9tU3JjQ29vcmQoMikpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDMsIDMs
IHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxp
bmdEYXRhKDMsIDMsIDMsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMikpOwogCi0gICAg
RVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoNCwgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmND
b29yZCgwKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoNCwgMywgNCwgdHJ1ZSkudGls
ZVlJbmRleEZyb21TcmNDb29yZCgxKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwg
MywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgyKSk7Ci0gICAgRVhQRUNUX0VRKDEs
IFRpbGluZ0RhdGEoNCwgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgzKSk7Cisg
ICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21T
cmNDb29yZCgwKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywgNCwgdHJ1ZSku
dGlsZVlJbmRleEZyb21TcmNDb29yZCgxKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEo
MywgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgyKSk7CisgICAgRVhQRUNUX0VR
KDEsIFRpbGluZ0RhdGEoMywgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgzKSk7
CiB9CiAKIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVTaXplWCkKIHsKICAgICBFWFBFQ1RfRVEo
NSwgVGlsaW5nRGF0YSg1LCAgNSwgIDUsIGZhbHNlKS50aWxlU2l6ZVgoMCkpOwotICAgIEVYUEVD
VF9FUSgzLCBUaWxpbmdEYXRhKDUsICA1LCAgNSwgdHJ1ZSkudGlsZVNpemVYKDApKTsKKyAgICBF
WFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAgNSwgIDUsIHRydWUpLnRpbGVTaXplWCgwKSk7CiAK
ICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIGZhbHNlKS50aWxlU2l6ZVgo
MCkpOwogICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgZmFsc2UpLnRpbGVT
aXplWCgxKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCB0cnVlKS50
aWxlU2l6ZVgoMCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgdHJ1
ZSkudGlsZVNpemVYKDEpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAgNiwgIDYs
IHRydWUpLnRpbGVTaXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwgIDYs
ICA2LCB0cnVlKS50aWxlU2l6ZVgoMSkpOwogCiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEo
NSwgIDgsICA4LCBmYWxzZSkudGlsZVNpemVYKDApKTsKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5n
RGF0YSg1LCAgOCwgIDgsIGZhbHNlKS50aWxlU2l6ZVgoMSkpOwotICAgIEVYUEVDVF9FUSgzLCBU
aWxpbmdEYXRhKDUsICA4LCAgOCwgdHJ1ZSkudGlsZVNpemVYKDApKTsKLSAgICBFWFBFQ1RfRVEo
MywgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIHRydWUpLnRpbGVTaXplWCgxKSk7CisgICAgRVhQRUNU
X0VRKDQsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVY
UEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgdHJ1ZSkudGlsZVNpemVYKDEpKTsKIAog
ICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgZmFsc2UpLnRpbGVTaXplWCgw
KSk7CiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCBmYWxzZSkudGlsZVNp
emVYKDEpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIHRydWUpLnRp
bGVTaXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCB0cnVl
KS50aWxlU2l6ZVgoMCkpOwogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwg
dHJ1ZSkudGlsZVNpemVYKDEpKTsKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMCwg
MTAsIHRydWUpLnRpbGVTaXplWCgyKSk7CiAKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1
LCAxMSwgMTEsIHRydWUpLnRpbGVTaXplWCgyKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0Rh
dGEoNSwgMTEsIDExLCB0cnVlKS50aWxlU2l6ZVgoMikpOwogICAgIEVYUEVDVF9FUSgzLCBUaWxp
bmdEYXRhKDUsIDEyLCAxMiwgdHJ1ZSkudGlsZVNpemVYKDIpKTsKIH0KIFRFU1QoVGlsaW5nRGF0
YVRlc3QsIHRpbGVTaXplWSkKIHsKICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAgNSwg
IDUsIGZhbHNlKS50aWxlU2l6ZVkoMCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUs
ICA1LCAgNSwgdHJ1ZSkudGlsZVNpemVZKDApKTsKKyAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0
YSg1LCAgNSwgIDUsIHRydWUpLnRpbGVTaXplWSgwKSk7CiAKICAgICBFWFBFQ1RfRVEoNSwgVGls
aW5nRGF0YSg1LCAgNiwgIDYsIGZhbHNlKS50aWxlU2l6ZVkoMCkpOwogICAgIEVYUEVDVF9FUSgx
LCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgZmFsc2UpLnRpbGVTaXplWSgxKSk7Ci0gICAgRVhQRUNU
X0VRKDMsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCB0cnVlKS50aWxlU2l6ZVkoMCkpOwotICAgIEVY
UEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgdHJ1ZSkudGlsZVNpemVZKDEpKTsKKyAg
ICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIHRydWUpLnRpbGVTaXplWSgwKSk7
CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCB0cnVlKS50aWxlU2l6ZVko
MSkpOwogCiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCBmYWxzZSkudGls
ZVNpemVZKDApKTsKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIGZhbHNl
KS50aWxlU2l6ZVkoMSkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA4LCAgOCwg
dHJ1ZSkudGlsZVNpemVZKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgOCwg
IDgsIHRydWUpLnRpbGVTaXplWSgxKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwg
IDgsICA4LCB0cnVlKS50aWxlU2l6ZVkoMCkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRh
KDUsICA4LCAgOCwgdHJ1ZSkudGlsZVNpemVZKDEpKTsKIAogICAgIEVYUEVDVF9FUSg1LCBUaWxp
bmdEYXRhKDUsIDEwLCAxMCwgZmFsc2UpLnRpbGVTaXplWSgwKSk7CiAgICAgRVhQRUNUX0VRKDUs
IFRpbGluZ0RhdGEoNSwgMTAsIDEwLCBmYWxzZSkudGlsZVNpemVZKDEpKTsKLSAgICBFWFBFQ1Rf
RVEoMywgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIHRydWUpLnRpbGVTaXplWSgwKSk7CisgICAgRVhQ
RUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCB0cnVlKS50aWxlU2l6ZVkoMCkpOwogICAg
IEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgdHJ1ZSkudGlsZVNpemVZKDEpKTsK
ICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIHRydWUpLnRpbGVTaXplWSgy
KSk7CiAKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMSwgMTEsIHRydWUpLnRpbGVT
aXplWSgyKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgMTEsIDExLCB0cnVlKS50
aWxlU2l6ZVkoMikpOwogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEyLCAxMiwgdHJ1
ZSkudGlsZVNpemVZKDIpKTsKIH0KIApAQCAtMzE5LDEwICszMTksMTAgQEAgVEVTVChUaWxpbmdE
YXRhVGVzdCwgdGlsZVNpemVYX2FuZF90aWxlUG9zaXRpb25YKQogICAgIEVYUEVDVF9FUSgwLCBU
aWxpbmdEYXRhKDMsIDEsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7CiAgICAgRVhQRUNU
X0VRKDEsIFRpbGluZ0RhdGEoMywgMSwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMCkpOwogICAgIEVY
UEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7
Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMywgICAxLCB0cnVlKS50aWxlU2l6ZVgo
MCkpOwotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDUsIDMsICAgMSwgdHJ1ZSkudGlsZVBv
c2l0aW9uWCgwKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMywgMTAwLCB0cnVl
KS50aWxlU2l6ZVgoMCkpOwotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDUsIDMsIDEwMCwg
dHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywg
MywgICAxLCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRh
KDMsIDMsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7CisgICAgRVhQRUNUX0VRKDMsIFRp
bGluZ0RhdGEoMywgMywgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9FUSgw
LCBUaWxpbmdEYXRhKDMsIDMsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7CiAKICAgICAv
LyBNdWx0aXBsZSB0aWxlczoKICAgICAvLyBubyBib3JkZXIKQEAgLTM0MCwyMyArMzQwLDIzIEBA
IFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVTaXplWF9hbmRfdGlsZVBvc2l0aW9uWCkKICAgICAv
LyBNdWx0aXBsZSB0aWxlczoKICAgICAvLyB3aXRoIGJvcmRlcgogICAgIC8vIHBvc2l0aW9ucyAw
LCAyLCAzLCA0Ci0gICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS5u
dW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAgIDEsIHRydWUp
LnRpbGVTaXplWCgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0
cnVlKS50aWxlU2l6ZVgoMSkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsICAg
MSwgdHJ1ZSkudGlsZVNpemVYKDIpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0
LCAgIDEsIHRydWUpLnRpbGVTaXplWCgzKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEo
MywgNCwgICAxLCB0cnVlKS50aWxlUG9zaXRpb25YKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGls
aW5nRGF0YSgzLCA0LCAgIDEsIHRydWUpLnRpbGVQb3NpdGlvblgoMSkpOwotICAgIEVYUEVDVF9F
USgyLCBUaWxpbmdEYXRhKDMsIDQsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgyKSk7Ci0gICAg
RVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS50aWxlUG9zaXRpb25YKDMp
KTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAxMDAsIHRydWUpLnRpbGVTaXpl
WCgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgMTAwLCB0cnVlKS50aWxl
U2l6ZVgoMSkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsIDEwMCwgdHJ1ZSku
dGlsZVNpemVYKDIpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAxMDAsIHRy
dWUpLnRpbGVTaXplWCgzKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgNCwgMTAw
LCB0cnVlKS50aWxlUG9zaXRpb25YKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgz
LCA0LCAxMDAsIHRydWUpLnRpbGVQb3NpdGlvblgoMSkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxp
bmdEYXRhKDMsIDQsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgyKSk7Ci0gICAgRVhQRUNUX0VR
KDMsIFRpbGluZ0RhdGEoMywgNCwgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25YKDMpKTsKKyAgICBF
WFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLm51bVRpbGVzKCkpOworICAg
IEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDYsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDApKTsK
KyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLnRpbGVTaXplWCgx
KSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNiwgICAxLCB0cnVlKS50aWxlU2l6
ZVgoMikpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDYsICAgMSwgdHJ1ZSkudGls
ZVNpemVYKDMpKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCA2LCAgIDEsIHRydWUp
LnRpbGVQb3NpdGlvblgoMCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDYsICAg
MSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgxKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEo
MywgNiwgICAxLCB0cnVlKS50aWxlUG9zaXRpb25YKDIpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGls
aW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLnRpbGVQb3NpdGlvblgoMykpOworICAgIEVYUEVDVF9F
USgyLCBUaWxpbmdEYXRhKDMsIDYsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDApKTsKKyAgICBFWFBF
Q1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA2LCAxMDAsIHRydWUpLnRpbGVTaXplWCgxKSk7CisgICAg
RVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNiwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMikpOwor
ICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDYsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDMp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCA2LCAxMDAsIHRydWUpLnRpbGVQb3Np
dGlvblgoMCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDYsIDEwMCwgdHJ1ZSku
dGlsZVBvc2l0aW9uWCgxKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgNiwgMTAw
LCB0cnVlKS50aWxlUG9zaXRpb25YKDIpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgz
LCA2LCAxMDAsIHRydWUpLnRpbGVQb3NpdGlvblgoMykpOwogfQogCiBURVNUKFRpbGluZ0RhdGFU
ZXN0LCB0aWxlU2l6ZVlfYW5kX3RpbGVQb3NpdGlvblkpCkBAIC0zNzQsMTAgKzM3NCwxMCBAQCBU
RVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlU2l6ZVlfYW5kX3RpbGVQb3NpdGlvblkpCiAgICAgRVhQ
RUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgICAxLCAxLCB0cnVlKS50aWxlUG9zaXRpb25ZKDApKTsK
ICAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDEsIHRydWUpLnRpbGVTaXplWSgw
KSk7CiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMTAwLCAxLCB0cnVlKS50aWxlUG9z
aXRpb25ZKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgIDEsIDMsIHRydWUp
LnRpbGVTaXplWSgwKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoNSwgICAxLCAzLCB0
cnVlKS50aWxlUG9zaXRpb25ZKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAx
MDAsIDMsIHRydWUpLnRpbGVTaXplWSgwKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEo
NSwgMTAwLCAzLCB0cnVlKS50aWxlUG9zaXRpb25ZKDApKTsKKyAgICBFWFBFQ1RfRVEoMywgVGls
aW5nRGF0YSgzLCAgIDEsIDMsIHRydWUpLnRpbGVTaXplWSgwKSk7CisgICAgRVhQRUNUX0VRKDAs
IFRpbGluZ0RhdGEoMywgICAxLCAzLCB0cnVlKS50aWxlUG9zaXRpb25ZKDApKTsKKyAgICBFWFBF
Q1RfRVEoMywgVGlsaW5nRGF0YSgzLCAxMDAsIDMsIHRydWUpLnRpbGVTaXplWSgwKSk7CisgICAg
RVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMTAwLCAzLCB0cnVlKS50aWxlUG9zaXRpb25ZKDAp
KTsKIAogICAgIC8vIE11bHRpcGxlIHRpbGVzOgogICAgIC8vIG5vIGJvcmRlcgpAQCAtMzk1LDIz
ICszOTUsMjMgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgdGlsZVNpemVZX2FuZF90aWxlUG9zaXRp
b25ZKQogICAgIC8vIE11bHRpcGxlIHRpbGVzOgogICAgIC8vIHdpdGggYm9yZGVyCiAgICAgLy8g
cG9zaXRpb25zIDAsIDIsIDMsIDQKLSAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAgIDEs
IDQsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAg
MSwgNCwgdHJ1ZSkudGlsZVNpemVZKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgz
LCAgIDEsIDQsIHRydWUpLnRpbGVTaXplWSgxKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0Rh
dGEoMywgICAxLCA0LCB0cnVlKS50aWxlU2l6ZVkoMikpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxp
bmdEYXRhKDMsICAgMSwgNCwgdHJ1ZSkudGlsZVNpemVZKDMpKTsKLSAgICBFWFBFQ1RfRVEoMCwg
VGlsaW5nRGF0YSgzLCAgIDEsIDQsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOwotICAgIEVYUEVD
VF9FUSgxLCBUaWxpbmdEYXRhKDMsICAgMSwgNCwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgxKSk7Ci0g
ICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgICAxLCA0LCB0cnVlKS50aWxlUG9zaXRpb25Z
KDIpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCAgIDEsIDQsIHRydWUpLnRpbGVQ
b3NpdGlvblkoMykpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwMCwgNCwgdHJ1
ZSkudGlsZVNpemVZKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDQs
IHRydWUpLnRpbGVTaXplWSgxKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMTAw
LCA0LCB0cnVlKS50aWxlU2l6ZVkoMikpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMs
IDEwMCwgNCwgdHJ1ZSkudGlsZVNpemVZKDMpKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0
YSgzLCAxMDAsIDQsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBU
aWxpbmdEYXRhKDMsIDEwMCwgNCwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgxKSk7Ci0gICAgRVhQRUNU
X0VRKDIsIFRpbGluZ0RhdGEoMywgMTAwLCA0LCB0cnVlKS50aWxlUG9zaXRpb25ZKDIpKTsKLSAg
ICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCAxMDAsIDQsIHRydWUpLnRpbGVQb3NpdGlvblko
MykpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkubnVtVGls
ZXMoKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgICAxLCA2LCB0cnVlKS50aWxl
U2l6ZVkoMCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSku
dGlsZVNpemVZKDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgIDEsIDYsIHRy
dWUpLnRpbGVTaXplWSgyKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgICAxLCA2
LCB0cnVlKS50aWxlU2l6ZVkoMykpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsICAg
MSwgNiwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgwKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0Rh
dGEoMywgICAxLCA2LCB0cnVlKS50aWxlUG9zaXRpb25ZKDEpKTsKKyAgICBFWFBFQ1RfRVEoMywg
VGlsaW5nRGF0YSgzLCAgIDEsIDYsIHRydWUpLnRpbGVQb3NpdGlvblkoMikpOworICAgIEVYUEVD
VF9FUSg0LCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgzKSk7Cisg
ICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMTAwLCA2LCB0cnVlKS50aWxlU2l6ZVkoMCkp
OworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwMCwgNiwgdHJ1ZSkudGlsZVNpemVZ
KDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDYsIHRydWUpLnRpbGVT
aXplWSgyKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMTAwLCA2LCB0cnVlKS50
aWxlU2l6ZVkoMykpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEwMCwgNiwgdHJ1
ZSkudGlsZVBvc2l0aW9uWSgwKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMTAw
LCA2LCB0cnVlKS50aWxlUG9zaXRpb25ZKDEpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0
YSgzLCAxMDAsIDYsIHRydWUpLnRpbGVQb3NpdGlvblkoMikpOworICAgIEVYUEVDVF9FUSg0LCBU
aWxpbmdEYXRhKDMsIDEwMCwgNiwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgzKSk7CiB9CiAKIFRFU1Qo
VGlsaW5nRGF0YVRlc3QsIHNldFRvdGFsU2l6ZSkKQEAgLTQ2OCw3ICs0NjgsNyBAQCBURVNUKFRp
bGluZ0RhdGFUZXN0LCBzZXRNYXhUZXh0dXJlU2l6ZU5vQm9yZGVycykKIAogVEVTVChUaWxpbmdE
YXRhVGVzdCwgc2V0TWF4VGV4dHVyZVNpemVCb3JkZXJzKQogewotICAgIFRpbGluZ0RhdGEgZGF0
YSg4LCAxNiwgMzAsIHRydWUpOworICAgIFRpbGluZ0RhdGEgZGF0YSg4LCAxNiwgMzIsIHRydWUp
OwogICAgIEVYUEVDVF9FUSgzLCBkYXRhLm51bVRpbGVzWCgpKTsKICAgICBFWFBFQ1RfRVEoNSwg
ZGF0YS5udW1UaWxlc1koKSk7CiAKQEAgLTQ4NCw3ICs0ODQsNyBAQCBURVNUKFRpbGluZ0RhdGFU
ZXN0LCBzZXRNYXhUZXh0dXJlU2l6ZUJvcmRlcnMpCiAKICAgICBkYXRhLnNldE1heFRleHR1cmVT
aXplKDUpOwogICAgIEVYUEVDVF9FUSg1LCBkYXRhLm1heFRleHR1cmVTaXplKCkpOwotICAgIEVY
UEVDVF9FUSg2LCBkYXRhLm51bVRpbGVzWCgpKTsKKyAgICBFWFBFQ1RfRVEoNSwgZGF0YS5udW1U
aWxlc1goKSk7CiAgICAgRVhQRUNUX0VRKDEwLCBkYXRhLm51bVRpbGVzWSgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101945</attachid>
            <date>2011-07-25 17:07:00 -0700</date>
            <delta_ts>2011-07-26 10:10:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64942-20110725200659.patch</filename>
            <type>text/plain</type>
            <size>70604</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE3MjMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzZGY1NWVhYzMyOGFhZTQzZWU3NzQ4
NTQ2ZTRmOThkZTljYmQ3N2VjLi4yNzBiYzIyNjY1YzNlMjg4MzU4YzUxMjk1MTFjNzdiYjA4MTc3
YzUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMjEgIERhdmlkIFJldmVtYW4gIDxy
ZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFVzZSBlZGdlLWRpc3Rh
bmNlIG1ldGhvZCBmb3IgbGF5ZXIgYW50aS1hbGlhc2luZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGVkIHJlc3VsdHMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEt
MDctMjUgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hy
b21pdW1dIE1hcmsgdXNlci1zY3JpcHQtaW1hZ2UtZG9jdW1lbnQgYXMgYSBmbGFreSBjcmFzaGVy
IG9uIExpbnV4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKaW5kZXggMzkwNDc0ODBjZjAyZjEzN2IyYmZiZDZjYmJmODg4MTQ5ZDQx
ZjM1YS4uMWM3ZDQwM2FjODJhZjBkYTU2YTQ5MDYzNGVjM2E3ZjM1YjNkNjNjNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApA
QCAtMzkxMCwzICszOTEwLDIxIEBAIEJVR1dLNjUxMjQgOiBmYXN0L2Jsb2NrZmxvdy9qYXBhbmVz
ZS1ybC10ZXh0Lmh0bWwgPSBGQUlMCiBCVUdXSzY1MTI5IE1BQyA6IG1lZGlhL21lZGlhLWNvbnRy
b2xzLWNsb25lLmh0bWwgPSBDUkFTSCBQQVNTCiAKIEJVR1dLNjUxNDkgTElOVVggOiB1c2Vyc2Ny
aXB0cy91c2VyLXNjcmlwdC1pbWFnZS1kb2N1bWVudC5odG1sID0gQ1JBU0ggUEFTUworCitCVUdX
SzY0OTQyIDogY29tcG9zaXRpbmcvY29sb3ItbWF0Y2hpbmcvaW1hZ2UtY29sb3ItbWF0Y2hpbmcu
aHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogY29tcG9zaXRpbmcvZ2VvbWV0cnkvYW5jZXN0b3It
b3ZlcmZsb3ctY2hhbmdlLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5nL2dl
b21ldHJ5L2ZpeGVkLXBvc2l0aW9uLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0
aW5nL2dlb21ldHJ5L2xheWVyLWR1ZS10by1sYXllci1jaGlsZHJlbi1kZWVwLmh0bWwgPSBJTUFH
RQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5nL2dlb21ldHJ5L2xheWVyLWR1ZS10by1sYXllci1j
aGlsZHJlbi5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21wb3NpdGluZy9nZW9tZXRyeS92
ZXJ0aWNhbC1zY3JvbGwtY29tcG9zaXRlZC5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21w
b3NpdGluZy9vdmVyZmxvdy9maXhlZC1wb3NpdGlvbi1hbmNlc3Rvci1jbGlwLmh0bWwgPSBJTUFH
RQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9u
LXRyYW5zaXRpb24uaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogY29tcG9zaXRpbmcvcmVmbGVj
dGlvbnMvdHJhbnNmb3JtLWluc2lkZS1yZWZsZWN0aW9uLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0
MiA6IGNvbXBvc2l0aW5nL3NoYWRvd3Mvc2hhZG93LWRyYXdpbmcuaHRtbCA9IElNQUdFCitCVUdX
SzY0OTQyIDogY29tcG9zaXRpbmcvdHJhbnNpdGlvbnMvc2NhbGUtdHJhbnNpdGlvbi1uby1zdGFy
dC5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBtZWRpYS92aWRlby10cmFuc2Zvcm1lZC5odG1s
ID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBtZWRpYS92aWRlby16b29tLWNvbnRyb2xzLmh0bWwgID0g
SU1BR0UKK0JVR1dLNjQ5NDIgOiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9iYWNrZmFj
ZS12aXNpYmlsaXR5LXRyYW5zZm9ybWVkLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IHBsYXRm
b3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2h1Z2UtbGF5ZXItcm90YXRlZC5odG1sID0gSU1BR0UK
K0JVR1dLNjQ5NDIgOiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9wZXJwZW5kaWN1bGFy
LWxheWVyLXNvcnRpbmcuaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogcGxhdGZvcm0vY2hyb21p
dW0vY29tcG9zaXRpbmcvdGlueS1sYXllci1yb3RhdGVkLmh0bWwgPSBJTUFHRQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDExYzJjYjFjNjY0ZmVkMjc4YmNmYzZkNTk0NjM1MTk3ZjE2ZTEzNzIuLjNjYTk5YWEzODU4
ZWE1NDQ0YWM1MjlhYTMwNTA0MmU5NGMwMDhiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NSBA
QAorMjAxMS0wNy0yMSAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtDaHJvbWl1bV0gVXNlIGVkZ2UtZGlzdGFuY2UgbWV0aG9kIGZvciBsYXllciBhbnRp
LWFsaWFzaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjQ5NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgYW4gZWRnZSBkaXN0YW5jZSBiYXNlZCBtZXRob2QgaW5zdGVhZCBvZiB0aGUgY3VycmVu
dCBsaW5lYXIKKyAgICAgICAgZmlsdGVyaW5nIG1ldGhvZCBmb3IgcHJvZHVjaW5nIGFudGktYWxp
YXNlZCBlZGdlcyBvbiAzRCB0cmFuc2Zvcm1lZAorICAgICAgICBsYXllcnMuIFRoaXMgcmVtb3Zl
cyB0aGUgb3V0ZXIgYm9yZGVyIGhhbmRsaW5nIGZyb20gVGlsaW5nRGF0YSBhcworICAgICAgICBp
dCdzIG5vIGxvbmdlciBuZWVkZWQgZm9yIGFudGktYWxpYXNpbmcuCisKKyAgICAgICAgVGVzdHM6
IHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3RpbnktbGF5ZXItcm90YXRlZC5odG1sIChl
eGlzdGluZykKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2h1
Z2UtbGF5ZXItcm90YXRlZC5odG1sIChleGlzdGluZykKKyAgICAgICAgICAgICAgIGNvbXBvc2l0
aW5nL2ltYWdlcy9jb250ZW50LWltYWdlLWNoYW5nZS5odG1sIChleGlzdGluZykKKyAgICAgICAg
ICAgICAgIFRpbGluZ0RhdGFUZXN0IGluIHdlYmtpdF91bml0X3Rlc3RzCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2NyZWVuTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OnNldERyYXdWaWV3cG9ydFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp3aW5kb3dNYXRyaXgpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OkVkZ2U6OkVkZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJUaWxlckNocm9taXVtOjpFZGdlOjppbnRlcnNlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJUaWxlckNocm9taXVtOjpzZXRUaWxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclRpbGVyQ2hyb21pdW06OnRpbGVMYXllclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJUaWxlckNocm9taXVtOjppbnZhbGlkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRpbGVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRpbGVyQ2hyb21pdW06OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxl
ckNocm9taXVtOjpncm93TGF5ZXJUb0NvbnRhaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJU
aWxlckNocm9taXVtOjpkcmF3VGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNo
cm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGls
ZXJDaHJvbWl1bTo6RWRnZTo6RWRnZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hy
b21pdW06OkVkZ2U6OngpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpF
ZGdlOjpzZXRYKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6RWRnZTo6
eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OkVkZ2U6OnNldFkpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpFZGdlOjp6KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6RWRnZTo6c2V0Wik6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclRpbGVyQ2hyb21pdW06OkVkZ2U6OncpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJUaWxlckNocm9taXVtOjpFZGdlOjpzZXRXKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGls
ZXJDaHJvbWl1bTo6RWRnZTo6c2NhbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NoYWRlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRl
clBvc1RleFRyYW5zZm9ybTo6VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtKToKKyAgICAgICAg
KFdlYkNvcmU6OlZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6aW5pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm06OmdldFNoYWRlclN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJRdWFkOjpWZXJ0ZXhTaGFkZXJRdWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclF1YWQ6OmluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6VmVydGV4U2hhZGVyUXVhZDo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYTo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhOjpnZXRTaGFkZXJTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZzo6RnJhZ21lbnRU
ZXhBbHBoYUFBQmluZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFRleEFscGhhQUFC
aW5kaW5nOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFs
cGhhQUE6OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRl
clJHQkFUZXhTd2l6emxlQWxwaGFBQTo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29y
ZTo6VmVydGV4U2hhZGVyUXVhZDo6bWF0cml4TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
VmVydGV4U2hhZGVyUXVhZDo6cG9pbnRMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0
ZXhTaGFkZXJRdWFkOjp2c1RleFRyYW5zZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmc6OmFscGhhTG9jYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZzo6c2FtcGxlckxvY2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmc6OmZzVGV4VHJhbnNmb3JtTG9j
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZzo6ZWRn
ZUxvY2F0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpU
aWxlZExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVt
Ojp1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUaWxl
ZExheWVyQ2hyb21pdW06OmNyZWF0ZVRpbGVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZWRMYXllckNocm9taXVtOjpzZXRJc01hc2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVOdW1U
aWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxpbmdEYXRhOjp0aWxlWEluZGV4RnJvbVNyY0Nv
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6OnRpbGVZSW5kZXhGcm9tU3JjQ29v
cmQpOgorICAgICAgICAoV2ViQ29yZTo6VGlsaW5nRGF0YTo6dGlsZVNpemVYKToKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGluZ0RhdGE6OnRpbGVTaXplWSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxp
bmdEYXRhOjppbnRlcnNlY3REcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxpbmdEYXRh
Ojp0ZXh0dXJlT2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5n
RGF0YS5oOgorCiAyMDExLTA3LTI1ICBDaHJpcyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+
CiAKICAgICAgICAgRGVwcmVjYXRlIEF1ZGlvQnVmZmVyU291cmNlTm9kZSAubG9vcGluZyBhdHRy
aWJ1dGUgYW5kIGltcGxlbWVudCAubG9vcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKaW5kZXggM2JjNWNlNzFhNjYwYzQwMzNlZjAwMTM4MDAwZTFjNzNiZjYwN2NmOS4uNzRl
YzJkYjg4MmNmMjVhYWIyY2MyYjA4MWE3OWI4MmYxOTBlMWQ0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC05Niw2ICs5NiwyMSBAQCBzdGF0aWMgVHJhbnNmb3Jt
YXRpb25NYXRyaXggb3J0aG9NYXRyaXgoZmxvYXQgbGVmdCwgZmxvYXQgcmlnaHQsIGZsb2F0IGJv
dHRvbSwgZgogICAgIHJldHVybiBvcnRobzsKIH0KIAorc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHNjcmVlbk1hdHJpeChpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sK
KyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW47CisKKyAgICAvLyBNYXAgdG8gdmlld3Bv
cnQuCisgICAgc2NyZWVuLnRyYW5zbGF0ZTNkKHgsIHksIDApOworICAgIHNjcmVlbi5zY2FsZTNk
KHdpZHRoLCBoZWlnaHQsIDApOworCisgICAgLy8gTWFwIHgsIHkgYW5kIHogdG8gdW5pdCBzcXVh
cmUuCisgICAgc2NyZWVuLnRyYW5zbGF0ZTNkKDAuNSwgMC41LCAwLjUpOworICAgIHNjcmVlbi5z
Y2FsZTNkKDAuNSwgMC41LCAwLjUpOworCisgICAgcmV0dXJuIHNjcmVlbjsKK30KKwogLy8gUmV0
dXJucyB0cnVlIGlmIHRoZSBtYXRyaXggaGFzIG5vIHJvdGF0aW9uLCBza2V3IG9yIHBlcnNwZWN0
aXZlIGNvbXBvbmVudHMgdG8gaXQuCiBzdGF0aWMgYm9vbCBpc1NjYWxlT3JUcmFuc2xhdGlvbihj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbSkKIHsKQEAgLTUxMCw2ICs1MjUsNyBAQCB2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyhjb25zdCBMYXllckxpc3QmIHJlbmRl
clN1cmZhY2VMYXllckxpc3QpCiAKICAgICAvLyBUaGUgR0wgdmlld3BvcnQgY292ZXJzIHRoZSBl
bnRpcmUgdmlzaWJsZSBhcmVhLCBpbmNsdWRpbmcgdGhlIHNjcm9sbGJhcnMuCiAgICAgR0xDKG1f
Y29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBtX3ZpZXdwb3J0VmlzaWJs
ZVJlY3Qud2lkdGgoKSwgbV92aWV3cG9ydFZpc2libGVSZWN0LmhlaWdodCgpKSk7CisgICAgbV93
aW5kb3dNYXRyaXggPSBzY3JlZW5NYXRyaXgoMCwgMCwgbV92aWV3cG9ydFZpc2libGVSZWN0Lndp
ZHRoKCksIG1fdmlld3BvcnRWaXNpYmxlUmVjdC5oZWlnaHQoKSk7CiAKICAgICAvLyBCaW5kIHRo
ZSBjb21tb24gdmVydGV4IGF0dHJpYnV0ZXMgdXNlZCBmb3IgZHJhd2luZyBhbGwgdGhlIGxheWVy
cy4KICAgICBtX3NoYXJlZEdlb21ldHJ5LT5wcmVwYXJlRm9yRHJhdygpOwpAQCAtMTE0OCw2ICsx
MTY0LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldERyYXdWaWV3cG9ydFJlY3Qo
Y29uc3QgSW50UmVjdCYgZHJhd1JlY3QsIGJvb2wgZmwKICAgICBlbHNlCiAgICAgICAgIG1fcHJv
amVjdGlvbk1hdHJpeCA9IG9ydGhvTWF0cml4KGRyYXdSZWN0LngoKSwgZHJhd1JlY3QubWF4WCgp
LCBkcmF3UmVjdC55KCksIGRyYXdSZWN0Lm1heFkoKSk7CiAgICAgR0xDKG1fY29udGV4dC5nZXQo
KSwgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBkcmF3UmVjdC53aWR0aCgpLCBkcmF3UmVjdC5o
ZWlnaHQoKSkpOworICAgIG1fd2luZG93TWF0cml4ID0gc2NyZWVuTWF0cml4KDAsIDAsIGRyYXdS
ZWN0LndpZHRoKCksIGRyYXdSZWN0LmhlaWdodCgpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oCmluZGV4IDNlMWY2YWY0ZDUxOTc3ZTRjMzk3NWNkZWMyYzZhNTE4MjBm
YTU2NDguLmUwYWJiNTU0MmM1MDc5YjBmYzAxMWM1MWNmMmVjNWQ5NTllYTFlYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMjIsNiArMTIyLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGRlYnVnR0xDYWxsKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgY2hh
ciogY29tbWFuZCwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpOwogCiAgICAgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHByb2plY3Rpb25NYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX3By
b2plY3Rpb25NYXRyaXg7IH0KKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgd2luZG93
TWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dNYXRyaXg7IH0KIAogICAgIGJvb2wgY2hl
Y2tUZXh0dXJlU2l6ZShjb25zdCBJbnRTaXplJik7CiAgICAgaW50IG1heFRleHR1cmVTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXhUZXh0dXJlU2l6ZTsgfQpAQCAtMjExLDYgKzIxMiw3IEBAIHBy
aXZhdGU6CiAgICAgSW50UG9pbnQgbV92aWV3cG9ydFNjcm9sbFBvc2l0aW9uOwogCiAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggbV9wcm9qZWN0aW9uTWF0cml4OworICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IG1fd2luZG93TWF0cml4OwogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9v
dExheWVyOwogICAgIE93blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBtX3Jvb3RMYXllclRleHR1
cmVVcGRhdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKaW5kZXggYTBiZDEwOGE4
MjU0ZWM5ZTM2YTgzZDM1OWI1YTVhODVjNjc3YzdkYi4uZmRmYzhlODVhZTcyYTE2Yjk0ZThiY2Q3
MmRjZDRkNDAxZTk5MmQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCkBAIC00
NCw3ICs0NCwyNiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXR5cGVkZWYgRmxvYXRQb2ludDNEIEVkZ2U7CitMYXllclRpbGVyQ2hyb21pdW06OkVkZ2U6
OkVkZ2UoY29uc3QgRmxvYXRQb2ludCYgcCwgY29uc3QgRmxvYXRQb2ludCYgcSkKK3sKKyAgICBB
U1NFUlQocCAhPSBxKTsKKworICAgIEZsb2F0UG9pbnQgdGFuZ2VudChwLnkoKSAtIHEueSgpLCBx
LngoKSAtIHAueCgpKTsKKyAgICBmbG9hdCBzY2FsZSA9IDEuMCAvIHRhbmdlbnQubGVuZ3RoKCk7
CisgICAgZmxvYXQgY3Jvc3MyID0gcC54KCkgKiBxLnkoKSAtIHEueCgpICogcC55KCk7CisKKyAg
ICBtX3ggPSB0YW5nZW50LngoKSAqIHNjYWxlOworICAgIG1feSA9IHRhbmdlbnQueSgpICogc2Nh
bGU7CisgICAgbV96ID0gY3Jvc3MyICogc2NhbGU7CisgICAgbV93ID0gMTsKK30KKworRmxvYXRQ
b2ludCBMYXllclRpbGVyQ2hyb21pdW06OkVkZ2U6OmludGVyc2VjdChjb25zdCBMYXllclRpbGVy
Q2hyb21pdW06OkVkZ2UmIGEsIGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6RWRnZSYgYikKK3sK
KyAgICByZXR1cm4gRmxvYXRQb2ludCgKKyAgICAgICAgKGEubV95ICogYi5tX3ogLSBiLm1feSAq
IGEubV96KSAvIChhLm1feCAqIGIubV95IC0gYi5tX3ggKiBhLm1feSksCisgICAgICAgIChhLm1f
eCAqIGIubV96IC0gYi5tX3ggKiBhLm1feikgLyAoYi5tX3ggKiBhLm1feSAtIGEubV94ICogYi5t
X3kpKTsKK30KIAogUGFzc093blB0cjxMYXllclRpbGVyQ2hyb21pdW0+IExheWVyVGlsZXJDaHJv
bWl1bTo6Y3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3Qg
SW50U2l6ZSYgdGlsZVNpemUsIEJvcmRlclRleGVsT3B0aW9uIGJvcmRlcikKIHsKQEAgLTg0LDYg
KzEwMyw3IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpzZXRUaWxlU2l6ZShjb25zdCBJbnRT
aXplJiBzaXplKQogICAgIHJlc2V0KCk7CiAKICAgICBtX3RpbGVTaXplID0gc2l6ZTsKKyAgICBt
X3RpbGluZ0RhdGEuc2V0TWF4VGV4dHVyZVNpemUobWF4KHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSkpOwogfQogCiBMYXllclRleHR1cmUqIExheWVyVGlsZXJDaHJvbWl1bTo6Z2V0U2luZ2xl
VGV4dHVyZSgpCkBAIC0xODksMTMgKzIwOSw5IEBAIEludFJlY3QgTGF5ZXJUaWxlckNocm9taXVt
Ojp0aWxlQ29udGVudFJlY3QoY29uc3QgVGlsZSogdGlsZSkgY29uc3QKIEludFJlY3QgTGF5ZXJU
aWxlckNocm9taXVtOjp0aWxlTGF5ZXJSZWN0KGNvbnN0IFRpbGUqIHRpbGUpIGNvbnN0CiB7CiAg
ICAgY29uc3QgaW50IGluZGV4ID0gbV90aWxpbmdEYXRhLnRpbGVJbmRleCh0aWxlLT5pKCksIHRp
bGUtPmooKSk7Ci0gICAgcmV0dXJuIG1fdGlsaW5nRGF0YS50aWxlQm91bmRzV2l0aEJvcmRlcihp
bmRleCk7Ci19Ci0KLUludFJlY3QgTGF5ZXJUaWxlckNocm9taXVtOjp0aWxlVGV4UmVjdChjb25z
dCBUaWxlKiB0aWxlKSBjb25zdAotewotICAgIGNvbnN0IGludCBpbmRleCA9IG1fdGlsaW5nRGF0
YS50aWxlSW5kZXgodGlsZS0+aSgpLCB0aWxlLT5qKCkpOwotICAgIHJldHVybiBtX3RpbGluZ0Rh
dGEudGlsZUJvdW5kc1dpdGhPdXRlckJvcmRlcihpbmRleCk7CisgICAgSW50UmVjdCBsYXllclJl
Y3QgPSBtX3RpbGluZ0RhdGEudGlsZUJvdW5kc1dpdGhCb3JkZXIoaW5kZXgpOworICAgIGxheWVy
UmVjdC5zZXRTaXplKG1fdGlsZVNpemUpOworICAgIHJldHVybiBsYXllclJlY3Q7CiB9CiAKIHZv
aWQgTGF5ZXJUaWxlckNocm9taXVtOjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCkKQEAgLTIwMyw5ICsyMTksNiBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6aW52
YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgaWYgKGNvbnRlbnRS
ZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzRHJhdykKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50
U2l6ZSBvbGRMYXllclNpemUobV90aWxpbmdEYXRhLnRvdGFsU2l6ZVgoKSwgbV90aWxpbmdEYXRh
LnRvdGFsU2l6ZVkoKSk7Ci0gICAgY29uc3QgSW50UmVjdCBvbGRMYXllclJlY3QgPSBJbnRSZWN0
KEludFBvaW50KCksIG9sZExheWVyU2l6ZSk7Ci0KICAgICBncm93TGF5ZXJUb0NvbnRhaW4oY29u
dGVudFJlY3QpOwogCiAgICAgLy8gRGlydHkgcmVjdHMgYXJlIGFsd2F5cyBpbiBsYXllciBzcGFj
ZSwgYXMgdGhlIGxheWVyIGNvdWxkIGJlIHJlcG9zaXRpb25lZApAQCAtMjIyLDEyICsyMzUsNiBA
QCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYg
Y29udGVudFJlY3QpCiAgICAgICAgICAgICBJbnRSZWN0IGJvdW5kID0gdGlsZUxheWVyUmVjdCh0
aWxlKTsKICAgICAgICAgICAgIGJvdW5kLmludGVyc2VjdChsYXllclJlY3QpOwogICAgICAgICAg
ICAgdGlsZS0+bV9kaXJ0eUxheWVyUmVjdC51bml0ZShib3VuZCk7Ci0KLSAgICAgICAgICAgIC8v
IEludmFsaWRhdGUgb2xkIGxheWVyIGFyZWEgdG8gY2xlYXIgYW55IGNvbnRlbnRzIGxlZnQgZnJv
bQotICAgICAgICAgICAgLy8gcHJldmlvdXMgbGF5ZXIgc2l6ZS4KLSAgICAgICAgICAgIEludFJl
Y3Qgb2xkQm91bmQgPSB0aWxlTGF5ZXJSZWN0KHRpbGUpOwotICAgICAgICAgICAgb2xkQm91bmQu
aW50ZXJzZWN0KG9sZExheWVyUmVjdCk7Ci0gICAgICAgICAgICB0aWxlLT5tX2RpcnR5TGF5ZXJS
ZWN0LnVuaXRlKG9sZEJvdW5kKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI4NCw3ICsyOTEs
NiBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJl
Y3QmIGNvbnRlbnRSZWN0LCBMYXllclRleHR1cgogICAgIC8vIENyZWF0ZSB0aWxlcyBhcyBuZWVk
ZWQsIGV4cGFuZGluZyBhIGRpcnR5IHJlY3QgdG8gY29udGFpbiBhbGwKICAgICAvLyB0aGUgZGly
dHkgcmVnaW9ucyBjdXJyZW50bHkgYmVpbmcgZHJhd24uCiAgICAgSW50UmVjdCBkaXJ0eUxheWVy
UmVjdDsKLSAgICBJbnRTaXplIHRpbGVTaXplOwogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBi
b3R0b207CiAgICAgY29udGVudFJlY3RUb1RpbGVJbmRpY2VzKGNvbnRlbnRSZWN0LCBsZWZ0LCB0
b3AsIHJpZ2h0LCBib3R0b20pOwogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyAr
K2opIHsKQEAgLTI5MywxOSArMjk5LDE2IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIExheWVyVGV4dHVyCiAgICAg
ICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAgICAgICAgICAgdGlsZSA9IGNyZWF0ZVRpbGUoaSwg
aik7CiAKLSAgICAgICAgICAgIEludFNpemUgdGV4U2l6ZSA9IHRpbGVUZXhSZWN0KHRpbGUpLnNp
emUoKTsKLSAgICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5pc1ZhbGlkKHRleFNpemUs
IG1fdGV4dHVyZUZvcm1hdCkpCisgICAgICAgICAgICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+aXNW
YWxpZChtX3RpbGVTaXplLCBtX3RleHR1cmVGb3JtYXQpKQogICAgICAgICAgICAgICAgIHRpbGUt
Pm1fZGlydHlMYXllclJlY3QgPSB0aWxlTGF5ZXJSZWN0KHRpbGUpOwogCi0gICAgICAgICAgICBp
ZiAoIXRpbGUtPnRleHR1cmUoKS0+cmVzZXJ2ZSh0ZXhTaXplLCBtX3RleHR1cmVGb3JtYXQpKSB7
CisgICAgICAgICAgICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+cmVzZXJ2ZShtX3RpbGVTaXplLCBt
X3RleHR1cmVGb3JtYXQpKSB7CiAgICAgICAgICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBkaXJ0eUxheWVyUmVjdC51bml0ZSh0aWxlLT5tX2RpcnR5
TGF5ZXJSZWN0KTsKLQotICAgICAgICAgICAgdGlsZVNpemUgPSB0aWxlU2l6ZS5leHBhbmRlZFRv
KHRleFNpemUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMTgsNyArMzIxLDcgQEAgdm9pZCBM
YXllclRpbGVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgTGF5ZXJUZXh0dXIKICAgICBpZiAoZGlydHlMYXllclJlY3QuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICB0ZXh0dXJlVXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKG1fcGFp
bnRSZWN0LCB0aWxlU2l6ZSwgbV90aWxpbmdEYXRhLmJvcmRlclRleGVscygpKTsKKyAgICB0ZXh0
dXJlVXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0LCBtX3RpbGVTaXplLCBtX3Rp
bGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkpOwogfQogCiB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6
dXBkYXRlUmVjdChMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcikKQEAgLTM0Myw4
ICszNDYsNyBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6dXBkYXRlUmVjdChMYXllclRleHR1
cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcikKIAogICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHBh
Z2Utc3BhY2UgcmVjdGFuZ2xlIHRvIGNvcHkgZnJvbS4KICAgICAgICAgICAgIEludFJlY3Qgc291
cmNlUmVjdCA9IHRpbGVDb250ZW50UmVjdCh0aWxlKTsKLSAgICAgICAgICAgIEludFJlY3QgdGV4
UmVjdCA9IHRpbGVUZXhSZWN0KHRpbGUpOwotICAgICAgICAgICAgY29uc3QgSW50UG9pbnQgYW5j
aG9yID0gdGV4UmVjdC5sb2NhdGlvbigpOworICAgICAgICAgICAgY29uc3QgSW50UG9pbnQgYW5j
aG9yID0gc291cmNlUmVjdC5sb2NhdGlvbigpOwogICAgICAgICAgICAgc291cmNlUmVjdC5pbnRl
cnNlY3QobGF5ZXJSZWN0VG9Db250ZW50UmVjdCh0aWxlLT5tX2RpcnR5TGF5ZXJSZWN0KSk7CiAg
ICAgICAgICAgICAvLyBQYWludCByZWN0IG5vdCBndWFyYW50ZWVkIHRvIGxpbmUgdXAgb24gdGls
ZSBib3VuZGFyaWVzLCBzbwogICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgc291cmNlUmVj
dCBkb2Vzbid0IGV4dGVuZCBvdXRzaWRlIG9mIGl0LgpAQCAtNDExLDE3ICs0MTMsNyBAQCB2b2lk
IExheWVyVGlsZXJDaHJvbWl1bTo6Z3Jvd0xheWVyVG9Db250YWluKGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0KQogICAgIC8vIEdyb3cgdGhlIHRpbGUgYXJyYXkgdG8gY29udGFpbiB0aGlzIGNv
bnRlbnQgcmVjdC4KICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNvbnRlbnRSZWN0VG9MYXllclJl
Y3QoY29udGVudFJlY3QpOwogICAgIEludFNpemUgcmVjdFNpemUgPSBJbnRTaXplKGxheWVyUmVj
dC5tYXhYKCksIGxheWVyUmVjdC5tYXhZKCkpOwotICAgIEludFNpemUgdGV4U2l6ZSA9IG1fdGls
ZVNpemU7Ci0KLSAgICAvLyBVc2UgcmVjdCB3aXRoIGJvcmRlciB0ZXhlbHMgYXMgbWF4IHRleHR1
cmUgc2l6ZSB3aGVuIHRpbGUgc2l6ZQotICAgIC8vIGhhcyBub3QgYmVlbiBzcGVjaWZpZWQuCi0g
ICAgaWYgKHRleFNpemUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRleFNpemUgPSByZWN0U2l6ZTsK
LSAgICAgICAgaWYgKG1fdGlsaW5nRGF0YS5ib3JkZXJUZXhlbHMoKSkKLSAgICAgICAgICAgIHRl
eFNpemUuZXhwYW5kKDIsIDIpOwotICAgIH0KIAotICAgIG1fdGlsaW5nRGF0YS5zZXRNYXhUZXh0
dXJlU2l6ZShtYXgodGV4U2l6ZS53aWR0aCgpLCB0ZXhTaXplLmhlaWdodCgpKSk7CiAgICAgSW50
U2l6ZSBvbGRMYXllclNpemUobV90aWxpbmdEYXRhLnRvdGFsU2l6ZVgoKSwgbV90aWxpbmdEYXRh
LnRvdGFsU2l6ZVkoKSk7CiAgICAgSW50U2l6ZSBuZXdTaXplID0gcmVjdFNpemUuZXhwYW5kZWRU
byhvbGRMYXllclNpemUpOwogICAgIG1fdGlsaW5nRGF0YS5zZXRUb3RhbFNpemUobmV3U2l6ZS53
aWR0aCgpLCBuZXdTaXplLmhlaWdodCgpKTsKQEAgLTQzNiwzNSArNDI4LDEwIEBAIHN0YXRpYyBi
b29sIGlzQ0NXKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKICAgICByZXR1cm4gKHYxLngoKSAqIHYy
LnkoKSAtIHYxLnkoKSAqIHYyLngoKSkgPCAwOwogfQogCi1zdGF0aWMgRWRnZSBjb21wdXRlRWRn
ZShjb25zdCBGbG9hdFBvaW50JiBwLCBjb25zdCBGbG9hdFBvaW50JiBxLCBmbG9hdCBzaWduKQot
ewotICAgIEFTU0VSVChwICE9IHEpOwotCi0gICAgRmxvYXRQb2ludCB0YW5nZW50KHAueSgpIC0g
cS55KCksIHEueCgpIC0gcC54KCkpOwotICAgIGZsb2F0IHNjYWxlID0gc2lnbiAvIHRhbmdlbnQu
bGVuZ3RoKCk7Ci0gICAgZmxvYXQgY3Jvc3MyID0gcC54KCkgKiBxLnkoKSAtIHEueCgpICogcC55
KCk7Ci0KLSAgICByZXR1cm4gRWRnZSh0YW5nZW50LngoKSAqIHNjYWxlLAotICAgICAgICAgICAg
ICAgIHRhbmdlbnQueSgpICogc2NhbGUsCi0gICAgICAgICAgICAgICAgY3Jvc3MyICogc2NhbGUp
OwotfQotCi1zdGF0aWMgRmxvYXRQb2ludCBpbnRlcnNlY3QoY29uc3QgRWRnZSYgYSwgY29uc3Qg
RWRnZSYgYikKLXsKLSAgICByZXR1cm4gRmxvYXRQb2ludCgKLSAgICAgICAgKGEueSgpICogYi56
KCkgLSBiLnkoKSAqIGEueigpKSAvIChhLngoKSAqIGIueSgpIC0gYi54KCkgKiBhLnkoKSksCi0g
ICAgICAgIChhLngoKSAqIGIueigpIC0gYi54KCkgKiBhLnooKSkgLyAoYi54KCkgKiBhLnkoKSAt
IGEueCgpICogYi55KCkpKTsKLX0KLQogdGVtcGxhdGUgPGNsYXNzIFQ+CiB2b2lkIExheWVyVGls
ZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgZ2xvYmFsVHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBjb25z
dCBUKiBwcm9ncmFtKQogewotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJS
ZW5kZXJlckNvbnRleHQoKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbShw
cm9ncmFtLT5wcm9ncmFtKCkpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFp
KHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKLSAgICBH
TEMoY29udGV4dCwgY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRTApKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeChnbG9iYWxUcmFuc2Zv
cm0pOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeChsYXllclJlbmRlcmVyKCktPndp
bmRvd01hdHJpeCgpICogbGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCkgKiBnbG9i
YWxUcmFuc2Zvcm0pOwogCiAgICAgLy8gV2UgZG9uJ3QgY2FyZSBhYm91dCBaIGNvbXBvbmVudC4K
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXhYWVcgPQpAQCAtNDc4LDMzICs0NDUsNDYg
QEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggaW52ZXJzZSA9IG1hdHJpeFhZVy5pbnZlcnNlKCk7Ci0gICAgSW50UmVj
dCBib3VuZHMobV9sYXllclBvc2l0aW9uLCBJbnRTaXplKG1fdGlsaW5nRGF0YS50b3RhbFNpemVY
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdGlsaW5n
RGF0YS50b3RhbFNpemVZKCkpKTsKIAotICAgIC8vIEluY2x1ZGUgb3V0ZXIgYm9yZGVyIHRleGVs
cyBpbiBib3VuZHMuCi0gICAgYm91bmRzLmluZmxhdGUobV90aWxpbmdEYXRhLmJvcmRlclRleGVs
cygpKTsKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXJDb250
ZXh0KCk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJv
Z3JhbSgpKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xaShwcm9ncmFtLT5m
cmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CisgICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CisK
KyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNvbnRlbnRSZWN0VG9MYXllclJlY3QoY29udGVudFJl
Y3QpOworICAgIEludFJlY3QgYm91bmRzKGxheWVyUmVjdCk7CisgICAgYm91bmRzLm1vdmUobV9s
YXllclBvc2l0aW9uLngoKSwgbV9sYXllclBvc2l0aW9uLnkoKSk7CiAKICAgICAvLyBNYXAgYm91
bmRzIHRvIGRldmljZSBzcGFjZS4KICAgICBGbG9hdFF1YWQgYm91bmRzUXVhZCA9IG1hdHJpeC5t
YXBRdWFkKEZsb2F0UXVhZChib3VuZHMpKTsKIAorICAgIC8vIENyZWF0ZSBvdXRlciBlZGdlcy4K
KyAgICBFZGdlIGxlZnRFZGdlKGJvdW5kc1F1YWQucDQoKSwgYm91bmRzUXVhZC5wMSgpKTsKKyAg
ICBFZGdlIHJpZ2h0RWRnZShib3VuZHNRdWFkLnAyKCksIGJvdW5kc1F1YWQucDMoKSk7CisgICAg
RWRnZSB0b3BFZGdlKGJvdW5kc1F1YWQucDEoKSwgYm91bmRzUXVhZC5wMigpKTsKKyAgICBFZGdl
IGJvdHRvbUVkZ2UoYm91bmRzUXVhZC5wMygpLCBib3VuZHNRdWFkLnA0KCkpOworCiAgICAgLy8g
Q291bnRlci1jbG9ja3dpc2U/CiAgICAgZmxvYXQgc2lnbiA9IGlzQ0NXKGJvdW5kc1F1YWQpID8g
LTEgOiAxOwotCi0gICAgLy8gQ29tcHV0ZSBvdXRlciBlZGdlcy4KLSAgICBFZGdlIGxlZnRFZGdl
ID0gY29tcHV0ZUVkZ2UoYm91bmRzUXVhZC5wNCgpLCBib3VuZHNRdWFkLnAxKCksIHNpZ24pOwot
ICAgIEVkZ2UgcmlnaHRFZGdlID0gY29tcHV0ZUVkZ2UoYm91bmRzUXVhZC5wMigpLCBib3VuZHNR
dWFkLnAzKCksIHNpZ24pOwotICAgIEVkZ2UgdG9wRWRnZSA9IGNvbXB1dGVFZGdlKGJvdW5kc1F1
YWQucDEoKSwgYm91bmRzUXVhZC5wMigpLCBzaWduKTsKLSAgICBFZGdlIGJvdHRvbUVkZ2UgPSBj
b21wdXRlRWRnZShib3VuZHNRdWFkLnAzKCksIGJvdW5kc1F1YWQucDQoKSwgc2lnbik7CisgICAg
bGVmdEVkZ2Uuc2NhbGUoc2lnbik7CisgICAgcmlnaHRFZGdlLnNjYWxlKHNpZ24pOworICAgIHRv
cEVkZ2Uuc2NhbGUoc2lnbik7CisgICAgYm90dG9tRWRnZS5zY2FsZShzaWduKTsKKworICAgIC8v
IFVzZSBzb2Z0IGVkZ2VzLgorICAgIGZsb2F0IGVkZ2VTaGFycG5lc3MgPSAobV90aWxpbmdEYXRh
LmJvcmRlclRleGVscygpICYmICFnbG9iYWxUcmFuc2Zvcm0uaXNJbnRlZ2VyVHJhbnNsYXRpb24o
KSkgPyAwIDogMTsKKyAgICBsZWZ0RWRnZS5zZXRXKGVkZ2VTaGFycG5lc3MpOworICAgIHJpZ2h0
RWRnZS5zZXRXKGVkZ2VTaGFycG5lc3MpOworICAgIHRvcEVkZ2Uuc2V0VyhlZGdlU2hhcnBuZXNz
KTsKKyAgICBib3R0b21FZGdlLnNldFcoZWRnZVNoYXJwbmVzcyk7CiAKICAgICAvLyBNb3ZlIG91
dGVyIGVkZ2VzIHRvIGVuc3VyZSB0aGF0IGFsbCBwYXJ0aWFsbHkgY292ZXJlZCBwaXhlbHMgYXJl
CiAgICAgLy8gcHJvY2Vzc2VkLgotICAgIGZsb2F0IHpEaXN0YW5jZSA9IG1fdGlsaW5nRGF0YS5i
b3JkZXJUZXhlbHMoKSAqIDAuNWY7Ci0gICAgbGVmdEVkZ2UubW92ZSgwLCAwLCB6RGlzdGFuY2Up
OwotICAgIHJpZ2h0RWRnZS5tb3ZlKDAsIDAsIHpEaXN0YW5jZSk7Ci0gICAgdG9wRWRnZS5tb3Zl
KDAsIDAsIHpEaXN0YW5jZSk7Ci0gICAgYm90dG9tRWRnZS5tb3ZlKDAsIDAsIHpEaXN0YW5jZSk7
Ci0KLSAgICBHQzNEaW50IGZpbHRlciA9IChtX3RpbGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkgJiYg
IW1hdHJpeC5pc0ludGVnZXJUcmFuc2xhdGlvbigpKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5F
QVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKKyAgICBmbG9hdCB6RGlzdGFuY2UgPSAo
MSAtIGVkZ2VTaGFycG5lc3MpICogMC41ZjsKKyAgICBsZWZ0RWRnZS5zZXRaKGxlZnRFZGdlLnoo
KSArIHpEaXN0YW5jZSk7CisgICAgcmlnaHRFZGdlLnNldFoocmlnaHRFZGdlLnooKSArIHpEaXN0
YW5jZSk7CisgICAgdG9wRWRnZS5zZXRaKHRvcEVkZ2UueigpICsgekRpc3RhbmNlKTsKKyAgICBi
b3R0b21FZGdlLnNldFooYm90dG9tRWRnZS56KCkgKyB6RGlzdGFuY2UpOwogCiAgICAgRWRnZSBw
cmV2RWRnZVkgPSB0b3BFZGdlOwogCkBAIC01MTUsNyArNDk1LDEzIEBAIHZvaWQgTGF5ZXJUaWxl
ckNocm9taXVtOjpkcmF3VGlsZXMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0CiAKICAgICAgICAgRWRnZSBlZGdlWSA9IGJvdHRvbUVkZ2U7CiAgICAgICAgIGlm
IChqIDwgKG1fdGlsaW5nRGF0YS5udW1UaWxlc1koKSAtIDEpKSB7Ci0gICAgICAgICAgICBJbnRS
ZWN0IHRpbGVSZWN0ID0gbV90aWxpbmdEYXRhLnRpbGVCb3VuZHMobV90aWxpbmdEYXRhLnRpbGVJ
bmRleCgwLCBqKSk7CisgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0ID0gdW5pb25SZWN0KG1f
dGlsaW5nRGF0YS50aWxlQm91bmRzKG1fdGlsaW5nRGF0YS50aWxlSW5kZXgoMCwgaikpLCBtX3Rp
bGluZ0RhdGEudGlsZUJvdW5kcyhtX3RpbGluZ0RhdGEudGlsZUluZGV4KG1fdGlsaW5nRGF0YS5u
dW1UaWxlc1goKSAtIDEsIGopKSk7CisgICAgICAgICAgICB0aWxlUmVjdC5pbnRlcnNlY3QobGF5
ZXJSZWN0KTsKKworICAgICAgICAgICAgLy8gU2tpcCBlbXB0eSByb3dzLgorICAgICAgICAgICAg
aWYgKHRpbGVSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAg
ICAgICAgICAgdGlsZVJlY3QubW92ZShtX2xheWVyUG9zaXRpb24ueCgpLCBtX2xheWVyUG9zaXRp
b24ueSgpKTsKIAogICAgICAgICAgICAgRmxvYXRQb2ludCBwMSh0aWxlUmVjdC5tYXhYKCksIHRp
bGVSZWN0Lm1heFkoKSk7CkBAIC01MjUsOCArNTExLDExIEBAIHZvaWQgTGF5ZXJUaWxlckNocm9t
aXVtOjpkcmF3VGlsZXMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRyYW5zZm9y
bWF0CiAgICAgICAgICAgICBwMSA9IG1hdHJpeC5tYXBQb2ludChwMSk7CiAgICAgICAgICAgICBw
MiA9IG1hdHJpeC5tYXBQb2ludChwMik7CiAKLSAgICAgICAgICAgIC8vIENvbXB1dGUgaG9yaXpv
bnRhbCBlZGdlLgotICAgICAgICAgICAgZWRnZVkgPSBjb21wdXRlRWRnZShwMSwgcDIsIHNpZ24p
OworICAgICAgICAgICAgLy8gQ3JlYXRlIGhvcml6b250YWwgZWRnZS4KKyAgICAgICAgICAgIGVk
Z2VZID0gRWRnZShwMSwgcDIpOworCisgICAgICAgICAgICAvLyBBZGp1c3QgZGlyZWN0aW9uLgor
ICAgICAgICAgICAgZWRnZVkuc2NhbGUoc2lnbik7CiAgICAgICAgIH0KIAogICAgICAgICBmb3Ig
KGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CkBAIC01MzcsMjcgKzUyNiw1MyBAQCB2
b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdAogICAgICAgICAgICAgQVNTRVJUKHRpbGUtPnRleHR1cmUo
KS0+aXNSZXNlcnZlZCgpKTsKIAogICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5iaW5kVGV4
dHVyZSgpOwotICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmko
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
X01JTl9GSUxURVIsIGZpbHRlcikpOwotICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQt
PnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikpOwogCiAgICAgICAgICAgICAvLyBE
b24ndCB1c2UgdGlsZUNvbnRlbnRSZWN0IGhlcmUsIGFzIHRoYXQgY29udGFpbnMgdGhlIGZ1bGwK
ICAgICAgICAgICAgIC8vIHJlY3Qgd2l0aCBib3JkZXIgdGV4ZWxzIHdoaWNoIHNob3VsZG4ndCBi
ZSBkcmF3bi4KICAgICAgICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSBtX3RpbGluZ0RhdGEudGls
ZUJvdW5kcyhtX3RpbGluZ0RhdGEudGlsZUluZGV4KHRpbGUtPmkoKSwgdGlsZS0+aigpKSk7Cisg
ICAgICAgICAgICBJbnRSZWN0IGRpc3BsYXlSZWN0ID0gdGlsZVJlY3Q7CisgICAgICAgICAgICB0
aWxlUmVjdC5pbnRlcnNlY3QobGF5ZXJSZWN0KTsKKworICAgICAgICAgICAgLy8gS2VlcCB0cmFj
ayBvZiBob3cgdGhlIHRvcCBsZWZ0IGhhcyBtb3ZlZCwgc28gdGhlIHRleHR1cmUgY2FuIGJlCisg
ICAgICAgICAgICAvLyBvZmZzZXQgdGhlIHNhbWUgYW1vdW50LgorICAgICAgICAgICAgSW50U2l6
ZSBkaXNwbGF5T2Zmc2V0ID0gdGlsZVJlY3QubWluWE1pbllDb3JuZXIoKSAtIGRpc3BsYXlSZWN0
Lm1pblhNaW5ZQ29ybmVyKCk7CisKKyAgICAgICAgICAgIC8vIFNraXAgZW1wdHkgdGlsZXMuCisg
ICAgICAgICAgICBpZiAodGlsZVJlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCiAgICAgICAgICAgICB0aWxlUmVjdC5tb3ZlKG1fbGF5ZXJQb3NpdGlvbi54KCksIG1f
bGF5ZXJQb3NpdGlvbi55KCkpOwogCi0gICAgICAgICAgICBJbnRQb2ludCB0ZXhPZmZzZXQgPSBt
X3RpbGluZ0RhdGEudGV4dHVyZU9mZnNldCgpOwotICAgICAgICAgICAgSW50UmVjdCB0ZXhSZWN0
ID0gdGlsZVRleFJlY3QodGlsZSk7Ci0gICAgICAgICAgICBmbG9hdCB0aWxlV2lkdGggPSBzdGF0
aWNfY2FzdDxmbG9hdD4odGV4UmVjdC53aWR0aCgpKTsKLSAgICAgICAgICAgIGZsb2F0IHRpbGVI
ZWlnaHQgPSBzdGF0aWNfY2FzdDxmbG9hdD4odGV4UmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgICAg
ICBmbG9hdCB0ZXhUcmFuc2xhdGVYID0gKHRleE9mZnNldC54KCkgLSB0aWxlUmVjdC54KCkpIC8g
dGlsZVdpZHRoOwotICAgICAgICAgICAgZmxvYXQgdGV4VHJhbnNsYXRlWSA9ICh0ZXhPZmZzZXQu
eSgpIC0gdGlsZVJlY3QueSgpKSAvIHRpbGVIZWlnaHQ7Ci0gICAgICAgICAgICBmbG9hdCB0ZXhT
Y2FsZVggPSB0aWxlUmVjdC53aWR0aCgpIC8gdGlsZVdpZHRoOwotICAgICAgICAgICAgZmxvYXQg
dGV4U2NhbGVZID0gdGlsZVJlY3QuaGVpZ2h0KCkgLyB0aWxlSGVpZ2h0OworICAgICAgICAgICAg
RmxvYXRSZWN0IGNsYW1wUmVjdCh0aWxlUmVjdCk7CisgICAgICAgICAgICAvLyBDbGFtcCB0ZXh0
dXJlIGNvb3JkaW5hdGVzIHRvIGF2b2lkIHNhbXBsaW5nIG91dHNpZGUgdGhlIGxheWVyLgorICAg
ICAgICAgICAgY29uc3QgZmxvYXQgZXBzaWxvbiA9IDEgLyAxMDI0LjBmOworICAgICAgICAgICAg
ZmxvYXQgY2xhbXBYID0gbWluKDAuNSwgY2xhbXBSZWN0LndpZHRoKCkgLyAyLjAgLSBlcHNpbG9u
KTsKKyAgICAgICAgICAgIGZsb2F0IGNsYW1wWSA9IG1pbigwLjUsIGNsYW1wUmVjdC5oZWlnaHQo
KSAvIDIuMCAtIGVwc2lsb24pOworICAgICAgICAgICAgY2xhbXBSZWN0LmluZmxhdGVYKC1jbGFt
cFgpOworICAgICAgICAgICAgY2xhbXBSZWN0LmluZmxhdGVZKC1jbGFtcFkpOworICAgICAgICAg
ICAgRmxvYXRTaXplIGNsYW1wT2Zmc2V0ID0gY2xhbXBSZWN0Lm1pblhNaW5ZQ29ybmVyKCkgLSBG
bG9hdFJlY3QodGlsZVJlY3QpLm1pblhNaW5ZQ29ybmVyKCk7CisKKyAgICAgICAgICAgIEZsb2F0
UG9pbnQgdGV4T2Zmc2V0ID0gbV90aWxpbmdEYXRhLnRleHR1cmVPZmZzZXQodGlsZS0+aSgpLCB0
aWxlLT5qKCkpICsgY2xhbXBPZmZzZXQgKyBGbG9hdFNpemUoZGlzcGxheU9mZnNldCk7CisgICAg
ICAgICAgICBmbG9hdCB0aWxlV2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4obV90aWxlU2l6ZS53
aWR0aCgpKTsKKyAgICAgICAgICAgIGZsb2F0IHRpbGVIZWlnaHQgPSBzdGF0aWNfY2FzdDxmbG9h
dD4obV90aWxlU2l6ZS5oZWlnaHQoKSk7CisKKyAgICAgICAgICAgIC8vIE1hcCBjbGFtcGluZyBy
ZWN0YW5nbGUgdG8gdW5pdCBzcXVhcmUuCisgICAgICAgICAgICBmbG9hdCB2c1RleFRyYW5zbGF0
ZVggPSAtY2xhbXBSZWN0LngoKSAvIGNsYW1wUmVjdC53aWR0aCgpOworICAgICAgICAgICAgZmxv
YXQgdnNUZXhUcmFuc2xhdGVZID0gLWNsYW1wUmVjdC55KCkgLyBjbGFtcFJlY3QuaGVpZ2h0KCk7
CisgICAgICAgICAgICBmbG9hdCB2c1RleFNjYWxlWCA9IHRpbGVSZWN0LndpZHRoKCkgLyBjbGFt
cFJlY3Qud2lkdGgoKTsKKyAgICAgICAgICAgIGZsb2F0IHZzVGV4U2NhbGVZID0gdGlsZVJlY3Qu
aGVpZ2h0KCkgLyBjbGFtcFJlY3QuaGVpZ2h0KCk7CisKKyAgICAgICAgICAgIC8vIE1hcCB0byBu
b3JtYWxpemVkIHRleHR1cmUgY29vcmRpbmF0ZXMuCisgICAgICAgICAgICBmbG9hdCBmc1RleFRy
YW5zbGF0ZVggPSB0ZXhPZmZzZXQueCgpIC8gdGlsZVdpZHRoOworICAgICAgICAgICAgZmxvYXQg
ZnNUZXhUcmFuc2xhdGVZID0gdGV4T2Zmc2V0LnkoKSAvIHRpbGVIZWlnaHQ7CisgICAgICAgICAg
ICBmbG9hdCBmc1RleFNjYWxlWCA9IGNsYW1wUmVjdC53aWR0aCgpIC8gdGlsZVdpZHRoOworICAg
ICAgICAgICAgZmxvYXQgZnNUZXhTY2FsZVkgPSBjbGFtcFJlY3QuaGVpZ2h0KCkgLyB0aWxlSGVp
Z2h0OworCiAgICAgICAgICAgICAvLyBPcGVuR0wgY29vcmRpbmF0ZSBzeXN0ZW0gaXMgYm90dG9t
LXVwLgogICAgICAgICAgICAgLy8gSWYgdGlsZSB0ZXh0dXJlIGlzIHRvcC1kb3duLCB3ZSBuZWVk
IHRvIGZsaXAgdGhlIHRleHR1cmUgY29vcmRpbmF0ZXMuCiAgICAgICAgICAgICBpZiAobV90ZXh0
dXJlT3JpZW50YXRpb24gPT0gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VG9wRG93bk9yaWVudGF0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgdGV4VHJhbnNsYXRlWSA9IDEuMCAtIHRleFRyYW5zbGF0ZVk7
Ci0gICAgICAgICAgICAgICAgdGV4U2NhbGVZICo9IC0xLjA7CisgICAgICAgICAgICAgICAgZnNU
ZXhUcmFuc2xhdGVZID0gMS4wIC0gZnNUZXhUcmFuc2xhdGVZOworICAgICAgICAgICAgICAgIGZz
VGV4U2NhbGVZICo9IC0xLjA7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEVkZ2UgZWRn
ZVggPSByaWdodEVkZ2U7CkBAIC01NjksMTUgKzU4NCwxOCBAQCB2b2lkIExheWVyVGlsZXJDaHJv
bWl1bTo6ZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdAogICAgICAgICAgICAgICAgIHAxID0gbWF0cml4Lm1hcFBvaW50KHAxKTsKICAgICAgICAg
ICAgICAgICBwMiA9IG1hdHJpeC5tYXBQb2ludChwMik7CiAKLSAgICAgICAgICAgICAgICAvLyBD
b21wdXRlIHZlcnRpY2FsIGVkZ2UuCi0gICAgICAgICAgICAgICAgZWRnZVggPSBjb21wdXRlRWRn
ZShwMSwgcDIsIHNpZ24pOworICAgICAgICAgICAgICAgIC8vIENyZWF0ZSB2ZXJ0aWNhbCBlZGdl
LgorICAgICAgICAgICAgICAgIGVkZ2VYID0gRWRnZShwMSwgcDIpOworCisgICAgICAgICAgICAg
ICAgLy8gQWRqdXN0IGRpcmVjdGlvbi4KKyAgICAgICAgICAgICAgICBlZGdlWC5zY2FsZShzaWdu
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gQ3JlYXRlIGRldmljZSBzcGFjZSBx
dWFkLgotICAgICAgICAgICAgRmxvYXRRdWFkIGRldmljZVF1YWQoaW50ZXJzZWN0KGVkZ2VZLCBw
cmV2RWRnZVgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJzZWN0KHBy
ZXZFZGdlWCwgcHJldkVkZ2VZKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dGVyc2VjdChwcmV2RWRnZVksIGVkZ2VYKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludGVyc2VjdChlZGdlWCwgZWRnZVkpKTsKKyAgICAgICAgICAgIEZsb2F0UXVhZCBkZXZp
Y2VRdWFkKEVkZ2U6OmludGVyc2VjdChlZGdlWSwgcHJldkVkZ2VYKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVkZ2U6OmludGVyc2VjdChwcmV2RWRnZVgsIHByZXZFZGdlWSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGdlOjppbnRlcnNlY3QocHJldkVk
Z2VZLCBlZGdlWCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGdlOjppbnRl
cnNlY3QoZWRnZVgsIGVkZ2VZKSk7CiAKICAgICAgICAgICAgIC8vIE1hcCBxdWFkIHRvIGxheWVy
IHNwYWNlLgogICAgICAgICAgICAgRmxvYXRRdWFkIHF1YWQgPSBpbnZlcnNlLm1hcFF1YWQoZGV2
aWNlUXVhZCk7CkBAIC01ODUsMjAgKzYwMywyNiBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6
ZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdAog
ICAgICAgICAgICAgLy8gTm9ybWFsaXplIHRvIHRpbGVSZWN0LgogICAgICAgICAgICAgcXVhZC5z
Y2FsZSgxLjBmIC8gdGlsZVJlY3Qud2lkdGgoKSwgMS4wZiAvIHRpbGVSZWN0LmhlaWdodCgpKTsK
IAotICAgICAgICAgICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBxdWFkLCBsYXllclJlbmRl
cmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwgbWF0cml4LCB0aWxlUmVjdC53aWR0aCgpLCB0aWxl
UmVjdC5oZWlnaHQoKSwgb3BhY2l0eSwgdGV4VHJhbnNsYXRlWCwgdGV4VHJhbnNsYXRlWSwgdGV4
U2NhbGVYLCB0ZXhTY2FsZVksIHByb2dyYW0pOworICAgICAgICAgICAgZHJhd1RleHR1cmVkUXVh
ZChjb250ZXh0LCBxdWFkLCBwcmV2RWRnZVgsIHByZXZFZGdlWSwgZWRnZVgsIGVkZ2VZLCBsYXll
clJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwgZ2xvYmFsVHJhbnNmb3JtLCB0aWxlUmVj
dC53aWR0aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwgb3BhY2l0eSwgdnNUZXhUcmFuc2xhdGVYLCB2
c1RleFRyYW5zbGF0ZVksIHZzVGV4U2NhbGVYLCB2c1RleFNjYWxlWSwgZnNUZXhUcmFuc2xhdGVY
LCBmc1RleFRyYW5zbGF0ZVksIGZzVGV4U2NhbGVYLCBmc1RleFNjYWxlWSwgcHJvZ3JhbSk7CiAK
ICAgICAgICAgICAgIHByZXZFZGdlWCA9IGVkZ2VYOworICAgICAgICAgICAgLy8gUmV2ZXJzZSBk
aXJlY3Rpb24uCisgICAgICAgICAgICBwcmV2RWRnZVguc2NhbGUoLTEpOwogICAgICAgICB9CiAK
ICAgICAgICAgcHJldkVkZ2VZID0gZWRnZVk7CisgICAgICAgIC8vIFJldmVyc2UgZGlyZWN0aW9u
LgorICAgICAgICBwcmV2RWRnZVkuc2NhbGUoLTEpOwogICAgIH0KIH0KIAogdGVtcGxhdGUgPGNs
YXNzIFQ+Ci12b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVkUXVhZChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIGRyYXdNYXRyaXgsCit2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVkUXVh
ZChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25z
dCBFZGdlJiBsZWZ0LCBjb25zdCBFZGdlJiB0b3AsIGNvbnN0IEVkZ2UmIHJpZ2h0LCBjb25zdCBF
ZGdlJiBib3R0b20sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZs
b2F0IG9wYWNpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bG9hdCB0ZXhUcmFuc2xhdGVYLCBmbG9hdCB0ZXhUcmFuc2xhdGVZLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdGV4U2NhbGVYLCBmbG9hdCB0ZXhTY2Fs
ZVksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB2c1Rl
eFRyYW5zbGF0ZVgsIGZsb2F0IHZzVGV4VHJhbnNsYXRlWSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHZzVGV4U2NhbGVYLCBmbG9hdCB2c1RleFNjYWxl
WSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGZzVGV4
VHJhbnNsYXRlWCwgZmxvYXQgZnNUZXhUcmFuc2xhdGVZLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZnNUZXhTY2FsZVgsIGZsb2F0IGZzVGV4U2NhbGVZ
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCogcHJv
Z3JhbSkKIHsKICAgICBzdGF0aWMgZmxvYXQgZ2xNYXRyaXhbMTZdOwpAQCAtNjE1LDggKzYzOSwx
MSBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVkUXVhZChHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgY29uc3QgRmxvYQogCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQt
PnVuaWZvcm0xZihwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSwgb3Bh
Y2l0eSkpOwogCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm00Zihwcm9ncmFtLT52
ZXJ0ZXhTaGFkZXIoKS50ZXhUcmFuc2Zvcm1Mb2NhdGlvbigpLAotICAgICAgICB0ZXhUcmFuc2xh
dGVYLCB0ZXhUcmFuc2xhdGVZLCB0ZXhTY2FsZVgsIHRleFNjYWxlWSkpOworICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT51bmlmb3JtNGYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkudnNUZXhUcmFu
c2Zvcm1Mb2NhdGlvbigpLAorICAgICAgICB2c1RleFRyYW5zbGF0ZVgsIHZzVGV4VHJhbnNsYXRl
WSwgdnNUZXhTY2FsZVgsIHZzVGV4U2NhbGVZKSk7CisKKyAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dW5pZm9ybTRmKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZnNUZXhUcmFuc2Zvcm1Mb2Nh
dGlvbigpLAorICAgICAgICBmc1RleFRyYW5zbGF0ZVgsIGZzVGV4VHJhbnNsYXRlWSwgZnNUZXhT
Y2FsZVgsIGZzVGV4U2NhbGVZKSk7CiAKICAgICBmbG9hdCBwb2ludFs4XTsKICAgICBwb2ludFsw
XSA9IHF1YWQucDEoKS54KCk7CkBAIC02MjksNiArNjU2LDI1IEBAIHZvaWQgTGF5ZXJUaWxlckNo
cm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25z
dCBGbG9hCiAgICAgcG9pbnRbN10gPSBxdWFkLnA0KCkueSgpOwogICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT51bmlmb3JtMmZ2KHByb2dyYW0tPnZlcnRleFNoYWRlcigpLnBvaW50TG9jYXRpb24o
KSwgcG9pbnQsIDQpKTsKIAorICAgIGZsb2F0IGVkZ2VbMTZdOworICAgIGVkZ2VbMF0gPSBsZWZ0
LngoKTsKKyAgICBlZGdlWzFdID0gbGVmdC55KCk7CisgICAgZWRnZVsyXSA9IGxlZnQueigpOwor
ICAgIGVkZ2VbM10gPSBsZWZ0LncoKTsKKyAgICBlZGdlWzRdID0gdG9wLngoKTsKKyAgICBlZGdl
WzVdID0gdG9wLnkoKTsKKyAgICBlZGdlWzZdID0gdG9wLnooKTsKKyAgICBlZGdlWzddID0gdG9w
LncoKTsKKyAgICBlZGdlWzhdID0gcmlnaHQueCgpOworICAgIGVkZ2VbOV0gPSByaWdodC55KCk7
CisgICAgZWRnZVsxMF0gPSByaWdodC56KCk7CisgICAgZWRnZVsxMV0gPSByaWdodC53KCk7Cisg
ICAgZWRnZVsxMl0gPSBib3R0b20ueCgpOworICAgIGVkZ2VbMTNdID0gYm90dG9tLnkoKTsKKyAg
ICBlZGdlWzE0XSA9IGJvdHRvbS56KCk7CisgICAgZWRnZVsxNV0gPSBib3R0b20udygpOworICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtNGZ2KHByb2dyYW0tPmZyYWdtZW50U2hhZGVy
KCkuZWRnZUxvY2F0aW9uKCksIGVkZ2UsIDQpKTsKKwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0
LT5kcmF3RWxlbWVudHMoR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFUywgNiwgR3JhcGhpY3ND
b250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JULCAwKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9t
aXVtLmgKaW5kZXggNDhmNGY5ZjIwOGQzN2ZjZGI5YTJlY2JkNGVlMzk1MzA1NzU4OGIxZi4uNmZj
ZTkxYTIwNDAyYTQyYjczY2MxM2UwMzI4ZTNkYmRjODM1YzY1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxl
ckNocm9taXVtLmgKQEAgLTQ3LDYgKzQ3LDQ1IEBAIGNsYXNzIExheWVyVGlsZXJDaHJvbWl1bSB7
CiBwdWJsaWM6CiAgICAgZW51bSBCb3JkZXJUZXhlbE9wdGlvbiB7IEhhc0JvcmRlclRleGVscywg
Tm9Cb3JkZXJUZXhlbHMgfTsKIAorICAgIGNsYXNzIEVkZ2UgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgRWRnZSgpCisgICAgICAgICAgICA6IG1feCgwKQorICAgICAgICAgICAgLCBtX3koMCkKKyAg
ICAgICAgICAgICwgbV96KDApCisgICAgICAgICAgICAsIG1fdygwKQorICAgICAgICB7CisgICAg
ICAgIH0KKyAgICAgICAgRWRnZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYp
OworCisgICAgICAgIGZsb2F0IHgoKSBjb25zdCB7IHJldHVybiBtX3g7IH0KKyAgICAgICAgdm9p
ZCBzZXRYKGZsb2F0IHgpIHsgbV94ID0geDsgfQorCisgICAgICAgIGZsb2F0IHkoKSBjb25zdCB7
IHJldHVybiBtX3k7IH0KKyAgICAgICAgdm9pZCBzZXRZKGZsb2F0IHkpIHsgbV95ID0geTsgfQor
CisgICAgICAgIGZsb2F0IHooKSBjb25zdCB7IHJldHVybiBtX3o7IH0KKyAgICAgICAgdm9pZCBz
ZXRaKGZsb2F0IHopIHsgbV96ID0gejsgfQorCisgICAgICAgIGZsb2F0IHcoKSBjb25zdCB7IHJl
dHVybiBtX3c7IH0KKyAgICAgICAgdm9pZCBzZXRXKGZsb2F0IHcpIHsgbV93ID0gdzsgfQorCisg
ICAgICAgIHZvaWQgc2NhbGUoZmxvYXQgcykKKyAgICAgICAgeworICAgICAgICAgICAgbV94ICo9
IHM7CisgICAgICAgICAgICBtX3kgKj0gczsKKyAgICAgICAgICAgIG1feiAqPSBzOworICAgICAg
ICB9CisKKyAgICAgICAgc3RhdGljIEZsb2F0UG9pbnQgaW50ZXJzZWN0KGNvbnN0IExheWVyVGls
ZXJDaHJvbWl1bTo6RWRnZSYsIGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6RWRnZSYpOworCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgZmxvYXQgbV94OworICAgICAgICBmbG9hdCBtX3k7CisgICAg
ICAgIGZsb2F0IG1fejsKKyAgICAgICAgZmxvYXQgbV93OworICAgIH07CisKICAgICBzdGF0aWMg
UGFzc093blB0cjxMYXllclRpbGVyQ2hyb21pdW0+IGNyZWF0ZShMYXllclJlbmRlcmVyQ2hyb21p
dW0qLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQm9yZGVyVGV4ZWxPcHRpb24pOwogCiAgICAg
fkxheWVyVGlsZXJDaHJvbWl1bSgpOwpAQCAtNzUsMTAgKzExNCwxMCBAQCBwdWJsaWM6CiAgICAg
Ly8gcmVjeWNsZWQgYnkgdGhlIHRleHR1cmUgbWFuYWdlci4KICAgICB2b2lkIHByb3RlY3RUaWxl
VGV4dHVyZXMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOwogCi0gICAgdHlwZWRlZiBQcm9n
cmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJRdWFkLCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYT4g
UHJvZ3JhbTsKKyAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclF1YWQsIEZy
YWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUE+IFByb2dyYW07CiAgICAgLy8gU2hhZGVyIHByb2dy
YW0gdGhhdCBzd2FwcyByZWQgYW5kIGJsdWUgY29tcG9uZW50cyBvZiB0ZXh0dXJlLgogICAgIC8v
IFVzZWQgd2hlbiB0ZXh0dXJlIGZvcm1hdCBkb2VzIG5vdCBtYXRjaCBuYXRpdmUgY29sb3IgZm9y
bWF0LgotICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUXVhZCwgRnJhZ21l
bnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhhPiBQcm9ncmFtU3dpenpsZTsKKyAgICB0eXBlZGVm
IFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclF1YWQsIEZyYWdtZW50U2hhZGVyUkdCQVRleFN3
aXp6bGVBbHBoYUFBPiBQcm9ncmFtU3dpenpsZTsKIAogICAgIC8vIElmIHRoaXMgdGlsZXIgaGFz
IGV4YWN0bHkgb25lIHRpbGUsIHJldHVybiBpdHMgdGV4dHVyZS4gT3RoZXJ3aXNlLCBudWxsLgog
ICAgIExheWVyVGV4dHVyZSogZ2V0U2luZ2xlVGV4dHVyZSgpOwpAQCAtMTEzLDEwICsxNTIsMTIg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBUKiBw
cm9ncmFtKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHZvaWQgZHJhd1RleHR1cmVk
UXVhZChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEZsb2F0UXVhZCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgZHJhd01hdHJpeCwKKyAgICB2b2lkIGRyYXdUZXh0dXJlZFF1YWQoR3JhcGhpY3NDb250ZXh0
M0QqLCBjb25zdCBGbG9hdFF1YWQmLCBjb25zdCBFZGdlJiwgY29uc3QgRWRnZSYsIGNvbnN0IEVk
Z2UmLCBjb25zdCBFZGdlJiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHByb2plY3Rpb25N
YXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBvcGFjaXR5
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0ZXhUcmFuc2xhdGVYLCBmbG9hdCB0
ZXhUcmFuc2xhdGVZLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0ZXhTY2FsZVgs
IGZsb2F0IHRleFNjYWxlWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdnNUZXhU
cmFuc2xhdGVYLCBmbG9hdCB2c1RleFRyYW5zbGF0ZVksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0IHZzVGV4U2NhbGVYLCBmbG9hdCB2c1RleFNjYWxlWSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgZnNUZXhUcmFuc2xhdGVYLCBmbG9hdCBmc1RleFRyYW5zbGF0ZVks
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGZzVGV4U2NhbGVYLCBmbG9hdCBmc1Rl
eFNjYWxlWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCogcHJvZ3JhbSk7CiAK
ICAgICAvLyBHcm93IGxheWVyIHNpemUgdG8gY29udGFpbiB0aGlzIHJlY3RhbmdsZS4KQEAgLTEz
NSw3ICsxNzYsNiBAQCBwcml2YXRlOgogICAgIFRpbGUqIHRpbGVBdChpbnQsIGludCkgY29uc3Q7
CiAgICAgSW50UmVjdCB0aWxlQ29udGVudFJlY3QoY29uc3QgVGlsZSopIGNvbnN0OwogICAgIElu
dFJlY3QgdGlsZUxheWVyUmVjdChjb25zdCBUaWxlKikgY29uc3Q7Ci0gICAgSW50UmVjdCB0aWxl
VGV4UmVjdChjb25zdCBUaWxlKikgY29uc3Q7CiAKICAgICBHQzNEZW51bSBtX3RleHR1cmVGb3Jt
YXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1NoYWRlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcAppbmRleCA1MGRlODA0N2QxYjdiOWQxM2ZmNzE5
NjM4YzM2MjBlYjVmYTY5ZGFiLi43ZTEyNmI4NjZkMTBjMmMzMDE2NDVjNjMzNmFjMGU2YTcyYjIw
OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9TaGFkZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCkBAIC0xNTIsMTcgKzE1MiwxNyBAQCBTdHJp
bmcgVmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAog
CiBWZXJ0ZXhTaGFkZXJRdWFkOjpWZXJ0ZXhTaGFkZXJRdWFkKCkKICAgICA6IG1fbWF0cml4TG9j
YXRpb24oLTEpCi0gICAgLCBtX3RleFRyYW5zZm9ybUxvY2F0aW9uKC0xKQogICAgICwgbV9wb2lu
dExvY2F0aW9uKC0xKQorICAgICwgbV92c1RleFRyYW5zZm9ybUxvY2F0aW9uKC0xKQogewogfQog
CiB2b2lkIFZlcnRleFNoYWRlclF1YWQ6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IHVuc2lnbmVkIHByb2dyYW0pCiB7CiAgICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7Ci0gICAgbV90ZXhUcmFuc2Zvcm1M
b2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4VHJhbnNm
b3JtIik7CiAgICAgbV9wb2ludExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICJwb2ludCIpOwotICAgIEFTU0VSVChtX21hdHJpeExvY2F0aW9uICE9IC0xICYm
IG1fdGV4VHJhbnNmb3JtTG9jYXRpb24gIT0gLTEgJiYgbV9wb2ludExvY2F0aW9uICE9IC0xKTsK
KyAgICBtX3ZzVGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgInZzVGV4VHJhbnNmb3JtIik7CisgICAgQVNTRVJUKG1fbWF0cml4TG9jYXRp
b24gIT0gLTEgJiYgbV9wb2ludExvY2F0aW9uICE9IC0xICYmIG1fdnNUZXhUcmFuc2Zvcm1Mb2Nh
dGlvbiAhPSAtMSk7CiB9CiAKIFN0cmluZyBWZXJ0ZXhTaGFkZXJRdWFkOjpnZXRTaGFkZXJTdHJp
bmcoKSBjb25zdApAQCAtMTcxLDggKzE3MSw4IEBAIFN0cmluZyBWZXJ0ZXhTaGFkZXJRdWFkOjpn
ZXRTaGFkZXJTdHJpbmcoKSBjb25zdAogICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9u
OwogICAgICAgICBhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOwogICAgICAgICB1bmlmb3JtIG1h
dDQgbWF0cml4OwotICAgICAgICB1bmlmb3JtIHZlYzQgdGV4VHJhbnNmb3JtOwogICAgICAgICB1
bmlmb3JtIHZlYzIgcG9pbnRbNF07CisgICAgICAgIHVuaWZvcm0gdmVjNCB2c1RleFRyYW5zZm9y
bTsKICAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CiAgICAgICAgIHZvaWQgbWFpbigp
CiAgICAgICAgIHsKQEAgLTE4Myw3ICsxODMsNyBAQCBTdHJpbmcgVmVydGV4U2hhZGVyUXVhZDo6
Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKICAgICAgICAgICAgIHBvcy54eSArPSAoYV90ZXhDb29y
ZC54ICogYV90ZXhDb29yZC55KSAqIHBvaW50WzJdOwogICAgICAgICAgICAgcG9zLnh5ICs9IChj
b21wbGVtZW50LnggKiBhX3RleENvb3JkLnkpICogcG9pbnRbM107CiAgICAgICAgICAgICBnbF9Q
b3NpdGlvbiA9IG1hdHJpeCAqIHBvczsKLSAgICAgICAgICAgIHZfdGV4Q29vcmQgPSBwb3MueHkg
KiB0ZXhUcmFuc2Zvcm0uencgKyB0ZXhUcmFuc2Zvcm0ueHk7CisgICAgICAgICAgICB2X3RleENv
b3JkID0gcG9zLnh5ICogdnNUZXhUcmFuc2Zvcm0uencgKyB2c1RleFRyYW5zZm9ybS54eTsKICAg
ICAgICAgfQogICAgICk7CiB9CkBAIC0yNDcsNiArMjQ3LDcwIEBAIFN0cmluZyBGcmFnbWVudFNo
YWRlclJHQkFUZXhTd2l6emxlQWxwaGE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiAgICAgKTsK
IH0KIAorRnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZzo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGlu
ZygpCisgICAgOiBtX3NhbXBsZXJMb2NhdGlvbigtMSkKKyAgICAsIG1fYWxwaGFMb2NhdGlvbigt
MSkKKyAgICAsIG1fZnNUZXhUcmFuc2Zvcm1Mb2NhdGlvbigtMSkKKyAgICAsIG1fZWRnZUxvY2F0
aW9uKC0xKQoreworfQorCit2b2lkIEZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmc6OmluaXQoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit7CisgICAgbV9zYW1w
bGVyTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfdGV4
dHVyZSIpOworICAgIG1fYWxwaGFMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLCAiYWxwaGEiKTsKKyAgICBtX2ZzVGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250
ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImZzVGV4VHJhbnNmb3JtIik7CisgICAg
bV9lZGdlTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImVk
Z2UiKTsKKworICAgIEFTU0VSVChtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMSAmJiBtX2FscGhhTG9j
YXRpb24gIT0gLTEgJiYgbV9mc1RleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xICYmIG1fZWRnZUxv
Y2F0aW9uICE9IC0xKTsKK30KKworU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUE6
OmdldFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAg
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3Jk
OworICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7CisgICAgICAgIHVuaWZvcm0g
ZmxvYXQgYWxwaGE7CisgICAgICAgIHVuaWZvcm0gdmVjNCBmc1RleFRyYW5zZm9ybTsKKyAgICAg
ICAgdW5pZm9ybSB2ZWM0IGVkZ2VbNF07CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZlYzIgdGV4Q29vcmQgPSBjbGFtcCh2X3RleENvb3JkLCAwLjAsIDEuMCkg
KiBmc1RleFRyYW5zZm9ybS56dyArIGZzVGV4VHJhbnNmb3JtLnh5OworICAgICAgICAgICAgdmVj
NCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHRleENvb3JkKTsKKyAgICAgICAgICAg
IHZlYzQgcG9zID0gdmVjNChnbF9GcmFnQ29vcmQueHksIDEsIDEpOworICAgICAgICAgICAgZmxv
YXQgYTAgPSBjbGFtcChkb3QoZWRnZVswXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAg
ZmxvYXQgYTEgPSBjbGFtcChkb3QoZWRnZVsxXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAg
ICAgZmxvYXQgYTIgPSBjbGFtcChkb3QoZWRnZVsyXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAg
ICAgICAgZmxvYXQgYTMgPSBjbGFtcChkb3QoZWRnZVszXSwgcG9zKSwgMC4wLCAxLjApOworICAg
ICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4Q29sb3IgKiBhbHBoYSAqIG1pbihhMCwgYTIpICog
bWluKGExLCBhMyk7CisgICAgICAgIH0KKyAgICApOworfQorCitTdHJpbmcgRnJhZ21lbnRTaGFk
ZXJSR0JBVGV4U3dpenpsZUFscGhhQUE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFNIQURFUigKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAg
IHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOworICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX3Rl
eHR1cmU7CisgICAgICAgIHVuaWZvcm0gZmxvYXQgYWxwaGE7CisgICAgICAgIHVuaWZvcm0gdmVj
NCBmc1RleFRyYW5zZm9ybTsKKyAgICAgICAgdW5pZm9ybSB2ZWM0IGVkZ2VbNF07CisgICAgICAg
IHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZlYzIgdGV4Q29vcmQgPSBjbGFt
cCh2X3RleENvb3JkLCAwLjAsIDEuMCkgKiBmc1RleFRyYW5zZm9ybS56dyArIGZzVGV4VHJhbnNm
b3JtLnh5OworICAgICAgICAgICAgdmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUs
IHRleENvb3JkKTsKKyAgICAgICAgICAgIHZlYzQgcG9zID0gdmVjNChnbF9GcmFnQ29vcmQueHks
IDEsIDEpOworICAgICAgICAgICAgZmxvYXQgYTAgPSBjbGFtcChkb3QoZWRnZVswXSwgcG9zKSwg
MC4wLCAxLjApOworICAgICAgICAgICAgZmxvYXQgYTEgPSBjbGFtcChkb3QoZWRnZVsxXSwgcG9z
KSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxvYXQgYTIgPSBjbGFtcChkb3QoZWRnZVsyXSwg
cG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxvYXQgYTMgPSBjbGFtcChkb3QoZWRnZVsz
XSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhD
b2xvci56LCB0ZXhDb2xvci55LCB0ZXhDb2xvci54LCB0ZXhDb2xvci53KSAqIGFscGhhICogbWlu
KGEwLCBhMikgKiBtaW4oYTEsIGEzKTsKKyAgICAgICAgfQorICAgICk7Cit9CisKIEZyYWdtZW50
U2hhZGVyUkdCQVRleEFscGhhTWFzazo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrKCkK
ICAgICA6IG1fc2FtcGxlckxvY2F0aW9uKC0xKQogICAgICwgbV9tYXNrU2FtcGxlckxvY2F0aW9u
KC0xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2hhZGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NoYWRlckNocm9taXVtLmgKaW5kZXggY2ZjNjExYTY0OTViMTFlMWE5ZjQ1NWVhM2Y5
ZTFiZWZhZGU4OTUxOS4uYjEwYzYxNDBmZDQ0Nzg4MzIxMzFhYTgyZmRkYmVkNGQyNjIyM2M5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hh
ZGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9TaGFkZXJDaHJvbWl1bS5oCkBAIC0xMDQsMTMgKzEwNCwxMyBAQCBwdWJsaWM6CiAgICAg
U3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OwogCiAgICAgaW50IG1hdHJpeExvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhMb2NhdGlvbjsgfQotICAgIGludCB0ZXhUcmFuc2Zv
cm1Mb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4VHJhbnNmb3JtTG9jYXRpb247IH0KICAg
ICBpbnQgcG9pbnRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRMb2NhdGlvbjsgfQor
ICAgIGludCB2c1RleFRyYW5zZm9ybUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92c1RleFRy
YW5zZm9ybUxvY2F0aW9uOyB9CiAKIHByaXZhdGU6CiAgICAgaW50IG1fbWF0cml4TG9jYXRpb247
Ci0gICAgaW50IG1fdGV4VHJhbnNmb3JtTG9jYXRpb247CiAgICAgaW50IG1fcG9pbnRMb2NhdGlv
bjsKKyAgICBpbnQgbV92c1RleFRyYW5zZm9ybUxvY2F0aW9uOwogfTsKIAogY2xhc3MgRnJhZ21l
bnRUZXhBbHBoYUJpbmRpbmcgewpAQCAtMTQyLDYgKzE0MiwzNCBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OwogfTsKIAorY2xhc3MgRnJhZ21lbnRUZXhBbHBo
YUFBQmluZGluZyB7CitwdWJsaWM6CisgICAgRnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZygpOwor
CisgICAgdm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7Cisg
ICAgaW50IGFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FscGhhTG9jYXRpb247IH0K
KyAgICBpbnQgc2FtcGxlckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyTG9jYXRp
b247IH0KKyAgICBpbnQgZnNUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZnNUZXhUcmFuc2Zvcm1Mb2NhdGlvbjsgfQorICAgIGludCBlZGdlTG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2VkZ2VMb2NhdGlvbjsgfQorCitwcml2YXRlOgorICAgIGludCBtX3NhbXBsZXJM
b2NhdGlvbjsKKyAgICBpbnQgbV9hbHBoYUxvY2F0aW9uOworICAgIGludCBtX2ZzVGV4VHJhbnNm
b3JtTG9jYXRpb247CisgICAgaW50IG1fZWRnZUxvY2F0aW9uOworfTsKKworY2xhc3MgRnJhZ21l
bnRTaGFkZXJSR0JBVGV4QWxwaGFBQSA6IHB1YmxpYyBGcmFnbWVudFRleEFscGhhQUFCaW5kaW5n
IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7Cit9OworCisv
LyBTd2l6emxlcyB0aGUgcmVkIGFuZCBibHVlIGNvbXBvbmVudCBvZiBzYW1wbGVkIHRleGVsLgor
Y2xhc3MgRnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhhQUEgOiBwdWJsaWMgRnJhZ21l
bnRUZXhBbHBoYUFBQmluZGluZyB7CitwdWJsaWM6CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmlu
ZygpIGNvbnN0OworfTsKKwogY2xhc3MgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrIHsK
IHB1YmxpYzoKICAgICBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2soKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDNlOWU2ZGQwNDhmMjIxNWQyODk0OTE3NTkzNDFk
N2UzNzZiYzBkMjcuLjU2NzVjZWExM2E2ZWJkYWMxZDljYjNhYTRlMmZmY2M1NDlhMDRlYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiAvLyBTdGFydCB0aWxpbmcgd2hlbiB0aGUgd2lkdGgg
YW5kIGhlaWdodCBvZiBhIGxheWVyIGFyZSBsYXJnZXIgdGhhbiB0aGlzIHNpemUuCi1zdGF0aWMg
aW50IG1heFVudGlsZWRTaXplID0gNTEwOworc3RhdGljIGludCBtYXhVbnRpbGVkU2l6ZSA9IDUx
MjsKIAogLy8gV2hlbiB0aWxpbmcgaXMgZW5hYmxlZCwgdXNlIHRpbGVzIG9mIHRoaXMgZGltZW5z
aW9uIHNxdWFyZWQuCiBzdGF0aWMgaW50IGRlZmF1bHRUaWxlU2l6ZSA9IDI1NjsKQEAgLTUwLDcg
KzUwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogVGlsZWRMYXllckNocm9taXVtOjpUaWxlZExh
eWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKICAgICA6IExheWVyQ2hy
b21pdW0ob3duZXIpCiAgICAgLCBtX3RpbGluZ09wdGlvbihBdXRvVGlsZSkKLSAgICAsIG1fYm9y
ZGVyVGV4ZWxzKHRydWUpCiB7CiB9CiAKQEAgLTgwLDcgKzc5LDcgQEAgdm9pZCBUaWxlZExheWVy
Q2hyb21pdW06OnVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9uKCkKICAgICBpZiAoIW1fdGls
ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IEludFNpemUgdGlsZVNpemUoZGVmYXVs
dFRpbGVTaXplLCBkZWZhdWx0VGlsZVNpemUpOworICAgIGNvbnN0IEludFNpemUgdGlsZVNpemUo
bWluKGRlZmF1bHRUaWxlU2l6ZSwgY29udGVudEJvdW5kcygpLndpZHRoKCkpLCBtaW4oZGVmYXVs
dFRpbGVTaXplLCBjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpKTsKIAogICAgIC8vIFRpbGUgaWYg
Ym90aCBkaW1lbnNpb25zIGxhcmdlLCBvciBhbnkgb25lIGRpbWVuc2lvbiBsYXJnZSBhbmQgdGhl
IG90aGVyCiAgICAgLy8gZXh0ZW5kcyBpbnRvIGEgc2Vjb25kIHRpbGUuIFRoaXMgaGV1cmlzdGlj
IGFsbG93cyBmb3IgbG9uZyBza2lubnkgbGF5ZXJzCkBAIC05Nyw4ICs5Niw3IEBAIHZvaWQgVGls
ZWRMYXllckNocm9taXVtOjp1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpCiAgICAgZWxz
ZQogICAgICAgICBpc1RpbGVkID0gYXV0b1RpbGVkOwogCi0gICAgLy8gRW1wdHkgdGlsZSBzaXpl
IHRlbGxzIHRoZSB0aWxlciB0byBhdm9pZCB0aWxpbmcuCi0gICAgSW50U2l6ZSByZXF1ZXN0ZWRT
aXplID0gaXNUaWxlZCA/IHRpbGVTaXplIDogSW50U2l6ZSgpOworICAgIEludFNpemUgcmVxdWVz
dGVkU2l6ZSA9IGlzVGlsZWQgPyB0aWxlU2l6ZSA6IGNvbnRlbnRCb3VuZHMoKTsKICAgICBjb25z
dCBpbnQgbWF4U2l6ZSA9IGxheWVyUmVuZGVyZXIoKS0+bWF4VGV4dHVyZVNpemUoKTsKICAgICBJ
bnRTaXplIGNsYW1wZWRTaXplID0gcmVxdWVzdGVkU2l6ZS5zaHJ1bmtUbyhJbnRTaXplKG1heFNp
emUsIG1heFNpemUpKTsKICAgICBtX3RpbGVyLT5zZXRUaWxlU2l6ZShjbGFtcGVkU2l6ZSk7CkBA
IC0xMjgsNyArMTI2LDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZVRpbGVySWZO
ZWVkZWQoKQogICAgIG1fdGlsZXIgPSBMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZSgKICAgICAg
ICAgbGF5ZXJSZW5kZXJlcigpLAogICAgICAgICBJbnRTaXplKGRlZmF1bHRUaWxlU2l6ZSwgZGVm
YXVsdFRpbGVTaXplKSwKLSAgICAgICAgbV9ib3JkZXJUZXhlbHMgPyBMYXllclRpbGVyQ2hyb21p
dW06Okhhc0JvcmRlclRleGVscyA6IExheWVyVGlsZXJDaHJvbWl1bTo6Tm9Cb3JkZXJUZXhlbHMp
OworICAgICAgICBMYXllclRpbGVyQ2hyb21pdW06Okhhc0JvcmRlclRleGVscyk7CiB9CiAKIHZv
aWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkKQEAgLTE0
NCw3ICsxNDIsNiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGlsaW5nT3B0aW9uKFRp
bGluZ09wdGlvbiB0aWxpbmdPcHRpb24pCiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRJ
c01hc2soYm9vbCBpc01hc2spCiB7Ci0gICAgbV9ib3JkZXJUZXhlbHMgPSAhaXNNYXNrOwogICAg
IHNldFRpbGluZ09wdGlvbihpc01hc2sgPyBOZXZlclRpbGUgOiBBdXRvVGlsZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggNzg4YWRjN2YxMDhhYTZhMjVjYjNkNGNmOGNk
MTQ5MzBlNjQ2NDE1Ny4uMmY0MzY5YjY0MDM4Mzg1MTcwYzc3MTQzMmZkN2ExZWMyNzIyY2Y5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTczLDcgKzczLDYgQEAgcHJpdmF0ZToK
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0aWxpbmdUcmFuc2Zvcm0oKSBjb25zdDsKIAogICAg
IFRpbGluZ09wdGlvbiBtX3RpbGluZ09wdGlvbjsKLSAgICBib29sIG1fYm9yZGVyVGV4ZWxzOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L1RpbGluZ0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1Rp
bGluZ0RhdGEuY3BwCmluZGV4IDExM2JkZTBiMjEzOGY5MWQ3NzJkM2ZkNTFiOGMxM2I0MDZmOThh
MjkuLmZmNzA4YzczZDZjM2E4OGNkZGYwMmMwNzIzYmJhZGUzMWMzMDA0ZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5jcHAKQEAg
LTQ0LDEyICs0NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBpbnQgY29tcHV0
ZU51bVRpbGVzKGludCBtYXhUZXh0dXJlU2l6ZSwgaW50IHRvdGFsU2l6ZSwgaW50IGJvcmRlclRl
eGVscykKIHsKLSAgICBpbnQgdG90YWxTaXplV2l0aEJvcmRlciA9IHRvdGFsU2l6ZSArIDIgKiBi
b3JkZXJUZXhlbHM7Ci0KICAgICBpZiAobWF4VGV4dHVyZVNpemUgLSAyICogYm9yZGVyVGV4ZWxz
IDw9IDApCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gdG90YWxTaXplID4gMCAm
JiBtYXhUZXh0dXJlU2l6ZSA+PSB0b3RhbFNpemUgPyAxIDogMDsKIAotICAgIGludCBudW1UaWxl
cyA9IG1heCgxLCAxICsgKHRvdGFsU2l6ZVdpdGhCb3JkZXIgLSAxIC0gMiAqIGJvcmRlclRleGVs
cykgLyAobWF4VGV4dHVyZVNpemUgLSAyICogYm9yZGVyVGV4ZWxzKSk7CisgICAgaW50IG51bVRp
bGVzID0gbWF4KDEsIDEgKyAodG90YWxTaXplIC0gMSAtIDIgKiBib3JkZXJUZXhlbHMpIC8gKG1h
eFRleHR1cmVTaXplIC0gMiAqIGJvcmRlclRleGVscykpOwogICAgIHJldHVybiB0b3RhbFNpemUg
PiAwID8gbnVtVGlsZXMgOiAwOwogfQogCkBAIC04MSw3ICs3OSw3IEBAIGludCBUaWxpbmdEYXRh
Ojp0aWxlWEluZGV4RnJvbVNyY0Nvb3JkKGludCBzcmNQb3MpIGNvbnN0CiAgICAgICAgIHJldHVy
biAwOwogCiAgICAgQVNTRVJUKG1fbWF4VGV4dHVyZVNpemUgLSAyICogbV9ib3JkZXJUZXhlbHMp
OwotICAgIGludCB4ID0gc3JjUG9zIC8gKG1fbWF4VGV4dHVyZVNpemUgLSAyICogbV9ib3JkZXJU
ZXhlbHMpOworICAgIGludCB4ID0gKHNyY1BvcyAtIG1fYm9yZGVyVGV4ZWxzKSAvIChtX21heFRl
eHR1cmVTaXplIC0gMiAqIG1fYm9yZGVyVGV4ZWxzKTsKICAgICByZXR1cm4gbWluKG1heCh4LCAw
KSwgbnVtVGlsZXNYKCkgLSAxKTsKIH0KIApAQCAtOTEsNyArODksNyBAQCBpbnQgVGlsaW5nRGF0
YTo6dGlsZVlJbmRleEZyb21TcmNDb29yZChpbnQgc3JjUG9zKSBjb25zdAogICAgICAgICByZXR1
cm4gMDsKIAogICAgIEFTU0VSVChtX21heFRleHR1cmVTaXplIC0gMiAqIG1fYm9yZGVyVGV4ZWxz
KTsKLSAgICBpbnQgeSA9IHNyY1BvcyAvIChtX21heFRleHR1cmVTaXplIC0gMiAqIG1fYm9yZGVy
VGV4ZWxzKTsKKyAgICBpbnQgeSA9IChzcmNQb3MgLSBtX2JvcmRlclRleGVscykgLyAobV9tYXhU
ZXh0dXJlU2l6ZSAtIDIgKiBtX2JvcmRlclRleGVscyk7CiAgICAgcmV0dXJuIG1pbihtYXgoeSwg
MCksIG51bVRpbGVzWSgpIC0gMSk7CiB9CiAKQEAgLTEzNCwxNiArMTMyLDYgQEAgSW50UmVjdCBU
aWxpbmdEYXRhOjp0aWxlQm91bmRzV2l0aEJvcmRlcihpbnQgdGlsZSkgY29uc3QKICAgICByZXR1
cm4gYm91bmRzOwogfQogCi1JbnRSZWN0IFRpbGluZ0RhdGE6OnRpbGVCb3VuZHNXaXRoT3V0ZXJC
b3JkZXIoaW50IHRpbGUpIGNvbnN0Ci17Ci0gICAgSW50UmVjdCBib3VuZHMgPSB0aWxlQm91bmRz
KHRpbGUpOwotCi0gICAgaWYgKG1fYm9yZGVyVGV4ZWxzKQotICAgICAgICBib3VuZHMuaW5mbGF0
ZSgxKTsKLQotICAgIHJldHVybiBib3VuZHM7Ci19Ci0KIEZsb2F0UmVjdCBUaWxpbmdEYXRhOjp0
aWxlQm91bmRzTm9ybWFsaXplZChpbnQgdGlsZSkgY29uc3QKIHsKICAgICBhc3NlcnRUaWxlKHRp
bGUpOwpAQCAtMTgwLDYgKzE2OCw4IEBAIGludCBUaWxpbmdEYXRhOjp0aWxlU2l6ZVgoaW50IHhJ
bmRleCkgY29uc3QKIAogICAgIGlmICgheEluZGV4ICYmIG1fbnVtVGlsZXNYID09IDEpCiAgICAg
ICAgIHJldHVybiBtX3RvdGFsU2l6ZVg7CisgICAgaWYgKCF4SW5kZXggJiYgbV9udW1UaWxlc1gg
PiAxKQorICAgICAgICByZXR1cm4gbV9tYXhUZXh0dXJlU2l6ZSAtIG1fYm9yZGVyVGV4ZWxzOwog
ICAgIGlmICh4SW5kZXggPCBudW1UaWxlc1goKSAtIDEpCiAgICAgICAgIHJldHVybiBtX21heFRl
eHR1cmVTaXplIC0gMiAqIG1fYm9yZGVyVGV4ZWxzOwogICAgIGlmICh4SW5kZXggPT0gbnVtVGls
ZXNYKCkgLSAxKQpAQCAtMTk1LDYgKzE4NSw4IEBAIGludCBUaWxpbmdEYXRhOjp0aWxlU2l6ZVko
aW50IHlJbmRleCkgY29uc3QKIAogICAgIGlmICgheUluZGV4ICYmIG1fbnVtVGlsZXNZID09IDEp
CiAgICAgICAgIHJldHVybiBtX3RvdGFsU2l6ZVk7CisgICAgaWYgKCF5SW5kZXggJiYgbV9udW1U
aWxlc1kgPiAxKQorICAgICAgICByZXR1cm4gbV9tYXhUZXh0dXJlU2l6ZSAtIG1fYm9yZGVyVGV4
ZWxzOwogICAgIGlmICh5SW5kZXggPCBudW1UaWxlc1koKSAtIDEpCiAgICAgICAgIHJldHVybiBt
X21heFRleHR1cmVTaXplIC0gMiAqIG1fYm9yZGVyVGV4ZWxzOwogICAgIGlmICh5SW5kZXggPT0g
bnVtVGlsZXNZKCkgLSAxKQpAQCAtMjM4LDggKzIzMCw4IEBAIHZvaWQgVGlsaW5nRGF0YTo6aW50
ZXJzZWN0RHJhd1F1YWQoY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzCiAKICAgICAqbmV3U3JjID0gc3JjUmVjdEludGVyc2VjdGVkOwogICAgIG5ld1NyYy0+bW92
ZSgKLSAgICAgICAgLXRpbGVCb3VuZHMueCgpICsgbV9ib3JkZXJUZXhlbHMsCi0gICAgICAgIC10
aWxlQm91bmRzLnkoKSArIG1fYm9yZGVyVGV4ZWxzKTsKKyAgICAgICAgLXRpbGVCb3VuZHMueCgp
ICsgKCh0aWxlWEluZGV4KHRpbGUpID4gMCkgPyBtX2JvcmRlclRleGVscyA6IDApLAorICAgICAg
ICAtdGlsZUJvdW5kcy55KCkgKyAoKHRpbGVZSW5kZXgodGlsZSkgPiAwKSA/IG1fYm9yZGVyVGV4
ZWxzIDogMCkpOwogCiAgICAgKm5ld0RzdCA9IEZsb2F0UmVjdCgKICAgICAgICAgc3JjUmVjdElu
dGVyc2VjdGVkTm9ybVggKiBkc3RSZWN0LndpZHRoKCkgKyBkc3RSZWN0LngoKSwKQEAgLTI0OCw5
ICsyNDAsMTIgQEAgdm9pZCBUaWxpbmdEYXRhOjppbnRlcnNlY3REcmF3UXVhZChjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHMKICAgICAgICAgc3JjUmVjdEludGVy
c2VjdGVkTm9ybUggKiBkc3RSZWN0LmhlaWdodCgpKTsKIH0KIAotSW50UG9pbnQgVGlsaW5nRGF0
YTo6dGV4dHVyZU9mZnNldCgpIGNvbnN0CitJbnRQb2ludCBUaWxpbmdEYXRhOjp0ZXh0dXJlT2Zm
c2V0KGludCB4SW5kZXgsIGludCB5SW5kZXgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEludFBvaW50
KG1fYm9yZGVyVGV4ZWxzLCBtX2JvcmRlclRleGVscyk7CisgICAgaW50IGxlZnQgPSAoIXhJbmRl
eCB8fCBtX251bVRpbGVzWCA9PSAxKSA/IDAgOiBtX2JvcmRlclRleGVsczsKKyAgICBpbnQgdG9w
ID0gKCF5SW5kZXggfHwgbV9udW1UaWxlc1kgPT0gMSkgPyAwIDogbV9ib3JkZXJUZXhlbHM7CisK
KyAgICByZXR1cm4gSW50UG9pbnQobGVmdCwgdG9wKTsKIH0KIAogdm9pZCBUaWxpbmdEYXRhOjpy
ZWNvbXB1dGVOdW1UaWxlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvVGlsaW5nRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1RpbGluZ0RhdGEuaAppbmRleCA0M2IwOGUyMjg3NDNhOGRiZTNhOWNlMTU5OWUyMzQz
MDMyNTM1Y2FjLi4zZGFiYjVkZWMzMzA2ZTdlMjYzMTQwNWJkYzJjMzRlOTUyZDQyMDI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmgK
QEAgLTYxLDcgKzYxLDYgQEAgcHVibGljOgogCiAgICAgSW50UmVjdCB0aWxlQm91bmRzKGludCB0
aWxlKSBjb25zdDsKICAgICBJbnRSZWN0IHRpbGVCb3VuZHNXaXRoQm9yZGVyKGludCB0aWxlKSBj
b25zdDsKLSAgICBJbnRSZWN0IHRpbGVCb3VuZHNXaXRoT3V0ZXJCb3JkZXIoaW50IHRpbGUpIGNv
bnN0OwogICAgIEZsb2F0UmVjdCB0aWxlQm91bmRzTm9ybWFsaXplZChpbnQgdGlsZSkgY29uc3Q7
CiAgICAgaW50IHRpbGVQb3NpdGlvblgoaW50IHhJbmRleCkgY29uc3Q7CiAgICAgaW50IHRpbGVQ
b3NpdGlvblkoaW50IHlJbmRleCkgY29uc3Q7CkBAIC03NSw3ICs3NCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGludGVyc2VjdERyYXdRdWFkKGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBpbnQgdGlsZSwgRmxvYXRSZWN0KiBuZXdTcmMsIEZsb2F0UmVj
dCogbmV3RHN0KSBjb25zdDsKIAogICAgIC8vIERpZmZlcmVuY2UgYmV0d2VlbiB0aWxlQm91bmQn
cyBhbmQgdGlsZUJvdW5kV2l0aEJvcmRlcidzIGxvY2F0aW9uKCkuCi0gICAgSW50UG9pbnQgdGV4
dHVyZU9mZnNldCgpIGNvbnN0OworICAgIEludFBvaW50IHRleHR1cmVPZmZzZXQoaW50IHhJbmRl
eCwgaW50IHlJbmRleCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgVGlsaW5nRGF0YSgpIDogbV9t
YXhUZXh0dXJlU2l6ZSgwKSwgbV90b3RhbFNpemVYKDApLCBtX3RvdGFsU2l6ZVkoMCkge30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNWFjM2NiZDM0OGM3NWQyNTNlYjBiNWY5MmM0YWQ0
MGMwZDdkYjkxMy4uYTBkMTZkMzQ5YjU0ZjAxYTRjNGM1YTdkOGU4NWVkMzY2Njc3NDE0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNy0yMSAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
UmVtb3ZlIG91dGVyIGJvcmRlciBmcm9tIFRpbGluZ0RhdGEgYXMgaXQncyBubyBsb25nZXIgbmVl
ZGVkIGJ5IGxheWVyIGNvbXBvc2l0b3IgZm9yIGFudGktYWxpYXNpbmcuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDk0MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvVGlsaW5nRGF0YVRlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTEtMDctMjUgIENocmlzIFJvZ2Vy
cyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVcGRhdGUgQ2hyb21pdW0gRFJUIHRv
IG91dHB1dCBiaW5hcnkgKGluc3RlYWQgb2YgYmFzZTY0LWVuY29kZWQpIGRhdGEgZm9yIHdlYiBh
dWRpbyB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rp
bGluZ0RhdGFUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsaW5nRGF0
YVRlc3QuY3BwCmluZGV4IGRkZWYwYjk4MjIzMWYyODA3YTQ3ZGM5MDMyM2RiYTQ1NDZjMzg5Njgu
Ljc2MmVkYTkzOTkxNTBlYmU0Yzk3MTk0NmE3NGU1N2MzOWEzYjVkZDUgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsaW5nRGF0YVRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsaW5nRGF0YVRlc3QuY3BwCkBAIC00MSwxMCArNDEs
MTAgQEAgbmFtZXNwYWNlIHsKIFRFU1QoVGlsaW5nRGF0YVRlc3QsIG51bVRpbGVzX05vVGlsaW5n
KQogewogICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE2LCAxNiwgMTYsIGZhbHNlKS5udW1U
aWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgxNywgMTUsIDE1LCB0cnVlKS5u
dW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgxOCwgMTYsIDE2LCB0cnVl
KS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgxNiwgMTUsIDE1LCB0
cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgxNiwgMTYsIDE2
LCB0cnVlKS5udW1UaWxlcygpKTsKICAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgxNiwgIDEs
IDE2LCBmYWxzZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMTcs
IDE1LCAxNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEo
MTUsIDE1LCAxNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CiB9CiAKIFRFU1QoVGlsaW5nRGF0YVRlc3Qs
IG51bVRpbGVzX1RpbGluZ05vQm9yZGVycykKQEAgLTEwOSw0NSArMTA5LDQ1IEBAIFRFU1QoVGls
aW5nRGF0YVRlc3QsIG51bVRpbGVzX1RpbGluZ1dpdGhCb3JkZXJzKQogICAgIEVYUEVDVF9FUSgw
LCBUaWxpbmdEYXRhKC0xLCAxLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7CiAgICAgRVhQRUNUX0VR
KDAsIFRpbGluZ0RhdGEoMCwgIDEsICAxLCB0cnVlKS5udW1UaWxlcygpKTsKIAotICAgIEVYUEVD
VF9FUSgwLCBUaWxpbmdEYXRhKDEsICAxLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQ
RUNUX0VRKDEsIFRpbGluZ0RhdGEoMSwgIDEsICAxLCB0cnVlKS5udW1UaWxlcygpKTsKICAgICBF
WFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgxLCAgMSwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwogICAg
IEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDEsICAyLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0g
ICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgIDEsICAxLCB0cnVlKS5udW1UaWxlcygpKTsK
LSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgyLCAgMSwgIDIsIHRydWUpLm51bVRpbGVzKCkp
OwotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDIsICAyLCAgMSwgdHJ1ZSkubnVtVGlsZXMo
KSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgIDIsICAyLCB0cnVlKS5udW1UaWxl
cygpKTsKLQotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAxLCAgMSwgdHJ1ZSkubnVt
VGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgIDEsICAyLCB0cnVlKS5u
dW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAgMiwgIDEsIHRydWUp
Lm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsICAyLCAgMiwgdHJ1
ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDYsIFRpbGluZ0RhdGEoMywgIDIsICAzLCB0
cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoNiwgVGlsaW5nRGF0YSgzLCAgMywgIDIs
IHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg5LCBUaWxpbmdEYXRhKDMsICAzLCAg
MywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg0LCAg
MSwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDQs
ICAyLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEo
NCwgIDMsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0
YSg0LCAgNCwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdE
YXRhKDQsICA1LCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGlu
Z0RhdGEoNCwgIDYsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoNCwgVGls
aW5nRGF0YSg0LCAgNywgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg0LCBU
aWxpbmdEYXRhKDQsICA4LCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDUs
IFRpbGluZ0RhdGEoNCwgIDksICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEo
NSwgVGlsaW5nRGF0YSg0LCAxMCwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9F
USg2LCBUaWxpbmdEYXRhKDQsIDExLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0KLSAgICBFWFBF
Q1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgMSwgIDMsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVY
UEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICAyLCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAg
RVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwgIDMsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAg
ICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSg1LCAgNCwgIDMsIHRydWUpLm51bVRpbGVzKCkpOwot
ICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDUsICA1LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7
Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwgIDYsICAzLCB0cnVlKS5udW1UaWxlcygp
KTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgNywgIDMsIHRydWUpLm51bVRpbGVz
KCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA4LCAgMywgdHJ1ZSkubnVtVGls
ZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDksICAzLCB0cnVlKS5udW1U
aWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAxMCwgIDMsIHRydWUpLm51
bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsIDExLCAgMywgdHJ1ZSku
bnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMiwgIDEsICAxLCB0cnVl
KS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgyLCAgMSwgIDIsIHRy
dWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDIsICAyLCAgMSwg
dHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMiwgIDIsICAy
LCB0cnVlKS5udW1UaWxlcygpKTsKKworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAx
LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywg
IDIsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgz
LCAgMywgIDMsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRh
KDMsICA0LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0Rh
dGEoMywgIDUsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5n
RGF0YSgzLCAgNiwgIDMsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSg1LCBUaWxp
bmdEYXRhKDMsICA3LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7CisKKyAgICBFWFBFQ1RfRVEoMSwg
VGlsaW5nRGF0YSg0LCAgMSwgIDQsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgx
LCBUaWxpbmdEYXRhKDQsICAyLCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VR
KDEsIFRpbGluZ0RhdGEoNCwgIDMsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1Rf
RVEoMSwgVGlsaW5nRGF0YSg0LCAgNCwgIDQsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVD
VF9FUSgyLCBUaWxpbmdEYXRhKDQsICA1LCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQ
RUNUX0VRKDIsIFRpbGluZ0RhdGEoNCwgIDYsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBF
WFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg0LCAgNywgIDQsIHRydWUpLm51bVRpbGVzKCkpOworICAg
IEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDQsICA4LCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7Cisg
ICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNCwgIDksICA0LCB0cnVlKS5udW1UaWxlcygpKTsK
KyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg0LCAxMCwgIDQsIHRydWUpLm51bVRpbGVzKCkp
OworICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDQsIDExLCAgNCwgdHJ1ZSkubnVtVGlsZXMo
KSk7CisKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgMSwgIDUsIHRydWUpLm51bVRp
bGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICAyLCAgNSwgdHJ1ZSkubnVt
VGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwgIDMsICA1LCB0cnVlKS5u
dW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgNCwgIDUsIHRydWUp
Lm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICA1LCAgNSwgdHJ1
ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwgIDYsICA1LCB0
cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSg1LCAgNywgIDUs
IHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDUsICA4LCAg
NSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDks
ICA1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAx
MCwgIDUsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUs
IDExLCAgNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CiB9CiAKIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRp
bGVYSW5kZXhGcm9tU3JjQ29vcmQpCkBAIC0xNjYsMTcgKzE2NiwxNyBAQCBURVNUKFRpbGluZ0Rh
dGFUZXN0LCB0aWxlWEluZGV4RnJvbVNyY0Nvb3JkKQogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdE
YXRhKDMsIDEwLCAxMCwgZmFsc2UpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMTEpKTsKIAogICAg
IEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21T
cmNDb29yZCgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVl
KS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0
YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMikpOwotICAgIEVYUEVD
VF9FUSgzLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29y
ZCgzKSk7Ci0gICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxl
WEluZGV4RnJvbVNyY0Nvb3JkKDQpKTsKLSAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSgzLCAx
MCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoNSkpOwotICAgIEVYUEVDVF9FUSg2
LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCg2KSk7
Ci0gICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4
RnJvbVNyY0Nvb3JkKDcpKTsKLSAgICBFWFBFQ1RfRVEoOCwgVGlsaW5nRGF0YSgzLCAxMCwgMTAs
IHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoOCkpOwotICAgIEVYUEVDVF9FUSg5LCBUaWxp
bmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCg5KSk7Ci0gICAg
RVhQRUNUX0VRKDksIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNy
Y0Nvb3JkKDEwKSk7Ci0gICAgRVhQRUNUX0VRKDksIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVl
KS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDExKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0Rh
dGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKKyAgICBFWFBF
Q1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29v
cmQoMikpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGls
ZVhJbmRleEZyb21TcmNDb29yZCgzKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywg
MTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDQpKTsKKyAgICBFWFBFQ1RfRVEo
NCwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoNSkp
OworICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRl
eEZyb21TcmNDb29yZCg2KSk7CisgICAgRVhQRUNUX0VRKDYsIFRpbGluZ0RhdGEoMywgMTAsIDEw
LCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDcpKTsKKyAgICBFWFBFQ1RfRVEoNywgVGls
aW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoOCkpOworICAg
IEVYUEVDVF9FUSg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21T
cmNDb29yZCg5KSk7CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVl
KS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEwKSk7CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0Rh
dGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDExKSk7CiAKICAgICBF
WFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgxLCAxLCAxLCBmYWxzZSkudGlsZVhJbmRleEZyb21TcmND
b29yZCgwKSk7CiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgMiwgMiwgZmFsc2UpLnRp
bGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwpAQCAtMTk0LDEzICsxOTQsMTMgQEAgVEVTVChUaWxp
bmdEYXRhVGVzdCwgdGlsZVhJbmRleEZyb21TcmNDb29yZCkKICAgICBFWFBFQ1RfRVEoMCwgVGls
aW5nRGF0YSgyLCAyLCAyLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDApKTsKICAgICBF
WFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgyLCAyLCAyLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nv
b3JkKDEpKTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxl
WEluZGV4RnJvbVNyY0Nvb3JkKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAz
LCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKLSAgICBFWFBFQ1RfRVEoMiwg
VGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDIpKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNy
Y0Nvb3JkKDEpKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50
aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDIpKTsKIAotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRh
KDQsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwotICAgIEVYUEVDVF9F
USgwLCBUaWxpbmdEYXRhKDQsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMSkp
OwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDQsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhG
cm9tU3JjQ29vcmQoMikpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDQsIDQsIDMsIHRy
dWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMykpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdE
YXRhKDMsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkpOworICAgIEVYUEVD
VF9FUSgwLCBUaWxpbmdEYXRhKDMsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQo
MSkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsIDMsIHRydWUpLnRpbGVYSW5k
ZXhGcm9tU3JjQ29vcmQoMikpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsIDMs
IHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMykpOwogfQogVEVTVChUaWxpbmdEYXRhVGVz
dCwgdGlsZVlJbmRleEZyb21TcmNDb29yZCkKIHsKQEAgLTIxOCwxNyArMjE4LDE3IEBAIFRFU1Qo
VGlsaW5nRGF0YVRlc3QsIHRpbGVZSW5kZXhGcm9tU3JjQ29vcmQpCiAgICAgRVhQRUNUX0VRKDMs
IFRpbGluZ0RhdGEoMywgMTAsIDEwLCBmYWxzZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgxMSkp
OwogCiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUlu
ZGV4RnJvbVNyY0Nvb3JkKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMCwg
MTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkpOwotICAgIEVYUEVDVF9FUSgyLCBU
aWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgyKSk7Ci0g
ICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJv
bVNyY0Nvb3JkKDMpKTsKLSAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRy
dWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNCkpOwotICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdE
YXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg1KSk7Ci0gICAgRVhQ
RUNUX0VRKDYsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nv
b3JkKDYpKTsKLSAgICBFWFBFQ1RfRVEoNywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRp
bGVZSW5kZXhGcm9tU3JjQ29vcmQoNykpOwotICAgIEVYUEVDVF9FUSg4LCBUaWxpbmdEYXRhKDMs
IDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg4KSk7Ci0gICAgRVhQRUNUX0VR
KDksIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDkp
KTsKLSAgICBFWFBFQ1RfRVEoOSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5k
ZXhGcm9tU3JjQ29vcmQoMTApKTsKLSAgICBFWFBFQ1RfRVEoOSwgVGlsaW5nRGF0YSgzLCAxMCwg
MTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMTEpKTsKKyAgICBFWFBFQ1RfRVEoMCwg
VGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkpOwor
ICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZy
b21TcmNDb29yZCgyKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0
cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDMpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5n
RGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNCkpOworICAgIEVY
UEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmND
b29yZCg1KSk7CisgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50
aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDYpKTsKKyAgICBFWFBFQ1RfRVEoNiwgVGlsaW5nRGF0YSgz
LCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNykpOworICAgIEVYUEVDVF9F
USg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg4
KSk7CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUlu
ZGV4RnJvbVNyY0Nvb3JkKDkpKTsKKyAgICBFWFBFQ1RfRVEoNywgVGlsaW5nRGF0YSgzLCAxMCwg
MTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMTApKTsKKyAgICBFWFBFQ1RfRVEoNywg
VGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMTEpKTsK
IAogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDEsIDEsIDEsIGZhbHNlKS50aWxlWUluZGV4
RnJvbVNyY0Nvb3JkKDApKTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgyLCAyLCAyLCBm
YWxzZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgwKSk7CkBAIC0yNDYsNjEgKzI0Niw2MSBAQCBU
RVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlWUluZGV4RnJvbVNyY0Nvb3JkKQogICAgIEVYUEVDVF9F
USgwLCBUaWxpbmdEYXRhKDIsIDIsIDIsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMCkp
OwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDIsIDIsIDIsIHRydWUpLnRpbGVZSW5kZXhG
cm9tU3JjQ29vcmQoMSkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDMsIDMsIHRy
dWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdE
YXRhKDMsIDMsIDMsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkpOwotICAgIEVYUEVD
VF9FUSgyLCBUaWxpbmdEYXRhKDMsIDMsIDMsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQo
MikpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDMsIDMsIHRydWUpLnRpbGVZSW5k
ZXhGcm9tU3JjQ29vcmQoMSkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDMsIDMs
IHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMikpOwogCi0gICAgRVhQRUNUX0VRKDAsIFRp
bGluZ0RhdGEoNCwgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgwKSk7Ci0gICAg
RVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoNCwgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmND
b29yZCgxKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwgMywgNCwgdHJ1ZSkudGls
ZVlJbmRleEZyb21TcmNDb29yZCgyKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwg
MywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgzKSk7CisgICAgRVhQRUNUX0VRKDAs
IFRpbGluZ0RhdGEoMywgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgwKSk7Cisg
ICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21T
cmNDb29yZCgxKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMywgNCwgdHJ1ZSku
dGlsZVlJbmRleEZyb21TcmNDb29yZCgyKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEo
MywgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgzKSk7CiB9CiAKIFRFU1QoVGls
aW5nRGF0YVRlc3QsIHRpbGVTaXplWCkKIHsKICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1
LCAgNSwgIDUsIGZhbHNlKS50aWxlU2l6ZVgoMCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdE
YXRhKDUsICA1LCAgNSwgdHJ1ZSkudGlsZVNpemVYKDApKTsKKyAgICBFWFBFQ1RfRVEoNSwgVGls
aW5nRGF0YSg1LCAgNSwgIDUsIHRydWUpLnRpbGVTaXplWCgwKSk7CiAKICAgICBFWFBFQ1RfRVEo
NSwgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIGZhbHNlKS50aWxlU2l6ZVgoMCkpOwogICAgIEVYUEVD
VF9FUSgxLCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgZmFsc2UpLnRpbGVTaXplWCgxKSk7Ci0gICAg
RVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCB0cnVlKS50aWxlU2l6ZVgoMCkpOwot
ICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgdHJ1ZSkudGlsZVNpemVYKDEp
KTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIHRydWUpLnRpbGVTaXpl
WCgwKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCB0cnVlKS50aWxl
U2l6ZVgoMSkpOwogCiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCBmYWxz
ZSkudGlsZVNpemVYKDApKTsKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgOCwgIDgs
IGZhbHNlKS50aWxlU2l6ZVgoMSkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA4
LCAgOCwgdHJ1ZSkudGlsZVNpemVYKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1
LCAgOCwgIDgsIHRydWUpLnRpbGVTaXplWCgxKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0Rh
dGEoNSwgIDgsICA4LCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxp
bmdEYXRhKDUsICA4LCAgOCwgdHJ1ZSkudGlsZVNpemVYKDEpKTsKIAogICAgIEVYUEVDVF9FUSg1
LCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgZmFsc2UpLnRpbGVTaXplWCgwKSk7CiAgICAgRVhQRUNU
X0VRKDUsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCBmYWxzZSkudGlsZVNpemVYKDEpKTsKLSAgICBF
WFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIHRydWUpLnRpbGVTaXplWCgwKSk7Cisg
ICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCB0cnVlKS50aWxlU2l6ZVgoMCkp
OwogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgdHJ1ZSkudGlsZVNpemVY
KDEpKTsKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIHRydWUpLnRpbGVT
aXplWCgyKSk7CiAKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMSwgMTEsIHRydWUp
LnRpbGVTaXplWCgyKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgMTEsIDExLCB0
cnVlKS50aWxlU2l6ZVgoMikpOwogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEyLCAx
MiwgdHJ1ZSkudGlsZVNpemVYKDIpKTsKIH0KIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVTaXpl
WSkKIHsKICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAgNSwgIDUsIGZhbHNlKS50aWxl
U2l6ZVkoMCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA1LCAgNSwgdHJ1ZSku
dGlsZVNpemVZKDApKTsKKyAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAgNSwgIDUsIHRy
dWUpLnRpbGVTaXplWSgwKSk7CiAKICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAgNiwg
IDYsIGZhbHNlKS50aWxlU2l6ZVkoMCkpOwogICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUs
ICA2LCAgNiwgZmFsc2UpLnRpbGVTaXplWSgxKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0Rh
dGEoNSwgIDYsICA2LCB0cnVlKS50aWxlU2l6ZVkoMCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxp
bmdEYXRhKDUsICA2LCAgNiwgdHJ1ZSkudGlsZVNpemVZKDEpKTsKKyAgICBFWFBFQ1RfRVEoNCwg
VGlsaW5nRGF0YSg1LCAgNiwgIDYsIHRydWUpLnRpbGVTaXplWSgwKSk7CisgICAgRVhQRUNUX0VR
KDIsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCB0cnVlKS50aWxlU2l6ZVkoMSkpOwogCiAgICAgRVhQ
RUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCBmYWxzZSkudGlsZVNpemVZKDApKTsKICAg
ICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIGZhbHNlKS50aWxlU2l6ZVkoMSkp
OwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgdHJ1ZSkudGlsZVNpemVZ
KDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIHRydWUpLnRpbGVT
aXplWSgxKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCB0cnVlKS50
aWxlU2l6ZVkoMCkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgdHJ1
ZSkudGlsZVNpemVZKDEpKTsKIAogICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUsIDEwLCAx
MCwgZmFsc2UpLnRpbGVTaXplWSgwKSk7CiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwg
MTAsIDEwLCBmYWxzZSkudGlsZVNpemVZKDEpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0
YSg1LCAxMCwgMTAsIHRydWUpLnRpbGVTaXplWSgwKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGlu
Z0RhdGEoNSwgMTAsIDEwLCB0cnVlKS50aWxlU2l6ZVkoMCkpOwogICAgIEVYUEVDVF9FUSgzLCBU
aWxpbmdEYXRhKDUsIDEwLCAxMCwgdHJ1ZSkudGlsZVNpemVZKDEpKTsKICAgICBFWFBFQ1RfRVEo
MywgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIHRydWUpLnRpbGVTaXplWSgyKSk7CiAKLSAgICBFWFBF
Q1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMSwgMTEsIHRydWUpLnRpbGVTaXplWSgyKSk7CisgICAg
RVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgMTEsIDExLCB0cnVlKS50aWxlU2l6ZVkoMikpOwog
ICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEyLCAxMiwgdHJ1ZSkudGlsZVNpemVZKDIp
KTsKIH0KIApAQCAtMzE5LDEwICszMTksMTAgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgdGlsZVNp
emVYX2FuZF90aWxlUG9zaXRpb25YKQogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEs
ICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7CiAgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0Rh
dGEoMywgMSwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMCkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxp
bmdEYXRhKDMsIDEsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7Ci0gICAgRVhQRUNUX0VR
KDMsIFRpbGluZ0RhdGEoNSwgMywgICAxLCB0cnVlKS50aWxlU2l6ZVgoMCkpOwotICAgIEVYUEVD
VF9FUSgwLCBUaWxpbmdEYXRhKDUsIDMsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7Ci0g
ICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMywgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMCkp
OwotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDUsIDMsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0
aW9uWCgwKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMywgICAxLCB0cnVlKS50
aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDMsICAgMSwgdHJ1
ZSkudGlsZVBvc2l0aW9uWCgwKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMywg
MTAwLCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMs
IDMsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7CiAKICAgICAvLyBNdWx0aXBsZSB0aWxl
czoKICAgICAvLyBubyBib3JkZXIKQEAgLTM0MCwyMyArMzQwLDIzIEBAIFRFU1QoVGlsaW5nRGF0
YVRlc3QsIHRpbGVTaXplWF9hbmRfdGlsZVBvc2l0aW9uWCkKICAgICAvLyBNdWx0aXBsZSB0aWxl
czoKICAgICAvLyB3aXRoIGJvcmRlcgogICAgIC8vIHBvc2l0aW9ucyAwLCAyLCAzLCA0Ci0gICAg
RVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS5udW1UaWxlcygpKTsKLSAg
ICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAgIDEsIHRydWUpLnRpbGVTaXplWCgwKSk7
Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS50aWxlU2l6ZVgo
MSkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsICAgMSwgdHJ1ZSkudGlsZVNp
emVYKDIpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAgIDEsIHRydWUpLnRp
bGVTaXplWCgzKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVl
KS50aWxlUG9zaXRpb25YKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAg
IDEsIHRydWUpLnRpbGVQb3NpdGlvblgoMSkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRh
KDMsIDQsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgyKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRp
bGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS50aWxlUG9zaXRpb25YKDMpKTsKLSAgICBFWFBFQ1Rf
RVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAxMDAsIHRydWUpLnRpbGVTaXplWCgwKSk7Ci0gICAgRVhQ
RUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMSkpOwotICAg
IEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDIpKTsK
LSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAxMDAsIHRydWUpLnRpbGVTaXplWCgz
KSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgNCwgMTAwLCB0cnVlKS50aWxlUG9z
aXRpb25YKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAxMDAsIHRydWUp
LnRpbGVQb3NpdGlvblgoMSkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDQsIDEw
MCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgyKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEo
MywgNCwgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25YKDMpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGls
aW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgyLCBU
aWxpbmdEYXRhKDMsIDYsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDApKTsKKyAgICBFWFBFQ1RfRVEo
MSwgVGlsaW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLnRpbGVTaXplWCgxKSk7CisgICAgRVhQRUNU
X0VRKDEsIFRpbGluZ0RhdGEoMywgNiwgICAxLCB0cnVlKS50aWxlU2l6ZVgoMikpOworICAgIEVY
UEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDYsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDMpKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLnRpbGVQb3NpdGlvblgo
MCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDYsICAgMSwgdHJ1ZSkudGlsZVBv
c2l0aW9uWCgxKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgNiwgICAxLCB0cnVl
KS50aWxlUG9zaXRpb25YKDIpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCA2LCAg
IDEsIHRydWUpLnRpbGVQb3NpdGlvblgoMykpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRh
KDMsIDYsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDApKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5n
RGF0YSgzLCA2LCAxMDAsIHRydWUpLnRpbGVTaXplWCgxKSk7CisgICAgRVhQRUNUX0VRKDEsIFRp
bGluZ0RhdGEoMywgNiwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMikpOworICAgIEVYUEVDVF9FUSgy
LCBUaWxpbmdEYXRhKDMsIDYsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDMpKTsKKyAgICBFWFBFQ1Rf
RVEoMCwgVGlsaW5nRGF0YSgzLCA2LCAxMDAsIHRydWUpLnRpbGVQb3NpdGlvblgoMCkpOworICAg
IEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDYsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgx
KSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgNiwgMTAwLCB0cnVlKS50aWxlUG9z
aXRpb25YKDIpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCA2LCAxMDAsIHRydWUp
LnRpbGVQb3NpdGlvblgoMykpOwogfQogCiBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlU2l6ZVlf
YW5kX3RpbGVQb3NpdGlvblkpCkBAIC0zNzQsMTAgKzM3NCwxMCBAQCBURVNUKFRpbGluZ0RhdGFU
ZXN0LCB0aWxlU2l6ZVlfYW5kX3RpbGVQb3NpdGlvblkpCiAgICAgRVhQRUNUX0VRKDAsIFRpbGlu
Z0RhdGEoMywgICAxLCAxLCB0cnVlKS50aWxlUG9zaXRpb25ZKDApKTsKICAgICBFWFBFQ1RfRVEo
MSwgVGlsaW5nRGF0YSgzLCAxMDAsIDEsIHRydWUpLnRpbGVTaXplWSgwKSk7CiAgICAgRVhQRUNU
X0VRKDAsIFRpbGluZ0RhdGEoMywgMTAwLCAxLCB0cnVlKS50aWxlUG9zaXRpb25ZKDApKTsKLSAg
ICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgIDEsIDMsIHRydWUpLnRpbGVTaXplWSgwKSk7
Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoNSwgICAxLCAzLCB0cnVlKS50aWxlUG9zaXRp
b25ZKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMDAsIDMsIHRydWUpLnRp
bGVTaXplWSgwKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoNSwgMTAwLCAzLCB0cnVl
KS50aWxlUG9zaXRpb25ZKDApKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCAgIDEs
IDMsIHRydWUpLnRpbGVTaXplWSgwKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywg
ICAxLCAzLCB0cnVlKS50aWxlUG9zaXRpb25ZKDApKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5n
RGF0YSgzLCAxMDAsIDMsIHRydWUpLnRpbGVTaXplWSgwKSk7CisgICAgRVhQRUNUX0VRKDAsIFRp
bGluZ0RhdGEoMywgMTAwLCAzLCB0cnVlKS50aWxlUG9zaXRpb25ZKDApKTsKIAogICAgIC8vIE11
bHRpcGxlIHRpbGVzOgogICAgIC8vIG5vIGJvcmRlcgpAQCAtMzk1LDIzICszOTUsMjMgQEAgVEVT
VChUaWxpbmdEYXRhVGVzdCwgdGlsZVNpemVZX2FuZF90aWxlUG9zaXRpb25ZKQogICAgIC8vIE11
bHRpcGxlIHRpbGVzOgogICAgIC8vIHdpdGggYm9yZGVyCiAgICAgLy8gcG9zaXRpb25zIDAsIDIs
IDMsIDQKLSAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAgIDEsIDQsIHRydWUpLm51bVRp
bGVzKCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAgMSwgNCwgdHJ1ZSkudGls
ZVNpemVZKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgIDEsIDQsIHRydWUp
LnRpbGVTaXplWSgxKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgICAxLCA0LCB0
cnVlKS50aWxlU2l6ZVkoMikpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAgMSwg
NCwgdHJ1ZSkudGlsZVNpemVZKDMpKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAg
IDEsIDQsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdE
YXRhKDMsICAgMSwgNCwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgxKSk7Ci0gICAgRVhQRUNUX0VRKDIs
IFRpbGluZ0RhdGEoMywgICAxLCA0LCB0cnVlKS50aWxlUG9zaXRpb25ZKDIpKTsKLSAgICBFWFBF
Q1RfRVEoMywgVGlsaW5nRGF0YSgzLCAgIDEsIDQsIHRydWUpLnRpbGVQb3NpdGlvblkoMykpOwot
ICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwMCwgNCwgdHJ1ZSkudGlsZVNpemVZKDAp
KTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDQsIHRydWUpLnRpbGVTaXpl
WSgxKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMTAwLCA0LCB0cnVlKS50aWxl
U2l6ZVkoMikpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwMCwgNCwgdHJ1ZSku
dGlsZVNpemVZKDMpKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAxMDAsIDQsIHRy
dWUpLnRpbGVQb3NpdGlvblkoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEw
MCwgNCwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgxKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0Rh
dGEoMywgMTAwLCA0LCB0cnVlKS50aWxlUG9zaXRpb25ZKDIpKTsKLSAgICBFWFBFQ1RfRVEoMywg
VGlsaW5nRGF0YSgzLCAxMDAsIDQsIHRydWUpLnRpbGVQb3NpdGlvblkoMykpOworICAgIEVYUEVD
VF9FUSg0LCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQ
RUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgICAxLCA2LCB0cnVlKS50aWxlU2l6ZVkoMCkpOworICAg
IEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkudGlsZVNpemVZKDEpKTsK
KyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgIDEsIDYsIHRydWUpLnRpbGVTaXplWSgy
KSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgICAxLCA2LCB0cnVlKS50aWxlU2l6
ZVkoMykpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkudGls
ZVBvc2l0aW9uWSgwKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgICAxLCA2LCB0
cnVlKS50aWxlUG9zaXRpb25ZKDEpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCAg
IDEsIDYsIHRydWUpLnRpbGVQb3NpdGlvblkoMikpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdE
YXRhKDMsICAgMSwgNiwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgzKSk7CisgICAgRVhQRUNUX0VRKDIs
IFRpbGluZ0RhdGEoMywgMTAwLCA2LCB0cnVlKS50aWxlU2l6ZVkoMCkpOworICAgIEVYUEVDVF9F
USgxLCBUaWxpbmdEYXRhKDMsIDEwMCwgNiwgdHJ1ZSkudGlsZVNpemVZKDEpKTsKKyAgICBFWFBF
Q1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDYsIHRydWUpLnRpbGVTaXplWSgyKSk7CisgICAg
RVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMTAwLCA2LCB0cnVlKS50aWxlU2l6ZVkoMykpOwor
ICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEwMCwgNiwgdHJ1ZSkudGlsZVBvc2l0aW9u
WSgwKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMTAwLCA2LCB0cnVlKS50aWxl
UG9zaXRpb25ZKDEpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCAxMDAsIDYsIHRy
dWUpLnRpbGVQb3NpdGlvblkoMikpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsIDEw
MCwgNiwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgzKSk7CiB9CiAKIFRFU1QoVGlsaW5nRGF0YVRlc3Qs
IHNldFRvdGFsU2l6ZSkKQEAgLTQ2OCw3ICs0NjgsNyBAQCBURVNUKFRpbGluZ0RhdGFUZXN0LCBz
ZXRNYXhUZXh0dXJlU2l6ZU5vQm9yZGVycykKIAogVEVTVChUaWxpbmdEYXRhVGVzdCwgc2V0TWF4
VGV4dHVyZVNpemVCb3JkZXJzKQogewotICAgIFRpbGluZ0RhdGEgZGF0YSg4LCAxNiwgMzAsIHRy
dWUpOworICAgIFRpbGluZ0RhdGEgZGF0YSg4LCAxNiwgMzIsIHRydWUpOwogICAgIEVYUEVDVF9F
USgzLCBkYXRhLm51bVRpbGVzWCgpKTsKICAgICBFWFBFQ1RfRVEoNSwgZGF0YS5udW1UaWxlc1ko
KSk7CiAKQEAgLTQ4NCw3ICs0ODQsNyBAQCBURVNUKFRpbGluZ0RhdGFUZXN0LCBzZXRNYXhUZXh0
dXJlU2l6ZUJvcmRlcnMpCiAKICAgICBkYXRhLnNldE1heFRleHR1cmVTaXplKDUpOwogICAgIEVY
UEVDVF9FUSg1LCBkYXRhLm1heFRleHR1cmVTaXplKCkpOwotICAgIEVYUEVDVF9FUSg2LCBkYXRh
Lm51bVRpbGVzWCgpKTsKKyAgICBFWFBFQ1RfRVEoNSwgZGF0YS5udW1UaWxlc1goKSk7CiAgICAg
RVhQRUNUX0VRKDEwLCBkYXRhLm51bVRpbGVzWSgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102020</attachid>
            <date>2011-07-26 10:10:39 -0700</date>
            <delta_ts>2011-07-28 14:02:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64942-20110726131037.patch</filename>
            <type>text/plain</type>
            <size>70647</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE3NTgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmNmZiYTMzZWJjZThiMGJiMGQ3NWVl
OGEzYzAyNmYzMmNmMWVlZWZiLi43NWQzYzEyMjE5YmE5MDlkYjk5OTY2N2M2NmNmZTllYWM4N2Jh
MmRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMjEgIERhdmlkIFJldmVtYW4gIDxy
ZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFVzZSBlZGdlLWRpc3Rh
bmNlIG1ldGhvZCBmb3IgbGF5ZXIgYW50aS1hbGlhc2luZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGVkIHJlc3VsdHMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEt
MDctMjYgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIE5v
dCByZXZpZXdlZDogaW5zcGVjdG9yIHRlc3QgcmViYXNlbGluZXMuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggOTc3Yzll
MDhiOWEyNjgxYTNjNThmZWQ0ODc0NzU4MWIwMTY4NTc3YS4uN2I2MWM5ZTNjODQwYTcxZWE2MWMw
NWMxMmY5ZjUwZWVjNjlkZjJjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtMjc3MSw2ICsyNzcxLDI0IEBAIEJVR1dL
NTU5NjggR1BVIFdJTiBERUJVRyA6IGNvbXBvc2l0aW5nL3dlYmdsL3dlYmdsLW5vbnByZW11bHRp
cGxpZWQtYmxlbmQuaHRtbCA9CiAvLyAyIHBpeGVsIHN0cmV0Y2hpbmcgd2hlbiByZW5kZXJpbmcg
c29tZSB2aWRlb3Mgd2l0aCB0aGUgR1BVIChOb3cgaXQncyBmbGFreSkKIEJVR0NSNzQxMDIgR1BV
IExJTlVYIDogbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLmh0bWwgPSBJTUFHRSBQQVNT
CiAKK0JVR1dLNjQ5NDIgOiBjb21wb3NpdGluZy9jb2xvci1tYXRjaGluZy9pbWFnZS1jb2xvci1t
YXRjaGluZy5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21wb3NpdGluZy9nZW9tZXRyeS9h
bmNlc3Rvci1vdmVyZmxvdy1jaGFuZ2UuaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogY29tcG9z
aXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24uaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDog
Y29tcG9zaXRpbmcvZ2VvbWV0cnkvbGF5ZXItZHVlLXRvLWxheWVyLWNoaWxkcmVuLWRlZXAuaHRt
bCA9IElNQUdFCitCVUdXSzY0OTQyIDogY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGF5ZXItZHVlLXRv
LWxheWVyLWNoaWxkcmVuLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5nL2dl
b21ldHJ5L3ZlcnRpY2FsLXNjcm9sbC1jb21wb3NpdGVkLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0
MiA6IGNvbXBvc2l0aW5nL292ZXJmbG93L2ZpeGVkLXBvc2l0aW9uLWFuY2VzdG9yLWNsaXAuaHRt
bCA9IElNQUdFCitCVUdXSzY0OTQyIDogY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJl
ZmxlY3Rpb24tdHJhbnNpdGlvbi5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21wb3NpdGlu
Zy9yZWZsZWN0aW9ucy90cmFuc2Zvcm0taW5zaWRlLXJlZmxlY3Rpb24uaHRtbCA9IElNQUdFCitC
VUdXSzY0OTQyIDogY29tcG9zaXRpbmcvc2hhZG93cy9zaGFkb3ctZHJhd2luZy5odG1sID0gSU1B
R0UKK0JVR1dLNjQ5NDIgOiBjb21wb3NpdGluZy90cmFuc2l0aW9ucy9zY2FsZS10cmFuc2l0aW9u
LW5vLXN0YXJ0Lmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IG1lZGlhL3ZpZGVvLXRyYW5zZm9y
bWVkLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IG1lZGlhL3ZpZGVvLXpvb20tY29udHJvbHMu
aHRtbCAgPSBJTUFHRQorQlVHV0s2NDk0MiA6IHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5n
L2JhY2tmYWNlLXZpc2liaWxpdHktdHJhbnNmb3JtZWQuaHRtbCA9IElNQUdFCitCVUdXSzY0OTQy
IDogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvaHVnZS1sYXllci1yb3RhdGVkLmh0bWwg
PSBJTUFHRQorQlVHV0s2NDk0MiA6IHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3BlcnBl
bmRpY3VsYXItbGF5ZXItc29ydGluZy5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBwbGF0Zm9y
bS9jaHJvbWl1bS9jb21wb3NpdGluZy90aW55LWxheWVyLXJvdGF0ZWQuaHRtbCA9IElNQUdFCisK
IAogQlVHQ1I3MjIyMyA6IG1lZGlhL3ZpZGVvLWZyYW1lLWFjY3VyYXRlLXNlZWsuaHRtbCA9IElN
QUdFIFBBU1MKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQyMzE0Y2VhZDAyOWVhNTVhOGVjODMzYmMwNzM3YWM2
NmZiNmRlYWMuLmNhNzAxNDNlNTBiYWIzNmMyOWYzNGY0NjE2N2U0YTI0ODgwN2Y3YTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw4NSBAQAorMjAxMS0wNy0yMSAgRGF2aWQgUmV2ZW1hbiAgPHJldmVt
YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gVXNlIGVkZ2UtZGlzdGFuY2Ug
bWV0aG9kIGZvciBsYXllciBhbnRpLWFsaWFzaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ5NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYW4gZWRnZSBkaXN0YW5jZSBiYXNlZCBtZXRob2Qg
aW5zdGVhZCBvZiB0aGUgY3VycmVudCBsaW5lYXIKKyAgICAgICAgZmlsdGVyaW5nIG1ldGhvZCBm
b3IgcHJvZHVjaW5nIGFudGktYWxpYXNlZCBlZGdlcyBvbiAzRCB0cmFuc2Zvcm1lZAorICAgICAg
ICBsYXllcnMuIFRoaXMgcmVtb3ZlcyB0aGUgb3V0ZXIgYm9yZGVyIGhhbmRsaW5nIGZyb20gVGls
aW5nRGF0YSBhcworICAgICAgICBpdCdzIG5vIGxvbmdlciBuZWVkZWQgZm9yIGFudGktYWxpYXNp
bmcuCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3Rpbnkt
bGF5ZXItcm90YXRlZC5odG1sIChleGlzdGluZykKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2No
cm9taXVtL2NvbXBvc2l0aW5nL2h1Z2UtbGF5ZXItcm90YXRlZC5odG1sIChleGlzdGluZykKKyAg
ICAgICAgICAgICAgIGNvbXBvc2l0aW5nL2ltYWdlcy9jb250ZW50LWltYWdlLWNoYW5nZS5odG1s
IChleGlzdGluZykKKyAgICAgICAgICAgICAgIFRpbGluZ0RhdGFUZXN0IGluIHdlYmtpdF91bml0
X3Rlc3RzCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuTWF0cml4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldERyYXdWaWV3cG9ydFJlY3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp3aW5kb3dNYXRy
aXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OkVkZ2U6OkVk
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpFZGdlOjppbnRlcnNl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpzZXRUaWxlU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OnRpbGVMYXllclJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjppbnZhbGlkYXRlUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0ZVJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpncm93TGF5ZXJUb0NvbnRhaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGlsZXMpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6RWRnZTo6RWRnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OkVkZ2U6OngpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJUaWxlckNocm9taXVtOjpFZGdlOjpzZXRYKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
VGlsZXJDaHJvbWl1bTo6RWRnZTo6eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hy
b21pdW06OkVkZ2U6OnNldFkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVt
OjpFZGdlOjp6KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6RWRnZTo6
c2V0Wik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OkVkZ2U6OncpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpFZGdlOjpzZXRXKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6RWRnZTo6c2NhbGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6VmVydGV4U2hhZGVyUG9zVGV4
VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9y
bTo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm06
OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJRdWFkOjpW
ZXJ0ZXhTaGFkZXJRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclF1YWQ6Omlu
aXQpOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUXVhZDo6Z2V0U2hhZGVyU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYTo6Z2V0
U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFs
cGhhOjpnZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBo
YUFBQmluZGluZzo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFnbWVudFRleEFscGhhQUFCaW5kaW5nOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUE6OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGFBQTo6Z2V0U2hhZGVyU3Ry
aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1
bS5oOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUXVhZDo6bWF0cml4TG9jYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUXVhZDo6cG9pbnRMb2NhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJRdWFkOjp2c1RleFRyYW5zZm9ybUxvY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmc6OmFscGhhTG9j
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZzo6c2Ft
cGxlckxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4QWxwaGFBQUJpbmRp
bmc6OmZzVGV4VHJhbnNmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRU
ZXhBbHBoYUFBQmluZGluZzo6ZWRnZUxvY2F0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZWRMYXllckNocm9taXVtOjpUaWxlZExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZVRpbGVySWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpzZXRJc01hc2spOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbXB1dGVOdW1UaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxpbmdEYXRh
Ojp0aWxlWEluZGV4RnJvbVNyY0Nvb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6
OnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQpOgorICAgICAgICAoV2ViQ29yZTo6VGlsaW5nRGF0YTo6
dGlsZVNpemVYKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6OnRpbGVTaXplWSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxpbmdEYXRhOjppbnRlcnNlY3REcmF3UXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpUaWxpbmdEYXRhOjp0ZXh0dXJlT2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5oOgorCiAyMDExLTA3LTI2ICBTaGVyaWZmIEJvdCAg
PHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByOTE3NDYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRl
eCA1NDAyMDY4MmIzMjJjMTE2ZmY2NjNmZDhjOGE3ZDhjMTMzMzEwZDkxLi42ZDk4N2IwOWY2OTlh
ZmEwYTEyZTI4YTRmYzgyZjcxY2ZhMDdkY2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAKQEAgLTk2LDYgKzk2LDIxIEBAIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBvcnRob01hdHJpeChmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBmCiAg
ICAgcmV0dXJuIG9ydGhvOwogfQogCitzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggc2NyZWVu
TWF0cml4KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHNjcmVlbjsKKworICAgIC8vIE1hcCB0byB2aWV3cG9ydC4KKyAgICBz
Y3JlZW4udHJhbnNsYXRlM2QoeCwgeSwgMCk7CisgICAgc2NyZWVuLnNjYWxlM2Qod2lkdGgsIGhl
aWdodCwgMCk7CisKKyAgICAvLyBNYXAgeCwgeSBhbmQgeiB0byB1bml0IHNxdWFyZS4KKyAgICBz
Y3JlZW4udHJhbnNsYXRlM2QoMC41LCAwLjUsIDAuNSk7CisgICAgc2NyZWVuLnNjYWxlM2QoMC41
LCAwLjUsIDAuNSk7CisKKyAgICByZXR1cm4gc2NyZWVuOworfQorCiAvLyBSZXR1cm5zIHRydWUg
aWYgdGhlIG1hdHJpeCBoYXMgbm8gcm90YXRpb24sIHNrZXcgb3IgcGVyc3BlY3RpdmUgY29tcG9u
ZW50cyB0byBpdC4KIHN0YXRpYyBib29sIGlzU2NhbGVPclRyYW5zbGF0aW9uKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtKQogewpAQCAtNDgyLDYgKzQ5Nyw3IEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCkKIAogICAgIC8vIFRoZSBHTCB2aWV3cG9ydCBjb3ZlcnMgdGhlIGVudGlyZSB2aXNp
YmxlIGFyZWEsIGluY2x1ZGluZyB0aGUgc2Nyb2xsYmFycy4KICAgICBHTEMobV9jb250ZXh0Lmdl
dCgpLCBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIG1fdmlld3BvcnRWaXNpYmxlUmVjdC53aWR0
aCgpLCBtX3ZpZXdwb3J0VmlzaWJsZVJlY3QuaGVpZ2h0KCkpKTsKKyAgICBtX3dpbmRvd01hdHJp
eCA9IHNjcmVlbk1hdHJpeCgwLCAwLCBtX3ZpZXdwb3J0VmlzaWJsZVJlY3Qud2lkdGgoKSwgbV92
aWV3cG9ydFZpc2libGVSZWN0LmhlaWdodCgpKTsKIAogICAgIC8vIEJpbmQgdGhlIGNvbW1vbiB2
ZXJ0ZXggYXR0cmlidXRlcyB1c2VkIGZvciBkcmF3aW5nIGFsbCB0aGUgbGF5ZXJzLgogICAgIG1f
c2hhcmVkR2VvbWV0cnktPnByZXBhcmVGb3JEcmF3KCk7CkBAIC0xMTIwLDYgKzExMzYsNyBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0RHJhd1ZpZXdwb3J0UmVjdChjb25zdCBJbnRS
ZWN0JiBkcmF3UmVjdCwgYm9vbCBmbAogICAgIGVsc2UKICAgICAgICAgbV9wcm9qZWN0aW9uTWF0
cml4ID0gb3J0aG9NYXRyaXgoZHJhd1JlY3QueCgpLCBkcmF3UmVjdC5tYXhYKCksIGRyYXdSZWN0
LnkoKSwgZHJhd1JlY3QubWF4WSgpKTsKICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRl
eHQtPnZpZXdwb3J0KDAsIDAsIGRyYXdSZWN0LndpZHRoKCksIGRyYXdSZWN0LmhlaWdodCgpKSk7
CisgICAgbV93aW5kb3dNYXRyaXggPSBzY3JlZW5NYXRyaXgoMCwgMCwgZHJhd1JlY3Qud2lkdGgo
KSwgZHJhd1JlY3QuaGVpZ2h0KCkpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgKaW5kZXggY2IxNDQ3NDk0N2Q0M2U3OGY1M2QyZGU5MjdiNWU1MWQyZmUzNmUwYi4uNDRh
N2MwYjcwMGE1MTE3YWE3OGY0OTc0YzYyN2JiN2M5ZTJjMzYzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmgKQEAgLTEyMiw2ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgZGVidWdHTENhbGwoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBjaGFyKiBjb21tYW5k
LCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7CiAKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlvbk1h
dHJpeDsgfQorICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB3aW5kb3dNYXRyaXgoKSBj
b25zdCB7IHJldHVybiBtX3dpbmRvd01hdHJpeDsgfQogCiAgICAgYm9vbCBjaGVja1RleHR1cmVT
aXplKGNvbnN0IEludFNpemUmKTsKICAgICBpbnQgbWF4VGV4dHVyZVNpemUoKSBjb25zdCB7IHJl
dHVybiBtX21heFRleHR1cmVTaXplOyB9CkBAIC0yMTEsNiArMjEyLDcgQEAgcHJpdmF0ZToKICAg
ICBJbnRQb2ludCBtX3ZpZXdwb3J0U2Nyb2xsUG9zaXRpb247CiAKICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBtX3Byb2plY3Rpb25NYXRyaXg7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV93
aW5kb3dNYXRyaXg7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290TGF5ZXI7CiAg
ICAgT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IG1fcm9vdExheWVyVGV4dHVyZVVwZGF0ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRpbGVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAppbmRleCBhMGJkMTA4YTgyNTRlYzllMzZh
ODNkMzU5YjVhNWE4NWM2NzdjN2RiLi5mZGZjOGU4NWFlNzJhMTZiOTRlOGJjZDcyZGNkNGQ0MDFl
OTkyZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKQEAgLTQ0LDcgKzQ0LDI2
IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRl
ZiBGbG9hdFBvaW50M0QgRWRnZTsKK0xheWVyVGlsZXJDaHJvbWl1bTo6RWRnZTo6RWRnZShjb25z
dCBGbG9hdFBvaW50JiBwLCBjb25zdCBGbG9hdFBvaW50JiBxKQoreworICAgIEFTU0VSVChwICE9
IHEpOworCisgICAgRmxvYXRQb2ludCB0YW5nZW50KHAueSgpIC0gcS55KCksIHEueCgpIC0gcC54
KCkpOworICAgIGZsb2F0IHNjYWxlID0gMS4wIC8gdGFuZ2VudC5sZW5ndGgoKTsKKyAgICBmbG9h
dCBjcm9zczIgPSBwLngoKSAqIHEueSgpIC0gcS54KCkgKiBwLnkoKTsKKworICAgIG1feCA9IHRh
bmdlbnQueCgpICogc2NhbGU7CisgICAgbV95ID0gdGFuZ2VudC55KCkgKiBzY2FsZTsKKyAgICBt
X3ogPSBjcm9zczIgKiBzY2FsZTsKKyAgICBtX3cgPSAxOworfQorCitGbG9hdFBvaW50IExheWVy
VGlsZXJDaHJvbWl1bTo6RWRnZTo6aW50ZXJzZWN0KGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6
RWRnZSYgYSwgY29uc3QgTGF5ZXJUaWxlckNocm9taXVtOjpFZGdlJiBiKQoreworICAgIHJldHVy
biBGbG9hdFBvaW50KAorICAgICAgICAoYS5tX3kgKiBiLm1feiAtIGIubV95ICogYS5tX3opIC8g
KGEubV94ICogYi5tX3kgLSBiLm1feCAqIGEubV95KSwKKyAgICAgICAgKGEubV94ICogYi5tX3og
LSBiLm1feCAqIGEubV96KSAvIChiLm1feCAqIGEubV95IC0gYS5tX3ggKiBiLm1feSkpOworfQog
CiBQYXNzT3duUHRyPExheWVyVGlsZXJDaHJvbWl1bT4gTGF5ZXJUaWxlckNocm9taXVtOjpjcmVh
dGUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiB0
aWxlU2l6ZSwgQm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyKQogewpAQCAtODQsNiArMTAzLDcgQEAg
dm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnNldFRpbGVTaXplKGNvbnN0IEludFNpemUmIHNpemUp
CiAgICAgcmVzZXQoKTsKIAogICAgIG1fdGlsZVNpemUgPSBzaXplOworICAgIG1fdGlsaW5nRGF0
YS5zZXRNYXhUZXh0dXJlU2l6ZShtYXgoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CiB9
CiAKIExheWVyVGV4dHVyZSogTGF5ZXJUaWxlckNocm9taXVtOjpnZXRTaW5nbGVUZXh0dXJlKCkK
QEAgLTE4OSwxMyArMjA5LDkgQEAgSW50UmVjdCBMYXllclRpbGVyQ2hyb21pdW06OnRpbGVDb250
ZW50UmVjdChjb25zdCBUaWxlKiB0aWxlKSBjb25zdAogSW50UmVjdCBMYXllclRpbGVyQ2hyb21p
dW06OnRpbGVMYXllclJlY3QoY29uc3QgVGlsZSogdGlsZSkgY29uc3QKIHsKICAgICBjb25zdCBp
bnQgaW5kZXggPSBtX3RpbGluZ0RhdGEudGlsZUluZGV4KHRpbGUtPmkoKSwgdGlsZS0+aigpKTsK
LSAgICByZXR1cm4gbV90aWxpbmdEYXRhLnRpbGVCb3VuZHNXaXRoQm9yZGVyKGluZGV4KTsKLX0K
LQotSW50UmVjdCBMYXllclRpbGVyQ2hyb21pdW06OnRpbGVUZXhSZWN0KGNvbnN0IFRpbGUqIHRp
bGUpIGNvbnN0Ci17Ci0gICAgY29uc3QgaW50IGluZGV4ID0gbV90aWxpbmdEYXRhLnRpbGVJbmRl
eCh0aWxlLT5pKCksIHRpbGUtPmooKSk7Ci0gICAgcmV0dXJuIG1fdGlsaW5nRGF0YS50aWxlQm91
bmRzV2l0aE91dGVyQm9yZGVyKGluZGV4KTsKKyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IG1fdGls
aW5nRGF0YS50aWxlQm91bmRzV2l0aEJvcmRlcihpbmRleCk7CisgICAgbGF5ZXJSZWN0LnNldFNp
emUobV90aWxlU2l6ZSk7CisgICAgcmV0dXJuIGxheWVyUmVjdDsKIH0KIAogdm9pZCBMYXllclRp
bGVyQ2hyb21pdW06OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQpA
QCAtMjAzLDkgKzIxOSw2IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjppbnZhbGlkYXRlUmVj
dChjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKICAgICBpZiAoY29udGVudFJlY3QuaXNFbXB0
eSgpIHx8IG1fc2tpcHNEcmF3KQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRTaXplIG9sZExh
eWVyU2l6ZShtX3RpbGluZ0RhdGEudG90YWxTaXplWCgpLCBtX3RpbGluZ0RhdGEudG90YWxTaXpl
WSgpKTsKLSAgICBjb25zdCBJbnRSZWN0IG9sZExheWVyUmVjdCA9IEludFJlY3QoSW50UG9pbnQo
KSwgb2xkTGF5ZXJTaXplKTsKLQogICAgIGdyb3dMYXllclRvQ29udGFpbihjb250ZW50UmVjdCk7
CiAKICAgICAvLyBEaXJ0eSByZWN0cyBhcmUgYWx3YXlzIGluIGxheWVyIHNwYWNlLCBhcyB0aGUg
bGF5ZXIgY291bGQgYmUgcmVwb3NpdGlvbmVkCkBAIC0yMjIsMTIgKzIzNSw2IEBAIHZvaWQgTGF5
ZXJUaWxlckNocm9taXVtOjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCkKICAgICAgICAgICAgIEludFJlY3QgYm91bmQgPSB0aWxlTGF5ZXJSZWN0KHRpbGUpOwogICAg
ICAgICAgICAgYm91bmQuaW50ZXJzZWN0KGxheWVyUmVjdCk7CiAgICAgICAgICAgICB0aWxlLT5t
X2RpcnR5TGF5ZXJSZWN0LnVuaXRlKGJvdW5kKTsKLQotICAgICAgICAgICAgLy8gSW52YWxpZGF0
ZSBvbGQgbGF5ZXIgYXJlYSB0byBjbGVhciBhbnkgY29udGVudHMgbGVmdCBmcm9tCi0gICAgICAg
ICAgICAvLyBwcmV2aW91cyBsYXllciBzaXplLgotICAgICAgICAgICAgSW50UmVjdCBvbGRCb3Vu
ZCA9IHRpbGVMYXllclJlY3QodGlsZSk7Ci0gICAgICAgICAgICBvbGRCb3VuZC5pbnRlcnNlY3Qo
b2xkTGF5ZXJSZWN0KTsKLSAgICAgICAgICAgIHRpbGUtPm1fZGlydHlMYXllclJlY3QudW5pdGUo
b2xkQm91bmQpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjg0LDcgKzI5MSw2IEBAIHZvaWQg
TGF5ZXJUaWxlckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIExheWVyVGV4dHVyCiAgICAgLy8gQ3JlYXRlIHRpbGVzIGFzIG5lZWRlZCwgZXhwYW5k
aW5nIGEgZGlydHkgcmVjdCB0byBjb250YWluIGFsbAogICAgIC8vIHRoZSBkaXJ0eSByZWdpb25z
IGN1cnJlbnRseSBiZWluZyBkcmF3bi4KICAgICBJbnRSZWN0IGRpcnR5TGF5ZXJSZWN0OwotICAg
IEludFNpemUgdGlsZVNpemU7CiAgICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKICAg
ICBjb250ZW50UmVjdFRvVGlsZUluZGljZXMoY29udGVudFJlY3QsIGxlZnQsIHRvcCwgcmlnaHQs
IGJvdHRvbSk7CiAgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsraikgewpAQCAt
MjkzLDE5ICsyOTksMTYgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0
ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgTGF5ZXJUZXh0dXIKICAgICAgICAgICAgIGlm
ICghdGlsZSkKICAgICAgICAgICAgICAgICB0aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKIAotICAg
ICAgICAgICAgSW50U2l6ZSB0ZXhTaXplID0gdGlsZVRleFJlY3QodGlsZSkuc2l6ZSgpOwotICAg
ICAgICAgICAgaWYgKCF0aWxlLT50ZXh0dXJlKCktPmlzVmFsaWQodGV4U2l6ZSwgbV90ZXh0dXJl
Rm9ybWF0KSkKKyAgICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGls
ZVNpemUsIG1fdGV4dHVyZUZvcm1hdCkpCiAgICAgICAgICAgICAgICAgdGlsZS0+bV9kaXJ0eUxh
eWVyUmVjdCA9IHRpbGVMYXllclJlY3QodGlsZSk7CiAKLSAgICAgICAgICAgIGlmICghdGlsZS0+
dGV4dHVyZSgpLT5yZXNlcnZlKHRleFNpemUsIG1fdGV4dHVyZUZvcm1hdCkpIHsKKyAgICAgICAg
ICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5yZXNlcnZlKG1fdGlsZVNpemUsIG1fdGV4dHVyZUZv
cm1hdCkpIHsKICAgICAgICAgICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgcmVzZXQoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGRpcnR5TGF5ZXJSZWN0LnVuaXRlKHRpbGUtPm1fZGlydHlMYXllclJlY3Qp
OwotCi0gICAgICAgICAgICB0aWxlU2l6ZSA9IHRpbGVTaXplLmV4cGFuZGVkVG8odGV4U2l6ZSk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMxOCw3ICszMjEsNyBAQCB2b2lkIExheWVyVGlsZXJD
aHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBMYXll
clRleHR1cgogICAgIGlmIChkaXJ0eUxheWVyUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHRleHR1cmVVcGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIHRp
bGVTaXplLCBtX3RpbGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkpOworICAgIHRleHR1cmVVcGRhdGVy
LT5wcmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZVNpemUsIG1fdGlsaW5nRGF0YS5i
b3JkZXJUZXhlbHMoKSk7CiB9CiAKIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjp1cGRhdGVSZWN0
KExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKQpAQCAtMzQzLDggKzM0Niw3IEBA
IHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjp1cGRhdGVSZWN0KExheWVyVGV4dHVyZVVwZGF0ZXIq
IHRleHR1cmVVcGRhdGVyKQogCiAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgcGFnZS1zcGFjZSBy
ZWN0YW5nbGUgdG8gY29weSBmcm9tLgogICAgICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0g
dGlsZUNvbnRlbnRSZWN0KHRpbGUpOwotICAgICAgICAgICAgSW50UmVjdCB0ZXhSZWN0ID0gdGls
ZVRleFJlY3QodGlsZSk7Ci0gICAgICAgICAgICBjb25zdCBJbnRQb2ludCBhbmNob3IgPSB0ZXhS
ZWN0LmxvY2F0aW9uKCk7CisgICAgICAgICAgICBjb25zdCBJbnRQb2ludCBhbmNob3IgPSBzb3Vy
Y2VSZWN0LmxvY2F0aW9uKCk7CiAgICAgICAgICAgICBzb3VyY2VSZWN0LmludGVyc2VjdChsYXll
clJlY3RUb0NvbnRlbnRSZWN0KHRpbGUtPm1fZGlydHlMYXllclJlY3QpKTsKICAgICAgICAgICAg
IC8vIFBhaW50IHJlY3Qgbm90IGd1YXJhbnRlZWQgdG8gbGluZSB1cCBvbiB0aWxlIGJvdW5kYXJp
ZXMsIHNvCiAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCBzb3VyY2VSZWN0IGRvZXNuJ3Qg
ZXh0ZW5kIG91dHNpZGUgb2YgaXQuCkBAIC00MTEsMTcgKzQxMyw3IEBAIHZvaWQgTGF5ZXJUaWxl
ckNocm9taXVtOjpncm93TGF5ZXJUb0NvbnRhaW4oY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qp
CiAgICAgLy8gR3JvdyB0aGUgdGlsZSBhcnJheSB0byBjb250YWluIHRoaXMgY29udGVudCByZWN0
LgogICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY29udGVudFJlY3RUb0xheWVyUmVjdChjb250ZW50
UmVjdCk7CiAgICAgSW50U2l6ZSByZWN0U2l6ZSA9IEludFNpemUobGF5ZXJSZWN0Lm1heFgoKSwg
bGF5ZXJSZWN0Lm1heFkoKSk7Ci0gICAgSW50U2l6ZSB0ZXhTaXplID0gbV90aWxlU2l6ZTsKLQot
ICAgIC8vIFVzZSByZWN0IHdpdGggYm9yZGVyIHRleGVscyBhcyBtYXggdGV4dHVyZSBzaXplIHdo
ZW4gdGlsZSBzaXplCi0gICAgLy8gaGFzIG5vdCBiZWVuIHNwZWNpZmllZC4KLSAgICBpZiAodGV4
U2l6ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGV4U2l6ZSA9IHJlY3RTaXplOwotICAgICAgICBp
ZiAobV90aWxpbmdEYXRhLmJvcmRlclRleGVscygpKQotICAgICAgICAgICAgdGV4U2l6ZS5leHBh
bmQoMiwgMik7Ci0gICAgfQogCi0gICAgbV90aWxpbmdEYXRhLnNldE1heFRleHR1cmVTaXplKG1h
eCh0ZXhTaXplLndpZHRoKCksIHRleFNpemUuaGVpZ2h0KCkpKTsKICAgICBJbnRTaXplIG9sZExh
eWVyU2l6ZShtX3RpbGluZ0RhdGEudG90YWxTaXplWCgpLCBtX3RpbGluZ0RhdGEudG90YWxTaXpl
WSgpKTsKICAgICBJbnRTaXplIG5ld1NpemUgPSByZWN0U2l6ZS5leHBhbmRlZFRvKG9sZExheWVy
U2l6ZSk7CiAgICAgbV90aWxpbmdEYXRhLnNldFRvdGFsU2l6ZShuZXdTaXplLndpZHRoKCksIG5l
d1NpemUuaGVpZ2h0KCkpOwpAQCAtNDM2LDM1ICs0MjgsMTAgQEAgc3RhdGljIGJvb2wgaXNDQ1co
Y29uc3QgRmxvYXRRdWFkJiBxdWFkKQogICAgIHJldHVybiAodjEueCgpICogdjIueSgpIC0gdjEu
eSgpICogdjIueCgpKSA8IDA7CiB9CiAKLXN0YXRpYyBFZGdlIGNvbXB1dGVFZGdlKGNvbnN0IEZs
b2F0UG9pbnQmIHAsIGNvbnN0IEZsb2F0UG9pbnQmIHEsIGZsb2F0IHNpZ24pCi17Ci0gICAgQVNT
RVJUKHAgIT0gcSk7Ci0KLSAgICBGbG9hdFBvaW50IHRhbmdlbnQocC55KCkgLSBxLnkoKSwgcS54
KCkgLSBwLngoKSk7Ci0gICAgZmxvYXQgc2NhbGUgPSBzaWduIC8gdGFuZ2VudC5sZW5ndGgoKTsK
LSAgICBmbG9hdCBjcm9zczIgPSBwLngoKSAqIHEueSgpIC0gcS54KCkgKiBwLnkoKTsKLQotICAg
IHJldHVybiBFZGdlKHRhbmdlbnQueCgpICogc2NhbGUsCi0gICAgICAgICAgICAgICAgdGFuZ2Vu
dC55KCkgKiBzY2FsZSwKLSAgICAgICAgICAgICAgICBjcm9zczIgKiBzY2FsZSk7Ci19Ci0KLXN0
YXRpYyBGbG9hdFBvaW50IGludGVyc2VjdChjb25zdCBFZGdlJiBhLCBjb25zdCBFZGdlJiBiKQot
ewotICAgIHJldHVybiBGbG9hdFBvaW50KAotICAgICAgICAoYS55KCkgKiBiLnooKSAtIGIueSgp
ICogYS56KCkpIC8gKGEueCgpICogYi55KCkgLSBiLngoKSAqIGEueSgpKSwKLSAgICAgICAgKGEu
eCgpICogYi56KCkgLSBiLngoKSAqIGEueigpKSAvIChiLngoKSAqIGEueSgpIC0gYS54KCkgKiBi
LnkoKSkpOwotfQotCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4KIHZvaWQgTGF5ZXJUaWxlckNocm9taXVt
OjpkcmF3VGlsZXMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBnbG9iYWxUcmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIGNvbnN0IFQqIHByb2dy
YW0pCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyQ29u
dGV4dCgpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51c2VQcm9ncmFtKHByb2dyYW0tPnBy
b2dyYW0oKSkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+
ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwotICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwot
Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4KGdsb2JhbFRyYW5zZm9ybSk7CisgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4KGxheWVyUmVuZGVyZXIoKS0+d2luZG93TWF0cml4
KCkgKiBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSAqIGdsb2JhbFRyYW5zZm9y
bSk7CiAKICAgICAvLyBXZSBkb24ndCBjYXJlIGFib3V0IFogY29tcG9uZW50LgogICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IG1hdHJpeFhZVyA9CkBAIC00NzgsMzMgKzQ0NSw0NiBAQCB2b2lkIExh
eWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdAogICAgICAgICByZXR1cm47CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBpbnZlcnNlID0gbWF0cml4WFlXLmludmVyc2UoKTsKLSAgICBJbnRSZWN0IGJvdW5kcyht
X2xheWVyUG9zaXRpb24sIEludFNpemUobV90aWxpbmdEYXRhLnRvdGFsU2l6ZVgoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV90aWxpbmdEYXRhLnRvdGFs
U2l6ZVkoKSkpOwogCi0gICAgLy8gSW5jbHVkZSBvdXRlciBib3JkZXIgdGV4ZWxzIGluIGJvdW5k
cy4KLSAgICBib3VuZHMuaW5mbGF0ZShtX3RpbGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkpOworICAg
IEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKKyAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsK
KyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hh
ZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKKworICAgIEludFJl
Y3QgbGF5ZXJSZWN0ID0gY29udGVudFJlY3RUb0xheWVyUmVjdChjb250ZW50UmVjdCk7CisgICAg
SW50UmVjdCBib3VuZHMobGF5ZXJSZWN0KTsKKyAgICBib3VuZHMubW92ZShtX2xheWVyUG9zaXRp
b24ueCgpLCBtX2xheWVyUG9zaXRpb24ueSgpKTsKIAogICAgIC8vIE1hcCBib3VuZHMgdG8gZGV2
aWNlIHNwYWNlLgogICAgIEZsb2F0UXVhZCBib3VuZHNRdWFkID0gbWF0cml4Lm1hcFF1YWQoRmxv
YXRRdWFkKGJvdW5kcykpOwogCisgICAgLy8gQ3JlYXRlIG91dGVyIGVkZ2VzLgorICAgIEVkZ2Ug
bGVmdEVkZ2UoYm91bmRzUXVhZC5wNCgpLCBib3VuZHNRdWFkLnAxKCkpOworICAgIEVkZ2Ugcmln
aHRFZGdlKGJvdW5kc1F1YWQucDIoKSwgYm91bmRzUXVhZC5wMygpKTsKKyAgICBFZGdlIHRvcEVk
Z2UoYm91bmRzUXVhZC5wMSgpLCBib3VuZHNRdWFkLnAyKCkpOworICAgIEVkZ2UgYm90dG9tRWRn
ZShib3VuZHNRdWFkLnAzKCksIGJvdW5kc1F1YWQucDQoKSk7CisKICAgICAvLyBDb3VudGVyLWNs
b2Nrd2lzZT8KICAgICBmbG9hdCBzaWduID0gaXNDQ1coYm91bmRzUXVhZCkgPyAtMSA6IDE7Ci0K
LSAgICAvLyBDb21wdXRlIG91dGVyIGVkZ2VzLgotICAgIEVkZ2UgbGVmdEVkZ2UgPSBjb21wdXRl
RWRnZShib3VuZHNRdWFkLnA0KCksIGJvdW5kc1F1YWQucDEoKSwgc2lnbik7Ci0gICAgRWRnZSBy
aWdodEVkZ2UgPSBjb21wdXRlRWRnZShib3VuZHNRdWFkLnAyKCksIGJvdW5kc1F1YWQucDMoKSwg
c2lnbik7Ci0gICAgRWRnZSB0b3BFZGdlID0gY29tcHV0ZUVkZ2UoYm91bmRzUXVhZC5wMSgpLCBi
b3VuZHNRdWFkLnAyKCksIHNpZ24pOwotICAgIEVkZ2UgYm90dG9tRWRnZSA9IGNvbXB1dGVFZGdl
KGJvdW5kc1F1YWQucDMoKSwgYm91bmRzUXVhZC5wNCgpLCBzaWduKTsKKyAgICBsZWZ0RWRnZS5z
Y2FsZShzaWduKTsKKyAgICByaWdodEVkZ2Uuc2NhbGUoc2lnbik7CisgICAgdG9wRWRnZS5zY2Fs
ZShzaWduKTsKKyAgICBib3R0b21FZGdlLnNjYWxlKHNpZ24pOworCisgICAgLy8gVXNlIHNvZnQg
ZWRnZXMuCisgICAgZmxvYXQgZWRnZVNoYXJwbmVzcyA9IChtX3RpbGluZ0RhdGEuYm9yZGVyVGV4
ZWxzKCkgJiYgIWdsb2JhbFRyYW5zZm9ybS5pc0ludGVnZXJUcmFuc2xhdGlvbigpKSA/IDAgOiAx
OworICAgIGxlZnRFZGdlLnNldFcoZWRnZVNoYXJwbmVzcyk7CisgICAgcmlnaHRFZGdlLnNldFco
ZWRnZVNoYXJwbmVzcyk7CisgICAgdG9wRWRnZS5zZXRXKGVkZ2VTaGFycG5lc3MpOworICAgIGJv
dHRvbUVkZ2Uuc2V0VyhlZGdlU2hhcnBuZXNzKTsKIAogICAgIC8vIE1vdmUgb3V0ZXIgZWRnZXMg
dG8gZW5zdXJlIHRoYXQgYWxsIHBhcnRpYWxseSBjb3ZlcmVkIHBpeGVscyBhcmUKICAgICAvLyBw
cm9jZXNzZWQuCi0gICAgZmxvYXQgekRpc3RhbmNlID0gbV90aWxpbmdEYXRhLmJvcmRlclRleGVs
cygpICogMC41ZjsKLSAgICBsZWZ0RWRnZS5tb3ZlKDAsIDAsIHpEaXN0YW5jZSk7Ci0gICAgcmln
aHRFZGdlLm1vdmUoMCwgMCwgekRpc3RhbmNlKTsKLSAgICB0b3BFZGdlLm1vdmUoMCwgMCwgekRp
c3RhbmNlKTsKLSAgICBib3R0b21FZGdlLm1vdmUoMCwgMCwgekRpc3RhbmNlKTsKLQotICAgIEdD
M0RpbnQgZmlsdGVyID0gKG1fdGlsaW5nRGF0YS5ib3JkZXJUZXhlbHMoKSAmJiAhbWF0cml4Lmlz
SW50ZWdlclRyYW5zbGF0aW9uKCkpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBo
aWNzQ29udGV4dDNEOjpORUFSRVNUOworICAgIGZsb2F0IHpEaXN0YW5jZSA9ICgxIC0gZWRnZVNo
YXJwbmVzcykgKiAwLjVmOworICAgIGxlZnRFZGdlLnNldFoobGVmdEVkZ2UueigpICsgekRpc3Rh
bmNlKTsKKyAgICByaWdodEVkZ2Uuc2V0WihyaWdodEVkZ2UueigpICsgekRpc3RhbmNlKTsKKyAg
ICB0b3BFZGdlLnNldFoodG9wRWRnZS56KCkgKyB6RGlzdGFuY2UpOworICAgIGJvdHRvbUVkZ2Uu
c2V0Wihib3R0b21FZGdlLnooKSArIHpEaXN0YW5jZSk7CiAKICAgICBFZGdlIHByZXZFZGdlWSA9
IHRvcEVkZ2U7CiAKQEAgLTUxNSw3ICs0OTUsMTMgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06
OmRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXQK
IAogICAgICAgICBFZGdlIGVkZ2VZID0gYm90dG9tRWRnZTsKICAgICAgICAgaWYgKGogPCAobV90
aWxpbmdEYXRhLm51bVRpbGVzWSgpIC0gMSkpIHsKLSAgICAgICAgICAgIEludFJlY3QgdGlsZVJl
Y3QgPSBtX3RpbGluZ0RhdGEudGlsZUJvdW5kcyhtX3RpbGluZ0RhdGEudGlsZUluZGV4KDAsIGop
KTsKKyAgICAgICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSB1bmlvblJlY3QobV90aWxpbmdEYXRh
LnRpbGVCb3VuZHMobV90aWxpbmdEYXRhLnRpbGVJbmRleCgwLCBqKSksIG1fdGlsaW5nRGF0YS50
aWxlQm91bmRzKG1fdGlsaW5nRGF0YS50aWxlSW5kZXgobV90aWxpbmdEYXRhLm51bVRpbGVzWCgp
IC0gMSwgaikpKTsKKyAgICAgICAgICAgIHRpbGVSZWN0LmludGVyc2VjdChsYXllclJlY3QpOwor
CisgICAgICAgICAgICAvLyBTa2lwIGVtcHR5IHJvd3MuCisgICAgICAgICAgICBpZiAodGlsZVJl
Y3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICB0
aWxlUmVjdC5tb3ZlKG1fbGF5ZXJQb3NpdGlvbi54KCksIG1fbGF5ZXJQb3NpdGlvbi55KCkpOwog
CiAgICAgICAgICAgICBGbG9hdFBvaW50IHAxKHRpbGVSZWN0Lm1heFgoKSwgdGlsZVJlY3QubWF4
WSgpKTsKQEAgLTUyNSw4ICs1MTEsMTEgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXdU
aWxlcyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXQKICAgICAg
ICAgICAgIHAxID0gbWF0cml4Lm1hcFBvaW50KHAxKTsKICAgICAgICAgICAgIHAyID0gbWF0cml4
Lm1hcFBvaW50KHAyKTsKIAotICAgICAgICAgICAgLy8gQ29tcHV0ZSBob3Jpem9udGFsIGVkZ2Uu
Ci0gICAgICAgICAgICBlZGdlWSA9IGNvbXB1dGVFZGdlKHAxLCBwMiwgc2lnbik7CisgICAgICAg
ICAgICAvLyBDcmVhdGUgaG9yaXpvbnRhbCBlZGdlLgorICAgICAgICAgICAgZWRnZVkgPSBFZGdl
KHAxLCBwMik7CisKKyAgICAgICAgICAgIC8vIEFkanVzdCBkaXJlY3Rpb24uCisgICAgICAgICAg
ICBlZGdlWS5zY2FsZShzaWduKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoaW50IGkgPSBs
ZWZ0OyBpIDw9IHJpZ2h0OyArK2kpIHsKQEAgLTUzNywyNyArNTI2LDUzIEBAIHZvaWQgTGF5ZXJU
aWxlckNocm9taXVtOjpkcmF3VGlsZXMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0CiAgICAgICAgICAgICBBU1NFUlQodGlsZS0+dGV4dHVyZSgpLT5pc1Jlc2Vy
dmVkKCkpOwogCiAgICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPmJpbmRUZXh0dXJlKCk7Ci0g
ICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRF
UiwgZmlsdGVyKSk7Ci0gICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfTUFHX0ZJTFRFUiwgZmlsdGVyKSk7CiAKICAgICAgICAgICAgIC8vIERvbid0IHVzZSB0
aWxlQ29udGVudFJlY3QgaGVyZSwgYXMgdGhhdCBjb250YWlucyB0aGUgZnVsbAogICAgICAgICAg
ICAgLy8gcmVjdCB3aXRoIGJvcmRlciB0ZXhlbHMgd2hpY2ggc2hvdWxkbid0IGJlIGRyYXduLgog
ICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IG1fdGlsaW5nRGF0YS50aWxlQm91bmRzKG1f
dGlsaW5nRGF0YS50aWxlSW5kZXgodGlsZS0+aSgpLCB0aWxlLT5qKCkpKTsKKyAgICAgICAgICAg
IEludFJlY3QgZGlzcGxheVJlY3QgPSB0aWxlUmVjdDsKKyAgICAgICAgICAgIHRpbGVSZWN0Lmlu
dGVyc2VjdChsYXllclJlY3QpOworCisgICAgICAgICAgICAvLyBLZWVwIHRyYWNrIG9mIGhvdyB0
aGUgdG9wIGxlZnQgaGFzIG1vdmVkLCBzbyB0aGUgdGV4dHVyZSBjYW4gYmUKKyAgICAgICAgICAg
IC8vIG9mZnNldCB0aGUgc2FtZSBhbW91bnQuCisgICAgICAgICAgICBJbnRTaXplIGRpc3BsYXlP
ZmZzZXQgPSB0aWxlUmVjdC5taW5YTWluWUNvcm5lcigpIC0gZGlzcGxheVJlY3QubWluWE1pbllD
b3JuZXIoKTsKKworICAgICAgICAgICAgLy8gU2tpcCBlbXB0eSB0aWxlcy4KKyAgICAgICAgICAg
IGlmICh0aWxlUmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKICAg
ICAgICAgICAgIHRpbGVSZWN0Lm1vdmUobV9sYXllclBvc2l0aW9uLngoKSwgbV9sYXllclBvc2l0
aW9uLnkoKSk7CiAKLSAgICAgICAgICAgIEludFBvaW50IHRleE9mZnNldCA9IG1fdGlsaW5nRGF0
YS50ZXh0dXJlT2Zmc2V0KCk7Ci0gICAgICAgICAgICBJbnRSZWN0IHRleFJlY3QgPSB0aWxlVGV4
UmVjdCh0aWxlKTsKLSAgICAgICAgICAgIGZsb2F0IHRpbGVXaWR0aCA9IHN0YXRpY19jYXN0PGZs
b2F0Pih0ZXhSZWN0LndpZHRoKCkpOwotICAgICAgICAgICAgZmxvYXQgdGlsZUhlaWdodCA9IHN0
YXRpY19jYXN0PGZsb2F0Pih0ZXhSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgICAgIGZsb2F0IHRl
eFRyYW5zbGF0ZVggPSAodGV4T2Zmc2V0LngoKSAtIHRpbGVSZWN0LngoKSkgLyB0aWxlV2lkdGg7
Ci0gICAgICAgICAgICBmbG9hdCB0ZXhUcmFuc2xhdGVZID0gKHRleE9mZnNldC55KCkgLSB0aWxl
UmVjdC55KCkpIC8gdGlsZUhlaWdodDsKLSAgICAgICAgICAgIGZsb2F0IHRleFNjYWxlWCA9IHRp
bGVSZWN0LndpZHRoKCkgLyB0aWxlV2lkdGg7Ci0gICAgICAgICAgICBmbG9hdCB0ZXhTY2FsZVkg
PSB0aWxlUmVjdC5oZWlnaHQoKSAvIHRpbGVIZWlnaHQ7CisgICAgICAgICAgICBGbG9hdFJlY3Qg
Y2xhbXBSZWN0KHRpbGVSZWN0KTsKKyAgICAgICAgICAgIC8vIENsYW1wIHRleHR1cmUgY29vcmRp
bmF0ZXMgdG8gYXZvaWQgc2FtcGxpbmcgb3V0c2lkZSB0aGUgbGF5ZXIuCisgICAgICAgICAgICBj
b25zdCBmbG9hdCBlcHNpbG9uID0gMSAvIDEwMjQuMGY7CisgICAgICAgICAgICBmbG9hdCBjbGFt
cFggPSBtaW4oMC41LCBjbGFtcFJlY3Qud2lkdGgoKSAvIDIuMCAtIGVwc2lsb24pOworICAgICAg
ICAgICAgZmxvYXQgY2xhbXBZID0gbWluKDAuNSwgY2xhbXBSZWN0LmhlaWdodCgpIC8gMi4wIC0g
ZXBzaWxvbik7CisgICAgICAgICAgICBjbGFtcFJlY3QuaW5mbGF0ZVgoLWNsYW1wWCk7CisgICAg
ICAgICAgICBjbGFtcFJlY3QuaW5mbGF0ZVkoLWNsYW1wWSk7CisgICAgICAgICAgICBGbG9hdFNp
emUgY2xhbXBPZmZzZXQgPSBjbGFtcFJlY3QubWluWE1pbllDb3JuZXIoKSAtIEZsb2F0UmVjdCh0
aWxlUmVjdCkubWluWE1pbllDb3JuZXIoKTsKKworICAgICAgICAgICAgRmxvYXRQb2ludCB0ZXhP
ZmZzZXQgPSBtX3RpbGluZ0RhdGEudGV4dHVyZU9mZnNldCh0aWxlLT5pKCksIHRpbGUtPmooKSkg
KyBjbGFtcE9mZnNldCArIEZsb2F0U2l6ZShkaXNwbGF5T2Zmc2V0KTsKKyAgICAgICAgICAgIGZs
b2F0IHRpbGVXaWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0PihtX3RpbGVTaXplLndpZHRoKCkpOwor
ICAgICAgICAgICAgZmxvYXQgdGlsZUhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0PihtX3RpbGVT
aXplLmhlaWdodCgpKTsKKworICAgICAgICAgICAgLy8gTWFwIGNsYW1waW5nIHJlY3RhbmdsZSB0
byB1bml0IHNxdWFyZS4KKyAgICAgICAgICAgIGZsb2F0IHZzVGV4VHJhbnNsYXRlWCA9IC1jbGFt
cFJlY3QueCgpIC8gY2xhbXBSZWN0LndpZHRoKCk7CisgICAgICAgICAgICBmbG9hdCB2c1RleFRy
YW5zbGF0ZVkgPSAtY2xhbXBSZWN0LnkoKSAvIGNsYW1wUmVjdC5oZWlnaHQoKTsKKyAgICAgICAg
ICAgIGZsb2F0IHZzVGV4U2NhbGVYID0gdGlsZVJlY3Qud2lkdGgoKSAvIGNsYW1wUmVjdC53aWR0
aCgpOworICAgICAgICAgICAgZmxvYXQgdnNUZXhTY2FsZVkgPSB0aWxlUmVjdC5oZWlnaHQoKSAv
IGNsYW1wUmVjdC5oZWlnaHQoKTsKKworICAgICAgICAgICAgLy8gTWFwIHRvIG5vcm1hbGl6ZWQg
dGV4dHVyZSBjb29yZGluYXRlcy4KKyAgICAgICAgICAgIGZsb2F0IGZzVGV4VHJhbnNsYXRlWCA9
IHRleE9mZnNldC54KCkgLyB0aWxlV2lkdGg7CisgICAgICAgICAgICBmbG9hdCBmc1RleFRyYW5z
bGF0ZVkgPSB0ZXhPZmZzZXQueSgpIC8gdGlsZUhlaWdodDsKKyAgICAgICAgICAgIGZsb2F0IGZz
VGV4U2NhbGVYID0gY2xhbXBSZWN0LndpZHRoKCkgLyB0aWxlV2lkdGg7CisgICAgICAgICAgICBm
bG9hdCBmc1RleFNjYWxlWSA9IGNsYW1wUmVjdC5oZWlnaHQoKSAvIHRpbGVIZWlnaHQ7CisKICAg
ICAgICAgICAgIC8vIE9wZW5HTCBjb29yZGluYXRlIHN5c3RlbSBpcyBib3R0b20tdXAuCiAgICAg
ICAgICAgICAvLyBJZiB0aWxlIHRleHR1cmUgaXMgdG9wLWRvd24sIHdlIG5lZWQgdG8gZmxpcCB0
aGUgdGV4dHVyZSBjb29yZGluYXRlcy4KICAgICAgICAgICAgIGlmIChtX3RleHR1cmVPcmllbnRh
dGlvbiA9PSBMYXllclRleHR1cmVVcGRhdGVyOjpUb3BEb3duT3JpZW50YXRpb24pIHsKLSAgICAg
ICAgICAgICAgICB0ZXhUcmFuc2xhdGVZID0gMS4wIC0gdGV4VHJhbnNsYXRlWTsKLSAgICAgICAg
ICAgICAgICB0ZXhTY2FsZVkgKj0gLTEuMDsKKyAgICAgICAgICAgICAgICBmc1RleFRyYW5zbGF0
ZVkgPSAxLjAgLSBmc1RleFRyYW5zbGF0ZVk7CisgICAgICAgICAgICAgICAgZnNUZXhTY2FsZVkg
Kj0gLTEuMDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgRWRnZSBlZGdlWCA9IHJpZ2h0
RWRnZTsKQEAgLTU2OSwxNSArNTg0LDE4IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3
VGlsZXMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0CiAgICAg
ICAgICAgICAgICAgcDEgPSBtYXRyaXgubWFwUG9pbnQocDEpOwogICAgICAgICAgICAgICAgIHAy
ID0gbWF0cml4Lm1hcFBvaW50KHAyKTsKIAotICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgdmVy
dGljYWwgZWRnZS4KLSAgICAgICAgICAgICAgICBlZGdlWCA9IGNvbXB1dGVFZGdlKHAxLCBwMiwg
c2lnbik7CisgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHZlcnRpY2FsIGVkZ2UuCisgICAgICAg
ICAgICAgICAgZWRnZVggPSBFZGdlKHAxLCBwMik7CisKKyAgICAgICAgICAgICAgICAvLyBBZGp1
c3QgZGlyZWN0aW9uLgorICAgICAgICAgICAgICAgIGVkZ2VYLnNjYWxlKHNpZ24pOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAvLyBDcmVhdGUgZGV2aWNlIHNwYWNlIHF1YWQuCi0gICAg
ICAgICAgICBGbG9hdFF1YWQgZGV2aWNlUXVhZChpbnRlcnNlY3QoZWRnZVksIHByZXZFZGdlWCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3QocHJldkVkZ2VYLCBw
cmV2RWRnZVkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJzZWN0KHBy
ZXZFZGdlWSwgZWRnZVgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJz
ZWN0KGVkZ2VYLCBlZGdlWSkpOworICAgICAgICAgICAgRmxvYXRRdWFkIGRldmljZVF1YWQoRWRn
ZTo6aW50ZXJzZWN0KGVkZ2VZLCBwcmV2RWRnZVgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRWRnZTo6aW50ZXJzZWN0KHByZXZFZGdlWCwgcHJldkVkZ2VZKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2U6OmludGVyc2VjdChwcmV2RWRnZVksIGVkZ2VY
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2U6OmludGVyc2VjdChlZGdl
WCwgZWRnZVkpKTsKIAogICAgICAgICAgICAgLy8gTWFwIHF1YWQgdG8gbGF5ZXIgc3BhY2UuCiAg
ICAgICAgICAgICBGbG9hdFF1YWQgcXVhZCA9IGludmVyc2UubWFwUXVhZChkZXZpY2VRdWFkKTsK
QEAgLTU4NSwyMCArNjAzLDI2IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGlsZXMo
Y29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0CiAgICAgICAgICAg
ICAvLyBOb3JtYWxpemUgdG8gdGlsZVJlY3QuCiAgICAgICAgICAgICBxdWFkLnNjYWxlKDEuMGYg
LyB0aWxlUmVjdC53aWR0aCgpLCAxLjBmIC8gdGlsZVJlY3QuaGVpZ2h0KCkpOwogCi0gICAgICAg
ICAgICBkcmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIHF1YWQsIGxheWVyUmVuZGVyZXIoKS0+cHJv
amVjdGlvbk1hdHJpeCgpLCBtYXRyaXgsIHRpbGVSZWN0LndpZHRoKCksIHRpbGVSZWN0LmhlaWdo
dCgpLCBvcGFjaXR5LCB0ZXhUcmFuc2xhdGVYLCB0ZXhUcmFuc2xhdGVZLCB0ZXhTY2FsZVgsIHRl
eFNjYWxlWSwgcHJvZ3JhbSk7CisgICAgICAgICAgICBkcmF3VGV4dHVyZWRRdWFkKGNvbnRleHQs
IHF1YWQsIHByZXZFZGdlWCwgcHJldkVkZ2VZLCBlZGdlWCwgZWRnZVksIGxheWVyUmVuZGVyZXIo
KS0+cHJvamVjdGlvbk1hdHJpeCgpLCBnbG9iYWxUcmFuc2Zvcm0sIHRpbGVSZWN0LndpZHRoKCks
IHRpbGVSZWN0LmhlaWdodCgpLCBvcGFjaXR5LCB2c1RleFRyYW5zbGF0ZVgsIHZzVGV4VHJhbnNs
YXRlWSwgdnNUZXhTY2FsZVgsIHZzVGV4U2NhbGVZLCBmc1RleFRyYW5zbGF0ZVgsIGZzVGV4VHJh
bnNsYXRlWSwgZnNUZXhTY2FsZVgsIGZzVGV4U2NhbGVZLCBwcm9ncmFtKTsKIAogICAgICAgICAg
ICAgcHJldkVkZ2VYID0gZWRnZVg7CisgICAgICAgICAgICAvLyBSZXZlcnNlIGRpcmVjdGlvbi4K
KyAgICAgICAgICAgIHByZXZFZGdlWC5zY2FsZSgtMSk7CiAgICAgICAgIH0KIAogICAgICAgICBw
cmV2RWRnZVkgPSBlZGdlWTsKKyAgICAgICAgLy8gUmV2ZXJzZSBkaXJlY3Rpb24uCisgICAgICAg
IHByZXZFZGdlWS5zY2FsZSgtMSk7CiAgICAgfQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLXZv
aWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBwcm9qZWN0aW9uTWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01h
dHJpeCwKK3ZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IEVkZ2UmIGxl
ZnQsIGNvbnN0IEVkZ2UmIHRvcCwgY29uc3QgRWRnZSYgcmlnaHQsIGNvbnN0IEVkZ2UmIGJvdHRv
bSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHByb2plY3Rpb25NYXRyaXgsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRleFRy
YW5zbGF0ZVgsIGZsb2F0IHRleFRyYW5zbGF0ZVksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbG9hdCB0ZXhTY2FsZVgsIGZsb2F0IHRleFNjYWxlWSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHZzVGV4VHJhbnNsYXRl
WCwgZmxvYXQgdnNUZXhUcmFuc2xhdGVZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgdnNUZXhTY2FsZVgsIGZsb2F0IHZzVGV4U2NhbGVZLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZnNUZXhUcmFuc2xhdGVY
LCBmbG9hdCBmc1RleFRyYW5zbGF0ZVksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCBmc1RleFNjYWxlWCwgZmxvYXQgZnNUZXhTY2FsZVksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUKiBwcm9ncmFtKQogewog
ICAgIHN0YXRpYyBmbG9hdCBnbE1hdHJpeFsxNl07CkBAIC02MTUsOCArNjM5LDExIEBAIHZvaWQg
TGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBjb25zdCBGbG9hCiAKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFm
KHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLCBvcGFjaXR5KSk7CiAK
LSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTRmKHByb2dyYW0tPnZlcnRleFNoYWRl
cigpLnRleFRyYW5zZm9ybUxvY2F0aW9uKCksCi0gICAgICAgIHRleFRyYW5zbGF0ZVgsIHRleFRy
YW5zbGF0ZVksIHRleFNjYWxlWCwgdGV4U2NhbGVZKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPnVuaWZvcm00Zihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS52c1RleFRyYW5zZm9ybUxvY2F0
aW9uKCksCisgICAgICAgIHZzVGV4VHJhbnNsYXRlWCwgdnNUZXhUcmFuc2xhdGVZLCB2c1RleFNj
YWxlWCwgdnNUZXhTY2FsZVkpKTsKKworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3Jt
NGYocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5mc1RleFRyYW5zZm9ybUxvY2F0aW9uKCksCisg
ICAgICAgIGZzVGV4VHJhbnNsYXRlWCwgZnNUZXhUcmFuc2xhdGVZLCBmc1RleFNjYWxlWCwgZnNU
ZXhTY2FsZVkpKTsKIAogICAgIGZsb2F0IHBvaW50WzhdOwogICAgIHBvaW50WzBdID0gcXVhZC5w
MSgpLngoKTsKQEAgLTYyOSw2ICs2NTYsMjUgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRy
YXdUZXh0dXJlZFF1YWQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEZsb2EKICAg
ICBwb2ludFs3XSA9IHF1YWQucDQoKS55KCk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVu
aWZvcm0yZnYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkucG9pbnRMb2NhdGlvbigpLCBwb2ludCwg
NCkpOwogCisgICAgZmxvYXQgZWRnZVsxNl07CisgICAgZWRnZVswXSA9IGxlZnQueCgpOworICAg
IGVkZ2VbMV0gPSBsZWZ0LnkoKTsKKyAgICBlZGdlWzJdID0gbGVmdC56KCk7CisgICAgZWRnZVsz
XSA9IGxlZnQudygpOworICAgIGVkZ2VbNF0gPSB0b3AueCgpOworICAgIGVkZ2VbNV0gPSB0b3Au
eSgpOworICAgIGVkZ2VbNl0gPSB0b3AueigpOworICAgIGVkZ2VbN10gPSB0b3AudygpOworICAg
IGVkZ2VbOF0gPSByaWdodC54KCk7CisgICAgZWRnZVs5XSA9IHJpZ2h0LnkoKTsKKyAgICBlZGdl
WzEwXSA9IHJpZ2h0LnooKTsKKyAgICBlZGdlWzExXSA9IHJpZ2h0LncoKTsKKyAgICBlZGdlWzEy
XSA9IGJvdHRvbS54KCk7CisgICAgZWRnZVsxM10gPSBib3R0b20ueSgpOworICAgIGVkZ2VbMTRd
ID0gYm90dG9tLnooKTsKKyAgICBlZGdlWzE1XSA9IGJvdHRvbS53KCk7CisgICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPnVuaWZvcm00ZnYocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5lZGdlTG9j
YXRpb24oKSwgZWRnZSwgNCkpOworCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRyYXdFbGVt
ZW50cyhHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVTLCA2LCBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfU0hPUlQsIDApKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaAppbmRl
eCA0OGY0ZjlmMjA4ZDM3ZmNkYjlhMmVjYmQ0ZWUzOTUzMDU3NTg4YjFmLi42ZmNlOTFhMjA0MDJh
NDJiNzNjYzEzZTAzMjhlM2RiZGM4MzVjNjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0u
aApAQCAtNDcsNiArNDcsNDUgQEAgY2xhc3MgTGF5ZXJUaWxlckNocm9taXVtIHsKIHB1YmxpYzoK
ICAgICBlbnVtIEJvcmRlclRleGVsT3B0aW9uIHsgSGFzQm9yZGVyVGV4ZWxzLCBOb0JvcmRlclRl
eGVscyB9OwogCisgICAgY2xhc3MgRWRnZSB7CisgICAgcHVibGljOgorICAgICAgICBFZGdlKCkK
KyAgICAgICAgICAgIDogbV94KDApCisgICAgICAgICAgICAsIG1feSgwKQorICAgICAgICAgICAg
LCBtX3ooMCkKKyAgICAgICAgICAgICwgbV93KDApCisgICAgICAgIHsKKyAgICAgICAgfQorICAg
ICAgICBFZGdlKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jik7CisKKyAgICAg
ICAgZmxvYXQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQorICAgICAgICB2b2lkIHNldFgoZmxv
YXQgeCkgeyBtX3ggPSB4OyB9CisKKyAgICAgICAgZmxvYXQgeSgpIGNvbnN0IHsgcmV0dXJuIG1f
eTsgfQorICAgICAgICB2b2lkIHNldFkoZmxvYXQgeSkgeyBtX3kgPSB5OyB9CisKKyAgICAgICAg
ZmxvYXQgeigpIGNvbnN0IHsgcmV0dXJuIG1fejsgfQorICAgICAgICB2b2lkIHNldFooZmxvYXQg
eikgeyBtX3ogPSB6OyB9CisKKyAgICAgICAgZmxvYXQgdygpIGNvbnN0IHsgcmV0dXJuIG1fdzsg
fQorICAgICAgICB2b2lkIHNldFcoZmxvYXQgdykgeyBtX3cgPSB3OyB9CisKKyAgICAgICAgdm9p
ZCBzY2FsZShmbG9hdCBzKQorICAgICAgICB7CisgICAgICAgICAgICBtX3ggKj0gczsKKyAgICAg
ICAgICAgIG1feSAqPSBzOworICAgICAgICAgICAgbV96ICo9IHM7CisgICAgICAgIH0KKworICAg
ICAgICBzdGF0aWMgRmxvYXRQb2ludCBpbnRlcnNlY3QoY29uc3QgTGF5ZXJUaWxlckNocm9taXVt
OjpFZGdlJiwgY29uc3QgTGF5ZXJUaWxlckNocm9taXVtOjpFZGdlJik7CisKKyAgICBwcml2YXRl
OgorICAgICAgICBmbG9hdCBtX3g7CisgICAgICAgIGZsb2F0IG1feTsKKyAgICAgICAgZmxvYXQg
bV96OworICAgICAgICBmbG9hdCBtX3c7CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzT3duUHRy
PExheWVyVGlsZXJDaHJvbWl1bT4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGNvbnN0
IEludFNpemUmIHRpbGVTaXplLCBCb3JkZXJUZXhlbE9wdGlvbik7CiAKICAgICB+TGF5ZXJUaWxl
ckNocm9taXVtKCk7CkBAIC03NSwxMCArMTE0LDEwIEBAIHB1YmxpYzoKICAgICAvLyByZWN5Y2xl
ZCBieSB0aGUgdGV4dHVyZSBtYW5hZ2VyLgogICAgIHZvaWQgcHJvdGVjdFRpbGVUZXh0dXJlcyhj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CiAKLSAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5n
PFZlcnRleFNoYWRlclF1YWQsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhPiBQcm9ncmFtOwor
ICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUXVhZCwgRnJhZ21lbnRTaGFk
ZXJSR0JBVGV4QWxwaGFBQT4gUHJvZ3JhbTsKICAgICAvLyBTaGFkZXIgcHJvZ3JhbSB0aGF0IHN3
YXBzIHJlZCBhbmQgYmx1ZSBjb21wb25lbnRzIG9mIHRleHR1cmUuCiAgICAgLy8gVXNlZCB3aGVu
IHRleHR1cmUgZm9ybWF0IGRvZXMgbm90IG1hdGNoIG5hdGl2ZSBjb2xvciBmb3JtYXQuCi0gICAg
dHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJRdWFkLCBGcmFnbWVudFNoYWRlclJH
QkFUZXhTd2l6emxlQWxwaGE+IFByb2dyYW1Td2l6emxlOworICAgIHR5cGVkZWYgUHJvZ3JhbUJp
bmRpbmc8VmVydGV4U2hhZGVyUXVhZCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhh
QUE+IFByb2dyYW1Td2l6emxlOwogCiAgICAgLy8gSWYgdGhpcyB0aWxlciBoYXMgZXhhY3RseSBv
bmUgdGlsZSwgcmV0dXJuIGl0cyB0ZXh0dXJlLiBPdGhlcndpc2UsIG51bGwuCiAgICAgTGF5ZXJU
ZXh0dXJlKiBnZXRTaW5nbGVUZXh0dXJlKCk7CkBAIC0xMTMsMTAgKzE1MiwxMiBAQCBwcml2YXRl
OgogICAgIHZvaWQgZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IFQqIHByb2dyYW0pOwog
CiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFkKEdyYXBo
aWNzQ29udGV4dDNEKiwgY29uc3QgRmxvYXRRdWFkJiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHByb2plY3Rpb25NYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0
cml4LAorICAgIHZvaWQgZHJhd1RleHR1cmVkUXVhZChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0
IEZsb2F0UXVhZCYsIGNvbnN0IEVkZ2UmLCBjb25zdCBFZGdlJiwgY29uc3QgRWRnZSYsIGNvbnN0
IEVkZ2UmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdNYXRyaXgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNpdHksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsb2F0IHRleFRyYW5zbGF0ZVgsIGZsb2F0IHRleFRyYW5zbGF0
ZVksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRleFNjYWxlWCwgZmxvYXQgdGV4
U2NhbGVZLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB2c1RleFRyYW5zbGF0ZVgs
IGZsb2F0IHZzVGV4VHJhbnNsYXRlWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
dnNUZXhTY2FsZVgsIGZsb2F0IHZzVGV4U2NhbGVZLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdCBmc1RleFRyYW5zbGF0ZVgsIGZsb2F0IGZzVGV4VHJhbnNsYXRlWSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgZnNUZXhTY2FsZVgsIGZsb2F0IGZzVGV4U2NhbGVZLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUKiBwcm9ncmFtKTsKIAogICAgIC8vIEdy
b3cgbGF5ZXIgc2l6ZSB0byBjb250YWluIHRoaXMgcmVjdGFuZ2xlLgpAQCAtMTM1LDcgKzE3Niw2
IEBAIHByaXZhdGU6CiAgICAgVGlsZSogdGlsZUF0KGludCwgaW50KSBjb25zdDsKICAgICBJbnRS
ZWN0IHRpbGVDb250ZW50UmVjdChjb25zdCBUaWxlKikgY29uc3Q7CiAgICAgSW50UmVjdCB0aWxl
TGF5ZXJSZWN0KGNvbnN0IFRpbGUqKSBjb25zdDsKLSAgICBJbnRSZWN0IHRpbGVUZXhSZWN0KGNv
bnN0IFRpbGUqKSBjb25zdDsKIAogICAgIEdDM0RlbnVtIG1fdGV4dHVyZUZvcm1hdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2hhZGVyQ2hyb21pdW0uY3BwCmluZGV4IDUwZGU4MDQ3ZDFiN2I5ZDEzZmY3MTk2MzhjMzYyMGVi
NWZhNjlkYWIuLjdlMTI2Yjg2NmQxMGMyYzMwMTY0NWM2MzM2YWMwZTZhNzJiMjA5YWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9TaGFkZXJDaHJvbWl1bS5jcHAKQEAgLTE1MiwxNyArMTUyLDE3IEBAIFN0cmluZyBWZXJ0ZXhT
aGFkZXJQb3NUZXhUcmFuc2Zvcm06OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiAKIFZlcnRleFNo
YWRlclF1YWQ6OlZlcnRleFNoYWRlclF1YWQoKQogICAgIDogbV9tYXRyaXhMb2NhdGlvbigtMSkK
LSAgICAsIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24oLTEpCiAgICAgLCBtX3BvaW50TG9jYXRpb24o
LTEpCisgICAgLCBtX3ZzVGV4VHJhbnNmb3JtTG9jYXRpb24oLTEpCiB7CiB9CiAKIHZvaWQgVmVy
dGV4U2hhZGVyUXVhZDo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQg
cHJvZ3JhbSkKIHsKICAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKLSAgICBtX3RleFRyYW5zZm9ybUxvY2F0aW9uID0g
Y29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhUcmFuc2Zvcm0iKTsKICAg
ICBtX3BvaW50TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
InBvaW50Iik7Ci0gICAgQVNTRVJUKG1fbWF0cml4TG9jYXRpb24gIT0gLTEgJiYgbV90ZXhUcmFu
c2Zvcm1Mb2NhdGlvbiAhPSAtMSAmJiBtX3BvaW50TG9jYXRpb24gIT0gLTEpOworICAgIG1fdnNU
ZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCAidnNUZXhUcmFuc2Zvcm0iKTsKKyAgICBBU1NFUlQobV9tYXRyaXhMb2NhdGlvbiAhPSAtMSAm
JiBtX3BvaW50TG9jYXRpb24gIT0gLTEgJiYgbV92c1RleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0x
KTsKIH0KIAogU3RyaW5nIFZlcnRleFNoYWRlclF1YWQ6OmdldFNoYWRlclN0cmluZygpIGNvbnN0
CkBAIC0xNzEsOCArMTcxLDggQEAgU3RyaW5nIFZlcnRleFNoYWRlclF1YWQ6OmdldFNoYWRlclN0
cmluZygpIGNvbnN0CiAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247CiAgICAgICAg
IGF0dHJpYnV0ZSB2ZWMyIGFfdGV4Q29vcmQ7CiAgICAgICAgIHVuaWZvcm0gbWF0NCBtYXRyaXg7
Ci0gICAgICAgIHVuaWZvcm0gdmVjNCB0ZXhUcmFuc2Zvcm07CiAgICAgICAgIHVuaWZvcm0gdmVj
MiBwb2ludFs0XTsKKyAgICAgICAgdW5pZm9ybSB2ZWM0IHZzVGV4VHJhbnNmb3JtOwogICAgICAg
ICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKICAgICAgICAgdm9pZCBtYWluKCkKICAgICAgICAg
ewpAQCAtMTgzLDcgKzE4Myw3IEBAIFN0cmluZyBWZXJ0ZXhTaGFkZXJRdWFkOjpnZXRTaGFkZXJT
dHJpbmcoKSBjb25zdAogICAgICAgICAgICAgcG9zLnh5ICs9IChhX3RleENvb3JkLnggKiBhX3Rl
eENvb3JkLnkpICogcG9pbnRbMl07CiAgICAgICAgICAgICBwb3MueHkgKz0gKGNvbXBsZW1lbnQu
eCAqIGFfdGV4Q29vcmQueSkgKiBwb2ludFszXTsKICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0g
bWF0cml4ICogcG9zOwotICAgICAgICAgICAgdl90ZXhDb29yZCA9IHBvcy54eSAqIHRleFRyYW5z
Zm9ybS56dyArIHRleFRyYW5zZm9ybS54eTsKKyAgICAgICAgICAgIHZfdGV4Q29vcmQgPSBwb3Mu
eHkgKiB2c1RleFRyYW5zZm9ybS56dyArIHZzVGV4VHJhbnNmb3JtLnh5OwogICAgICAgICB9CiAg
ICAgKTsKIH0KQEAgLTI0Nyw2ICsyNDcsNzAgQEAgU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRl
eFN3aXp6bGVBbHBoYTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKICAgICApOwogfQogCitGcmFn
bWVudFRleEFscGhhQUFCaW5kaW5nOjpGcmFnbWVudFRleEFscGhhQUFCaW5kaW5nKCkKKyAgICA6
IG1fc2FtcGxlckxvY2F0aW9uKC0xKQorICAgICwgbV9hbHBoYUxvY2F0aW9uKC0xKQorICAgICwg
bV9mc1RleFRyYW5zZm9ybUxvY2F0aW9uKC0xKQorICAgICwgbV9lZGdlTG9jYXRpb24oLTEpCit7
Cit9CisKK3ZvaWQgRnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZzo6aW5pdChHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBtX3NhbXBsZXJMb2NhdGlv
biA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7Cisg
ICAgbV9hbHBoYUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0s
ICJhbHBoYSIpOworICAgIG1fZnNUZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGNvbnRleHQtPmdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiZnNUZXhUcmFuc2Zvcm0iKTsKKyAgICBtX2VkZ2VMb2Nh
dGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiZWRnZSIpOworCisg
ICAgQVNTRVJUKG1fc2FtcGxlckxvY2F0aW9uICE9IC0xICYmIG1fYWxwaGFMb2NhdGlvbiAhPSAt
MSAmJiBtX2ZzVGV4VHJhbnNmb3JtTG9jYXRpb24gIT0gLTEgJiYgbV9lZGdlTG9jYXRpb24gIT0g
LTEpOworfQorCitTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQTo6Z2V0U2hhZGVy
U3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU0hBREVSKAorICAgICAgICBwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAg
IHVuaWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsKKyAgICAgICAgdW5pZm9ybSBmbG9hdCBhbHBo
YTsKKyAgICAgICAgdW5pZm9ybSB2ZWM0IGZzVGV4VHJhbnNmb3JtOworICAgICAgICB1bmlmb3Jt
IHZlYzQgZWRnZVs0XTsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmVjMiB0ZXhDb29yZCA9IGNsYW1wKHZfdGV4Q29vcmQsIDAuMCwgMS4wKSAqIGZzVGV4VHJh
bnNmb3JtLnp3ICsgZnNUZXhUcmFuc2Zvcm0ueHk7CisgICAgICAgICAgICB2ZWM0IHRleENvbG9y
ID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdGV4Q29vcmQpOworICAgICAgICAgICAgdmVjNCBwb3Mg
PSB2ZWM0KGdsX0ZyYWdDb29yZC54eSwgMSwgMSk7CisgICAgICAgICAgICBmbG9hdCBhMCA9IGNs
YW1wKGRvdChlZGdlWzBdLCBwb3MpLCAwLjAsIDEuMCk7CisgICAgICAgICAgICBmbG9hdCBhMSA9
IGNsYW1wKGRvdChlZGdlWzFdLCBwb3MpLCAwLjAsIDEuMCk7CisgICAgICAgICAgICBmbG9hdCBh
MiA9IGNsYW1wKGRvdChlZGdlWzJdLCBwb3MpLCAwLjAsIDEuMCk7CisgICAgICAgICAgICBmbG9h
dCBhMyA9IGNsYW1wKGRvdChlZGdlWzNdLCBwb3MpLCAwLjAsIDEuMCk7CisgICAgICAgICAgICBn
bF9GcmFnQ29sb3IgPSB0ZXhDb2xvciAqIGFscGhhICogbWluKGEwLCBhMikgKiBtaW4oYTEsIGEz
KTsKKyAgICAgICAgfQorICAgICk7Cit9CisKK1N0cmluZyBGcmFnbWVudFNoYWRlclJHQkFUZXhT
d2l6emxlQWxwaGFBQTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU0hB
REVSKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgdmFyeWluZyB2
ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsKKyAg
ICAgICAgdW5pZm9ybSBmbG9hdCBhbHBoYTsKKyAgICAgICAgdW5pZm9ybSB2ZWM0IGZzVGV4VHJh
bnNmb3JtOworICAgICAgICB1bmlmb3JtIHZlYzQgZWRnZVs0XTsKKyAgICAgICAgdm9pZCBtYWlu
KCkKKyAgICAgICAgeworICAgICAgICAgICAgdmVjMiB0ZXhDb29yZCA9IGNsYW1wKHZfdGV4Q29v
cmQsIDAuMCwgMS4wKSAqIGZzVGV4VHJhbnNmb3JtLnp3ICsgZnNUZXhUcmFuc2Zvcm0ueHk7Cisg
ICAgICAgICAgICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdGV4Q29vcmQp
OworICAgICAgICAgICAgdmVjNCBwb3MgPSB2ZWM0KGdsX0ZyYWdDb29yZC54eSwgMSwgMSk7Cisg
ICAgICAgICAgICBmbG9hdCBhMCA9IGNsYW1wKGRvdChlZGdlWzBdLCBwb3MpLCAwLjAsIDEuMCk7
CisgICAgICAgICAgICBmbG9hdCBhMSA9IGNsYW1wKGRvdChlZGdlWzFdLCBwb3MpLCAwLjAsIDEu
MCk7CisgICAgICAgICAgICBmbG9hdCBhMiA9IGNsYW1wKGRvdChlZGdlWzJdLCBwb3MpLCAwLjAs
IDEuMCk7CisgICAgICAgICAgICBmbG9hdCBhMyA9IGNsYW1wKGRvdChlZGdlWzNdLCBwb3MpLCAw
LjAsIDEuMCk7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleENvbG9yLnosIHRl
eENvbG9yLnksIHRleENvbG9yLngsIHRleENvbG9yLncpICogYWxwaGEgKiBtaW4oYTAsIGEyKSAq
IG1pbihhMSwgYTMpOworICAgICAgICB9CisgICAgKTsKK30KKwogRnJhZ21lbnRTaGFkZXJSR0JB
VGV4QWxwaGFNYXNrOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2soKQogICAgIDogbV9z
YW1wbGVyTG9jYXRpb24oLTEpCiAgICAgLCBtX21hc2tTYW1wbGVyTG9jYXRpb24oLTEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hh
ZGVyQ2hyb21pdW0uaAppbmRleCBjZmM2MTFhNjQ5NWIxMWUxYTlmNDU1ZWEzZjllMWJlZmFkZTg5
NTE5Li5iMTBjNjE0MGZkNDQ3ODgzMjEzMWFhODJmZGRiZWQ0ZDI2MjIzYzllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRl
ckNocm9taXVtLmgKQEAgLTEwNCwxMyArMTA0LDEzIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0
U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKICAgICBpbnQgbWF0cml4TG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9Ci0gICAgaW50IHRleFRyYW5zZm9ybUxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsgfQogICAgIGludCBwb2lu
dExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludExvY2F0aW9uOyB9CisgICAgaW50IHZz
VGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3ZzVGV4VHJhbnNmb3JtTG9j
YXRpb247IH0KIAogcHJpdmF0ZToKICAgICBpbnQgbV9tYXRyaXhMb2NhdGlvbjsKLSAgICBpbnQg
bV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsKICAgICBpbnQgbV9wb2ludExvY2F0aW9uOworICAgIGlu
dCBtX3ZzVGV4VHJhbnNmb3JtTG9jYXRpb247CiB9OwogCiBjbGFzcyBGcmFnbWVudFRleEFscGhh
QmluZGluZyB7CkBAIC0xNDIsNiArMTQyLDM0IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0U2hh
ZGVyU3RyaW5nKCkgY29uc3Q7CiB9OwogCitjbGFzcyBGcmFnbWVudFRleEFscGhhQUFCaW5kaW5n
IHsKK3B1YmxpYzoKKyAgICBGcmFnbWVudFRleEFscGhhQUFCaW5kaW5nKCk7CisKKyAgICB2b2lk
IGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICBpbnQgYWxw
aGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFMb2NhdGlvbjsgfQorICAgIGludCBz
YW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZXJMb2NhdGlvbjsgfQorICAg
IGludCBmc1RleFRyYW5zZm9ybUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mc1RleFRyYW5z
Zm9ybUxvY2F0aW9uOyB9CisgICAgaW50IGVkZ2VMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZWRnZUxvY2F0aW9uOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fc2FtcGxlckxvY2F0aW9uOwor
ICAgIGludCBtX2FscGhhTG9jYXRpb247CisgICAgaW50IG1fZnNUZXhUcmFuc2Zvcm1Mb2NhdGlv
bjsKKyAgICBpbnQgbV9lZGdlTG9jYXRpb247Cit9OworCitjbGFzcyBGcmFnbWVudFNoYWRlclJH
QkFUZXhBbHBoYUFBIDogcHVibGljIEZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmcgeworcHVibGlj
OgorICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKK307CisKKy8vIFN3aXp6bGVz
IHRoZSByZWQgYW5kIGJsdWUgY29tcG9uZW50IG9mIHNhbXBsZWQgdGV4ZWwuCitjbGFzcyBGcmFn
bWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGFBQSA6IHB1YmxpYyBGcmFnbWVudFRleEFscGhh
QUFCaW5kaW5nIHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7
Cit9OworCiBjbGFzcyBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2sgewogcHVibGljOgog
ICAgIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzaygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHAKaW5kZXggM2U5ZTZkZDA0OGYyMjE1ZDI4OTQ5MTc1OTM0MWQ3ZTM3NmJjMGQy
Ny4uNTY3NWNlYTEzYTZlYmRhYzFkOWNiM2FhNGUyZmZjYzU0OWEwNGViNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CiAKIC8vIFN0YXJ0IHRpbGluZyB3aGVuIHRoZSB3aWR0aCBhbmQgaGVpZ2h0
IG9mIGEgbGF5ZXIgYXJlIGxhcmdlciB0aGFuIHRoaXMgc2l6ZS4KLXN0YXRpYyBpbnQgbWF4VW50
aWxlZFNpemUgPSA1MTA7CitzdGF0aWMgaW50IG1heFVudGlsZWRTaXplID0gNTEyOwogCiAvLyBX
aGVuIHRpbGluZyBpcyBlbmFibGVkLCB1c2UgdGlsZXMgb2YgdGhpcyBkaW1lbnNpb24gc3F1YXJl
ZC4KIHN0YXRpYyBpbnQgZGVmYXVsdFRpbGVTaXplID0gMjU2OwpAQCAtNTAsNyArNTAsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBUaWxlZExheWVyQ2hyb21pdW06OlRpbGVkTGF5ZXJDaHJvbWl1
bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQogICAgIDogTGF5ZXJDaHJvbWl1bShvd25l
cikKICAgICAsIG1fdGlsaW5nT3B0aW9uKEF1dG9UaWxlKQotICAgICwgbV9ib3JkZXJUZXhlbHMo
dHJ1ZSkKIHsKIH0KIApAQCAtODAsNyArNzksNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6
dXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKQogICAgIGlmICghbV90aWxlcikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgY29uc3QgSW50U2l6ZSB0aWxlU2l6ZShkZWZhdWx0VGlsZVNpemUs
IGRlZmF1bHRUaWxlU2l6ZSk7CisgICAgY29uc3QgSW50U2l6ZSB0aWxlU2l6ZShtaW4oZGVmYXVs
dFRpbGVTaXplLCBjb250ZW50Qm91bmRzKCkud2lkdGgoKSksIG1pbihkZWZhdWx0VGlsZVNpemUs
IGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSkpOwogCiAgICAgLy8gVGlsZSBpZiBib3RoIGRpbWVu
c2lvbnMgbGFyZ2UsIG9yIGFueSBvbmUgZGltZW5zaW9uIGxhcmdlIGFuZCB0aGUgb3RoZXIKICAg
ICAvLyBleHRlbmRzIGludG8gYSBzZWNvbmQgdGlsZS4gVGhpcyBoZXVyaXN0aWMgYWxsb3dzIGZv
ciBsb25nIHNraW5ueSBsYXllcnMKQEAgLTk3LDggKzk2LDcgQEAgdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9uKCkKICAgICBlbHNlCiAgICAgICAg
IGlzVGlsZWQgPSBhdXRvVGlsZWQ7CiAKLSAgICAvLyBFbXB0eSB0aWxlIHNpemUgdGVsbHMgdGhl
IHRpbGVyIHRvIGF2b2lkIHRpbGluZy4KLSAgICBJbnRTaXplIHJlcXVlc3RlZFNpemUgPSBpc1Rp
bGVkID8gdGlsZVNpemUgOiBJbnRTaXplKCk7CisgICAgSW50U2l6ZSByZXF1ZXN0ZWRTaXplID0g
aXNUaWxlZCA/IHRpbGVTaXplIDogY29udGVudEJvdW5kcygpOwogICAgIGNvbnN0IGludCBtYXhT
aXplID0gbGF5ZXJSZW5kZXJlcigpLT5tYXhUZXh0dXJlU2l6ZSgpOwogICAgIEludFNpemUgY2xh
bXBlZFNpemUgPSByZXF1ZXN0ZWRTaXplLnNocnVua1RvKEludFNpemUobWF4U2l6ZSwgbWF4U2l6
ZSkpOwogICAgIG1fdGlsZXItPnNldFRpbGVTaXplKGNsYW1wZWRTaXplKTsKQEAgLTEyOCw3ICsx
MjYsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGlsZXJJZk5lZWRlZCgpCiAg
ICAgbV90aWxlciA9IExheWVyVGlsZXJDaHJvbWl1bTo6Y3JlYXRlKAogICAgICAgICBsYXllclJl
bmRlcmVyKCksCiAgICAgICAgIEludFNpemUoZGVmYXVsdFRpbGVTaXplLCBkZWZhdWx0VGlsZVNp
emUpLAotICAgICAgICBtX2JvcmRlclRleGVscyA/IExheWVyVGlsZXJDaHJvbWl1bTo6SGFzQm9y
ZGVyVGV4ZWxzIDogTGF5ZXJUaWxlckNocm9taXVtOjpOb0JvcmRlclRleGVscyk7CisgICAgICAg
IExheWVyVGlsZXJDaHJvbWl1bTo6SGFzQm9yZGVyVGV4ZWxzKTsKIH0KIAogdm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKQpAQCAtMTQ0LDcgKzE0Miw2
IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0aW9u
IHRpbGluZ09wdGlvbikKIAogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnNldElzTWFzayhib29s
IGlzTWFzaykKIHsKLSAgICBtX2JvcmRlclRleGVscyA9ICFpc01hc2s7CiAgICAgc2V0VGlsaW5n
T3B0aW9uKGlzTWFzayA/IE5ldmVyVGlsZSA6IEF1dG9UaWxlKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uaAppbmRleCA3ODhhZGM3ZjEwOGFhNmEyNWNiM2Q0Y2Y4Y2QxNDkzMGU2NDY0
MTU3Li4yZjQzNjliNjQwMzgzODUxNzBjNzcxNDMyZmQ3YTFlYzI3MjJjZjk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uaApAQCAtNzMsNyArNzMsNiBAQCBwcml2YXRlOgogICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHRpbGluZ1RyYW5zZm9ybSgpIGNvbnN0OwogCiAgICAgVGlsaW5nT3B0
aW9uIG1fdGlsaW5nT3B0aW9uOwotICAgIGJvb2wgbV9ib3JkZXJUZXhlbHM7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5j
cHAKaW5kZXggMTEzYmRlMGIyMTM4ZjkxZDc3MmQzZmQ1MWI4YzEzYjQwNmY5OGEyOS4uZmY3MDhj
NzNkNmMzYTg4Y2RkZjAyYzA3MjNiYmFkZTMxYzMwMDRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcApAQCAtNDQsMTIgKzQ0
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGludCBjb21wdXRlTnVtVGlsZXMo
aW50IG1heFRleHR1cmVTaXplLCBpbnQgdG90YWxTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKQogewot
ICAgIGludCB0b3RhbFNpemVXaXRoQm9yZGVyID0gdG90YWxTaXplICsgMiAqIGJvcmRlclRleGVs
czsKLQogICAgIGlmIChtYXhUZXh0dXJlU2l6ZSAtIDIgKiBib3JkZXJUZXhlbHMgPD0gMCkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiB0b3RhbFNpemUgPiAwICYmIG1heFRleHR1
cmVTaXplID49IHRvdGFsU2l6ZSA/IDEgOiAwOwogCi0gICAgaW50IG51bVRpbGVzID0gbWF4KDEs
IDEgKyAodG90YWxTaXplV2l0aEJvcmRlciAtIDEgLSAyICogYm9yZGVyVGV4ZWxzKSAvIChtYXhU
ZXh0dXJlU2l6ZSAtIDIgKiBib3JkZXJUZXhlbHMpKTsKKyAgICBpbnQgbnVtVGlsZXMgPSBtYXgo
MSwgMSArICh0b3RhbFNpemUgLSAxIC0gMiAqIGJvcmRlclRleGVscykgLyAobWF4VGV4dHVyZVNp
emUgLSAyICogYm9yZGVyVGV4ZWxzKSk7CiAgICAgcmV0dXJuIHRvdGFsU2l6ZSA+IDAgPyBudW1U
aWxlcyA6IDA7CiB9CiAKQEAgLTgxLDcgKzc5LDcgQEAgaW50IFRpbGluZ0RhdGE6OnRpbGVYSW5k
ZXhGcm9tU3JjQ29vcmQoaW50IHNyY1BvcykgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICBBU1NFUlQobV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBtX2JvcmRlclRleGVscyk7Ci0gICAgaW50
IHggPSBzcmNQb3MgLyAobV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBtX2JvcmRlclRleGVscyk7Cisg
ICAgaW50IHggPSAoc3JjUG9zIC0gbV9ib3JkZXJUZXhlbHMpIC8gKG1fbWF4VGV4dHVyZVNpemUg
LSAyICogbV9ib3JkZXJUZXhlbHMpOwogICAgIHJldHVybiBtaW4obWF4KHgsIDApLCBudW1UaWxl
c1goKSAtIDEpOwogfQogCkBAIC05MSw3ICs4OSw3IEBAIGludCBUaWxpbmdEYXRhOjp0aWxlWUlu
ZGV4RnJvbVNyY0Nvb3JkKGludCBzcmNQb3MpIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgQVNTRVJUKG1fbWF4VGV4dHVyZVNpemUgLSAyICogbV9ib3JkZXJUZXhlbHMpOwotICAgIGlu
dCB5ID0gc3JjUG9zIC8gKG1fbWF4VGV4dHVyZVNpemUgLSAyICogbV9ib3JkZXJUZXhlbHMpOwor
ICAgIGludCB5ID0gKHNyY1BvcyAtIG1fYm9yZGVyVGV4ZWxzKSAvIChtX21heFRleHR1cmVTaXpl
IC0gMiAqIG1fYm9yZGVyVGV4ZWxzKTsKICAgICByZXR1cm4gbWluKG1heCh5LCAwKSwgbnVtVGls
ZXNZKCkgLSAxKTsKIH0KIApAQCAtMTM0LDE2ICsxMzIsNiBAQCBJbnRSZWN0IFRpbGluZ0RhdGE6
OnRpbGVCb3VuZHNXaXRoQm9yZGVyKGludCB0aWxlKSBjb25zdAogICAgIHJldHVybiBib3VuZHM7
CiB9CiAKLUludFJlY3QgVGlsaW5nRGF0YTo6dGlsZUJvdW5kc1dpdGhPdXRlckJvcmRlcihpbnQg
dGlsZSkgY29uc3QKLXsKLSAgICBJbnRSZWN0IGJvdW5kcyA9IHRpbGVCb3VuZHModGlsZSk7Ci0K
LSAgICBpZiAobV9ib3JkZXJUZXhlbHMpCi0gICAgICAgIGJvdW5kcy5pbmZsYXRlKDEpOwotCi0g
ICAgcmV0dXJuIGJvdW5kczsKLX0KLQogRmxvYXRSZWN0IFRpbGluZ0RhdGE6OnRpbGVCb3VuZHNO
b3JtYWxpemVkKGludCB0aWxlKSBjb25zdAogewogICAgIGFzc2VydFRpbGUodGlsZSk7CkBAIC0x
ODAsNiArMTY4LDggQEAgaW50IFRpbGluZ0RhdGE6OnRpbGVTaXplWChpbnQgeEluZGV4KSBjb25z
dAogCiAgICAgaWYgKCF4SW5kZXggJiYgbV9udW1UaWxlc1ggPT0gMSkKICAgICAgICAgcmV0dXJu
IG1fdG90YWxTaXplWDsKKyAgICBpZiAoIXhJbmRleCAmJiBtX251bVRpbGVzWCA+IDEpCisgICAg
ICAgIHJldHVybiBtX21heFRleHR1cmVTaXplIC0gbV9ib3JkZXJUZXhlbHM7CiAgICAgaWYgKHhJ
bmRleCA8IG51bVRpbGVzWCgpIC0gMSkKICAgICAgICAgcmV0dXJuIG1fbWF4VGV4dHVyZVNpemUg
LSAyICogbV9ib3JkZXJUZXhlbHM7CiAgICAgaWYgKHhJbmRleCA9PSBudW1UaWxlc1goKSAtIDEp
CkBAIC0xOTUsNiArMTg1LDggQEAgaW50IFRpbGluZ0RhdGE6OnRpbGVTaXplWShpbnQgeUluZGV4
KSBjb25zdAogCiAgICAgaWYgKCF5SW5kZXggJiYgbV9udW1UaWxlc1kgPT0gMSkKICAgICAgICAg
cmV0dXJuIG1fdG90YWxTaXplWTsKKyAgICBpZiAoIXlJbmRleCAmJiBtX251bVRpbGVzWSA+IDEp
CisgICAgICAgIHJldHVybiBtX21heFRleHR1cmVTaXplIC0gbV9ib3JkZXJUZXhlbHM7CiAgICAg
aWYgKHlJbmRleCA8IG51bVRpbGVzWSgpIC0gMSkKICAgICAgICAgcmV0dXJuIG1fbWF4VGV4dHVy
ZVNpemUgLSAyICogbV9ib3JkZXJUZXhlbHM7CiAgICAgaWYgKHlJbmRleCA9PSBudW1UaWxlc1ko
KSAtIDEpCkBAIC0yMzgsOCArMjMwLDggQEAgdm9pZCBUaWxpbmdEYXRhOjppbnRlcnNlY3REcmF3
UXVhZChjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHMKIAogICAg
ICpuZXdTcmMgPSBzcmNSZWN0SW50ZXJzZWN0ZWQ7CiAgICAgbmV3U3JjLT5tb3ZlKAotICAgICAg
ICAtdGlsZUJvdW5kcy54KCkgKyBtX2JvcmRlclRleGVscywKLSAgICAgICAgLXRpbGVCb3VuZHMu
eSgpICsgbV9ib3JkZXJUZXhlbHMpOworICAgICAgICAtdGlsZUJvdW5kcy54KCkgKyAoKHRpbGVY
SW5kZXgodGlsZSkgPiAwKSA/IG1fYm9yZGVyVGV4ZWxzIDogMCksCisgICAgICAgIC10aWxlQm91
bmRzLnkoKSArICgodGlsZVlJbmRleCh0aWxlKSA+IDApID8gbV9ib3JkZXJUZXhlbHMgOiAwKSk7
CiAKICAgICAqbmV3RHN0ID0gRmxvYXRSZWN0KAogICAgICAgICBzcmNSZWN0SW50ZXJzZWN0ZWRO
b3JtWCAqIGRzdFJlY3Qud2lkdGgoKSArIGRzdFJlY3QueCgpLApAQCAtMjQ4LDkgKzI0MCwxMiBA
QCB2b2lkIFRpbGluZ0RhdGE6OmludGVyc2VjdERyYXdRdWFkKGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkcwogICAgICAgICBzcmNSZWN0SW50ZXJzZWN0ZWROb3Jt
SCAqIGRzdFJlY3QuaGVpZ2h0KCkpOwogfQogCi1JbnRQb2ludCBUaWxpbmdEYXRhOjp0ZXh0dXJl
T2Zmc2V0KCkgY29uc3QKK0ludFBvaW50IFRpbGluZ0RhdGE6OnRleHR1cmVPZmZzZXQoaW50IHhJ
bmRleCwgaW50IHlJbmRleCkgY29uc3QKIHsKLSAgICByZXR1cm4gSW50UG9pbnQobV9ib3JkZXJU
ZXhlbHMsIG1fYm9yZGVyVGV4ZWxzKTsKKyAgICBpbnQgbGVmdCA9ICgheEluZGV4IHx8IG1fbnVt
VGlsZXNYID09IDEpID8gMCA6IG1fYm9yZGVyVGV4ZWxzOworICAgIGludCB0b3AgPSAoIXlJbmRl
eCB8fCBtX251bVRpbGVzWSA9PSAxKSA/IDAgOiBtX2JvcmRlclRleGVsczsKKworICAgIHJldHVy
biBJbnRQb2ludChsZWZ0LCB0b3ApOwogfQogCiB2b2lkIFRpbGluZ0RhdGE6OnJlY29tcHV0ZU51
bVRpbGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9UaWxpbmdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGls
aW5nRGF0YS5oCmluZGV4IDQzYjA4ZTIyODc0M2E4ZGJlM2E5Y2UxNTk5ZTIzNDMwMzI1MzVjYWMu
LjNkYWJiNWRlYzMzMDZlN2UyNjMxNDA1YmRjMmMzNGU5NTJkNDIwMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuaApAQCAtNjEsNyAr
NjEsNiBAQCBwdWJsaWM6CiAKICAgICBJbnRSZWN0IHRpbGVCb3VuZHMoaW50IHRpbGUpIGNvbnN0
OwogICAgIEludFJlY3QgdGlsZUJvdW5kc1dpdGhCb3JkZXIoaW50IHRpbGUpIGNvbnN0OwotICAg
IEludFJlY3QgdGlsZUJvdW5kc1dpdGhPdXRlckJvcmRlcihpbnQgdGlsZSkgY29uc3Q7CiAgICAg
RmxvYXRSZWN0IHRpbGVCb3VuZHNOb3JtYWxpemVkKGludCB0aWxlKSBjb25zdDsKICAgICBpbnQg
dGlsZVBvc2l0aW9uWChpbnQgeEluZGV4KSBjb25zdDsKICAgICBpbnQgdGlsZVBvc2l0aW9uWShp
bnQgeUluZGV4KSBjb25zdDsKQEAgLTc1LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW50
ZXJzZWN0RHJhd1F1YWQoY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGludCB0aWxlLCBGbG9hdFJlY3QqIG5ld1NyYywgRmxvYXRSZWN0KiBuZXdEc3Qp
IGNvbnN0OwogCiAgICAgLy8gRGlmZmVyZW5jZSBiZXR3ZWVuIHRpbGVCb3VuZCdzIGFuZCB0aWxl
Qm91bmRXaXRoQm9yZGVyJ3MgbG9jYXRpb24oKS4KLSAgICBJbnRQb2ludCB0ZXh0dXJlT2Zmc2V0
KCkgY29uc3Q7CisgICAgSW50UG9pbnQgdGV4dHVyZU9mZnNldChpbnQgeEluZGV4LCBpbnQgeUlu
ZGV4KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBUaWxpbmdEYXRhKCkgOiBtX21heFRleHR1cmVT
aXplKDApLCBtX3RvdGFsU2l6ZVgoMCksIG1fdG90YWxTaXplWSgwKSB7fQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCAzYTgzMWIzN2Q1M2YxYmVhZTc5NWViNTYxMGRkYTIxYTExZjhkZGY5
Li5kMDIwMGYxOTMwMTg5YmY0YmJmMDExYjY4NGM4NmVmMDJkZTQ5N2M5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTA3LTIxICBEYXZpZCBSZXZlbWFu
ICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBSZW1vdmUgb3V0
ZXIgYm9yZGVyIGZyb20gVGlsaW5nRGF0YSBhcyBpdCdzIG5vIGxvbmdlciBuZWVkZWQgYnkgbGF5
ZXIgY29tcG9zaXRvciBmb3IgYW50aS1hbGlhc2luZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9UaWxpbmdEYXRhVGVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMS0wNy0yNSAgQWwgUGF0cmljayAgPGFwYXRyaWNr
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmVkIHN1cHBvcnQgZm9yIHRoZSBHTF9sYXRj
aF9DSFJPTUlVTSBleHRlbnNpb24gd2hpY2ggQ2hyb21pdW0gbm8gbG9uZ2VyIHN1cHBvcnRzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxpbmdEYXRhVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGluZ0RhdGFUZXN0LmNwcAppbmRl
eCBkZGVmMGI5ODIyMzFmMjgwN2E0N2RjOTAzMjNkYmE0NTQ2YzM4OTY4Li43NjJlZGE5Mzk5MTUw
ZWJlNGM5NzE5NDZhNzRlNTdjMzlhM2I1ZGQ1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1RpbGluZ0RhdGFUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1RpbGluZ0RhdGFUZXN0LmNwcApAQCAtNDEsMTAgKzQxLDEwIEBAIG5hbWVzcGFj
ZSB7CiBURVNUKFRpbGluZ0RhdGFUZXN0LCBudW1UaWxlc19Ob1RpbGluZykKIHsKICAgICBFWFBF
Q1RfRVEoMSwgVGlsaW5nRGF0YSgxNiwgMTYsIDE2LCBmYWxzZSkubnVtVGlsZXMoKSk7Ci0gICAg
RVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMTcsIDE1LCAxNSwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0g
ICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMTgsIDE2LCAxNiwgdHJ1ZSkubnVtVGlsZXMoKSk7
CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMTYsIDE1LCAxNSwgdHJ1ZSkubnVtVGlsZXMo
KSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMTYsIDE2LCAxNiwgdHJ1ZSkubnVtVGls
ZXMoKSk7CiAgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMTYsICAxLCAxNiwgZmFsc2UpLm51
bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE3LCAxNSwgMTUsIHRydWUp
Lm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE1LCAxNSwgMTUsIHRy
dWUpLm51bVRpbGVzKCkpOwogfQogCiBURVNUKFRpbGluZ0RhdGFUZXN0LCBudW1UaWxlc19UaWxp
bmdOb0JvcmRlcnMpCkBAIC0xMDksNDUgKzEwOSw0NSBAQCBURVNUKFRpbGluZ0RhdGFUZXN0LCBu
dW1UaWxlc19UaWxpbmdXaXRoQm9yZGVycykKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgt
MSwgMSwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRh
KDAsICAxLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7CiAKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5n
RGF0YSgxLCAgMSwgIDEsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxp
bmdEYXRhKDEsICAxLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7CiAgICAgRVhQRUNUX0VRKDAsIFRp
bGluZ0RhdGEoMSwgIDEsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKICAgICBFWFBFQ1RfRVEoMCwg
VGlsaW5nRGF0YSgxLCAgMiwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgw
LCBUaWxpbmdEYXRhKDIsICAxLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VR
KDAsIFRpbGluZ0RhdGEoMiwgIDEsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1Rf
RVEoMCwgVGlsaW5nRGF0YSgyLCAgMiwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVD
VF9FUSgwLCBUaWxpbmdEYXRhKDIsICAyLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0KLSAgICBF
WFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgMSwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwotICAg
IEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsICAxLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0g
ICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgIDIsICAxLCB0cnVlKS5udW1UaWxlcygpKTsK
LSAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAgMiwgIDIsIHRydWUpLm51bVRpbGVzKCkp
OwotICAgIEVYUEVDVF9FUSg2LCBUaWxpbmdEYXRhKDMsICAyLCAgMywgdHJ1ZSkubnVtVGlsZXMo
KSk7Ci0gICAgRVhQRUNUX0VRKDYsIFRpbGluZ0RhdGEoMywgIDMsICAyLCB0cnVlKS5udW1UaWxl
cygpKTsKLSAgICBFWFBFQ1RfRVEoOSwgVGlsaW5nRGF0YSgzLCAgMywgIDMsIHRydWUpLm51bVRp
bGVzKCkpOwotCi0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwgIDEsICAyLCB0cnVlKS5u
dW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg0LCAgMiwgIDIsIHRydWUp
Lm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDQsICAzLCAgMiwgdHJ1
ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNCwgIDQsICAyLCB0
cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg0LCAgNSwgIDIs
IHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDQsICA2LCAg
MiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNCwgIDcs
ICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg0LCAg
OCwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDQs
ICA5LCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEo
NCwgMTAsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoNiwgVGlsaW5nRGF0
YSg0LCAxMSwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotCi0gICAgRVhQRUNUX0VRKDEsIFRpbGlu
Z0RhdGEoNSwgIDEsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGls
aW5nRGF0YSg1LCAgMiwgIDMsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgxLCBU
aWxpbmdEYXRhKDUsICAzLCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDIs
IFRpbGluZ0RhdGEoNSwgIDQsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEo
MiwgVGlsaW5nRGF0YSg1LCAgNSwgIDMsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9F
USgyLCBUaWxpbmdEYXRhKDUsICA2LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNU
X0VRKDMsIFRpbGluZ0RhdGEoNSwgIDcsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBF
Q1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgOCwgIDMsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVY
UEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA5LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAg
RVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgMTAsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAg
ICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAxMSwgIDMsIHRydWUpLm51bVRpbGVzKCkpOwor
ICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDIsICAxLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7
CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMiwgIDEsICAyLCB0cnVlKS5udW1UaWxlcygp
KTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgyLCAgMiwgIDEsIHRydWUpLm51bVRpbGVz
KCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDIsICAyLCAgMiwgdHJ1ZSkubnVtVGls
ZXMoKSk7CisKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgMSwgIDMsIHRydWUpLm51
bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAyLCAgMywgdHJ1ZSku
bnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgIDMsICAzLCB0cnVl
KS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAgNCwgIDMsIHRy
dWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsICA1LCAgMywg
dHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgIDYsICAz
LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSgzLCAgNywg
IDMsIHRydWUpLm51bVRpbGVzKCkpOworCisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwg
IDEsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg0
LCAgMiwgIDQsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRh
KDQsICAzLCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0Rh
dGEoNCwgIDQsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5n
RGF0YSg0LCAgNSwgIDQsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxp
bmdEYXRhKDQsICA2LCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDMsIFRp
bGluZ0RhdGEoNCwgIDcsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMywg
VGlsaW5nRGF0YSg0LCAgOCwgIDQsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSg0
LCBUaWxpbmdEYXRhKDQsICA5LCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VR
KDQsIFRpbGluZ0RhdGEoNCwgMTAsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1Rf
RVEoNSwgVGlsaW5nRGF0YSg0LCAxMSwgIDQsIHRydWUpLm51bVRpbGVzKCkpOworCisgICAgRVhQ
RUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwgIDEsICA1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBF
WFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgMiwgIDUsIHRydWUpLm51bVRpbGVzKCkpOworICAg
IEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICAzLCAgNSwgdHJ1ZSkubnVtVGlsZXMoKSk7Cisg
ICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwgIDQsICA1LCB0cnVlKS5udW1UaWxlcygpKTsK
KyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgNSwgIDUsIHRydWUpLm51bVRpbGVzKCkp
OworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDUsICA2LCAgNSwgdHJ1ZSkubnVtVGlsZXMo
KSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwgIDcsICA1LCB0cnVlKS5udW1UaWxl
cygpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSg1LCAgOCwgIDUsIHRydWUpLm51bVRp
bGVzKCkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA5LCAgNSwgdHJ1ZSkubnVt
VGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMTAsICA1LCB0cnVlKS5u
dW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMSwgIDUsIHRydWUp
Lm51bVRpbGVzKCkpOwogfQogCiBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlWEluZGV4RnJvbVNy
Y0Nvb3JkKQpAQCAtMTY2LDE3ICsxNjYsMTcgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgdGlsZVhJ
bmRleEZyb21TcmNDb29yZCkKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCAxMCwgMTAs
IGZhbHNlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDExKSk7CiAKICAgICBFWFBFQ1RfRVEoMCwg
VGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwot
ICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZy
b21TcmNDb29yZCgxKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0
cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDIpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5n
RGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMykpOwotICAgIEVY
UEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmND
b29yZCg0KSk7Ci0gICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50
aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDUpKTsKLSAgICBFWFBFQ1RfRVEoNiwgVGlsaW5nRGF0YSgz
LCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoNikpOwotICAgIEVYUEVDVF9F
USg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCg3
KSk7Ci0gICAgRVhQRUNUX0VRKDgsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWElu
ZGV4RnJvbVNyY0Nvb3JkKDgpKTsKLSAgICBFWFBFQ1RfRVEoOSwgVGlsaW5nRGF0YSgzLCAxMCwg
MTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoOSkpOwotICAgIEVYUEVDVF9FUSg5LCBU
aWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgxMCkpOwot
ICAgIEVYUEVDVF9FUSg5LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZy
b21TcmNDb29yZCgxMSkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwg
dHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgxKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGlu
Z0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDIpKTsKKyAgICBF
WFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3Jj
Q29vcmQoMykpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSku
dGlsZVhJbmRleEZyb21TcmNDb29yZCg0KSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEo
MywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDUpKTsKKyAgICBFWFBFQ1Rf
RVEoNSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQo
NikpOworICAgIEVYUEVDVF9FUSg2LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJ
bmRleEZyb21TcmNDb29yZCg3KSk7CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAs
IDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDgpKTsKKyAgICBFWFBFQ1RfRVEoNywg
VGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoOSkpOwor
ICAgIEVYUEVDVF9FUSg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZy
b21TcmNDb29yZCgxMCkpOworICAgIEVYUEVDVF9FUSg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwg
dHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgxMSkpOwogCiAgICAgRVhQRUNUX0VRKDAsIFRp
bGluZ0RhdGEoMSwgMSwgMSwgZmFsc2UpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwogICAg
IEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDIsIDIsIDIsIGZhbHNlKS50aWxlWEluZGV4RnJvbVNy
Y0Nvb3JkKDApKTsKQEAgLTE5NCwxMyArMTk0LDEzIEBAIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRp
bGVYSW5kZXhGcm9tU3JjQ29vcmQpCiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgMiwg
MiwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgwKSk7CiAgICAgRVhQRUNUX0VRKDAsIFRp
bGluZ0RhdGEoMiwgMiwgMiwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgxKSk7CiAgICAg
RVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmND
b29yZCgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMywgMywgdHJ1ZSkudGls
ZVhJbmRleEZyb21TcmNDb29yZCgxKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywg
MywgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgyKSk7CisgICAgRVhQRUNUX0VRKDAs
IFRpbGluZ0RhdGEoMywgMywgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgxKSk7Cisg
ICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21T
cmNDb29yZCgyKSk7CiAKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSg0LCA0LCAzLCB0cnVl
KS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDApKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0
YSg0LCA0LCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKLSAgICBFWFBFQ1Rf
RVEoMSwgVGlsaW5nRGF0YSg0LCA0LCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDIp
KTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg0LCA0LCAzLCB0cnVlKS50aWxlWEluZGV4
RnJvbVNyY0Nvb3JkKDMpKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCA0LCAzLCB0
cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDApKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5n
RGF0YSgzLCA0LCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKKyAgICBFWFBF
Q1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3Jk
KDIpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAzLCB0cnVlKS50aWxlWElu
ZGV4RnJvbVNyY0Nvb3JkKDMpKTsKIH0KIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVZSW5kZXhG
cm9tU3JjQ29vcmQpCiB7CkBAIC0yMTgsMTcgKzIxOCwxNyBAQCBURVNUKFRpbGluZ0RhdGFUZXN0
LCB0aWxlWUluZGV4RnJvbVNyY0Nvb3JkKQogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMs
IDEwLCAxMCwgZmFsc2UpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMTEpKTsKIAogICAgIEVYUEVD
VF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29y
ZCgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxl
WUluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAx
MCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMikpOwotICAgIEVYUEVDVF9FUSgz
LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgzKSk7
Ci0gICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4
RnJvbVNyY0Nvb3JkKDQpKTsKLSAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAs
IHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNSkpOwotICAgIEVYUEVDVF9FUSg2LCBUaWxp
bmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg2KSk7Ci0gICAg
RVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNy
Y0Nvb3JkKDcpKTsKLSAgICBFWFBFQ1RfRVEoOCwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUp
LnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoOCkpOwotICAgIEVYUEVDVF9FUSg5LCBUaWxpbmdEYXRh
KDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg5KSk7Ci0gICAgRVhQRUNU
X0VRKDksIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3Jk
KDEwKSk7Ci0gICAgRVhQRUNUX0VRKDksIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxl
WUluZGV4RnJvbVNyY0Nvb3JkKDExKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywg
MTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKKyAgICBFWFBFQ1RfRVEo
MSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMikp
OworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRl
eEZyb21TcmNDb29yZCgzKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAsIDEw
LCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDQpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGls
aW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNSkpOworICAg
IEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21T
cmNDb29yZCg2KSk7CisgICAgRVhQRUNUX0VRKDYsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVl
KS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDcpKTsKKyAgICBFWFBFQ1RfRVEoNywgVGlsaW5nRGF0
YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoOCkpOworICAgIEVYUEVD
VF9FUSg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29y
ZCg5KSk7CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxl
WUluZGV4RnJvbVNyY0Nvb3JkKDEwKSk7CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywg
MTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDExKSk7CiAKICAgICBFWFBFQ1Rf
RVEoMCwgVGlsaW5nRGF0YSgxLCAxLCAxLCBmYWxzZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgw
KSk7CiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgMiwgMiwgZmFsc2UpLnRpbGVZSW5k
ZXhGcm9tU3JjQ29vcmQoMCkpOwpAQCAtMjQ2LDYxICsyNDYsNjEgQEAgVEVTVChUaWxpbmdEYXRh
VGVzdCwgdGlsZVlJbmRleEZyb21TcmNDb29yZCkKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0
YSgyLCAyLCAyLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDApKTsKICAgICBFWFBFQ1Rf
RVEoMCwgVGlsaW5nRGF0YSgyLCAyLCAyLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDEp
KTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxlWUluZGV4
RnJvbVNyY0Nvb3JkKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0
cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5n
RGF0YSgzLCAzLCAzLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDIpKTsKKyAgICBFWFBF
Q1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3Jk
KDEpKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxlWUlu
ZGV4RnJvbVNyY0Nvb3JkKDIpKTsKIAotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDQsIDMs
IDQsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwotICAgIEVYUEVDVF9FUSgwLCBU
aWxpbmdEYXRhKDQsIDMsIDQsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkpOwotICAg
IEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDQsIDMsIDQsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3Jj
Q29vcmQoMikpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDQsIDMsIDQsIHRydWUpLnRp
bGVZSW5kZXhGcm9tU3JjQ29vcmQoMykpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMs
IDMsIDQsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMCkpOworICAgIEVYUEVDVF9FUSgw
LCBUaWxpbmdEYXRhKDMsIDMsIDQsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkpOwor
ICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDMsIDQsIHRydWUpLnRpbGVZSW5kZXhGcm9t
U3JjQ29vcmQoMikpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDMsIDQsIHRydWUp
LnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMykpOwogfQogCiBURVNUKFRpbGluZ0RhdGFUZXN0LCB0
aWxlU2l6ZVgpCiB7CiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDUsICA1LCBmYWxz
ZSkudGlsZVNpemVYKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgNSwgIDUs
IHRydWUpLnRpbGVTaXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDUs
ICA1LCB0cnVlKS50aWxlU2l6ZVgoMCkpOwogCiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEo
NSwgIDYsICA2LCBmYWxzZSkudGlsZVNpemVYKDApKTsKICAgICBFWFBFQ1RfRVEoMSwgVGlsaW5n
RGF0YSg1LCAgNiwgIDYsIGZhbHNlKS50aWxlU2l6ZVgoMSkpOwotICAgIEVYUEVDVF9FUSgzLCBU
aWxpbmdEYXRhKDUsICA2LCAgNiwgdHJ1ZSkudGlsZVNpemVYKDApKTsKLSAgICBFWFBFQ1RfRVEo
MywgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIHRydWUpLnRpbGVTaXplWCgxKSk7CisgICAgRVhQRUNU
X0VRKDQsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVY
UEVDVF9FUSgyLCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgdHJ1ZSkudGlsZVNpemVYKDEpKTsKIAog
ICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgZmFsc2UpLnRpbGVTaXplWCgw
KSk7CiAgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCBmYWxzZSkudGlsZVNp
emVYKDEpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIHRydWUpLnRp
bGVTaXplWCgwKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCB0cnVl
KS50aWxlU2l6ZVgoMSkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsICA4LCAgOCwg
dHJ1ZSkudGlsZVNpemVYKDApKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAgOCwg
IDgsIHRydWUpLnRpbGVTaXplWCgxKSk7CiAKICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1
LCAxMCwgMTAsIGZhbHNlKS50aWxlU2l6ZVgoMCkpOwogICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdE
YXRhKDUsIDEwLCAxMCwgZmFsc2UpLnRpbGVTaXplWCgxKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRp
bGluZ0RhdGEoNSwgMTAsIDEwLCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9FUSg0
LCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgdHJ1ZSkudGlsZVNpemVYKDApKTsKICAgICBFWFBFQ1Rf
RVEoMywgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIHRydWUpLnRpbGVTaXplWCgxKSk7CiAgICAgRVhQ
RUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCB0cnVlKS50aWxlU2l6ZVgoMikpOwogCi0g
ICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMTEsIDExLCB0cnVlKS50aWxlU2l6ZVgoMikp
OworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsIDExLCAxMSwgdHJ1ZSkudGlsZVNpemVY
KDIpKTsKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMiwgMTIsIHRydWUpLnRpbGVT
aXplWCgyKSk7CiB9CiBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlU2l6ZVkpCiB7CiAgICAgRVhQ
RUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDUsICA1LCBmYWxzZSkudGlsZVNpemVZKDApKTsKLSAg
ICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgNSwgIDUsIHRydWUpLnRpbGVTaXplWSgwKSk7
CisgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDUsICA1LCB0cnVlKS50aWxlU2l6ZVko
MCkpOwogCiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCBmYWxzZSkudGls
ZVNpemVZKDApKTsKICAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIGZhbHNl
KS50aWxlU2l6ZVkoMSkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA2LCAgNiwg
dHJ1ZSkudGlsZVNpemVZKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgNiwg
IDYsIHRydWUpLnRpbGVTaXplWSgxKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwg
IDYsICA2LCB0cnVlKS50aWxlU2l6ZVkoMCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRh
KDUsICA2LCAgNiwgdHJ1ZSkudGlsZVNpemVZKDEpKTsKIAogICAgIEVYUEVDVF9FUSg1LCBUaWxp
bmdEYXRhKDUsICA4LCAgOCwgZmFsc2UpLnRpbGVTaXplWSgwKSk7CiAgICAgRVhQRUNUX0VRKDMs
IFRpbGluZ0RhdGEoNSwgIDgsICA4LCBmYWxzZSkudGlsZVNpemVZKDEpKTsKLSAgICBFWFBFQ1Rf
RVEoMywgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIHRydWUpLnRpbGVTaXplWSgwKSk7Ci0gICAgRVhQ
RUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCB0cnVlKS50aWxlU2l6ZVkoMSkpOworICAg
IEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgdHJ1ZSkudGlsZVNpemVZKDApKTsK
KyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIHRydWUpLnRpbGVTaXplWSgx
KSk7CiAKICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIGZhbHNlKS50aWxl
U2l6ZVkoMCkpOwogICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgZmFsc2Up
LnRpbGVTaXplWSgxKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCB0
cnVlKS50aWxlU2l6ZVkoMCkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsIDEwLCAx
MCwgdHJ1ZSkudGlsZVNpemVZKDApKTsKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAx
MCwgMTAsIHRydWUpLnRpbGVTaXplWSgxKSk7CiAgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEo
NSwgMTAsIDEwLCB0cnVlKS50aWxlU2l6ZVkoMikpOwogCi0gICAgRVhQRUNUX0VRKDMsIFRpbGlu
Z0RhdGEoNSwgMTEsIDExLCB0cnVlKS50aWxlU2l6ZVkoMikpOworICAgIEVYUEVDVF9FUSg0LCBU
aWxpbmdEYXRhKDUsIDExLCAxMSwgdHJ1ZSkudGlsZVNpemVZKDIpKTsKICAgICBFWFBFQ1RfRVEo
MywgVGlsaW5nRGF0YSg1LCAxMiwgMTIsIHRydWUpLnRpbGVTaXplWSgyKSk7CiB9CiAKQEAgLTMx
OSwxMCArMzE5LDEwIEBAIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVTaXplWF9hbmRfdGlsZVBv
c2l0aW9uWCkKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAxLCAgIDEsIHRydWUpLnRp
bGVQb3NpdGlvblgoMCkpOwogICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEsIDEwMCwg
dHJ1ZSkudGlsZVNpemVYKDApKTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAxLCAx
MDAsIHRydWUpLnRpbGVQb3NpdGlvblgoMCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRh
KDUsIDMsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDApKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5n
RGF0YSg1LCAzLCAgIDEsIHRydWUpLnRpbGVQb3NpdGlvblgoMCkpOwotICAgIEVYUEVDVF9FUSgz
LCBUaWxpbmdEYXRhKDUsIDMsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDApKTsKLSAgICBFWFBFQ1Rf
RVEoMCwgVGlsaW5nRGF0YSg1LCAzLCAxMDAsIHRydWUpLnRpbGVQb3NpdGlvblgoMCkpOworICAg
IEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDMsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDApKTsK
KyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAgIDEsIHRydWUpLnRpbGVQb3NpdGlv
blgoMCkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDMsIDEwMCwgdHJ1ZSkudGls
ZVNpemVYKDApKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAxMDAsIHRydWUp
LnRpbGVQb3NpdGlvblgoMCkpOwogCiAgICAgLy8gTXVsdGlwbGUgdGlsZXM6CiAgICAgLy8gbm8g
Ym9yZGVyCkBAIC0zNDAsMjMgKzM0MCwyMyBAQCBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlU2l6
ZVhfYW5kX3RpbGVQb3NpdGlvblgpCiAgICAgLy8gTXVsdGlwbGUgdGlsZXM6CiAgICAgLy8gd2l0
aCBib3JkZXIKICAgICAvLyBwb3NpdGlvbnMgMCwgMiwgMywgNAotICAgIEVYUEVDVF9FUSg0LCBU
aWxpbmdEYXRhKDMsIDQsICAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDEs
IFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS50aWxlU2l6ZVgoMCkpOwotICAgIEVYUEVDVF9F
USgxLCBUaWxpbmdEYXRhKDMsIDQsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDEpKTsKLSAgICBFWFBF
Q1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAgIDEsIHRydWUpLnRpbGVTaXplWCgyKSk7Ci0gICAg
RVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS50aWxlU2l6ZVgoMykpOwot
ICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDQsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9u
WCgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS50aWxl
UG9zaXRpb25YKDEpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCA0LCAgIDEsIHRy
dWUpLnRpbGVQb3NpdGlvblgoMikpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDQs
ICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgzKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0Rh
dGEoMywgNCwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxp
bmdEYXRhKDMsIDQsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDEpKTsKLSAgICBFWFBFQ1RfRVEoMSwg
VGlsaW5nRGF0YSgzLCA0LCAxMDAsIHRydWUpLnRpbGVTaXplWCgyKSk7Ci0gICAgRVhQRUNUX0VR
KDEsIFRpbGluZ0RhdGEoMywgNCwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMykpOwotICAgIEVYUEVD
VF9FUSgwLCBUaWxpbmdEYXRhKDMsIDQsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7Ci0g
ICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25Y
KDEpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCA0LCAxMDAsIHRydWUpLnRpbGVQ
b3NpdGlvblgoMikpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDQsIDEwMCwgdHJ1
ZSkudGlsZVBvc2l0aW9uWCgzKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgNiwg
ICAxLCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCA2
LCAgIDEsIHRydWUpLnRpbGVTaXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEo
MywgNiwgICAxLCB0cnVlKS50aWxlU2l6ZVgoMSkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdE
YXRhKDMsIDYsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDIpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGls
aW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLnRpbGVTaXplWCgzKSk7CisgICAgRVhQRUNUX0VRKDAs
IFRpbGluZ0RhdGEoMywgNiwgICAxLCB0cnVlKS50aWxlUG9zaXRpb25YKDApKTsKKyAgICBFWFBF
Q1RfRVEoMiwgVGlsaW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLnRpbGVQb3NpdGlvblgoMSkpOwor
ICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDYsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9u
WCgyKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgNiwgICAxLCB0cnVlKS50aWxl
UG9zaXRpb25YKDMpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCA2LCAxMDAsIHRy
dWUpLnRpbGVTaXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNiwgMTAw
LCB0cnVlKS50aWxlU2l6ZVgoMSkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDYs
IDEwMCwgdHJ1ZSkudGlsZVNpemVYKDIpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgz
LCA2LCAxMDAsIHRydWUpLnRpbGVTaXplWCgzKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0Rh
dGEoMywgNiwgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25YKDApKTsKKyAgICBFWFBFQ1RfRVEoMiwg
VGlsaW5nRGF0YSgzLCA2LCAxMDAsIHRydWUpLnRpbGVQb3NpdGlvblgoMSkpOworICAgIEVYUEVD
VF9FUSgzLCBUaWxpbmdEYXRhKDMsIDYsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgyKSk7Cisg
ICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgNiwgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25Y
KDMpKTsKIH0KIAogVEVTVChUaWxpbmdEYXRhVGVzdCwgdGlsZVNpemVZX2FuZF90aWxlUG9zaXRp
b25ZKQpAQCAtMzc0LDEwICszNzQsMTAgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgdGlsZVNpemVZ
X2FuZF90aWxlUG9zaXRpb25ZKQogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsICAgMSwg
MSwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgwKSk7CiAgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEo
MywgMTAwLCAxLCB0cnVlKS50aWxlU2l6ZVkoMCkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdE
YXRhKDMsIDEwMCwgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgwKSk7Ci0gICAgRVhQRUNUX0VRKDMs
IFRpbGluZ0RhdGEoNSwgICAxLCAzLCB0cnVlKS50aWxlU2l6ZVkoMCkpOwotICAgIEVYUEVDVF9F
USgwLCBUaWxpbmdEYXRhKDUsICAgMSwgMywgdHJ1ZSkudGlsZVBvc2l0aW9uWSgwKSk7Ci0gICAg
RVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMTAwLCAzLCB0cnVlKS50aWxlU2l6ZVkoMCkpOwot
ICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDUsIDEwMCwgMywgdHJ1ZSkudGlsZVBvc2l0aW9u
WSgwKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgICAxLCAzLCB0cnVlKS50aWxl
U2l6ZVkoMCkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsICAgMSwgMywgdHJ1ZSku
dGlsZVBvc2l0aW9uWSgwKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAwLCAz
LCB0cnVlKS50aWxlU2l6ZVkoMCkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEw
MCwgMywgdHJ1ZSkudGlsZVBvc2l0aW9uWSgwKSk7CiAKICAgICAvLyBNdWx0aXBsZSB0aWxlczoK
ICAgICAvLyBubyBib3JkZXIKQEAgLTM5NSwyMyArMzk1LDIzIEBAIFRFU1QoVGlsaW5nRGF0YVRl
c3QsIHRpbGVTaXplWV9hbmRfdGlsZVBvc2l0aW9uWSkKICAgICAvLyBNdWx0aXBsZSB0aWxlczoK
ICAgICAvLyB3aXRoIGJvcmRlcgogICAgIC8vIHBvc2l0aW9ucyAwLCAyLCAzLCA0Ci0gICAgRVhQ
RUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgICAxLCA0LCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBF
WFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgIDEsIDQsIHRydWUpLnRpbGVTaXplWSgwKSk7Ci0g
ICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgICAxLCA0LCB0cnVlKS50aWxlU2l6ZVkoMSkp
OwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAgMSwgNCwgdHJ1ZSkudGlsZVNpemVZ
KDIpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgIDEsIDQsIHRydWUpLnRpbGVT
aXplWSgzKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgICAxLCA0LCB0cnVlKS50
aWxlUG9zaXRpb25ZKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgIDEsIDQs
IHRydWUpLnRpbGVQb3NpdGlvblkoMSkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMs
ICAgMSwgNCwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgyKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGlu
Z0RhdGEoMywgICAxLCA0LCB0cnVlKS50aWxlUG9zaXRpb25ZKDMpKTsKLSAgICBFWFBFQ1RfRVEo
MSwgVGlsaW5nRGF0YSgzLCAxMDAsIDQsIHRydWUpLnRpbGVTaXplWSgwKSk7Ci0gICAgRVhQRUNU
X0VRKDEsIFRpbGluZ0RhdGEoMywgMTAwLCA0LCB0cnVlKS50aWxlU2l6ZVkoMSkpOwotICAgIEVY
UEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwMCwgNCwgdHJ1ZSkudGlsZVNpemVZKDIpKTsKLSAg
ICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDQsIHRydWUpLnRpbGVTaXplWSgzKSk7
Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMTAwLCA0LCB0cnVlKS50aWxlUG9zaXRp
b25ZKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDQsIHRydWUpLnRp
bGVQb3NpdGlvblkoMSkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDEwMCwgNCwg
dHJ1ZSkudGlsZVBvc2l0aW9uWSgyKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywg
MTAwLCA0LCB0cnVlKS50aWxlUG9zaXRpb25ZKDMpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5n
RGF0YSgzLCAgIDEsIDYsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxp
bmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkudGlsZVNpemVZKDApKTsKKyAgICBFWFBFQ1RfRVEoMSwg
VGlsaW5nRGF0YSgzLCAgIDEsIDYsIHRydWUpLnRpbGVTaXplWSgxKSk7CisgICAgRVhQRUNUX0VR
KDEsIFRpbGluZ0RhdGEoMywgICAxLCA2LCB0cnVlKS50aWxlU2l6ZVkoMikpOworICAgIEVYUEVD
VF9FUSgyLCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkudGlsZVNpemVZKDMpKTsKKyAgICBF
WFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAgIDEsIDYsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkp
OworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkudGlsZVBvc2l0
aW9uWSgxKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgICAxLCA2LCB0cnVlKS50
aWxlUG9zaXRpb25ZKDIpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAgIDEsIDYs
IHRydWUpLnRpbGVQb3NpdGlvblkoMykpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMs
IDEwMCwgNiwgdHJ1ZSkudGlsZVNpemVZKDApKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0
YSgzLCAxMDAsIDYsIHRydWUpLnRpbGVTaXplWSgxKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGlu
Z0RhdGEoMywgMTAwLCA2LCB0cnVlKS50aWxlU2l6ZVkoMikpOworICAgIEVYUEVDVF9FUSgyLCBU
aWxpbmdEYXRhKDMsIDEwMCwgNiwgdHJ1ZSkudGlsZVNpemVZKDMpKTsKKyAgICBFWFBFQ1RfRVEo
MCwgVGlsaW5nRGF0YSgzLCAxMDAsIDYsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOworICAgIEVY
UEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDEwMCwgNiwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgxKSk7
CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAwLCA2LCB0cnVlKS50aWxlUG9zaXRp
b25ZKDIpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAxMDAsIDYsIHRydWUpLnRp
bGVQb3NpdGlvblkoMykpOwogfQogCiBURVNUKFRpbGluZ0RhdGFUZXN0LCBzZXRUb3RhbFNpemUp
CkBAIC00NjgsNyArNDY4LDcgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgc2V0TWF4VGV4dHVyZVNp
emVOb0JvcmRlcnMpCiAKIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHNldE1heFRleHR1cmVTaXplQm9y
ZGVycykKIHsKLSAgICBUaWxpbmdEYXRhIGRhdGEoOCwgMTYsIDMwLCB0cnVlKTsKKyAgICBUaWxp
bmdEYXRhIGRhdGEoOCwgMTYsIDMyLCB0cnVlKTsKICAgICBFWFBFQ1RfRVEoMywgZGF0YS5udW1U
aWxlc1goKSk7CiAgICAgRVhQRUNUX0VRKDUsIGRhdGEubnVtVGlsZXNZKCkpOwogCkBAIC00ODQs
NyArNDg0LDcgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgc2V0TWF4VGV4dHVyZVNpemVCb3JkZXJz
KQogCiAgICAgZGF0YS5zZXRNYXhUZXh0dXJlU2l6ZSg1KTsKICAgICBFWFBFQ1RfRVEoNSwgZGF0
YS5tYXhUZXh0dXJlU2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVEoNiwgZGF0YS5udW1UaWxlc1goKSk7
CisgICAgRVhQRUNUX0VRKDUsIGRhdGEubnVtVGlsZXNYKCkpOwogICAgIEVYUEVDVF9FUSgxMCwg
ZGF0YS5udW1UaWxlc1koKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102296</attachid>
            <date>2011-07-28 14:02:07 -0700</date>
            <delta_ts>2011-08-01 11:20:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64942-20110728170206.patch</filename>
            <type>text/plain</type>
            <size>76465</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE5NDYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5YTIyZmYzMGUzMjNjYmQ4NThlY2Y3
MjAwZWM4OTAyOTUwY2FmNDlhLi43NmNjN2MyMmE2Mzg3NWE3NjQ0NmQ4MzJjM2EzMjVkMDU5YmRm
ZTk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMjEgIERhdmlkIFJldmVtYW4gIDxy
ZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFVzZSBlZGdlLWRpc3Rh
bmNlIG1ldGhvZCBmb3IgbGF5ZXIgYW50aS1hbGlhc2luZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGVkIHJlc3VsdHMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEt
MDctMjggIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgTmV3IGNocm9taXVtIGxpbnV4IHRleHQgcmVzdWx0cy4gIFRoZXNlIHJlc3VsdHMgdXNlZCB0
byBtYXRjaCB0aGUgWFAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCBiOTc0NjY5YzAzODY0NzI1NDdmZDEzNTU4NzNhZWMz
OThlYjgwNGRjLi41M2QxYTlhYjYxOTFlNWI2M2Y2OTQxZGFmZGNmNDc0NWZhZGY4YTQ3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50
eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMu
dHh0CkBAIC0yNzAwLDYgKzI3MDAsMjQgQEAgQlVHV0s1NTk2OCBHUFUgV0lOIERFQlVHIDogY29t
cG9zaXRpbmcvd2ViZ2wvd2ViZ2wtbm9ucHJlbXVsdGlwbGllZC1ibGVuZC5odG1sID0KIC8vIDIg
cGl4ZWwgc3RyZXRjaGluZyB3aGVuIHJlbmRlcmluZyBzb21lIHZpZGVvcyB3aXRoIHRoZSBHUFUg
KE5vdyBpdCdzIGZsYWt5KQogQlVHQ1I3NDEwMiBHUFUgTElOVVggOiBtZWRpYS92aWRlby1jb250
cm9scy1yZW5kZXJpbmcuaHRtbCA9IElNQUdFIFBBU1MKIAorQlVHV0s2NDk0MiA6IGNvbXBvc2l0
aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNvbG9yLW1hdGNoaW5nLmh0bWwgPSBJTUFHRQorQlVH
V0s2NDk0MiA6IGNvbXBvc2l0aW5nL2dlb21ldHJ5L2FuY2VzdG9yLW92ZXJmbG93LWNoYW5nZS5o
dG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3Np
dGlvbi5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21wb3NpdGluZy9nZW9tZXRyeS9sYXll
ci1kdWUtdG8tbGF5ZXItY2hpbGRyZW4tZGVlcC5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBj
b21wb3NpdGluZy9nZW9tZXRyeS9sYXllci1kdWUtdG8tbGF5ZXItY2hpbGRyZW4uaHRtbCA9IElN
QUdFCitCVUdXSzY0OTQyIDogY29tcG9zaXRpbmcvZ2VvbWV0cnkvdmVydGljYWwtc2Nyb2xsLWNv
bXBvc2l0ZWQuaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogY29tcG9zaXRpbmcvb3ZlcmZsb3cv
Zml4ZWQtcG9zaXRpb24tYW5jZXN0b3ItY2xpcC5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBj
b21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVjdGlvbi10cmFuc2l0aW9uLmh0bWwg
PSBJTUFHRQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3RyYW5zZm9ybS1p
bnNpZGUtcmVmbGVjdGlvbi5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21wb3NpdGluZy9z
aGFkb3dzL3NoYWRvdy1kcmF3aW5nLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0
aW5nL3RyYW5zaXRpb25zL3NjYWxlLXRyYW5zaXRpb24tbm8tc3RhcnQuaHRtbCA9IElNQUdFCitC
VUdXSzY0OTQyIDogbWVkaWEvdmlkZW8tdHJhbnNmb3JtZWQuaHRtbCA9IElNQUdFCitCVUdXSzY0
OTQyIDogbWVkaWEvdmlkZW8tem9vbS1jb250cm9scy5odG1sICA9IElNQUdFCitCVUdXSzY0OTQy
IDogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS10cmFu
c2Zvcm1lZC5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21w
b3NpdGluZy9odWdlLWxheWVyLXJvdGF0ZWQuaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogcGxh
dGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvcGVycGVuZGljdWxhci1sYXllci1zb3J0aW5nLmh0
bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL3Rp
bnktbGF5ZXItcm90YXRlZC5odG1sID0gSU1BR0UKKwogCiBCVUdDUjcyMjIzIDogbWVkaWEvdmlk
ZW8tZnJhbWUtYWNjdXJhdGUtc2Vlay5odG1sID0gSU1BR0UgUEFTUwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWM3ZjQzMTlmMDU1N2RjYjdiMmMzOTkwNjNlOGJkNzZmMzhjZmExMS4uN2IxMDFjODhjYmMxNDcw
YWExYWE0MzVlMzc3NWIwZDIwMTE3MWQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisy
MDExLTA3LTIxICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtXSBVc2UgZWRnZS1kaXN0YW5jZSBtZXRob2QgZm9yIGxheWVyIGFudGktYWxp
YXNpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDk0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVz
ZSBhbiBlZGdlIGRpc3RhbmNlIGJhc2VkIG1ldGhvZCBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IGxp
bmVhcgorICAgICAgICBmaWx0ZXJpbmcgbWV0aG9kIGZvciBwcm9kdWNpbmcgYW50aS1hbGlhc2Vk
IGVkZ2VzIG9uIDNEIHRyYW5zZm9ybWVkCisgICAgICAgIGxheWVycy4gVGhpcyByZW1vdmVzIHRo
ZSBvdXRlciBib3JkZXIgaGFuZGxpbmcgZnJvbSBUaWxpbmdEYXRhIGFzCisgICAgICAgIGl0J3Mg
bm8gbG9uZ2VyIG5lZWRlZCBmb3IgYW50aS1hbGlhc2luZy4KKworICAgICAgICBUZXN0czogcGxh
dGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvdGlueS1sYXllci1yb3RhdGVkLmh0bWwgKGV4aXN0
aW5nKQorICAgICAgICAgICAgICAgcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvaHVnZS1s
YXllci1yb3RhdGVkLmh0bWwgKGV4aXN0aW5nKQorICAgICAgICAgICAgICAgY29tcG9zaXRpbmcv
aW1hZ2VzL2NvbnRlbnQtaW1hZ2UtY2hhbmdlLmh0bWwgKGV4aXN0aW5nKQorICAgICAgICAgICAg
ICAgVGlsaW5nRGF0YVRlc3QgaW4gd2Via2l0X3VuaXRfdGVzdHMKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzY3JlZW5NYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6c2V0RHJhd1ZpZXdwb3J0UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OndpbmRvd01hdHJpeCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6RWRnZTo6RWRnZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclRpbGVyQ2hyb21pdW06OkVkZ2U6OmludGVyc2VjdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclRpbGVyQ2hyb21pdW06OnNldFRpbGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
VGlsZXJDaHJvbWl1bTo6dGlsZUxheWVyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRp
bGVyQ2hyb21pdW06OmludmFsaWRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGls
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGls
ZXJDaHJvbWl1bTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hy
b21pdW06Omdyb3dMYXllclRvQ29udGFpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVy
Q2hyb21pdW06OmRyYXdUaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21p
dW06OmRyYXdUZXh0dXJlZFF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNo
cm9taXVtOjpFZGdlOjpFZGdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1
bTo6RWRnZTo6eCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OkVkZ2U6
OnNldFgpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpFZGdlOjp5KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6RWRnZTo6c2V0WSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OkVkZ2U6OnopOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpFZGdlOjpzZXRaKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyVGlsZXJDaHJvbWl1bTo6RWRnZTo6dyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRp
bGVyQ2hyb21pdW06OkVkZ2U6OnNldFcpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNo
cm9taXVtOjpFZGdlOjpzY2FsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2hhZGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUG9z
VGV4VHJhbnNmb3JtOjpWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtOjppbml0KToKKyAgICAgICAgKFdlYkNv
cmU6OlZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclF1YWQ6OlZlcnRleFNoYWRlclF1YWQpOgorICAgICAg
ICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyUXVhZDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpW
ZXJ0ZXhTaGFkZXJRdWFkOjpnZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
Z21lbnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhOjpnZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGE6OmdldFNoYWRlclN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFRleEFscGhhQUFCaW5kaW5nOjpGcmFnbWVudFRleEFs
cGhhQUFCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4QWxwaGFBQUJpbmRp
bmc6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFB
QTo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdC
QVRleFN3aXp6bGVBbHBoYUFBOjpnZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpW
ZXJ0ZXhTaGFkZXJRdWFkOjptYXRyaXhMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0
ZXhTaGFkZXJRdWFkOjpwb2ludExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNo
YWRlclF1YWQ6OnZzVGV4VHJhbnNmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJh
Z21lbnRUZXhBbHBoYUFBQmluZGluZzo6YWxwaGFMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFnbWVudFRleEFscGhhQUFCaW5kaW5nOjpzYW1wbGVyTG9jYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZzo6ZnNUZXhUcmFuc2Zvcm1Mb2NhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFRleEFscGhhQUFCaW5kaW5nOjplZGdlTG9j
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OlRpbGVk
TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnVw
ZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlVGlsZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxl
ZExheWVyQ2hyb21pdW06OnNldElzTWFzayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1RpbGluZ0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU51bVRpbGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6OnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQp
OgorICAgICAgICAoV2ViQ29yZTo6VGlsaW5nRGF0YTo6dGlsZVlJbmRleEZyb21TcmNDb29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpUaWxpbmdEYXRhOjp0aWxlU2l6ZVgpOgorICAgICAgICAoV2Vi
Q29yZTo6VGlsaW5nRGF0YTo6dGlsZVNpemVZKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGluZ0Rh
dGE6OmludGVyc2VjdERyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6OnRl
eHR1cmVPZmZzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRh
Lmg6CisKIDIwMTEtMDctMjggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTMyMwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggNTQwMjA2ODJiMzIyYzExNmZm
NjYzZmQ4YzhhN2Q4YzEzMzMxMGQ5MS4uNzA5YzI2Nzk3YmEyODVhZmEyMzZmNTY2NTNmMmIwODlk
MWY3OGUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC05Niw2
ICs5NiwyMSBAQCBzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggb3J0aG9NYXRyaXgoZmxvYXQg
bGVmdCwgZmxvYXQgcmlnaHQsIGZsb2F0IGJvdHRvbSwgZgogICAgIHJldHVybiBvcnRobzsKIH0K
IAorc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IHNjcmVlbk1hdHJpeChpbnQgeCwgaW50IHks
IGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3Jl
ZW47CisKKyAgICAvLyBNYXAgdG8gdmlld3BvcnQuCisgICAgc2NyZWVuLnRyYW5zbGF0ZTNkKHgs
IHksIDApOworICAgIHNjcmVlbi5zY2FsZTNkKHdpZHRoLCBoZWlnaHQsIDApOworCisgICAgLy8g
TWFwIHgsIHkgYW5kIHogdG8gdW5pdCBzcXVhcmUuCisgICAgc2NyZWVuLnRyYW5zbGF0ZTNkKDAu
NSwgMC41LCAwLjUpOworICAgIHNjcmVlbi5zY2FsZTNkKDAuNSwgMC41LCAwLjUpOworCisgICAg
cmV0dXJuIHNjcmVlbjsKK30KKwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBtYXRyaXggaGFzIG5v
IHJvdGF0aW9uLCBza2V3IG9yIHBlcnNwZWN0aXZlIGNvbXBvbmVudHMgdG8gaXQuCiBzdGF0aWMg
Ym9vbCBpc1NjYWxlT3JUcmFuc2xhdGlvbihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbSkK
IHsKQEAgLTQ4Miw2ICs0OTcsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xh
eWVycyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCiAKICAgICAvLyBU
aGUgR0wgdmlld3BvcnQgY292ZXJzIHRoZSBlbnRpcmUgdmlzaWJsZSBhcmVhLCBpbmNsdWRpbmcg
dGhlIHNjcm9sbGJhcnMuCiAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT52aWV3
cG9ydCgwLCAwLCBtX3ZpZXdwb3J0VmlzaWJsZVJlY3Qud2lkdGgoKSwgbV92aWV3cG9ydFZpc2li
bGVSZWN0LmhlaWdodCgpKSk7CisgICAgbV93aW5kb3dNYXRyaXggPSBzY3JlZW5NYXRyaXgoMCwg
MCwgbV92aWV3cG9ydFZpc2libGVSZWN0LndpZHRoKCksIG1fdmlld3BvcnRWaXNpYmxlUmVjdC5o
ZWlnaHQoKSk7CiAKICAgICAvLyBCaW5kIHRoZSBjb21tb24gdmVydGV4IGF0dHJpYnV0ZXMgdXNl
ZCBmb3IgZHJhd2luZyBhbGwgdGhlIGxheWVycy4KICAgICBtX3NoYXJlZEdlb21ldHJ5LT5wcmVw
YXJlRm9yRHJhdygpOwpAQCAtMTEyMCw2ICsxMTM2LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnNldERyYXdWaWV3cG9ydFJlY3QoY29uc3QgSW50UmVjdCYgZHJhd1JlY3QsIGJvb2wg
ZmwKICAgICBlbHNlCiAgICAgICAgIG1fcHJvamVjdGlvbk1hdHJpeCA9IG9ydGhvTWF0cml4KGRy
YXdSZWN0LngoKSwgZHJhd1JlY3QubWF4WCgpLCBkcmF3UmVjdC55KCksIGRyYXdSZWN0Lm1heFko
KSk7CiAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBk
cmF3UmVjdC53aWR0aCgpLCBkcmF3UmVjdC5oZWlnaHQoKSkpOworICAgIG1fd2luZG93TWF0cml4
ID0gc2NyZWVuTWF0cml4KDAsIDAsIGRyYXdSZWN0LndpZHRoKCksIGRyYXdSZWN0LmhlaWdodCgp
KTsKIH0KIAogCkBAIC0xMjE5LDYgKzEyMzYsMjggQEAgY29uc3QgTGF5ZXJUaWxlckNocm9taXVt
OjpQcm9ncmFtU3dpenpsZSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1Td2kK
ICAgICByZXR1cm4gbV90aWxlclByb2dyYW1Td2l6emxlLmdldCgpOwogfQogCitjb25zdCBMYXll
clRpbGVyQ2hyb21pdW06OlByb2dyYW1BQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclBy
b2dyYW1BQSgpCit7CisgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbUFBKQorICAgICAgICBtX3RpbGVy
UHJvZ3JhbUFBID0gYWRvcHRQdHIobmV3IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbUFBKG1f
Y29udGV4dC5nZXQoKSkpOworICAgIGlmICghbV90aWxlclByb2dyYW1BQS0+aW5pdGlhbGl6ZWQo
KSkgeworICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclBy
b2dyYW1BQTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBtX3RpbGVyUHJvZ3JhbUFB
LT5pbml0aWFsaXplKCk7CisgICAgfQorICAgIHJldHVybiBtX3RpbGVyUHJvZ3JhbUFBLmdldCgp
OworfQorCitjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW1Td2l6emxlQUEqIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpenpsZUFBKCkKK3sKKyAgICBpZiAoIW1f
dGlsZXJQcm9ncmFtU3dpenpsZUFBKQorICAgICAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQSA9
IGFkb3B0UHRyKG5ldyBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW1Td2l6emxlQUEobV9jb250
ZXh0LmdldCgpKSk7CisgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQS0+aW5pdGlhbGl6
ZWQoKSkgeworICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxl
clByb2dyYW1Td2l6emxlQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgbV90aWxl
clByb2dyYW1Td2l6emxlQUEtPmluaXRpYWxpemUoKTsKKyAgICB9CisgICAgcmV0dXJuIG1fdGls
ZXJQcm9ncmFtU3dpenpsZUFBLmdldCgpOworfQorCiBjb25zdCBDQ0NhbnZhc0xheWVySW1wbDo6
UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjYW52YXNMYXllclByb2dyYW0oKQogewog
ICAgIGlmICghbV9jYW52YXNMYXllclByb2dyYW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oCmluZGV4IGNiMTQ0NzQ5NDdkNDNlNzhmNTNkMmRlOTI3YjVlNTFkMmZlMzZlMGIuLjA0
OGVlMDM4MjNmZGQ5MDlmNmQwZjQ1ZWZlOWU3NDQ2M2IyNDRhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMjIsNiArMTIyLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIGRlYnVnR0xDYWxsKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgY2hhciogY29tbWFu
ZCwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpOwogCiAgICAgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHByb2plY3Rpb25NYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX3Byb2plY3Rpb25N
YXRyaXg7IH0KKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgd2luZG93TWF0cml4KCkg
Y29uc3QgeyByZXR1cm4gbV93aW5kb3dNYXRyaXg7IH0KIAogICAgIGJvb2wgY2hlY2tUZXh0dXJl
U2l6ZShjb25zdCBJbnRTaXplJik7CiAgICAgaW50IG1heFRleHR1cmVTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXhUZXh0dXJlU2l6ZTsgfQpAQCAtMTMzLDYgKzEzNCw4IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21pdW06Ok1hc2tQcm9ncmFtKiByZW5kZXJTdXJmYWNl
TWFza1Byb2dyYW0oKTsKICAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0qIHRp
bGVyUHJvZ3JhbSgpOwogICAgIGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbVN3aXp6
bGUqIHRpbGVyUHJvZ3JhbVN3aXp6bGUoKTsKKyAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06
OlByb2dyYW1BQSogdGlsZXJQcm9ncmFtQUEoKTsKKyAgICBjb25zdCBMYXllclRpbGVyQ2hyb21p
dW06OlByb2dyYW1Td2l6emxlQUEqIHRpbGVyUHJvZ3JhbVN3aXp6bGVBQSgpOwogICAgIGNvbnN0
IENDQ2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFtKiBjYW52YXNMYXllclByb2dyYW0oKTsKICAgICBj
b25zdCBDQ1BsdWdpbkxheWVySW1wbDo6UHJvZ3JhbSogcGx1Z2luTGF5ZXJQcm9ncmFtKCk7CiAg
ICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dyYW0qIHZpZGVvTGF5ZXJSR0JBUHJv
Z3JhbSgpOwpAQCAtMjExLDYgKzIxNCw3IEBAIHByaXZhdGU6CiAgICAgSW50UG9pbnQgbV92aWV3
cG9ydFNjcm9sbFBvc2l0aW9uOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9wcm9qZWN0
aW9uTWF0cml4OworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fd2luZG93TWF0cml4OwogCiAg
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwogICAgIE93blB0cjxMYXllclRl
eHR1cmVVcGRhdGVyPiBtX3Jvb3RMYXllclRleHR1cmVVcGRhdGVyOwpAQCAtMjM5LDYgKzI0Myw4
IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6TWFza1Byb2dy
YW0+IG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtOwogICAgIE93blB0cjxMYXllclRpbGVyQ2hy
b21pdW06OlByb2dyYW0+IG1fdGlsZXJQcm9ncmFtOwogICAgIE93blB0cjxMYXllclRpbGVyQ2hy
b21pdW06OlByb2dyYW1Td2l6emxlPiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGU7CisgICAgT3duUHRy
PExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbUFBPiBtX3RpbGVyUHJvZ3JhbUFBOworICAgIE93
blB0cjxMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW1Td2l6emxlQUE+IG1fdGlsZXJQcm9ncmFt
U3dpenpsZUFBOwogICAgIE93blB0cjxDQ0NhbnZhc0xheWVySW1wbDo6UHJvZ3JhbT4gbV9jYW52
YXNMYXllclByb2dyYW07CiAgICAgT3duUHRyPENDVmlkZW9MYXllckltcGw6OlJHQkFQcm9ncmFt
PiBtX3ZpZGVvTGF5ZXJSR0JBUHJvZ3JhbTsKICAgICBPd25QdHI8Q0NWaWRlb0xheWVySW1wbDo6
WVVWUHJvZ3JhbT4gbV92aWRlb0xheWVyWVVWUHJvZ3JhbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hy
b21pdW0uY3BwCmluZGV4IGEwYmQxMDhhODI1NGVjOWUzNmE4M2QzNTliNWE1YTg1YzY3N2M3ZGIu
LjVlYTEzNjc5OGUwODY0MTBlY2UwYzBkMWRjYThmYjAwMjdjMzk2ZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUaWxlckNocm9taXVtLmNwcApAQCAtNDQsNyArNDQsMjYgQEAgdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIEZsb2F0UG9pbnQzRCBFZGdlOwor
TGF5ZXJUaWxlckNocm9taXVtOjpFZGdlOjpFZGdlKGNvbnN0IEZsb2F0UG9pbnQmIHAsIGNvbnN0
IEZsb2F0UG9pbnQmIHEpCit7CisgICAgQVNTRVJUKHAgIT0gcSk7CisKKyAgICBGbG9hdFBvaW50
IHRhbmdlbnQocC55KCkgLSBxLnkoKSwgcS54KCkgLSBwLngoKSk7CisgICAgZmxvYXQgc2NhbGUg
PSAxLjAgLyB0YW5nZW50Lmxlbmd0aCgpOworICAgIGZsb2F0IGNyb3NzMiA9IHAueCgpICogcS55
KCkgLSBxLngoKSAqIHAueSgpOworCisgICAgbV94ID0gdGFuZ2VudC54KCkgKiBzY2FsZTsKKyAg
ICBtX3kgPSB0YW5nZW50LnkoKSAqIHNjYWxlOworICAgIG1feiA9IGNyb3NzMiAqIHNjYWxlOwor
ICAgIG1fdyA9IDE7Cit9CisKK0Zsb2F0UG9pbnQgTGF5ZXJUaWxlckNocm9taXVtOjpFZGdlOjpp
bnRlcnNlY3QoY29uc3QgTGF5ZXJUaWxlckNocm9taXVtOjpFZGdlJiBhLCBjb25zdCBMYXllclRp
bGVyQ2hyb21pdW06OkVkZ2UmIGIpCit7CisgICAgcmV0dXJuIEZsb2F0UG9pbnQoCisgICAgICAg
IChhLm1feSAqIGIubV96IC0gYi5tX3kgKiBhLm1feikgLyAoYS5tX3ggKiBiLm1feSAtIGIubV94
ICogYS5tX3kpLAorICAgICAgICAoYS5tX3ggKiBiLm1feiAtIGIubV94ICogYS5tX3opIC8gKGIu
bV94ICogYS5tX3kgLSBhLm1feCAqIGIubV95KSk7Cit9CiAKIFBhc3NPd25QdHI8TGF5ZXJUaWxl
ckNocm9taXVtPiBMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZShMYXllclJlbmRlcmVyQ2hyb21p
dW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBCb3JkZXJUZXhlbE9w
dGlvbiBib3JkZXIpCiB7CkBAIC04NCw2ICsxMDMsNyBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1
bTo6c2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICByZXNldCgpOwogCiAgICAg
bV90aWxlU2l6ZSA9IHNpemU7CisgICAgbV90aWxpbmdEYXRhLnNldE1heFRleHR1cmVTaXplKG1h
eChzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKIH0KIAogTGF5ZXJUZXh0dXJlKiBMYXll
clRpbGVyQ2hyb21pdW06OmdldFNpbmdsZVRleHR1cmUoKQpAQCAtMTg5LDEzICsyMDksOSBAQCBJ
bnRSZWN0IExheWVyVGlsZXJDaHJvbWl1bTo6dGlsZUNvbnRlbnRSZWN0KGNvbnN0IFRpbGUqIHRp
bGUpIGNvbnN0CiBJbnRSZWN0IExheWVyVGlsZXJDaHJvbWl1bTo6dGlsZUxheWVyUmVjdChjb25z
dCBUaWxlKiB0aWxlKSBjb25zdAogewogICAgIGNvbnN0IGludCBpbmRleCA9IG1fdGlsaW5nRGF0
YS50aWxlSW5kZXgodGlsZS0+aSgpLCB0aWxlLT5qKCkpOwotICAgIHJldHVybiBtX3RpbGluZ0Rh
dGEudGlsZUJvdW5kc1dpdGhCb3JkZXIoaW5kZXgpOwotfQotCi1JbnRSZWN0IExheWVyVGlsZXJD
aHJvbWl1bTo6dGlsZVRleFJlY3QoY29uc3QgVGlsZSogdGlsZSkgY29uc3QKLXsKLSAgICBjb25z
dCBpbnQgaW5kZXggPSBtX3RpbGluZ0RhdGEudGlsZUluZGV4KHRpbGUtPmkoKSwgdGlsZS0+aigp
KTsKLSAgICByZXR1cm4gbV90aWxpbmdEYXRhLnRpbGVCb3VuZHNXaXRoT3V0ZXJCb3JkZXIoaW5k
ZXgpOworICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gbV90aWxpbmdEYXRhLnRpbGVCb3VuZHNXaXRo
Qm9yZGVyKGluZGV4KTsKKyAgICBsYXllclJlY3Quc2V0U2l6ZShtX3RpbGVTaXplKTsKKyAgICBy
ZXR1cm4gbGF5ZXJSZWN0OwogfQogCiB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6aW52YWxpZGF0
ZVJlY3QoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCkBAIC0yMDMsOSArMjE5LDYgQEAgdm9p
ZCBMYXllclRpbGVyQ2hyb21pdW06OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0KQogICAgIGlmIChjb250ZW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0RyYXcpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEludFNpemUgb2xkTGF5ZXJTaXplKG1fdGlsaW5nRGF0YS50
b3RhbFNpemVYKCksIG1fdGlsaW5nRGF0YS50b3RhbFNpemVZKCkpOwotICAgIGNvbnN0IEludFJl
Y3Qgb2xkTGF5ZXJSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBvbGRMYXllclNpemUpOwotCiAg
ICAgZ3Jvd0xheWVyVG9Db250YWluKGNvbnRlbnRSZWN0KTsKIAogICAgIC8vIERpcnR5IHJlY3Rz
IGFyZSBhbHdheXMgaW4gbGF5ZXIgc3BhY2UsIGFzIHRoZSBsYXllciBjb3VsZCBiZSByZXBvc2l0
aW9uZWQKQEAgLTIyMiwxMiArMjM1LDYgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmludmFs
aWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAgICAgICAgICAgSW50UmVj
dCBib3VuZCA9IHRpbGVMYXllclJlY3QodGlsZSk7CiAgICAgICAgICAgICBib3VuZC5pbnRlcnNl
Y3QobGF5ZXJSZWN0KTsKICAgICAgICAgICAgIHRpbGUtPm1fZGlydHlMYXllclJlY3QudW5pdGUo
Ym91bmQpOwotCi0gICAgICAgICAgICAvLyBJbnZhbGlkYXRlIG9sZCBsYXllciBhcmVhIHRvIGNs
ZWFyIGFueSBjb250ZW50cyBsZWZ0IGZyb20KLSAgICAgICAgICAgIC8vIHByZXZpb3VzIGxheWVy
IHNpemUuCi0gICAgICAgICAgICBJbnRSZWN0IG9sZEJvdW5kID0gdGlsZUxheWVyUmVjdCh0aWxl
KTsKLSAgICAgICAgICAgIG9sZEJvdW5kLmludGVyc2VjdChvbGRMYXllclJlY3QpOwotICAgICAg
ICAgICAgdGlsZS0+bV9kaXJ0eUxheWVyUmVjdC51bml0ZShvbGRCb3VuZCk7CiAgICAgICAgIH0K
ICAgICB9CiB9CkBAIC0yODQsNyArMjkxLDYgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgTGF5ZXJUZXh0dXIKICAg
ICAvLyBDcmVhdGUgdGlsZXMgYXMgbmVlZGVkLCBleHBhbmRpbmcgYSBkaXJ0eSByZWN0IHRvIGNv
bnRhaW4gYWxsCiAgICAgLy8gdGhlIGRpcnR5IHJlZ2lvbnMgY3VycmVudGx5IGJlaW5nIGRyYXdu
LgogICAgIEludFJlY3QgZGlydHlMYXllclJlY3Q7Ci0gICAgSW50U2l6ZSB0aWxlU2l6ZTsKICAg
ICBpbnQgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tOwogICAgIGNvbnRlbnRSZWN0VG9UaWxlSW5k
aWNlcyhjb250ZW50UmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKICAgICBmb3IgKGlu
dCBqID0gdG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CkBAIC0yOTMsMTkgKzI5OSwxNiBAQCB2b2lk
IExheWVyVGlsZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0LCBMYXllclRleHR1cgogICAgICAgICAgICAgaWYgKCF0aWxlKQogICAgICAgICAgICAg
ICAgIHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwogCi0gICAgICAgICAgICBJbnRTaXplIHRleFNp
emUgPSB0aWxlVGV4UmVjdCh0aWxlKS5zaXplKCk7Ci0gICAgICAgICAgICBpZiAoIXRpbGUtPnRl
eHR1cmUoKS0+aXNWYWxpZCh0ZXhTaXplLCBtX3RleHR1cmVGb3JtYXQpKQorICAgICAgICAgICAg
aWYgKCF0aWxlLT50ZXh0dXJlKCktPmlzVmFsaWQobV90aWxlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0
KSkKICAgICAgICAgICAgICAgICB0aWxlLT5tX2RpcnR5TGF5ZXJSZWN0ID0gdGlsZUxheWVyUmVj
dCh0aWxlKTsKIAotICAgICAgICAgICAgaWYgKCF0aWxlLT50ZXh0dXJlKCktPnJlc2VydmUodGV4
U2l6ZSwgbV90ZXh0dXJlRm9ybWF0KSkgeworICAgICAgICAgICAgaWYgKCF0aWxlLT50ZXh0dXJl
KCktPnJlc2VydmUobV90aWxlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KSkgewogICAgICAgICAgICAg
ICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXNldCgpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZGlydHlMYXll
clJlY3QudW5pdGUodGlsZS0+bV9kaXJ0eUxheWVyUmVjdCk7Ci0KLSAgICAgICAgICAgIHRpbGVT
aXplID0gdGlsZVNpemUuZXhwYW5kZWRUbyh0ZXhTaXplKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMzE4LDcgKzMyMSw3IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpwcmVwYXJlVG9VcGRh
dGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIExheWVyVGV4dHVyCiAgICAgaWYgKGRpcnR5
TGF5ZXJSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdGV4dHVyZVVwZGF0
ZXItPnByZXBhcmVUb1VwZGF0ZShtX3BhaW50UmVjdCwgdGlsZVNpemUsIG1fdGlsaW5nRGF0YS5i
b3JkZXJUZXhlbHMoKSk7CisgICAgdGV4dHVyZVVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShtX3Bh
aW50UmVjdCwgbV90aWxlU2l6ZSwgbV90aWxpbmdEYXRhLmJvcmRlclRleGVscygpKTsKIH0KIAog
dm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0ZVJlY3QoTGF5ZXJUZXh0dXJlVXBkYXRlciog
dGV4dHVyZVVwZGF0ZXIpCkBAIC0zNDMsOCArMzQ2LDcgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21p
dW06OnVwZGF0ZVJlY3QoTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIpCiAKICAg
ICAgICAgICAgIC8vIENhbGN1bGF0ZSBwYWdlLXNwYWNlIHJlY3RhbmdsZSB0byBjb3B5IGZyb20u
CiAgICAgICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3QgPSB0aWxlQ29udGVudFJlY3QodGlsZSk7
Ci0gICAgICAgICAgICBJbnRSZWN0IHRleFJlY3QgPSB0aWxlVGV4UmVjdCh0aWxlKTsKLSAgICAg
ICAgICAgIGNvbnN0IEludFBvaW50IGFuY2hvciA9IHRleFJlY3QubG9jYXRpb24oKTsKKyAgICAg
ICAgICAgIGNvbnN0IEludFBvaW50IGFuY2hvciA9IHNvdXJjZVJlY3QubG9jYXRpb24oKTsKICAg
ICAgICAgICAgIHNvdXJjZVJlY3QuaW50ZXJzZWN0KGxheWVyUmVjdFRvQ29udGVudFJlY3QodGls
ZS0+bV9kaXJ0eUxheWVyUmVjdCkpOwogICAgICAgICAgICAgLy8gUGFpbnQgcmVjdCBub3QgZ3Vh
cmFudGVlZCB0byBsaW5lIHVwIG9uIHRpbGUgYm91bmRhcmllcywgc28KICAgICAgICAgICAgIC8v
IG1ha2Ugc3VyZSB0aGF0IHNvdXJjZVJlY3QgZG9lc24ndCBleHRlbmQgb3V0c2lkZSBvZiBpdC4K
QEAgLTM5NCwxMiArMzk2LDIyIEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3KGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hCiAgICAgaWYgKG1f
c2tpcHNEcmF3IHx8ICFtX3RpbGVzLnNpemUoKSB8fCBjb250ZW50UmVjdC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIC8vIFVzZSBhbnRpLWFsaWFzaW5nIHByb2dyYW1zIHdoZW4g
Ym9yZGVyIHRleGVscyBhcmUgcHJlc2V0IGFuZCB0cmFuc2Zvcm0KKyAgICAvLyBpcyBub3QgYW4g
aW50ZWdlciB0cmFuc2xhdGlvbi4KKyAgICBib29sIHVzZUFBID0gKG1fdGlsaW5nRGF0YS5ib3Jk
ZXJUZXhlbHMoKSAmJiAhZ2xvYmFsVHJhbnNmb3JtLmlzSW50ZWdlclRyYW5zbGF0aW9uKCkpOwor
CiAgICAgc3dpdGNoIChtX3NhbXBsZWRUZXhlbEZvcm1hdCkgewogICAgIGNhc2UgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQToKLSAgICAgICAgZHJhd1RpbGVzKGNv
bnRlbnRSZWN0LCBnbG9iYWxUcmFuc2Zvcm0sIG9wYWNpdHksIGxheWVyUmVuZGVyZXIoKS0+dGls
ZXJQcm9ncmFtKCkpOworICAgICAgICBpZiAodXNlQUEpCisgICAgICAgICAgICBkcmF3VGlsZXMo
Y29udGVudFJlY3QsIGdsb2JhbFRyYW5zZm9ybSwgb3BhY2l0eSwgbGF5ZXJSZW5kZXJlcigpLT50
aWxlclByb2dyYW1BQSgpLCBsYXllclJlbmRlcmVyKCktPnRpbGVyUHJvZ3JhbUFBKCktPmZyYWdt
ZW50U2hhZGVyKCkuZnNUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpLCBsYXllclJlbmRlcmVyKCktPnRp
bGVyUHJvZ3JhbUFBKCktPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0aW9uKCkpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBkcmF3VGlsZXMoY29udGVudFJlY3QsIGdsb2JhbFRyYW5zZm9y
bSwgb3BhY2l0eSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW0oKSwgLTEsIC0xKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxG
b3JtYXRCR1JBOgotICAgICAgICBkcmF3VGlsZXMoY29udGVudFJlY3QsIGdsb2JhbFRyYW5zZm9y
bSwgb3BhY2l0eSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW1Td2l6emxlKCkpOworICAg
ICAgICBpZiAodXNlQUEpCisgICAgICAgICAgICBkcmF3VGlsZXMoY29udGVudFJlY3QsIGdsb2Jh
bFRyYW5zZm9ybSwgb3BhY2l0eSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW1Td2l6emxl
QUEoKSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW1Td2l6emxlQUEoKS0+ZnJhZ21lbnRT
aGFkZXIoKS5mc1RleFRyYW5zZm9ybUxvY2F0aW9uKCksIGxheWVyUmVuZGVyZXIoKS0+dGlsZXJQ
cm9ncmFtU3dpenpsZUFBKCktPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0aW9uKCkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBkcmF3VGlsZXMoY29udGVudFJlY3QsIGdsb2JhbFRyYW5z
Zm9ybSwgb3BhY2l0eSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW1Td2l6emxlKCksIC0x
LCAtMSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtNDExLDE3ICs0MjMsNyBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6
Z3Jvd0xheWVyVG9Db250YWluKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAgIC8vIEdy
b3cgdGhlIHRpbGUgYXJyYXkgdG8gY29udGFpbiB0aGlzIGNvbnRlbnQgcmVjdC4KICAgICBJbnRS
ZWN0IGxheWVyUmVjdCA9IGNvbnRlbnRSZWN0VG9MYXllclJlY3QoY29udGVudFJlY3QpOwogICAg
IEludFNpemUgcmVjdFNpemUgPSBJbnRTaXplKGxheWVyUmVjdC5tYXhYKCksIGxheWVyUmVjdC5t
YXhZKCkpOwotICAgIEludFNpemUgdGV4U2l6ZSA9IG1fdGlsZVNpemU7Ci0KLSAgICAvLyBVc2Ug
cmVjdCB3aXRoIGJvcmRlciB0ZXhlbHMgYXMgbWF4IHRleHR1cmUgc2l6ZSB3aGVuIHRpbGUgc2l6
ZQotICAgIC8vIGhhcyBub3QgYmVlbiBzcGVjaWZpZWQuCi0gICAgaWYgKHRleFNpemUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIHRleFNpemUgPSByZWN0U2l6ZTsKLSAgICAgICAgaWYgKG1fdGlsaW5n
RGF0YS5ib3JkZXJUZXhlbHMoKSkKLSAgICAgICAgICAgIHRleFNpemUuZXhwYW5kKDIsIDIpOwot
ICAgIH0KIAotICAgIG1fdGlsaW5nRGF0YS5zZXRNYXhUZXh0dXJlU2l6ZShtYXgodGV4U2l6ZS53
aWR0aCgpLCB0ZXhTaXplLmhlaWdodCgpKSk7CiAgICAgSW50U2l6ZSBvbGRMYXllclNpemUobV90
aWxpbmdEYXRhLnRvdGFsU2l6ZVgoKSwgbV90aWxpbmdEYXRhLnRvdGFsU2l6ZVkoKSk7CiAgICAg
SW50U2l6ZSBuZXdTaXplID0gcmVjdFNpemUuZXhwYW5kZWRUbyhvbGRMYXllclNpemUpOwogICAg
IG1fdGlsaW5nRGF0YS5zZXRUb3RhbFNpemUobmV3U2l6ZS53aWR0aCgpLCBuZXdTaXplLmhlaWdo
dCgpKTsKQEAgLTQzNiwzNSArNDM4LDEwIEBAIHN0YXRpYyBib29sIGlzQ0NXKGNvbnN0IEZsb2F0
UXVhZCYgcXVhZCkKICAgICByZXR1cm4gKHYxLngoKSAqIHYyLnkoKSAtIHYxLnkoKSAqIHYyLngo
KSkgPCAwOwogfQogCi1zdGF0aWMgRWRnZSBjb21wdXRlRWRnZShjb25zdCBGbG9hdFBvaW50JiBw
LCBjb25zdCBGbG9hdFBvaW50JiBxLCBmbG9hdCBzaWduKQotewotICAgIEFTU0VSVChwICE9IHEp
OwotCi0gICAgRmxvYXRQb2ludCB0YW5nZW50KHAueSgpIC0gcS55KCksIHEueCgpIC0gcC54KCkp
OwotICAgIGZsb2F0IHNjYWxlID0gc2lnbiAvIHRhbmdlbnQubGVuZ3RoKCk7Ci0gICAgZmxvYXQg
Y3Jvc3MyID0gcC54KCkgKiBxLnkoKSAtIHEueCgpICogcC55KCk7Ci0KLSAgICByZXR1cm4gRWRn
ZSh0YW5nZW50LngoKSAqIHNjYWxlLAotICAgICAgICAgICAgICAgIHRhbmdlbnQueSgpICogc2Nh
bGUsCi0gICAgICAgICAgICAgICAgY3Jvc3MyICogc2NhbGUpOwotfQotCi1zdGF0aWMgRmxvYXRQ
b2ludCBpbnRlcnNlY3QoY29uc3QgRWRnZSYgYSwgY29uc3QgRWRnZSYgYikKLXsKLSAgICByZXR1
cm4gRmxvYXRQb2ludCgKLSAgICAgICAgKGEueSgpICogYi56KCkgLSBiLnkoKSAqIGEueigpKSAv
IChhLngoKSAqIGIueSgpIC0gYi54KCkgKiBhLnkoKSksCi0gICAgICAgIChhLngoKSAqIGIueigp
IC0gYi54KCkgKiBhLnooKSkgLyAoYi54KCkgKiBhLnkoKSAtIGEueCgpICogYi55KCkpKTsKLX0K
LQogdGVtcGxhdGUgPGNsYXNzIFQ+Ci12b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RpbGVz
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
Z2xvYmFsVHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBUKiBwcm9ncmFtKQordm9pZCBM
YXllclRpbGVyQ2hyb21pdW06OmRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGdsb2JhbFRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0
eSwgY29uc3QgVCogcHJvZ3JhbSwgaW50IGZzVGV4VHJhbnNmb3JtTG9jYXRpb24sIGludCBlZGdl
TG9jYXRpb24pCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRl
cmVyQ29udGV4dCgpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51c2VQcm9ncmFtKHByb2dy
YW0tPnByb2dyYW0oKSkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkocHJv
Z3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwotICAgIEdMQyhj
b250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
MCkpOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4KGdsb2JhbFRyYW5zZm9ybSk7
CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4KGxheWVyUmVuZGVyZXIoKS0+d2luZG93
TWF0cml4KCkgKiBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSAqIGdsb2JhbFRy
YW5zZm9ybSk7CiAKICAgICAvLyBXZSBkb24ndCBjYXJlIGFib3V0IFogY29tcG9uZW50LgogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeFhZVyA9CkBAIC00NzgsMzMgKzQ1NSw0NiBAQCB2
b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdAogICAgICAgICByZXR1cm47CiAKICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBpbnZlcnNlID0gbWF0cml4WFlXLmludmVyc2UoKTsKLSAgICBJbnRSZWN0IGJv
dW5kcyhtX2xheWVyUG9zaXRpb24sIEludFNpemUobV90aWxpbmdEYXRhLnRvdGFsU2l6ZVgoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV90aWxpbmdEYXRh
LnRvdGFsU2l6ZVkoKSkpOwogCi0gICAgLy8gSW5jbHVkZSBvdXRlciBib3JkZXIgdGV4ZWxzIGlu
IGJvdW5kcy4KLSAgICBib3VuZHMuaW5mbGF0ZShtX3RpbGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkp
OworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQo
KTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFt
KCkpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdt
ZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKKyAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKKworICAg
IEludFJlY3QgbGF5ZXJSZWN0ID0gY29udGVudFJlY3RUb0xheWVyUmVjdChjb250ZW50UmVjdCk7
CisgICAgSW50UmVjdCBib3VuZHMobGF5ZXJSZWN0KTsKKyAgICBib3VuZHMubW92ZShtX2xheWVy
UG9zaXRpb24ueCgpLCBtX2xheWVyUG9zaXRpb24ueSgpKTsKIAogICAgIC8vIE1hcCBib3VuZHMg
dG8gZGV2aWNlIHNwYWNlLgogICAgIEZsb2F0UXVhZCBib3VuZHNRdWFkID0gbWF0cml4Lm1hcFF1
YWQoRmxvYXRRdWFkKGJvdW5kcykpOwogCisgICAgLy8gQ3JlYXRlIG91dGVyIGVkZ2VzLgorICAg
IEVkZ2UgbGVmdEVkZ2UoYm91bmRzUXVhZC5wNCgpLCBib3VuZHNRdWFkLnAxKCkpOworICAgIEVk
Z2UgcmlnaHRFZGdlKGJvdW5kc1F1YWQucDIoKSwgYm91bmRzUXVhZC5wMygpKTsKKyAgICBFZGdl
IHRvcEVkZ2UoYm91bmRzUXVhZC5wMSgpLCBib3VuZHNRdWFkLnAyKCkpOworICAgIEVkZ2UgYm90
dG9tRWRnZShib3VuZHNRdWFkLnAzKCksIGJvdW5kc1F1YWQucDQoKSk7CisKICAgICAvLyBDb3Vu
dGVyLWNsb2Nrd2lzZT8KICAgICBmbG9hdCBzaWduID0gaXNDQ1coYm91bmRzUXVhZCkgPyAtMSA6
IDE7Ci0KLSAgICAvLyBDb21wdXRlIG91dGVyIGVkZ2VzLgotICAgIEVkZ2UgbGVmdEVkZ2UgPSBj
b21wdXRlRWRnZShib3VuZHNRdWFkLnA0KCksIGJvdW5kc1F1YWQucDEoKSwgc2lnbik7Ci0gICAg
RWRnZSByaWdodEVkZ2UgPSBjb21wdXRlRWRnZShib3VuZHNRdWFkLnAyKCksIGJvdW5kc1F1YWQu
cDMoKSwgc2lnbik7Ci0gICAgRWRnZSB0b3BFZGdlID0gY29tcHV0ZUVkZ2UoYm91bmRzUXVhZC5w
MSgpLCBib3VuZHNRdWFkLnAyKCksIHNpZ24pOwotICAgIEVkZ2UgYm90dG9tRWRnZSA9IGNvbXB1
dGVFZGdlKGJvdW5kc1F1YWQucDMoKSwgYm91bmRzUXVhZC5wNCgpLCBzaWduKTsKKyAgICBsZWZ0
RWRnZS5zY2FsZShzaWduKTsKKyAgICByaWdodEVkZ2Uuc2NhbGUoc2lnbik7CisgICAgdG9wRWRn
ZS5zY2FsZShzaWduKTsKKyAgICBib3R0b21FZGdlLnNjYWxlKHNpZ24pOworCisgICAgLy8gVXNl
IHNvZnQgZWRnZXMuCisgICAgZmxvYXQgZWRnZVNoYXJwbmVzcyA9IChlZGdlTG9jYXRpb24gIT0g
LTEpID8gMCA6IDE7CisgICAgbGVmdEVkZ2Uuc2V0VyhlZGdlU2hhcnBuZXNzKTsKKyAgICByaWdo
dEVkZ2Uuc2V0VyhlZGdlU2hhcnBuZXNzKTsKKyAgICB0b3BFZGdlLnNldFcoZWRnZVNoYXJwbmVz
cyk7CisgICAgYm90dG9tRWRnZS5zZXRXKGVkZ2VTaGFycG5lc3MpOwogCiAgICAgLy8gTW92ZSBv
dXRlciBlZGdlcyB0byBlbnN1cmUgdGhhdCBhbGwgcGFydGlhbGx5IGNvdmVyZWQgcGl4ZWxzIGFy
ZQogICAgIC8vIHByb2Nlc3NlZC4KLSAgICBmbG9hdCB6RGlzdGFuY2UgPSBtX3RpbGluZ0RhdGEu
Ym9yZGVyVGV4ZWxzKCkgKiAwLjVmOwotICAgIGxlZnRFZGdlLm1vdmUoMCwgMCwgekRpc3RhbmNl
KTsKLSAgICByaWdodEVkZ2UubW92ZSgwLCAwLCB6RGlzdGFuY2UpOwotICAgIHRvcEVkZ2UubW92
ZSgwLCAwLCB6RGlzdGFuY2UpOwotICAgIGJvdHRvbUVkZ2UubW92ZSgwLCAwLCB6RGlzdGFuY2Up
OwotCi0gICAgR0MzRGludCBmaWx0ZXIgPSAobV90aWxpbmdEYXRhLmJvcmRlclRleGVscygpICYm
ICFtYXRyaXguaXNJbnRlZ2VyVHJhbnNsYXRpb24oKSkgPyBHcmFwaGljc0NvbnRleHQzRDo6TElO
RUFSIDogR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1Q7CisgICAgZmxvYXQgekRpc3RhbmNlID0g
KDEgLSBlZGdlU2hhcnBuZXNzKSAqIDAuNWY7CisgICAgbGVmdEVkZ2Uuc2V0WihsZWZ0RWRnZS56
KCkgKyB6RGlzdGFuY2UpOworICAgIHJpZ2h0RWRnZS5zZXRaKHJpZ2h0RWRnZS56KCkgKyB6RGlz
dGFuY2UpOworICAgIHRvcEVkZ2Uuc2V0Wih0b3BFZGdlLnooKSArIHpEaXN0YW5jZSk7CisgICAg
Ym90dG9tRWRnZS5zZXRaKGJvdHRvbUVkZ2UueigpICsgekRpc3RhbmNlKTsKIAogICAgIEVkZ2Ug
cHJldkVkZ2VZID0gdG9wRWRnZTsKIApAQCAtNTE1LDcgKzUwNSwxMyBAQCB2b2lkIExheWVyVGls
ZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdAogCiAgICAgICAgIEVkZ2UgZWRnZVkgPSBib3R0b21FZGdlOwogICAgICAgICBp
ZiAoaiA8IChtX3RpbGluZ0RhdGEubnVtVGlsZXNZKCkgLSAxKSkgewotICAgICAgICAgICAgSW50
UmVjdCB0aWxlUmVjdCA9IG1fdGlsaW5nRGF0YS50aWxlQm91bmRzKG1fdGlsaW5nRGF0YS50aWxl
SW5kZXgoMCwgaikpOworICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IHVuaW9uUmVjdCht
X3RpbGluZ0RhdGEudGlsZUJvdW5kcyhtX3RpbGluZ0RhdGEudGlsZUluZGV4KDAsIGopKSwgbV90
aWxpbmdEYXRhLnRpbGVCb3VuZHMobV90aWxpbmdEYXRhLnRpbGVJbmRleChtX3RpbGluZ0RhdGEu
bnVtVGlsZXNYKCkgLSAxLCBqKSkpOworICAgICAgICAgICAgdGlsZVJlY3QuaW50ZXJzZWN0KGxh
eWVyUmVjdCk7CisKKyAgICAgICAgICAgIC8vIFNraXAgZW1wdHkgcm93cy4KKyAgICAgICAgICAg
IGlmICh0aWxlUmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKICAg
ICAgICAgICAgIHRpbGVSZWN0Lm1vdmUobV9sYXllclBvc2l0aW9uLngoKSwgbV9sYXllclBvc2l0
aW9uLnkoKSk7CiAKICAgICAgICAgICAgIEZsb2F0UG9pbnQgcDEodGlsZVJlY3QubWF4WCgpLCB0
aWxlUmVjdC5tYXhZKCkpOwpAQCAtNTI1LDggKzUyMSwxMSBAQCB2b2lkIExheWVyVGlsZXJDaHJv
bWl1bTo6ZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdAogICAgICAgICAgICAgcDEgPSBtYXRyaXgubWFwUG9pbnQocDEpOwogICAgICAgICAgICAg
cDIgPSBtYXRyaXgubWFwUG9pbnQocDIpOwogCi0gICAgICAgICAgICAvLyBDb21wdXRlIGhvcml6
b250YWwgZWRnZS4KLSAgICAgICAgICAgIGVkZ2VZID0gY29tcHV0ZUVkZ2UocDEsIHAyLCBzaWdu
KTsKKyAgICAgICAgICAgIC8vIENyZWF0ZSBob3Jpem9udGFsIGVkZ2UuCisgICAgICAgICAgICBl
ZGdlWSA9IEVkZ2UocDEsIHAyKTsKKworICAgICAgICAgICAgLy8gQWRqdXN0IGRpcmVjdGlvbi4K
KyAgICAgICAgICAgIGVkZ2VZLnNjYWxlKHNpZ24pOwogICAgICAgICB9CiAKICAgICAgICAgZm9y
IChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewpAQCAtNTM3LDI3ICs1MzYsNTMgQEAg
dm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgY29uc3QgVHJhbnNmb3JtYXQKICAgICAgICAgICAgIEFTU0VSVCh0aWxlLT50ZXh0dXJl
KCktPmlzUmVzZXJ2ZWQoKSk7CiAKICAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+YmluZFRl
eHR1cmUoKTsKLSAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJp
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9NSU5fRklMVEVSLCBmaWx0ZXIpKTsKLSAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0
LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBmaWx0ZXIpKTsKIAogICAgICAgICAgICAgLy8g
RG9uJ3QgdXNlIHRpbGVDb250ZW50UmVjdCBoZXJlLCBhcyB0aGF0IGNvbnRhaW5zIHRoZSBmdWxs
CiAgICAgICAgICAgICAvLyByZWN0IHdpdGggYm9yZGVyIHRleGVscyB3aGljaCBzaG91bGRuJ3Qg
YmUgZHJhd24uCiAgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0ID0gbV90aWxpbmdEYXRhLnRp
bGVCb3VuZHMobV90aWxpbmdEYXRhLnRpbGVJbmRleCh0aWxlLT5pKCksIHRpbGUtPmooKSkpOwor
ICAgICAgICAgICAgSW50UmVjdCBkaXNwbGF5UmVjdCA9IHRpbGVSZWN0OworICAgICAgICAgICAg
dGlsZVJlY3QuaW50ZXJzZWN0KGxheWVyUmVjdCk7CisKKyAgICAgICAgICAgIC8vIEtlZXAgdHJh
Y2sgb2YgaG93IHRoZSB0b3AgbGVmdCBoYXMgbW92ZWQsIHNvIHRoZSB0ZXh0dXJlIGNhbiBiZQor
ICAgICAgICAgICAgLy8gb2Zmc2V0IHRoZSBzYW1lIGFtb3VudC4KKyAgICAgICAgICAgIEludFNp
emUgZGlzcGxheU9mZnNldCA9IHRpbGVSZWN0Lm1pblhNaW5ZQ29ybmVyKCkgLSBkaXNwbGF5UmVj
dC5taW5YTWluWUNvcm5lcigpOworCisgICAgICAgICAgICAvLyBTa2lwIGVtcHR5IHRpbGVzLgor
ICAgICAgICAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKwogICAgICAgICAgICAgdGlsZVJlY3QubW92ZShtX2xheWVyUG9zaXRpb24ueCgpLCBt
X2xheWVyUG9zaXRpb24ueSgpKTsKIAotICAgICAgICAgICAgSW50UG9pbnQgdGV4T2Zmc2V0ID0g
bV90aWxpbmdEYXRhLnRleHR1cmVPZmZzZXQoKTsKLSAgICAgICAgICAgIEludFJlY3QgdGV4UmVj
dCA9IHRpbGVUZXhSZWN0KHRpbGUpOwotICAgICAgICAgICAgZmxvYXQgdGlsZVdpZHRoID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHRleFJlY3Qud2lkdGgoKSk7Ci0gICAgICAgICAgICBmbG9hdCB0aWxl
SGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRleFJlY3QuaGVpZ2h0KCkpOwotICAgICAgICAg
ICAgZmxvYXQgdGV4VHJhbnNsYXRlWCA9ICh0ZXhPZmZzZXQueCgpIC0gdGlsZVJlY3QueCgpKSAv
IHRpbGVXaWR0aDsKLSAgICAgICAgICAgIGZsb2F0IHRleFRyYW5zbGF0ZVkgPSAodGV4T2Zmc2V0
LnkoKSAtIHRpbGVSZWN0LnkoKSkgLyB0aWxlSGVpZ2h0OwotICAgICAgICAgICAgZmxvYXQgdGV4
U2NhbGVYID0gdGlsZVJlY3Qud2lkdGgoKSAvIHRpbGVXaWR0aDsKLSAgICAgICAgICAgIGZsb2F0
IHRleFNjYWxlWSA9IHRpbGVSZWN0LmhlaWdodCgpIC8gdGlsZUhlaWdodDsKKyAgICAgICAgICAg
IEZsb2F0UmVjdCBjbGFtcFJlY3QodGlsZVJlY3QpOworICAgICAgICAgICAgLy8gQ2xhbXAgdGV4
dHVyZSBjb29yZGluYXRlcyB0byBhdm9pZCBzYW1wbGluZyBvdXRzaWRlIHRoZSBsYXllci4KKyAg
ICAgICAgICAgIGNvbnN0IGZsb2F0IGVwc2lsb24gPSAxIC8gMTAyNC4wZjsKKyAgICAgICAgICAg
IGZsb2F0IGNsYW1wWCA9IG1pbigwLjUsIGNsYW1wUmVjdC53aWR0aCgpIC8gMi4wIC0gZXBzaWxv
bik7CisgICAgICAgICAgICBmbG9hdCBjbGFtcFkgPSBtaW4oMC41LCBjbGFtcFJlY3QuaGVpZ2h0
KCkgLyAyLjAgLSBlcHNpbG9uKTsKKyAgICAgICAgICAgIGNsYW1wUmVjdC5pbmZsYXRlWCgtY2xh
bXBYKTsKKyAgICAgICAgICAgIGNsYW1wUmVjdC5pbmZsYXRlWSgtY2xhbXBZKTsKKyAgICAgICAg
ICAgIEZsb2F0U2l6ZSBjbGFtcE9mZnNldCA9IGNsYW1wUmVjdC5taW5YTWluWUNvcm5lcigpIC0g
RmxvYXRSZWN0KHRpbGVSZWN0KS5taW5YTWluWUNvcm5lcigpOworCisgICAgICAgICAgICBGbG9h
dFBvaW50IHRleE9mZnNldCA9IG1fdGlsaW5nRGF0YS50ZXh0dXJlT2Zmc2V0KHRpbGUtPmkoKSwg
dGlsZS0+aigpKSArIGNsYW1wT2Zmc2V0ICsgRmxvYXRTaXplKGRpc3BsYXlPZmZzZXQpOworICAg
ICAgICAgICAgZmxvYXQgdGlsZVdpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fdGlsZVNpemUu
d2lkdGgoKSk7CisgICAgICAgICAgICBmbG9hdCB0aWxlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KG1fdGlsZVNpemUuaGVpZ2h0KCkpOworCisgICAgICAgICAgICAvLyBNYXAgY2xhbXBpbmcg
cmVjdGFuZ2xlIHRvIHVuaXQgc3F1YXJlLgorICAgICAgICAgICAgZmxvYXQgdnNUZXhUcmFuc2xh
dGVYID0gLWNsYW1wUmVjdC54KCkgLyBjbGFtcFJlY3Qud2lkdGgoKTsKKyAgICAgICAgICAgIGZs
b2F0IHZzVGV4VHJhbnNsYXRlWSA9IC1jbGFtcFJlY3QueSgpIC8gY2xhbXBSZWN0LmhlaWdodCgp
OworICAgICAgICAgICAgZmxvYXQgdnNUZXhTY2FsZVggPSB0aWxlUmVjdC53aWR0aCgpIC8gY2xh
bXBSZWN0LndpZHRoKCk7CisgICAgICAgICAgICBmbG9hdCB2c1RleFNjYWxlWSA9IHRpbGVSZWN0
LmhlaWdodCgpIC8gY2xhbXBSZWN0LmhlaWdodCgpOworCisgICAgICAgICAgICAvLyBNYXAgdG8g
bm9ybWFsaXplZCB0ZXh0dXJlIGNvb3JkaW5hdGVzLgorICAgICAgICAgICAgZmxvYXQgZnNUZXhU
cmFuc2xhdGVYID0gdGV4T2Zmc2V0LngoKSAvIHRpbGVXaWR0aDsKKyAgICAgICAgICAgIGZsb2F0
IGZzVGV4VHJhbnNsYXRlWSA9IHRleE9mZnNldC55KCkgLyB0aWxlSGVpZ2h0OworICAgICAgICAg
ICAgZmxvYXQgZnNUZXhTY2FsZVggPSBjbGFtcFJlY3Qud2lkdGgoKSAvIHRpbGVXaWR0aDsKKyAg
ICAgICAgICAgIGZsb2F0IGZzVGV4U2NhbGVZID0gY2xhbXBSZWN0LmhlaWdodCgpIC8gdGlsZUhl
aWdodDsKKwogICAgICAgICAgICAgLy8gT3BlbkdMIGNvb3JkaW5hdGUgc3lzdGVtIGlzIGJvdHRv
bS11cC4KICAgICAgICAgICAgIC8vIElmIHRpbGUgdGV4dHVyZSBpcyB0b3AtZG93biwgd2UgbmVl
ZCB0byBmbGlwIHRoZSB0ZXh0dXJlIGNvb3JkaW5hdGVzLgogICAgICAgICAgICAgaWYgKG1fdGV4
dHVyZU9yaWVudGF0aW9uID09IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRvcERvd25PcmllbnRhdGlv
bikgewotICAgICAgICAgICAgICAgIHRleFRyYW5zbGF0ZVkgPSAxLjAgLSB0ZXhUcmFuc2xhdGVZ
OwotICAgICAgICAgICAgICAgIHRleFNjYWxlWSAqPSAtMS4wOworICAgICAgICAgICAgICAgIGZz
VGV4VHJhbnNsYXRlWSA9IDEuMCAtIGZzVGV4VHJhbnNsYXRlWTsKKyAgICAgICAgICAgICAgICBm
c1RleFNjYWxlWSAqPSAtMS4wOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBFZGdlIGVk
Z2VYID0gcmlnaHRFZGdlOwpAQCAtNTY5LDE1ICs1OTQsMTggQEAgdm9pZCBMYXllclRpbGVyQ2hy
b21pdW06OmRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNm
b3JtYXQKICAgICAgICAgICAgICAgICBwMSA9IG1hdHJpeC5tYXBQb2ludChwMSk7CiAgICAgICAg
ICAgICAgICAgcDIgPSBtYXRyaXgubWFwUG9pbnQocDIpOwogCi0gICAgICAgICAgICAgICAgLy8g
Q29tcHV0ZSB2ZXJ0aWNhbCBlZGdlLgotICAgICAgICAgICAgICAgIGVkZ2VYID0gY29tcHV0ZUVk
Z2UocDEsIHAyLCBzaWduKTsKKyAgICAgICAgICAgICAgICAvLyBDcmVhdGUgdmVydGljYWwgZWRn
ZS4KKyAgICAgICAgICAgICAgICBlZGdlWCA9IEVkZ2UocDEsIHAyKTsKKworICAgICAgICAgICAg
ICAgIC8vIEFkanVzdCBkaXJlY3Rpb24uCisgICAgICAgICAgICAgICAgZWRnZVguc2NhbGUoc2ln
bik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIENyZWF0ZSBkZXZpY2Ugc3BhY2Ug
cXVhZC4KLSAgICAgICAgICAgIEZsb2F0UXVhZCBkZXZpY2VRdWFkKGludGVyc2VjdChlZGdlWSwg
cHJldkVkZ2VYKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdChw
cmV2RWRnZVgsIHByZXZFZGdlWSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnRlcnNlY3QocHJldkVkZ2VZLCBlZGdlWCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnRlcnNlY3QoZWRnZVgsIGVkZ2VZKSk7CisgICAgICAgICAgICBGbG9hdFF1YWQgZGV2
aWNlUXVhZChFZGdlOjppbnRlcnNlY3QoZWRnZVksIHByZXZFZGdlWCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFZGdlOjppbnRlcnNlY3QocHJldkVkZ2VYLCBwcmV2RWRnZVkp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRnZTo6aW50ZXJzZWN0KHByZXZF
ZGdlWSwgZWRnZVgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRnZTo6aW50
ZXJzZWN0KGVkZ2VYLCBlZGdlWSkpOwogCiAgICAgICAgICAgICAvLyBNYXAgcXVhZCB0byBsYXll
ciBzcGFjZS4KICAgICAgICAgICAgIEZsb2F0UXVhZCBxdWFkID0gaW52ZXJzZS5tYXBRdWFkKGRl
dmljZVF1YWQpOwpAQCAtNTg1LDUzICs2MTMsNzEgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06
OmRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXQK
ICAgICAgICAgICAgIC8vIE5vcm1hbGl6ZSB0byB0aWxlUmVjdC4KICAgICAgICAgICAgIHF1YWQu
c2NhbGUoMS4wZiAvIHRpbGVSZWN0LndpZHRoKCksIDEuMGYgLyB0aWxlUmVjdC5oZWlnaHQoKSk7
CiAKLSAgICAgICAgICAgIGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgcXVhZCwgbGF5ZXJSZW5k
ZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCksIG1hdHJpeCwgdGlsZVJlY3Qud2lkdGgoKSwgdGls
ZVJlY3QuaGVpZ2h0KCksIG9wYWNpdHksIHRleFRyYW5zbGF0ZVgsIHRleFRyYW5zbGF0ZVksIHRl
eFNjYWxlWCwgdGV4U2NhbGVZLCBwcm9ncmFtKTsKKyAgICAgICAgICAgIGlmIChlZGdlTG9jYXRp
b24gIT0gLTEpIHsKKyAgICAgICAgICAgICAgICBmbG9hdCBlZGdlWzE2XTsKKyAgICAgICAgICAg
ICAgICBlZGdlWzBdID0gcHJldkVkZ2VYLngoKTsKKyAgICAgICAgICAgICAgICBlZGdlWzFdID0g
cHJldkVkZ2VYLnkoKTsKKyAgICAgICAgICAgICAgICBlZGdlWzJdID0gcHJldkVkZ2VYLnooKTsK
KyAgICAgICAgICAgICAgICBlZGdlWzNdID0gcHJldkVkZ2VYLncoKTsKKyAgICAgICAgICAgICAg
ICBlZGdlWzRdID0gcHJldkVkZ2VZLngoKTsKKyAgICAgICAgICAgICAgICBlZGdlWzVdID0gcHJl
dkVkZ2VZLnkoKTsKKyAgICAgICAgICAgICAgICBlZGdlWzZdID0gcHJldkVkZ2VZLnooKTsKKyAg
ICAgICAgICAgICAgICBlZGdlWzddID0gcHJldkVkZ2VZLncoKTsKKyAgICAgICAgICAgICAgICBl
ZGdlWzhdID0gZWRnZVgueCgpOworICAgICAgICAgICAgICAgIGVkZ2VbOV0gPSBlZGdlWC55KCk7
CisgICAgICAgICAgICAgICAgZWRnZVsxMF0gPSBlZGdlWC56KCk7CisgICAgICAgICAgICAgICAg
ZWRnZVsxMV0gPSBlZGdlWC53KCk7CisgICAgICAgICAgICAgICAgZWRnZVsxMl0gPSBlZGdlWS54
KCk7CisgICAgICAgICAgICAgICAgZWRnZVsxM10gPSBlZGdlWS55KCk7CisgICAgICAgICAgICAg
ICAgZWRnZVsxNF0gPSBlZGdlWS56KCk7CisgICAgICAgICAgICAgICAgZWRnZVsxNV0gPSBlZGdl
WS53KCk7CisgICAgICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm00ZnYo
ZWRnZUxvY2F0aW9uLCBlZGdlLCA0KSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChmc1RleFRyYW5zZm9ybUxvY2F0aW9uID09IC0xKSB7CisgICAgICAgICAgICAgIC8vIE1vdmUg
ZnJhZ21lbnQgc2hhZGVyIHRyYW5zZm9ybSB0byB2ZXJ0ZXggc2hhZGVyLiBXZSBjYW4gZG8KKyAg
ICAgICAgICAgICAgLy8gdGhpcyB3aGlsZSBzdGlsbCBwcm9kdWNpbmcgY29ycmVjdCByZXN1bHRz
IGFzCisgICAgICAgICAgICAgIC8vIGZzVGV4VHJhbnNmb3JtTG9jYXRpb24gc2hvdWxkIGFsd2F5
cyBiZSBub24tbmVnYXRpdmUgd2hlbgorICAgICAgICAgICAgICAvLyB0aWxlcyBhcmUgdHJhbnNm
b3JtZWQgaW4gYSB3YXkgdGhhdCBjb3VsZCByZXN1bHQgaW4gc2FtcGxpbmcKKyAgICAgICAgICAg
ICAgLy8gb3V0c2lkZSB0aGUgbGF5ZXIuCisgICAgICAgICAgICAgIHZzVGV4U2NhbGVYICo9IGZz
VGV4U2NhbGVYOworICAgICAgICAgICAgICB2c1RleFNjYWxlWSAqPSBmc1RleFNjYWxlWTsKKyAg
ICAgICAgICAgICAgdnNUZXhUcmFuc2xhdGVYICo9IGZzVGV4U2NhbGVYOworICAgICAgICAgICAg
ICB2c1RleFRyYW5zbGF0ZVkgKj0gZnNUZXhTY2FsZVk7CisgICAgICAgICAgICAgIHZzVGV4VHJh
bnNsYXRlWCArPSBmc1RleFRyYW5zbGF0ZVg7CisgICAgICAgICAgICAgIHZzVGV4VHJhbnNsYXRl
WSArPSBmc1RleFRyYW5zbGF0ZVk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTRmKGZzVGV4VHJhbnNmb3JtTG9jYXRpb24s
IGZzVGV4VHJhbnNsYXRlWCwgZnNUZXhUcmFuc2xhdGVZLCBmc1RleFNjYWxlWCwgZnNUZXhTY2Fs
ZVkpKTsKKworICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm00Zihwcm9n
cmFtLT52ZXJ0ZXhTaGFkZXIoKS52c1RleFRyYW5zZm9ybUxvY2F0aW9uKCksIHZzVGV4VHJhbnNs
YXRlWCwgdnNUZXhUcmFuc2xhdGVZLCB2c1RleFNjYWxlWCwgdnNUZXhTY2FsZVkpKTsKKworICAg
ICAgICAgICAgZmxvYXQgcG9pbnRbOF07CisgICAgICAgICAgICBwb2ludFswXSA9IHF1YWQucDEo
KS54KCk7CisgICAgICAgICAgICBwb2ludFsxXSA9IHF1YWQucDEoKS55KCk7CisgICAgICAgICAg
ICBwb2ludFsyXSA9IHF1YWQucDIoKS54KCk7CisgICAgICAgICAgICBwb2ludFszXSA9IHF1YWQu
cDIoKS55KCk7CisgICAgICAgICAgICBwb2ludFs0XSA9IHF1YWQucDMoKS54KCk7CisgICAgICAg
ICAgICBwb2ludFs1XSA9IHF1YWQucDMoKS55KCk7CisgICAgICAgICAgICBwb2ludFs2XSA9IHF1
YWQucDQoKS54KCk7CisgICAgICAgICAgICBwb2ludFs3XSA9IHF1YWQucDQoKS55KCk7CisgICAg
ICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTJmdihwcm9ncmFtLT52ZXJ0ZXhT
aGFkZXIoKS5wb2ludExvY2F0aW9uKCksIHBvaW50LCA0KSk7CisKKyAgICAgICAgICAgIExheWVy
Q2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgbGF5ZXJSZW5kZXJlcigpLT5wcm9q
ZWN0aW9uTWF0cml4KCksIGdsb2JhbFRyYW5zZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCks
IG9wYWNpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxw
aGFMb2NhdGlvbigpKTsKIAogICAgICAgICAgICAgcHJldkVkZ2VYID0gZWRnZVg7CisgICAgICAg
ICAgICAvLyBSZXZlcnNlIGRpcmVjdGlvbi4KKyAgICAgICAgICAgIHByZXZFZGdlWC5zY2FsZSgt
MSk7CiAgICAgICAgIH0KIAogICAgICAgICBwcmV2RWRnZVkgPSBlZGdlWTsKKyAgICAgICAgLy8g
UmV2ZXJzZSBkaXJlY3Rpb24uCisgICAgICAgIHByZXZFZGdlWS5zY2FsZSgtMSk7CiAgICAgfQog
fQogCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGV4
dHVyZWRRdWFkKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIHF1
YWQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNp
dHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0ZXhU
cmFuc2xhdGVYLCBmbG9hdCB0ZXhUcmFuc2xhdGVZLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgdGV4U2NhbGVYLCBmbG9hdCB0ZXhTY2FsZVksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUKiBwcm9ncmFtKQot
ewotICAgIHN0YXRpYyBmbG9hdCBnbE1hdHJpeFsxNl07Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCByZW5kZXJNYXRyaXggPSBkcmF3TWF0cml4OwotCi0gICAgLy8gQXBwbHkgYSBzY2FsaW5n
IGZhY3RvciB0byBzaXplIHRoZSBxdWFkIGZyb20gMXgxIHRvIGl0cyBpbnRlbmRlZCBzaXplLgot
ICAgIHJlbmRlck1hdHJpeC5zY2FsZTNkKHdpZHRoLCBoZWlnaHQsIDEpOwotCi0gICAgLy8gQXBw
bHkgdGhlIHByb2plY3Rpb24gbWF0cml4IGJlZm9yZSBzZW5kaW5nIHRoZSB0cmFuc2Zvcm0gb3Zl
ciB0byB0aGUgc2hhZGVyLgotICAgIExheWVyQ2hyb21pdW06OnRvR0xNYXRyaXgoJmdsTWF0cml4
WzBdLCBwcm9qZWN0aW9uTWF0cml4ICogcmVuZGVyTWF0cml4KTsKLQotICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJp
eExvY2F0aW9uKCksIGZhbHNlLCAmZ2xNYXRyaXhbMF0sIDEpKTsKLQotICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT51bmlmb3JtMWYocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0
aW9uKCksIG9wYWNpdHkpKTsKLQotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtNGYo
cHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkudGV4VHJhbnNmb3JtTG9jYXRpb24oKSwKLSAgICAgICAg
dGV4VHJhbnNsYXRlWCwgdGV4VHJhbnNsYXRlWSwgdGV4U2NhbGVYLCB0ZXhTY2FsZVkpKTsKLQot
ICAgIGZsb2F0IHBvaW50WzhdOwotICAgIHBvaW50WzBdID0gcXVhZC5wMSgpLngoKTsKLSAgICBw
b2ludFsxXSA9IHF1YWQucDEoKS55KCk7Ci0gICAgcG9pbnRbMl0gPSBxdWFkLnAyKCkueCgpOwot
ICAgIHBvaW50WzNdID0gcXVhZC5wMigpLnkoKTsKLSAgICBwb2ludFs0XSA9IHF1YWQucDMoKS54
KCk7Ci0gICAgcG9pbnRbNV0gPSBxdWFkLnAzKCkueSgpOwotICAgIHBvaW50WzZdID0gcXVhZC5w
NCgpLngoKTsKLSAgICBwb2ludFs3XSA9IHF1YWQucDQoKS55KCk7Ci0gICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPnVuaWZvcm0yZnYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkucG9pbnRMb2NhdGlv
bigpLCBwb2ludCwgNCkpOwotCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRyYXdFbGVtZW50
cyhHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVTLCA2LCBHcmFwaGljc0NvbnRleHQzRDo6VU5T
SUdORURfU0hPUlQsIDApKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0u
aAppbmRleCA0OGY0ZjlmMjA4ZDM3ZmNkYjlhMmVjYmQ0ZWUzOTUzMDU3NTg4YjFmLi4wNDJhNDAw
OWY4OTU3MmUwMTc4YTgyZTliMGMzZmNiNzE4NWJlY2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hy
b21pdW0uaApAQCAtNDcsNiArNDcsNDUgQEAgY2xhc3MgTGF5ZXJUaWxlckNocm9taXVtIHsKIHB1
YmxpYzoKICAgICBlbnVtIEJvcmRlclRleGVsT3B0aW9uIHsgSGFzQm9yZGVyVGV4ZWxzLCBOb0Jv
cmRlclRleGVscyB9OwogCisgICAgY2xhc3MgRWRnZSB7CisgICAgcHVibGljOgorICAgICAgICBF
ZGdlKCkKKyAgICAgICAgICAgIDogbV94KDApCisgICAgICAgICAgICAsIG1feSgwKQorICAgICAg
ICAgICAgLCBtX3ooMCkKKyAgICAgICAgICAgICwgbV93KDApCisgICAgICAgIHsKKyAgICAgICAg
fQorICAgICAgICBFZGdlKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jik7CisK
KyAgICAgICAgZmxvYXQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQorICAgICAgICB2b2lkIHNl
dFgoZmxvYXQgeCkgeyBtX3ggPSB4OyB9CisKKyAgICAgICAgZmxvYXQgeSgpIGNvbnN0IHsgcmV0
dXJuIG1feTsgfQorICAgICAgICB2b2lkIHNldFkoZmxvYXQgeSkgeyBtX3kgPSB5OyB9CisKKyAg
ICAgICAgZmxvYXQgeigpIGNvbnN0IHsgcmV0dXJuIG1fejsgfQorICAgICAgICB2b2lkIHNldFoo
ZmxvYXQgeikgeyBtX3ogPSB6OyB9CisKKyAgICAgICAgZmxvYXQgdygpIGNvbnN0IHsgcmV0dXJu
IG1fdzsgfQorICAgICAgICB2b2lkIHNldFcoZmxvYXQgdykgeyBtX3cgPSB3OyB9CisKKyAgICAg
ICAgdm9pZCBzY2FsZShmbG9hdCBzKQorICAgICAgICB7CisgICAgICAgICAgICBtX3ggKj0gczsK
KyAgICAgICAgICAgIG1feSAqPSBzOworICAgICAgICAgICAgbV96ICo9IHM7CisgICAgICAgIH0K
KworICAgICAgICBzdGF0aWMgRmxvYXRQb2ludCBpbnRlcnNlY3QoY29uc3QgTGF5ZXJUaWxlckNo
cm9taXVtOjpFZGdlJiwgY29uc3QgTGF5ZXJUaWxlckNocm9taXVtOjpFZGdlJik7CisKKyAgICBw
cml2YXRlOgorICAgICAgICBmbG9hdCBtX3g7CisgICAgICAgIGZsb2F0IG1feTsKKyAgICAgICAg
ZmxvYXQgbV96OworICAgICAgICBmbG9hdCBtX3c7CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNz
T3duUHRyPExheWVyVGlsZXJDaHJvbWl1bT4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bSos
IGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBCb3JkZXJUZXhlbE9wdGlvbik7CiAKICAgICB+TGF5
ZXJUaWxlckNocm9taXVtKCk7CkBAIC03NSwxMCArMTE0LDE0IEBAIHB1YmxpYzoKICAgICAvLyBy
ZWN5Y2xlZCBieSB0aGUgdGV4dHVyZSBtYW5hZ2VyLgogICAgIHZvaWQgcHJvdGVjdFRpbGVUZXh0
dXJlcyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CiAKLSAgICB0eXBlZGVmIFByb2dyYW1C
aW5kaW5nPFZlcnRleFNoYWRlclF1YWQsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhPiBQcm9n
cmFtOworICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyVGlsZSwgRnJhZ21l
bnRTaGFkZXJSR0JBVGV4QWxwaGE+IFByb2dyYW07CiAgICAgLy8gU2hhZGVyIHByb2dyYW0gdGhh
dCBzd2FwcyByZWQgYW5kIGJsdWUgY29tcG9uZW50cyBvZiB0ZXh0dXJlLgogICAgIC8vIFVzZWQg
d2hlbiB0ZXh0dXJlIGZvcm1hdCBkb2VzIG5vdCBtYXRjaCBuYXRpdmUgY29sb3IgZm9ybWF0Lgot
ICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUXVhZCwgRnJhZ21lbnRTaGFk
ZXJSR0JBVGV4U3dpenpsZUFscGhhPiBQcm9ncmFtU3dpenpsZTsKKyAgICB0eXBlZGVmIFByb2dy
YW1CaW5kaW5nPFZlcnRleFNoYWRlclRpbGUsIEZyYWdtZW50U2hhZGVyUkdCQVRleFN3aXp6bGVB
bHBoYT4gUHJvZ3JhbVN3aXp6bGU7CisKKyAgICAvLyBTaGFkZXIgcHJvZ3JhbSB0aGF0IHByb2R1
Y2VzIGFudGktYWxpYXNlZCBsYXllciBlZGdlcy4KKyAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5n
PFZlcnRleFNoYWRlclRpbGUsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUE+IFByb2dyYW1B
QTsKKyAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclRpbGUsIEZyYWdtZW50
U2hhZGVyUkdCQVRleFN3aXp6bGVBbHBoYUFBPiBQcm9ncmFtU3dpenpsZUFBOwogCiAgICAgLy8g
SWYgdGhpcyB0aWxlciBoYXMgZXhhY3RseSBvbmUgdGlsZSwgcmV0dXJuIGl0cyB0ZXh0dXJlLiBP
dGhlcndpc2UsIG51bGwuCiAgICAgTGF5ZXJUZXh0dXJlKiBnZXRTaW5nbGVUZXh0dXJlKCk7CkBA
IC0xMTAsMTQgKzE1Myw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBEcmF3IGFsbCB0aWxlcyB0aGF0
IGludGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0LgogICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAg
IHZvaWQgZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IFQqIHByb2dyYW0pOwotCi0gICAg
dGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFkKEdyYXBoaWNzQ29u
dGV4dDNEKiwgY29uc3QgRmxvYXRRdWFkJiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBy
b2plY3Rpb25NYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9h
dCBvcGFjaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0ZXhUcmFuc2xhdGVY
LCBmbG9hdCB0ZXhUcmFuc2xhdGVZLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0
ZXhTY2FsZVgsIGZsb2F0IHRleFNjYWxlWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVCogcHJvZ3JhbSk7CisgICAgdm9pZCBkcmF3VGlsZXMoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgY29uc3Qg
VCogcHJvZ3JhbSwgaW50IGZzVGV4VHJhbnNmb3JtTG9jYXRpb24sIGludCBlZGdlTG9jYXRpb24p
OwogCiAgICAgLy8gR3JvdyBsYXllciBzaXplIHRvIGNvbnRhaW4gdGhpcyByZWN0YW5nbGUuCiAg
ICAgdm9pZCBncm93TGF5ZXJUb0NvbnRhaW4oY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOwpA
QCAtMTM1LDcgKzE3MSw2IEBAIHByaXZhdGU6CiAgICAgVGlsZSogdGlsZUF0KGludCwgaW50KSBj
b25zdDsKICAgICBJbnRSZWN0IHRpbGVDb250ZW50UmVjdChjb25zdCBUaWxlKikgY29uc3Q7CiAg
ICAgSW50UmVjdCB0aWxlTGF5ZXJSZWN0KGNvbnN0IFRpbGUqKSBjb25zdDsKLSAgICBJbnRSZWN0
IHRpbGVUZXhSZWN0KGNvbnN0IFRpbGUqKSBjb25zdDsKIAogICAgIEdDM0RlbnVtIG1fdGV4dHVy
ZUZvcm1hdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCmluZGV4IDUwZGU4MDQ3ZDFiN2I5ZDEz
ZmY3MTk2MzhjMzYyMGViNWZhNjlkYWIuLjU0MmQyMDFiMjgwN2E5MWJmNjdkYWQ5ZDYyZjAxMTlk
MDI2Zjg3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NoYWRlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAKQEAgLTE1MCwyOSArMTUwLDI5IEBA
IFN0cmluZyBWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm06OmdldFNoYWRlclN0cmluZygpIGNv
bnN0CiAgICAgKTsKIH0KIAotVmVydGV4U2hhZGVyUXVhZDo6VmVydGV4U2hhZGVyUXVhZCgpCitW
ZXJ0ZXhTaGFkZXJUaWxlOjpWZXJ0ZXhTaGFkZXJUaWxlKCkKICAgICA6IG1fbWF0cml4TG9jYXRp
b24oLTEpCi0gICAgLCBtX3RleFRyYW5zZm9ybUxvY2F0aW9uKC0xKQogICAgICwgbV9wb2ludExv
Y2F0aW9uKC0xKQorICAgICwgbV92c1RleFRyYW5zZm9ybUxvY2F0aW9uKC0xKQogewogfQogCi12
b2lkIFZlcnRleFNoYWRlclF1YWQ6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVu
c2lnbmVkIHByb2dyYW0pCit2b2lkIFZlcnRleFNoYWRlclRpbGU6OmluaXQoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCiB7CiAgICAgbV9tYXRyaXhMb2NhdGlv
biA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7Ci0gICAg
bV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCAidGV4VHJhbnNmb3JtIik7CiAgICAgbV9wb2ludExvY2F0aW9uID0gY29udGV4dC0+Z2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJwb2ludCIpOwotICAgIEFTU0VSVChtX21hdHJpeExv
Y2F0aW9uICE9IC0xICYmIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24gIT0gLTEgJiYgbV9wb2ludExv
Y2F0aW9uICE9IC0xKTsKKyAgICBtX3ZzVGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0LT5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInZzVGV4VHJhbnNmb3JtIik7CisgICAgQVNTRVJU
KG1fbWF0cml4TG9jYXRpb24gIT0gLTEgJiYgbV9wb2ludExvY2F0aW9uICE9IC0xICYmIG1fdnNU
ZXhUcmFuc2Zvcm1Mb2NhdGlvbiAhPSAtMSk7CiB9CiAKLVN0cmluZyBWZXJ0ZXhTaGFkZXJRdWFk
OjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAorU3RyaW5nIFZlcnRleFNoYWRlclRpbGU6OmdldFNo
YWRlclN0cmluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNIQURFUigKICAgICAgICAgYXR0cmli
dXRlIHZlYzQgYV9wb3NpdGlvbjsKICAgICAgICAgYXR0cmlidXRlIHZlYzIgYV90ZXhDb29yZDsK
ICAgICAgICAgdW5pZm9ybSBtYXQ0IG1hdHJpeDsKLSAgICAgICAgdW5pZm9ybSB2ZWM0IHRleFRy
YW5zZm9ybTsKICAgICAgICAgdW5pZm9ybSB2ZWMyIHBvaW50WzRdOworICAgICAgICB1bmlmb3Jt
IHZlYzQgdnNUZXhUcmFuc2Zvcm07CiAgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOwog
ICAgICAgICB2b2lkIG1haW4oKQogICAgICAgICB7CkBAIC0xODMsNyArMTgzLDcgQEAgU3RyaW5n
IFZlcnRleFNoYWRlclF1YWQ6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiAgICAgICAgICAgICBw
b3MueHkgKz0gKGFfdGV4Q29vcmQueCAqIGFfdGV4Q29vcmQueSkgKiBwb2ludFsyXTsKICAgICAg
ICAgICAgIHBvcy54eSArPSAoY29tcGxlbWVudC54ICogYV90ZXhDb29yZC55KSAqIHBvaW50WzNd
OwogICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBtYXRyaXggKiBwb3M7Ci0gICAgICAgICAgICB2
X3RleENvb3JkID0gcG9zLnh5ICogdGV4VHJhbnNmb3JtLnp3ICsgdGV4VHJhbnNmb3JtLnh5Owor
ICAgICAgICAgICAgdl90ZXhDb29yZCA9IHBvcy54eSAqIHZzVGV4VHJhbnNmb3JtLnp3ICsgdnNU
ZXhUcmFuc2Zvcm0ueHk7CiAgICAgICAgIH0KICAgICApOwogfQpAQCAtMjQ3LDYgKzI0Nyw3MCBA
QCBTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhhOjpnZXRTaGFkZXJTdHJp
bmcoKSBjb25zdAogICAgICk7CiB9CiAKK0ZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmc6OkZyYWdt
ZW50VGV4QWxwaGFBQUJpbmRpbmcoKQorICAgIDogbV9zYW1wbGVyTG9jYXRpb24oLTEpCisgICAg
LCBtX2FscGhhTG9jYXRpb24oLTEpCisgICAgLCBtX2ZzVGV4VHJhbnNmb3JtTG9jYXRpb24oLTEp
CisgICAgLCBtX2VkZ2VMb2NhdGlvbigtMSkKK3sKK30KKwordm9pZCBGcmFnbWVudFRleEFscGhh
QUFCaW5kaW5nOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9n
cmFtKQoreworICAgIG1fc2FtcGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICJzX3RleHR1cmUiKTsKKyAgICBtX2FscGhhTG9jYXRpb24gPSBjb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImFscGhhIik7CisgICAgbV9mc1RleFRyYW5z
Zm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJmc1Rl
eFRyYW5zZm9ybSIpOworICAgIG1fZWRnZUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICJlZGdlIik7CisKKyAgICBBU1NFUlQobV9zYW1wbGVyTG9jYXRpb24g
IT0gLTEgJiYgbV9hbHBoYUxvY2F0aW9uICE9IC0xICYmIG1fZnNUZXhUcmFuc2Zvcm1Mb2NhdGlv
biAhPSAtMSAmJiBtX2VkZ2VMb2NhdGlvbiAhPSAtMSk7Cit9CisKK1N0cmluZyBGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYUFBOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVy
biBTSEFERVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB2YXJ5
aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJl
OworICAgICAgICB1bmlmb3JtIGZsb2F0IGFscGhhOworICAgICAgICB1bmlmb3JtIHZlYzQgZnNU
ZXhUcmFuc2Zvcm07CisgICAgICAgIHVuaWZvcm0gdmVjNCBlZGdlWzRdOworICAgICAgICB2b2lk
IG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICB2ZWMyIHRleENvb3JkID0gY2xhbXAodl90
ZXhDb29yZCwgMC4wLCAxLjApICogZnNUZXhUcmFuc2Zvcm0uencgKyBmc1RleFRyYW5zZm9ybS54
eTsKKyAgICAgICAgICAgIHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB0ZXhD
b29yZCk7CisgICAgICAgICAgICB2ZWM0IHBvcyA9IHZlYzQoZ2xfRnJhZ0Nvb3JkLnh5LCAxLCAx
KTsKKyAgICAgICAgICAgIGZsb2F0IGEwID0gY2xhbXAoZG90KGVkZ2VbMF0sIHBvcyksIDAuMCwg
MS4wKTsKKyAgICAgICAgICAgIGZsb2F0IGExID0gY2xhbXAoZG90KGVkZ2VbMV0sIHBvcyksIDAu
MCwgMS4wKTsKKyAgICAgICAgICAgIGZsb2F0IGEyID0gY2xhbXAoZG90KGVkZ2VbMl0sIHBvcyks
IDAuMCwgMS4wKTsKKyAgICAgICAgICAgIGZsb2F0IGEzID0gY2xhbXAoZG90KGVkZ2VbM10sIHBv
cyksIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleENvbG9yICogYWxw
aGEgKiBtaW4oYTAsIGEyKSAqIG1pbihhMSwgYTMpOworICAgICAgICB9CisgICAgKTsKK30KKwor
U3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleFN3aXp6bGVBbHBoYUFBOjpnZXRTaGFkZXJTdHJp
bmcoKSBjb25zdAoreworICAgIHJldHVybiBTSEFERVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgdW5p
Zm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOworICAgICAgICB1bmlmb3JtIGZsb2F0IGFscGhhOwor
ICAgICAgICB1bmlmb3JtIHZlYzQgZnNUZXhUcmFuc2Zvcm07CisgICAgICAgIHVuaWZvcm0gdmVj
NCBlZGdlWzRdOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICB2
ZWMyIHRleENvb3JkID0gY2xhbXAodl90ZXhDb29yZCwgMC4wLCAxLjApICogZnNUZXhUcmFuc2Zv
cm0uencgKyBmc1RleFRyYW5zZm9ybS54eTsKKyAgICAgICAgICAgIHZlYzQgdGV4Q29sb3IgPSB0
ZXh0dXJlMkQoc190ZXh0dXJlLCB0ZXhDb29yZCk7CisgICAgICAgICAgICB2ZWM0IHBvcyA9IHZl
YzQoZ2xfRnJhZ0Nvb3JkLnh5LCAxLCAxKTsKKyAgICAgICAgICAgIGZsb2F0IGEwID0gY2xhbXAo
ZG90KGVkZ2VbMF0sIHBvcyksIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIGZsb2F0IGExID0gY2xh
bXAoZG90KGVkZ2VbMV0sIHBvcyksIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIGZsb2F0IGEyID0g
Y2xhbXAoZG90KGVkZ2VbMl0sIHBvcyksIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIGZsb2F0IGEz
ID0gY2xhbXAoZG90KGVkZ2VbM10sIHBvcyksIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQodGV4Q29sb3IueiwgdGV4Q29sb3IueSwgdGV4Q29sb3IueCwgdGV4Q29s
b3IudykgKiBhbHBoYSAqIG1pbihhMCwgYTIpICogbWluKGExLCBhMyk7CisgICAgICAgIH0KKyAg
ICApOworfQorCiBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2s6OkZyYWdtZW50U2hhZGVy
UkdCQVRleEFscGhhTWFzaygpCiAgICAgOiBtX3NhbXBsZXJMb2NhdGlvbigtMSkKICAgICAsIG1f
bWFza1NhbXBsZXJMb2NhdGlvbigtMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCmluZGV4IGNmYzYxMWE2
NDk1YjExZTFhOWY0NTVlYTNmOWUxYmVmYWRlODk1MTkuLmZlN2ViMGY2Y2RhNmUzMmYyNzM1Mjdh
Njg3NGE4ZjIzODVlNmNlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaApAQCAtOTYsMjEgKzk2LDIx
IEBAIHByaXZhdGU6CiAgICAgaW50IG1fdGV4VHJhbnNmb3JtTG9jYXRpb247CiB9OwogCi1jbGFz
cyBWZXJ0ZXhTaGFkZXJRdWFkIHsKK2NsYXNzIFZlcnRleFNoYWRlclRpbGUgewogcHVibGljOgot
ICAgIFZlcnRleFNoYWRlclF1YWQoKTsKKyAgICBWZXJ0ZXhTaGFkZXJUaWxlKCk7CiAKICAgICB2
b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKICAgICBTdHJp
bmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiAKICAgICBpbnQgbWF0cml4TG9jYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX21hdHJpeExvY2F0aW9uOyB9Ci0gICAgaW50IHRleFRyYW5zZm9ybUxv
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsgfQogICAgIGlu
dCBwb2ludExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludExvY2F0aW9uOyB9CisgICAg
aW50IHZzVGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3ZzVGV4VHJhbnNm
b3JtTG9jYXRpb247IH0KIAogcHJpdmF0ZToKICAgICBpbnQgbV9tYXRyaXhMb2NhdGlvbjsKLSAg
ICBpbnQgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsKICAgICBpbnQgbV9wb2ludExvY2F0aW9uOwor
ICAgIGludCBtX3ZzVGV4VHJhbnNmb3JtTG9jYXRpb247CiB9OwogCiBjbGFzcyBGcmFnbWVudFRl
eEFscGhhQmluZGluZyB7CkBAIC0xNDIsNiArMTQyLDM0IEBAIHB1YmxpYzoKICAgICBTdHJpbmcg
Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiB9OwogCitjbGFzcyBGcmFnbWVudFRleEFscGhhQUFC
aW5kaW5nIHsKK3B1YmxpYzoKKyAgICBGcmFnbWVudFRleEFscGhhQUFCaW5kaW5nKCk7CisKKyAg
ICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICBp
bnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFMb2NhdGlvbjsgfQorICAg
IGludCBzYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZXJMb2NhdGlvbjsg
fQorICAgIGludCBmc1RleFRyYW5zZm9ybUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mc1Rl
eFRyYW5zZm9ybUxvY2F0aW9uOyB9CisgICAgaW50IGVkZ2VMb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZWRnZUxvY2F0aW9uOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fc2FtcGxlckxvY2F0
aW9uOworICAgIGludCBtX2FscGhhTG9jYXRpb247CisgICAgaW50IG1fZnNUZXhUcmFuc2Zvcm1M
b2NhdGlvbjsKKyAgICBpbnQgbV9lZGdlTG9jYXRpb247Cit9OworCitjbGFzcyBGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYUFBIDogcHVibGljIEZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmcgewor
cHVibGljOgorICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKK307CisKKy8vIFN3
aXp6bGVzIHRoZSByZWQgYW5kIGJsdWUgY29tcG9uZW50IG9mIHNhbXBsZWQgdGV4ZWwuCitjbGFz
cyBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGFBQSA6IHB1YmxpYyBGcmFnbWVudFRl
eEFscGhhQUFCaW5kaW5nIHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkg
Y29uc3Q7Cit9OworCiBjbGFzcyBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2sgewogcHVi
bGljOgogICAgIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzaygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggM2U5ZTZkZDA0OGYyMjE1ZDI4OTQ5MTc1OTM0MWQ3ZTM3
NmJjMGQyNy4uNTY3NWNlYTEzYTZlYmRhYzFkOWNiM2FhNGUyZmZjYzU0OWEwNGViNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CiAKIC8vIFN0YXJ0IHRpbGluZyB3aGVuIHRoZSB3aWR0aCBhbmQg
aGVpZ2h0IG9mIGEgbGF5ZXIgYXJlIGxhcmdlciB0aGFuIHRoaXMgc2l6ZS4KLXN0YXRpYyBpbnQg
bWF4VW50aWxlZFNpemUgPSA1MTA7CitzdGF0aWMgaW50IG1heFVudGlsZWRTaXplID0gNTEyOwog
CiAvLyBXaGVuIHRpbGluZyBpcyBlbmFibGVkLCB1c2UgdGlsZXMgb2YgdGhpcyBkaW1lbnNpb24g
c3F1YXJlZC4KIHN0YXRpYyBpbnQgZGVmYXVsdFRpbGVTaXplID0gMjU2OwpAQCAtNTAsNyArNTAs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBUaWxlZExheWVyQ2hyb21pdW06OlRpbGVkTGF5ZXJD
aHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQogICAgIDogTGF5ZXJDaHJvbWl1
bShvd25lcikKICAgICAsIG1fdGlsaW5nT3B0aW9uKEF1dG9UaWxlKQotICAgICwgbV9ib3JkZXJU
ZXhlbHModHJ1ZSkKIHsKIH0KIApAQCAtODAsNyArNzksNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6dXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKQogICAgIGlmICghbV90aWxlcikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgSW50U2l6ZSB0aWxlU2l6ZShkZWZhdWx0VGls
ZVNpemUsIGRlZmF1bHRUaWxlU2l6ZSk7CisgICAgY29uc3QgSW50U2l6ZSB0aWxlU2l6ZShtaW4o
ZGVmYXVsdFRpbGVTaXplLCBjb250ZW50Qm91bmRzKCkud2lkdGgoKSksIG1pbihkZWZhdWx0VGls
ZVNpemUsIGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSkpOwogCiAgICAgLy8gVGlsZSBpZiBib3Ro
IGRpbWVuc2lvbnMgbGFyZ2UsIG9yIGFueSBvbmUgZGltZW5zaW9uIGxhcmdlIGFuZCB0aGUgb3Ro
ZXIKICAgICAvLyBleHRlbmRzIGludG8gYSBzZWNvbmQgdGlsZS4gVGhpcyBoZXVyaXN0aWMgYWxs
b3dzIGZvciBsb25nIHNraW5ueSBsYXllcnMKQEAgLTk3LDggKzk2LDcgQEAgdm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9uKCkKICAgICBlbHNlCiAg
ICAgICAgIGlzVGlsZWQgPSBhdXRvVGlsZWQ7CiAKLSAgICAvLyBFbXB0eSB0aWxlIHNpemUgdGVs
bHMgdGhlIHRpbGVyIHRvIGF2b2lkIHRpbGluZy4KLSAgICBJbnRTaXplIHJlcXVlc3RlZFNpemUg
PSBpc1RpbGVkID8gdGlsZVNpemUgOiBJbnRTaXplKCk7CisgICAgSW50U2l6ZSByZXF1ZXN0ZWRT
aXplID0gaXNUaWxlZCA/IHRpbGVTaXplIDogY29udGVudEJvdW5kcygpOwogICAgIGNvbnN0IGlu
dCBtYXhTaXplID0gbGF5ZXJSZW5kZXJlcigpLT5tYXhUZXh0dXJlU2l6ZSgpOwogICAgIEludFNp
emUgY2xhbXBlZFNpemUgPSByZXF1ZXN0ZWRTaXplLnNocnVua1RvKEludFNpemUobWF4U2l6ZSwg
bWF4U2l6ZSkpOwogICAgIG1fdGlsZXItPnNldFRpbGVTaXplKGNsYW1wZWRTaXplKTsKQEAgLTEy
OCw3ICsxMjYsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGlsZXJJZk5lZWRl
ZCgpCiAgICAgbV90aWxlciA9IExheWVyVGlsZXJDaHJvbWl1bTo6Y3JlYXRlKAogICAgICAgICBs
YXllclJlbmRlcmVyKCksCiAgICAgICAgIEludFNpemUoZGVmYXVsdFRpbGVTaXplLCBkZWZhdWx0
VGlsZVNpemUpLAotICAgICAgICBtX2JvcmRlclRleGVscyA/IExheWVyVGlsZXJDaHJvbWl1bTo6
SGFzQm9yZGVyVGV4ZWxzIDogTGF5ZXJUaWxlckNocm9taXVtOjpOb0JvcmRlclRleGVscyk7Cisg
ICAgICAgIExheWVyVGlsZXJDaHJvbWl1bTo6SGFzQm9yZGVyVGV4ZWxzKTsKIH0KIAogdm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKQpAQCAtMTQ0LDcg
KzE0Miw2IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRUaWxpbmdPcHRpb24oVGlsaW5n
T3B0aW9uIHRpbGluZ09wdGlvbikKIAogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnNldElzTWFz
ayhib29sIGlzTWFzaykKIHsKLSAgICBtX2JvcmRlclRleGVscyA9ICFpc01hc2s7CiAgICAgc2V0
VGlsaW5nT3B0aW9uKGlzTWFzayA/IE5ldmVyVGlsZSA6IEF1dG9UaWxlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uaAppbmRleCA3ODhhZGM3ZjEwOGFhNmEyNWNiM2Q0Y2Y4Y2QxNDkz
MGU2NDY0MTU3Li4yZjQzNjliNjQwMzgzODUxNzBjNzcxNDMyZmQ3YTFlYzI3MjJjZjk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAtNzMsNyArNzMsNiBAQCBwcml2YXRlOgogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHRpbGluZ1RyYW5zZm9ybSgpIGNvbnN0OwogCiAgICAgVGls
aW5nT3B0aW9uIG1fdGlsaW5nT3B0aW9uOwotICAgIGJvb2wgbV9ib3JkZXJUZXhlbHM7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGls
aW5nRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5n
RGF0YS5jcHAKaW5kZXggMTEzYmRlMGIyMTM4ZjkxZDc3MmQzZmQ1MWI4YzEzYjQwNmY5OGEyOS4u
ZmY3MDhjNzNkNmMzYTg4Y2RkZjAyYzA3MjNiYmFkZTMxYzMwMDRlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcApAQCAtNDQs
MTIgKzQ0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGludCBjb21wdXRlTnVt
VGlsZXMoaW50IG1heFRleHR1cmVTaXplLCBpbnQgdG90YWxTaXplLCBpbnQgYm9yZGVyVGV4ZWxz
KQogewotICAgIGludCB0b3RhbFNpemVXaXRoQm9yZGVyID0gdG90YWxTaXplICsgMiAqIGJvcmRl
clRleGVsczsKLQogICAgIGlmIChtYXhUZXh0dXJlU2l6ZSAtIDIgKiBib3JkZXJUZXhlbHMgPD0g
MCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiB0b3RhbFNpemUgPiAwICYmIG1h
eFRleHR1cmVTaXplID49IHRvdGFsU2l6ZSA/IDEgOiAwOwogCi0gICAgaW50IG51bVRpbGVzID0g
bWF4KDEsIDEgKyAodG90YWxTaXplV2l0aEJvcmRlciAtIDEgLSAyICogYm9yZGVyVGV4ZWxzKSAv
IChtYXhUZXh0dXJlU2l6ZSAtIDIgKiBib3JkZXJUZXhlbHMpKTsKKyAgICBpbnQgbnVtVGlsZXMg
PSBtYXgoMSwgMSArICh0b3RhbFNpemUgLSAxIC0gMiAqIGJvcmRlclRleGVscykgLyAobWF4VGV4
dHVyZVNpemUgLSAyICogYm9yZGVyVGV4ZWxzKSk7CiAgICAgcmV0dXJuIHRvdGFsU2l6ZSA+IDAg
PyBudW1UaWxlcyA6IDA7CiB9CiAKQEAgLTgxLDcgKzc5LDcgQEAgaW50IFRpbGluZ0RhdGE6OnRp
bGVYSW5kZXhGcm9tU3JjQ29vcmQoaW50IHNyY1BvcykgY29uc3QKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICBBU1NFUlQobV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBtX2JvcmRlclRleGVscyk7Ci0g
ICAgaW50IHggPSBzcmNQb3MgLyAobV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBtX2JvcmRlclRleGVs
cyk7CisgICAgaW50IHggPSAoc3JjUG9zIC0gbV9ib3JkZXJUZXhlbHMpIC8gKG1fbWF4VGV4dHVy
ZVNpemUgLSAyICogbV9ib3JkZXJUZXhlbHMpOwogICAgIHJldHVybiBtaW4obWF4KHgsIDApLCBu
dW1UaWxlc1goKSAtIDEpOwogfQogCkBAIC05MSw3ICs4OSw3IEBAIGludCBUaWxpbmdEYXRhOjp0
aWxlWUluZGV4RnJvbVNyY0Nvb3JkKGludCBzcmNQb3MpIGNvbnN0CiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgQVNTRVJUKG1fbWF4VGV4dHVyZVNpemUgLSAyICogbV9ib3JkZXJUZXhlbHMpOwot
ICAgIGludCB5ID0gc3JjUG9zIC8gKG1fbWF4VGV4dHVyZVNpemUgLSAyICogbV9ib3JkZXJUZXhl
bHMpOworICAgIGludCB5ID0gKHNyY1BvcyAtIG1fYm9yZGVyVGV4ZWxzKSAvIChtX21heFRleHR1
cmVTaXplIC0gMiAqIG1fYm9yZGVyVGV4ZWxzKTsKICAgICByZXR1cm4gbWluKG1heCh5LCAwKSwg
bnVtVGlsZXNZKCkgLSAxKTsKIH0KIApAQCAtMTM0LDE2ICsxMzIsNiBAQCBJbnRSZWN0IFRpbGlu
Z0RhdGE6OnRpbGVCb3VuZHNXaXRoQm9yZGVyKGludCB0aWxlKSBjb25zdAogICAgIHJldHVybiBi
b3VuZHM7CiB9CiAKLUludFJlY3QgVGlsaW5nRGF0YTo6dGlsZUJvdW5kc1dpdGhPdXRlckJvcmRl
cihpbnQgdGlsZSkgY29uc3QKLXsKLSAgICBJbnRSZWN0IGJvdW5kcyA9IHRpbGVCb3VuZHModGls
ZSk7Ci0KLSAgICBpZiAobV9ib3JkZXJUZXhlbHMpCi0gICAgICAgIGJvdW5kcy5pbmZsYXRlKDEp
OwotCi0gICAgcmV0dXJuIGJvdW5kczsKLX0KLQogRmxvYXRSZWN0IFRpbGluZ0RhdGE6OnRpbGVC
b3VuZHNOb3JtYWxpemVkKGludCB0aWxlKSBjb25zdAogewogICAgIGFzc2VydFRpbGUodGlsZSk7
CkBAIC0xODAsNiArMTY4LDggQEAgaW50IFRpbGluZ0RhdGE6OnRpbGVTaXplWChpbnQgeEluZGV4
KSBjb25zdAogCiAgICAgaWYgKCF4SW5kZXggJiYgbV9udW1UaWxlc1ggPT0gMSkKICAgICAgICAg
cmV0dXJuIG1fdG90YWxTaXplWDsKKyAgICBpZiAoIXhJbmRleCAmJiBtX251bVRpbGVzWCA+IDEp
CisgICAgICAgIHJldHVybiBtX21heFRleHR1cmVTaXplIC0gbV9ib3JkZXJUZXhlbHM7CiAgICAg
aWYgKHhJbmRleCA8IG51bVRpbGVzWCgpIC0gMSkKICAgICAgICAgcmV0dXJuIG1fbWF4VGV4dHVy
ZVNpemUgLSAyICogbV9ib3JkZXJUZXhlbHM7CiAgICAgaWYgKHhJbmRleCA9PSBudW1UaWxlc1go
KSAtIDEpCkBAIC0xOTUsNiArMTg1LDggQEAgaW50IFRpbGluZ0RhdGE6OnRpbGVTaXplWShpbnQg
eUluZGV4KSBjb25zdAogCiAgICAgaWYgKCF5SW5kZXggJiYgbV9udW1UaWxlc1kgPT0gMSkKICAg
ICAgICAgcmV0dXJuIG1fdG90YWxTaXplWTsKKyAgICBpZiAoIXlJbmRleCAmJiBtX251bVRpbGVz
WSA+IDEpCisgICAgICAgIHJldHVybiBtX21heFRleHR1cmVTaXplIC0gbV9ib3JkZXJUZXhlbHM7
CiAgICAgaWYgKHlJbmRleCA8IG51bVRpbGVzWSgpIC0gMSkKICAgICAgICAgcmV0dXJuIG1fbWF4
VGV4dHVyZVNpemUgLSAyICogbV9ib3JkZXJUZXhlbHM7CiAgICAgaWYgKHlJbmRleCA9PSBudW1U
aWxlc1koKSAtIDEpCkBAIC0yMzgsOCArMjMwLDggQEAgdm9pZCBUaWxpbmdEYXRhOjppbnRlcnNl
Y3REcmF3UXVhZChjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHMK
IAogICAgICpuZXdTcmMgPSBzcmNSZWN0SW50ZXJzZWN0ZWQ7CiAgICAgbmV3U3JjLT5tb3ZlKAot
ICAgICAgICAtdGlsZUJvdW5kcy54KCkgKyBtX2JvcmRlclRleGVscywKLSAgICAgICAgLXRpbGVC
b3VuZHMueSgpICsgbV9ib3JkZXJUZXhlbHMpOworICAgICAgICAtdGlsZUJvdW5kcy54KCkgKyAo
KHRpbGVYSW5kZXgodGlsZSkgPiAwKSA/IG1fYm9yZGVyVGV4ZWxzIDogMCksCisgICAgICAgIC10
aWxlQm91bmRzLnkoKSArICgodGlsZVlJbmRleCh0aWxlKSA+IDApID8gbV9ib3JkZXJUZXhlbHMg
OiAwKSk7CiAKICAgICAqbmV3RHN0ID0gRmxvYXRSZWN0KAogICAgICAgICBzcmNSZWN0SW50ZXJz
ZWN0ZWROb3JtWCAqIGRzdFJlY3Qud2lkdGgoKSArIGRzdFJlY3QueCgpLApAQCAtMjQ4LDkgKzI0
MCwxMiBAQCB2b2lkIFRpbGluZ0RhdGE6OmludGVyc2VjdERyYXdRdWFkKGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkcwogICAgICAgICBzcmNSZWN0SW50ZXJzZWN0
ZWROb3JtSCAqIGRzdFJlY3QuaGVpZ2h0KCkpOwogfQogCi1JbnRQb2ludCBUaWxpbmdEYXRhOjp0
ZXh0dXJlT2Zmc2V0KCkgY29uc3QKK0ludFBvaW50IFRpbGluZ0RhdGE6OnRleHR1cmVPZmZzZXQo
aW50IHhJbmRleCwgaW50IHlJbmRleCkgY29uc3QKIHsKLSAgICByZXR1cm4gSW50UG9pbnQobV9i
b3JkZXJUZXhlbHMsIG1fYm9yZGVyVGV4ZWxzKTsKKyAgICBpbnQgbGVmdCA9ICgheEluZGV4IHx8
IG1fbnVtVGlsZXNYID09IDEpID8gMCA6IG1fYm9yZGVyVGV4ZWxzOworICAgIGludCB0b3AgPSAo
IXlJbmRleCB8fCBtX251bVRpbGVzWSA9PSAxKSA/IDAgOiBtX2JvcmRlclRleGVsczsKKworICAg
IHJldHVybiBJbnRQb2ludChsZWZ0LCB0b3ApOwogfQogCiB2b2lkIFRpbGluZ0RhdGE6OnJlY29t
cHV0ZU51bVRpbGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9UaWxpbmdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvVGlsaW5nRGF0YS5oCmluZGV4IDQzYjA4ZTIyODc0M2E4ZGJlM2E5Y2UxNTk5ZTIzNDMwMzI1
MzVjYWMuLjNkYWJiNWRlYzMzMDZlN2UyNjMxNDA1YmRjMmMzNGU5NTJkNDIwMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuaApAQCAt
NjEsNyArNjEsNiBAQCBwdWJsaWM6CiAKICAgICBJbnRSZWN0IHRpbGVCb3VuZHMoaW50IHRpbGUp
IGNvbnN0OwogICAgIEludFJlY3QgdGlsZUJvdW5kc1dpdGhCb3JkZXIoaW50IHRpbGUpIGNvbnN0
OwotICAgIEludFJlY3QgdGlsZUJvdW5kc1dpdGhPdXRlckJvcmRlcihpbnQgdGlsZSkgY29uc3Q7
CiAgICAgRmxvYXRSZWN0IHRpbGVCb3VuZHNOb3JtYWxpemVkKGludCB0aWxlKSBjb25zdDsKICAg
ICBpbnQgdGlsZVBvc2l0aW9uWChpbnQgeEluZGV4KSBjb25zdDsKICAgICBpbnQgdGlsZVBvc2l0
aW9uWShpbnQgeUluZGV4KSBjb25zdDsKQEAgLTc1LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZv
aWQgaW50ZXJzZWN0RHJhd1F1YWQoY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGludCB0aWxlLCBGbG9hdFJlY3QqIG5ld1NyYywgRmxvYXRSZWN0KiBu
ZXdEc3QpIGNvbnN0OwogCiAgICAgLy8gRGlmZmVyZW5jZSBiZXR3ZWVuIHRpbGVCb3VuZCdzIGFu
ZCB0aWxlQm91bmRXaXRoQm9yZGVyJ3MgbG9jYXRpb24oKS4KLSAgICBJbnRQb2ludCB0ZXh0dXJl
T2Zmc2V0KCkgY29uc3Q7CisgICAgSW50UG9pbnQgdGV4dHVyZU9mZnNldChpbnQgeEluZGV4LCBp
bnQgeUluZGV4KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBUaWxpbmdEYXRhKCkgOiBtX21heFRl
eHR1cmVTaXplKDApLCBtX3RvdGFsU2l6ZVgoMCksIG1fdG90YWxTaXplWSgwKSB7fQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCBlMWJiZWUxOTU0ZDE0N2ZmNjBiNzgzZjE2MmE5NTA3ZDI3
NDBkYTI2Li5mYmRkMjE1ZWU5YzE0YjI2M2E2YmUzYTRkZDhhYjFlYmZjMTc3YWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTA3LTIxICBEYXZpZCBS
ZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBSZW1v
dmUgb3V0ZXIgYm9yZGVyIGZyb20gVGlsaW5nRGF0YSBhcyBpdCdzIG5vIGxvbmdlciBuZWVkZWQg
YnkgbGF5ZXIgY29tcG9zaXRvciBmb3IgYW50aS1hbGlhc2luZy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTQyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9UaWxpbmdEYXRhVGVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMS0wNy0yNyAgRmFkeSBTYW11ZWwgIDxm
c2FtdWVsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGRlZCBhIENocm9taXVtIFdlYktpdCBB
UEkgbWV0aG9kIHRvIHNldCB0aGUgbWluaW11bSByb3cgaGVpZ2h0IG9mIGEgcG9wdXAgbGlzdGJv
eC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsaW5nRGF0YVRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxpbmdEYXRhVGVzdC5jcHAK
aW5kZXggZGRlZjBiOTgyMjMxZjI4MDdhNDdkYzkwMzIzZGJhNDU0NmMzODk2OC4uNzYyZWRhOTM5
OTE1MGViZTRjOTcxOTQ2YTc0ZTU3YzM5YTNiNWRkNSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9UaWxpbmdEYXRhVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9UaWxpbmdEYXRhVGVzdC5jcHAKQEAgLTQxLDEwICs0MSwxMCBAQCBuYW1l
c3BhY2UgewogVEVTVChUaWxpbmdEYXRhVGVzdCwgbnVtVGlsZXNfTm9UaWxpbmcpCiB7CiAgICAg
RVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMTYsIDE2LCAxNiwgZmFsc2UpLm51bVRpbGVzKCkpOwot
ICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE3LCAxNSwgMTUsIHRydWUpLm51bVRpbGVzKCkp
OwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE4LCAxNiwgMTYsIHRydWUpLm51bVRpbGVz
KCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE2LCAxNSwgMTUsIHRydWUpLm51bVRp
bGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE2LCAxNiwgMTYsIHRydWUpLm51
bVRpbGVzKCkpOwogICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE2LCAgMSwgMTYsIGZhbHNl
KS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgxNywgMTUsIDE1LCB0
cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgxNSwgMTUsIDE1
LCB0cnVlKS5udW1UaWxlcygpKTsKIH0KIAogVEVTVChUaWxpbmdEYXRhVGVzdCwgbnVtVGlsZXNf
VGlsaW5nTm9Cb3JkZXJzKQpAQCAtMTA5LDQ1ICsxMDksNDUgQEAgVEVTVChUaWxpbmdEYXRhVGVz
dCwgbnVtVGlsZXNfVGlsaW5nV2l0aEJvcmRlcnMpCiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0Rh
dGEoLTEsIDEsICAxLCB0cnVlKS5udW1UaWxlcygpKTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5n
RGF0YSgwLCAgMSwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwogCi0gICAgRVhQRUNUX0VRKDAsIFRp
bGluZ0RhdGEoMSwgIDEsICAxLCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwg
VGlsaW5nRGF0YSgxLCAgMSwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwogICAgIEVYUEVDVF9FUSgw
LCBUaWxpbmdEYXRhKDEsICAxLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7CiAgICAgRVhQRUNUX0VR
KDAsIFRpbGluZ0RhdGEoMSwgIDIsICAxLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1Rf
RVEoMCwgVGlsaW5nRGF0YSgyLCAgMSwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVD
VF9FUSgwLCBUaWxpbmdEYXRhKDIsICAxLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQ
RUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgIDIsICAxLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBF
WFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgyLCAgMiwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotCi0g
ICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgIDEsICAxLCB0cnVlKS5udW1UaWxlcygpKTsK
LSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAgMSwgIDIsIHRydWUpLm51bVRpbGVzKCkp
OwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsICAyLCAgMSwgdHJ1ZSkubnVtVGlsZXMo
KSk7Ci0gICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgIDIsICAyLCB0cnVlKS5udW1UaWxl
cygpKTsKLSAgICBFWFBFQ1RfRVEoNiwgVGlsaW5nRGF0YSgzLCAgMiwgIDMsIHRydWUpLm51bVRp
bGVzKCkpOwotICAgIEVYUEVDVF9FUSg2LCBUaWxpbmdEYXRhKDMsICAzLCAgMiwgdHJ1ZSkubnVt
VGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDksIFRpbGluZ0RhdGEoMywgIDMsICAzLCB0cnVlKS5u
dW1UaWxlcygpKTsKLQotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDQsICAxLCAgMiwgdHJ1
ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwgIDIsICAyLCB0
cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSg0LCAgMywgIDIs
IHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDQsICA0LCAg
MiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNCwgIDUs
ICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg0LCAg
NiwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDQs
ICA3LCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEo
NCwgIDgsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0
YSg0LCAgOSwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdE
YXRhKDQsIDEwLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDYsIFRpbGlu
Z0RhdGEoNCwgMTEsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLQotICAgIEVYUEVDVF9FUSgxLCBU
aWxpbmdEYXRhKDUsICAxLCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDEs
IFRpbGluZ0RhdGEoNSwgIDIsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEo
MSwgVGlsaW5nRGF0YSg1LCAgMywgIDMsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9F
USgyLCBUaWxpbmdEYXRhKDUsICA0LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNU
X0VRKDIsIFRpbGluZ0RhdGEoNSwgIDUsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBF
Q1RfRVEoMiwgVGlsaW5nRGF0YSg1LCAgNiwgIDMsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVY
UEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA3LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAg
RVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDgsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAg
ICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgOSwgIDMsIHRydWUpLm51bVRpbGVzKCkpOwot
ICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsIDEwLCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7
Ci0gICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgMTEsICAzLCB0cnVlKS5udW1UaWxlcygp
KTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgyLCAgMSwgIDEsIHRydWUpLm51bVRpbGVz
KCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDIsICAxLCAgMiwgdHJ1ZSkubnVtVGls
ZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMiwgIDIsICAxLCB0cnVlKS5udW1U
aWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgyLCAgMiwgIDIsIHRydWUpLm51
bVRpbGVzKCkpOworCisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgIDEsICAzLCB0cnVl
KS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgMiwgIDMsIHRy
dWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAzLCAgMywg
dHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgIDQsICAz
LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCAgNSwg
IDMsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsICA2
LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoMywg
IDcsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKKworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRh
KDQsICAxLCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0Rh
dGEoNCwgIDIsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5n
RGF0YSg0LCAgMywgIDQsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxp
bmdEYXRhKDQsICA0LCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDIsIFRp
bGluZ0RhdGEoNCwgIDUsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMiwg
VGlsaW5nRGF0YSg0LCAgNiwgIDQsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgz
LCBUaWxpbmdEYXRhKDQsICA3LCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VR
KDMsIFRpbGluZ0RhdGEoNCwgIDgsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1Rf
RVEoNCwgVGlsaW5nRGF0YSg0LCAgOSwgIDQsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVD
VF9FUSg0LCBUaWxpbmdEYXRhKDQsIDEwLCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQ
RUNUX0VRKDUsIFRpbGluZ0RhdGEoNCwgMTEsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKworICAg
IEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICAxLCAgNSwgdHJ1ZSkubnVtVGlsZXMoKSk7Cisg
ICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwgIDIsICA1LCB0cnVlKS5udW1UaWxlcygpKTsK
KyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgMywgIDUsIHRydWUpLm51bVRpbGVzKCkp
OworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICA0LCAgNSwgdHJ1ZSkubnVtVGlsZXMo
KSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwgIDUsICA1LCB0cnVlKS5udW1UaWxl
cygpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSg1LCAgNiwgIDUsIHRydWUpLm51bVRp
bGVzKCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDUsICA3LCAgNSwgdHJ1ZSkubnVt
VGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwgIDgsICA1LCB0cnVlKS5u
dW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgOSwgIDUsIHRydWUp
Lm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEwLCAgNSwgdHJ1
ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMTEsICA1LCB0
cnVlKS5udW1UaWxlcygpKTsKIH0KIAogVEVTVChUaWxpbmdEYXRhVGVzdCwgdGlsZVhJbmRleEZy
b21TcmNDb29yZCkKQEAgLTE2NiwxNyArMTY2LDE3IEBAIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRp
bGVYSW5kZXhGcm9tU3JjQ29vcmQpCiAgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAs
IDEwLCBmYWxzZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgxMSkpOwogCiAgICAgRVhQRUNUX0VR
KDAsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDAp
KTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5k
ZXhGcm9tU3JjQ29vcmQoMSkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDEwLCAx
MCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgyKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRp
bGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDMpKTsKLSAg
ICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9t
U3JjQ29vcmQoNCkpOwotICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1
ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCg1KSk7Ci0gICAgRVhQRUNUX0VRKDYsIFRpbGluZ0Rh
dGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDYpKTsKLSAgICBFWFBF
Q1RfRVEoNywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29v
cmQoNykpOwotICAgIEVYUEVDVF9FUSg4LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGls
ZVhJbmRleEZyb21TcmNDb29yZCg4KSk7Ci0gICAgRVhQRUNUX0VRKDksIFRpbGluZ0RhdGEoMywg
MTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDkpKTsKLSAgICBFWFBFQ1RfRVEo
OSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMTAp
KTsKLSAgICBFWFBFQ1RfRVEoOSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5k
ZXhGcm9tU3JjQ29vcmQoMTEpKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAxMCwg
MTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMSkpOworICAgIEVYUEVDVF9FUSgxLCBU
aWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgyKSk7Cisg
ICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJv
bVNyY0Nvb3JkKDMpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRy
dWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoNCkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdE
YXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCg1KSk7CisgICAgRVhQ
RUNUX0VRKDUsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nv
b3JkKDYpKTsKKyAgICBFWFBFQ1RfRVEoNiwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRp
bGVYSW5kZXhGcm9tU3JjQ29vcmQoNykpOworICAgIEVYUEVDVF9FUSg3LCBUaWxpbmdEYXRhKDMs
IDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCg4KSk7CisgICAgRVhQRUNUX0VR
KDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDkp
KTsKKyAgICBFWFBFQ1RfRVEoNywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5k
ZXhGcm9tU3JjQ29vcmQoMTApKTsKKyAgICBFWFBFQ1RfRVEoNywgVGlsaW5nRGF0YSgzLCAxMCwg
MTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMTEpKTsKIAogICAgIEVYUEVDVF9FUSgw
LCBUaWxpbmdEYXRhKDEsIDEsIDEsIGZhbHNlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDApKTsK
ICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgyLCAyLCAyLCBmYWxzZSkudGlsZVhJbmRleEZy
b21TcmNDb29yZCgwKSk7CkBAIC0xOTQsMTMgKzE5NCwxMyBAQCBURVNUKFRpbGluZ0RhdGFUZXN0
LCB0aWxlWEluZGV4RnJvbVNyY0Nvb3JkKQogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDIs
IDIsIDIsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwogICAgIEVYUEVDVF9FUSgw
LCBUaWxpbmdEYXRhKDIsIDIsIDIsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMSkpOwog
ICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDMsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9t
U3JjQ29vcmQoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDMsIDMsIHRydWUp
LnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMSkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRh
KDMsIDMsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMikpOworICAgIEVYUEVDVF9F
USgwLCBUaWxpbmdEYXRhKDMsIDMsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMSkp
OworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDMsIDMsIHRydWUpLnRpbGVYSW5kZXhG
cm9tU3JjQ29vcmQoMikpOwogCi0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoNCwgNCwgMywg
dHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgwKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGlu
Z0RhdGEoNCwgNCwgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgxKSk7Ci0gICAgRVhQ
RUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwgNCwgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29y
ZCgyKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwgNCwgMywgdHJ1ZSkudGlsZVhJ
bmRleEZyb21TcmNDb29yZCgzKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgNCwg
MywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgwKSk7CisgICAgRVhQRUNUX0VRKDAsIFRp
bGluZ0RhdGEoMywgNCwgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgxKSk7CisgICAg
RVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmND
b29yZCgyKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgMywgdHJ1ZSkudGls
ZVhJbmRleEZyb21TcmNDb29yZCgzKSk7CiB9CiBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlWUlu
ZGV4RnJvbVNyY0Nvb3JkKQogewpAQCAtMjE4LDE3ICsyMTgsMTcgQEAgVEVTVChUaWxpbmdEYXRh
VGVzdCwgdGlsZVlJbmRleEZyb21TcmNDb29yZCkKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0
YSgzLCAxMCwgMTAsIGZhbHNlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDExKSk7CiAKICAgICBF
WFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3Jj
Q29vcmQoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSku
dGlsZVlJbmRleEZyb21TcmNDb29yZCgxKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEo
MywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDIpKTsKLSAgICBFWFBFQ1Rf
RVEoMywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQo
MykpOwotICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJ
bmRleEZyb21TcmNDb29yZCg0KSk7Ci0gICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoMywgMTAs
IDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDUpKTsKLSAgICBFWFBFQ1RfRVEoNiwg
VGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNikpOwot
ICAgIEVYUEVDVF9FUSg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZy
b21TcmNDb29yZCg3KSk7Ci0gICAgRVhQRUNUX0VRKDgsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0
cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDgpKTsKLSAgICBFWFBFQ1RfRVEoOSwgVGlsaW5n
RGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoOSkpOwotICAgIEVY
UEVDVF9FUSg5LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmND
b29yZCgxMCkpOwotICAgIEVYUEVDVF9FUSg5LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSku
dGlsZVlJbmRleEZyb21TcmNDb29yZCgxMSkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRh
KDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgxKSk7CisgICAgRVhQRUNU
X0VRKDEsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3Jk
KDIpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZ
SW5kZXhGcm9tU3JjQ29vcmQoMykpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDEw
LCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg0KSk7CisgICAgRVhQRUNUX0VRKDQs
IFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDUpKTsK
KyAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhG
cm9tU3JjQ29vcmQoNikpOworICAgIEVYUEVDVF9FUSg2LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwg
dHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg3KSk7CisgICAgRVhQRUNUX0VRKDcsIFRpbGlu
Z0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDgpKTsKKyAgICBF
WFBFQ1RfRVEoNywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3Jj
Q29vcmQoOSkpOworICAgIEVYUEVDVF9FUSg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSku
dGlsZVlJbmRleEZyb21TcmNDb29yZCgxMCkpOworICAgIEVYUEVDVF9FUSg3LCBUaWxpbmdEYXRh
KDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgxMSkpOwogCiAgICAgRVhQ
RUNUX0VRKDAsIFRpbGluZ0RhdGEoMSwgMSwgMSwgZmFsc2UpLnRpbGVZSW5kZXhGcm9tU3JjQ29v
cmQoMCkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDIsIDIsIDIsIGZhbHNlKS50aWxl
WUluZGV4RnJvbVNyY0Nvb3JkKDApKTsKQEAgLTI0Niw2MSArMjQ2LDYxIEBAIFRFU1QoVGlsaW5n
RGF0YVRlc3QsIHRpbGVZSW5kZXhGcm9tU3JjQ29vcmQpCiAgICAgRVhQRUNUX0VRKDAsIFRpbGlu
Z0RhdGEoMiwgMiwgMiwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgwKSk7CiAgICAgRVhQ
RUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgMiwgMiwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29y
ZCgxKSk7CiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywgMywgdHJ1ZSkudGlsZVlJ
bmRleEZyb21TcmNDb29yZCgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMywg
MywgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgxKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRp
bGluZ0RhdGEoMywgMywgMywgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgyKSk7CisgICAg
RVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywgMywgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmND
b29yZCgxKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywgMywgdHJ1ZSkudGls
ZVlJbmRleEZyb21TcmNDb29yZCgyKSk7CiAKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSg0
LCAzLCA0LCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDApKTsKLSAgICBFWFBFQ1RfRVEo
MCwgVGlsaW5nRGF0YSg0LCAzLCA0LCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDEpKTsK
LSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg0LCAzLCA0LCB0cnVlKS50aWxlWUluZGV4RnJv
bVNyY0Nvb3JkKDIpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg0LCAzLCA0LCB0cnVl
KS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDMpKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0
YSgzLCAzLCA0LCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDApKTsKKyAgICBFWFBFQ1Rf
RVEoMCwgVGlsaW5nRGF0YSgzLCAzLCA0LCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDEp
KTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAzLCA0LCB0cnVlKS50aWxlWUluZGV4
RnJvbVNyY0Nvb3JkKDIpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAzLCA0LCB0
cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDMpKTsKIH0KIAogVEVTVChUaWxpbmdEYXRhVGVz
dCwgdGlsZVNpemVYKQogewogICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUsICA1LCAgNSwg
ZmFsc2UpLnRpbGVTaXplWCgwKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDUs
ICA1LCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUs
ICA1LCAgNSwgdHJ1ZSkudGlsZVNpemVYKDApKTsKIAogICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdE
YXRhKDUsICA2LCAgNiwgZmFsc2UpLnRpbGVTaXplWCgwKSk7CiAgICAgRVhQRUNUX0VRKDEsIFRp
bGluZ0RhdGEoNSwgIDYsICA2LCBmYWxzZSkudGlsZVNpemVYKDEpKTsKLSAgICBFWFBFQ1RfRVEo
MywgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIHRydWUpLnRpbGVTaXplWCgwKSk7Ci0gICAgRVhQRUNU
X0VRKDMsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCB0cnVlKS50aWxlU2l6ZVgoMSkpOworICAgIEVY
UEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgdHJ1ZSkudGlsZVNpemVYKDApKTsKKyAg
ICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIHRydWUpLnRpbGVTaXplWCgxKSk7
CiAKICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIGZhbHNlKS50aWxlU2l6
ZVgoMCkpOwogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgZmFsc2UpLnRp
bGVTaXplWCgxKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCB0cnVl
KS50aWxlU2l6ZVgoMCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA4LCAgOCwg
dHJ1ZSkudGlsZVNpemVYKDEpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAgOCwg
IDgsIHRydWUpLnRpbGVTaXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwg
IDgsICA4LCB0cnVlKS50aWxlU2l6ZVgoMSkpOwogCiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0Rh
dGEoNSwgMTAsIDEwLCBmYWxzZSkudGlsZVNpemVYKDApKTsKICAgICBFWFBFQ1RfRVEoNSwgVGls
aW5nRGF0YSg1LCAxMCwgMTAsIGZhbHNlKS50aWxlU2l6ZVgoMSkpOwotICAgIEVYUEVDVF9FUSgz
LCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgdHJ1ZSkudGlsZVNpemVYKDApKTsKKyAgICBFWFBFQ1Rf
RVEoNCwgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIHRydWUpLnRpbGVTaXplWCgwKSk7CiAgICAgRVhQ
RUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCB0cnVlKS50aWxlU2l6ZVgoMSkpOwogICAg
IEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgdHJ1ZSkudGlsZVNpemVYKDIpKTsK
IAotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDExLCAxMSwgdHJ1ZSkudGlsZVNpemVY
KDIpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAxMSwgMTEsIHRydWUpLnRpbGVT
aXplWCgyKSk7CiAgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMTIsIDEyLCB0cnVlKS50
aWxlU2l6ZVgoMikpOwogfQogVEVTVChUaWxpbmdEYXRhVGVzdCwgdGlsZVNpemVZKQogewogICAg
IEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUsICA1LCAgNSwgZmFsc2UpLnRpbGVTaXplWSgwKSk7
Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDUsICA1LCB0cnVlKS50aWxlU2l6ZVko
MCkpOworICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUsICA1LCAgNSwgdHJ1ZSkudGlsZVNp
emVZKDApKTsKIAogICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgZmFsc2Up
LnRpbGVTaXplWSgwKSk7CiAgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCBm
YWxzZSkudGlsZVNpemVZKDEpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgNiwg
IDYsIHRydWUpLnRpbGVTaXplWSgwKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwg
IDYsICA2LCB0cnVlKS50aWxlU2l6ZVkoMSkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRh
KDUsICA2LCAgNiwgdHJ1ZSkudGlsZVNpemVZKDApKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5n
RGF0YSg1LCAgNiwgIDYsIHRydWUpLnRpbGVTaXplWSgxKSk7CiAKICAgICBFWFBFQ1RfRVEoNSwg
VGlsaW5nRGF0YSg1LCAgOCwgIDgsIGZhbHNlKS50aWxlU2l6ZVkoMCkpOwogICAgIEVYUEVDVF9F
USgzLCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgZmFsc2UpLnRpbGVTaXplWSgxKSk7Ci0gICAgRVhQ
RUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCB0cnVlKS50aWxlU2l6ZVkoMCkpOwotICAg
IEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgdHJ1ZSkudGlsZVNpemVZKDEpKTsK
KyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIHRydWUpLnRpbGVTaXplWSgw
KSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCB0cnVlKS50aWxlU2l6
ZVkoMSkpOwogCiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCBmYWxzZSku
dGlsZVNpemVZKDApKTsKICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIGZh
bHNlKS50aWxlU2l6ZVkoMSkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEwLCAx
MCwgdHJ1ZSkudGlsZVNpemVZKDApKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAx
MCwgMTAsIHRydWUpLnRpbGVTaXplWSgwKSk7CiAgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEo
NSwgMTAsIDEwLCB0cnVlKS50aWxlU2l6ZVkoMSkpOwogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdE
YXRhKDUsIDEwLCAxMCwgdHJ1ZSkudGlsZVNpemVZKDIpKTsKIAotICAgIEVYUEVDVF9FUSgzLCBU
aWxpbmdEYXRhKDUsIDExLCAxMSwgdHJ1ZSkudGlsZVNpemVZKDIpKTsKKyAgICBFWFBFQ1RfRVEo
NCwgVGlsaW5nRGF0YSg1LCAxMSwgMTEsIHRydWUpLnRpbGVTaXplWSgyKSk7CiAgICAgRVhQRUNU
X0VRKDMsIFRpbGluZ0RhdGEoNSwgMTIsIDEyLCB0cnVlKS50aWxlU2l6ZVkoMikpOwogfQogCkBA
IC0zMTksMTAgKzMxOSwxMCBAQCBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlU2l6ZVhfYW5kX3Rp
bGVQb3NpdGlvblgpCiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMSwgICAxLCB0cnVl
KS50aWxlUG9zaXRpb25YKDApKTsKICAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxLCAx
MDAsIHRydWUpLnRpbGVTaXplWCgwKSk7CiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywg
MSwgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25YKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5n
RGF0YSg1LCAzLCAgIDEsIHRydWUpLnRpbGVTaXplWCgwKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRp
bGluZ0RhdGEoNSwgMywgICAxLCB0cnVlKS50aWxlUG9zaXRpb25YKDApKTsKLSAgICBFWFBFQ1Rf
RVEoMywgVGlsaW5nRGF0YSg1LCAzLCAxMDAsIHRydWUpLnRpbGVTaXplWCgwKSk7Ci0gICAgRVhQ
RUNUX0VRKDAsIFRpbGluZ0RhdGEoNSwgMywgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25YKDApKTsK
KyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCAzLCAgIDEsIHRydWUpLnRpbGVTaXplWCgw
KSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywgICAxLCB0cnVlKS50aWxlUG9z
aXRpb25YKDApKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCAzLCAxMDAsIHRydWUp
LnRpbGVTaXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywgMTAwLCB0
cnVlKS50aWxlUG9zaXRpb25YKDApKTsKIAogICAgIC8vIE11bHRpcGxlIHRpbGVzOgogICAgIC8v
IG5vIGJvcmRlcgpAQCAtMzQwLDIzICszNDAsMjMgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgdGls
ZVNpemVYX2FuZF90aWxlUG9zaXRpb25YKQogICAgIC8vIE11bHRpcGxlIHRpbGVzOgogICAgIC8v
IHdpdGggYm9yZGVyCiAgICAgLy8gcG9zaXRpb25zIDAsIDIsIDMsIDQKLSAgICBFWFBFQ1RfRVEo
NCwgVGlsaW5nRGF0YSgzLCA0LCAgIDEsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9F
USgxLCBUaWxpbmdEYXRhKDMsIDQsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDApKTsKLSAgICBFWFBF
Q1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAgIDEsIHRydWUpLnRpbGVTaXplWCgxKSk7Ci0gICAg
RVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS50aWxlU2l6ZVgoMikpOwot
ICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDMp
KTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCA0LCAgIDEsIHRydWUpLnRpbGVQb3Np
dGlvblgoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsICAgMSwgdHJ1ZSku
dGlsZVBvc2l0aW9uWCgxKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgNCwgICAx
LCB0cnVlKS50aWxlUG9zaXRpb25YKDIpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgz
LCA0LCAgIDEsIHRydWUpLnRpbGVQb3NpdGlvblgoMykpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxp
bmdEYXRhKDMsIDQsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwg
VGlsaW5nRGF0YSgzLCA0LCAxMDAsIHRydWUpLnRpbGVTaXplWCgxKSk7Ci0gICAgRVhQRUNUX0VR
KDEsIFRpbGluZ0RhdGEoMywgNCwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMikpOwotICAgIEVYUEVD
VF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDMpKTsKLSAgICBF
WFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCA0LCAxMDAsIHRydWUpLnRpbGVQb3NpdGlvblgoMCkp
OwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0
aW9uWCgxKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgNCwgMTAwLCB0cnVlKS50
aWxlUG9zaXRpb25YKDIpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCA0LCAxMDAs
IHRydWUpLnRpbGVQb3NpdGlvblgoMykpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMs
IDYsICAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEo
MywgNiwgICAxLCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdE
YXRhKDMsIDYsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGls
aW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLnRpbGVTaXplWCgyKSk7CisgICAgRVhQRUNUX0VRKDIs
IFRpbGluZ0RhdGEoMywgNiwgICAxLCB0cnVlKS50aWxlU2l6ZVgoMykpOworICAgIEVYUEVDVF9F
USgwLCBUaWxpbmdEYXRhKDMsIDYsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7CisgICAg
RVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgNiwgICAxLCB0cnVlKS50aWxlUG9zaXRpb25YKDEp
KTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLnRpbGVQb3Np
dGlvblgoMikpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsIDYsICAgMSwgdHJ1ZSku
dGlsZVBvc2l0aW9uWCgzKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgNiwgMTAw
LCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDYs
IDEwMCwgdHJ1ZSkudGlsZVNpemVYKDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgz
LCA2LCAxMDAsIHRydWUpLnRpbGVTaXplWCgyKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0Rh
dGEoMywgNiwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMykpOworICAgIEVYUEVDVF9FUSgwLCBUaWxp
bmdEYXRhKDMsIDYsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7CisgICAgRVhQRUNUX0VR
KDIsIFRpbGluZ0RhdGEoMywgNiwgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25YKDEpKTsKKyAgICBF
WFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCA2LCAxMDAsIHRydWUpLnRpbGVQb3NpdGlvblgoMikp
OworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsIDYsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0
aW9uWCgzKSk7CiB9CiAKIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVTaXplWV9hbmRfdGlsZVBv
c2l0aW9uWSkKQEAgLTM3NCwxMCArMzc0LDEwIEBAIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVT
aXplWV9hbmRfdGlsZVBvc2l0aW9uWSkKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAg
IDEsIDEsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOwogICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdE
YXRhKDMsIDEwMCwgMSwgdHJ1ZSkudGlsZVNpemVZKDApKTsKICAgICBFWFBFQ1RfRVEoMCwgVGls
aW5nRGF0YSgzLCAxMDAsIDEsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOwotICAgIEVYUEVDVF9F
USgzLCBUaWxpbmdEYXRhKDUsICAgMSwgMywgdHJ1ZSkudGlsZVNpemVZKDApKTsKLSAgICBFWFBF
Q1RfRVEoMCwgVGlsaW5nRGF0YSg1LCAgIDEsIDMsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOwot
ICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEwMCwgMywgdHJ1ZSkudGlsZVNpemVZKDAp
KTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSg1LCAxMDAsIDMsIHRydWUpLnRpbGVQb3Np
dGlvblkoMCkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsICAgMSwgMywgdHJ1ZSku
dGlsZVNpemVZKDApKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAgIDEsIDMsIHRy
dWUpLnRpbGVQb3NpdGlvblkoMCkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDEw
MCwgMywgdHJ1ZSkudGlsZVNpemVZKDApKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgz
LCAxMDAsIDMsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOwogCiAgICAgLy8gTXVsdGlwbGUgdGls
ZXM6CiAgICAgLy8gbm8gYm9yZGVyCkBAIC0zOTUsMjMgKzM5NSwyMyBAQCBURVNUKFRpbGluZ0Rh
dGFUZXN0LCB0aWxlU2l6ZVlfYW5kX3RpbGVQb3NpdGlvblkpCiAgICAgLy8gTXVsdGlwbGUgdGls
ZXM6CiAgICAgLy8gd2l0aCBib3JkZXIKICAgICAvLyBwb3NpdGlvbnMgMCwgMiwgMywgNAotICAg
IEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsICAgMSwgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0g
ICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgICAxLCA0LCB0cnVlKS50aWxlU2l6ZVkoMCkp
OwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAgMSwgNCwgdHJ1ZSkudGlsZVNpemVZ
KDEpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgIDEsIDQsIHRydWUpLnRpbGVT
aXplWSgyKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgICAxLCA0LCB0cnVlKS50
aWxlU2l6ZVkoMykpOwotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsICAgMSwgNCwgdHJ1
ZSkudGlsZVBvc2l0aW9uWSgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgICAx
LCA0LCB0cnVlKS50aWxlUG9zaXRpb25ZKDEpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0
YSgzLCAgIDEsIDQsIHRydWUpLnRpbGVQb3NpdGlvblkoMikpOwotICAgIEVYUEVDVF9FUSgzLCBU
aWxpbmdEYXRhKDMsICAgMSwgNCwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgzKSk7Ci0gICAgRVhQRUNU
X0VRKDEsIFRpbGluZ0RhdGEoMywgMTAwLCA0LCB0cnVlKS50aWxlU2l6ZVkoMCkpOwotICAgIEVY
UEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwMCwgNCwgdHJ1ZSkudGlsZVNpemVZKDEpKTsKLSAg
ICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDQsIHRydWUpLnRpbGVTaXplWSgyKSk7
Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMTAwLCA0LCB0cnVlKS50aWxlU2l6ZVko
MykpOwotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEwMCwgNCwgdHJ1ZSkudGlsZVBv
c2l0aW9uWSgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMTAwLCA0LCB0cnVl
KS50aWxlUG9zaXRpb25ZKDEpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAxMDAs
IDQsIHRydWUpLnRpbGVQb3NpdGlvblkoMikpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRh
KDMsIDEwMCwgNCwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgzKSk7CisgICAgRVhQRUNUX0VRKDQsIFRp
bGluZ0RhdGEoMywgICAxLCA2LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMiwg
VGlsaW5nRGF0YSgzLCAgIDEsIDYsIHRydWUpLnRpbGVTaXplWSgwKSk7CisgICAgRVhQRUNUX0VR
KDEsIFRpbGluZ0RhdGEoMywgICAxLCA2LCB0cnVlKS50aWxlU2l6ZVkoMSkpOworICAgIEVYUEVD
VF9FUSgxLCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkudGlsZVNpemVZKDIpKTsKKyAgICBF
WFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAgIDEsIDYsIHRydWUpLnRpbGVTaXplWSgzKSk7Cisg
ICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgICAxLCA2LCB0cnVlKS50aWxlUG9zaXRpb25Z
KDApKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAgIDEsIDYsIHRydWUpLnRpbGVQ
b3NpdGlvblkoMSkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1
ZSkudGlsZVBvc2l0aW9uWSgyKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgICAx
LCA2LCB0cnVlKS50aWxlUG9zaXRpb25ZKDMpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0
YSgzLCAxMDAsIDYsIHRydWUpLnRpbGVTaXplWSgwKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGlu
Z0RhdGEoMywgMTAwLCA2LCB0cnVlKS50aWxlU2l6ZVkoMSkpOworICAgIEVYUEVDVF9FUSgxLCBU
aWxpbmdEYXRhKDMsIDEwMCwgNiwgdHJ1ZSkudGlsZVNpemVZKDIpKTsKKyAgICBFWFBFQ1RfRVEo
MiwgVGlsaW5nRGF0YSgzLCAxMDAsIDYsIHRydWUpLnRpbGVTaXplWSgzKSk7CisgICAgRVhQRUNU
X0VRKDAsIFRpbGluZ0RhdGEoMywgMTAwLCA2LCB0cnVlKS50aWxlUG9zaXRpb25ZKDApKTsKKyAg
ICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAxMDAsIDYsIHRydWUpLnRpbGVQb3NpdGlvblko
MSkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDEwMCwgNiwgdHJ1ZSkudGlsZVBv
c2l0aW9uWSgyKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgMTAwLCA2LCB0cnVl
KS50aWxlUG9zaXRpb25ZKDMpKTsKIH0KIAogVEVTVChUaWxpbmdEYXRhVGVzdCwgc2V0VG90YWxT
aXplKQpAQCAtNDY4LDcgKzQ2OCw3IEBAIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHNldE1heFRleHR1
cmVTaXplTm9Cb3JkZXJzKQogCiBURVNUKFRpbGluZ0RhdGFUZXN0LCBzZXRNYXhUZXh0dXJlU2l6
ZUJvcmRlcnMpCiB7Ci0gICAgVGlsaW5nRGF0YSBkYXRhKDgsIDE2LCAzMCwgdHJ1ZSk7CisgICAg
VGlsaW5nRGF0YSBkYXRhKDgsIDE2LCAzMiwgdHJ1ZSk7CiAgICAgRVhQRUNUX0VRKDMsIGRhdGEu
bnVtVGlsZXNYKCkpOwogICAgIEVYUEVDVF9FUSg1LCBkYXRhLm51bVRpbGVzWSgpKTsKIApAQCAt
NDg0LDcgKzQ4NCw3IEBAIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHNldE1heFRleHR1cmVTaXplQm9y
ZGVycykKIAogICAgIGRhdGEuc2V0TWF4VGV4dHVyZVNpemUoNSk7CiAgICAgRVhQRUNUX0VRKDUs
IGRhdGEubWF4VGV4dHVyZVNpemUoKSk7Ci0gICAgRVhQRUNUX0VRKDYsIGRhdGEubnVtVGlsZXNY
KCkpOworICAgIEVYUEVDVF9FUSg1LCBkYXRhLm51bVRpbGVzWCgpKTsKICAgICBFWFBFQ1RfRVEo
MTAsIGRhdGEubnVtVGlsZXNZKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102537</attachid>
            <date>2011-08-01 11:20:45 -0700</date>
            <delta_ts>2011-08-01 12:06:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64942-20110801142043.patch</filename>
            <type>text/plain</type>
            <size>71123</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIxMzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0MWVlYmIxNjhkNTM4N2U2MDc1NzQ3
M2ZiNjQzZDY3ZDAxODllOGJhLi5hZTM2YmNiMTU2YjgzMzY4YjVhZGJlMjAwZjVmMmQ5ZmRhOWQ4
NWE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDgtMDEgIERhdmlkIFJldmVtYW4gIDxy
ZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFVzZSBlZGdlLWRpc3Rh
bmNlIG1ldGhvZCBmb3IgbGF5ZXIgYW50aS1hbGlhc2luZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGVkIHJlc3VsdHMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEt
MDgtMDEgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBb
UXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nIGFmdGVyIHI5MjEyNy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCBkYzA1NzFj
ZDUyOWI0ZTA0NGMwZTM5Y2ExMGQ3YmVmYTNkMWU0MjIzLi4yNDNlMDI3MmE0N2QzZjRjYWM1MGI2
NzQyZjNiZGIwZjYwM2JhMDBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0yNzc1LDYgKzI3NzUsMjQgQEAgQlVHV0s1
NTk2OCBHUFUgV0lOIERFQlVHIDogY29tcG9zaXRpbmcvd2ViZ2wvd2ViZ2wtbm9ucHJlbXVsdGlw
bGllZC1ibGVuZC5odG1sID0KIC8vIDIgcGl4ZWwgc3RyZXRjaGluZyB3aGVuIHJlbmRlcmluZyBz
b21lIHZpZGVvcyB3aXRoIHRoZSBHUFUgKE5vdyBpdCdzIGZsYWt5KQogQlVHQ1I3NDEwMiBHUFUg
TElOVVggOiBtZWRpYS92aWRlby1jb250cm9scy1yZW5kZXJpbmcuaHRtbCA9IElNQUdFIFBBU1MK
IAorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNvbG9yLW1h
dGNoaW5nLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5nL2dlb21ldHJ5L2Fu
Y2VzdG9yLW92ZXJmbG93LWNoYW5nZS5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21wb3Np
dGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBj
b21wb3NpdGluZy9nZW9tZXRyeS9sYXllci1kdWUtdG8tbGF5ZXItY2hpbGRyZW4tZGVlcC5odG1s
ID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21wb3NpdGluZy9nZW9tZXRyeS9sYXllci1kdWUtdG8t
bGF5ZXItY2hpbGRyZW4uaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogY29tcG9zaXRpbmcvZ2Vv
bWV0cnkvdmVydGljYWwtc2Nyb2xsLWNvbXBvc2l0ZWQuaHRtbCA9IElNQUdFCitCVUdXSzY0OTQy
IDogY29tcG9zaXRpbmcvb3ZlcmZsb3cvZml4ZWQtcG9zaXRpb24tYW5jZXN0b3ItY2xpcC5odG1s
ID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVm
bGVjdGlvbi10cmFuc2l0aW9uLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5n
L3JlZmxlY3Rpb25zL3RyYW5zZm9ybS1pbnNpZGUtcmVmbGVjdGlvbi5odG1sID0gSU1BR0UKK0JV
R1dLNjQ5NDIgOiBjb21wb3NpdGluZy9zaGFkb3dzL3NoYWRvdy1kcmF3aW5nLmh0bWwgPSBJTUFH
RQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5nL3RyYW5zaXRpb25zL3NjYWxlLXRyYW5zaXRpb24t
bm8tc3RhcnQuaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogbWVkaWEvdmlkZW8tdHJhbnNmb3Jt
ZWQuaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogbWVkaWEvdmlkZW8tem9vbS1jb250cm9scy5o
dG1sICA9IElNQUdFCitCVUdXSzY0OTQyIDogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcv
YmFja2ZhY2UtdmlzaWJpbGl0eS10cmFuc2Zvcm1lZC5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIg
OiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9odWdlLWxheWVyLXJvdGF0ZWQuaHRtbCA9
IElNQUdFCitCVUdXSzY0OTQyIDogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvcGVycGVu
ZGljdWxhci1sYXllci1zb3J0aW5nLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IHBsYXRmb3Jt
L2Nocm9taXVtL2NvbXBvc2l0aW5nL3RpbnktbGF5ZXItcm90YXRlZC5odG1sID0gSU1BR0UKKwog
CiBCVUdDUjcyMjIzIDogbWVkaWEvdmlkZW8tZnJhbWUtYWNjdXJhdGUtc2Vlay5odG1sID0gSU1B
R0UgUEFTUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzFiYzk3ZGE4ZmYzZmY2YWIwOGFmZjhlN2FkY2U2NGQ3
MTU2MTJiZi4uNjhlNWZkZjJkYzdjNzZjOGYzMmUyZWI2ZGYwMjgzZDJkODE1MWEzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDExLTA4LTAxICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1h
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBVc2UgZWRnZS1kaXN0YW5jZSBt
ZXRob2QgZm9yIGxheWVyIGFudGktYWxpYXNpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDk0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVzZSBhbiBlZGdlIGRpc3RhbmNlIGJhc2VkIG1ldGhvZCBp
bnN0ZWFkIG9mIHRoZSBjdXJyZW50IGxpbmVhcgorICAgICAgICBmaWx0ZXJpbmcgbWV0aG9kIGZv
ciBwcm9kdWNpbmcgYW50aS1hbGlhc2VkIGVkZ2VzIG9uIDNEIHRyYW5zZm9ybWVkCisgICAgICAg
IGxheWVycy4gVGhpcyByZW1vdmVzIHRoZSBvdXRlciBib3JkZXIgaGFuZGxpbmcgZnJvbSBUaWxp
bmdEYXRhIGFzCisgICAgICAgIGl0J3Mgbm8gbG9uZ2VyIG5lZWRlZCBmb3IgYW50aS1hbGlhc2lu
Zy4KKworICAgICAgICBUZXN0czogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvdGlueS1s
YXllci1yb3RhdGVkLmh0bWwgKGV4aXN0aW5nKQorICAgICAgICAgICAgICAgcGxhdGZvcm0vY2hy
b21pdW0vY29tcG9zaXRpbmcvaHVnZS1sYXllci1yb3RhdGVkLmh0bWwgKGV4aXN0aW5nKQorICAg
ICAgICAgICAgICAgY29tcG9zaXRpbmcvaW1hZ2VzL2NvbnRlbnQtaW1hZ2UtY2hhbmdlLmh0bWwg
KGV4aXN0aW5nKQorICAgICAgICAgICAgICAgVGlsaW5nRGF0YVRlc3QgaW4gd2Via2l0X3VuaXRf
dGVzdHMKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5NYXRyaXgpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0RHJhd1ZpZXdwb3J0UmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbUFBKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dp
enpsZUFBKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
d2luZG93TWF0cml4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRpbGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVt
OjpzZXRUaWxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OnRp
bGVMYXllclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjppbnZh
bGlkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0
ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpkcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6Z3Jvd0xheWVyVG9Db250YWluKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJUaWxlOjpWZXJ0ZXhTaGFkZXJUaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclRpbGU6OmluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6VmVydGV4U2hhZGVyVGlsZTo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmc6OkZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZzo6aW5pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBOjpnZXRTaGFkZXJTdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhh
QUE6OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2hhZGVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclRpbGU6
OnZzVGV4VHJhbnNmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhB
bHBoYUFBQmluZGluZzo6YWxwaGFMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVu
dFRleEFscGhhQUFCaW5kaW5nOjpzYW1wbGVyTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZzo6ZnNUZXhUcmFuc2Zvcm1Mb2NhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFnbWVudFRleEFscGhhQUFCaW5kaW5nOjplZGdlTG9jYXRpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OlRpbGVkTGF5ZXJDaHJv
bWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZVRpbGVT
aXplQW5kVGlsaW5nT3B0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlVGlsZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hy
b21pdW06OnNldElzTWFzayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1Rp
bGluZ0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU51bVRpbGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6OnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsaW5nRGF0YTo6dGlsZVlJbmRleEZyb21TcmNDb29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpUaWxpbmdEYXRhOjp0aWxlU2l6ZVgpOgorICAgICAgICAoV2ViQ29yZTo6VGls
aW5nRGF0YTo6dGlsZVNpemVZKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6OmludGVy
c2VjdERyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6OnRleHR1cmVPZmZz
ZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmg6CisKIDIw
MTEtMDgtMDEgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFtRdF0gT3BlbkdMU2hpbXMgZG9lcyBub3QgYnVpbGQgb24gQVJNCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCAzOTVmZWM2OTU2ZWYxNzA4NGQyMGQ3ZTU1YmM3
ZmY0YzQzZWJjZGNjLi5hNWNhN2IyMWI4ZGQyNGRhYjhhZTE4ZmZjOTllN2ExZGZlYzgzMmRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTM4NCw2ICszODQsMjEg
QEAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IG9ydGhvTWF0cml4KGZsb2F0IGxlZnQsIGZs
b2F0IHJpZ2h0LCBmbG9hdCBib3R0b20sIGYKICAgICByZXR1cm4gb3J0aG87CiB9CiAKK3N0YXRp
YyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW5NYXRyaXgoaW50IHgsIGludCB5LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpCit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc2NyZWVuOworCisg
ICAgLy8gTWFwIHRvIHZpZXdwb3J0LgorICAgIHNjcmVlbi50cmFuc2xhdGUzZCh4LCB5LCAwKTsK
KyAgICBzY3JlZW4uc2NhbGUzZCh3aWR0aCwgaGVpZ2h0LCAwKTsKKworICAgIC8vIE1hcCB4LCB5
IGFuZCB6IHRvIHVuaXQgc3F1YXJlLgorICAgIHNjcmVlbi50cmFuc2xhdGUzZCgwLjUsIDAuNSwg
MC41KTsKKyAgICBzY3JlZW4uc2NhbGUzZCgwLjUsIDAuNSwgMC41KTsKKworICAgIHJldHVybiBz
Y3JlZW47Cit9CisKIFBhc3NSZWZQdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgUGFzc093
blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gY29udGVudFBhaW50LCBib29sIGFjY2VsZXJhdGVE
cmF3aW5nKQogewogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IGNsaWVu
dC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCgpOwpAQCAtNzM3LDYgKzc1Miw3IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCkKIAogICAgIC8vIFRoZSBHTCB2aWV3cG9ydCBjb3ZlcnMgdGhl
IGVudGlyZSB2aXNpYmxlIGFyZWEsIGluY2x1ZGluZyB0aGUgc2Nyb2xsYmFycy4KICAgICBHTEMo
bV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIG1fdmlld3BvcnRWaXNp
YmxlUmVjdC53aWR0aCgpLCBtX3ZpZXdwb3J0VmlzaWJsZVJlY3QuaGVpZ2h0KCkpKTsKKyAgICBt
X3dpbmRvd01hdHJpeCA9IHNjcmVlbk1hdHJpeCgwLCAwLCBtX3ZpZXdwb3J0VmlzaWJsZVJlY3Qu
d2lkdGgoKSwgbV92aWV3cG9ydFZpc2libGVSZWN0LmhlaWdodCgpKTsKIAogICAgIC8vIEJpbmQg
dGhlIGNvbW1vbiB2ZXJ0ZXggYXR0cmlidXRlcyB1c2VkIGZvciBkcmF3aW5nIGFsbCB0aGUgbGF5
ZXJzLgogICAgIG1fc2hhcmVkR2VvbWV0cnktPnByZXBhcmVGb3JEcmF3KCk7CkBAIC0xMTIxLDYg
KzExMzcsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0RHJhd1ZpZXdwb3J0UmVj
dChjb25zdCBJbnRSZWN0JiBkcmF3UmVjdCwgYm9vbCBmbAogICAgIGVsc2UKICAgICAgICAgbV9w
cm9qZWN0aW9uTWF0cml4ID0gb3J0aG9NYXRyaXgoZHJhd1JlY3QueCgpLCBkcmF3UmVjdC5tYXhY
KCksIGRyYXdSZWN0LnkoKSwgZHJhd1JlY3QubWF4WSgpKTsKICAgICBHTEMobV9jb250ZXh0Lmdl
dCgpLCBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIGRyYXdSZWN0LndpZHRoKCksIGRyYXdSZWN0
LmhlaWdodCgpKSk7CisgICAgbV93aW5kb3dNYXRyaXggPSBzY3JlZW5NYXRyaXgoMCwgMCwgZHJh
d1JlY3Qud2lkdGgoKSwgZHJhd1JlY3QuaGVpZ2h0KCkpOwogfQogCiAKQEAgLTEyMjAsNiArMTIz
NywyOCBAQCBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW1Td2l6emxlKiBMYXllclJl
bmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aQogICAgIHJldHVybiBtX3RpbGVyUHJvZ3Jh
bVN3aXp6bGUuZ2V0KCk7CiB9CiAKK2NvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbUFB
KiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbUFBKCkKK3sKKyAgICBpZiAoIW1f
dGlsZXJQcm9ncmFtQUEpCisgICAgICAgIG1fdGlsZXJQcm9ncmFtQUEgPSBhZG9wdFB0cihuZXcg
TGF5ZXJUaWxlckNocm9taXVtOjpQcm9ncmFtQUEobV9jb250ZXh0LmdldCgpKSk7CisgICAgaWYg
KCFtX3RpbGVyUHJvZ3JhbUFBLT5pbml0aWFsaXplZCgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5U
KCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbUFBOjppbml0aWFsaXplIiwgdGhp
cywgMCk7CisgICAgICAgIG1fdGlsZXJQcm9ncmFtQUEtPmluaXRpYWxpemUoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIG1fdGlsZXJQcm9ncmFtQUEuZ2V0KCk7Cit9CisKK2NvbnN0IExheWVyVGlsZXJD
aHJvbWl1bTo6UHJvZ3JhbVN3aXp6bGVBQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclBy
b2dyYW1Td2l6emxlQUEoKQoreworICAgIGlmICghbV90aWxlclByb2dyYW1Td2l6emxlQUEpCisg
ICAgICAgIG1fdGlsZXJQcm9ncmFtU3dpenpsZUFBID0gYWRvcHRQdHIobmV3IExheWVyVGlsZXJD
aHJvbWl1bTo6UHJvZ3JhbVN3aXp6bGVBQShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICBpZiAoIW1f
dGlsZXJQcm9ncmFtU3dpenpsZUFBLT5pbml0aWFsaXplZCgpKSB7CisgICAgICAgIFRSQUNFX0VW
RU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6bGVBQTo6aW5pdGlh
bGl6ZSIsIHRoaXMsIDApOworICAgICAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQS0+aW5pdGlh
bGl6ZSgpOworICAgIH0KKyAgICByZXR1cm4gbV90aWxlclByb2dyYW1Td2l6emxlQUEuZ2V0KCk7
Cit9CisKIGNvbnN0IENDQ2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmNhbnZhc0xheWVyUHJvZ3JhbSgpCiB7CiAgICAgaWYgKCFtX2NhbnZhc0xheWVyUHJv
Z3JhbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggY2IxNDQ3NDk0N2Q0
M2U3OGY1M2QyZGU5MjdiNWU1MWQyZmUzNmUwYi4uMDQ4ZWUwMzgyM2ZkZDkwOWY2ZDBmNDVlZmU5
ZTc0NDYzYjI0NGE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTEy
Miw2ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGVidWdHTENhbGwoR3JhcGhp
Y3NDb250ZXh0M0QqLCBjb25zdCBjaGFyKiBjb21tYW5kLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQg
bGluZSk7CiAKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJp
eCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlvbk1hdHJpeDsgfQorICAgIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB3aW5kb3dNYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd01h
dHJpeDsgfQogCiAgICAgYm9vbCBjaGVja1RleHR1cmVTaXplKGNvbnN0IEludFNpemUmKTsKICAg
ICBpbnQgbWF4VGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBtX21heFRleHR1cmVTaXplOyB9
CkBAIC0xMzMsNiArMTM0LDggQEAgcHVibGljOgogICAgIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJv
bWl1bTo6TWFza1Byb2dyYW0qIHJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSgpOwogICAgIGNvbnN0
IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbSogdGlsZXJQcm9ncmFtKCk7CiAgICAgY29uc3Qg
TGF5ZXJUaWxlckNocm9taXVtOjpQcm9ncmFtU3dpenpsZSogdGlsZXJQcm9ncmFtU3dpenpsZSgp
OworICAgIGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbUFBKiB0aWxlclByb2dyYW1B
QSgpOworICAgIGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbVN3aXp6bGVBQSogdGls
ZXJQcm9ncmFtU3dpenpsZUFBKCk7CiAgICAgY29uc3QgQ0NDYW52YXNMYXllckltcGw6OlByb2dy
YW0qIGNhbnZhc0xheWVyUHJvZ3JhbSgpOwogICAgIGNvbnN0IENDUGx1Z2luTGF5ZXJJbXBsOjpQ
cm9ncmFtKiBwbHVnaW5MYXllclByb2dyYW0oKTsKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpSR0JBUHJvZ3JhbSogdmlkZW9MYXllclJHQkFQcm9ncmFtKCk7CkBAIC0yMTEsNiArMjE0LDcg
QEAgcHJpdmF0ZToKICAgICBJbnRQb2ludCBtX3ZpZXdwb3J0U2Nyb2xsUG9zaXRpb247CiAKICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3Byb2plY3Rpb25NYXRyaXg7CisgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggbV93aW5kb3dNYXRyaXg7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
bV9yb290TGF5ZXI7CiAgICAgT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IG1fcm9vdExheWVy
VGV4dHVyZVVwZGF0ZXI7CkBAIC0yMzksNiArMjQzLDggQEAgcHJpdmF0ZToKICAgICBPd25QdHI8
UmVuZGVyU3VyZmFjZUNocm9taXVtOjpNYXNrUHJvZ3JhbT4gbV9yZW5kZXJTdXJmYWNlTWFza1By
b2dyYW07CiAgICAgT3duUHRyPExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbT4gbV90aWxlclBy
b2dyYW07CiAgICAgT3duUHRyPExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbVN3aXp6bGU+IG1f
dGlsZXJQcm9ncmFtU3dpenpsZTsKKyAgICBPd25QdHI8TGF5ZXJUaWxlckNocm9taXVtOjpQcm9n
cmFtQUE+IG1fdGlsZXJQcm9ncmFtQUE7CisgICAgT3duUHRyPExheWVyVGlsZXJDaHJvbWl1bTo6
UHJvZ3JhbVN3aXp6bGVBQT4gbV90aWxlclByb2dyYW1Td2l6emxlQUE7CiAgICAgT3duUHRyPEND
Q2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFtPiBtX2NhbnZhc0xheWVyUHJvZ3JhbTsKICAgICBPd25Q
dHI8Q0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dyYW0+IG1fdmlkZW9MYXllclJHQkFQcm9ncmFt
OwogICAgIE93blB0cjxDQ1ZpZGVvTGF5ZXJJbXBsOjpZVVZQcm9ncmFtPiBtX3ZpZGVvTGF5ZXJZ
VVZQcm9ncmFtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKaW5kZXggYTBiZDEwOGE4
MjU0ZWM5ZTM2YTgzZDM1OWI1YTVhODVjNjc3YzdkYi4uNmY5Zjc2Yjk1YzI5YjkyMjgxNGNjMmRj
NzI0Zjk3NTFmMmYzZTI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCkBAIC04
NCw2ICs4NCw3IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpzZXRUaWxlU2l6ZShjb25zdCBJ
bnRTaXplJiBzaXplKQogICAgIHJlc2V0KCk7CiAKICAgICBtX3RpbGVTaXplID0gc2l6ZTsKKyAg
ICBtX3RpbGluZ0RhdGEuc2V0TWF4VGV4dHVyZVNpemUobWF4KHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSkpOwogfQogCiBMYXllclRleHR1cmUqIExheWVyVGlsZXJDaHJvbWl1bTo6Z2V0U2lu
Z2xlVGV4dHVyZSgpCkBAIC0xODksMTMgKzE5MCw5IEBAIEludFJlY3QgTGF5ZXJUaWxlckNocm9t
aXVtOjp0aWxlQ29udGVudFJlY3QoY29uc3QgVGlsZSogdGlsZSkgY29uc3QKIEludFJlY3QgTGF5
ZXJUaWxlckNocm9taXVtOjp0aWxlTGF5ZXJSZWN0KGNvbnN0IFRpbGUqIHRpbGUpIGNvbnN0CiB7
CiAgICAgY29uc3QgaW50IGluZGV4ID0gbV90aWxpbmdEYXRhLnRpbGVJbmRleCh0aWxlLT5pKCks
IHRpbGUtPmooKSk7Ci0gICAgcmV0dXJuIG1fdGlsaW5nRGF0YS50aWxlQm91bmRzV2l0aEJvcmRl
cihpbmRleCk7Ci19Ci0KLUludFJlY3QgTGF5ZXJUaWxlckNocm9taXVtOjp0aWxlVGV4UmVjdChj
b25zdCBUaWxlKiB0aWxlKSBjb25zdAotewotICAgIGNvbnN0IGludCBpbmRleCA9IG1fdGlsaW5n
RGF0YS50aWxlSW5kZXgodGlsZS0+aSgpLCB0aWxlLT5qKCkpOwotICAgIHJldHVybiBtX3RpbGlu
Z0RhdGEudGlsZUJvdW5kc1dpdGhPdXRlckJvcmRlcihpbmRleCk7CisgICAgSW50UmVjdCBsYXll
clJlY3QgPSBtX3RpbGluZ0RhdGEudGlsZUJvdW5kc1dpdGhCb3JkZXIoaW5kZXgpOworICAgIGxh
eWVyUmVjdC5zZXRTaXplKG1fdGlsZVNpemUpOworICAgIHJldHVybiBsYXllclJlY3Q7CiB9CiAK
IHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCkKQEAgLTIwMyw5ICsyMDAsNiBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6
aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgaWYgKGNvbnRl
bnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzRHJhdykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
SW50U2l6ZSBvbGRMYXllclNpemUobV90aWxpbmdEYXRhLnRvdGFsU2l6ZVgoKSwgbV90aWxpbmdE
YXRhLnRvdGFsU2l6ZVkoKSk7Ci0gICAgY29uc3QgSW50UmVjdCBvbGRMYXllclJlY3QgPSBJbnRS
ZWN0KEludFBvaW50KCksIG9sZExheWVyU2l6ZSk7Ci0KICAgICBncm93TGF5ZXJUb0NvbnRhaW4o
Y29udGVudFJlY3QpOwogCiAgICAgLy8gRGlydHkgcmVjdHMgYXJlIGFsd2F5cyBpbiBsYXllciBz
cGFjZSwgYXMgdGhlIGxheWVyIGNvdWxkIGJlIHJlcG9zaXRpb25lZApAQCAtMjIyLDEyICsyMTYs
NiBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QpCiAgICAgICAgICAgICBJbnRSZWN0IGJvdW5kID0gdGlsZUxheWVyUmVj
dCh0aWxlKTsKICAgICAgICAgICAgIGJvdW5kLmludGVyc2VjdChsYXllclJlY3QpOwogICAgICAg
ICAgICAgdGlsZS0+bV9kaXJ0eUxheWVyUmVjdC51bml0ZShib3VuZCk7Ci0KLSAgICAgICAgICAg
IC8vIEludmFsaWRhdGUgb2xkIGxheWVyIGFyZWEgdG8gY2xlYXIgYW55IGNvbnRlbnRzIGxlZnQg
ZnJvbQotICAgICAgICAgICAgLy8gcHJldmlvdXMgbGF5ZXIgc2l6ZS4KLSAgICAgICAgICAgIElu
dFJlY3Qgb2xkQm91bmQgPSB0aWxlTGF5ZXJSZWN0KHRpbGUpOwotICAgICAgICAgICAgb2xkQm91
bmQuaW50ZXJzZWN0KG9sZExheWVyUmVjdCk7Ci0gICAgICAgICAgICB0aWxlLT5tX2RpcnR5TGF5
ZXJSZWN0LnVuaXRlKG9sZEJvdW5kKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI4NCw3ICsy
NzIsNiBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBMYXllclRleHR1cgogICAgIC8vIENyZWF0ZSB0aWxlcyBhcyBu
ZWVkZWQsIGV4cGFuZGluZyBhIGRpcnR5IHJlY3QgdG8gY29udGFpbiBhbGwKICAgICAvLyB0aGUg
ZGlydHkgcmVnaW9ucyBjdXJyZW50bHkgYmVpbmcgZHJhd24uCiAgICAgSW50UmVjdCBkaXJ0eUxh
eWVyUmVjdDsKLSAgICBJbnRTaXplIHRpbGVTaXplOwogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0
LCBib3R0b207CiAgICAgY29udGVudFJlY3RUb1RpbGVJbmRpY2VzKGNvbnRlbnRSZWN0LCBsZWZ0
LCB0b3AsIHJpZ2h0LCBib3R0b20pOwogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9t
OyArK2opIHsKQEAgLTI5MywxOSArMjgwLDE2IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIExheWVyVGV4dHVyCiAg
ICAgICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAgICAgICAgICAgdGlsZSA9IGNyZWF0ZVRpbGUo
aSwgaik7CiAKLSAgICAgICAgICAgIEludFNpemUgdGV4U2l6ZSA9IHRpbGVUZXhSZWN0KHRpbGUp
LnNpemUoKTsKLSAgICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5pc1ZhbGlkKHRleFNp
emUsIG1fdGV4dHVyZUZvcm1hdCkpCisgICAgICAgICAgICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+
aXNWYWxpZChtX3RpbGVTaXplLCBtX3RleHR1cmVGb3JtYXQpKQogICAgICAgICAgICAgICAgIHRp
bGUtPm1fZGlydHlMYXllclJlY3QgPSB0aWxlTGF5ZXJSZWN0KHRpbGUpOwogCi0gICAgICAgICAg
ICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+cmVzZXJ2ZSh0ZXhTaXplLCBtX3RleHR1cmVGb3JtYXQp
KSB7CisgICAgICAgICAgICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+cmVzZXJ2ZShtX3RpbGVTaXpl
LCBtX3RleHR1cmVGb3JtYXQpKSB7CiAgICAgICAgICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVl
OwogICAgICAgICAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBkaXJ0eUxheWVyUmVjdC51bml0ZSh0aWxlLT5tX2Rp
cnR5TGF5ZXJSZWN0KTsKLQotICAgICAgICAgICAgdGlsZVNpemUgPSB0aWxlU2l6ZS5leHBhbmRl
ZFRvKHRleFNpemUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMTgsNyArMzAyLDcgQEAgdm9p
ZCBMYXllclRpbGVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgTGF5ZXJUZXh0dXIKICAgICBpZiAoZGlydHlMYXllclJlY3QuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICB0ZXh0dXJlVXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKG1f
cGFpbnRSZWN0LCB0aWxlU2l6ZSwgbV90aWxpbmdEYXRhLmJvcmRlclRleGVscygpKTsKKyAgICB0
ZXh0dXJlVXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0LCBtX3RpbGVTaXplLCBt
X3RpbGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkpOwogfQogCiB2b2lkIExheWVyVGlsZXJDaHJvbWl1
bTo6dXBkYXRlUmVjdChMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcikKQEAgLTM0
Myw4ICszMjcsNyBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6dXBkYXRlUmVjdChMYXllclRl
eHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcikKIAogICAgICAgICAgICAgLy8gQ2FsY3VsYXRl
IHBhZ2Utc3BhY2UgcmVjdGFuZ2xlIHRvIGNvcHkgZnJvbS4KICAgICAgICAgICAgIEludFJlY3Qg
c291cmNlUmVjdCA9IHRpbGVDb250ZW50UmVjdCh0aWxlKTsKLSAgICAgICAgICAgIEludFJlY3Qg
dGV4UmVjdCA9IHRpbGVUZXhSZWN0KHRpbGUpOwotICAgICAgICAgICAgY29uc3QgSW50UG9pbnQg
YW5jaG9yID0gdGV4UmVjdC5sb2NhdGlvbigpOworICAgICAgICAgICAgY29uc3QgSW50UG9pbnQg
YW5jaG9yID0gc291cmNlUmVjdC5sb2NhdGlvbigpOwogICAgICAgICAgICAgc291cmNlUmVjdC5p
bnRlcnNlY3QobGF5ZXJSZWN0VG9Db250ZW50UmVjdCh0aWxlLT5tX2RpcnR5TGF5ZXJSZWN0KSk7
CiAgICAgICAgICAgICAvLyBQYWludCByZWN0IG5vdCBndWFyYW50ZWVkIHRvIGxpbmUgdXAgb24g
dGlsZSBib3VuZGFyaWVzLCBzbwogICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgc291cmNl
UmVjdCBkb2Vzbid0IGV4dGVuZCBvdXRzaWRlIG9mIGl0LgpAQCAtMzk0LDEyICszNzcsMjIgQEAg
dm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXcoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWEKICAgICBpZiAobV9za2lwc0RyYXcgfHwgIW1fdGlsZXMu
c2l6ZSgpIHx8IGNvbnRlbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
Ly8gVXNlIGFudGktYWxpYXNpbmcgcHJvZ3JhbXMgd2hlbiBib3JkZXIgdGV4ZWxzIGFyZSBwcmVz
ZXQgYW5kIHRyYW5zZm9ybQorICAgIC8vIGlzIG5vdCBhbiBpbnRlZ2VyIHRyYW5zbGF0aW9uLgor
ICAgIGJvb2wgdXNlQUEgPSAobV90aWxpbmdEYXRhLmJvcmRlclRleGVscygpICYmICFnbG9iYWxU
cmFuc2Zvcm0uaXNJbnRlZ2VyVHJhbnNsYXRpb24oKSk7CisKICAgICBzd2l0Y2ggKG1fc2FtcGxl
ZFRleGVsRm9ybWF0KSB7CiAgICAgY2FzZSBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4
ZWxGb3JtYXRSR0JBOgotICAgICAgICBkcmF3VGlsZXMoY29udGVudFJlY3QsIGdsb2JhbFRyYW5z
Zm9ybSwgb3BhY2l0eSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW0oKSk7CisgICAgICAg
IGlmICh1c2VBQSkKKyAgICAgICAgICAgIGRyYXdUaWxlcyhjb250ZW50UmVjdCwgZ2xvYmFsVHJh
bnNmb3JtLCBvcGFjaXR5LCBsYXllclJlbmRlcmVyKCktPnRpbGVyUHJvZ3JhbUFBKCksIGxheWVy
UmVuZGVyZXIoKS0+dGlsZXJQcm9ncmFtQUEoKS0+ZnJhZ21lbnRTaGFkZXIoKS5mcmFnbWVudFRl
eFRyYW5zZm9ybUxvY2F0aW9uKCksIGxheWVyUmVuZGVyZXIoKS0+dGlsZXJQcm9ncmFtQUEoKS0+
ZnJhZ21lbnRTaGFkZXIoKS5lZGdlTG9jYXRpb24oKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGRyYXdUaWxlcyhjb250ZW50UmVjdCwgZ2xvYmFsVHJhbnNmb3JtLCBvcGFjaXR5LCBsYXll
clJlbmRlcmVyKCktPnRpbGVyUHJvZ3JhbSgpLCAtMSwgLTEpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE6Ci0gICAg
ICAgIGRyYXdUaWxlcyhjb250ZW50UmVjdCwgZ2xvYmFsVHJhbnNmb3JtLCBvcGFjaXR5LCBsYXll
clJlbmRlcmVyKCktPnRpbGVyUHJvZ3JhbVN3aXp6bGUoKSk7CisgICAgICAgIGlmICh1c2VBQSkK
KyAgICAgICAgICAgIGRyYXdUaWxlcyhjb250ZW50UmVjdCwgZ2xvYmFsVHJhbnNmb3JtLCBvcGFj
aXR5LCBsYXllclJlbmRlcmVyKCktPnRpbGVyUHJvZ3JhbVN3aXp6bGVBQSgpLCBsYXllclJlbmRl
cmVyKCktPnRpbGVyUHJvZ3JhbVN3aXp6bGVBQSgpLT5mcmFnbWVudFNoYWRlcigpLmZyYWdtZW50
VGV4VHJhbnNmb3JtTG9jYXRpb24oKSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW1Td2l6
emxlQUEoKS0+ZnJhZ21lbnRTaGFkZXIoKS5lZGdlTG9jYXRpb24oKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGRyYXdUaWxlcyhjb250ZW50UmVjdCwgZ2xvYmFsVHJhbnNmb3JtLCBvcGFj
aXR5LCBsYXllclJlbmRlcmVyKCktPnRpbGVyUHJvZ3JhbVN3aXp6bGUoKSwgLTEsIC0xKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC00MTEsMTcgKzQwNCw3IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpncm93TGF5ZXJU
b0NvbnRhaW4oY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgLy8gR3JvdyB0aGUgdGls
ZSBhcnJheSB0byBjb250YWluIHRoaXMgY29udGVudCByZWN0LgogICAgIEludFJlY3QgbGF5ZXJS
ZWN0ID0gY29udGVudFJlY3RUb0xheWVyUmVjdChjb250ZW50UmVjdCk7CiAgICAgSW50U2l6ZSBy
ZWN0U2l6ZSA9IEludFNpemUobGF5ZXJSZWN0Lm1heFgoKSwgbGF5ZXJSZWN0Lm1heFkoKSk7Ci0g
ICAgSW50U2l6ZSB0ZXhTaXplID0gbV90aWxlU2l6ZTsKLQotICAgIC8vIFVzZSByZWN0IHdpdGgg
Ym9yZGVyIHRleGVscyBhcyBtYXggdGV4dHVyZSBzaXplIHdoZW4gdGlsZSBzaXplCi0gICAgLy8g
aGFzIG5vdCBiZWVuIHNwZWNpZmllZC4KLSAgICBpZiAodGV4U2l6ZS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgdGV4U2l6ZSA9IHJlY3RTaXplOwotICAgICAgICBpZiAobV90aWxpbmdEYXRhLmJvcmRl
clRleGVscygpKQotICAgICAgICAgICAgdGV4U2l6ZS5leHBhbmQoMiwgMik7Ci0gICAgfQogCi0g
ICAgbV90aWxpbmdEYXRhLnNldE1heFRleHR1cmVTaXplKG1heCh0ZXhTaXplLndpZHRoKCksIHRl
eFNpemUuaGVpZ2h0KCkpKTsKICAgICBJbnRTaXplIG9sZExheWVyU2l6ZShtX3RpbGluZ0RhdGEu
dG90YWxTaXplWCgpLCBtX3RpbGluZ0RhdGEudG90YWxTaXplWSgpKTsKICAgICBJbnRTaXplIG5l
d1NpemUgPSByZWN0U2l6ZS5leHBhbmRlZFRvKG9sZExheWVyU2l6ZSk7CiAgICAgbV90aWxpbmdE
YXRhLnNldFRvdGFsU2l6ZShuZXdTaXplLndpZHRoKCksIG5ld1NpemUuaGVpZ2h0KCkpOwpAQCAt
NDU3LDE0ICs0NDAsOSBAQCBzdGF0aWMgRmxvYXRQb2ludCBpbnRlcnNlY3QoY29uc3QgRWRnZSYg
YSwgY29uc3QgRWRnZSYgYikKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFQ+Ci12b2lkIExheWVyVGls
ZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgZ2xvYmFsVHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBjb25z
dCBUKiBwcm9ncmFtKQordm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXdUaWxlcyhjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGdsb2JhbFRy
YW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgVCogcHJvZ3JhbSwgaW50IGZyYWdtZW50VGV4
VHJhbnNmb3JtTG9jYXRpb24sIGludCBlZGdlTG9jYXRpb24pCiB7Ci0gICAgR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyQ29udGV4dCgpOwotICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwotICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVy
TG9jYXRpb24oKSwgMCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggbWF0cml4KGdsb2JhbFRyYW5zZm9ybSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0
cml4KGxheWVyUmVuZGVyZXIoKS0+d2luZG93TWF0cml4KCkgKiBsYXllclJlbmRlcmVyKCktPnBy
b2plY3Rpb25NYXRyaXgoKSAqIGdsb2JhbFRyYW5zZm9ybSk7CiAKICAgICAvLyBXZSBkb24ndCBj
YXJlIGFib3V0IFogY29tcG9uZW50LgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeFhZ
VyA9CkBAIC00NzgsNDQgKzQ1Niw2NSBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1Rp
bGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdAogICAgICAg
ICByZXR1cm47CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlID0gbWF0cml4WFlX
LmludmVyc2UoKTsKLSAgICBJbnRSZWN0IGJvdW5kcyhtX2xheWVyUG9zaXRpb24sIEludFNpemUo
bV90aWxpbmdEYXRhLnRvdGFsU2l6ZVgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV90aWxpbmdEYXRhLnRvdGFsU2l6ZVkoKSkpOwogCi0gICAgLy8gSW5j
bHVkZSBvdXRlciBib3JkZXIgdGV4ZWxzIGluIGJvdW5kcy4KLSAgICBib3VuZHMuaW5mbGF0ZSht
X3RpbGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkpOworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCks
IDApKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRTApKTsKIAotICAgIC8vIE1hcCBib3VuZHMgdG8gZGV2aWNlIHNwYWNl
LgotICAgIEZsb2F0UXVhZCBib3VuZHNRdWFkID0gbWF0cml4Lm1hcFF1YWQoRmxvYXRRdWFkKGJv
dW5kcykpOworICAgIC8vIE1hcCBjb250ZW50IHJlY3RhbmdsZSB0byBkZXZpY2Ugc3BhY2UuCisg
ICAgRmxvYXRRdWFkIGRldmljZVF1YWQgPSBtYXRyaXgubWFwUXVhZChGbG9hdFF1YWQoY29udGVu
dFJlY3QpKTsKIAogICAgIC8vIENvdW50ZXItY2xvY2t3aXNlPwotICAgIGZsb2F0IHNpZ24gPSBp
c0NDVyhib3VuZHNRdWFkKSA/IC0xIDogMTsKKyAgICBmbG9hdCBzaWduID0gaXNDQ1coZGV2aWNl
UXVhZCkgPyAtMSA6IDE7CiAKICAgICAvLyBDb21wdXRlIG91dGVyIGVkZ2VzLgotICAgIEVkZ2Ug
bGVmdEVkZ2UgPSBjb21wdXRlRWRnZShib3VuZHNRdWFkLnA0KCksIGJvdW5kc1F1YWQucDEoKSwg
c2lnbik7Ci0gICAgRWRnZSByaWdodEVkZ2UgPSBjb21wdXRlRWRnZShib3VuZHNRdWFkLnAyKCks
IGJvdW5kc1F1YWQucDMoKSwgc2lnbik7Ci0gICAgRWRnZSB0b3BFZGdlID0gY29tcHV0ZUVkZ2Uo
Ym91bmRzUXVhZC5wMSgpLCBib3VuZHNRdWFkLnAyKCksIHNpZ24pOwotICAgIEVkZ2UgYm90dG9t
RWRnZSA9IGNvbXB1dGVFZGdlKGJvdW5kc1F1YWQucDMoKSwgYm91bmRzUXVhZC5wNCgpLCBzaWdu
KTsKLQotICAgIC8vIE1vdmUgb3V0ZXIgZWRnZXMgdG8gZW5zdXJlIHRoYXQgYWxsIHBhcnRpYWxs
eSBjb3ZlcmVkIHBpeGVscyBhcmUKLSAgICAvLyBwcm9jZXNzZWQuCi0gICAgZmxvYXQgekRpc3Rh
bmNlID0gbV90aWxpbmdEYXRhLmJvcmRlclRleGVscygpICogMC41ZjsKLSAgICBsZWZ0RWRnZS5t
b3ZlKDAsIDAsIHpEaXN0YW5jZSk7Ci0gICAgcmlnaHRFZGdlLm1vdmUoMCwgMCwgekRpc3RhbmNl
KTsKLSAgICB0b3BFZGdlLm1vdmUoMCwgMCwgekRpc3RhbmNlKTsKLSAgICBib3R0b21FZGdlLm1v
dmUoMCwgMCwgekRpc3RhbmNlKTsKLQotICAgIEdDM0RpbnQgZmlsdGVyID0gKG1fdGlsaW5nRGF0
YS5ib3JkZXJUZXhlbHMoKSAmJiAhbWF0cml4LmlzSW50ZWdlclRyYW5zbGF0aW9uKCkpID8gR3Jh
cGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUOworICAg
IEVkZ2UgbGVmdEVkZ2UgPSBjb21wdXRlRWRnZShkZXZpY2VRdWFkLnA0KCksIGRldmljZVF1YWQu
cDEoKSwgc2lnbik7CisgICAgRWRnZSByaWdodEVkZ2UgPSBjb21wdXRlRWRnZShkZXZpY2VRdWFk
LnAyKCksIGRldmljZVF1YWQucDMoKSwgc2lnbik7CisgICAgRWRnZSB0b3BFZGdlID0gY29tcHV0
ZUVkZ2UoZGV2aWNlUXVhZC5wMSgpLCBkZXZpY2VRdWFkLnAyKCksIHNpZ24pOworICAgIEVkZ2Ug
Ym90dG9tRWRnZSA9IGNvbXB1dGVFZGdlKGRldmljZVF1YWQucDMoKSwgZGV2aWNlUXVhZC5wNCgp
LCBzaWduKTsKKworICAgIGlmIChlZGdlTG9jYXRpb24gIT0gLTEpIHsKKyAgICAgIC8vIE1vdmUg
b3V0ZXIgZWRnZXMgdG8gZW5zdXJlIHRoYXQgYWxsIHBhcnRpYWxseSBjb3ZlcmVkIHBpeGVscyBh
cmUKKyAgICAgIC8vIHByb2Nlc3NlZC4KKyAgICAgIGxlZnRFZGdlLm1vdmUoMCwgMCwgMC41Zik7
CisgICAgICByaWdodEVkZ2UubW92ZSgwLCAwLCAwLjVmKTsKKyAgICAgIHRvcEVkZ2UubW92ZSgw
LCAwLCAwLjVmKTsKKyAgICAgIGJvdHRvbUVkZ2UubW92ZSgwLCAwLCAwLjVmKTsKKworICAgICAg
ZmxvYXQgZWRnZVsxMl07CisgICAgICBlZGdlWzBdID0gbGVmdEVkZ2UueCgpOworICAgICAgZWRn
ZVsxXSA9IGxlZnRFZGdlLnkoKTsKKyAgICAgIGVkZ2VbMl0gPSBsZWZ0RWRnZS56KCk7CisgICAg
ICBlZGdlWzNdID0gdG9wRWRnZS54KCk7CisgICAgICBlZGdlWzRdID0gdG9wRWRnZS55KCk7Cisg
ICAgICBlZGdlWzVdID0gdG9wRWRnZS56KCk7CisgICAgICBlZGdlWzZdID0gcmlnaHRFZGdlLngo
KTsKKyAgICAgIGVkZ2VbN10gPSByaWdodEVkZ2UueSgpOworICAgICAgZWRnZVs4XSA9IHJpZ2h0
RWRnZS56KCk7CisgICAgICBlZGdlWzldID0gYm90dG9tRWRnZS54KCk7CisgICAgICBlZGdlWzEw
XSA9IGJvdHRvbUVkZ2UueSgpOworICAgICAgZWRnZVsxMV0gPSBib3R0b21FZGdlLnooKTsKKyAg
ICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtM2Z2KGVkZ2VMb2NhdGlvbiwgZWRnZSwg
NCkpOworICAgIH0KIAogICAgIEVkZ2UgcHJldkVkZ2VZID0gdG9wRWRnZTsKIAogICAgIGludCBs
ZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAgY29udGVudFJlY3RUb1RpbGVJbmRpY2VzKGNv
bnRlbnRSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOworICAgIEludFJlY3QgbGF5ZXJS
ZWN0ID0gY29udGVudFJlY3RUb0xheWVyUmVjdChjb250ZW50UmVjdCk7CiAgICAgZm9yIChpbnQg
aiA9IHRvcDsgaiA8PSBib3R0b207ICsraikgewogICAgICAgICBFZGdlIHByZXZFZGdlWCA9IGxl
ZnRFZGdlOwogCiAgICAgICAgIEVkZ2UgZWRnZVkgPSBib3R0b21FZGdlOwogICAgICAgICBpZiAo
aiA8IChtX3RpbGluZ0RhdGEubnVtVGlsZXNZKCkgLSAxKSkgewotICAgICAgICAgICAgSW50UmVj
dCB0aWxlUmVjdCA9IG1fdGlsaW5nRGF0YS50aWxlQm91bmRzKG1fdGlsaW5nRGF0YS50aWxlSW5k
ZXgoMCwgaikpOworICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IHVuaW9uUmVjdChtX3Rp
bGluZ0RhdGEudGlsZUJvdW5kcyhtX3RpbGluZ0RhdGEudGlsZUluZGV4KDAsIGopKSwgbV90aWxp
bmdEYXRhLnRpbGVCb3VuZHMobV90aWxpbmdEYXRhLnRpbGVJbmRleChtX3RpbGluZ0RhdGEubnVt
VGlsZXNYKCkgLSAxLCBqKSkpOworICAgICAgICAgICAgdGlsZVJlY3QuaW50ZXJzZWN0KGxheWVy
UmVjdCk7CisKKyAgICAgICAgICAgIC8vIFNraXAgZW1wdHkgcm93cy4KKyAgICAgICAgICAgIGlm
ICh0aWxlUmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAg
ICAgICAgIHRpbGVSZWN0Lm1vdmUobV9sYXllclBvc2l0aW9uLngoKSwgbV9sYXllclBvc2l0aW9u
LnkoKSk7CiAKICAgICAgICAgICAgIEZsb2F0UG9pbnQgcDEodGlsZVJlY3QubWF4WCgpLCB0aWxl
UmVjdC5tYXhZKCkpOwpAQCAtNTM3LDI3ICs1MzYsNTMgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21p
dW06OmRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXQKICAgICAgICAgICAgIEFTU0VSVCh0aWxlLT50ZXh0dXJlKCktPmlzUmVzZXJ2ZWQoKSk7CiAK
ICAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+YmluZFRleHR1cmUoKTsKLSAgICAgICAgICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBmaWx0ZXIp
KTsKLSAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdf
RklMVEVSLCBmaWx0ZXIpKTsKIAogICAgICAgICAgICAgLy8gRG9uJ3QgdXNlIHRpbGVDb250ZW50
UmVjdCBoZXJlLCBhcyB0aGF0IGNvbnRhaW5zIHRoZSBmdWxsCiAgICAgICAgICAgICAvLyByZWN0
IHdpdGggYm9yZGVyIHRleGVscyB3aGljaCBzaG91bGRuJ3QgYmUgZHJhd24uCiAgICAgICAgICAg
ICBJbnRSZWN0IHRpbGVSZWN0ID0gbV90aWxpbmdEYXRhLnRpbGVCb3VuZHMobV90aWxpbmdEYXRh
LnRpbGVJbmRleCh0aWxlLT5pKCksIHRpbGUtPmooKSkpOworICAgICAgICAgICAgSW50UmVjdCBk
aXNwbGF5UmVjdCA9IHRpbGVSZWN0OworICAgICAgICAgICAgdGlsZVJlY3QuaW50ZXJzZWN0KGxh
eWVyUmVjdCk7CisKKyAgICAgICAgICAgIC8vIEtlZXAgdHJhY2sgb2YgaG93IHRoZSB0b3AgbGVm
dCBoYXMgbW92ZWQsIHNvIHRoZSB0ZXh0dXJlIGNhbiBiZQorICAgICAgICAgICAgLy8gb2Zmc2V0
IHRoZSBzYW1lIGFtb3VudC4KKyAgICAgICAgICAgIEludFNpemUgZGlzcGxheU9mZnNldCA9IHRp
bGVSZWN0Lm1pblhNaW5ZQ29ybmVyKCkgLSBkaXNwbGF5UmVjdC5taW5YTWluWUNvcm5lcigpOwor
CisgICAgICAgICAgICAvLyBTa2lwIGVtcHR5IHRpbGVzLgorICAgICAgICAgICAgaWYgKHRpbGVS
ZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAg
dGlsZVJlY3QubW92ZShtX2xheWVyUG9zaXRpb24ueCgpLCBtX2xheWVyUG9zaXRpb24ueSgpKTsK
IAotICAgICAgICAgICAgSW50UG9pbnQgdGV4T2Zmc2V0ID0gbV90aWxpbmdEYXRhLnRleHR1cmVP
ZmZzZXQoKTsKLSAgICAgICAgICAgIEludFJlY3QgdGV4UmVjdCA9IHRpbGVUZXhSZWN0KHRpbGUp
OwotICAgICAgICAgICAgZmxvYXQgdGlsZVdpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRleFJl
Y3Qud2lkdGgoKSk7Ci0gICAgICAgICAgICBmbG9hdCB0aWxlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHRleFJlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgZmxvYXQgdGV4VHJhbnNsYXRl
WCA9ICh0ZXhPZmZzZXQueCgpIC0gdGlsZVJlY3QueCgpKSAvIHRpbGVXaWR0aDsKLSAgICAgICAg
ICAgIGZsb2F0IHRleFRyYW5zbGF0ZVkgPSAodGV4T2Zmc2V0LnkoKSAtIHRpbGVSZWN0LnkoKSkg
LyB0aWxlSGVpZ2h0OwotICAgICAgICAgICAgZmxvYXQgdGV4U2NhbGVYID0gdGlsZVJlY3Qud2lk
dGgoKSAvIHRpbGVXaWR0aDsKLSAgICAgICAgICAgIGZsb2F0IHRleFNjYWxlWSA9IHRpbGVSZWN0
LmhlaWdodCgpIC8gdGlsZUhlaWdodDsKKyAgICAgICAgICAgIEZsb2F0UmVjdCBjbGFtcFJlY3Qo
dGlsZVJlY3QpOworICAgICAgICAgICAgLy8gQ2xhbXAgdGV4dHVyZSBjb29yZGluYXRlcyB0byBh
dm9pZCBzYW1wbGluZyBvdXRzaWRlIHRoZSBsYXllci4KKyAgICAgICAgICAgIGNvbnN0IGZsb2F0
IGVwc2lsb24gPSAxIC8gMTAyNC4wZjsKKyAgICAgICAgICAgIGZsb2F0IGNsYW1wWCA9IG1pbigw
LjUsIGNsYW1wUmVjdC53aWR0aCgpIC8gMi4wIC0gZXBzaWxvbik7CisgICAgICAgICAgICBmbG9h
dCBjbGFtcFkgPSBtaW4oMC41LCBjbGFtcFJlY3QuaGVpZ2h0KCkgLyAyLjAgLSBlcHNpbG9uKTsK
KyAgICAgICAgICAgIGNsYW1wUmVjdC5pbmZsYXRlWCgtY2xhbXBYKTsKKyAgICAgICAgICAgIGNs
YW1wUmVjdC5pbmZsYXRlWSgtY2xhbXBZKTsKKyAgICAgICAgICAgIEZsb2F0U2l6ZSBjbGFtcE9m
ZnNldCA9IGNsYW1wUmVjdC5taW5YTWluWUNvcm5lcigpIC0gRmxvYXRSZWN0KHRpbGVSZWN0KS5t
aW5YTWluWUNvcm5lcigpOworCisgICAgICAgICAgICBGbG9hdFBvaW50IHRleE9mZnNldCA9IG1f
dGlsaW5nRGF0YS50ZXh0dXJlT2Zmc2V0KHRpbGUtPmkoKSwgdGlsZS0+aigpKSArIGNsYW1wT2Zm
c2V0ICsgRmxvYXRTaXplKGRpc3BsYXlPZmZzZXQpOworICAgICAgICAgICAgZmxvYXQgdGlsZVdp
ZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fdGlsZVNpemUud2lkdGgoKSk7CisgICAgICAgICAg
ICBmbG9hdCB0aWxlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fdGlsZVNpemUuaGVpZ2h0
KCkpOworCisgICAgICAgICAgICAvLyBNYXAgY2xhbXBpbmcgcmVjdGFuZ2xlIHRvIHVuaXQgc3F1
YXJlLgorICAgICAgICAgICAgZmxvYXQgdmVydGV4VGV4VHJhbnNsYXRlWCA9IC1jbGFtcFJlY3Qu
eCgpIC8gY2xhbXBSZWN0LndpZHRoKCk7CisgICAgICAgICAgICBmbG9hdCB2ZXJ0ZXhUZXhUcmFu
c2xhdGVZID0gLWNsYW1wUmVjdC55KCkgLyBjbGFtcFJlY3QuaGVpZ2h0KCk7CisgICAgICAgICAg
ICBmbG9hdCB2ZXJ0ZXhUZXhTY2FsZVggPSB0aWxlUmVjdC53aWR0aCgpIC8gY2xhbXBSZWN0Lndp
ZHRoKCk7CisgICAgICAgICAgICBmbG9hdCB2ZXJ0ZXhUZXhTY2FsZVkgPSB0aWxlUmVjdC5oZWln
aHQoKSAvIGNsYW1wUmVjdC5oZWlnaHQoKTsKKworICAgICAgICAgICAgLy8gTWFwIHRvIG5vcm1h
bGl6ZWQgdGV4dHVyZSBjb29yZGluYXRlcy4KKyAgICAgICAgICAgIGZsb2F0IGZyYWdtZW50VGV4
VHJhbnNsYXRlWCA9IHRleE9mZnNldC54KCkgLyB0aWxlV2lkdGg7CisgICAgICAgICAgICBmbG9h
dCBmcmFnbWVudFRleFRyYW5zbGF0ZVkgPSB0ZXhPZmZzZXQueSgpIC8gdGlsZUhlaWdodDsKKyAg
ICAgICAgICAgIGZsb2F0IGZyYWdtZW50VGV4U2NhbGVYID0gY2xhbXBSZWN0LndpZHRoKCkgLyB0
aWxlV2lkdGg7CisgICAgICAgICAgICBmbG9hdCBmcmFnbWVudFRleFNjYWxlWSA9IGNsYW1wUmVj
dC5oZWlnaHQoKSAvIHRpbGVIZWlnaHQ7CisKICAgICAgICAgICAgIC8vIE9wZW5HTCBjb29yZGlu
YXRlIHN5c3RlbSBpcyBib3R0b20tdXAuCiAgICAgICAgICAgICAvLyBJZiB0aWxlIHRleHR1cmUg
aXMgdG9wLWRvd24sIHdlIG5lZWQgdG8gZmxpcCB0aGUgdGV4dHVyZSBjb29yZGluYXRlcy4KICAg
ICAgICAgICAgIGlmIChtX3RleHR1cmVPcmllbnRhdGlvbiA9PSBMYXllclRleHR1cmVVcGRhdGVy
OjpUb3BEb3duT3JpZW50YXRpb24pIHsKLSAgICAgICAgICAgICAgICB0ZXhUcmFuc2xhdGVZID0g
MS4wIC0gdGV4VHJhbnNsYXRlWTsKLSAgICAgICAgICAgICAgICB0ZXhTY2FsZVkgKj0gLTEuMDsK
KyAgICAgICAgICAgICAgICBmcmFnbWVudFRleFRyYW5zbGF0ZVkgPSAxLjAgLSBmcmFnbWVudFRl
eFRyYW5zbGF0ZVk7CisgICAgICAgICAgICAgICAgZnJhZ21lbnRUZXhTY2FsZVkgKj0gLTEuMDsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgRWRnZSBlZGdlWCA9IHJpZ2h0RWRnZTsKQEAg
LTU4NSw1MyArNjEwLDUwIEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGlsZXMoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0CiAgICAgICAgICAgICAv
LyBOb3JtYWxpemUgdG8gdGlsZVJlY3QuCiAgICAgICAgICAgICBxdWFkLnNjYWxlKDEuMGYgLyB0
aWxlUmVjdC53aWR0aCgpLCAxLjBmIC8gdGlsZVJlY3QuaGVpZ2h0KCkpOwogCi0gICAgICAgICAg
ICBkcmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIHF1YWQsIGxheWVyUmVuZGVyZXIoKS0+cHJvamVj
dGlvbk1hdHJpeCgpLCBtYXRyaXgsIHRpbGVSZWN0LndpZHRoKCksIHRpbGVSZWN0LmhlaWdodCgp
LCBvcGFjaXR5LCB0ZXhUcmFuc2xhdGVYLCB0ZXhUcmFuc2xhdGVZLCB0ZXhTY2FsZVgsIHRleFNj
YWxlWSwgcHJvZ3JhbSk7CisgICAgICAgICAgICBpZiAoZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2Nh
dGlvbiA9PSAtMSkgeworICAgICAgICAgICAgICAvLyBNb3ZlIGZyYWdtZW50IHNoYWRlciB0cmFu
c2Zvcm0gdG8gdmVydGV4IHNoYWRlci4gV2UgY2FuIGRvCisgICAgICAgICAgICAgIC8vIHRoaXMg
d2hpbGUgc3RpbGwgcHJvZHVjaW5nIGNvcnJlY3QgcmVzdWx0cyBhcworICAgICAgICAgICAgICAv
LyBmc1RleFRyYW5zZm9ybUxvY2F0aW9uIHNob3VsZCBhbHdheXMgYmUgbm9uLW5lZ2F0aXZlIHdo
ZW4KKyAgICAgICAgICAgICAgLy8gdGlsZXMgYXJlIHRyYW5zZm9ybWVkIGluIGEgd2F5IHRoYXQg
Y291bGQgcmVzdWx0IGluIHNhbXBsaW5nCisgICAgICAgICAgICAgIC8vIG91dHNpZGUgdGhlIGxh
eWVyLgorICAgICAgICAgICAgICB2ZXJ0ZXhUZXhTY2FsZVggKj0gZnJhZ21lbnRUZXhTY2FsZVg7
CisgICAgICAgICAgICAgIHZlcnRleFRleFNjYWxlWSAqPSBmcmFnbWVudFRleFNjYWxlWTsKKyAg
ICAgICAgICAgICAgdmVydGV4VGV4VHJhbnNsYXRlWCAqPSBmcmFnbWVudFRleFNjYWxlWDsKKyAg
ICAgICAgICAgICAgdmVydGV4VGV4VHJhbnNsYXRlWSAqPSBmcmFnbWVudFRleFNjYWxlWTsKKyAg
ICAgICAgICAgICAgdmVydGV4VGV4VHJhbnNsYXRlWCArPSBmcmFnbWVudFRleFRyYW5zbGF0ZVg7
CisgICAgICAgICAgICAgIHZlcnRleFRleFRyYW5zbGF0ZVkgKz0gZnJhZ21lbnRUZXhUcmFuc2xh
dGVZOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPnVuaWZvcm00ZihmcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uLCBmcmFnbWVudFRl
eFRyYW5zbGF0ZVgsIGZyYWdtZW50VGV4VHJhbnNsYXRlWSwgZnJhZ21lbnRUZXhTY2FsZVgsIGZy
YWdtZW50VGV4U2NhbGVZKSk7CisKKyAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51
bmlmb3JtNGYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkudmVydGV4VGV4VHJhbnNmb3JtTG9jYXRp
b24oKSwgdmVydGV4VGV4VHJhbnNsYXRlWCwgdmVydGV4VGV4VHJhbnNsYXRlWSwgdmVydGV4VGV4
U2NhbGVYLCB2ZXJ0ZXhUZXhTY2FsZVkpKTsKKworICAgICAgICAgICAgZmxvYXQgcG9pbnRbOF07
CisgICAgICAgICAgICBwb2ludFswXSA9IHF1YWQucDEoKS54KCk7CisgICAgICAgICAgICBwb2lu
dFsxXSA9IHF1YWQucDEoKS55KCk7CisgICAgICAgICAgICBwb2ludFsyXSA9IHF1YWQucDIoKS54
KCk7CisgICAgICAgICAgICBwb2ludFszXSA9IHF1YWQucDIoKS55KCk7CisgICAgICAgICAgICBw
b2ludFs0XSA9IHF1YWQucDMoKS54KCk7CisgICAgICAgICAgICBwb2ludFs1XSA9IHF1YWQucDMo
KS55KCk7CisgICAgICAgICAgICBwb2ludFs2XSA9IHF1YWQucDQoKS54KCk7CisgICAgICAgICAg
ICBwb2ludFs3XSA9IHF1YWQucDQoKS55KCk7CisgICAgICAgICAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+dW5pZm9ybTJmdihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5wb2ludExvY2F0aW9uKCks
IHBvaW50LCA0KSk7CisKKyAgICAgICAgICAgIExheWVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1
YWQoY29udGV4dCwgbGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCksIGdsb2JhbFRy
YW5zZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGls
ZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIG9wYWNpdHksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1h
dHJpeExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpKTsKIAogICAgICAg
ICAgICAgcHJldkVkZ2VYID0gZWRnZVg7CisgICAgICAgICAgICAvLyBSZXZlcnNlIGRpcmVjdGlv
bi4KKyAgICAgICAgICAgIHByZXZFZGdlWC5zY2FsZSgtMSwgLTEsIC0xKTsKICAgICAgICAgfQog
CiAgICAgICAgIHByZXZFZGdlWSA9IGVkZ2VZOworICAgICAgICAvLyBSZXZlcnNlIGRpcmVjdGlv
bi4KKyAgICAgICAgcHJldkVkZ2VZLnNjYWxlKC0xLCAtMSwgLTEpOwogICAgIH0KIH0KIAotdGVt
cGxhdGUgPGNsYXNzIFQ+Ci12b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVkUXVh
ZChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIGRyYXdNYXRyaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBvcGFjaXR5LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdGV4VHJhbnNsYXRl
WCwgZmxvYXQgdGV4VHJhbnNsYXRlWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IHRleFNjYWxlWCwgZmxvYXQgdGV4U2NhbGVZLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCogcHJvZ3JhbSkKLXsKLSAgICBz
dGF0aWMgZmxvYXQgZ2xNYXRyaXhbMTZdOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVu
ZGVyTWF0cml4ID0gZHJhd01hdHJpeDsKLQotICAgIC8vIEFwcGx5IGEgc2NhbGluZyBmYWN0b3Ig
dG8gc2l6ZSB0aGUgcXVhZCBmcm9tIDF4MSB0byBpdHMgaW50ZW5kZWQgc2l6ZS4KLSAgICByZW5k
ZXJNYXRyaXguc2NhbGUzZCh3aWR0aCwgaGVpZ2h0LCAxKTsKLQotICAgIC8vIEFwcGx5IHRoZSBw
cm9qZWN0aW9uIG1hdHJpeCBiZWZvcmUgc2VuZGluZyB0aGUgdHJhbnNmb3JtIG92ZXIgdG8gdGhl
IHNoYWRlci4KLSAgICBMYXllckNocm9taXVtOjp0b0dMTWF0cml4KCZnbE1hdHJpeFswXSwgcHJv
amVjdGlvbk1hdHJpeCAqIHJlbmRlck1hdHJpeCk7Ci0KLSAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dW5pZm9ybU1hdHJpeDRmdihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlv
bigpLCBmYWxzZSwgJmdsTWF0cml4WzBdLCAxKSk7Ci0KLSAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dW5pZm9ybTFmKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLCBv
cGFjaXR5KSk7Ci0KLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTRmKHByb2dyYW0t
PnZlcnRleFNoYWRlcigpLnRleFRyYW5zZm9ybUxvY2F0aW9uKCksCi0gICAgICAgIHRleFRyYW5z
bGF0ZVgsIHRleFRyYW5zbGF0ZVksIHRleFNjYWxlWCwgdGV4U2NhbGVZKSk7Ci0KLSAgICBmbG9h
dCBwb2ludFs4XTsKLSAgICBwb2ludFswXSA9IHF1YWQucDEoKS54KCk7Ci0gICAgcG9pbnRbMV0g
PSBxdWFkLnAxKCkueSgpOwotICAgIHBvaW50WzJdID0gcXVhZC5wMigpLngoKTsKLSAgICBwb2lu
dFszXSA9IHF1YWQucDIoKS55KCk7Ci0gICAgcG9pbnRbNF0gPSBxdWFkLnAzKCkueCgpOwotICAg
IHBvaW50WzVdID0gcXVhZC5wMygpLnkoKTsKLSAgICBwb2ludFs2XSA9IHF1YWQucDQoKS54KCk7
Ci0gICAgcG9pbnRbN10gPSBxdWFkLnA0KCkueSgpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0
LT51bmlmb3JtMmZ2KHByb2dyYW0tPnZlcnRleFNoYWRlcigpLnBvaW50TG9jYXRpb24oKSwgcG9p
bnQsIDQpKTsKLQotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kcmF3RWxlbWVudHMoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRSSUFOR0xFUywgNiwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NI
T1JULCAwKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgKaW5kZXgg
NDhmNGY5ZjIwOGQzN2ZjZGI5YTJlY2JkNGVlMzk1MzA1NzU4OGIxZi4uYjQ1NWJhMjQ3MmQwNmJi
NjkzNTg5ZGEwY2QyNGYzNzAxYTM2ZDYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgK
QEAgLTc1LDEwICs3NSwxNCBAQCBwdWJsaWM6CiAgICAgLy8gcmVjeWNsZWQgYnkgdGhlIHRleHR1
cmUgbWFuYWdlci4KICAgICB2b2lkIHByb3RlY3RUaWxlVGV4dHVyZXMoY29uc3QgSW50UmVjdCYg
Y29udGVudFJlY3QpOwogCi0gICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJR
dWFkLCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYT4gUHJvZ3JhbTsKKyAgICB0eXBlZGVmIFBy
b2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclRpbGUsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhh
PiBQcm9ncmFtOwogICAgIC8vIFNoYWRlciBwcm9ncmFtIHRoYXQgc3dhcHMgcmVkIGFuZCBibHVl
IGNvbXBvbmVudHMgb2YgdGV4dHVyZS4KICAgICAvLyBVc2VkIHdoZW4gdGV4dHVyZSBmb3JtYXQg
ZG9lcyBub3QgbWF0Y2ggbmF0aXZlIGNvbG9yIGZvcm1hdC4KLSAgICB0eXBlZGVmIFByb2dyYW1C
aW5kaW5nPFZlcnRleFNoYWRlclF1YWQsIEZyYWdtZW50U2hhZGVyUkdCQVRleFN3aXp6bGVBbHBo
YT4gUHJvZ3JhbVN3aXp6bGU7CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFk
ZXJUaWxlLCBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGE+IFByb2dyYW1Td2l6emxl
OworCisgICAgLy8gU2hhZGVyIHByb2dyYW0gdGhhdCBwcm9kdWNlcyBhbnRpLWFsaWFzZWQgbGF5
ZXIgZWRnZXMuCisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJUaWxlLCBG
cmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBPiBQcm9ncmFtQUE7CisgICAgdHlwZWRlZiBQcm9n
cmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJUaWxlLCBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxl
QWxwaGFBQT4gUHJvZ3JhbVN3aXp6bGVBQTsKIAogICAgIC8vIElmIHRoaXMgdGlsZXIgaGFzIGV4
YWN0bHkgb25lIHRpbGUsIHJldHVybiBpdHMgdGV4dHVyZS4gT3RoZXJ3aXNlLCBudWxsLgogICAg
IExheWVyVGV4dHVyZSogZ2V0U2luZ2xlVGV4dHVyZSgpOwpAQCAtMTEwLDE0ICsxMTQsNyBAQCBw
cml2YXRlOgogCiAgICAgLy8gRHJhdyBhbGwgdGlsZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBjb250
ZW50UmVjdC4KICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICB2b2lkIGRyYXdUaWxlcyhjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9h
dCBvcGFjaXR5LCBjb25zdCBUKiBwcm9ncmFtKTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgot
ICAgIHZvaWQgZHJhd1RleHR1cmVkUXVhZChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEZsb2F0
UXVhZCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0eSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgdGV4VHJhbnNsYXRlWCwgZmxvYXQgdGV4VHJhbnNsYXRl
WSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdGV4U2NhbGVYLCBmbG9hdCB0ZXhT
Y2FsZVksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQqIHByb2dyYW0pOworICAg
IHZvaWQgZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IFQqIHByb2dyYW0sIGludCBmcmFn
bWVudFRleFRyYW5zZm9ybUxvY2F0aW9uLCBpbnQgZWRnZUxvY2F0aW9uKTsKIAogICAgIC8vIEdy
b3cgbGF5ZXIgc2l6ZSB0byBjb250YWluIHRoaXMgcmVjdGFuZ2xlLgogICAgIHZvaWQgZ3Jvd0xh
eWVyVG9Db250YWluKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKQEAgLTEzNSw3ICsxMzIs
NiBAQCBwcml2YXRlOgogICAgIFRpbGUqIHRpbGVBdChpbnQsIGludCkgY29uc3Q7CiAgICAgSW50
UmVjdCB0aWxlQ29udGVudFJlY3QoY29uc3QgVGlsZSopIGNvbnN0OwogICAgIEludFJlY3QgdGls
ZUxheWVyUmVjdChjb25zdCBUaWxlKikgY29uc3Q7Ci0gICAgSW50UmVjdCB0aWxlVGV4UmVjdChj
b25zdCBUaWxlKikgY29uc3Q7CiAKICAgICBHQzNEZW51bSBtX3RleHR1cmVGb3JtYXQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRl
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1NoYWRlckNocm9taXVtLmNwcAppbmRleCA1MGRlODA0N2QxYjdiOWQxM2ZmNzE5NjM4YzM2MjBl
YjVmYTY5ZGFiLi5jYTEzODdmNzdmYzc4ZTQ2MWZlZmRmNTg5Zjc4NmE2YTUyOGZkNDVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2hhZGVyQ2hyb21pdW0uY3BwCkBAIC0xNTAsMjkgKzE1MCwyOSBAQCBTdHJpbmcgVmVydGV4
U2hhZGVyUG9zVGV4VHJhbnNmb3JtOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAogICAgICk7CiB9
CiAKLVZlcnRleFNoYWRlclF1YWQ6OlZlcnRleFNoYWRlclF1YWQoKQorVmVydGV4U2hhZGVyVGls
ZTo6VmVydGV4U2hhZGVyVGlsZSgpCiAgICAgOiBtX21hdHJpeExvY2F0aW9uKC0xKQotICAgICwg
bV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbigtMSkKICAgICAsIG1fcG9pbnRMb2NhdGlvbigtMSkKKyAg
ICAsIG1fdmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb24oLTEpCiB7CiB9CiAKLXZvaWQgVmVydGV4
U2hhZGVyUXVhZDo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJv
Z3JhbSkKK3ZvaWQgVmVydGV4U2hhZGVyVGlsZTo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsKICAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKLSAgICBtX3RleFRyYW5z
Zm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhU
cmFuc2Zvcm0iKTsKICAgICBtX3BvaW50TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbSwgInBvaW50Iik7Ci0gICAgQVNTRVJUKG1fbWF0cml4TG9jYXRpb24gIT0g
LTEgJiYgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiAhPSAtMSAmJiBtX3BvaW50TG9jYXRpb24gIT0g
LTEpOworICAgIG1fdmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgInZlcnRleFRleFRyYW5zZm9ybSIpOworICAgIEFTU0VSVCht
X21hdHJpeExvY2F0aW9uICE9IC0xICYmIG1fcG9pbnRMb2NhdGlvbiAhPSAtMSAmJiBtX3ZlcnRl
eFRleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xKTsKIH0KIAotU3RyaW5nIFZlcnRleFNoYWRlclF1
YWQ6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CitTdHJpbmcgVmVydGV4U2hhZGVyVGlsZTo6Z2V0
U2hhZGVyU3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gU0hBREVSKAogICAgICAgICBhdHRy
aWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOwogICAgICAgICBhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3Jk
OwogICAgICAgICB1bmlmb3JtIG1hdDQgbWF0cml4OwotICAgICAgICB1bmlmb3JtIHZlYzQgdGV4
VHJhbnNmb3JtOwogICAgICAgICB1bmlmb3JtIHZlYzIgcG9pbnRbNF07CisgICAgICAgIHVuaWZv
cm0gdmVjNCB2ZXJ0ZXhUZXhUcmFuc2Zvcm07CiAgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENv
b3JkOwogICAgICAgICB2b2lkIG1haW4oKQogICAgICAgICB7CkBAIC0xODMsNyArMTgzLDcgQEAg
U3RyaW5nIFZlcnRleFNoYWRlclF1YWQ6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiAgICAgICAg
ICAgICBwb3MueHkgKz0gKGFfdGV4Q29vcmQueCAqIGFfdGV4Q29vcmQueSkgKiBwb2ludFsyXTsK
ICAgICAgICAgICAgIHBvcy54eSArPSAoY29tcGxlbWVudC54ICogYV90ZXhDb29yZC55KSAqIHBv
aW50WzNdOwogICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBtYXRyaXggKiBwb3M7Ci0gICAgICAg
ICAgICB2X3RleENvb3JkID0gcG9zLnh5ICogdGV4VHJhbnNmb3JtLnp3ICsgdGV4VHJhbnNmb3Jt
Lnh5OworICAgICAgICAgICAgdl90ZXhDb29yZCA9IHBvcy54eSAqIHZlcnRleFRleFRyYW5zZm9y
bS56dyArIHZlcnRleFRleFRyYW5zZm9ybS54eTsKICAgICAgICAgfQogICAgICk7CiB9CkBAIC0y
NDcsNiArMjQ3LDcwIEBAIFN0cmluZyBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGE6
OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiAgICAgKTsKIH0KIAorRnJhZ21lbnRUZXhBbHBoYUFB
QmluZGluZzo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZygpCisgICAgOiBtX3NhbXBsZXJMb2Nh
dGlvbigtMSkKKyAgICAsIG1fYWxwaGFMb2NhdGlvbigtMSkKKyAgICAsIG1fZnJhZ21lbnRUZXhU
cmFuc2Zvcm1Mb2NhdGlvbigtMSkKKyAgICAsIG1fZWRnZUxvY2F0aW9uKC0xKQoreworfQorCit2
b2lkIEZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmc6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit7CisgICAgbV9zYW1wbGVyTG9jYXRpb24gPSBjb250
ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfdGV4dHVyZSIpOworICAgIG1fYWxw
aGFMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiYWxwaGEi
KTsKKyAgICBtX2ZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgImZyYWdtZW50VGV4VHJhbnNmb3JtIik7CisgICAgbV9lZGdl
TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImVkZ2UiKTsK
KworICAgIEFTU0VSVChtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMSAmJiBtX2FscGhhTG9jYXRpb24g
IT0gLTEgJiYgbV9mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xICYmIG1fZWRnZUxv
Y2F0aW9uICE9IC0xKTsKK30KKworU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUE6
OmdldFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAg
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3Jk
OworICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7CisgICAgICAgIHVuaWZvcm0g
ZmxvYXQgYWxwaGE7CisgICAgICAgIHVuaWZvcm0gdmVjNCBmcmFnbWVudFRleFRyYW5zZm9ybTsK
KyAgICAgICAgdW5pZm9ybSB2ZWMzIGVkZ2VbNF07CisgICAgICAgIHZvaWQgbWFpbigpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZlYzIgdGV4Q29vcmQgPSBjbGFtcCh2X3RleENvb3JkLCAwLjAs
IDEuMCkgKiBmcmFnbWVudFRleFRyYW5zZm9ybS56dyArIGZyYWdtZW50VGV4VHJhbnNmb3JtLnh5
OworICAgICAgICAgICAgdmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHRleENv
b3JkKTsKKyAgICAgICAgICAgIHZlYzMgcG9zID0gdmVjMyhnbF9GcmFnQ29vcmQueHksIDEpOwor
ICAgICAgICAgICAgZmxvYXQgYTAgPSBjbGFtcChkb3QoZWRnZVswXSwgcG9zKSwgMC4wLCAxLjAp
OworICAgICAgICAgICAgZmxvYXQgYTEgPSBjbGFtcChkb3QoZWRnZVsxXSwgcG9zKSwgMC4wLCAx
LjApOworICAgICAgICAgICAgZmxvYXQgYTIgPSBjbGFtcChkb3QoZWRnZVsyXSwgcG9zKSwgMC4w
LCAxLjApOworICAgICAgICAgICAgZmxvYXQgYTMgPSBjbGFtcChkb3QoZWRnZVszXSwgcG9zKSwg
MC4wLCAxLjApOworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4Q29sb3IgKiBhbHBoYSAq
IG1pbihhMCwgYTIpICogbWluKGExLCBhMyk7CisgICAgICAgIH0KKyAgICApOworfQorCitTdHJp
bmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhhQUE6OmdldFNoYWRlclN0cmluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOworICAgICAgICB1bmlmb3Jt
IHNhbXBsZXIyRCBzX3RleHR1cmU7CisgICAgICAgIHVuaWZvcm0gZmxvYXQgYWxwaGE7CisgICAg
ICAgIHVuaWZvcm0gdmVjNCBmcmFnbWVudFRleFRyYW5zZm9ybTsKKyAgICAgICAgdW5pZm9ybSB2
ZWMzIGVkZ2VbNF07CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZlYzIgdGV4Q29vcmQgPSBjbGFtcCh2X3RleENvb3JkLCAwLjAsIDEuMCkgKiBmcmFnbWVudFRl
eFRyYW5zZm9ybS56dyArIGZyYWdtZW50VGV4VHJhbnNmb3JtLnh5OworICAgICAgICAgICAgdmVj
NCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHRleENvb3JkKTsKKyAgICAgICAgICAg
IHZlYzMgcG9zID0gdmVjMyhnbF9GcmFnQ29vcmQueHksIDEpOworICAgICAgICAgICAgZmxvYXQg
YTAgPSBjbGFtcChkb3QoZWRnZVswXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxv
YXQgYTEgPSBjbGFtcChkb3QoZWRnZVsxXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAg
ZmxvYXQgYTIgPSBjbGFtcChkb3QoZWRnZVsyXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAg
ICAgZmxvYXQgYTMgPSBjbGFtcChkb3QoZWRnZVszXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAg
ICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xvci56LCB0ZXhDb2xvci55LCB0ZXhDb2xv
ci54LCB0ZXhDb2xvci53KSAqIGFscGhhICogbWluKGEwLCBhMikgKiBtaW4oYTEsIGEzKTsKKyAg
ICAgICAgfQorICAgICk7Cit9CisKIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6RnJh
Z21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrKCkKICAgICA6IG1fc2FtcGxlckxvY2F0aW9uKC0x
KQogICAgICwgbV9tYXNrU2FtcGxlckxvY2F0aW9uKC0xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKaW5k
ZXggY2ZjNjExYTY0OTViMTFlMWE5ZjQ1NWVhM2Y5ZTFiZWZhZGU4OTUxOS4uMTIwOGQzZjVkNzQ5
MmMwYWRhNjQ5OTU4Yjc3MzgzNDY0N2U3NDM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCkBAIC05
NiwyMSArOTYsMjEgQEAgcHJpdmF0ZToKICAgICBpbnQgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsK
IH07CiAKLWNsYXNzIFZlcnRleFNoYWRlclF1YWQgeworY2xhc3MgVmVydGV4U2hhZGVyVGlsZSB7
CiBwdWJsaWM6Ci0gICAgVmVydGV4U2hhZGVyUXVhZCgpOworICAgIFZlcnRleFNoYWRlclRpbGUo
KTsKIAogICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0p
OwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAgIGludCBtYXRyaXhM
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0KLSAgICBpbnQgdGV4
VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RleFRyYW5zZm9ybUxvY2F0aW9u
OyB9CiAgICAgaW50IHBvaW50TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3BvaW50TG9jYXRp
b247IH0KKyAgICBpbnQgdmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3ZlcnRleFRleFRyYW5zZm9ybUxvY2F0aW9uOyB9CiAKIHByaXZhdGU6CiAgICAgaW50IG1f
bWF0cml4TG9jYXRpb247Ci0gICAgaW50IG1fdGV4VHJhbnNmb3JtTG9jYXRpb247CiAgICAgaW50
IG1fcG9pbnRMb2NhdGlvbjsKKyAgICBpbnQgbV92ZXJ0ZXhUZXhUcmFuc2Zvcm1Mb2NhdGlvbjsK
IH07CiAKIGNsYXNzIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nIHsKQEAgLTE0Miw2ICsxNDIsMzQg
QEAgcHVibGljOgogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIH07CiAKK2Ns
YXNzIEZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmcgeworcHVibGljOgorICAgIEZyYWdtZW50VGV4
QWxwaGFBQUJpbmRpbmcoKTsKKworICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVu
c2lnbmVkIHByb2dyYW0pOworICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9hbHBoYUxvY2F0aW9uOyB9CisgICAgaW50IHNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fc2FtcGxlckxvY2F0aW9uOyB9CisgICAgaW50IGZyYWdtZW50VGV4VHJhbnNmb3JtTG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb247IH0K
KyAgICBpbnQgZWRnZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lZGdlTG9jYXRpb247IH0K
KworcHJpdmF0ZToKKyAgICBpbnQgbV9zYW1wbGVyTG9jYXRpb247CisgICAgaW50IG1fYWxwaGFM
b2NhdGlvbjsKKyAgICBpbnQgbV9mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uOworICAgIGlu
dCBtX2VkZ2VMb2NhdGlvbjsKK307CisKK2NsYXNzIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhh
QUEgOiBwdWJsaWMgRnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZyB7CitwdWJsaWM6CisgICAgU3Ry
aW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OworfTsKKworLy8gU3dpenpsZXMgdGhlIHJlZCBh
bmQgYmx1ZSBjb21wb25lbnQgb2Ygc2FtcGxlZCB0ZXhlbC4KK2NsYXNzIEZyYWdtZW50U2hhZGVy
UkdCQVRleFN3aXp6bGVBbHBoYUFBIDogcHVibGljIEZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmcg
eworcHVibGljOgorICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKK307CisKIGNs
YXNzIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzayB7CiBwdWJsaWM6CiAgICAgRnJhZ21l
bnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNw
cAppbmRleCAzZTllNmRkMDQ4ZjIyMTVkMjg5NDkxNzU5MzQxZDdlMzc2YmMwZDI3Li41Njc1Y2Vh
MTNhNmViZGFjMWQ5Y2IzYWE0ZTJmZmNjNTQ5YTA0ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KIAogLy8gU3RhcnQgdGlsaW5nIHdoZW4gdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgYSBsYXll
ciBhcmUgbGFyZ2VyIHRoYW4gdGhpcyBzaXplLgotc3RhdGljIGludCBtYXhVbnRpbGVkU2l6ZSA9
IDUxMDsKK3N0YXRpYyBpbnQgbWF4VW50aWxlZFNpemUgPSA1MTI7CiAKIC8vIFdoZW4gdGlsaW5n
IGlzIGVuYWJsZWQsIHVzZSB0aWxlcyBvZiB0aGlzIGRpbWVuc2lvbiBzcXVhcmVkLgogc3RhdGlj
IGludCBkZWZhdWx0VGlsZVNpemUgPSAyNTY7CkBAIC01MCw3ICs1MCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIFRpbGVkTGF5ZXJDaHJvbWl1bTo6VGlsZWRMYXllckNocm9taXVtKEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bSogb3duZXIpCiAgICAgOiBMYXllckNocm9taXVtKG93bmVyKQogICAgICwg
bV90aWxpbmdPcHRpb24oQXV0b1RpbGUpCi0gICAgLCBtX2JvcmRlclRleGVscyh0cnVlKQogewog
fQogCkBAIC04MCw3ICs3OSw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVUaWxl
U2l6ZUFuZFRpbGluZ09wdGlvbigpCiAgICAgaWYgKCFtX3RpbGVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBjb25zdCBJbnRTaXplIHRpbGVTaXplKGRlZmF1bHRUaWxlU2l6ZSwgZGVmYXVsdFRp
bGVTaXplKTsKKyAgICBjb25zdCBJbnRTaXplIHRpbGVTaXplKG1pbihkZWZhdWx0VGlsZVNpemUs
IGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpKSwgbWluKGRlZmF1bHRUaWxlU2l6ZSwgY29udGVudEJv
dW5kcygpLmhlaWdodCgpKSk7CiAKICAgICAvLyBUaWxlIGlmIGJvdGggZGltZW5zaW9ucyBsYXJn
ZSwgb3IgYW55IG9uZSBkaW1lbnNpb24gbGFyZ2UgYW5kIHRoZSBvdGhlcgogICAgIC8vIGV4dGVu
ZHMgaW50byBhIHNlY29uZCB0aWxlLiBUaGlzIGhldXJpc3RpYyBhbGxvd3MgZm9yIGxvbmcgc2tp
bm55IGxheWVycwpAQCAtOTcsOCArOTYsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKQogICAgIGVsc2UKICAgICAgICAgaXNUaWxlZCA9
IGF1dG9UaWxlZDsKIAotICAgIC8vIEVtcHR5IHRpbGUgc2l6ZSB0ZWxscyB0aGUgdGlsZXIgdG8g
YXZvaWQgdGlsaW5nLgotICAgIEludFNpemUgcmVxdWVzdGVkU2l6ZSA9IGlzVGlsZWQgPyB0aWxl
U2l6ZSA6IEludFNpemUoKTsKKyAgICBJbnRTaXplIHJlcXVlc3RlZFNpemUgPSBpc1RpbGVkID8g
dGlsZVNpemUgOiBjb250ZW50Qm91bmRzKCk7CiAgICAgY29uc3QgaW50IG1heFNpemUgPSBsYXll
clJlbmRlcmVyKCktPm1heFRleHR1cmVTaXplKCk7CiAgICAgSW50U2l6ZSBjbGFtcGVkU2l6ZSA9
IHJlcXVlc3RlZFNpemUuc2hydW5rVG8oSW50U2l6ZShtYXhTaXplLCBtYXhTaXplKSk7CiAgICAg
bV90aWxlci0+c2V0VGlsZVNpemUoY2xhbXBlZFNpemUpOwpAQCAtMTI4LDcgKzEyNiw3IEBAIHZv
aWQgVGlsZWRMYXllckNocm9taXVtOjpjcmVhdGVUaWxlcklmTmVlZGVkKCkKICAgICBtX3RpbGVy
ID0gTGF5ZXJUaWxlckNocm9taXVtOjpjcmVhdGUoCiAgICAgICAgIGxheWVyUmVuZGVyZXIoKSwK
ICAgICAgICAgSW50U2l6ZShkZWZhdWx0VGlsZVNpemUsIGRlZmF1bHRUaWxlU2l6ZSksCi0gICAg
ICAgIG1fYm9yZGVyVGV4ZWxzID8gTGF5ZXJUaWxlckNocm9taXVtOjpIYXNCb3JkZXJUZXhlbHMg
OiBMYXllclRpbGVyQ2hyb21pdW06Ok5vQm9yZGVyVGV4ZWxzKTsKKyAgICAgICAgTGF5ZXJUaWxl
ckNocm9taXVtOjpIYXNCb3JkZXJUZXhlbHMpOwogfQogCiB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpCkBAIC0xNDQsNyArMTQyLDYgQEAgdm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OnNldFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24gdGlsaW5nT3B0
aW9uKQogCiB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0SXNNYXNrKGJvb2wgaXNNYXNrKQog
ewotICAgIG1fYm9yZGVyVGV4ZWxzID0gIWlzTWFzazsKICAgICBzZXRUaWxpbmdPcHRpb24oaXNN
YXNrID8gTmV2ZXJUaWxlIDogQXV0b1RpbGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5oCmluZGV4IDc4OGFkYzdmMTA4YWE2YTI1Y2IzZDRjZjhjZDE0OTMwZTY0NjQxNTcuLjJmNDM2
OWI2NDAzODM4NTE3MGM3NzE0MzJmZDdhMWVjMjcyMmNmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5oCkBAIC03Myw3ICs3Myw2IEBAIHByaXZhdGU6CiAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggdGlsaW5nVHJhbnNmb3JtKCkgY29uc3Q7CiAKICAgICBUaWxpbmdPcHRpb24gbV90aWxp
bmdPcHRpb247Ci0gICAgYm9vbCBtX2JvcmRlclRleGVsczsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcAppbmRleCAx
MTNiZGUwYjIxMzhmOTFkNzcyZDNmZDUxYjhjMTNiNDA2Zjk4YTI5Li5mZjcwOGM3M2Q2YzNhODhj
ZGRmMDJjMDcyM2JiYWRlMzFjMzAwNGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuY3BwCkBAIC00NCwxMiArNDQsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgaW50IGNvbXB1dGVOdW1UaWxlcyhpbnQgbWF4VGV4
dHVyZVNpemUsIGludCB0b3RhbFNpemUsIGludCBib3JkZXJUZXhlbHMpCiB7Ci0gICAgaW50IHRv
dGFsU2l6ZVdpdGhCb3JkZXIgPSB0b3RhbFNpemUgKyAyICogYm9yZGVyVGV4ZWxzOwotCiAgICAg
aWYgKG1heFRleHR1cmVTaXplIC0gMiAqIGJvcmRlclRleGVscyA8PSAwKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSA+IDAgJiYgbWF4VGV4dHVyZVNpemUgPj0g
dG90YWxTaXplID8gMSA6IDA7CiAKLSAgICBpbnQgbnVtVGlsZXMgPSBtYXgoMSwgMSArICh0b3Rh
bFNpemVXaXRoQm9yZGVyIC0gMSAtIDIgKiBib3JkZXJUZXhlbHMpIC8gKG1heFRleHR1cmVTaXpl
IC0gMiAqIGJvcmRlclRleGVscykpOworICAgIGludCBudW1UaWxlcyA9IG1heCgxLCAxICsgKHRv
dGFsU2l6ZSAtIDEgLSAyICogYm9yZGVyVGV4ZWxzKSAvIChtYXhUZXh0dXJlU2l6ZSAtIDIgKiBi
b3JkZXJUZXhlbHMpKTsKICAgICByZXR1cm4gdG90YWxTaXplID4gMCA/IG51bVRpbGVzIDogMDsK
IH0KIApAQCAtODEsNyArNzksNyBAQCBpbnQgVGlsaW5nRGF0YTo6dGlsZVhJbmRleEZyb21TcmND
b29yZChpbnQgc3JjUG9zKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKIAogICAgIEFTU0VSVCht
X21heFRleHR1cmVTaXplIC0gMiAqIG1fYm9yZGVyVGV4ZWxzKTsKLSAgICBpbnQgeCA9IHNyY1Bv
cyAvIChtX21heFRleHR1cmVTaXplIC0gMiAqIG1fYm9yZGVyVGV4ZWxzKTsKKyAgICBpbnQgeCA9
IChzcmNQb3MgLSBtX2JvcmRlclRleGVscykgLyAobV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBtX2Jv
cmRlclRleGVscyk7CiAgICAgcmV0dXJuIG1pbihtYXgoeCwgMCksIG51bVRpbGVzWCgpIC0gMSk7
CiB9CiAKQEAgLTkxLDcgKzg5LDcgQEAgaW50IFRpbGluZ0RhdGE6OnRpbGVZSW5kZXhGcm9tU3Jj
Q29vcmQoaW50IHNyY1BvcykgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBBU1NFUlQo
bV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBtX2JvcmRlclRleGVscyk7Ci0gICAgaW50IHkgPSBzcmNQ
b3MgLyAobV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBtX2JvcmRlclRleGVscyk7CisgICAgaW50IHkg
PSAoc3JjUG9zIC0gbV9ib3JkZXJUZXhlbHMpIC8gKG1fbWF4VGV4dHVyZVNpemUgLSAyICogbV9i
b3JkZXJUZXhlbHMpOwogICAgIHJldHVybiBtaW4obWF4KHksIDApLCBudW1UaWxlc1koKSAtIDEp
OwogfQogCkBAIC0xMzQsMTYgKzEzMiw2IEBAIEludFJlY3QgVGlsaW5nRGF0YTo6dGlsZUJvdW5k
c1dpdGhCb3JkZXIoaW50IHRpbGUpIGNvbnN0CiAgICAgcmV0dXJuIGJvdW5kczsKIH0KIAotSW50
UmVjdCBUaWxpbmdEYXRhOjp0aWxlQm91bmRzV2l0aE91dGVyQm9yZGVyKGludCB0aWxlKSBjb25z
dAotewotICAgIEludFJlY3QgYm91bmRzID0gdGlsZUJvdW5kcyh0aWxlKTsKLQotICAgIGlmICht
X2JvcmRlclRleGVscykKLSAgICAgICAgYm91bmRzLmluZmxhdGUoMSk7Ci0KLSAgICByZXR1cm4g
Ym91bmRzOwotfQotCiBGbG9hdFJlY3QgVGlsaW5nRGF0YTo6dGlsZUJvdW5kc05vcm1hbGl6ZWQo
aW50IHRpbGUpIGNvbnN0CiB7CiAgICAgYXNzZXJ0VGlsZSh0aWxlKTsKQEAgLTE4MCw2ICsxNjgs
OCBAQCBpbnQgVGlsaW5nRGF0YTo6dGlsZVNpemVYKGludCB4SW5kZXgpIGNvbnN0CiAKICAgICBp
ZiAoIXhJbmRleCAmJiBtX251bVRpbGVzWCA9PSAxKQogICAgICAgICByZXR1cm4gbV90b3RhbFNp
emVYOworICAgIGlmICgheEluZGV4ICYmIG1fbnVtVGlsZXNYID4gMSkKKyAgICAgICAgcmV0dXJu
IG1fbWF4VGV4dHVyZVNpemUgLSBtX2JvcmRlclRleGVsczsKICAgICBpZiAoeEluZGV4IDwgbnVt
VGlsZXNYKCkgLSAxKQogICAgICAgICByZXR1cm4gbV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBtX2Jv
cmRlclRleGVsczsKICAgICBpZiAoeEluZGV4ID09IG51bVRpbGVzWCgpIC0gMSkKQEAgLTE5NSw2
ICsxODUsOCBAQCBpbnQgVGlsaW5nRGF0YTo6dGlsZVNpemVZKGludCB5SW5kZXgpIGNvbnN0CiAK
ICAgICBpZiAoIXlJbmRleCAmJiBtX251bVRpbGVzWSA9PSAxKQogICAgICAgICByZXR1cm4gbV90
b3RhbFNpemVZOworICAgIGlmICgheUluZGV4ICYmIG1fbnVtVGlsZXNZID4gMSkKKyAgICAgICAg
cmV0dXJuIG1fbWF4VGV4dHVyZVNpemUgLSBtX2JvcmRlclRleGVsczsKICAgICBpZiAoeUluZGV4
IDwgbnVtVGlsZXNZKCkgLSAxKQogICAgICAgICByZXR1cm4gbV9tYXhUZXh0dXJlU2l6ZSAtIDIg
KiBtX2JvcmRlclRleGVsczsKICAgICBpZiAoeUluZGV4ID09IG51bVRpbGVzWSgpIC0gMSkKQEAg
LTIzOCw4ICsyMzAsOCBAQCB2b2lkIFRpbGluZ0RhdGE6OmludGVyc2VjdERyYXdRdWFkKGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkcwogCiAgICAgKm5ld1NyYyA9
IHNyY1JlY3RJbnRlcnNlY3RlZDsKICAgICBuZXdTcmMtPm1vdmUoCi0gICAgICAgIC10aWxlQm91
bmRzLngoKSArIG1fYm9yZGVyVGV4ZWxzLAotICAgICAgICAtdGlsZUJvdW5kcy55KCkgKyBtX2Jv
cmRlclRleGVscyk7CisgICAgICAgIC10aWxlQm91bmRzLngoKSArICgodGlsZVhJbmRleCh0aWxl
KSA+IDApID8gbV9ib3JkZXJUZXhlbHMgOiAwKSwKKyAgICAgICAgLXRpbGVCb3VuZHMueSgpICsg
KCh0aWxlWUluZGV4KHRpbGUpID4gMCkgPyBtX2JvcmRlclRleGVscyA6IDApKTsKIAogICAgICpu
ZXdEc3QgPSBGbG9hdFJlY3QoCiAgICAgICAgIHNyY1JlY3RJbnRlcnNlY3RlZE5vcm1YICogZHN0
UmVjdC53aWR0aCgpICsgZHN0UmVjdC54KCksCkBAIC0yNDgsOSArMjQwLDEyIEBAIHZvaWQgVGls
aW5nRGF0YTo6aW50ZXJzZWN0RHJhd1F1YWQoY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIGRzCiAgICAgICAgIHNyY1JlY3RJbnRlcnNlY3RlZE5vcm1IICogZHN0UmVj
dC5oZWlnaHQoKSk7CiB9CiAKLUludFBvaW50IFRpbGluZ0RhdGE6OnRleHR1cmVPZmZzZXQoKSBj
b25zdAorSW50UG9pbnQgVGlsaW5nRGF0YTo6dGV4dHVyZU9mZnNldChpbnQgeEluZGV4LCBpbnQg
eUluZGV4KSBjb25zdAogewotICAgIHJldHVybiBJbnRQb2ludChtX2JvcmRlclRleGVscywgbV9i
b3JkZXJUZXhlbHMpOworICAgIGludCBsZWZ0ID0gKCF4SW5kZXggfHwgbV9udW1UaWxlc1ggPT0g
MSkgPyAwIDogbV9ib3JkZXJUZXhlbHM7CisgICAgaW50IHRvcCA9ICgheUluZGV4IHx8IG1fbnVt
VGlsZXNZID09IDEpID8gMCA6IG1fYm9yZGVyVGV4ZWxzOworCisgICAgcmV0dXJuIEludFBvaW50
KGxlZnQsIHRvcCk7CiB9CiAKIHZvaWQgVGlsaW5nRGF0YTo6cmVjb21wdXRlTnVtVGlsZXMoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0Rh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmgK
aW5kZXggNDNiMDhlMjI4NzQzYThkYmUzYTljZTE1OTllMjM0MzAzMjUzNWNhYy4uM2RhYmI1ZGVj
MzMwNmU3ZTI2MzE0MDViZGMyYzM0ZTk1MmQ0MjAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5oCkBAIC02MSw3ICs2MSw2IEBAIHB1
YmxpYzoKIAogICAgIEludFJlY3QgdGlsZUJvdW5kcyhpbnQgdGlsZSkgY29uc3Q7CiAgICAgSW50
UmVjdCB0aWxlQm91bmRzV2l0aEJvcmRlcihpbnQgdGlsZSkgY29uc3Q7Ci0gICAgSW50UmVjdCB0
aWxlQm91bmRzV2l0aE91dGVyQm9yZGVyKGludCB0aWxlKSBjb25zdDsKICAgICBGbG9hdFJlY3Qg
dGlsZUJvdW5kc05vcm1hbGl6ZWQoaW50IHRpbGUpIGNvbnN0OwogICAgIGludCB0aWxlUG9zaXRp
b25YKGludCB4SW5kZXgpIGNvbnN0OwogICAgIGludCB0aWxlUG9zaXRpb25ZKGludCB5SW5kZXgp
IGNvbnN0OwpAQCAtNzUsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnRlcnNlY3REcmF3
UXVhZChjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
aW50IHRpbGUsIEZsb2F0UmVjdCogbmV3U3JjLCBGbG9hdFJlY3QqIG5ld0RzdCkgY29uc3Q7CiAK
ICAgICAvLyBEaWZmZXJlbmNlIGJldHdlZW4gdGlsZUJvdW5kJ3MgYW5kIHRpbGVCb3VuZFdpdGhC
b3JkZXIncyBsb2NhdGlvbigpLgotICAgIEludFBvaW50IHRleHR1cmVPZmZzZXQoKSBjb25zdDsK
KyAgICBJbnRQb2ludCB0ZXh0dXJlT2Zmc2V0KGludCB4SW5kZXgsIGludCB5SW5kZXgpIGNvbnN0
OwogCiBwcml2YXRlOgogICAgIFRpbGluZ0RhdGEoKSA6IG1fbWF4VGV4dHVyZVNpemUoMCksIG1f
dG90YWxTaXplWCgwKSwgbV90b3RhbFNpemVZKDApIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDE5OGUwNzZkMDIxZTA4Mjg1MTIzMWVhYWM0NWMyYjFlNGY3NGZhZDQuLjYzYzdjNzRk
NzBiZmVkMGZiZDVmYzVmZWY0MjU2Nzc4M2U0OGJkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMDEgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFJlbW92ZSBvdXRlciBib3JkZXIg
ZnJvbSBUaWxpbmdEYXRhIGFzIGl0J3Mgbm8gbG9uZ2VyIG5lZWRlZCBieSBsYXllciBjb21wb3Np
dG9yIGZvciBhbnRpLWFsaWFzaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjQ5NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHRlc3RzL1RpbGluZ0RhdGFUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRFU1QpOgorCiAyMDExLTA4LTAxICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFdlYlNvY2tldDogUmVuYW1lIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dCBtZW1iZXIgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1RpbGluZ0RhdGFUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGls
aW5nRGF0YVRlc3QuY3BwCmluZGV4IGRkZWYwYjk4MjIzMWYyODA3YTQ3ZGM5MDMyM2RiYTQ1NDZj
Mzg5NjguLjc2MmVkYTkzOTkxNTBlYmU0Yzk3MTk0NmE3NGU1N2MzOWEzYjVkZDUgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsaW5nRGF0YVRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsaW5nRGF0YVRlc3QuY3BwCkBAIC00MSwx
MCArNDEsMTAgQEAgbmFtZXNwYWNlIHsKIFRFU1QoVGlsaW5nRGF0YVRlc3QsIG51bVRpbGVzX05v
VGlsaW5nKQogewogICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE2LCAxNiwgMTYsIGZhbHNl
KS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgxNywgMTUsIDE1LCB0
cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgxOCwgMTYsIDE2
LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgxNiwgMTUs
IDE1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgxNiwg
MTYsIDE2LCB0cnVlKS5udW1UaWxlcygpKTsKICAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgx
NiwgIDEsIDE2LCBmYWxzZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0Rh
dGEoMTcsIDE1LCAxNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGlu
Z0RhdGEoMTUsIDE1LCAxNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CiB9CiAKIFRFU1QoVGlsaW5nRGF0
YVRlc3QsIG51bVRpbGVzX1RpbGluZ05vQm9yZGVycykKQEAgLTEwOSw0NSArMTA5LDQ1IEBAIFRF
U1QoVGlsaW5nRGF0YVRlc3QsIG51bVRpbGVzX1RpbGluZ1dpdGhCb3JkZXJzKQogICAgIEVYUEVD
VF9FUSgwLCBUaWxpbmdEYXRhKC0xLCAxLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7CiAgICAgRVhQ
RUNUX0VRKDAsIFRpbGluZ0RhdGEoMCwgIDEsICAxLCB0cnVlKS5udW1UaWxlcygpKTsKIAotICAg
IEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDEsICAxLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7Cisg
ICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMSwgIDEsICAxLCB0cnVlKS5udW1UaWxlcygpKTsK
ICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgxLCAgMSwgIDIsIHRydWUpLm51bVRpbGVzKCkp
OwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDEsICAyLCAgMSwgdHJ1ZSkubnVtVGlsZXMo
KSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgIDEsICAxLCB0cnVlKS5udW1UaWxl
cygpKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgyLCAgMSwgIDIsIHRydWUpLm51bVRp
bGVzKCkpOwotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDIsICAyLCAgMSwgdHJ1ZSkubnVt
VGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgIDIsICAyLCB0cnVlKS5u
dW1UaWxlcygpKTsKLQotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAxLCAgMSwgdHJ1
ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgIDEsICAyLCB0
cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAgMiwgIDEs
IHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsICAyLCAg
MiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDYsIFRpbGluZ0RhdGEoMywgIDIs
ICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoNiwgVGlsaW5nRGF0YSgzLCAg
MywgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg5LCBUaWxpbmdEYXRhKDMs
ICAzLCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0
YSg0LCAgMSwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdE
YXRhKDQsICAyLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGlu
Z0RhdGEoNCwgIDMsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGls
aW5nRGF0YSg0LCAgNCwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgzLCBU
aWxpbmdEYXRhKDQsICA1LCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDMs
IFRpbGluZ0RhdGEoNCwgIDYsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEo
NCwgVGlsaW5nRGF0YSg0LCAgNywgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9F
USg0LCBUaWxpbmdEYXRhKDQsICA4LCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNU
X0VRKDUsIFRpbGluZ0RhdGEoNCwgIDksICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBF
Q1RfRVEoNSwgVGlsaW5nRGF0YSg0LCAxMCwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVY
UEVDVF9FUSg2LCBUaWxpbmdEYXRhKDQsIDExLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0KLSAg
ICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgMSwgIDMsIHRydWUpLm51bVRpbGVzKCkpOwot
ICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICAyLCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7
Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwgIDMsICAzLCB0cnVlKS5udW1UaWxlcygp
KTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSg1LCAgNCwgIDMsIHRydWUpLm51bVRpbGVz
KCkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDUsICA1LCAgMywgdHJ1ZSkubnVtVGls
ZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwgIDYsICAzLCB0cnVlKS5udW1U
aWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgNywgIDMsIHRydWUpLm51
bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA4LCAgMywgdHJ1ZSku
bnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDksICAzLCB0cnVl
KS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAxMCwgIDMsIHRy
dWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsIDExLCAgMywg
dHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMiwgIDEsICAx
LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgyLCAgMSwg
IDIsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDIsICAy
LCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMiwg
IDIsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKKworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRh
KDMsICAxLCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0Rh
dGEoMywgIDIsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5n
RGF0YSgzLCAgMywgIDMsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxp
bmdEYXRhKDMsICA0LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDMsIFRp
bGluZ0RhdGEoMywgIDUsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoNCwg
VGlsaW5nRGF0YSgzLCAgNiwgIDMsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSg1
LCBUaWxpbmdEYXRhKDMsICA3LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7CisKKyAgICBFWFBFQ1Rf
RVEoMSwgVGlsaW5nRGF0YSg0LCAgMSwgIDQsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVD
VF9FUSgxLCBUaWxpbmdEYXRhKDQsICAyLCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQ
RUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwgIDMsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBF
WFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg0LCAgNCwgIDQsIHRydWUpLm51bVRpbGVzKCkpOworICAg
IEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDQsICA1LCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7Cisg
ICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNCwgIDYsICA0LCB0cnVlKS5udW1UaWxlcygpKTsK
KyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg0LCAgNywgIDQsIHRydWUpLm51bVRpbGVzKCkp
OworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDQsICA4LCAgNCwgdHJ1ZSkubnVtVGlsZXMo
KSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNCwgIDksICA0LCB0cnVlKS5udW1UaWxl
cygpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg0LCAxMCwgIDQsIHRydWUpLm51bVRp
bGVzKCkpOworICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDQsIDExLCAgNCwgdHJ1ZSkubnVt
VGlsZXMoKSk7CisKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgMSwgIDUsIHRydWUp
Lm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICAyLCAgNSwgdHJ1
ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwgIDMsICA1LCB0
cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgNCwgIDUs
IHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICA1LCAg
NSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwgIDYs
ICA1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSg1LCAg
NywgIDUsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDUs
ICA4LCAgNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEo
NSwgIDksICA1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0
YSg1LCAxMCwgIDUsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdE
YXRhKDUsIDExLCAgNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CiB9CiAKIFRFU1QoVGlsaW5nRGF0YVRl
c3QsIHRpbGVYSW5kZXhGcm9tU3JjQ29vcmQpCkBAIC0xNjYsMTcgKzE2NiwxNyBAQCBURVNUKFRp
bGluZ0RhdGFUZXN0LCB0aWxlWEluZGV4RnJvbVNyY0Nvb3JkKQogICAgIEVYUEVDVF9FUSgzLCBU
aWxpbmdEYXRhKDMsIDEwLCAxMCwgZmFsc2UpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMTEpKTsK
IAogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRl
eEZyb21TcmNDb29yZCgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMTAsIDEw
LCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGls
aW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMikpOwotICAg
IEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21T
cmNDb29yZCgzKSk7Ci0gICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVl
KS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDQpKTsKLSAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0
YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoNSkpOwotICAgIEVYUEVD
VF9FUSg2LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29y
ZCg2KSk7Ci0gICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxl
WEluZGV4RnJvbVNyY0Nvb3JkKDcpKTsKLSAgICBFWFBFQ1RfRVEoOCwgVGlsaW5nRGF0YSgzLCAx
MCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoOCkpOwotICAgIEVYUEVDVF9FUSg5
LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCg5KSk7
Ci0gICAgRVhQRUNUX0VRKDksIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4
RnJvbVNyY0Nvb3JkKDEwKSk7Ci0gICAgRVhQRUNUX0VRKDksIFRpbGluZ0RhdGEoMywgMTAsIDEw
LCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDExKSk7CisgICAgRVhQRUNUX0VRKDAsIFRp
bGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKKyAg
ICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9t
U3JjQ29vcmQoMikpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1
ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgzKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0Rh
dGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDQpKTsKKyAgICBFWFBF
Q1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29v
cmQoNSkpOworICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGls
ZVhJbmRleEZyb21TcmNDb29yZCg2KSk7CisgICAgRVhQRUNUX0VRKDYsIFRpbGluZ0RhdGEoMywg
MTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDcpKTsKKyAgICBFWFBFQ1RfRVEo
NywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoOCkp
OworICAgIEVYUEVDVF9FUSg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRl
eEZyb21TcmNDb29yZCg5KSk7CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEw
LCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEwKSk7CisgICAgRVhQRUNUX0VRKDcsIFRp
bGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDExKSk7CiAK
ICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgxLCAxLCAxLCBmYWxzZSkudGlsZVhJbmRleEZy
b21TcmNDb29yZCgwKSk7CiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgMiwgMiwgZmFs
c2UpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwpAQCAtMTk0LDEzICsxOTQsMTMgQEAgVEVT
VChUaWxpbmdEYXRhVGVzdCwgdGlsZVhJbmRleEZyb21TcmNDb29yZCkKICAgICBFWFBFQ1RfRVEo
MCwgVGlsaW5nRGF0YSgyLCAyLCAyLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDApKTsK
ICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgyLCAyLCAyLCB0cnVlKS50aWxlWEluZGV4RnJv
bVNyY0Nvb3JkKDEpKTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVl
KS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0
YSgzLCAzLCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKLSAgICBFWFBFQ1Rf
RVEoMiwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDIp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxlWEluZGV4
RnJvbVNyY0Nvb3JkKDEpKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0
cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDIpKTsKIAotICAgIEVYUEVDVF9FUSgwLCBUaWxp
bmdEYXRhKDQsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwotICAgIEVY
UEVDVF9FUSgwLCBUaWxpbmdEYXRhKDQsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29v
cmQoMSkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDQsIDQsIDMsIHRydWUpLnRpbGVY
SW5kZXhGcm9tU3JjQ29vcmQoMikpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDQsIDQs
IDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMykpOworICAgIEVYUEVDVF9FUSgwLCBU
aWxpbmdEYXRhKDMsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkpOworICAg
IEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3Jj
Q29vcmQoMSkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsIDMsIHRydWUpLnRp
bGVYSW5kZXhGcm9tU3JjQ29vcmQoMikpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMs
IDQsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMykpOwogfQogVEVTVChUaWxpbmdE
YXRhVGVzdCwgdGlsZVlJbmRleEZyb21TcmNDb29yZCkKIHsKQEAgLTIxOCwxNyArMjE4LDE3IEBA
IFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVZSW5kZXhGcm9tU3JjQ29vcmQpCiAgICAgRVhQRUNU
X0VRKDMsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCBmYWxzZSkudGlsZVlJbmRleEZyb21TcmNDb29y
ZCgxMSkpOwogCiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50
aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgz
LCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkpOwotICAgIEVYUEVDVF9F
USgyLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgy
KSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUlu
ZGV4RnJvbVNyY0Nvb3JkKDMpKTsKLSAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAxMCwg
MTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNCkpOwotICAgIEVYUEVDVF9FUSg1LCBU
aWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg1KSk7Ci0g
ICAgRVhQRUNUX0VRKDYsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJv
bVNyY0Nvb3JkKDYpKTsKLSAgICBFWFBFQ1RfRVEoNywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRy
dWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNykpOwotICAgIEVYUEVDVF9FUSg4LCBUaWxpbmdE
YXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg4KSk7Ci0gICAgRVhQ
RUNUX0VRKDksIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nv
b3JkKDkpKTsKLSAgICBFWFBFQ1RfRVEoOSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRp
bGVZSW5kZXhGcm9tU3JjQ29vcmQoMTApKTsKLSAgICBFWFBFQ1RfRVEoOSwgVGlsaW5nRGF0YSgz
LCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMTEpKTsKKyAgICBFWFBFQ1Rf
RVEoMCwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQo
MSkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJ
bmRleEZyb21TcmNDb29yZCgyKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMTAs
IDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDMpKTsKKyAgICBFWFBFQ1RfRVEoMywg
VGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNCkpOwor
ICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZy
b21TcmNDb29yZCg1KSk7CisgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0
cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDYpKTsKKyAgICBFWFBFQ1RfRVEoNiwgVGlsaW5n
RGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNykpOworICAgIEVY
UEVDVF9FUSg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmND
b29yZCg4KSk7CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50
aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDkpKTsKKyAgICBFWFBFQ1RfRVEoNywgVGlsaW5nRGF0YSgz
LCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMTApKTsKKyAgICBFWFBFQ1Rf
RVEoNywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQo
MTEpKTsKIAogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDEsIDEsIDEsIGZhbHNlKS50aWxl
WUluZGV4RnJvbVNyY0Nvb3JkKDApKTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgyLCAy
LCAyLCBmYWxzZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgwKSk7CkBAIC0yNDYsNjEgKzI0Niw2
MSBAQCBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlWUluZGV4RnJvbVNyY0Nvb3JkKQogICAgIEVY
UEVDVF9FUSgwLCBUaWxpbmdEYXRhKDIsIDIsIDIsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29v
cmQoMCkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDIsIDIsIDIsIHRydWUpLnRpbGVZ
SW5kZXhGcm9tU3JjQ29vcmQoMSkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDMs
IDMsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBU
aWxpbmdEYXRhKDMsIDMsIDMsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkpOwotICAg
IEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDMsIDMsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3Jj
Q29vcmQoMikpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDMsIDMsIHRydWUpLnRp
bGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMs
IDMsIDMsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMikpOwogCi0gICAgRVhQRUNUX0VR
KDAsIFRpbGluZ0RhdGEoNCwgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgwKSk7
Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoNCwgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZy
b21TcmNDb29yZCgxKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwgMywgNCwgdHJ1
ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgyKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0Rh
dGEoNCwgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgzKSk7CisgICAgRVhQRUNU
X0VRKDAsIFRpbGluZ0RhdGEoMywgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgw
KSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywgNCwgdHJ1ZSkudGlsZVlJbmRl
eEZyb21TcmNDb29yZCgxKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMywgNCwg
dHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgyKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGlu
Z0RhdGEoMywgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgzKSk7CiB9CiAKIFRF
U1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVTaXplWCkKIHsKICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5n
RGF0YSg1LCAgNSwgIDUsIGZhbHNlKS50aWxlU2l6ZVgoMCkpOwotICAgIEVYUEVDVF9FUSgzLCBU
aWxpbmdEYXRhKDUsICA1LCAgNSwgdHJ1ZSkudGlsZVNpemVYKDApKTsKKyAgICBFWFBFQ1RfRVEo
NSwgVGlsaW5nRGF0YSg1LCAgNSwgIDUsIHRydWUpLnRpbGVTaXplWCgwKSk7CiAKICAgICBFWFBF
Q1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIGZhbHNlKS50aWxlU2l6ZVgoMCkpOwogICAg
IEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgZmFsc2UpLnRpbGVTaXplWCgxKSk7
Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCB0cnVlKS50aWxlU2l6ZVgo
MCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgdHJ1ZSkudGlsZVNp
emVYKDEpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIHRydWUpLnRp
bGVTaXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCB0cnVl
KS50aWxlU2l6ZVgoMSkpOwogCiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDgsICA4
LCBmYWxzZSkudGlsZVNpemVYKDApKTsKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAg
OCwgIDgsIGZhbHNlKS50aWxlU2l6ZVgoMSkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRh
KDUsICA4LCAgOCwgdHJ1ZSkudGlsZVNpemVYKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5n
RGF0YSg1LCAgOCwgIDgsIHRydWUpLnRpbGVTaXplWCgxKSk7CisgICAgRVhQRUNUX0VRKDQsIFRp
bGluZ0RhdGEoNSwgIDgsICA4LCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9FUSg0
LCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgdHJ1ZSkudGlsZVNpemVYKDEpKTsKIAogICAgIEVYUEVD
VF9FUSg1LCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgZmFsc2UpLnRpbGVTaXplWCgwKSk7CiAgICAg
RVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCBmYWxzZSkudGlsZVNpemVYKDEpKTsK
LSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIHRydWUpLnRpbGVTaXplWCgw
KSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCB0cnVlKS50aWxlU2l6
ZVgoMCkpOwogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgdHJ1ZSkudGls
ZVNpemVYKDEpKTsKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIHRydWUp
LnRpbGVTaXplWCgyKSk7CiAKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMSwgMTEs
IHRydWUpLnRpbGVTaXplWCgyKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgMTEs
IDExLCB0cnVlKS50aWxlU2l6ZVgoMikpOwogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUs
IDEyLCAxMiwgdHJ1ZSkudGlsZVNpemVYKDIpKTsKIH0KIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRp
bGVTaXplWSkKIHsKICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAgNSwgIDUsIGZhbHNl
KS50aWxlU2l6ZVkoMCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA1LCAgNSwg
dHJ1ZSkudGlsZVNpemVZKDApKTsKKyAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAgNSwg
IDUsIHRydWUpLnRpbGVTaXplWSgwKSk7CiAKICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1
LCAgNiwgIDYsIGZhbHNlKS50aWxlU2l6ZVkoMCkpOwogICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdE
YXRhKDUsICA2LCAgNiwgZmFsc2UpLnRpbGVTaXplWSgxKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRp
bGluZ0RhdGEoNSwgIDYsICA2LCB0cnVlKS50aWxlU2l6ZVkoMCkpOwotICAgIEVYUEVDVF9FUSgz
LCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgdHJ1ZSkudGlsZVNpemVZKDEpKTsKKyAgICBFWFBFQ1Rf
RVEoNCwgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIHRydWUpLnRpbGVTaXplWSgwKSk7CisgICAgRVhQ
RUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCB0cnVlKS50aWxlU2l6ZVkoMSkpOwogCiAg
ICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCBmYWxzZSkudGlsZVNpemVZKDAp
KTsKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIGZhbHNlKS50aWxlU2l6
ZVkoMSkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgdHJ1ZSkudGls
ZVNpemVZKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIHRydWUp
LnRpbGVTaXplWSgxKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCB0
cnVlKS50aWxlU2l6ZVkoMCkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsICA4LCAg
OCwgdHJ1ZSkudGlsZVNpemVZKDEpKTsKIAogICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUs
IDEwLCAxMCwgZmFsc2UpLnRpbGVTaXplWSgwKSk7CiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0Rh
dGEoNSwgMTAsIDEwLCBmYWxzZSkudGlsZVNpemVZKDEpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGls
aW5nRGF0YSg1LCAxMCwgMTAsIHRydWUpLnRpbGVTaXplWSgwKSk7CisgICAgRVhQRUNUX0VRKDQs
IFRpbGluZ0RhdGEoNSwgMTAsIDEwLCB0cnVlKS50aWxlU2l6ZVkoMCkpOwogICAgIEVYUEVDVF9F
USgzLCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgdHJ1ZSkudGlsZVNpemVZKDEpKTsKICAgICBFWFBF
Q1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIHRydWUpLnRpbGVTaXplWSgyKSk7CiAKLSAg
ICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMSwgMTEsIHRydWUpLnRpbGVTaXplWSgyKSk7
CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgMTEsIDExLCB0cnVlKS50aWxlU2l6ZVko
MikpOwogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEyLCAxMiwgdHJ1ZSkudGlsZVNp
emVZKDIpKTsKIH0KIApAQCAtMzE5LDEwICszMTksMTAgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwg
dGlsZVNpemVYX2FuZF90aWxlUG9zaXRpb25YKQogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRh
KDMsIDEsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7CiAgICAgRVhQRUNUX0VRKDEsIFRp
bGluZ0RhdGEoMywgMSwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMCkpOwogICAgIEVYUEVDVF9FUSgw
LCBUaWxpbmdEYXRhKDMsIDEsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7Ci0gICAgRVhQ
RUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMywgICAxLCB0cnVlKS50aWxlU2l6ZVgoMCkpOwotICAg
IEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDUsIDMsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgw
KSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMywgMTAwLCB0cnVlKS50aWxlU2l6
ZVgoMCkpOwotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDUsIDMsIDEwMCwgdHJ1ZSkudGls
ZVBvc2l0aW9uWCgwKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMywgICAxLCB0
cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDMsICAg
MSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEo
MywgMywgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdE
YXRhKDMsIDMsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7CiAKICAgICAvLyBNdWx0aXBs
ZSB0aWxlczoKICAgICAvLyBubyBib3JkZXIKQEAgLTM0MCwyMyArMzQwLDIzIEBAIFRFU1QoVGls
aW5nRGF0YVRlc3QsIHRpbGVTaXplWF9hbmRfdGlsZVBvc2l0aW9uWCkKICAgICAvLyBNdWx0aXBs
ZSB0aWxlczoKICAgICAvLyB3aXRoIGJvcmRlcgogICAgIC8vIHBvc2l0aW9ucyAwLCAyLCAzLCA0
Ci0gICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS5udW1UaWxlcygp
KTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAgIDEsIHRydWUpLnRpbGVTaXpl
WCgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS50aWxl
U2l6ZVgoMSkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsICAgMSwgdHJ1ZSku
dGlsZVNpemVYKDIpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAgIDEsIHRy
dWUpLnRpbGVTaXplWCgzKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgNCwgICAx
LCB0cnVlKS50aWxlUG9zaXRpb25YKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgz
LCA0LCAgIDEsIHRydWUpLnRpbGVQb3NpdGlvblgoMSkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxp
bmdEYXRhKDMsIDQsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgyKSk7Ci0gICAgRVhQRUNUX0VR
KDMsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS50aWxlUG9zaXRpb25YKDMpKTsKLSAgICBF
WFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAxMDAsIHRydWUpLnRpbGVTaXplWCgwKSk7Ci0g
ICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMSkp
OwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsIDEwMCwgdHJ1ZSkudGlsZVNpemVY
KDIpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAxMDAsIHRydWUpLnRpbGVT
aXplWCgzKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgNCwgMTAwLCB0cnVlKS50
aWxlUG9zaXRpb25YKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAxMDAs
IHRydWUpLnRpbGVQb3NpdGlvblgoMSkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMs
IDQsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgyKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGlu
Z0RhdGEoMywgNCwgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25YKDMpKTsKKyAgICBFWFBFQ1RfRVEo
NCwgVGlsaW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9F
USgyLCBUaWxpbmdEYXRhKDMsIDYsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDApKTsKKyAgICBFWFBF
Q1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLnRpbGVTaXplWCgxKSk7CisgICAg
RVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNiwgICAxLCB0cnVlKS50aWxlU2l6ZVgoMikpOwor
ICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDYsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDMp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLnRpbGVQb3Np
dGlvblgoMCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDYsICAgMSwgdHJ1ZSku
dGlsZVBvc2l0aW9uWCgxKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgNiwgICAx
LCB0cnVlKS50aWxlUG9zaXRpb25YKDIpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgz
LCA2LCAgIDEsIHRydWUpLnRpbGVQb3NpdGlvblgoMykpOworICAgIEVYUEVDVF9FUSgyLCBUaWxp
bmdEYXRhKDMsIDYsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDApKTsKKyAgICBFWFBFQ1RfRVEoMSwg
VGlsaW5nRGF0YSgzLCA2LCAxMDAsIHRydWUpLnRpbGVTaXplWCgxKSk7CisgICAgRVhQRUNUX0VR
KDEsIFRpbGluZ0RhdGEoMywgNiwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMikpOworICAgIEVYUEVD
VF9FUSgyLCBUaWxpbmdEYXRhKDMsIDYsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDMpKTsKKyAgICBF
WFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCA2LCAxMDAsIHRydWUpLnRpbGVQb3NpdGlvblgoMCkp
OworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDYsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0
aW9uWCgxKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgNiwgMTAwLCB0cnVlKS50
aWxlUG9zaXRpb25YKDIpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCA2LCAxMDAs
IHRydWUpLnRpbGVQb3NpdGlvblgoMykpOwogfQogCiBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxl
U2l6ZVlfYW5kX3RpbGVQb3NpdGlvblkpCkBAIC0zNzQsMTAgKzM3NCwxMCBAQCBURVNUKFRpbGlu
Z0RhdGFUZXN0LCB0aWxlU2l6ZVlfYW5kX3RpbGVQb3NpdGlvblkpCiAgICAgRVhQRUNUX0VRKDAs
IFRpbGluZ0RhdGEoMywgICAxLCAxLCB0cnVlKS50aWxlUG9zaXRpb25ZKDApKTsKICAgICBFWFBF
Q1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDEsIHRydWUpLnRpbGVTaXplWSgwKSk7CiAgICAg
RVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMTAwLCAxLCB0cnVlKS50aWxlUG9zaXRpb25ZKDAp
KTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgIDEsIDMsIHRydWUpLnRpbGVTaXpl
WSgwKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoNSwgICAxLCAzLCB0cnVlKS50aWxl
UG9zaXRpb25ZKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMDAsIDMsIHRy
dWUpLnRpbGVTaXplWSgwKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoNSwgMTAwLCAz
LCB0cnVlKS50aWxlUG9zaXRpb25ZKDApKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgz
LCAgIDEsIDMsIHRydWUpLnRpbGVTaXplWSgwKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0Rh
dGEoMywgICAxLCAzLCB0cnVlKS50aWxlUG9zaXRpb25ZKDApKTsKKyAgICBFWFBFQ1RfRVEoMywg
VGlsaW5nRGF0YSgzLCAxMDAsIDMsIHRydWUpLnRpbGVTaXplWSgwKSk7CisgICAgRVhQRUNUX0VR
KDAsIFRpbGluZ0RhdGEoMywgMTAwLCAzLCB0cnVlKS50aWxlUG9zaXRpb25ZKDApKTsKIAogICAg
IC8vIE11bHRpcGxlIHRpbGVzOgogICAgIC8vIG5vIGJvcmRlcgpAQCAtMzk1LDIzICszOTUsMjMg
QEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgdGlsZVNpemVZX2FuZF90aWxlUG9zaXRpb25ZKQogICAg
IC8vIE11bHRpcGxlIHRpbGVzOgogICAgIC8vIHdpdGggYm9yZGVyCiAgICAgLy8gcG9zaXRpb25z
IDAsIDIsIDMsIDQKLSAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAgIDEsIDQsIHRydWUp
Lm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAgMSwgNCwgdHJ1
ZSkudGlsZVNpemVZKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgIDEsIDQs
IHRydWUpLnRpbGVTaXplWSgxKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgICAx
LCA0LCB0cnVlKS50aWxlU2l6ZVkoMikpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMs
ICAgMSwgNCwgdHJ1ZSkudGlsZVNpemVZKDMpKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0
YSgzLCAgIDEsIDQsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBU
aWxpbmdEYXRhKDMsICAgMSwgNCwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgxKSk7Ci0gICAgRVhQRUNU
X0VRKDIsIFRpbGluZ0RhdGEoMywgICAxLCA0LCB0cnVlKS50aWxlUG9zaXRpb25ZKDIpKTsKLSAg
ICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCAgIDEsIDQsIHRydWUpLnRpbGVQb3NpdGlvblko
MykpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwMCwgNCwgdHJ1ZSkudGlsZVNp
emVZKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDQsIHRydWUpLnRp
bGVTaXplWSgxKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMTAwLCA0LCB0cnVl
KS50aWxlU2l6ZVkoMikpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwMCwgNCwg
dHJ1ZSkudGlsZVNpemVZKDMpKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAxMDAs
IDQsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRh
KDMsIDEwMCwgNCwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgxKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRp
bGluZ0RhdGEoMywgMTAwLCA0LCB0cnVlKS50aWxlUG9zaXRpb25ZKDIpKTsKLSAgICBFWFBFQ1Rf
RVEoMywgVGlsaW5nRGF0YSgzLCAxMDAsIDQsIHRydWUpLnRpbGVQb3NpdGlvblkoMykpOworICAg
IEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkubnVtVGlsZXMoKSk7Cisg
ICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgICAxLCA2LCB0cnVlKS50aWxlU2l6ZVkoMCkp
OworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkudGlsZVNpemVZ
KDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgIDEsIDYsIHRydWUpLnRpbGVT
aXplWSgyKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgICAxLCA2LCB0cnVlKS50
aWxlU2l6ZVkoMykpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1
ZSkudGlsZVBvc2l0aW9uWSgwKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgICAx
LCA2LCB0cnVlKS50aWxlUG9zaXRpb25ZKDEpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0
YSgzLCAgIDEsIDYsIHRydWUpLnRpbGVQb3NpdGlvblkoMikpOworICAgIEVYUEVDVF9FUSg0LCBU
aWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgzKSk7CisgICAgRVhQRUNU
X0VRKDIsIFRpbGluZ0RhdGEoMywgMTAwLCA2LCB0cnVlKS50aWxlU2l6ZVkoMCkpOworICAgIEVY
UEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwMCwgNiwgdHJ1ZSkudGlsZVNpemVZKDEpKTsKKyAg
ICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDYsIHRydWUpLnRpbGVTaXplWSgyKSk7
CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMTAwLCA2LCB0cnVlKS50aWxlU2l6ZVko
MykpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEwMCwgNiwgdHJ1ZSkudGlsZVBv
c2l0aW9uWSgwKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMTAwLCA2LCB0cnVl
KS50aWxlUG9zaXRpb25ZKDEpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCAxMDAs
IDYsIHRydWUpLnRpbGVQb3NpdGlvblkoMikpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRh
KDMsIDEwMCwgNiwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgzKSk7CiB9CiAKIFRFU1QoVGlsaW5nRGF0
YVRlc3QsIHNldFRvdGFsU2l6ZSkKQEAgLTQ2OCw3ICs0NjgsNyBAQCBURVNUKFRpbGluZ0RhdGFU
ZXN0LCBzZXRNYXhUZXh0dXJlU2l6ZU5vQm9yZGVycykKIAogVEVTVChUaWxpbmdEYXRhVGVzdCwg
c2V0TWF4VGV4dHVyZVNpemVCb3JkZXJzKQogewotICAgIFRpbGluZ0RhdGEgZGF0YSg4LCAxNiwg
MzAsIHRydWUpOworICAgIFRpbGluZ0RhdGEgZGF0YSg4LCAxNiwgMzIsIHRydWUpOwogICAgIEVY
UEVDVF9FUSgzLCBkYXRhLm51bVRpbGVzWCgpKTsKICAgICBFWFBFQ1RfRVEoNSwgZGF0YS5udW1U
aWxlc1koKSk7CiAKQEAgLTQ4NCw3ICs0ODQsNyBAQCBURVNUKFRpbGluZ0RhdGFUZXN0LCBzZXRN
YXhUZXh0dXJlU2l6ZUJvcmRlcnMpCiAKICAgICBkYXRhLnNldE1heFRleHR1cmVTaXplKDUpOwog
ICAgIEVYUEVDVF9FUSg1LCBkYXRhLm1heFRleHR1cmVTaXplKCkpOwotICAgIEVYUEVDVF9FUSg2
LCBkYXRhLm51bVRpbGVzWCgpKTsKKyAgICBFWFBFQ1RfRVEoNSwgZGF0YS5udW1UaWxlc1goKSk7
CiAgICAgRVhQRUNUX0VRKDEwLCBkYXRhLm51bVRpbGVzWSgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102541</attachid>
            <date>2011-08-01 12:07:04 -0700</date>
            <delta_ts>2011-08-01 14:52:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64942-20110801150703.patch</filename>
            <type>text/plain</type>
            <size>71129</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIxMzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0MWVlYmIxNjhkNTM4N2U2MDc1NzQ3
M2ZiNjQzZDY3ZDAxODllOGJhLi5hZTM2YmNiMTU2YjgzMzY4YjVhZGJlMjAwZjVmMmQ5ZmRhOWQ4
NWE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDgtMDEgIERhdmlkIFJldmVtYW4gIDxy
ZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFVzZSBlZGdlLWRpc3Rh
bmNlIG1ldGhvZCBmb3IgbGF5ZXIgYW50aS1hbGlhc2luZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGVkIHJlc3VsdHMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEt
MDgtMDEgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBb
UXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nIGFmdGVyIHI5MjEyNy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCBkYzA1NzFj
ZDUyOWI0ZTA0NGMwZTM5Y2ExMGQ3YmVmYTNkMWU0MjIzLi4yNDNlMDI3MmE0N2QzZjRjYWM1MGI2
NzQyZjNiZGIwZjYwM2JhMDBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0yNzc1LDYgKzI3NzUsMjQgQEAgQlVHV0s1
NTk2OCBHUFUgV0lOIERFQlVHIDogY29tcG9zaXRpbmcvd2ViZ2wvd2ViZ2wtbm9ucHJlbXVsdGlw
bGllZC1ibGVuZC5odG1sID0KIC8vIDIgcGl4ZWwgc3RyZXRjaGluZyB3aGVuIHJlbmRlcmluZyBz
b21lIHZpZGVvcyB3aXRoIHRoZSBHUFUgKE5vdyBpdCdzIGZsYWt5KQogQlVHQ1I3NDEwMiBHUFUg
TElOVVggOiBtZWRpYS92aWRlby1jb250cm9scy1yZW5kZXJpbmcuaHRtbCA9IElNQUdFIFBBU1MK
IAorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNvbG9yLW1h
dGNoaW5nLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5nL2dlb21ldHJ5L2Fu
Y2VzdG9yLW92ZXJmbG93LWNoYW5nZS5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21wb3Np
dGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBj
b21wb3NpdGluZy9nZW9tZXRyeS9sYXllci1kdWUtdG8tbGF5ZXItY2hpbGRyZW4tZGVlcC5odG1s
ID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21wb3NpdGluZy9nZW9tZXRyeS9sYXllci1kdWUtdG8t
bGF5ZXItY2hpbGRyZW4uaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogY29tcG9zaXRpbmcvZ2Vv
bWV0cnkvdmVydGljYWwtc2Nyb2xsLWNvbXBvc2l0ZWQuaHRtbCA9IElNQUdFCitCVUdXSzY0OTQy
IDogY29tcG9zaXRpbmcvb3ZlcmZsb3cvZml4ZWQtcG9zaXRpb24tYW5jZXN0b3ItY2xpcC5odG1s
ID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVm
bGVjdGlvbi10cmFuc2l0aW9uLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5n
L3JlZmxlY3Rpb25zL3RyYW5zZm9ybS1pbnNpZGUtcmVmbGVjdGlvbi5odG1sID0gSU1BR0UKK0JV
R1dLNjQ5NDIgOiBjb21wb3NpdGluZy9zaGFkb3dzL3NoYWRvdy1kcmF3aW5nLmh0bWwgPSBJTUFH
RQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5nL3RyYW5zaXRpb25zL3NjYWxlLXRyYW5zaXRpb24t
bm8tc3RhcnQuaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogbWVkaWEvdmlkZW8tdHJhbnNmb3Jt
ZWQuaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogbWVkaWEvdmlkZW8tem9vbS1jb250cm9scy5o
dG1sICA9IElNQUdFCitCVUdXSzY0OTQyIDogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcv
YmFja2ZhY2UtdmlzaWJpbGl0eS10cmFuc2Zvcm1lZC5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIg
OiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9odWdlLWxheWVyLXJvdGF0ZWQuaHRtbCA9
IElNQUdFCitCVUdXSzY0OTQyIDogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvcGVycGVu
ZGljdWxhci1sYXllci1zb3J0aW5nLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IHBsYXRmb3Jt
L2Nocm9taXVtL2NvbXBvc2l0aW5nL3RpbnktbGF5ZXItcm90YXRlZC5odG1sID0gSU1BR0UKKwog
CiBCVUdDUjcyMjIzIDogbWVkaWEvdmlkZW8tZnJhbWUtYWNjdXJhdGUtc2Vlay5odG1sID0gSU1B
R0UgUEFTUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzFiYzk3ZGE4ZmYzZmY2YWIwOGFmZjhlN2FkY2U2NGQ3
MTU2MTJiZi4uNjhlNWZkZjJkYzdjNzZjOGYzMmUyZWI2ZGYwMjgzZDJkODE1MWEzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDExLTA4LTAxICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1h
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBVc2UgZWRnZS1kaXN0YW5jZSBt
ZXRob2QgZm9yIGxheWVyIGFudGktYWxpYXNpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDk0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVzZSBhbiBlZGdlIGRpc3RhbmNlIGJhc2VkIG1ldGhvZCBp
bnN0ZWFkIG9mIHRoZSBjdXJyZW50IGxpbmVhcgorICAgICAgICBmaWx0ZXJpbmcgbWV0aG9kIGZv
ciBwcm9kdWNpbmcgYW50aS1hbGlhc2VkIGVkZ2VzIG9uIDNEIHRyYW5zZm9ybWVkCisgICAgICAg
IGxheWVycy4gVGhpcyByZW1vdmVzIHRoZSBvdXRlciBib3JkZXIgaGFuZGxpbmcgZnJvbSBUaWxp
bmdEYXRhIGFzCisgICAgICAgIGl0J3Mgbm8gbG9uZ2VyIG5lZWRlZCBmb3IgYW50aS1hbGlhc2lu
Zy4KKworICAgICAgICBUZXN0czogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvdGlueS1s
YXllci1yb3RhdGVkLmh0bWwgKGV4aXN0aW5nKQorICAgICAgICAgICAgICAgcGxhdGZvcm0vY2hy
b21pdW0vY29tcG9zaXRpbmcvaHVnZS1sYXllci1yb3RhdGVkLmh0bWwgKGV4aXN0aW5nKQorICAg
ICAgICAgICAgICAgY29tcG9zaXRpbmcvaW1hZ2VzL2NvbnRlbnQtaW1hZ2UtY2hhbmdlLmh0bWwg
KGV4aXN0aW5nKQorICAgICAgICAgICAgICAgVGlsaW5nRGF0YVRlc3QgaW4gd2Via2l0X3VuaXRf
dGVzdHMKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5NYXRyaXgpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0RHJhd1ZpZXdwb3J0UmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbUFBKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dp
enpsZUFBKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
d2luZG93TWF0cml4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRpbGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVt
OjpzZXRUaWxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OnRp
bGVMYXllclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjppbnZh
bGlkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0
ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpkcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6Z3Jvd0xheWVyVG9Db250YWluKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJUaWxlOjpWZXJ0ZXhTaGFkZXJUaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclRpbGU6OmluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6VmVydGV4U2hhZGVyVGlsZTo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmc6OkZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZzo6aW5pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBOjpnZXRTaGFkZXJTdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhh
QUE6OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2hhZGVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclRpbGU6
OnZzVGV4VHJhbnNmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhB
bHBoYUFBQmluZGluZzo6YWxwaGFMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVu
dFRleEFscGhhQUFCaW5kaW5nOjpzYW1wbGVyTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZzo6ZnNUZXhUcmFuc2Zvcm1Mb2NhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFnbWVudFRleEFscGhhQUFCaW5kaW5nOjplZGdlTG9jYXRpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OlRpbGVkTGF5ZXJDaHJv
bWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZVRpbGVT
aXplQW5kVGlsaW5nT3B0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlVGlsZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hy
b21pdW06OnNldElzTWFzayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1Rp
bGluZ0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU51bVRpbGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6OnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsaW5nRGF0YTo6dGlsZVlJbmRleEZyb21TcmNDb29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpUaWxpbmdEYXRhOjp0aWxlU2l6ZVgpOgorICAgICAgICAoV2ViQ29yZTo6VGls
aW5nRGF0YTo6dGlsZVNpemVZKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6OmludGVy
c2VjdERyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6OnRleHR1cmVPZmZz
ZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmg6CisKIDIw
MTEtMDgtMDEgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFtRdF0gT3BlbkdMU2hpbXMgZG9lcyBub3QgYnVpbGQgb24gQVJNCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCAzOTVmZWM2OTU2ZWYxNzA4NGQyMGQ3ZTU1YmM3
ZmY0YzQzZWJjZGNjLi5hNWNhN2IyMWI4ZGQyNGRhYjhhZTE4ZmZjOTllN2ExZGZlYzgzMmRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTM4NCw2ICszODQsMjEg
QEAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IG9ydGhvTWF0cml4KGZsb2F0IGxlZnQsIGZs
b2F0IHJpZ2h0LCBmbG9hdCBib3R0b20sIGYKICAgICByZXR1cm4gb3J0aG87CiB9CiAKK3N0YXRp
YyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW5NYXRyaXgoaW50IHgsIGludCB5LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpCit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc2NyZWVuOworCisg
ICAgLy8gTWFwIHRvIHZpZXdwb3J0LgorICAgIHNjcmVlbi50cmFuc2xhdGUzZCh4LCB5LCAwKTsK
KyAgICBzY3JlZW4uc2NhbGUzZCh3aWR0aCwgaGVpZ2h0LCAwKTsKKworICAgIC8vIE1hcCB4LCB5
IGFuZCB6IHRvIHVuaXQgc3F1YXJlLgorICAgIHNjcmVlbi50cmFuc2xhdGUzZCgwLjUsIDAuNSwg
MC41KTsKKyAgICBzY3JlZW4uc2NhbGUzZCgwLjUsIDAuNSwgMC41KTsKKworICAgIHJldHVybiBz
Y3JlZW47Cit9CisKIFBhc3NSZWZQdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgUGFzc093
blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gY29udGVudFBhaW50LCBib29sIGFjY2VsZXJhdGVE
cmF3aW5nKQogewogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IGNsaWVu
dC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCgpOwpAQCAtNzM3LDYgKzc1Miw3IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCkKIAogICAgIC8vIFRoZSBHTCB2aWV3cG9ydCBjb3ZlcnMgdGhl
IGVudGlyZSB2aXNpYmxlIGFyZWEsIGluY2x1ZGluZyB0aGUgc2Nyb2xsYmFycy4KICAgICBHTEMo
bV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIG1fdmlld3BvcnRWaXNp
YmxlUmVjdC53aWR0aCgpLCBtX3ZpZXdwb3J0VmlzaWJsZVJlY3QuaGVpZ2h0KCkpKTsKKyAgICBt
X3dpbmRvd01hdHJpeCA9IHNjcmVlbk1hdHJpeCgwLCAwLCBtX3ZpZXdwb3J0VmlzaWJsZVJlY3Qu
d2lkdGgoKSwgbV92aWV3cG9ydFZpc2libGVSZWN0LmhlaWdodCgpKTsKIAogICAgIC8vIEJpbmQg
dGhlIGNvbW1vbiB2ZXJ0ZXggYXR0cmlidXRlcyB1c2VkIGZvciBkcmF3aW5nIGFsbCB0aGUgbGF5
ZXJzLgogICAgIG1fc2hhcmVkR2VvbWV0cnktPnByZXBhcmVGb3JEcmF3KCk7CkBAIC0xMTIxLDYg
KzExMzcsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0RHJhd1ZpZXdwb3J0UmVj
dChjb25zdCBJbnRSZWN0JiBkcmF3UmVjdCwgYm9vbCBmbAogICAgIGVsc2UKICAgICAgICAgbV9w
cm9qZWN0aW9uTWF0cml4ID0gb3J0aG9NYXRyaXgoZHJhd1JlY3QueCgpLCBkcmF3UmVjdC5tYXhY
KCksIGRyYXdSZWN0LnkoKSwgZHJhd1JlY3QubWF4WSgpKTsKICAgICBHTEMobV9jb250ZXh0Lmdl
dCgpLCBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIGRyYXdSZWN0LndpZHRoKCksIGRyYXdSZWN0
LmhlaWdodCgpKSk7CisgICAgbV93aW5kb3dNYXRyaXggPSBzY3JlZW5NYXRyaXgoMCwgMCwgZHJh
d1JlY3Qud2lkdGgoKSwgZHJhd1JlY3QuaGVpZ2h0KCkpOwogfQogCiAKQEAgLTEyMjAsNiArMTIz
NywyOCBAQCBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW1Td2l6emxlKiBMYXllclJl
bmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aQogICAgIHJldHVybiBtX3RpbGVyUHJvZ3Jh
bVN3aXp6bGUuZ2V0KCk7CiB9CiAKK2NvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbUFB
KiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbUFBKCkKK3sKKyAgICBpZiAoIW1f
dGlsZXJQcm9ncmFtQUEpCisgICAgICAgIG1fdGlsZXJQcm9ncmFtQUEgPSBhZG9wdFB0cihuZXcg
TGF5ZXJUaWxlckNocm9taXVtOjpQcm9ncmFtQUEobV9jb250ZXh0LmdldCgpKSk7CisgICAgaWYg
KCFtX3RpbGVyUHJvZ3JhbUFBLT5pbml0aWFsaXplZCgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5U
KCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbUFBOjppbml0aWFsaXplIiwgdGhp
cywgMCk7CisgICAgICAgIG1fdGlsZXJQcm9ncmFtQUEtPmluaXRpYWxpemUoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIG1fdGlsZXJQcm9ncmFtQUEuZ2V0KCk7Cit9CisKK2NvbnN0IExheWVyVGlsZXJD
aHJvbWl1bTo6UHJvZ3JhbVN3aXp6bGVBQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclBy
b2dyYW1Td2l6emxlQUEoKQoreworICAgIGlmICghbV90aWxlclByb2dyYW1Td2l6emxlQUEpCisg
ICAgICAgIG1fdGlsZXJQcm9ncmFtU3dpenpsZUFBID0gYWRvcHRQdHIobmV3IExheWVyVGlsZXJD
aHJvbWl1bTo6UHJvZ3JhbVN3aXp6bGVBQShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICBpZiAoIW1f
dGlsZXJQcm9ncmFtU3dpenpsZUFBLT5pbml0aWFsaXplZCgpKSB7CisgICAgICAgIFRSQUNFX0VW
RU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6bGVBQTo6aW5pdGlh
bGl6ZSIsIHRoaXMsIDApOworICAgICAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQS0+aW5pdGlh
bGl6ZSgpOworICAgIH0KKyAgICByZXR1cm4gbV90aWxlclByb2dyYW1Td2l6emxlQUEuZ2V0KCk7
Cit9CisKIGNvbnN0IENDQ2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmNhbnZhc0xheWVyUHJvZ3JhbSgpCiB7CiAgICAgaWYgKCFtX2NhbnZhc0xheWVyUHJv
Z3JhbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggY2IxNDQ3NDk0N2Q0
M2U3OGY1M2QyZGU5MjdiNWU1MWQyZmUzNmUwYi4uMDQ4ZWUwMzgyM2ZkZDkwOWY2ZDBmNDVlZmU5
ZTc0NDYzYjI0NGE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTEy
Miw2ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGVidWdHTENhbGwoR3JhcGhp
Y3NDb250ZXh0M0QqLCBjb25zdCBjaGFyKiBjb21tYW5kLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQg
bGluZSk7CiAKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJp
eCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlvbk1hdHJpeDsgfQorICAgIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB3aW5kb3dNYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd01h
dHJpeDsgfQogCiAgICAgYm9vbCBjaGVja1RleHR1cmVTaXplKGNvbnN0IEludFNpemUmKTsKICAg
ICBpbnQgbWF4VGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBtX21heFRleHR1cmVTaXplOyB9
CkBAIC0xMzMsNiArMTM0LDggQEAgcHVibGljOgogICAgIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJv
bWl1bTo6TWFza1Byb2dyYW0qIHJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSgpOwogICAgIGNvbnN0
IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbSogdGlsZXJQcm9ncmFtKCk7CiAgICAgY29uc3Qg
TGF5ZXJUaWxlckNocm9taXVtOjpQcm9ncmFtU3dpenpsZSogdGlsZXJQcm9ncmFtU3dpenpsZSgp
OworICAgIGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbUFBKiB0aWxlclByb2dyYW1B
QSgpOworICAgIGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbVN3aXp6bGVBQSogdGls
ZXJQcm9ncmFtU3dpenpsZUFBKCk7CiAgICAgY29uc3QgQ0NDYW52YXNMYXllckltcGw6OlByb2dy
YW0qIGNhbnZhc0xheWVyUHJvZ3JhbSgpOwogICAgIGNvbnN0IENDUGx1Z2luTGF5ZXJJbXBsOjpQ
cm9ncmFtKiBwbHVnaW5MYXllclByb2dyYW0oKTsKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpSR0JBUHJvZ3JhbSogdmlkZW9MYXllclJHQkFQcm9ncmFtKCk7CkBAIC0yMTEsNiArMjE0LDcg
QEAgcHJpdmF0ZToKICAgICBJbnRQb2ludCBtX3ZpZXdwb3J0U2Nyb2xsUG9zaXRpb247CiAKICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3Byb2plY3Rpb25NYXRyaXg7CisgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggbV93aW5kb3dNYXRyaXg7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
bV9yb290TGF5ZXI7CiAgICAgT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IG1fcm9vdExheWVy
VGV4dHVyZVVwZGF0ZXI7CkBAIC0yMzksNiArMjQzLDggQEAgcHJpdmF0ZToKICAgICBPd25QdHI8
UmVuZGVyU3VyZmFjZUNocm9taXVtOjpNYXNrUHJvZ3JhbT4gbV9yZW5kZXJTdXJmYWNlTWFza1By
b2dyYW07CiAgICAgT3duUHRyPExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbT4gbV90aWxlclBy
b2dyYW07CiAgICAgT3duUHRyPExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbVN3aXp6bGU+IG1f
dGlsZXJQcm9ncmFtU3dpenpsZTsKKyAgICBPd25QdHI8TGF5ZXJUaWxlckNocm9taXVtOjpQcm9n
cmFtQUE+IG1fdGlsZXJQcm9ncmFtQUE7CisgICAgT3duUHRyPExheWVyVGlsZXJDaHJvbWl1bTo6
UHJvZ3JhbVN3aXp6bGVBQT4gbV90aWxlclByb2dyYW1Td2l6emxlQUE7CiAgICAgT3duUHRyPEND
Q2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFtPiBtX2NhbnZhc0xheWVyUHJvZ3JhbTsKICAgICBPd25Q
dHI8Q0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dyYW0+IG1fdmlkZW9MYXllclJHQkFQcm9ncmFt
OwogICAgIE93blB0cjxDQ1ZpZGVvTGF5ZXJJbXBsOjpZVVZQcm9ncmFtPiBtX3ZpZGVvTGF5ZXJZ
VVZQcm9ncmFtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKaW5kZXggYTBiZDEwOGE4
MjU0ZWM5ZTM2YTgzZDM1OWI1YTVhODVjNjc3YzdkYi4uOTJhODJkOGMxMjZmOTc0YzkzODIyNjUz
ZTIwNzJjYzg1Yzc1ZTZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCkBAIC04
NCw2ICs4NCw3IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpzZXRUaWxlU2l6ZShjb25zdCBJ
bnRTaXplJiBzaXplKQogICAgIHJlc2V0KCk7CiAKICAgICBtX3RpbGVTaXplID0gc2l6ZTsKKyAg
ICBtX3RpbGluZ0RhdGEuc2V0TWF4VGV4dHVyZVNpemUobWF4KHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSkpOwogfQogCiBMYXllclRleHR1cmUqIExheWVyVGlsZXJDaHJvbWl1bTo6Z2V0U2lu
Z2xlVGV4dHVyZSgpCkBAIC0xODksMTMgKzE5MCw5IEBAIEludFJlY3QgTGF5ZXJUaWxlckNocm9t
aXVtOjp0aWxlQ29udGVudFJlY3QoY29uc3QgVGlsZSogdGlsZSkgY29uc3QKIEludFJlY3QgTGF5
ZXJUaWxlckNocm9taXVtOjp0aWxlTGF5ZXJSZWN0KGNvbnN0IFRpbGUqIHRpbGUpIGNvbnN0CiB7
CiAgICAgY29uc3QgaW50IGluZGV4ID0gbV90aWxpbmdEYXRhLnRpbGVJbmRleCh0aWxlLT5pKCks
IHRpbGUtPmooKSk7Ci0gICAgcmV0dXJuIG1fdGlsaW5nRGF0YS50aWxlQm91bmRzV2l0aEJvcmRl
cihpbmRleCk7Ci19Ci0KLUludFJlY3QgTGF5ZXJUaWxlckNocm9taXVtOjp0aWxlVGV4UmVjdChj
b25zdCBUaWxlKiB0aWxlKSBjb25zdAotewotICAgIGNvbnN0IGludCBpbmRleCA9IG1fdGlsaW5n
RGF0YS50aWxlSW5kZXgodGlsZS0+aSgpLCB0aWxlLT5qKCkpOwotICAgIHJldHVybiBtX3RpbGlu
Z0RhdGEudGlsZUJvdW5kc1dpdGhPdXRlckJvcmRlcihpbmRleCk7CisgICAgSW50UmVjdCBsYXll
clJlY3QgPSBtX3RpbGluZ0RhdGEudGlsZUJvdW5kc1dpdGhCb3JkZXIoaW5kZXgpOworICAgIGxh
eWVyUmVjdC5zZXRTaXplKG1fdGlsZVNpemUpOworICAgIHJldHVybiBsYXllclJlY3Q7CiB9CiAK
IHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCkKQEAgLTIwMyw5ICsyMDAsNiBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6
aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgaWYgKGNvbnRl
bnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzRHJhdykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
SW50U2l6ZSBvbGRMYXllclNpemUobV90aWxpbmdEYXRhLnRvdGFsU2l6ZVgoKSwgbV90aWxpbmdE
YXRhLnRvdGFsU2l6ZVkoKSk7Ci0gICAgY29uc3QgSW50UmVjdCBvbGRMYXllclJlY3QgPSBJbnRS
ZWN0KEludFBvaW50KCksIG9sZExheWVyU2l6ZSk7Ci0KICAgICBncm93TGF5ZXJUb0NvbnRhaW4o
Y29udGVudFJlY3QpOwogCiAgICAgLy8gRGlydHkgcmVjdHMgYXJlIGFsd2F5cyBpbiBsYXllciBz
cGFjZSwgYXMgdGhlIGxheWVyIGNvdWxkIGJlIHJlcG9zaXRpb25lZApAQCAtMjIyLDEyICsyMTYs
NiBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QpCiAgICAgICAgICAgICBJbnRSZWN0IGJvdW5kID0gdGlsZUxheWVyUmVj
dCh0aWxlKTsKICAgICAgICAgICAgIGJvdW5kLmludGVyc2VjdChsYXllclJlY3QpOwogICAgICAg
ICAgICAgdGlsZS0+bV9kaXJ0eUxheWVyUmVjdC51bml0ZShib3VuZCk7Ci0KLSAgICAgICAgICAg
IC8vIEludmFsaWRhdGUgb2xkIGxheWVyIGFyZWEgdG8gY2xlYXIgYW55IGNvbnRlbnRzIGxlZnQg
ZnJvbQotICAgICAgICAgICAgLy8gcHJldmlvdXMgbGF5ZXIgc2l6ZS4KLSAgICAgICAgICAgIElu
dFJlY3Qgb2xkQm91bmQgPSB0aWxlTGF5ZXJSZWN0KHRpbGUpOwotICAgICAgICAgICAgb2xkQm91
bmQuaW50ZXJzZWN0KG9sZExheWVyUmVjdCk7Ci0gICAgICAgICAgICB0aWxlLT5tX2RpcnR5TGF5
ZXJSZWN0LnVuaXRlKG9sZEJvdW5kKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI4NCw3ICsy
NzIsNiBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBMYXllclRleHR1cgogICAgIC8vIENyZWF0ZSB0aWxlcyBhcyBu
ZWVkZWQsIGV4cGFuZGluZyBhIGRpcnR5IHJlY3QgdG8gY29udGFpbiBhbGwKICAgICAvLyB0aGUg
ZGlydHkgcmVnaW9ucyBjdXJyZW50bHkgYmVpbmcgZHJhd24uCiAgICAgSW50UmVjdCBkaXJ0eUxh
eWVyUmVjdDsKLSAgICBJbnRTaXplIHRpbGVTaXplOwogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0
LCBib3R0b207CiAgICAgY29udGVudFJlY3RUb1RpbGVJbmRpY2VzKGNvbnRlbnRSZWN0LCBsZWZ0
LCB0b3AsIHJpZ2h0LCBib3R0b20pOwogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9t
OyArK2opIHsKQEAgLTI5MywxOSArMjgwLDE2IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIExheWVyVGV4dHVyCiAg
ICAgICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAgICAgICAgICAgdGlsZSA9IGNyZWF0ZVRpbGUo
aSwgaik7CiAKLSAgICAgICAgICAgIEludFNpemUgdGV4U2l6ZSA9IHRpbGVUZXhSZWN0KHRpbGUp
LnNpemUoKTsKLSAgICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5pc1ZhbGlkKHRleFNp
emUsIG1fdGV4dHVyZUZvcm1hdCkpCisgICAgICAgICAgICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+
aXNWYWxpZChtX3RpbGVTaXplLCBtX3RleHR1cmVGb3JtYXQpKQogICAgICAgICAgICAgICAgIHRp
bGUtPm1fZGlydHlMYXllclJlY3QgPSB0aWxlTGF5ZXJSZWN0KHRpbGUpOwogCi0gICAgICAgICAg
ICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+cmVzZXJ2ZSh0ZXhTaXplLCBtX3RleHR1cmVGb3JtYXQp
KSB7CisgICAgICAgICAgICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+cmVzZXJ2ZShtX3RpbGVTaXpl
LCBtX3RleHR1cmVGb3JtYXQpKSB7CiAgICAgICAgICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVl
OwogICAgICAgICAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBkaXJ0eUxheWVyUmVjdC51bml0ZSh0aWxlLT5tX2Rp
cnR5TGF5ZXJSZWN0KTsKLQotICAgICAgICAgICAgdGlsZVNpemUgPSB0aWxlU2l6ZS5leHBhbmRl
ZFRvKHRleFNpemUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMTgsNyArMzAyLDcgQEAgdm9p
ZCBMYXllclRpbGVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgTGF5ZXJUZXh0dXIKICAgICBpZiAoZGlydHlMYXllclJlY3QuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICB0ZXh0dXJlVXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKG1f
cGFpbnRSZWN0LCB0aWxlU2l6ZSwgbV90aWxpbmdEYXRhLmJvcmRlclRleGVscygpKTsKKyAgICB0
ZXh0dXJlVXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0LCBtX3RpbGVTaXplLCBt
X3RpbGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkpOwogfQogCiB2b2lkIExheWVyVGlsZXJDaHJvbWl1
bTo6dXBkYXRlUmVjdChMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcikKQEAgLTM0
Myw4ICszMjcsNyBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6dXBkYXRlUmVjdChMYXllclRl
eHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcikKIAogICAgICAgICAgICAgLy8gQ2FsY3VsYXRl
IHBhZ2Utc3BhY2UgcmVjdGFuZ2xlIHRvIGNvcHkgZnJvbS4KICAgICAgICAgICAgIEludFJlY3Qg
c291cmNlUmVjdCA9IHRpbGVDb250ZW50UmVjdCh0aWxlKTsKLSAgICAgICAgICAgIEludFJlY3Qg
dGV4UmVjdCA9IHRpbGVUZXhSZWN0KHRpbGUpOwotICAgICAgICAgICAgY29uc3QgSW50UG9pbnQg
YW5jaG9yID0gdGV4UmVjdC5sb2NhdGlvbigpOworICAgICAgICAgICAgY29uc3QgSW50UG9pbnQg
YW5jaG9yID0gc291cmNlUmVjdC5sb2NhdGlvbigpOwogICAgICAgICAgICAgc291cmNlUmVjdC5p
bnRlcnNlY3QobGF5ZXJSZWN0VG9Db250ZW50UmVjdCh0aWxlLT5tX2RpcnR5TGF5ZXJSZWN0KSk7
CiAgICAgICAgICAgICAvLyBQYWludCByZWN0IG5vdCBndWFyYW50ZWVkIHRvIGxpbmUgdXAgb24g
dGlsZSBib3VuZGFyaWVzLCBzbwogICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgc291cmNl
UmVjdCBkb2Vzbid0IGV4dGVuZCBvdXRzaWRlIG9mIGl0LgpAQCAtMzk0LDEyICszNzcsMjIgQEAg
dm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXcoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWEKICAgICBpZiAobV9za2lwc0RyYXcgfHwgIW1fdGlsZXMu
c2l6ZSgpIHx8IGNvbnRlbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
Ly8gVXNlIGFudGktYWxpYXNpbmcgcHJvZ3JhbXMgd2hlbiBib3JkZXIgdGV4ZWxzIGFyZSBwcmVz
ZXQgYW5kIHRyYW5zZm9ybQorICAgIC8vIGlzIG5vdCBhbiBpbnRlZ2VyIHRyYW5zbGF0aW9uLgor
ICAgIGJvb2wgdXNlQUEgPSAobV90aWxpbmdEYXRhLmJvcmRlclRleGVscygpICYmICFnbG9iYWxU
cmFuc2Zvcm0uaXNJbnRlZ2VyVHJhbnNsYXRpb24oKSk7CisKICAgICBzd2l0Y2ggKG1fc2FtcGxl
ZFRleGVsRm9ybWF0KSB7CiAgICAgY2FzZSBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4
ZWxGb3JtYXRSR0JBOgotICAgICAgICBkcmF3VGlsZXMoY29udGVudFJlY3QsIGdsb2JhbFRyYW5z
Zm9ybSwgb3BhY2l0eSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW0oKSk7CisgICAgICAg
IGlmICh1c2VBQSkKKyAgICAgICAgICAgIGRyYXdUaWxlcyhjb250ZW50UmVjdCwgZ2xvYmFsVHJh
bnNmb3JtLCBvcGFjaXR5LCBsYXllclJlbmRlcmVyKCktPnRpbGVyUHJvZ3JhbUFBKCksIGxheWVy
UmVuZGVyZXIoKS0+dGlsZXJQcm9ncmFtQUEoKS0+ZnJhZ21lbnRTaGFkZXIoKS5mcmFnbWVudFRl
eFRyYW5zZm9ybUxvY2F0aW9uKCksIGxheWVyUmVuZGVyZXIoKS0+dGlsZXJQcm9ncmFtQUEoKS0+
ZnJhZ21lbnRTaGFkZXIoKS5lZGdlTG9jYXRpb24oKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGRyYXdUaWxlcyhjb250ZW50UmVjdCwgZ2xvYmFsVHJhbnNmb3JtLCBvcGFjaXR5LCBsYXll
clJlbmRlcmVyKCktPnRpbGVyUHJvZ3JhbSgpLCAtMSwgLTEpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE6Ci0gICAg
ICAgIGRyYXdUaWxlcyhjb250ZW50UmVjdCwgZ2xvYmFsVHJhbnNmb3JtLCBvcGFjaXR5LCBsYXll
clJlbmRlcmVyKCktPnRpbGVyUHJvZ3JhbVN3aXp6bGUoKSk7CisgICAgICAgIGlmICh1c2VBQSkK
KyAgICAgICAgICAgIGRyYXdUaWxlcyhjb250ZW50UmVjdCwgZ2xvYmFsVHJhbnNmb3JtLCBvcGFj
aXR5LCBsYXllclJlbmRlcmVyKCktPnRpbGVyUHJvZ3JhbVN3aXp6bGVBQSgpLCBsYXllclJlbmRl
cmVyKCktPnRpbGVyUHJvZ3JhbVN3aXp6bGVBQSgpLT5mcmFnbWVudFNoYWRlcigpLmZyYWdtZW50
VGV4VHJhbnNmb3JtTG9jYXRpb24oKSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW1Td2l6
emxlQUEoKS0+ZnJhZ21lbnRTaGFkZXIoKS5lZGdlTG9jYXRpb24oKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGRyYXdUaWxlcyhjb250ZW50UmVjdCwgZ2xvYmFsVHJhbnNmb3JtLCBvcGFj
aXR5LCBsYXllclJlbmRlcmVyKCktPnRpbGVyUHJvZ3JhbVN3aXp6bGUoKSwgLTEsIC0xKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC00MTEsMTcgKzQwNCw3IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpncm93TGF5ZXJU
b0NvbnRhaW4oY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgLy8gR3JvdyB0aGUgdGls
ZSBhcnJheSB0byBjb250YWluIHRoaXMgY29udGVudCByZWN0LgogICAgIEludFJlY3QgbGF5ZXJS
ZWN0ID0gY29udGVudFJlY3RUb0xheWVyUmVjdChjb250ZW50UmVjdCk7CiAgICAgSW50U2l6ZSBy
ZWN0U2l6ZSA9IEludFNpemUobGF5ZXJSZWN0Lm1heFgoKSwgbGF5ZXJSZWN0Lm1heFkoKSk7Ci0g
ICAgSW50U2l6ZSB0ZXhTaXplID0gbV90aWxlU2l6ZTsKLQotICAgIC8vIFVzZSByZWN0IHdpdGgg
Ym9yZGVyIHRleGVscyBhcyBtYXggdGV4dHVyZSBzaXplIHdoZW4gdGlsZSBzaXplCi0gICAgLy8g
aGFzIG5vdCBiZWVuIHNwZWNpZmllZC4KLSAgICBpZiAodGV4U2l6ZS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgdGV4U2l6ZSA9IHJlY3RTaXplOwotICAgICAgICBpZiAobV90aWxpbmdEYXRhLmJvcmRl
clRleGVscygpKQotICAgICAgICAgICAgdGV4U2l6ZS5leHBhbmQoMiwgMik7Ci0gICAgfQogCi0g
ICAgbV90aWxpbmdEYXRhLnNldE1heFRleHR1cmVTaXplKG1heCh0ZXhTaXplLndpZHRoKCksIHRl
eFNpemUuaGVpZ2h0KCkpKTsKICAgICBJbnRTaXplIG9sZExheWVyU2l6ZShtX3RpbGluZ0RhdGEu
dG90YWxTaXplWCgpLCBtX3RpbGluZ0RhdGEudG90YWxTaXplWSgpKTsKICAgICBJbnRTaXplIG5l
d1NpemUgPSByZWN0U2l6ZS5leHBhbmRlZFRvKG9sZExheWVyU2l6ZSk7CiAgICAgbV90aWxpbmdE
YXRhLnNldFRvdGFsU2l6ZShuZXdTaXplLndpZHRoKCksIG5ld1NpemUuaGVpZ2h0KCkpOwpAQCAt
NDU3LDE0ICs0NDAsOSBAQCBzdGF0aWMgRmxvYXRQb2ludCBpbnRlcnNlY3QoY29uc3QgRWRnZSYg
YSwgY29uc3QgRWRnZSYgYikKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFQ+Ci12b2lkIExheWVyVGls
ZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgZ2xvYmFsVHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBjb25z
dCBUKiBwcm9ncmFtKQordm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXdUaWxlcyhjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGdsb2JhbFRy
YW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgVCogcHJvZ3JhbSwgaW50IGZyYWdtZW50VGV4
VHJhbnNmb3JtTG9jYXRpb24sIGludCBlZGdlTG9jYXRpb24pCiB7Ci0gICAgR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyQ29udGV4dCgpOwotICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwotICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVy
TG9jYXRpb24oKSwgMCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggbWF0cml4KGdsb2JhbFRyYW5zZm9ybSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0
cml4KGxheWVyUmVuZGVyZXIoKS0+d2luZG93TWF0cml4KCkgKiBsYXllclJlbmRlcmVyKCktPnBy
b2plY3Rpb25NYXRyaXgoKSAqIGdsb2JhbFRyYW5zZm9ybSk7CiAKICAgICAvLyBXZSBkb24ndCBj
YXJlIGFib3V0IFogY29tcG9uZW50LgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeFhZ
VyA9CkBAIC00NzgsNDQgKzQ1Niw2NSBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1Rp
bGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdAogICAgICAg
ICByZXR1cm47CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlID0gbWF0cml4WFlX
LmludmVyc2UoKTsKLSAgICBJbnRSZWN0IGJvdW5kcyhtX2xheWVyUG9zaXRpb24sIEludFNpemUo
bV90aWxpbmdEYXRhLnRvdGFsU2l6ZVgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV90aWxpbmdEYXRhLnRvdGFsU2l6ZVkoKSkpOwogCi0gICAgLy8gSW5j
bHVkZSBvdXRlciBib3JkZXIgdGV4ZWxzIGluIGJvdW5kcy4KLSAgICBib3VuZHMuaW5mbGF0ZSht
X3RpbGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkpOworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCks
IDApKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRTApKTsKIAotICAgIC8vIE1hcCBib3VuZHMgdG8gZGV2aWNlIHNwYWNl
LgotICAgIEZsb2F0UXVhZCBib3VuZHNRdWFkID0gbWF0cml4Lm1hcFF1YWQoRmxvYXRRdWFkKGJv
dW5kcykpOworICAgIC8vIE1hcCBjb250ZW50IHJlY3RhbmdsZSB0byBkZXZpY2Ugc3BhY2UuCisg
ICAgRmxvYXRRdWFkIGRldmljZVF1YWQgPSBtYXRyaXgubWFwUXVhZChGbG9hdFF1YWQoY29udGVu
dFJlY3QpKTsKIAogICAgIC8vIENvdW50ZXItY2xvY2t3aXNlPwotICAgIGZsb2F0IHNpZ24gPSBp
c0NDVyhib3VuZHNRdWFkKSA/IC0xIDogMTsKKyAgICBmbG9hdCBzaWduID0gaXNDQ1coZGV2aWNl
UXVhZCkgPyAtMSA6IDE7CiAKICAgICAvLyBDb21wdXRlIG91dGVyIGVkZ2VzLgotICAgIEVkZ2Ug
bGVmdEVkZ2UgPSBjb21wdXRlRWRnZShib3VuZHNRdWFkLnA0KCksIGJvdW5kc1F1YWQucDEoKSwg
c2lnbik7Ci0gICAgRWRnZSByaWdodEVkZ2UgPSBjb21wdXRlRWRnZShib3VuZHNRdWFkLnAyKCks
IGJvdW5kc1F1YWQucDMoKSwgc2lnbik7Ci0gICAgRWRnZSB0b3BFZGdlID0gY29tcHV0ZUVkZ2Uo
Ym91bmRzUXVhZC5wMSgpLCBib3VuZHNRdWFkLnAyKCksIHNpZ24pOwotICAgIEVkZ2UgYm90dG9t
RWRnZSA9IGNvbXB1dGVFZGdlKGJvdW5kc1F1YWQucDMoKSwgYm91bmRzUXVhZC5wNCgpLCBzaWdu
KTsKLQotICAgIC8vIE1vdmUgb3V0ZXIgZWRnZXMgdG8gZW5zdXJlIHRoYXQgYWxsIHBhcnRpYWxs
eSBjb3ZlcmVkIHBpeGVscyBhcmUKLSAgICAvLyBwcm9jZXNzZWQuCi0gICAgZmxvYXQgekRpc3Rh
bmNlID0gbV90aWxpbmdEYXRhLmJvcmRlclRleGVscygpICogMC41ZjsKLSAgICBsZWZ0RWRnZS5t
b3ZlKDAsIDAsIHpEaXN0YW5jZSk7Ci0gICAgcmlnaHRFZGdlLm1vdmUoMCwgMCwgekRpc3RhbmNl
KTsKLSAgICB0b3BFZGdlLm1vdmUoMCwgMCwgekRpc3RhbmNlKTsKLSAgICBib3R0b21FZGdlLm1v
dmUoMCwgMCwgekRpc3RhbmNlKTsKLQotICAgIEdDM0RpbnQgZmlsdGVyID0gKG1fdGlsaW5nRGF0
YS5ib3JkZXJUZXhlbHMoKSAmJiAhbWF0cml4LmlzSW50ZWdlclRyYW5zbGF0aW9uKCkpID8gR3Jh
cGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUOworICAg
IEVkZ2UgbGVmdEVkZ2UgPSBjb21wdXRlRWRnZShkZXZpY2VRdWFkLnA0KCksIGRldmljZVF1YWQu
cDEoKSwgc2lnbik7CisgICAgRWRnZSByaWdodEVkZ2UgPSBjb21wdXRlRWRnZShkZXZpY2VRdWFk
LnAyKCksIGRldmljZVF1YWQucDMoKSwgc2lnbik7CisgICAgRWRnZSB0b3BFZGdlID0gY29tcHV0
ZUVkZ2UoZGV2aWNlUXVhZC5wMSgpLCBkZXZpY2VRdWFkLnAyKCksIHNpZ24pOworICAgIEVkZ2Ug
Ym90dG9tRWRnZSA9IGNvbXB1dGVFZGdlKGRldmljZVF1YWQucDMoKSwgZGV2aWNlUXVhZC5wNCgp
LCBzaWduKTsKKworICAgIGlmIChlZGdlTG9jYXRpb24gIT0gLTEpIHsKKyAgICAgIC8vIE1vdmUg
b3V0ZXIgZWRnZXMgdG8gZW5zdXJlIHRoYXQgYWxsIHBhcnRpYWxseSBjb3ZlcmVkIHBpeGVscyBh
cmUKKyAgICAgIC8vIHByb2Nlc3NlZC4KKyAgICAgIGxlZnRFZGdlLm1vdmUoMCwgMCwgMC41Zik7
CisgICAgICByaWdodEVkZ2UubW92ZSgwLCAwLCAwLjVmKTsKKyAgICAgIHRvcEVkZ2UubW92ZSgw
LCAwLCAwLjVmKTsKKyAgICAgIGJvdHRvbUVkZ2UubW92ZSgwLCAwLCAwLjVmKTsKKworICAgICAg
ZmxvYXQgZWRnZVsxMl07CisgICAgICBlZGdlWzBdID0gbGVmdEVkZ2UueCgpOworICAgICAgZWRn
ZVsxXSA9IGxlZnRFZGdlLnkoKTsKKyAgICAgIGVkZ2VbMl0gPSBsZWZ0RWRnZS56KCk7CisgICAg
ICBlZGdlWzNdID0gdG9wRWRnZS54KCk7CisgICAgICBlZGdlWzRdID0gdG9wRWRnZS55KCk7Cisg
ICAgICBlZGdlWzVdID0gdG9wRWRnZS56KCk7CisgICAgICBlZGdlWzZdID0gcmlnaHRFZGdlLngo
KTsKKyAgICAgIGVkZ2VbN10gPSByaWdodEVkZ2UueSgpOworICAgICAgZWRnZVs4XSA9IHJpZ2h0
RWRnZS56KCk7CisgICAgICBlZGdlWzldID0gYm90dG9tRWRnZS54KCk7CisgICAgICBlZGdlWzEw
XSA9IGJvdHRvbUVkZ2UueSgpOworICAgICAgZWRnZVsxMV0gPSBib3R0b21FZGdlLnooKTsKKyAg
ICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtM2Z2KGVkZ2VMb2NhdGlvbiwgZWRnZSwg
NCkpOworICAgIH0KIAogICAgIEVkZ2UgcHJldkVkZ2VZID0gdG9wRWRnZTsKIAogICAgIGludCBs
ZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAgY29udGVudFJlY3RUb1RpbGVJbmRpY2VzKGNv
bnRlbnRSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOworICAgIEludFJlY3QgbGF5ZXJS
ZWN0ID0gY29udGVudFJlY3RUb0xheWVyUmVjdChjb250ZW50UmVjdCk7CiAgICAgZm9yIChpbnQg
aiA9IHRvcDsgaiA8PSBib3R0b207ICsraikgewogICAgICAgICBFZGdlIHByZXZFZGdlWCA9IGxl
ZnRFZGdlOwogCiAgICAgICAgIEVkZ2UgZWRnZVkgPSBib3R0b21FZGdlOwogICAgICAgICBpZiAo
aiA8IChtX3RpbGluZ0RhdGEubnVtVGlsZXNZKCkgLSAxKSkgewotICAgICAgICAgICAgSW50UmVj
dCB0aWxlUmVjdCA9IG1fdGlsaW5nRGF0YS50aWxlQm91bmRzKG1fdGlsaW5nRGF0YS50aWxlSW5k
ZXgoMCwgaikpOworICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IHVuaW9uUmVjdChtX3Rp
bGluZ0RhdGEudGlsZUJvdW5kcyhtX3RpbGluZ0RhdGEudGlsZUluZGV4KDAsIGopKSwgbV90aWxp
bmdEYXRhLnRpbGVCb3VuZHMobV90aWxpbmdEYXRhLnRpbGVJbmRleChtX3RpbGluZ0RhdGEubnVt
VGlsZXNYKCkgLSAxLCBqKSkpOworICAgICAgICAgICAgdGlsZVJlY3QuaW50ZXJzZWN0KGxheWVy
UmVjdCk7CisKKyAgICAgICAgICAgIC8vIFNraXAgZW1wdHkgcm93cy4KKyAgICAgICAgICAgIGlm
ICh0aWxlUmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAg
ICAgICAgIHRpbGVSZWN0Lm1vdmUobV9sYXllclBvc2l0aW9uLngoKSwgbV9sYXllclBvc2l0aW9u
LnkoKSk7CiAKICAgICAgICAgICAgIEZsb2F0UG9pbnQgcDEodGlsZVJlY3QubWF4WCgpLCB0aWxl
UmVjdC5tYXhZKCkpOwpAQCAtNTM3LDI3ICs1MzYsNTMgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21p
dW06OmRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXQKICAgICAgICAgICAgIEFTU0VSVCh0aWxlLT50ZXh0dXJlKCktPmlzUmVzZXJ2ZWQoKSk7CiAK
ICAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+YmluZFRleHR1cmUoKTsKLSAgICAgICAgICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBmaWx0ZXIp
KTsKLSAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdf
RklMVEVSLCBmaWx0ZXIpKTsKIAogICAgICAgICAgICAgLy8gRG9uJ3QgdXNlIHRpbGVDb250ZW50
UmVjdCBoZXJlLCBhcyB0aGF0IGNvbnRhaW5zIHRoZSBmdWxsCiAgICAgICAgICAgICAvLyByZWN0
IHdpdGggYm9yZGVyIHRleGVscyB3aGljaCBzaG91bGRuJ3QgYmUgZHJhd24uCiAgICAgICAgICAg
ICBJbnRSZWN0IHRpbGVSZWN0ID0gbV90aWxpbmdEYXRhLnRpbGVCb3VuZHMobV90aWxpbmdEYXRh
LnRpbGVJbmRleCh0aWxlLT5pKCksIHRpbGUtPmooKSkpOworICAgICAgICAgICAgSW50UmVjdCBk
aXNwbGF5UmVjdCA9IHRpbGVSZWN0OworICAgICAgICAgICAgdGlsZVJlY3QuaW50ZXJzZWN0KGxh
eWVyUmVjdCk7CisKKyAgICAgICAgICAgIC8vIEtlZXAgdHJhY2sgb2YgaG93IHRoZSB0b3AgbGVm
dCBoYXMgbW92ZWQsIHNvIHRoZSB0ZXh0dXJlIGNhbiBiZQorICAgICAgICAgICAgLy8gb2Zmc2V0
IHRoZSBzYW1lIGFtb3VudC4KKyAgICAgICAgICAgIEludFNpemUgZGlzcGxheU9mZnNldCA9IHRp
bGVSZWN0Lm1pblhNaW5ZQ29ybmVyKCkgLSBkaXNwbGF5UmVjdC5taW5YTWluWUNvcm5lcigpOwor
CisgICAgICAgICAgICAvLyBTa2lwIGVtcHR5IHRpbGVzLgorICAgICAgICAgICAgaWYgKHRpbGVS
ZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAg
dGlsZVJlY3QubW92ZShtX2xheWVyUG9zaXRpb24ueCgpLCBtX2xheWVyUG9zaXRpb24ueSgpKTsK
IAotICAgICAgICAgICAgSW50UG9pbnQgdGV4T2Zmc2V0ID0gbV90aWxpbmdEYXRhLnRleHR1cmVP
ZmZzZXQoKTsKLSAgICAgICAgICAgIEludFJlY3QgdGV4UmVjdCA9IHRpbGVUZXhSZWN0KHRpbGUp
OwotICAgICAgICAgICAgZmxvYXQgdGlsZVdpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRleFJl
Y3Qud2lkdGgoKSk7Ci0gICAgICAgICAgICBmbG9hdCB0aWxlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHRleFJlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgZmxvYXQgdGV4VHJhbnNsYXRl
WCA9ICh0ZXhPZmZzZXQueCgpIC0gdGlsZVJlY3QueCgpKSAvIHRpbGVXaWR0aDsKLSAgICAgICAg
ICAgIGZsb2F0IHRleFRyYW5zbGF0ZVkgPSAodGV4T2Zmc2V0LnkoKSAtIHRpbGVSZWN0LnkoKSkg
LyB0aWxlSGVpZ2h0OwotICAgICAgICAgICAgZmxvYXQgdGV4U2NhbGVYID0gdGlsZVJlY3Qud2lk
dGgoKSAvIHRpbGVXaWR0aDsKLSAgICAgICAgICAgIGZsb2F0IHRleFNjYWxlWSA9IHRpbGVSZWN0
LmhlaWdodCgpIC8gdGlsZUhlaWdodDsKKyAgICAgICAgICAgIEZsb2F0UmVjdCBjbGFtcFJlY3Qo
dGlsZVJlY3QpOworICAgICAgICAgICAgLy8gQ2xhbXAgdGV4dHVyZSBjb29yZGluYXRlcyB0byBh
dm9pZCBzYW1wbGluZyBvdXRzaWRlIHRoZSBsYXllci4KKyAgICAgICAgICAgIGNvbnN0IGZsb2F0
IGVwc2lsb24gPSAxIC8gMTAyNC4wZjsKKyAgICAgICAgICAgIGZsb2F0IGNsYW1wWCA9IG1pbigw
LjUsIGNsYW1wUmVjdC53aWR0aCgpIC8gMi4wIC0gZXBzaWxvbik7CisgICAgICAgICAgICBmbG9h
dCBjbGFtcFkgPSBtaW4oMC41LCBjbGFtcFJlY3QuaGVpZ2h0KCkgLyAyLjAgLSBlcHNpbG9uKTsK
KyAgICAgICAgICAgIGNsYW1wUmVjdC5pbmZsYXRlWCgtY2xhbXBYKTsKKyAgICAgICAgICAgIGNs
YW1wUmVjdC5pbmZsYXRlWSgtY2xhbXBZKTsKKyAgICAgICAgICAgIEZsb2F0U2l6ZSBjbGFtcE9m
ZnNldCA9IGNsYW1wUmVjdC5taW5YTWluWUNvcm5lcigpIC0gRmxvYXRSZWN0KHRpbGVSZWN0KS5t
aW5YTWluWUNvcm5lcigpOworCisgICAgICAgICAgICBGbG9hdFBvaW50IHRleE9mZnNldCA9IG1f
dGlsaW5nRGF0YS50ZXh0dXJlT2Zmc2V0KHRpbGUtPmkoKSwgdGlsZS0+aigpKSArIGNsYW1wT2Zm
c2V0ICsgRmxvYXRTaXplKGRpc3BsYXlPZmZzZXQpOworICAgICAgICAgICAgZmxvYXQgdGlsZVdp
ZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fdGlsZVNpemUud2lkdGgoKSk7CisgICAgICAgICAg
ICBmbG9hdCB0aWxlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fdGlsZVNpemUuaGVpZ2h0
KCkpOworCisgICAgICAgICAgICAvLyBNYXAgY2xhbXBpbmcgcmVjdGFuZ2xlIHRvIHVuaXQgc3F1
YXJlLgorICAgICAgICAgICAgZmxvYXQgdmVydGV4VGV4VHJhbnNsYXRlWCA9IC1jbGFtcFJlY3Qu
eCgpIC8gY2xhbXBSZWN0LndpZHRoKCk7CisgICAgICAgICAgICBmbG9hdCB2ZXJ0ZXhUZXhUcmFu
c2xhdGVZID0gLWNsYW1wUmVjdC55KCkgLyBjbGFtcFJlY3QuaGVpZ2h0KCk7CisgICAgICAgICAg
ICBmbG9hdCB2ZXJ0ZXhUZXhTY2FsZVggPSB0aWxlUmVjdC53aWR0aCgpIC8gY2xhbXBSZWN0Lndp
ZHRoKCk7CisgICAgICAgICAgICBmbG9hdCB2ZXJ0ZXhUZXhTY2FsZVkgPSB0aWxlUmVjdC5oZWln
aHQoKSAvIGNsYW1wUmVjdC5oZWlnaHQoKTsKKworICAgICAgICAgICAgLy8gTWFwIHRvIG5vcm1h
bGl6ZWQgdGV4dHVyZSBjb29yZGluYXRlcy4KKyAgICAgICAgICAgIGZsb2F0IGZyYWdtZW50VGV4
VHJhbnNsYXRlWCA9IHRleE9mZnNldC54KCkgLyB0aWxlV2lkdGg7CisgICAgICAgICAgICBmbG9h
dCBmcmFnbWVudFRleFRyYW5zbGF0ZVkgPSB0ZXhPZmZzZXQueSgpIC8gdGlsZUhlaWdodDsKKyAg
ICAgICAgICAgIGZsb2F0IGZyYWdtZW50VGV4U2NhbGVYID0gY2xhbXBSZWN0LndpZHRoKCkgLyB0
aWxlV2lkdGg7CisgICAgICAgICAgICBmbG9hdCBmcmFnbWVudFRleFNjYWxlWSA9IGNsYW1wUmVj
dC5oZWlnaHQoKSAvIHRpbGVIZWlnaHQ7CisKICAgICAgICAgICAgIC8vIE9wZW5HTCBjb29yZGlu
YXRlIHN5c3RlbSBpcyBib3R0b20tdXAuCiAgICAgICAgICAgICAvLyBJZiB0aWxlIHRleHR1cmUg
aXMgdG9wLWRvd24sIHdlIG5lZWQgdG8gZmxpcCB0aGUgdGV4dHVyZSBjb29yZGluYXRlcy4KICAg
ICAgICAgICAgIGlmIChtX3RleHR1cmVPcmllbnRhdGlvbiA9PSBMYXllclRleHR1cmVVcGRhdGVy
OjpUb3BEb3duT3JpZW50YXRpb24pIHsKLSAgICAgICAgICAgICAgICB0ZXhUcmFuc2xhdGVZID0g
MS4wIC0gdGV4VHJhbnNsYXRlWTsKLSAgICAgICAgICAgICAgICB0ZXhTY2FsZVkgKj0gLTEuMDsK
KyAgICAgICAgICAgICAgICBmcmFnbWVudFRleFRyYW5zbGF0ZVkgPSAxLjAgLSBmcmFnbWVudFRl
eFRyYW5zbGF0ZVk7CisgICAgICAgICAgICAgICAgZnJhZ21lbnRUZXhTY2FsZVkgKj0gLTEuMDsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgRWRnZSBlZGdlWCA9IHJpZ2h0RWRnZTsKQEAg
LTU4NSw1MyArNjEwLDUwIEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGlsZXMoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0CiAgICAgICAgICAgICAv
LyBOb3JtYWxpemUgdG8gdGlsZVJlY3QuCiAgICAgICAgICAgICBxdWFkLnNjYWxlKDEuMGYgLyB0
aWxlUmVjdC53aWR0aCgpLCAxLjBmIC8gdGlsZVJlY3QuaGVpZ2h0KCkpOwogCi0gICAgICAgICAg
ICBkcmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIHF1YWQsIGxheWVyUmVuZGVyZXIoKS0+cHJvamVj
dGlvbk1hdHJpeCgpLCBtYXRyaXgsIHRpbGVSZWN0LndpZHRoKCksIHRpbGVSZWN0LmhlaWdodCgp
LCBvcGFjaXR5LCB0ZXhUcmFuc2xhdGVYLCB0ZXhUcmFuc2xhdGVZLCB0ZXhTY2FsZVgsIHRleFNj
YWxlWSwgcHJvZ3JhbSk7CisgICAgICAgICAgICBpZiAoZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2Nh
dGlvbiA9PSAtMSkgeworICAgICAgICAgICAgICAvLyBNb3ZlIGZyYWdtZW50IHNoYWRlciB0cmFu
c2Zvcm0gdG8gdmVydGV4IHNoYWRlci4gV2UgY2FuIGRvCisgICAgICAgICAgICAgIC8vIHRoaXMg
d2hpbGUgc3RpbGwgcHJvZHVjaW5nIGNvcnJlY3QgcmVzdWx0cyBhcworICAgICAgICAgICAgICAv
LyBmcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uIHNob3VsZCBhbHdheXMgYmUgbm9uLW5lZ2F0
aXZlCisgICAgICAgICAgICAgIC8vIHdoZW4gdGlsZXMgYXJlIHRyYW5zZm9ybWVkIGluIGEgd2F5
IHRoYXQgY291bGQgcmVzdWx0IGluCisgICAgICAgICAgICAgIC8vIHNhbXBsaW5nIG91dHNpZGUg
dGhlIGxheWVyLgorICAgICAgICAgICAgICB2ZXJ0ZXhUZXhTY2FsZVggKj0gZnJhZ21lbnRUZXhT
Y2FsZVg7CisgICAgICAgICAgICAgIHZlcnRleFRleFNjYWxlWSAqPSBmcmFnbWVudFRleFNjYWxl
WTsKKyAgICAgICAgICAgICAgdmVydGV4VGV4VHJhbnNsYXRlWCAqPSBmcmFnbWVudFRleFNjYWxl
WDsKKyAgICAgICAgICAgICAgdmVydGV4VGV4VHJhbnNsYXRlWSAqPSBmcmFnbWVudFRleFNjYWxl
WTsKKyAgICAgICAgICAgICAgdmVydGV4VGV4VHJhbnNsYXRlWCArPSBmcmFnbWVudFRleFRyYW5z
bGF0ZVg7CisgICAgICAgICAgICAgIHZlcnRleFRleFRyYW5zbGF0ZVkgKz0gZnJhZ21lbnRUZXhU
cmFuc2xhdGVZOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPnVuaWZvcm00ZihmcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uLCBmcmFn
bWVudFRleFRyYW5zbGF0ZVgsIGZyYWdtZW50VGV4VHJhbnNsYXRlWSwgZnJhZ21lbnRUZXhTY2Fs
ZVgsIGZyYWdtZW50VGV4U2NhbGVZKSk7CisKKyAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT51bmlmb3JtNGYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkudmVydGV4VGV4VHJhbnNmb3Jt
TG9jYXRpb24oKSwgdmVydGV4VGV4VHJhbnNsYXRlWCwgdmVydGV4VGV4VHJhbnNsYXRlWSwgdmVy
dGV4VGV4U2NhbGVYLCB2ZXJ0ZXhUZXhTY2FsZVkpKTsKKworICAgICAgICAgICAgZmxvYXQgcG9p
bnRbOF07CisgICAgICAgICAgICBwb2ludFswXSA9IHF1YWQucDEoKS54KCk7CisgICAgICAgICAg
ICBwb2ludFsxXSA9IHF1YWQucDEoKS55KCk7CisgICAgICAgICAgICBwb2ludFsyXSA9IHF1YWQu
cDIoKS54KCk7CisgICAgICAgICAgICBwb2ludFszXSA9IHF1YWQucDIoKS55KCk7CisgICAgICAg
ICAgICBwb2ludFs0XSA9IHF1YWQucDMoKS54KCk7CisgICAgICAgICAgICBwb2ludFs1XSA9IHF1
YWQucDMoKS55KCk7CisgICAgICAgICAgICBwb2ludFs2XSA9IHF1YWQucDQoKS54KCk7CisgICAg
ICAgICAgICBwb2ludFs3XSA9IHF1YWQucDQoKS55KCk7CisgICAgICAgICAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+dW5pZm9ybTJmdihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5wb2ludExvY2F0
aW9uKCksIHBvaW50LCA0KSk7CisKKyAgICAgICAgICAgIExheWVyQ2hyb21pdW06OmRyYXdUZXh0
dXJlZFF1YWQoY29udGV4dCwgbGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCksIGds
b2JhbFRyYW5zZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIG9wYWNpdHksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRl
cigpLm1hdHJpeExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpKTsKIAog
ICAgICAgICAgICAgcHJldkVkZ2VYID0gZWRnZVg7CisgICAgICAgICAgICAvLyBSZXZlcnNlIGRp
cmVjdGlvbi4KKyAgICAgICAgICAgIHByZXZFZGdlWC5zY2FsZSgtMSwgLTEsIC0xKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHByZXZFZGdlWSA9IGVkZ2VZOworICAgICAgICAvLyBSZXZlcnNlIGRp
cmVjdGlvbi4KKyAgICAgICAgcHJldkVkZ2VZLnNjYWxlKC0xLCAtMSwgLTEpOwogICAgIH0KIH0K
IAotdGVtcGxhdGUgPGNsYXNzIFQ+Ci12b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RleHR1
cmVkUXVhZChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFk
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIGRyYXdNYXRyaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBvcGFjaXR5
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdGV4VHJh
bnNsYXRlWCwgZmxvYXQgdGV4VHJhbnNsYXRlWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0IHRleFNjYWxlWCwgZmxvYXQgdGV4U2NhbGVZLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCogcHJvZ3JhbSkKLXsK
LSAgICBzdGF0aWMgZmxvYXQgZ2xNYXRyaXhbMTZdOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggcmVuZGVyTWF0cml4ID0gZHJhd01hdHJpeDsKLQotICAgIC8vIEFwcGx5IGEgc2NhbGluZyBm
YWN0b3IgdG8gc2l6ZSB0aGUgcXVhZCBmcm9tIDF4MSB0byBpdHMgaW50ZW5kZWQgc2l6ZS4KLSAg
ICByZW5kZXJNYXRyaXguc2NhbGUzZCh3aWR0aCwgaGVpZ2h0LCAxKTsKLQotICAgIC8vIEFwcGx5
IHRoZSBwcm9qZWN0aW9uIG1hdHJpeCBiZWZvcmUgc2VuZGluZyB0aGUgdHJhbnNmb3JtIG92ZXIg
dG8gdGhlIHNoYWRlci4KLSAgICBMYXllckNocm9taXVtOjp0b0dMTWF0cml4KCZnbE1hdHJpeFsw
XSwgcHJvamVjdGlvbk1hdHJpeCAqIHJlbmRlck1hdHJpeCk7Ci0KLSAgICBHTEMoY29udGV4dCwg
Y29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhM
b2NhdGlvbigpLCBmYWxzZSwgJmdsTWF0cml4WzBdLCAxKSk7Ci0KLSAgICBHTEMoY29udGV4dCwg
Y29udGV4dC0+dW5pZm9ybTFmKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlv
bigpLCBvcGFjaXR5KSk7Ci0KLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTRmKHBy
b2dyYW0tPnZlcnRleFNoYWRlcigpLnRleFRyYW5zZm9ybUxvY2F0aW9uKCksCi0gICAgICAgIHRl
eFRyYW5zbGF0ZVgsIHRleFRyYW5zbGF0ZVksIHRleFNjYWxlWCwgdGV4U2NhbGVZKSk7Ci0KLSAg
ICBmbG9hdCBwb2ludFs4XTsKLSAgICBwb2ludFswXSA9IHF1YWQucDEoKS54KCk7Ci0gICAgcG9p
bnRbMV0gPSBxdWFkLnAxKCkueSgpOwotICAgIHBvaW50WzJdID0gcXVhZC5wMigpLngoKTsKLSAg
ICBwb2ludFszXSA9IHF1YWQucDIoKS55KCk7Ci0gICAgcG9pbnRbNF0gPSBxdWFkLnAzKCkueCgp
OwotICAgIHBvaW50WzVdID0gcXVhZC5wMygpLnkoKTsKLSAgICBwb2ludFs2XSA9IHF1YWQucDQo
KS54KCk7Ci0gICAgcG9pbnRbN10gPSBxdWFkLnA0KCkueSgpOwotICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT51bmlmb3JtMmZ2KHByb2dyYW0tPnZlcnRleFNoYWRlcigpLnBvaW50TG9jYXRpb24o
KSwgcG9pbnQsIDQpKTsKLQotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kcmF3RWxlbWVudHMo
R3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFUywgNiwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lH
TkVEX1NIT1JULCAwKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgK
aW5kZXggNDhmNGY5ZjIwOGQzN2ZjZGI5YTJlY2JkNGVlMzk1MzA1NzU4OGIxZi4uYjQ1NWJhMjQ3
MmQwNmJiNjkzNTg5ZGEwY2QyNGYzNzAxYTM2ZDYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9t
aXVtLmgKQEAgLTc1LDEwICs3NSwxNCBAQCBwdWJsaWM6CiAgICAgLy8gcmVjeWNsZWQgYnkgdGhl
IHRleHR1cmUgbWFuYWdlci4KICAgICB2b2lkIHByb3RlY3RUaWxlVGV4dHVyZXMoY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QpOwogCi0gICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhT
aGFkZXJRdWFkLCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYT4gUHJvZ3JhbTsKKyAgICB0eXBl
ZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclRpbGUsIEZyYWdtZW50U2hhZGVyUkdCQVRl
eEFscGhhPiBQcm9ncmFtOwogICAgIC8vIFNoYWRlciBwcm9ncmFtIHRoYXQgc3dhcHMgcmVkIGFu
ZCBibHVlIGNvbXBvbmVudHMgb2YgdGV4dHVyZS4KICAgICAvLyBVc2VkIHdoZW4gdGV4dHVyZSBm
b3JtYXQgZG9lcyBub3QgbWF0Y2ggbmF0aXZlIGNvbG9yIGZvcm1hdC4KLSAgICB0eXBlZGVmIFBy
b2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclF1YWQsIEZyYWdtZW50U2hhZGVyUkdCQVRleFN3aXp6
bGVBbHBoYT4gUHJvZ3JhbVN3aXp6bGU7CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0
ZXhTaGFkZXJUaWxlLCBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGE+IFByb2dyYW1T
d2l6emxlOworCisgICAgLy8gU2hhZGVyIHByb2dyYW0gdGhhdCBwcm9kdWNlcyBhbnRpLWFsaWFz
ZWQgbGF5ZXIgZWRnZXMuCisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJU
aWxlLCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBPiBQcm9ncmFtQUE7CisgICAgdHlwZWRl
ZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJUaWxlLCBGcmFnbWVudFNoYWRlclJHQkFUZXhT
d2l6emxlQWxwaGFBQT4gUHJvZ3JhbVN3aXp6bGVBQTsKIAogICAgIC8vIElmIHRoaXMgdGlsZXIg
aGFzIGV4YWN0bHkgb25lIHRpbGUsIHJldHVybiBpdHMgdGV4dHVyZS4gT3RoZXJ3aXNlLCBudWxs
LgogICAgIExheWVyVGV4dHVyZSogZ2V0U2luZ2xlVGV4dHVyZSgpOwpAQCAtMTEwLDE0ICsxMTQs
NyBAQCBwcml2YXRlOgogCiAgICAgLy8gRHJhdyBhbGwgdGlsZXMgdGhhdCBpbnRlcnNlY3Qgd2l0
aCBjb250ZW50UmVjdC4KICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICB2b2lkIGRyYXdUaWxl
cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBUKiBwcm9ncmFtKTsKLQotICAgIHRlbXBsYXRlIDxjbGFz
cyBUPgotICAgIHZvaWQgZHJhd1RleHR1cmVkUXVhZChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0
IEZsb2F0UXVhZCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0eSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdGV4VHJhbnNsYXRlWCwgZmxvYXQgdGV4VHJh
bnNsYXRlWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdGV4U2NhbGVYLCBmbG9h
dCB0ZXhTY2FsZVksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQqIHByb2dyYW0p
OworICAgIHZvaWQgZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IFQqIHByb2dyYW0sIGlu
dCBmcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uLCBpbnQgZWRnZUxvY2F0aW9uKTsKIAogICAg
IC8vIEdyb3cgbGF5ZXIgc2l6ZSB0byBjb250YWluIHRoaXMgcmVjdGFuZ2xlLgogICAgIHZvaWQg
Z3Jvd0xheWVyVG9Db250YWluKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKQEAgLTEzNSw3
ICsxMzIsNiBAQCBwcml2YXRlOgogICAgIFRpbGUqIHRpbGVBdChpbnQsIGludCkgY29uc3Q7CiAg
ICAgSW50UmVjdCB0aWxlQ29udGVudFJlY3QoY29uc3QgVGlsZSopIGNvbnN0OwogICAgIEludFJl
Y3QgdGlsZUxheWVyUmVjdChjb25zdCBUaWxlKikgY29uc3Q7Ci0gICAgSW50UmVjdCB0aWxlVGV4
UmVjdChjb25zdCBUaWxlKikgY29uc3Q7CiAKICAgICBHQzNEZW51bSBtX3RleHR1cmVGb3JtYXQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1NoYWRlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NoYWRlckNocm9taXVtLmNwcAppbmRleCA1MGRlODA0N2QxYjdiOWQxM2ZmNzE5NjM4
YzM2MjBlYjVmYTY5ZGFiLi5jYTEzODdmNzdmYzc4ZTQ2MWZlZmRmNTg5Zjc4NmE2YTUyOGZkNDVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
aGFkZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCkBAIC0xNTAsMjkgKzE1MCwyOSBAQCBTdHJpbmcg
VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAogICAg
ICk7CiB9CiAKLVZlcnRleFNoYWRlclF1YWQ6OlZlcnRleFNoYWRlclF1YWQoKQorVmVydGV4U2hh
ZGVyVGlsZTo6VmVydGV4U2hhZGVyVGlsZSgpCiAgICAgOiBtX21hdHJpeExvY2F0aW9uKC0xKQot
ICAgICwgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbigtMSkKICAgICAsIG1fcG9pbnRMb2NhdGlvbigt
MSkKKyAgICAsIG1fdmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb24oLTEpCiB7CiB9CiAKLXZvaWQg
VmVydGV4U2hhZGVyUXVhZDo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWdu
ZWQgcHJvZ3JhbSkKK3ZvaWQgVmVydGV4U2hhZGVyVGlsZTo6aW5pdChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsKICAgICBtX21hdHJpeExvY2F0aW9uID0g
Y29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKLSAgICBtX3Rl
eFRyYW5zZm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0s
ICJ0ZXhUcmFuc2Zvcm0iKTsKICAgICBtX3BvaW50TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgInBvaW50Iik7Ci0gICAgQVNTRVJUKG1fbWF0cml4TG9jYXRp
b24gIT0gLTEgJiYgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiAhPSAtMSAmJiBtX3BvaW50TG9jYXRp
b24gIT0gLTEpOworICAgIG1fdmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0LT5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInZlcnRleFRleFRyYW5zZm9ybSIpOworICAgIEFT
U0VSVChtX21hdHJpeExvY2F0aW9uICE9IC0xICYmIG1fcG9pbnRMb2NhdGlvbiAhPSAtMSAmJiBt
X3ZlcnRleFRleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xKTsKIH0KIAotU3RyaW5nIFZlcnRleFNo
YWRlclF1YWQ6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CitTdHJpbmcgVmVydGV4U2hhZGVyVGls
ZTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gU0hBREVSKAogICAgICAg
ICBhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOwogICAgICAgICBhdHRyaWJ1dGUgdmVjMiBhX3Rl
eENvb3JkOwogICAgICAgICB1bmlmb3JtIG1hdDQgbWF0cml4OwotICAgICAgICB1bmlmb3JtIHZl
YzQgdGV4VHJhbnNmb3JtOwogICAgICAgICB1bmlmb3JtIHZlYzIgcG9pbnRbNF07CisgICAgICAg
IHVuaWZvcm0gdmVjNCB2ZXJ0ZXhUZXhUcmFuc2Zvcm07CiAgICAgICAgIHZhcnlpbmcgdmVjMiB2
X3RleENvb3JkOwogICAgICAgICB2b2lkIG1haW4oKQogICAgICAgICB7CkBAIC0xODMsNyArMTgz
LDcgQEAgU3RyaW5nIFZlcnRleFNoYWRlclF1YWQ6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiAg
ICAgICAgICAgICBwb3MueHkgKz0gKGFfdGV4Q29vcmQueCAqIGFfdGV4Q29vcmQueSkgKiBwb2lu
dFsyXTsKICAgICAgICAgICAgIHBvcy54eSArPSAoY29tcGxlbWVudC54ICogYV90ZXhDb29yZC55
KSAqIHBvaW50WzNdOwogICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBtYXRyaXggKiBwb3M7Ci0g
ICAgICAgICAgICB2X3RleENvb3JkID0gcG9zLnh5ICogdGV4VHJhbnNmb3JtLnp3ICsgdGV4VHJh
bnNmb3JtLnh5OworICAgICAgICAgICAgdl90ZXhDb29yZCA9IHBvcy54eSAqIHZlcnRleFRleFRy
YW5zZm9ybS56dyArIHZlcnRleFRleFRyYW5zZm9ybS54eTsKICAgICAgICAgfQogICAgICk7CiB9
CkBAIC0yNDcsNiArMjQ3LDcwIEBAIFN0cmluZyBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxl
QWxwaGE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiAgICAgKTsKIH0KIAorRnJhZ21lbnRUZXhB
bHBoYUFBQmluZGluZzo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZygpCisgICAgOiBtX3NhbXBs
ZXJMb2NhdGlvbigtMSkKKyAgICAsIG1fYWxwaGFMb2NhdGlvbigtMSkKKyAgICAsIG1fZnJhZ21l
bnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbigtMSkKKyAgICAsIG1fZWRnZUxvY2F0aW9uKC0xKQorewor
fQorCit2b2lkIEZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmc6OmluaXQoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit7CisgICAgbV9zYW1wbGVyTG9jYXRpb24g
PSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfdGV4dHVyZSIpOworICAg
IG1fYWxwaGFMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAi
YWxwaGEiKTsKKyAgICBtX2ZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0LT5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImZyYWdtZW50VGV4VHJhbnNmb3JtIik7CisgICAg
bV9lZGdlTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImVk
Z2UiKTsKKworICAgIEFTU0VSVChtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMSAmJiBtX2FscGhhTG9j
YXRpb24gIT0gLTEgJiYgbV9mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xICYmIG1f
ZWRnZUxvY2F0aW9uICE9IC0xKTsKK30KKworU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleEFs
cGhhQUE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNIQURFUigKKyAg
ICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3Rl
eENvb3JkOworICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7CisgICAgICAgIHVu
aWZvcm0gZmxvYXQgYWxwaGE7CisgICAgICAgIHVuaWZvcm0gdmVjNCBmcmFnbWVudFRleFRyYW5z
Zm9ybTsKKyAgICAgICAgdW5pZm9ybSB2ZWMzIGVkZ2VbNF07CisgICAgICAgIHZvaWQgbWFpbigp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZlYzIgdGV4Q29vcmQgPSBjbGFtcCh2X3RleENvb3Jk
LCAwLjAsIDEuMCkgKiBmcmFnbWVudFRleFRyYW5zZm9ybS56dyArIGZyYWdtZW50VGV4VHJhbnNm
b3JtLnh5OworICAgICAgICAgICAgdmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUs
IHRleENvb3JkKTsKKyAgICAgICAgICAgIHZlYzMgcG9zID0gdmVjMyhnbF9GcmFnQ29vcmQueHks
IDEpOworICAgICAgICAgICAgZmxvYXQgYTAgPSBjbGFtcChkb3QoZWRnZVswXSwgcG9zKSwgMC4w
LCAxLjApOworICAgICAgICAgICAgZmxvYXQgYTEgPSBjbGFtcChkb3QoZWRnZVsxXSwgcG9zKSwg
MC4wLCAxLjApOworICAgICAgICAgICAgZmxvYXQgYTIgPSBjbGFtcChkb3QoZWRnZVsyXSwgcG9z
KSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxvYXQgYTMgPSBjbGFtcChkb3QoZWRnZVszXSwg
cG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4Q29sb3IgKiBh
bHBoYSAqIG1pbihhMCwgYTIpICogbWluKGExLCBhMyk7CisgICAgICAgIH0KKyAgICApOworfQor
CitTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhhQUE6OmdldFNoYWRlclN0
cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOworICAgICAgICB1
bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7CisgICAgICAgIHVuaWZvcm0gZmxvYXQgYWxwaGE7
CisgICAgICAgIHVuaWZvcm0gdmVjNCBmcmFnbWVudFRleFRyYW5zZm9ybTsKKyAgICAgICAgdW5p
Zm9ybSB2ZWMzIGVkZ2VbNF07CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZlYzIgdGV4Q29vcmQgPSBjbGFtcCh2X3RleENvb3JkLCAwLjAsIDEuMCkgKiBmcmFn
bWVudFRleFRyYW5zZm9ybS56dyArIGZyYWdtZW50VGV4VHJhbnNmb3JtLnh5OworICAgICAgICAg
ICAgdmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHRleENvb3JkKTsKKyAgICAg
ICAgICAgIHZlYzMgcG9zID0gdmVjMyhnbF9GcmFnQ29vcmQueHksIDEpOworICAgICAgICAgICAg
ZmxvYXQgYTAgPSBjbGFtcChkb3QoZWRnZVswXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAg
ICAgZmxvYXQgYTEgPSBjbGFtcChkb3QoZWRnZVsxXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAg
ICAgICAgZmxvYXQgYTIgPSBjbGFtcChkb3QoZWRnZVsyXSwgcG9zKSwgMC4wLCAxLjApOworICAg
ICAgICAgICAgZmxvYXQgYTMgPSBjbGFtcChkb3QoZWRnZVszXSwgcG9zKSwgMC4wLCAxLjApOwor
ICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xvci56LCB0ZXhDb2xvci55LCB0
ZXhDb2xvci54LCB0ZXhDb2xvci53KSAqIGFscGhhICogbWluKGEwLCBhMikgKiBtaW4oYTEsIGEz
KTsKKyAgICAgICAgfQorICAgICk7Cit9CisKIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFz
azo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrKCkKICAgICA6IG1fc2FtcGxlckxvY2F0
aW9uKC0xKQogICAgICwgbV9tYXNrU2FtcGxlckxvY2F0aW9uKC0xKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVt
LmgKaW5kZXggY2ZjNjExYTY0OTViMTFlMWE5ZjQ1NWVhM2Y5ZTFiZWZhZGU4OTUxOS4uMTIwOGQz
ZjVkNzQ5MmMwYWRhNjQ5OTU4Yjc3MzgzNDY0N2U3NDM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5o
CkBAIC05NiwyMSArOTYsMjEgQEAgcHJpdmF0ZToKICAgICBpbnQgbV90ZXhUcmFuc2Zvcm1Mb2Nh
dGlvbjsKIH07CiAKLWNsYXNzIFZlcnRleFNoYWRlclF1YWQgeworY2xhc3MgVmVydGV4U2hhZGVy
VGlsZSB7CiBwdWJsaWM6Ci0gICAgVmVydGV4U2hhZGVyUXVhZCgpOworICAgIFZlcnRleFNoYWRl
clRpbGUoKTsKIAogICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHBy
b2dyYW0pOwogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAgIGludCBt
YXRyaXhMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0KLSAgICBp
bnQgdGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RleFRyYW5zZm9ybUxv
Y2F0aW9uOyB9CiAgICAgaW50IHBvaW50TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3BvaW50
TG9jYXRpb247IH0KKyAgICBpbnQgdmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3ZlcnRleFRleFRyYW5zZm9ybUxvY2F0aW9uOyB9CiAKIHByaXZhdGU6CiAgICAg
aW50IG1fbWF0cml4TG9jYXRpb247Ci0gICAgaW50IG1fdGV4VHJhbnNmb3JtTG9jYXRpb247CiAg
ICAgaW50IG1fcG9pbnRMb2NhdGlvbjsKKyAgICBpbnQgbV92ZXJ0ZXhUZXhUcmFuc2Zvcm1Mb2Nh
dGlvbjsKIH07CiAKIGNsYXNzIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nIHsKQEAgLTE0Miw2ICsx
NDIsMzQgQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIH07
CiAKK2NsYXNzIEZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmcgeworcHVibGljOgorICAgIEZyYWdt
ZW50VGV4QWxwaGFBQUJpbmRpbmcoKTsKKworICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQz
RCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9hbHBoYUxvY2F0aW9uOyB9CisgICAgaW50IHNhbXBsZXJMb2NhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fc2FtcGxlckxvY2F0aW9uOyB9CisgICAgaW50IGZyYWdtZW50VGV4VHJhbnNm
b3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRp
b247IH0KKyAgICBpbnQgZWRnZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lZGdlTG9jYXRp
b247IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV9zYW1wbGVyTG9jYXRpb247CisgICAgaW50IG1f
YWxwaGFMb2NhdGlvbjsKKyAgICBpbnQgbV9mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uOwor
ICAgIGludCBtX2VkZ2VMb2NhdGlvbjsKK307CisKK2NsYXNzIEZyYWdtZW50U2hhZGVyUkdCQVRl
eEFscGhhQUEgOiBwdWJsaWMgRnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZyB7CitwdWJsaWM6Cisg
ICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OworfTsKKworLy8gU3dpenpsZXMgdGhl
IHJlZCBhbmQgYmx1ZSBjb21wb25lbnQgb2Ygc2FtcGxlZCB0ZXhlbC4KK2NsYXNzIEZyYWdtZW50
U2hhZGVyUkdCQVRleFN3aXp6bGVBbHBoYUFBIDogcHVibGljIEZyYWdtZW50VGV4QWxwaGFBQUJp
bmRpbmcgeworcHVibGljOgorICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKK307
CisKIGNsYXNzIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzayB7CiBwdWJsaWM6CiAgICAg
RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcAppbmRleCAzZTllNmRkMDQ4ZjIyMTVkMjg5NDkxNzU5MzQxZDdlMzc2YmMwZDI3Li41
Njc1Y2VhMTNhNmViZGFjMWQ5Y2IzYWE0ZTJmZmNjNTQ5YTA0ZWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KIAogLy8gU3RhcnQgdGlsaW5nIHdoZW4gdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2Yg
YSBsYXllciBhcmUgbGFyZ2VyIHRoYW4gdGhpcyBzaXplLgotc3RhdGljIGludCBtYXhVbnRpbGVk
U2l6ZSA9IDUxMDsKK3N0YXRpYyBpbnQgbWF4VW50aWxlZFNpemUgPSA1MTI7CiAKIC8vIFdoZW4g
dGlsaW5nIGlzIGVuYWJsZWQsIHVzZSB0aWxlcyBvZiB0aGlzIGRpbWVuc2lvbiBzcXVhcmVkLgog
c3RhdGljIGludCBkZWZhdWx0VGlsZVNpemUgPSAyNTY7CkBAIC01MCw3ICs1MCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIFRpbGVkTGF5ZXJDaHJvbWl1bTo6VGlsZWRMYXllckNocm9taXVtKEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCiAgICAgOiBMYXllckNocm9taXVtKG93bmVyKQog
ICAgICwgbV90aWxpbmdPcHRpb24oQXV0b1RpbGUpCi0gICAgLCBtX2JvcmRlclRleGVscyh0cnVl
KQogewogfQogCkBAIC04MCw3ICs3OSw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRh
dGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpCiAgICAgaWYgKCFtX3RpbGVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBjb25zdCBJbnRTaXplIHRpbGVTaXplKGRlZmF1bHRUaWxlU2l6ZSwgZGVm
YXVsdFRpbGVTaXplKTsKKyAgICBjb25zdCBJbnRTaXplIHRpbGVTaXplKG1pbihkZWZhdWx0VGls
ZVNpemUsIGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpKSwgbWluKGRlZmF1bHRUaWxlU2l6ZSwgY29u
dGVudEJvdW5kcygpLmhlaWdodCgpKSk7CiAKICAgICAvLyBUaWxlIGlmIGJvdGggZGltZW5zaW9u
cyBsYXJnZSwgb3IgYW55IG9uZSBkaW1lbnNpb24gbGFyZ2UgYW5kIHRoZSBvdGhlcgogICAgIC8v
IGV4dGVuZHMgaW50byBhIHNlY29uZCB0aWxlLiBUaGlzIGhldXJpc3RpYyBhbGxvd3MgZm9yIGxv
bmcgc2tpbm55IGxheWVycwpAQCAtOTcsOCArOTYsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKQogICAgIGVsc2UKICAgICAgICAgaXNU
aWxlZCA9IGF1dG9UaWxlZDsKIAotICAgIC8vIEVtcHR5IHRpbGUgc2l6ZSB0ZWxscyB0aGUgdGls
ZXIgdG8gYXZvaWQgdGlsaW5nLgotICAgIEludFNpemUgcmVxdWVzdGVkU2l6ZSA9IGlzVGlsZWQg
PyB0aWxlU2l6ZSA6IEludFNpemUoKTsKKyAgICBJbnRTaXplIHJlcXVlc3RlZFNpemUgPSBpc1Rp
bGVkID8gdGlsZVNpemUgOiBjb250ZW50Qm91bmRzKCk7CiAgICAgY29uc3QgaW50IG1heFNpemUg
PSBsYXllclJlbmRlcmVyKCktPm1heFRleHR1cmVTaXplKCk7CiAgICAgSW50U2l6ZSBjbGFtcGVk
U2l6ZSA9IHJlcXVlc3RlZFNpemUuc2hydW5rVG8oSW50U2l6ZShtYXhTaXplLCBtYXhTaXplKSk7
CiAgICAgbV90aWxlci0+c2V0VGlsZVNpemUoY2xhbXBlZFNpemUpOwpAQCAtMTI4LDcgKzEyNiw3
IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpjcmVhdGVUaWxlcklmTmVlZGVkKCkKICAgICBt
X3RpbGVyID0gTGF5ZXJUaWxlckNocm9taXVtOjpjcmVhdGUoCiAgICAgICAgIGxheWVyUmVuZGVy
ZXIoKSwKICAgICAgICAgSW50U2l6ZShkZWZhdWx0VGlsZVNpemUsIGRlZmF1bHRUaWxlU2l6ZSks
Ci0gICAgICAgIG1fYm9yZGVyVGV4ZWxzID8gTGF5ZXJUaWxlckNocm9taXVtOjpIYXNCb3JkZXJU
ZXhlbHMgOiBMYXllclRpbGVyQ2hyb21pdW06Ok5vQm9yZGVyVGV4ZWxzKTsKKyAgICAgICAgTGF5
ZXJUaWxlckNocm9taXVtOjpIYXNCb3JkZXJUZXhlbHMpOwogfQogCiB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpCkBAIC0xNDQsNyArMTQyLDYgQEAg
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnNldFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24gdGls
aW5nT3B0aW9uKQogCiB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0SXNNYXNrKGJvb2wgaXNN
YXNrKQogewotICAgIG1fYm9yZGVyVGV4ZWxzID0gIWlzTWFzazsKICAgICBzZXRUaWxpbmdPcHRp
b24oaXNNYXNrID8gTmV2ZXJUaWxlIDogQXV0b1RpbGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5oCmluZGV4IDc4OGFkYzdmMTA4YWE2YTI1Y2IzZDRjZjhjZDE0OTMwZTY0NjQxNTcu
LjJmNDM2OWI2NDAzODM4NTE3MGM3NzE0MzJmZDdhMWVjMjcyMmNmOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5oCkBAIC03Myw3ICs3Myw2IEBAIHByaXZhdGU6CiAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggdGlsaW5nVHJhbnNmb3JtKCkgY29uc3Q7CiAKICAgICBUaWxpbmdPcHRpb24g
bV90aWxpbmdPcHRpb247Ci0gICAgYm9vbCBtX2JvcmRlclRleGVsczsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcApp
bmRleCAxMTNiZGUwYjIxMzhmOTFkNzcyZDNmZDUxYjhjMTNiNDA2Zjk4YTI5Li5mZjcwOGM3M2Q2
YzNhODhjZGRmMDJjMDcyM2JiYWRlMzFjMzAwNGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuY3BwCkBAIC00NCwxMiArNDQsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgaW50IGNvbXB1dGVOdW1UaWxlcyhpbnQg
bWF4VGV4dHVyZVNpemUsIGludCB0b3RhbFNpemUsIGludCBib3JkZXJUZXhlbHMpCiB7Ci0gICAg
aW50IHRvdGFsU2l6ZVdpdGhCb3JkZXIgPSB0b3RhbFNpemUgKyAyICogYm9yZGVyVGV4ZWxzOwot
CiAgICAgaWYgKG1heFRleHR1cmVTaXplIC0gMiAqIGJvcmRlclRleGVscyA8PSAwKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSA+IDAgJiYgbWF4VGV4dHVyZVNp
emUgPj0gdG90YWxTaXplID8gMSA6IDA7CiAKLSAgICBpbnQgbnVtVGlsZXMgPSBtYXgoMSwgMSAr
ICh0b3RhbFNpemVXaXRoQm9yZGVyIC0gMSAtIDIgKiBib3JkZXJUZXhlbHMpIC8gKG1heFRleHR1
cmVTaXplIC0gMiAqIGJvcmRlclRleGVscykpOworICAgIGludCBudW1UaWxlcyA9IG1heCgxLCAx
ICsgKHRvdGFsU2l6ZSAtIDEgLSAyICogYm9yZGVyVGV4ZWxzKSAvIChtYXhUZXh0dXJlU2l6ZSAt
IDIgKiBib3JkZXJUZXhlbHMpKTsKICAgICByZXR1cm4gdG90YWxTaXplID4gMCA/IG51bVRpbGVz
IDogMDsKIH0KIApAQCAtODEsNyArNzksNyBAQCBpbnQgVGlsaW5nRGF0YTo6dGlsZVhJbmRleEZy
b21TcmNDb29yZChpbnQgc3JjUG9zKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKIAogICAgIEFT
U0VSVChtX21heFRleHR1cmVTaXplIC0gMiAqIG1fYm9yZGVyVGV4ZWxzKTsKLSAgICBpbnQgeCA9
IHNyY1BvcyAvIChtX21heFRleHR1cmVTaXplIC0gMiAqIG1fYm9yZGVyVGV4ZWxzKTsKKyAgICBp
bnQgeCA9IChzcmNQb3MgLSBtX2JvcmRlclRleGVscykgLyAobV9tYXhUZXh0dXJlU2l6ZSAtIDIg
KiBtX2JvcmRlclRleGVscyk7CiAgICAgcmV0dXJuIG1pbihtYXgoeCwgMCksIG51bVRpbGVzWCgp
IC0gMSk7CiB9CiAKQEAgLTkxLDcgKzg5LDcgQEAgaW50IFRpbGluZ0RhdGE6OnRpbGVZSW5kZXhG
cm9tU3JjQ29vcmQoaW50IHNyY1BvcykgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBB
U1NFUlQobV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBtX2JvcmRlclRleGVscyk7Ci0gICAgaW50IHkg
PSBzcmNQb3MgLyAobV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBtX2JvcmRlclRleGVscyk7CisgICAg
aW50IHkgPSAoc3JjUG9zIC0gbV9ib3JkZXJUZXhlbHMpIC8gKG1fbWF4VGV4dHVyZVNpemUgLSAy
ICogbV9ib3JkZXJUZXhlbHMpOwogICAgIHJldHVybiBtaW4obWF4KHksIDApLCBudW1UaWxlc1ko
KSAtIDEpOwogfQogCkBAIC0xMzQsMTYgKzEzMiw2IEBAIEludFJlY3QgVGlsaW5nRGF0YTo6dGls
ZUJvdW5kc1dpdGhCb3JkZXIoaW50IHRpbGUpIGNvbnN0CiAgICAgcmV0dXJuIGJvdW5kczsKIH0K
IAotSW50UmVjdCBUaWxpbmdEYXRhOjp0aWxlQm91bmRzV2l0aE91dGVyQm9yZGVyKGludCB0aWxl
KSBjb25zdAotewotICAgIEludFJlY3QgYm91bmRzID0gdGlsZUJvdW5kcyh0aWxlKTsKLQotICAg
IGlmIChtX2JvcmRlclRleGVscykKLSAgICAgICAgYm91bmRzLmluZmxhdGUoMSk7Ci0KLSAgICBy
ZXR1cm4gYm91bmRzOwotfQotCiBGbG9hdFJlY3QgVGlsaW5nRGF0YTo6dGlsZUJvdW5kc05vcm1h
bGl6ZWQoaW50IHRpbGUpIGNvbnN0CiB7CiAgICAgYXNzZXJ0VGlsZSh0aWxlKTsKQEAgLTE4MCw2
ICsxNjgsOCBAQCBpbnQgVGlsaW5nRGF0YTo6dGlsZVNpemVYKGludCB4SW5kZXgpIGNvbnN0CiAK
ICAgICBpZiAoIXhJbmRleCAmJiBtX251bVRpbGVzWCA9PSAxKQogICAgICAgICByZXR1cm4gbV90
b3RhbFNpemVYOworICAgIGlmICgheEluZGV4ICYmIG1fbnVtVGlsZXNYID4gMSkKKyAgICAgICAg
cmV0dXJuIG1fbWF4VGV4dHVyZVNpemUgLSBtX2JvcmRlclRleGVsczsKICAgICBpZiAoeEluZGV4
IDwgbnVtVGlsZXNYKCkgLSAxKQogICAgICAgICByZXR1cm4gbV9tYXhUZXh0dXJlU2l6ZSAtIDIg
KiBtX2JvcmRlclRleGVsczsKICAgICBpZiAoeEluZGV4ID09IG51bVRpbGVzWCgpIC0gMSkKQEAg
LTE5NSw2ICsxODUsOCBAQCBpbnQgVGlsaW5nRGF0YTo6dGlsZVNpemVZKGludCB5SW5kZXgpIGNv
bnN0CiAKICAgICBpZiAoIXlJbmRleCAmJiBtX251bVRpbGVzWSA9PSAxKQogICAgICAgICByZXR1
cm4gbV90b3RhbFNpemVZOworICAgIGlmICgheUluZGV4ICYmIG1fbnVtVGlsZXNZID4gMSkKKyAg
ICAgICAgcmV0dXJuIG1fbWF4VGV4dHVyZVNpemUgLSBtX2JvcmRlclRleGVsczsKICAgICBpZiAo
eUluZGV4IDwgbnVtVGlsZXNZKCkgLSAxKQogICAgICAgICByZXR1cm4gbV9tYXhUZXh0dXJlU2l6
ZSAtIDIgKiBtX2JvcmRlclRleGVsczsKICAgICBpZiAoeUluZGV4ID09IG51bVRpbGVzWSgpIC0g
MSkKQEAgLTIzOCw4ICsyMzAsOCBAQCB2b2lkIFRpbGluZ0RhdGE6OmludGVyc2VjdERyYXdRdWFk
KGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkcwogCiAgICAgKm5l
d1NyYyA9IHNyY1JlY3RJbnRlcnNlY3RlZDsKICAgICBuZXdTcmMtPm1vdmUoCi0gICAgICAgIC10
aWxlQm91bmRzLngoKSArIG1fYm9yZGVyVGV4ZWxzLAotICAgICAgICAtdGlsZUJvdW5kcy55KCkg
KyBtX2JvcmRlclRleGVscyk7CisgICAgICAgIC10aWxlQm91bmRzLngoKSArICgodGlsZVhJbmRl
eCh0aWxlKSA+IDApID8gbV9ib3JkZXJUZXhlbHMgOiAwKSwKKyAgICAgICAgLXRpbGVCb3VuZHMu
eSgpICsgKCh0aWxlWUluZGV4KHRpbGUpID4gMCkgPyBtX2JvcmRlclRleGVscyA6IDApKTsKIAog
ICAgICpuZXdEc3QgPSBGbG9hdFJlY3QoCiAgICAgICAgIHNyY1JlY3RJbnRlcnNlY3RlZE5vcm1Y
ICogZHN0UmVjdC53aWR0aCgpICsgZHN0UmVjdC54KCksCkBAIC0yNDgsOSArMjQwLDEyIEBAIHZv
aWQgVGlsaW5nRGF0YTo6aW50ZXJzZWN0RHJhd1F1YWQoY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIGRzCiAgICAgICAgIHNyY1JlY3RJbnRlcnNlY3RlZE5vcm1IICog
ZHN0UmVjdC5oZWlnaHQoKSk7CiB9CiAKLUludFBvaW50IFRpbGluZ0RhdGE6OnRleHR1cmVPZmZz
ZXQoKSBjb25zdAorSW50UG9pbnQgVGlsaW5nRGF0YTo6dGV4dHVyZU9mZnNldChpbnQgeEluZGV4
LCBpbnQgeUluZGV4KSBjb25zdAogewotICAgIHJldHVybiBJbnRQb2ludChtX2JvcmRlclRleGVs
cywgbV9ib3JkZXJUZXhlbHMpOworICAgIGludCBsZWZ0ID0gKCF4SW5kZXggfHwgbV9udW1UaWxl
c1ggPT0gMSkgPyAwIDogbV9ib3JkZXJUZXhlbHM7CisgICAgaW50IHRvcCA9ICgheUluZGV4IHx8
IG1fbnVtVGlsZXNZID09IDEpID8gMCA6IG1fYm9yZGVyVGV4ZWxzOworCisgICAgcmV0dXJuIElu
dFBvaW50KGxlZnQsIHRvcCk7CiB9CiAKIHZvaWQgVGlsaW5nRGF0YTo6cmVjb21wdXRlTnVtVGls
ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1Rp
bGluZ0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdE
YXRhLmgKaW5kZXggNDNiMDhlMjI4NzQzYThkYmUzYTljZTE1OTllMjM0MzAzMjUzNWNhYy4uM2Rh
YmI1ZGVjMzMwNmU3ZTI2MzE0MDViZGMyYzM0ZTk1MmQ0MjAyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5oCkBAIC02MSw3ICs2MSw2
IEBAIHB1YmxpYzoKIAogICAgIEludFJlY3QgdGlsZUJvdW5kcyhpbnQgdGlsZSkgY29uc3Q7CiAg
ICAgSW50UmVjdCB0aWxlQm91bmRzV2l0aEJvcmRlcihpbnQgdGlsZSkgY29uc3Q7Ci0gICAgSW50
UmVjdCB0aWxlQm91bmRzV2l0aE91dGVyQm9yZGVyKGludCB0aWxlKSBjb25zdDsKICAgICBGbG9h
dFJlY3QgdGlsZUJvdW5kc05vcm1hbGl6ZWQoaW50IHRpbGUpIGNvbnN0OwogICAgIGludCB0aWxl
UG9zaXRpb25YKGludCB4SW5kZXgpIGNvbnN0OwogICAgIGludCB0aWxlUG9zaXRpb25ZKGludCB5
SW5kZXgpIGNvbnN0OwpAQCAtNzUsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnRlcnNl
Y3REcmF3UXVhZChjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgaW50IHRpbGUsIEZsb2F0UmVjdCogbmV3U3JjLCBGbG9hdFJlY3QqIG5ld0RzdCkgY29u
c3Q7CiAKICAgICAvLyBEaWZmZXJlbmNlIGJldHdlZW4gdGlsZUJvdW5kJ3MgYW5kIHRpbGVCb3Vu
ZFdpdGhCb3JkZXIncyBsb2NhdGlvbigpLgotICAgIEludFBvaW50IHRleHR1cmVPZmZzZXQoKSBj
b25zdDsKKyAgICBJbnRQb2ludCB0ZXh0dXJlT2Zmc2V0KGludCB4SW5kZXgsIGludCB5SW5kZXgp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIFRpbGluZ0RhdGEoKSA6IG1fbWF4VGV4dHVyZVNpemUo
MCksIG1fdG90YWxTaXplWCgwKSwgbV90b3RhbFNpemVZKDApIHt9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDE5OGUwNzZkMDIxZTA4Mjg1MTIzMWVhYWM0NWMyYjFlNGY3NGZhZDQuLjYz
YzdjNzRkNzBiZmVkMGZiZDVmYzVmZWY0MjU2Nzc4M2U0OGJkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMDEgIERhdmlkIFJldmVtYW4gIDxy
ZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFJlbW92ZSBvdXRlciBi
b3JkZXIgZnJvbSBUaWxpbmdEYXRhIGFzIGl0J3Mgbm8gbG9uZ2VyIG5lZWRlZCBieSBsYXllciBj
b21wb3NpdG9yIGZvciBhbnRpLWFsaWFzaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ5NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL1RpbGluZ0RhdGFUZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRFU1QpOgorCiAyMDExLTA4LTAxICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYlNvY2tldDogUmVuYW1lIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudCBtZW1iZXIgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1RpbGluZ0RhdGFUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvVGlsaW5nRGF0YVRlc3QuY3BwCmluZGV4IGRkZWYwYjk4MjIzMWYyODA3YTQ3ZGM5MDMyM2Ri
YTQ1NDZjMzg5NjguLjc2MmVkYTkzOTkxNTBlYmU0Yzk3MTk0NmE3NGU1N2MzOWEzYjVkZDUgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsaW5nRGF0YVRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsaW5nRGF0YVRlc3QuY3BwCkBA
IC00MSwxMCArNDEsMTAgQEAgbmFtZXNwYWNlIHsKIFRFU1QoVGlsaW5nRGF0YVRlc3QsIG51bVRp
bGVzX05vVGlsaW5nKQogewogICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE2LCAxNiwgMTYs
IGZhbHNlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgxNywgMTUs
IDE1LCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgxOCwg
MTYsIDE2LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgx
NiwgMTUsIDE1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0
YSgxNiwgMTYsIDE2LCB0cnVlKS5udW1UaWxlcygpKTsKICAgICBFWFBFQ1RfRVEoMSwgVGlsaW5n
RGF0YSgxNiwgIDEsIDE2LCBmYWxzZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRp
bGluZ0RhdGEoMTcsIDE1LCAxNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEs
IFRpbGluZ0RhdGEoMTUsIDE1LCAxNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CiB9CiAKIFRFU1QoVGls
aW5nRGF0YVRlc3QsIG51bVRpbGVzX1RpbGluZ05vQm9yZGVycykKQEAgLTEwOSw0NSArMTA5LDQ1
IEBAIFRFU1QoVGlsaW5nRGF0YVRlc3QsIG51bVRpbGVzX1RpbGluZ1dpdGhCb3JkZXJzKQogICAg
IEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKC0xLCAxLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7CiAg
ICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMCwgIDEsICAxLCB0cnVlKS5udW1UaWxlcygpKTsK
IAotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDEsICAxLCAgMSwgdHJ1ZSkubnVtVGlsZXMo
KSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMSwgIDEsICAxLCB0cnVlKS5udW1UaWxl
cygpKTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgxLCAgMSwgIDIsIHRydWUpLm51bVRp
bGVzKCkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDEsICAyLCAgMSwgdHJ1ZSkubnVt
VGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgIDEsICAxLCB0cnVlKS5u
dW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgyLCAgMSwgIDIsIHRydWUp
Lm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDIsICAyLCAgMSwgdHJ1
ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgIDIsICAyLCB0
cnVlKS5udW1UaWxlcygpKTsKLQotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAxLCAg
MSwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgIDEs
ICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAg
MiwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMs
ICAyLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDYsIFRpbGluZ0RhdGEo
MywgIDIsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoNiwgVGlsaW5nRGF0
YSgzLCAgMywgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg5LCBUaWxpbmdE
YXRhKDMsICAzLCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgVGls
aW5nRGF0YSg0LCAgMSwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgxLCBU
aWxpbmdEYXRhKDQsICAyLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDIs
IFRpbGluZ0RhdGEoNCwgIDMsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEo
MiwgVGlsaW5nRGF0YSg0LCAgNCwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9F
USgzLCBUaWxpbmdEYXRhKDQsICA1LCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNU
X0VRKDMsIFRpbGluZ0RhdGEoNCwgIDYsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBF
Q1RfRVEoNCwgVGlsaW5nRGF0YSg0LCAgNywgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVY
UEVDVF9FUSg0LCBUaWxpbmdEYXRhKDQsICA4LCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAg
RVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNCwgIDksICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAg
ICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg0LCAxMCwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwot
ICAgIEVYUEVDVF9FUSg2LCBUaWxpbmdEYXRhKDQsIDExLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7
Ci0KLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgMSwgIDMsIHRydWUpLm51bVRpbGVz
KCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICAyLCAgMywgdHJ1ZSkubnVtVGls
ZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwgIDMsICAzLCB0cnVlKS5udW1U
aWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSg1LCAgNCwgIDMsIHRydWUpLm51
bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDUsICA1LCAgMywgdHJ1ZSku
bnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwgIDYsICAzLCB0cnVl
KS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgNywgIDMsIHRy
dWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA4LCAgMywg
dHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDksICAz
LCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAxMCwg
IDMsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsIDEx
LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMiwg
IDEsICAxLCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgy
LCAgMSwgIDIsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRh
KDIsICAyLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0Rh
dGEoMiwgIDIsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKKworICAgIEVYUEVDVF9FUSgxLCBUaWxp
bmdEYXRhKDMsICAxLCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRp
bGluZ0RhdGEoMywgIDIsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwg
VGlsaW5nRGF0YSgzLCAgMywgIDMsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgy
LCBUaWxpbmdEYXRhKDMsICA0LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VR
KDMsIFRpbGluZ0RhdGEoMywgIDUsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1Rf
RVEoNCwgVGlsaW5nRGF0YSgzLCAgNiwgIDMsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVD
VF9FUSg1LCBUaWxpbmdEYXRhKDMsICA3LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7CisKKyAgICBF
WFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg0LCAgMSwgIDQsIHRydWUpLm51bVRpbGVzKCkpOworICAg
IEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDQsICAyLCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7Cisg
ICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwgIDMsICA0LCB0cnVlKS5udW1UaWxlcygpKTsK
KyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg0LCAgNCwgIDQsIHRydWUpLm51bVRpbGVzKCkp
OworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDQsICA1LCAgNCwgdHJ1ZSkubnVtVGlsZXMo
KSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNCwgIDYsICA0LCB0cnVlKS5udW1UaWxl
cygpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg0LCAgNywgIDQsIHRydWUpLm51bVRp
bGVzKCkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDQsICA4LCAgNCwgdHJ1ZSkubnVt
VGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNCwgIDksICA0LCB0cnVlKS5u
dW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg0LCAxMCwgIDQsIHRydWUp
Lm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDQsIDExLCAgNCwgdHJ1
ZSkubnVtVGlsZXMoKSk7CisKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgMSwgIDUs
IHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICAyLCAg
NSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwgIDMs
ICA1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAg
NCwgIDUsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUs
ICA1LCAgNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEo
NSwgIDYsICA1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0
YSg1LCAgNywgIDUsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdE
YXRhKDUsICA4LCAgNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGlu
Z0RhdGEoNSwgIDksICA1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGls
aW5nRGF0YSg1LCAxMCwgIDUsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgzLCBU
aWxpbmdEYXRhKDUsIDExLCAgNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CiB9CiAKIFRFU1QoVGlsaW5n
RGF0YVRlc3QsIHRpbGVYSW5kZXhGcm9tU3JjQ29vcmQpCkBAIC0xNjYsMTcgKzE2NiwxNyBAQCBU
RVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlWEluZGV4RnJvbVNyY0Nvb3JkKQogICAgIEVYUEVDVF9F
USgzLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgZmFsc2UpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQo
MTEpKTsKIAogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGls
ZVhJbmRleEZyb21TcmNDb29yZCgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywg
MTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKLSAgICBFWFBFQ1RfRVEo
MiwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMikp
OwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRl
eEZyb21TcmNDb29yZCgzKSk7Ci0gICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgMTAsIDEw
LCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDQpKTsKLSAgICBFWFBFQ1RfRVEoNSwgVGls
aW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoNSkpOwotICAg
IEVYUEVDVF9FUSg2LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21T
cmNDb29yZCg2KSk7Ci0gICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVl
KS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDcpKTsKLSAgICBFWFBFQ1RfRVEoOCwgVGlsaW5nRGF0
YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoOCkpOwotICAgIEVYUEVD
VF9FUSg5LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29y
ZCg5KSk7Ci0gICAgRVhQRUNUX0VRKDksIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxl
WEluZGV4RnJvbVNyY0Nvb3JkKDEwKSk7Ci0gICAgRVhQRUNUX0VRKDksIFRpbGluZ0RhdGEoMywg
MTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDExKSk7CisgICAgRVhQRUNUX0VR
KDAsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEp
KTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5k
ZXhGcm9tU3JjQ29vcmQoMikpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDEwLCAx
MCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgzKSk7CisgICAgRVhQRUNUX0VRKDMsIFRp
bGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDQpKTsKKyAg
ICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9t
U3JjQ29vcmQoNSkpOworICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1
ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCg2KSk7CisgICAgRVhQRUNUX0VRKDYsIFRpbGluZ0Rh
dGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDcpKTsKKyAgICBFWFBF
Q1RfRVEoNywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29v
cmQoOCkpOworICAgIEVYUEVDVF9FUSg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGls
ZVhJbmRleEZyb21TcmNDb29yZCg5KSk7CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywg
MTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEwKSk7CisgICAgRVhQRUNUX0VR
KDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEx
KSk7CiAKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgxLCAxLCAxLCBmYWxzZSkudGlsZVhJ
bmRleEZyb21TcmNDb29yZCgwKSk7CiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgMiwg
MiwgZmFsc2UpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwpAQCAtMTk0LDEzICsxOTQsMTMg
QEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgdGlsZVhJbmRleEZyb21TcmNDb29yZCkKICAgICBFWFBF
Q1RfRVEoMCwgVGlsaW5nRGF0YSgyLCAyLCAyLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3Jk
KDApKTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgyLCAyLCAyLCB0cnVlKS50aWxlWElu
ZGV4RnJvbVNyY0Nvb3JkKDEpKTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAz
LCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGls
aW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKLSAgICBF
WFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nv
b3JkKDIpKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxl
WEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAz
LCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDIpKTsKIAotICAgIEVYUEVDVF9FUSgw
LCBUaWxpbmdEYXRhKDQsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwot
ICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDQsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9t
U3JjQ29vcmQoMSkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDQsIDQsIDMsIHRydWUp
LnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMikpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRh
KDQsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMykpOworICAgIEVYUEVDVF9F
USgwLCBUaWxpbmdEYXRhKDMsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkp
OworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhG
cm9tU3JjQ29vcmQoMSkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsIDMsIHRy
dWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMikpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdE
YXRhKDMsIDQsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMykpOwogfQogVEVTVChU
aWxpbmdEYXRhVGVzdCwgdGlsZVlJbmRleEZyb21TcmNDb29yZCkKIHsKQEAgLTIxOCwxNyArMjE4
LDE3IEBAIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVZSW5kZXhGcm9tU3JjQ29vcmQpCiAgICAg
RVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCBmYWxzZSkudGlsZVlJbmRleEZyb21T
cmNDb29yZCgxMSkpOwogCiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0
cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5n
RGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkpOwotICAgIEVY
UEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmND
b29yZCgyKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50
aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDMpKTsKLSAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgz
LCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNCkpOwotICAgIEVYUEVDVF9F
USg1LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg1
KSk7Ci0gICAgRVhQRUNUX0VRKDYsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUlu
ZGV4RnJvbVNyY0Nvb3JkKDYpKTsKLSAgICBFWFBFQ1RfRVEoNywgVGlsaW5nRGF0YSgzLCAxMCwg
MTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNykpOwotICAgIEVYUEVDVF9FUSg4LCBU
aWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg4KSk7Ci0g
ICAgRVhQRUNUX0VRKDksIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJv
bVNyY0Nvb3JkKDkpKTsKLSAgICBFWFBFQ1RfRVEoOSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRy
dWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMTApKTsKLSAgICBFWFBFQ1RfRVEoOSwgVGlsaW5n
RGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMTEpKTsKKyAgICBF
WFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3Jj
Q29vcmQoMSkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSku
dGlsZVlJbmRleEZyb21TcmNDb29yZCgyKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEo
MywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDMpKTsKKyAgICBFWFBFQ1Rf
RVEoMywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQo
NCkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJ
bmRleEZyb21TcmNDb29yZCg1KSk7CisgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoMywgMTAs
IDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDYpKTsKKyAgICBFWFBFQ1RfRVEoNiwg
VGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNykpOwor
ICAgIEVYUEVDVF9FUSg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZy
b21TcmNDb29yZCg4KSk7CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0
cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDkpKTsKKyAgICBFWFBFQ1RfRVEoNywgVGlsaW5n
RGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMTApKTsKKyAgICBF
WFBFQ1RfRVEoNywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3Jj
Q29vcmQoMTEpKTsKIAogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDEsIDEsIDEsIGZhbHNl
KS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDApKTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0
YSgyLCAyLCAyLCBmYWxzZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgwKSk7CkBAIC0yNDYsNjEg
KzI0Niw2MSBAQCBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlWUluZGV4RnJvbVNyY0Nvb3JkKQog
ICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDIsIDIsIDIsIHRydWUpLnRpbGVZSW5kZXhGcm9t
U3JjQ29vcmQoMCkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDIsIDIsIDIsIHRydWUp
LnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRh
KDMsIDMsIDMsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwotICAgIEVYUEVDVF9F
USgxLCBUaWxpbmdEYXRhKDMsIDMsIDMsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkp
OwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDMsIDMsIHRydWUpLnRpbGVZSW5kZXhG
cm9tU3JjQ29vcmQoMikpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDMsIDMsIHRy
dWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdE
YXRhKDMsIDMsIDMsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMikpOwogCi0gICAgRVhQ
RUNUX0VRKDAsIFRpbGluZ0RhdGEoNCwgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29y
ZCgwKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoNCwgMywgNCwgdHJ1ZSkudGlsZVlJ
bmRleEZyb21TcmNDb29yZCgxKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwgMywg
NCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgyKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRp
bGluZ0RhdGEoNCwgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgzKSk7CisgICAg
RVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmND
b29yZCgwKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywgNCwgdHJ1ZSkudGls
ZVlJbmRleEZyb21TcmNDb29yZCgxKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywg
MywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgyKSk7CisgICAgRVhQRUNUX0VRKDEs
IFRpbGluZ0RhdGEoMywgMywgNCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgzKSk7CiB9
CiAKIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVTaXplWCkKIHsKICAgICBFWFBFQ1RfRVEoNSwg
VGlsaW5nRGF0YSg1LCAgNSwgIDUsIGZhbHNlKS50aWxlU2l6ZVgoMCkpOwotICAgIEVYUEVDVF9F
USgzLCBUaWxpbmdEYXRhKDUsICA1LCAgNSwgdHJ1ZSkudGlsZVNpemVYKDApKTsKKyAgICBFWFBF
Q1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAgNSwgIDUsIHRydWUpLnRpbGVTaXplWCgwKSk7CiAKICAg
ICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIGZhbHNlKS50aWxlU2l6ZVgoMCkp
OwogICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgZmFsc2UpLnRpbGVTaXpl
WCgxKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCB0cnVlKS50aWxl
U2l6ZVgoMCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgdHJ1ZSku
dGlsZVNpemVYKDEpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIHRy
dWUpLnRpbGVTaXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwgIDYsICA2
LCB0cnVlKS50aWxlU2l6ZVgoMSkpOwogCiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwg
IDgsICA4LCBmYWxzZSkudGlsZVNpemVYKDApKTsKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0
YSg1LCAgOCwgIDgsIGZhbHNlKS50aWxlU2l6ZVgoMSkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxp
bmdEYXRhKDUsICA4LCAgOCwgdHJ1ZSkudGlsZVNpemVYKDApKTsKLSAgICBFWFBFQ1RfRVEoMywg
VGlsaW5nRGF0YSg1LCAgOCwgIDgsIHRydWUpLnRpbGVTaXplWCgxKSk7CisgICAgRVhQRUNUX0VR
KDQsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVD
VF9FUSg0LCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgdHJ1ZSkudGlsZVNpemVYKDEpKTsKIAogICAg
IEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgZmFsc2UpLnRpbGVTaXplWCgwKSk7
CiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCBmYWxzZSkudGlsZVNpemVY
KDEpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIHRydWUpLnRpbGVT
aXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCB0cnVlKS50
aWxlU2l6ZVgoMCkpOwogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgdHJ1
ZSkudGlsZVNpemVYKDEpKTsKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMCwgMTAs
IHRydWUpLnRpbGVTaXplWCgyKSk7CiAKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAx
MSwgMTEsIHRydWUpLnRpbGVTaXplWCgyKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEo
NSwgMTEsIDExLCB0cnVlKS50aWxlU2l6ZVgoMikpOwogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdE
YXRhKDUsIDEyLCAxMiwgdHJ1ZSkudGlsZVNpemVYKDIpKTsKIH0KIFRFU1QoVGlsaW5nRGF0YVRl
c3QsIHRpbGVTaXplWSkKIHsKICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAgNSwgIDUs
IGZhbHNlKS50aWxlU2l6ZVkoMCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA1
LCAgNSwgdHJ1ZSkudGlsZVNpemVZKDApKTsKKyAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1
LCAgNSwgIDUsIHRydWUpLnRpbGVTaXplWSgwKSk7CiAKICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5n
RGF0YSg1LCAgNiwgIDYsIGZhbHNlKS50aWxlU2l6ZVkoMCkpOwogICAgIEVYUEVDVF9FUSgxLCBU
aWxpbmdEYXRhKDUsICA2LCAgNiwgZmFsc2UpLnRpbGVTaXplWSgxKSk7Ci0gICAgRVhQRUNUX0VR
KDMsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCB0cnVlKS50aWxlU2l6ZVkoMCkpOwotICAgIEVYUEVD
VF9FUSgzLCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgdHJ1ZSkudGlsZVNpemVZKDEpKTsKKyAgICBF
WFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIHRydWUpLnRpbGVTaXplWSgwKSk7Cisg
ICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCB0cnVlKS50aWxlU2l6ZVkoMSkp
OwogCiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCBmYWxzZSkudGlsZVNp
emVZKDApKTsKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIGZhbHNlKS50
aWxlU2l6ZVkoMSkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgdHJ1
ZSkudGlsZVNpemVZKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgOCwgIDgs
IHRydWUpLnRpbGVTaXplWSgxKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgIDgs
ICA4LCB0cnVlKS50aWxlU2l6ZVkoMCkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUs
ICA4LCAgOCwgdHJ1ZSkudGlsZVNpemVZKDEpKTsKIAogICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdE
YXRhKDUsIDEwLCAxMCwgZmFsc2UpLnRpbGVTaXplWSgwKSk7CiAgICAgRVhQRUNUX0VRKDUsIFRp
bGluZ0RhdGEoNSwgMTAsIDEwLCBmYWxzZSkudGlsZVNpemVZKDEpKTsKLSAgICBFWFBFQ1RfRVEo
MywgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIHRydWUpLnRpbGVTaXplWSgwKSk7CisgICAgRVhQRUNU
X0VRKDQsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCB0cnVlKS50aWxlU2l6ZVkoMCkpOwogICAgIEVY
UEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgdHJ1ZSkudGlsZVNpemVZKDEpKTsKICAg
ICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIHRydWUpLnRpbGVTaXplWSgyKSk7
CiAKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMSwgMTEsIHRydWUpLnRpbGVTaXpl
WSgyKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgMTEsIDExLCB0cnVlKS50aWxl
U2l6ZVkoMikpOwogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEyLCAxMiwgdHJ1ZSku
dGlsZVNpemVZKDIpKTsKIH0KIApAQCAtMzE5LDEwICszMTksMTAgQEAgVEVTVChUaWxpbmdEYXRh
VGVzdCwgdGlsZVNpemVYX2FuZF90aWxlUG9zaXRpb25YKQogICAgIEVYUEVDVF9FUSgwLCBUaWxp
bmdEYXRhKDMsIDEsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7CiAgICAgRVhQRUNUX0VR
KDEsIFRpbGluZ0RhdGEoMywgMSwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMCkpOwogICAgIEVYUEVD
VF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7Ci0g
ICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMywgICAxLCB0cnVlKS50aWxlU2l6ZVgoMCkp
OwotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDUsIDMsICAgMSwgdHJ1ZSkudGlsZVBvc2l0
aW9uWCgwKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMywgMTAwLCB0cnVlKS50
aWxlU2l6ZVgoMCkpOwotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDUsIDMsIDEwMCwgdHJ1
ZSkudGlsZVBvc2l0aW9uWCgwKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMywg
ICAxLCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMs
IDMsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGlu
Z0RhdGEoMywgMywgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9FUSgwLCBU
aWxpbmdEYXRhKDMsIDMsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7CiAKICAgICAvLyBN
dWx0aXBsZSB0aWxlczoKICAgICAvLyBubyBib3JkZXIKQEAgLTM0MCwyMyArMzQwLDIzIEBAIFRF
U1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVTaXplWF9hbmRfdGlsZVBvc2l0aW9uWCkKICAgICAvLyBN
dWx0aXBsZSB0aWxlczoKICAgICAvLyB3aXRoIGJvcmRlcgogICAgIC8vIHBvc2l0aW9ucyAwLCAy
LCAzLCA0Ci0gICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS5udW1U
aWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAgIDEsIHRydWUpLnRp
bGVTaXplWCgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVl
KS50aWxlU2l6ZVgoMSkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsICAgMSwg
dHJ1ZSkudGlsZVNpemVYKDIpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAg
IDEsIHRydWUpLnRpbGVTaXplWCgzKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywg
NCwgICAxLCB0cnVlKS50aWxlUG9zaXRpb25YKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5n
RGF0YSgzLCA0LCAgIDEsIHRydWUpLnRpbGVQb3NpdGlvblgoMSkpOwotICAgIEVYUEVDVF9FUSgy
LCBUaWxpbmdEYXRhKDMsIDQsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgyKSk7Ci0gICAgRVhQ
RUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS50aWxlUG9zaXRpb25YKDMpKTsK
LSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAxMDAsIHRydWUpLnRpbGVTaXplWCgw
KSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgMTAwLCB0cnVlKS50aWxlU2l6
ZVgoMSkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsIDEwMCwgdHJ1ZSkudGls
ZVNpemVYKDIpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAxMDAsIHRydWUp
LnRpbGVTaXplWCgzKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgNCwgMTAwLCB0
cnVlKS50aWxlUG9zaXRpb25YKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0
LCAxMDAsIHRydWUpLnRpbGVQb3NpdGlvblgoMSkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdE
YXRhKDMsIDQsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgyKSk7Ci0gICAgRVhQRUNUX0VRKDMs
IFRpbGluZ0RhdGEoMywgNCwgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25YKDMpKTsKKyAgICBFWFBF
Q1RfRVEoNCwgVGlsaW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVY
UEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDYsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDApKTsKKyAg
ICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLnRpbGVTaXplWCgxKSk7
CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNiwgICAxLCB0cnVlKS50aWxlU2l6ZVgo
MikpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDYsICAgMSwgdHJ1ZSkudGlsZVNp
emVYKDMpKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLnRp
bGVQb3NpdGlvblgoMCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDYsICAgMSwg
dHJ1ZSkudGlsZVBvc2l0aW9uWCgxKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywg
NiwgICAxLCB0cnVlKS50aWxlUG9zaXRpb25YKDIpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5n
RGF0YSgzLCA2LCAgIDEsIHRydWUpLnRpbGVQb3NpdGlvblgoMykpOworICAgIEVYUEVDVF9FUSgy
LCBUaWxpbmdEYXRhKDMsIDYsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDApKTsKKyAgICBFWFBFQ1Rf
RVEoMSwgVGlsaW5nRGF0YSgzLCA2LCAxMDAsIHRydWUpLnRpbGVTaXplWCgxKSk7CisgICAgRVhQ
RUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNiwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMikpOworICAg
IEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDYsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDMpKTsK
KyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCA2LCAxMDAsIHRydWUpLnRpbGVQb3NpdGlv
blgoMCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDYsIDEwMCwgdHJ1ZSkudGls
ZVBvc2l0aW9uWCgxKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgNiwgMTAwLCB0
cnVlKS50aWxlUG9zaXRpb25YKDIpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCA2
LCAxMDAsIHRydWUpLnRpbGVQb3NpdGlvblgoMykpOwogfQogCiBURVNUKFRpbGluZ0RhdGFUZXN0
LCB0aWxlU2l6ZVlfYW5kX3RpbGVQb3NpdGlvblkpCkBAIC0zNzQsMTAgKzM3NCwxMCBAQCBURVNU
KFRpbGluZ0RhdGFUZXN0LCB0aWxlU2l6ZVlfYW5kX3RpbGVQb3NpdGlvblkpCiAgICAgRVhQRUNU
X0VRKDAsIFRpbGluZ0RhdGEoMywgICAxLCAxLCB0cnVlKS50aWxlUG9zaXRpb25ZKDApKTsKICAg
ICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDEsIHRydWUpLnRpbGVTaXplWSgwKSk7
CiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMTAwLCAxLCB0cnVlKS50aWxlUG9zaXRp
b25ZKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgIDEsIDMsIHRydWUpLnRp
bGVTaXplWSgwKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoNSwgICAxLCAzLCB0cnVl
KS50aWxlUG9zaXRpb25ZKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMDAs
IDMsIHRydWUpLnRpbGVTaXplWSgwKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoNSwg
MTAwLCAzLCB0cnVlKS50aWxlUG9zaXRpb25ZKDApKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5n
RGF0YSgzLCAgIDEsIDMsIHRydWUpLnRpbGVTaXplWSgwKSk7CisgICAgRVhQRUNUX0VRKDAsIFRp
bGluZ0RhdGEoMywgICAxLCAzLCB0cnVlKS50aWxlUG9zaXRpb25ZKDApKTsKKyAgICBFWFBFQ1Rf
RVEoMywgVGlsaW5nRGF0YSgzLCAxMDAsIDMsIHRydWUpLnRpbGVTaXplWSgwKSk7CisgICAgRVhQ
RUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMTAwLCAzLCB0cnVlKS50aWxlUG9zaXRpb25ZKDApKTsK
IAogICAgIC8vIE11bHRpcGxlIHRpbGVzOgogICAgIC8vIG5vIGJvcmRlcgpAQCAtMzk1LDIzICsz
OTUsMjMgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgdGlsZVNpemVZX2FuZF90aWxlUG9zaXRpb25Z
KQogICAgIC8vIE11bHRpcGxlIHRpbGVzOgogICAgIC8vIHdpdGggYm9yZGVyCiAgICAgLy8gcG9z
aXRpb25zIDAsIDIsIDMsIDQKLSAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAgIDEsIDQs
IHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAgMSwg
NCwgdHJ1ZSkudGlsZVNpemVZKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAg
IDEsIDQsIHRydWUpLnRpbGVTaXplWSgxKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEo
MywgICAxLCA0LCB0cnVlKS50aWxlU2l6ZVkoMikpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdE
YXRhKDMsICAgMSwgNCwgdHJ1ZSkudGlsZVNpemVZKDMpKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGls
aW5nRGF0YSgzLCAgIDEsIDQsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOwotICAgIEVYUEVDVF9F
USgxLCBUaWxpbmdEYXRhKDMsICAgMSwgNCwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgxKSk7Ci0gICAg
RVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgICAxLCA0LCB0cnVlKS50aWxlUG9zaXRpb25ZKDIp
KTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCAgIDEsIDQsIHRydWUpLnRpbGVQb3Np
dGlvblkoMykpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwMCwgNCwgdHJ1ZSku
dGlsZVNpemVZKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDQsIHRy
dWUpLnRpbGVTaXplWSgxKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMTAwLCA0
LCB0cnVlKS50aWxlU2l6ZVkoMikpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEw
MCwgNCwgdHJ1ZSkudGlsZVNpemVZKDMpKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgz
LCAxMDAsIDQsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxp
bmdEYXRhKDMsIDEwMCwgNCwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgxKSk7Ci0gICAgRVhQRUNUX0VR
KDIsIFRpbGluZ0RhdGEoMywgMTAwLCA0LCB0cnVlKS50aWxlUG9zaXRpb25ZKDIpKTsKLSAgICBF
WFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCAxMDAsIDQsIHRydWUpLnRpbGVQb3NpdGlvblkoMykp
OworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkubnVtVGlsZXMo
KSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgICAxLCA2LCB0cnVlKS50aWxlU2l6
ZVkoMCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkudGls
ZVNpemVZKDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgIDEsIDYsIHRydWUp
LnRpbGVTaXplWSgyKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgICAxLCA2LCB0
cnVlKS50aWxlU2l6ZVkoMykpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsICAgMSwg
NiwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgwKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEo
MywgICAxLCA2LCB0cnVlKS50aWxlUG9zaXRpb25ZKDEpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGls
aW5nRGF0YSgzLCAgIDEsIDYsIHRydWUpLnRpbGVQb3NpdGlvblkoMikpOworICAgIEVYUEVDVF9F
USg0LCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgzKSk7CisgICAg
RVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMTAwLCA2LCB0cnVlKS50aWxlU2l6ZVkoMCkpOwor
ICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwMCwgNiwgdHJ1ZSkudGlsZVNpemVZKDEp
KTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDYsIHRydWUpLnRpbGVTaXpl
WSgyKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMTAwLCA2LCB0cnVlKS50aWxl
U2l6ZVkoMykpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEwMCwgNiwgdHJ1ZSku
dGlsZVBvc2l0aW9uWSgwKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMTAwLCA2
LCB0cnVlKS50aWxlUG9zaXRpb25ZKDEpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgz
LCAxMDAsIDYsIHRydWUpLnRpbGVQb3NpdGlvblkoMikpOworICAgIEVYUEVDVF9FUSg0LCBUaWxp
bmdEYXRhKDMsIDEwMCwgNiwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgzKSk7CiB9CiAKIFRFU1QoVGls
aW5nRGF0YVRlc3QsIHNldFRvdGFsU2l6ZSkKQEAgLTQ2OCw3ICs0NjgsNyBAQCBURVNUKFRpbGlu
Z0RhdGFUZXN0LCBzZXRNYXhUZXh0dXJlU2l6ZU5vQm9yZGVycykKIAogVEVTVChUaWxpbmdEYXRh
VGVzdCwgc2V0TWF4VGV4dHVyZVNpemVCb3JkZXJzKQogewotICAgIFRpbGluZ0RhdGEgZGF0YSg4
LCAxNiwgMzAsIHRydWUpOworICAgIFRpbGluZ0RhdGEgZGF0YSg4LCAxNiwgMzIsIHRydWUpOwog
ICAgIEVYUEVDVF9FUSgzLCBkYXRhLm51bVRpbGVzWCgpKTsKICAgICBFWFBFQ1RfRVEoNSwgZGF0
YS5udW1UaWxlc1koKSk7CiAKQEAgLTQ4NCw3ICs0ODQsNyBAQCBURVNUKFRpbGluZ0RhdGFUZXN0
LCBzZXRNYXhUZXh0dXJlU2l6ZUJvcmRlcnMpCiAKICAgICBkYXRhLnNldE1heFRleHR1cmVTaXpl
KDUpOwogICAgIEVYUEVDVF9FUSg1LCBkYXRhLm1heFRleHR1cmVTaXplKCkpOwotICAgIEVYUEVD
VF9FUSg2LCBkYXRhLm51bVRpbGVzWCgpKTsKKyAgICBFWFBFQ1RfRVEoNSwgZGF0YS5udW1UaWxl
c1goKSk7CiAgICAgRVhQRUNUX0VRKDEwLCBkYXRhLm51bVRpbGVzWSgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102562</attachid>
            <date>2011-08-01 14:52:43 -0700</date>
            <delta_ts>2011-08-02 12:01:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64942-20110801175241.patch</filename>
            <type>text/plain</type>
            <size>71496</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIxMzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0MWVlYmIxNjhkNTM4N2U2MDc1NzQ3
M2ZiNjQzZDY3ZDAxODllOGJhLi5hZTM2YmNiMTU2YjgzMzY4YjVhZGJlMjAwZjVmMmQ5ZmRhOWQ4
NWE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDgtMDEgIERhdmlkIFJldmVtYW4gIDxy
ZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFVzZSBlZGdlLWRpc3Rh
bmNlIG1ldGhvZCBmb3IgbGF5ZXIgYW50aS1hbGlhc2luZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGVkIHJlc3VsdHMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEt
MDgtMDEgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBb
UXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nIGFmdGVyIHI5MjEyNy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCBkYzA1NzFj
ZDUyOWI0ZTA0NGMwZTM5Y2ExMGQ3YmVmYTNkMWU0MjIzLi4yNDNlMDI3MmE0N2QzZjRjYWM1MGI2
NzQyZjNiZGIwZjYwM2JhMDBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0yNzc1LDYgKzI3NzUsMjQgQEAgQlVHV0s1
NTk2OCBHUFUgV0lOIERFQlVHIDogY29tcG9zaXRpbmcvd2ViZ2wvd2ViZ2wtbm9ucHJlbXVsdGlw
bGllZC1ibGVuZC5odG1sID0KIC8vIDIgcGl4ZWwgc3RyZXRjaGluZyB3aGVuIHJlbmRlcmluZyBz
b21lIHZpZGVvcyB3aXRoIHRoZSBHUFUgKE5vdyBpdCdzIGZsYWt5KQogQlVHQ1I3NDEwMiBHUFUg
TElOVVggOiBtZWRpYS92aWRlby1jb250cm9scy1yZW5kZXJpbmcuaHRtbCA9IElNQUdFIFBBU1MK
IAorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNvbG9yLW1h
dGNoaW5nLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5nL2dlb21ldHJ5L2Fu
Y2VzdG9yLW92ZXJmbG93LWNoYW5nZS5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21wb3Np
dGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBj
b21wb3NpdGluZy9nZW9tZXRyeS9sYXllci1kdWUtdG8tbGF5ZXItY2hpbGRyZW4tZGVlcC5odG1s
ID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21wb3NpdGluZy9nZW9tZXRyeS9sYXllci1kdWUtdG8t
bGF5ZXItY2hpbGRyZW4uaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogY29tcG9zaXRpbmcvZ2Vv
bWV0cnkvdmVydGljYWwtc2Nyb2xsLWNvbXBvc2l0ZWQuaHRtbCA9IElNQUdFCitCVUdXSzY0OTQy
IDogY29tcG9zaXRpbmcvb3ZlcmZsb3cvZml4ZWQtcG9zaXRpb24tYW5jZXN0b3ItY2xpcC5odG1s
ID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVm
bGVjdGlvbi10cmFuc2l0aW9uLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5n
L3JlZmxlY3Rpb25zL3RyYW5zZm9ybS1pbnNpZGUtcmVmbGVjdGlvbi5odG1sID0gSU1BR0UKK0JV
R1dLNjQ5NDIgOiBjb21wb3NpdGluZy9zaGFkb3dzL3NoYWRvdy1kcmF3aW5nLmh0bWwgPSBJTUFH
RQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5nL3RyYW5zaXRpb25zL3NjYWxlLXRyYW5zaXRpb24t
bm8tc3RhcnQuaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogbWVkaWEvdmlkZW8tdHJhbnNmb3Jt
ZWQuaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogbWVkaWEvdmlkZW8tem9vbS1jb250cm9scy5o
dG1sICA9IElNQUdFCitCVUdXSzY0OTQyIDogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcv
YmFja2ZhY2UtdmlzaWJpbGl0eS10cmFuc2Zvcm1lZC5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIg
OiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9odWdlLWxheWVyLXJvdGF0ZWQuaHRtbCA9
IElNQUdFCitCVUdXSzY0OTQyIDogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvcGVycGVu
ZGljdWxhci1sYXllci1zb3J0aW5nLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IHBsYXRmb3Jt
L2Nocm9taXVtL2NvbXBvc2l0aW5nL3RpbnktbGF5ZXItcm90YXRlZC5odG1sID0gSU1BR0UKKwog
CiBCVUdDUjcyMjIzIDogbWVkaWEvdmlkZW8tZnJhbWUtYWNjdXJhdGUtc2Vlay5odG1sID0gSU1B
R0UgUEFTUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzFiYzk3ZGE4ZmYzZmY2YWIwOGFmZjhlN2FkY2U2NGQ3
MTU2MTJiZi4uMWIyM2U3YTRlY2QwZWI5MGExMzkwYTRmNDc2MDRmZjlkYzViNDJiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDExLTA4LTAxICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1h
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBVc2UgZWRnZS1kaXN0YW5jZSBt
ZXRob2QgZm9yIGxheWVyIGFudGktYWxpYXNpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDk0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVzZSBhbiBlZGdlIGRpc3RhbmNlIGJhc2VkIG1ldGhvZCBp
bnN0ZWFkIG9mIHRoZSBjdXJyZW50IGxpbmVhcgorICAgICAgICBmaWx0ZXJpbmcgbWV0aG9kIGZv
ciBwcm9kdWNpbmcgYW50aS1hbGlhc2VkIGVkZ2VzIG9uIDNEIHRyYW5zZm9ybWVkCisgICAgICAg
IGxheWVycy4gVGhpcyByZW1vdmVzIHRoZSBvdXRlciBib3JkZXIgaGFuZGxpbmcgZnJvbSBUaWxp
bmdEYXRhIGFzCisgICAgICAgIGl0J3Mgbm8gbG9uZ2VyIG5lZWRlZCBmb3IgYW50aS1hbGlhc2lu
Zy4KKworICAgICAgICBUZXN0czogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvdGlueS1s
YXllci1yb3RhdGVkLmh0bWwgKGV4aXN0aW5nKQorICAgICAgICAgICAgICAgcGxhdGZvcm0vY2hy
b21pdW0vY29tcG9zaXRpbmcvaHVnZS1sYXllci1yb3RhdGVkLmh0bWwgKGV4aXN0aW5nKQorICAg
ICAgICAgICAgICAgY29tcG9zaXRpbmcvaW1hZ2VzL2NvbnRlbnQtaW1hZ2UtY2hhbmdlLmh0bWwg
KGV4aXN0aW5nKQorICAgICAgICAgICAgICAgVGlsaW5nRGF0YVRlc3QgaW4gd2Via2l0X3VuaXRf
dGVzdHMKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5NYXRyaXgpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0RHJhd1ZpZXdwb3J0UmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbUFBKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dp
enpsZUFBKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
d2luZG93TWF0cml4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRpbGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVt
OjpzZXRUaWxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OnRp
bGVMYXllclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjppbnZh
bGlkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0
ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpkcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6Z3Jvd0xheWVyVG9Db250YWluKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJUaWxlOjpWZXJ0ZXhTaGFkZXJUaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclRpbGU6OmluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6VmVydGV4U2hhZGVyVGlsZTo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmc6OkZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZzo6aW5pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBOjpnZXRTaGFkZXJTdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhh
QUE6OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2hhZGVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFNoYWRlclRpbGU6
OnZlcnRleFRleFRyYW5zZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50
VGV4QWxwaGFBQUJpbmRpbmc6OmFscGhhTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJh
Z21lbnRUZXhBbHBoYUFBQmluZGluZzo6c2FtcGxlckxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmc6OmZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZzo6ZWRnZUxv
Y2F0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpUaWxl
ZExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp1
cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExh
eWVyQ2hyb21pdW06OmNyZWF0ZVRpbGVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRMYXllckNocm9taXVtOjpzZXRJc01hc2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9UaWxpbmdEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVOdW1UaWxl
cyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxpbmdEYXRhOjp0aWxlWEluZGV4RnJvbVNyY0Nvb3Jk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6OnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQp
OgorICAgICAgICAoV2ViQ29yZTo6VGlsaW5nRGF0YTo6dGlsZVNpemVYKToKKyAgICAgICAgKFdl
YkNvcmU6OlRpbGluZ0RhdGE6OnRpbGVTaXplWSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxpbmdE
YXRhOjppbnRlcnNlY3REcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxpbmdEYXRhOjp0
ZXh0dXJlT2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0
YS5oOgorCiAyMDExLTA4LTAxICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBbUXRdIE9wZW5HTFNoaW1zIGRvZXMgbm90IGJ1aWxkIG9uIEFSTQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggMzk1ZmVjNjk1NmVmMTcwODRk
MjBkN2U1NWJjN2ZmNGM0M2ViY2RjYy4uYTVjYTdiMjFiOGRkMjRkYWI4YWUxOGZmYzk5ZTdhMWRm
ZWM4MzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0zODQs
NiArMzg0LDIxIEBAIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcnRob01hdHJpeChmbG9h
dCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBmCiAgICAgcmV0dXJuIG9ydGhvOwog
fQogCitzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggc2NyZWVuTWF0cml4KGludCB4LCBpbnQg
eSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHNj
cmVlbjsKKworICAgIC8vIE1hcCB0byB2aWV3cG9ydC4KKyAgICBzY3JlZW4udHJhbnNsYXRlM2Qo
eCwgeSwgMCk7CisgICAgc2NyZWVuLnNjYWxlM2Qod2lkdGgsIGhlaWdodCwgMCk7CisKKyAgICAv
LyBNYXAgeCwgeSBhbmQgeiB0byB1bml0IHNxdWFyZS4KKyAgICBzY3JlZW4udHJhbnNsYXRlM2Qo
MC41LCAwLjUsIDAuNSk7CisgICAgc2NyZWVuLnNjYWxlM2QoMC41LCAwLjUsIDAuNSk7CisKKyAg
ICByZXR1cm4gc2NyZWVuOworfQorCiBQYXNzUmVmUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4g
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGll
bnQsIFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IGNvbnRlbnRQYWludCwgYm9vbCBh
Y2NlbGVyYXRlRHJhd2luZykKIHsKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRl
eHQgPSBjbGllbnQtPmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QoKTsKQEAgLTczNyw2ICs3
NTIsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyhjb25zdCBMYXll
ckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCiAKICAgICAvLyBUaGUgR0wgdmlld3BvcnQg
Y292ZXJzIHRoZSBlbnRpcmUgdmlzaWJsZSBhcmVhLCBpbmNsdWRpbmcgdGhlIHNjcm9sbGJhcnMu
CiAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBtX3Zp
ZXdwb3J0VmlzaWJsZVJlY3Qud2lkdGgoKSwgbV92aWV3cG9ydFZpc2libGVSZWN0LmhlaWdodCgp
KSk7CisgICAgbV93aW5kb3dNYXRyaXggPSBzY3JlZW5NYXRyaXgoMCwgMCwgbV92aWV3cG9ydFZp
c2libGVSZWN0LndpZHRoKCksIG1fdmlld3BvcnRWaXNpYmxlUmVjdC5oZWlnaHQoKSk7CiAKICAg
ICAvLyBCaW5kIHRoZSBjb21tb24gdmVydGV4IGF0dHJpYnV0ZXMgdXNlZCBmb3IgZHJhd2luZyBh
bGwgdGhlIGxheWVycy4KICAgICBtX3NoYXJlZEdlb21ldHJ5LT5wcmVwYXJlRm9yRHJhdygpOwpA
QCAtMTEyMSw2ICsxMTM3LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldERyYXdW
aWV3cG9ydFJlY3QoY29uc3QgSW50UmVjdCYgZHJhd1JlY3QsIGJvb2wgZmwKICAgICBlbHNlCiAg
ICAgICAgIG1fcHJvamVjdGlvbk1hdHJpeCA9IG9ydGhvTWF0cml4KGRyYXdSZWN0LngoKSwgZHJh
d1JlY3QubWF4WCgpLCBkcmF3UmVjdC55KCksIGRyYXdSZWN0Lm1heFkoKSk7CiAgICAgR0xDKG1f
Y29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBkcmF3UmVjdC53aWR0aCgp
LCBkcmF3UmVjdC5oZWlnaHQoKSkpOworICAgIG1fd2luZG93TWF0cml4ID0gc2NyZWVuTWF0cml4
KDAsIDAsIGRyYXdSZWN0LndpZHRoKCksIGRyYXdSZWN0LmhlaWdodCgpKTsKIH0KIAogCkBAIC0x
MjIwLDYgKzEyMzcsMjggQEAgY29uc3QgTGF5ZXJUaWxlckNocm9taXVtOjpQcm9ncmFtU3dpenps
ZSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1Td2kKICAgICByZXR1cm4gbV90
aWxlclByb2dyYW1Td2l6emxlLmdldCgpOwogfQogCitjb25zdCBMYXllclRpbGVyQ2hyb21pdW06
OlByb2dyYW1BQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1BQSgpCit7Cisg
ICAgaWYgKCFtX3RpbGVyUHJvZ3JhbUFBKQorICAgICAgICBtX3RpbGVyUHJvZ3JhbUFBID0gYWRv
cHRQdHIobmV3IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbUFBKG1fY29udGV4dC5nZXQoKSkp
OworICAgIGlmICghbV90aWxlclByb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgeworICAgICAgICBU
UkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1BQTo6aW5pdGlh
bGl6ZSIsIHRoaXMsIDApOworICAgICAgICBtX3RpbGVyUHJvZ3JhbUFBLT5pbml0aWFsaXplKCk7
CisgICAgfQorICAgIHJldHVybiBtX3RpbGVyUHJvZ3JhbUFBLmdldCgpOworfQorCitjb25zdCBM
YXllclRpbGVyQ2hyb21pdW06OlByb2dyYW1Td2l6emxlQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dGlsZXJQcm9ncmFtU3dpenpsZUFBKCkKK3sKKyAgICBpZiAoIW1fdGlsZXJQcm9ncmFtU3dp
enpsZUFBKQorICAgICAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQSA9IGFkb3B0UHRyKG5ldyBM
YXllclRpbGVyQ2hyb21pdW06OlByb2dyYW1Td2l6emxlQUEobV9jb250ZXh0LmdldCgpKSk7Cisg
ICAgaWYgKCFtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQS0+aW5pdGlhbGl6ZWQoKSkgeworICAgICAg
ICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1Td2l6emxl
QUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgbV90aWxlclByb2dyYW1Td2l6emxl
QUEtPmluaXRpYWxpemUoKTsKKyAgICB9CisgICAgcmV0dXJuIG1fdGlsZXJQcm9ncmFtU3dpenps
ZUFBLmdldCgpOworfQorCiBjb25zdCBDQ0NhbnZhc0xheWVySW1wbDo6UHJvZ3JhbSogTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpjYW52YXNMYXllclByb2dyYW0oKQogewogICAgIGlmICghbV9jYW52
YXNMYXllclByb2dyYW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGNi
MTQ0NzQ5NDdkNDNlNzhmNTNkMmRlOTI3YjVlNTFkMmZlMzZlMGIuLjA0OGVlMDM4MjNmZGQ5MDlm
NmQwZjQ1ZWZlOWU3NDQ2M2IyNDRhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5oCkBAIC0xMjIsNiArMTIyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRlYnVnR0xD
YWxsKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgY2hhciogY29tbWFuZCwgY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUpOwogCiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHByb2pl
Y3Rpb25NYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX3Byb2plY3Rpb25NYXRyaXg7IH0KKyAgICBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgd2luZG93TWF0cml4KCkgY29uc3QgeyByZXR1cm4g
bV93aW5kb3dNYXRyaXg7IH0KIAogICAgIGJvb2wgY2hlY2tUZXh0dXJlU2l6ZShjb25zdCBJbnRT
aXplJik7CiAgICAgaW50IG1heFRleHR1cmVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXhUZXh0
dXJlU2l6ZTsgfQpAQCAtMTMzLDYgKzEzNCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZW5kZXJT
dXJmYWNlQ2hyb21pdW06Ok1hc2tQcm9ncmFtKiByZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0oKTsK
ICAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0qIHRpbGVyUHJvZ3JhbSgpOwog
ICAgIGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbVN3aXp6bGUqIHRpbGVyUHJvZ3Jh
bVN3aXp6bGUoKTsKKyAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW1BQSogdGls
ZXJQcm9ncmFtQUEoKTsKKyAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW1Td2l6
emxlQUEqIHRpbGVyUHJvZ3JhbVN3aXp6bGVBQSgpOwogICAgIGNvbnN0IENDQ2FudmFzTGF5ZXJJ
bXBsOjpQcm9ncmFtKiBjYW52YXNMYXllclByb2dyYW0oKTsKICAgICBjb25zdCBDQ1BsdWdpbkxh
eWVySW1wbDo6UHJvZ3JhbSogcGx1Z2luTGF5ZXJQcm9ncmFtKCk7CiAgICAgY29uc3QgQ0NWaWRl
b0xheWVySW1wbDo6UkdCQVByb2dyYW0qIHZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSgpOwpAQCAtMjEx
LDYgKzIxNCw3IEBAIHByaXZhdGU6CiAgICAgSW50UG9pbnQgbV92aWV3cG9ydFNjcm9sbFBvc2l0
aW9uOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9wcm9qZWN0aW9uTWF0cml4OworICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fd2luZG93TWF0cml4OwogCiAgICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IG1fcm9vdExheWVyOwogICAgIE93blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBt
X3Jvb3RMYXllclRleHR1cmVVcGRhdGVyOwpAQCAtMjM5LDYgKzI0Myw4IEBAIHByaXZhdGU6CiAg
ICAgT3duUHRyPFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6TWFza1Byb2dyYW0+IG1fcmVuZGVyU3Vy
ZmFjZU1hc2tQcm9ncmFtOwogICAgIE93blB0cjxMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0+
IG1fdGlsZXJQcm9ncmFtOwogICAgIE93blB0cjxMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW1T
d2l6emxlPiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGU7CisgICAgT3duUHRyPExheWVyVGlsZXJDaHJv
bWl1bTo6UHJvZ3JhbUFBPiBtX3RpbGVyUHJvZ3JhbUFBOworICAgIE93blB0cjxMYXllclRpbGVy
Q2hyb21pdW06OlByb2dyYW1Td2l6emxlQUE+IG1fdGlsZXJQcm9ncmFtU3dpenpsZUFBOwogICAg
IE93blB0cjxDQ0NhbnZhc0xheWVySW1wbDo6UHJvZ3JhbT4gbV9jYW52YXNMYXllclByb2dyYW07
CiAgICAgT3duUHRyPENDVmlkZW9MYXllckltcGw6OlJHQkFQcm9ncmFtPiBtX3ZpZGVvTGF5ZXJS
R0JBUHJvZ3JhbTsKICAgICBPd25QdHI8Q0NWaWRlb0xheWVySW1wbDo6WVVWUHJvZ3JhbT4gbV92
aWRlb0xheWVyWVVWUHJvZ3JhbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCmluZGV4
IGEwYmQxMDhhODI1NGVjOWUzNmE4M2QzNTliNWE1YTg1YzY3N2M3ZGIuLjk3MTVkZGYwOTg5YTRm
MWVlZjc3YWIzOGRjYzc2MjIyYzliZWIzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVt
LmNwcApAQCAtODQsNiArODQsNyBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6c2V0VGlsZVNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICByZXNldCgpOwogCiAgICAgbV90aWxlU2l6ZSA9
IHNpemU7CisgICAgbV90aWxpbmdEYXRhLnNldE1heFRleHR1cmVTaXplKG1heChzaXplLndpZHRo
KCksIHNpemUuaGVpZ2h0KCkpKTsKIH0KIAogTGF5ZXJUZXh0dXJlKiBMYXllclRpbGVyQ2hyb21p
dW06OmdldFNpbmdsZVRleHR1cmUoKQpAQCAtMTg5LDEzICsxOTAsOSBAQCBJbnRSZWN0IExheWVy
VGlsZXJDaHJvbWl1bTo6dGlsZUNvbnRlbnRSZWN0KGNvbnN0IFRpbGUqIHRpbGUpIGNvbnN0CiBJ
bnRSZWN0IExheWVyVGlsZXJDaHJvbWl1bTo6dGlsZUxheWVyUmVjdChjb25zdCBUaWxlKiB0aWxl
KSBjb25zdAogewogICAgIGNvbnN0IGludCBpbmRleCA9IG1fdGlsaW5nRGF0YS50aWxlSW5kZXgo
dGlsZS0+aSgpLCB0aWxlLT5qKCkpOwotICAgIHJldHVybiBtX3RpbGluZ0RhdGEudGlsZUJvdW5k
c1dpdGhCb3JkZXIoaW5kZXgpOwotfQotCi1JbnRSZWN0IExheWVyVGlsZXJDaHJvbWl1bTo6dGls
ZVRleFJlY3QoY29uc3QgVGlsZSogdGlsZSkgY29uc3QKLXsKLSAgICBjb25zdCBpbnQgaW5kZXgg
PSBtX3RpbGluZ0RhdGEudGlsZUluZGV4KHRpbGUtPmkoKSwgdGlsZS0+aigpKTsKLSAgICByZXR1
cm4gbV90aWxpbmdEYXRhLnRpbGVCb3VuZHNXaXRoT3V0ZXJCb3JkZXIoaW5kZXgpOworICAgIElu
dFJlY3QgbGF5ZXJSZWN0ID0gbV90aWxpbmdEYXRhLnRpbGVCb3VuZHNXaXRoQm9yZGVyKGluZGV4
KTsKKyAgICBsYXllclJlY3Quc2V0U2l6ZShtX3RpbGVTaXplKTsKKyAgICByZXR1cm4gbGF5ZXJS
ZWN0OwogfQogCiB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6aW52YWxpZGF0ZVJlY3QoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QpCkBAIC0yMDMsOSArMjAwLDYgQEAgdm9pZCBMYXllclRpbGVy
Q2hyb21pdW06OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAg
IGlmIChjb250ZW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0RyYXcpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEludFNpemUgb2xkTGF5ZXJTaXplKG1fdGlsaW5nRGF0YS50b3RhbFNpemVYKCks
IG1fdGlsaW5nRGF0YS50b3RhbFNpemVZKCkpOwotICAgIGNvbnN0IEludFJlY3Qgb2xkTGF5ZXJS
ZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBvbGRMYXllclNpemUpOwotCiAgICAgZ3Jvd0xheWVy
VG9Db250YWluKGNvbnRlbnRSZWN0KTsKIAogICAgIC8vIERpcnR5IHJlY3RzIGFyZSBhbHdheXMg
aW4gbGF5ZXIgc3BhY2UsIGFzIHRoZSBsYXllciBjb3VsZCBiZSByZXBvc2l0aW9uZWQKQEAgLTIy
MiwxMiArMjE2LDYgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmludmFsaWRhdGVSZWN0KGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAgICAgICAgICAgSW50UmVjdCBib3VuZCA9IHRp
bGVMYXllclJlY3QodGlsZSk7CiAgICAgICAgICAgICBib3VuZC5pbnRlcnNlY3QobGF5ZXJSZWN0
KTsKICAgICAgICAgICAgIHRpbGUtPm1fZGlydHlMYXllclJlY3QudW5pdGUoYm91bmQpOwotCi0g
ICAgICAgICAgICAvLyBJbnZhbGlkYXRlIG9sZCBsYXllciBhcmVhIHRvIGNsZWFyIGFueSBjb250
ZW50cyBsZWZ0IGZyb20KLSAgICAgICAgICAgIC8vIHByZXZpb3VzIGxheWVyIHNpemUuCi0gICAg
ICAgICAgICBJbnRSZWN0IG9sZEJvdW5kID0gdGlsZUxheWVyUmVjdCh0aWxlKTsKLSAgICAgICAg
ICAgIG9sZEJvdW5kLmludGVyc2VjdChvbGRMYXllclJlY3QpOwotICAgICAgICAgICAgdGlsZS0+
bV9kaXJ0eUxheWVyUmVjdC51bml0ZShvbGRCb3VuZCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBA
IC0yODQsNyArMjcyLDYgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0
ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgTGF5ZXJUZXh0dXIKICAgICAvLyBDcmVhdGUg
dGlsZXMgYXMgbmVlZGVkLCBleHBhbmRpbmcgYSBkaXJ0eSByZWN0IHRvIGNvbnRhaW4gYWxsCiAg
ICAgLy8gdGhlIGRpcnR5IHJlZ2lvbnMgY3VycmVudGx5IGJlaW5nIGRyYXduLgogICAgIEludFJl
Y3QgZGlydHlMYXllclJlY3Q7Ci0gICAgSW50U2l6ZSB0aWxlU2l6ZTsKICAgICBpbnQgbGVmdCwg
dG9wLCByaWdodCwgYm90dG9tOwogICAgIGNvbnRlbnRSZWN0VG9UaWxlSW5kaWNlcyhjb250ZW50
UmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKICAgICBmb3IgKGludCBqID0gdG9wOyBq
IDw9IGJvdHRvbTsgKytqKSB7CkBAIC0yOTMsMTkgKzI4MCwxNiBAQCB2b2lkIExheWVyVGlsZXJD
aHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBMYXll
clRleHR1cgogICAgICAgICAgICAgaWYgKCF0aWxlKQogICAgICAgICAgICAgICAgIHRpbGUgPSBj
cmVhdGVUaWxlKGksIGopOwogCi0gICAgICAgICAgICBJbnRTaXplIHRleFNpemUgPSB0aWxlVGV4
UmVjdCh0aWxlKS5zaXplKCk7Ci0gICAgICAgICAgICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+aXNW
YWxpZCh0ZXhTaXplLCBtX3RleHR1cmVGb3JtYXQpKQorICAgICAgICAgICAgaWYgKCF0aWxlLT50
ZXh0dXJlKCktPmlzVmFsaWQobV90aWxlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KSkKICAgICAgICAg
ICAgICAgICB0aWxlLT5tX2RpcnR5TGF5ZXJSZWN0ID0gdGlsZUxheWVyUmVjdCh0aWxlKTsKIAot
ICAgICAgICAgICAgaWYgKCF0aWxlLT50ZXh0dXJlKCktPnJlc2VydmUodGV4U2l6ZSwgbV90ZXh0
dXJlRm9ybWF0KSkgeworICAgICAgICAgICAgaWYgKCF0aWxlLT50ZXh0dXJlKCktPnJlc2VydmUo
bV90aWxlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KSkgewogICAgICAgICAgICAgICAgIG1fc2tpcHNE
cmF3ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXNldCgpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZGlydHlMYXllclJlY3QudW5pdGUo
dGlsZS0+bV9kaXJ0eUxheWVyUmVjdCk7Ci0KLSAgICAgICAgICAgIHRpbGVTaXplID0gdGlsZVNp
emUuZXhwYW5kZWRUbyh0ZXhTaXplKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzE4LDcgKzMw
Miw3IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QsIExheWVyVGV4dHVyCiAgICAgaWYgKGRpcnR5TGF5ZXJSZWN0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdGV4dHVyZVVwZGF0ZXItPnByZXBhcmVU
b1VwZGF0ZShtX3BhaW50UmVjdCwgdGlsZVNpemUsIG1fdGlsaW5nRGF0YS5ib3JkZXJUZXhlbHMo
KSk7CisgICAgdGV4dHVyZVVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShtX3BhaW50UmVjdCwgbV90
aWxlU2l6ZSwgbV90aWxpbmdEYXRhLmJvcmRlclRleGVscygpKTsKIH0KIAogdm9pZCBMYXllclRp
bGVyQ2hyb21pdW06OnVwZGF0ZVJlY3QoTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0
ZXIpCkBAIC0zNDMsOCArMzI3LDcgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0ZVJl
Y3QoTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIpCiAKICAgICAgICAgICAgIC8v
IENhbGN1bGF0ZSBwYWdlLXNwYWNlIHJlY3RhbmdsZSB0byBjb3B5IGZyb20uCiAgICAgICAgICAg
ICBJbnRSZWN0IHNvdXJjZVJlY3QgPSB0aWxlQ29udGVudFJlY3QodGlsZSk7Ci0gICAgICAgICAg
ICBJbnRSZWN0IHRleFJlY3QgPSB0aWxlVGV4UmVjdCh0aWxlKTsKLSAgICAgICAgICAgIGNvbnN0
IEludFBvaW50IGFuY2hvciA9IHRleFJlY3QubG9jYXRpb24oKTsKKyAgICAgICAgICAgIGNvbnN0
IEludFBvaW50IGFuY2hvciA9IHNvdXJjZVJlY3QubG9jYXRpb24oKTsKICAgICAgICAgICAgIHNv
dXJjZVJlY3QuaW50ZXJzZWN0KGxheWVyUmVjdFRvQ29udGVudFJlY3QodGlsZS0+bV9kaXJ0eUxh
eWVyUmVjdCkpOwogICAgICAgICAgICAgLy8gUGFpbnQgcmVjdCBub3QgZ3VhcmFudGVlZCB0byBs
aW5lIHVwIG9uIHRpbGUgYm91bmRhcmllcywgc28KICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0
aGF0IHNvdXJjZVJlY3QgZG9lc24ndCBleHRlbmQgb3V0c2lkZSBvZiBpdC4KQEAgLTM5NCwxMiAr
Mzc3LDIyIEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3KGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hCiAgICAgaWYgKG1fc2tpcHNEcmF3IHx8
ICFtX3RpbGVzLnNpemUoKSB8fCBjb250ZW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIC8vIFVzZSBhbnRpLWFsaWFzaW5nIHByb2dyYW1zIHdoZW4gYm9yZGVyIHRleGVs
cyBhcmUgcHJlc2V0IGFuZCB0cmFuc2Zvcm0KKyAgICAvLyBpcyBub3QgYW4gaW50ZWdlciB0cmFu
c2xhdGlvbi4KKyAgICBib29sIHVzZUFBID0gKG1fdGlsaW5nRGF0YS5ib3JkZXJUZXhlbHMoKSAm
JiAhZ2xvYmFsVHJhbnNmb3JtLmlzSW50ZWdlclRyYW5zbGF0aW9uKCkpOworCiAgICAgc3dpdGNo
IChtX3NhbXBsZWRUZXhlbEZvcm1hdCkgewogICAgIGNhc2UgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
U2FtcGxlZFRleGVsRm9ybWF0UkdCQToKLSAgICAgICAgZHJhd1RpbGVzKGNvbnRlbnRSZWN0LCBn
bG9iYWxUcmFuc2Zvcm0sIG9wYWNpdHksIGxheWVyUmVuZGVyZXIoKS0+dGlsZXJQcm9ncmFtKCkp
OworICAgICAgICBpZiAodXNlQUEpCisgICAgICAgICAgICBkcmF3VGlsZXMoY29udGVudFJlY3Qs
IGdsb2JhbFRyYW5zZm9ybSwgb3BhY2l0eSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW1B
QSgpLCBsYXllclJlbmRlcmVyKCktPnRpbGVyUHJvZ3JhbUFBKCktPmZyYWdtZW50U2hhZGVyKCku
ZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpLCBsYXllclJlbmRlcmVyKCktPnRpbGVyUHJv
Z3JhbUFBKCktPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0aW9uKCkpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBkcmF3VGlsZXMoY29udGVudFJlY3QsIGdsb2JhbFRyYW5zZm9ybSwgb3Bh
Y2l0eSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW0oKSwgLTEsIC0xKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRC
R1JBOgotICAgICAgICBkcmF3VGlsZXMoY29udGVudFJlY3QsIGdsb2JhbFRyYW5zZm9ybSwgb3Bh
Y2l0eSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW1Td2l6emxlKCkpOworICAgICAgICBp
ZiAodXNlQUEpCisgICAgICAgICAgICBkcmF3VGlsZXMoY29udGVudFJlY3QsIGdsb2JhbFRyYW5z
Zm9ybSwgb3BhY2l0eSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW1Td2l6emxlQUEoKSwg
bGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW1Td2l6emxlQUEoKS0+ZnJhZ21lbnRTaGFkZXIo
KS5mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uKCksIGxheWVyUmVuZGVyZXIoKS0+dGlsZXJQ
cm9ncmFtU3dpenpsZUFBKCktPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0aW9uKCkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBkcmF3VGlsZXMoY29udGVudFJlY3QsIGdsb2JhbFRyYW5z
Zm9ybSwgb3BhY2l0eSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW1Td2l6emxlKCksIC0x
LCAtMSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtNDExLDE3ICs0MDQsNyBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6
Z3Jvd0xheWVyVG9Db250YWluKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAgIC8vIEdy
b3cgdGhlIHRpbGUgYXJyYXkgdG8gY29udGFpbiB0aGlzIGNvbnRlbnQgcmVjdC4KICAgICBJbnRS
ZWN0IGxheWVyUmVjdCA9IGNvbnRlbnRSZWN0VG9MYXllclJlY3QoY29udGVudFJlY3QpOwogICAg
IEludFNpemUgcmVjdFNpemUgPSBJbnRTaXplKGxheWVyUmVjdC5tYXhYKCksIGxheWVyUmVjdC5t
YXhZKCkpOwotICAgIEludFNpemUgdGV4U2l6ZSA9IG1fdGlsZVNpemU7Ci0KLSAgICAvLyBVc2Ug
cmVjdCB3aXRoIGJvcmRlciB0ZXhlbHMgYXMgbWF4IHRleHR1cmUgc2l6ZSB3aGVuIHRpbGUgc2l6
ZQotICAgIC8vIGhhcyBub3QgYmVlbiBzcGVjaWZpZWQuCi0gICAgaWYgKHRleFNpemUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIHRleFNpemUgPSByZWN0U2l6ZTsKLSAgICAgICAgaWYgKG1fdGlsaW5n
RGF0YS5ib3JkZXJUZXhlbHMoKSkKLSAgICAgICAgICAgIHRleFNpemUuZXhwYW5kKDIsIDIpOwot
ICAgIH0KIAotICAgIG1fdGlsaW5nRGF0YS5zZXRNYXhUZXh0dXJlU2l6ZShtYXgodGV4U2l6ZS53
aWR0aCgpLCB0ZXhTaXplLmhlaWdodCgpKSk7CiAgICAgSW50U2l6ZSBvbGRMYXllclNpemUobV90
aWxpbmdEYXRhLnRvdGFsU2l6ZVgoKSwgbV90aWxpbmdEYXRhLnRvdGFsU2l6ZVkoKSk7CiAgICAg
SW50U2l6ZSBuZXdTaXplID0gcmVjdFNpemUuZXhwYW5kZWRUbyhvbGRMYXllclNpemUpOwogICAg
IG1fdGlsaW5nRGF0YS5zZXRUb3RhbFNpemUobmV3U2l6ZS53aWR0aCgpLCBuZXdTaXplLmhlaWdo
dCgpKTsKQEAgLTQ1NywxNCArNDQwLDkgQEAgc3RhdGljIEZsb2F0UG9pbnQgaW50ZXJzZWN0KGNv
bnN0IEVkZ2UmIGEsIGNvbnN0IEVkZ2UmIGIpCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBUPgotdm9p
ZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGdsb2JhbFRyYW5zZm9ybSwgZmxvYXQgb3Bh
Y2l0eSwgY29uc3QgVCogcHJvZ3JhbSkKK3ZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGls
ZXMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBnbG9iYWxUcmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIGNvbnN0IFQqIHByb2dyYW0sIGludCBm
cmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uLCBpbnQgZWRnZUxvY2F0aW9uKQogewotICAgIEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKLSAgICBH
TEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKLSAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVy
KCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YWN0
aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKLQotICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IG1hdHJpeChnbG9iYWxUcmFuc2Zvcm0pOworICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IG1hdHJpeChsYXllclJlbmRlcmVyKCktPndpbmRvd01hdHJpeCgpICogbGF5ZXJSZW5k
ZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCkgKiBnbG9iYWxUcmFuc2Zvcm0pOwogCiAgICAgLy8g
V2UgZG9uJ3QgY2FyZSBhYm91dCBaIGNvbXBvbmVudC4KICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBtYXRyaXhYWVcgPQpAQCAtNDc4LDQ0ICs0NTYsNjUgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21p
dW06OmRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW52ZXJzZSA9
IG1hdHJpeFhZVy5pbnZlcnNlKCk7Ci0gICAgSW50UmVjdCBib3VuZHMobV9sYXllclBvc2l0aW9u
LCBJbnRTaXplKG1fdGlsaW5nRGF0YS50b3RhbFNpemVYKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fdGlsaW5nRGF0YS50b3RhbFNpemVZKCkpKTsKIAot
ICAgIC8vIEluY2x1ZGUgb3V0ZXIgYm9yZGVyIHRleGVscyBpbiBib3VuZHMuCi0gICAgYm91bmRz
LmluZmxhdGUobV90aWxpbmdEYXRhLmJvcmRlclRleGVscygpKTsKKyAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7CisgICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CisgICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJM
b2NhdGlvbigpLCAwKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiAKLSAgICAvLyBNYXAgYm91bmRzIHRvIGRl
dmljZSBzcGFjZS4KLSAgICBGbG9hdFF1YWQgYm91bmRzUXVhZCA9IG1hdHJpeC5tYXBRdWFkKEZs
b2F0UXVhZChib3VuZHMpKTsKKyAgICAvLyBNYXAgY29udGVudCByZWN0YW5nbGUgdG8gZGV2aWNl
IHNwYWNlLgorICAgIEZsb2F0UXVhZCBkZXZpY2VRdWFkID0gbWF0cml4Lm1hcFF1YWQoRmxvYXRR
dWFkKGNvbnRlbnRSZWN0KSk7CiAKICAgICAvLyBDb3VudGVyLWNsb2Nrd2lzZT8KLSAgICBmbG9h
dCBzaWduID0gaXNDQ1coYm91bmRzUXVhZCkgPyAtMSA6IDE7CisgICAgZmxvYXQgc2lnbiA9IGlz
Q0NXKGRldmljZVF1YWQpID8gLTEgOiAxOwogCiAgICAgLy8gQ29tcHV0ZSBvdXRlciBlZGdlcy4K
LSAgICBFZGdlIGxlZnRFZGdlID0gY29tcHV0ZUVkZ2UoYm91bmRzUXVhZC5wNCgpLCBib3VuZHNR
dWFkLnAxKCksIHNpZ24pOwotICAgIEVkZ2UgcmlnaHRFZGdlID0gY29tcHV0ZUVkZ2UoYm91bmRz
UXVhZC5wMigpLCBib3VuZHNRdWFkLnAzKCksIHNpZ24pOwotICAgIEVkZ2UgdG9wRWRnZSA9IGNv
bXB1dGVFZGdlKGJvdW5kc1F1YWQucDEoKSwgYm91bmRzUXVhZC5wMigpLCBzaWduKTsKLSAgICBF
ZGdlIGJvdHRvbUVkZ2UgPSBjb21wdXRlRWRnZShib3VuZHNRdWFkLnAzKCksIGJvdW5kc1F1YWQu
cDQoKSwgc2lnbik7Ci0KLSAgICAvLyBNb3ZlIG91dGVyIGVkZ2VzIHRvIGVuc3VyZSB0aGF0IGFs
bCBwYXJ0aWFsbHkgY292ZXJlZCBwaXhlbHMgYXJlCi0gICAgLy8gcHJvY2Vzc2VkLgotICAgIGZs
b2F0IHpEaXN0YW5jZSA9IG1fdGlsaW5nRGF0YS5ib3JkZXJUZXhlbHMoKSAqIDAuNWY7Ci0gICAg
bGVmdEVkZ2UubW92ZSgwLCAwLCB6RGlzdGFuY2UpOwotICAgIHJpZ2h0RWRnZS5tb3ZlKDAsIDAs
IHpEaXN0YW5jZSk7Ci0gICAgdG9wRWRnZS5tb3ZlKDAsIDAsIHpEaXN0YW5jZSk7Ci0gICAgYm90
dG9tRWRnZS5tb3ZlKDAsIDAsIHpEaXN0YW5jZSk7Ci0KLSAgICBHQzNEaW50IGZpbHRlciA9ICht
X3RpbGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkgJiYgIW1hdHJpeC5pc0ludGVnZXJUcmFuc2xhdGlv
bigpKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVB
UkVTVDsKKyAgICBFZGdlIGxlZnRFZGdlID0gY29tcHV0ZUVkZ2UoZGV2aWNlUXVhZC5wNCgpLCBk
ZXZpY2VRdWFkLnAxKCksIHNpZ24pOworICAgIEVkZ2UgcmlnaHRFZGdlID0gY29tcHV0ZUVkZ2Uo
ZGV2aWNlUXVhZC5wMigpLCBkZXZpY2VRdWFkLnAzKCksIHNpZ24pOworICAgIEVkZ2UgdG9wRWRn
ZSA9IGNvbXB1dGVFZGdlKGRldmljZVF1YWQucDEoKSwgZGV2aWNlUXVhZC5wMigpLCBzaWduKTsK
KyAgICBFZGdlIGJvdHRvbUVkZ2UgPSBjb21wdXRlRWRnZShkZXZpY2VRdWFkLnAzKCksIGRldmlj
ZVF1YWQucDQoKSwgc2lnbik7CisKKyAgICBpZiAoZWRnZUxvY2F0aW9uICE9IC0xKSB7CisgICAg
ICAvLyBNb3ZlIG91dGVyIGVkZ2VzIHRvIGVuc3VyZSB0aGF0IGFsbCBwYXJ0aWFsbHkgY292ZXJl
ZCBwaXhlbHMgYXJlCisgICAgICAvLyBwcm9jZXNzZWQuCisgICAgICBsZWZ0RWRnZS5tb3ZlKDAs
IDAsIDAuNWYpOworICAgICAgcmlnaHRFZGdlLm1vdmUoMCwgMCwgMC41Zik7CisgICAgICB0b3BF
ZGdlLm1vdmUoMCwgMCwgMC41Zik7CisgICAgICBib3R0b21FZGdlLm1vdmUoMCwgMCwgMC41Zik7
CisKKyAgICAgIGZsb2F0IGVkZ2VbMTJdOworICAgICAgZWRnZVswXSA9IGxlZnRFZGdlLngoKTsK
KyAgICAgIGVkZ2VbMV0gPSBsZWZ0RWRnZS55KCk7CisgICAgICBlZGdlWzJdID0gbGVmdEVkZ2Uu
eigpOworICAgICAgZWRnZVszXSA9IHRvcEVkZ2UueCgpOworICAgICAgZWRnZVs0XSA9IHRvcEVk
Z2UueSgpOworICAgICAgZWRnZVs1XSA9IHRvcEVkZ2UueigpOworICAgICAgZWRnZVs2XSA9IHJp
Z2h0RWRnZS54KCk7CisgICAgICBlZGdlWzddID0gcmlnaHRFZGdlLnkoKTsKKyAgICAgIGVkZ2Vb
OF0gPSByaWdodEVkZ2UueigpOworICAgICAgZWRnZVs5XSA9IGJvdHRvbUVkZ2UueCgpOworICAg
ICAgZWRnZVsxMF0gPSBib3R0b21FZGdlLnkoKTsKKyAgICAgIGVkZ2VbMTFdID0gYm90dG9tRWRn
ZS56KCk7CisgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTNmdihlZGdlTG9jYXRp
b24sIGVkZ2UsIDQpKTsKKyAgICB9CiAKICAgICBFZGdlIHByZXZFZGdlWSA9IHRvcEVkZ2U7CiAK
ICAgICBpbnQgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tOwogICAgIGNvbnRlbnRSZWN0VG9UaWxl
SW5kaWNlcyhjb250ZW50UmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKKyAgICBJbnRS
ZWN0IGxheWVyUmVjdCA9IGNvbnRlbnRSZWN0VG9MYXllclJlY3QoY29udGVudFJlY3QpOwogICAg
IGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAgRWRnZSBwcmV2
RWRnZVggPSBsZWZ0RWRnZTsKIAogICAgICAgICBFZGdlIGVkZ2VZID0gYm90dG9tRWRnZTsKICAg
ICAgICAgaWYgKGogPCAobV90aWxpbmdEYXRhLm51bVRpbGVzWSgpIC0gMSkpIHsKLSAgICAgICAg
ICAgIEludFJlY3QgdGlsZVJlY3QgPSBtX3RpbGluZ0RhdGEudGlsZUJvdW5kcyhtX3RpbGluZ0Rh
dGEudGlsZUluZGV4KDAsIGopKTsKKyAgICAgICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSB1bmlv
blJlY3QobV90aWxpbmdEYXRhLnRpbGVCb3VuZHMobV90aWxpbmdEYXRhLnRpbGVJbmRleCgwLCBq
KSksIG1fdGlsaW5nRGF0YS50aWxlQm91bmRzKG1fdGlsaW5nRGF0YS50aWxlSW5kZXgobV90aWxp
bmdEYXRhLm51bVRpbGVzWCgpIC0gMSwgaikpKTsKKyAgICAgICAgICAgIHRpbGVSZWN0LmludGVy
c2VjdChsYXllclJlY3QpOworCisgICAgICAgICAgICAvLyBTa2lwIGVtcHR5IHJvd3MuCisgICAg
ICAgICAgICBpZiAodGlsZVJlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCiAgICAgICAgICAgICB0aWxlUmVjdC5tb3ZlKG1fbGF5ZXJQb3NpdGlvbi54KCksIG1fbGF5
ZXJQb3NpdGlvbi55KCkpOwogCiAgICAgICAgICAgICBGbG9hdFBvaW50IHAxKHRpbGVSZWN0Lm1h
eFgoKSwgdGlsZVJlY3QubWF4WSgpKTsKQEAgLTUzNywyNyArNTM2LDU4IEBAIHZvaWQgTGF5ZXJU
aWxlckNocm9taXVtOjpkcmF3VGlsZXMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0CiAgICAgICAgICAgICBBU1NFUlQodGlsZS0+dGV4dHVyZSgpLT5pc1Jlc2Vy
dmVkKCkpOwogCiAgICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPmJpbmRUZXh0dXJlKCk7Ci0g
ICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRF
UiwgZmlsdGVyKSk7Ci0gICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfTUFHX0ZJTFRFUiwgZmlsdGVyKSk7CiAKICAgICAgICAgICAgIC8vIERvbid0IHVzZSB0
aWxlQ29udGVudFJlY3QgaGVyZSwgYXMgdGhhdCBjb250YWlucyB0aGUgZnVsbAogICAgICAgICAg
ICAgLy8gcmVjdCB3aXRoIGJvcmRlciB0ZXhlbHMgd2hpY2ggc2hvdWxkbid0IGJlIGRyYXduLgog
ICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IG1fdGlsaW5nRGF0YS50aWxlQm91bmRzKG1f
dGlsaW5nRGF0YS50aWxlSW5kZXgodGlsZS0+aSgpLCB0aWxlLT5qKCkpKTsKKyAgICAgICAgICAg
IEludFJlY3QgZGlzcGxheVJlY3QgPSB0aWxlUmVjdDsKKyAgICAgICAgICAgIHRpbGVSZWN0Lmlu
dGVyc2VjdChsYXllclJlY3QpOworCisgICAgICAgICAgICAvLyBLZWVwIHRyYWNrIG9mIGhvdyB0
aGUgdG9wIGxlZnQgaGFzIG1vdmVkLCBzbyB0aGUgdGV4dHVyZSBjYW4gYmUKKyAgICAgICAgICAg
IC8vIG9mZnNldCB0aGUgc2FtZSBhbW91bnQuCisgICAgICAgICAgICBJbnRTaXplIGRpc3BsYXlP
ZmZzZXQgPSB0aWxlUmVjdC5taW5YTWluWUNvcm5lcigpIC0gZGlzcGxheVJlY3QubWluWE1pbllD
b3JuZXIoKTsKKworICAgICAgICAgICAgLy8gU2tpcCBlbXB0eSB0aWxlcy4KKyAgICAgICAgICAg
IGlmICh0aWxlUmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKICAg
ICAgICAgICAgIHRpbGVSZWN0Lm1vdmUobV9sYXllclBvc2l0aW9uLngoKSwgbV9sYXllclBvc2l0
aW9uLnkoKSk7CiAKLSAgICAgICAgICAgIEludFBvaW50IHRleE9mZnNldCA9IG1fdGlsaW5nRGF0
YS50ZXh0dXJlT2Zmc2V0KCk7Ci0gICAgICAgICAgICBJbnRSZWN0IHRleFJlY3QgPSB0aWxlVGV4
UmVjdCh0aWxlKTsKLSAgICAgICAgICAgIGZsb2F0IHRpbGVXaWR0aCA9IHN0YXRpY19jYXN0PGZs
b2F0Pih0ZXhSZWN0LndpZHRoKCkpOwotICAgICAgICAgICAgZmxvYXQgdGlsZUhlaWdodCA9IHN0
YXRpY19jYXN0PGZsb2F0Pih0ZXhSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgICAgIGZsb2F0IHRl
eFRyYW5zbGF0ZVggPSAodGV4T2Zmc2V0LngoKSAtIHRpbGVSZWN0LngoKSkgLyB0aWxlV2lkdGg7
Ci0gICAgICAgICAgICBmbG9hdCB0ZXhUcmFuc2xhdGVZID0gKHRleE9mZnNldC55KCkgLSB0aWxl
UmVjdC55KCkpIC8gdGlsZUhlaWdodDsKLSAgICAgICAgICAgIGZsb2F0IHRleFNjYWxlWCA9IHRp
bGVSZWN0LndpZHRoKCkgLyB0aWxlV2lkdGg7Ci0gICAgICAgICAgICBmbG9hdCB0ZXhTY2FsZVkg
PSB0aWxlUmVjdC5oZWlnaHQoKSAvIHRpbGVIZWlnaHQ7CisgICAgICAgICAgICBGbG9hdFJlY3Qg
Y2xhbXBSZWN0KHRpbGVSZWN0KTsKKyAgICAgICAgICAgIC8vIENsYW1wIHRleHR1cmUgY29vcmRp
bmF0ZXMgdG8gYXZvaWQgc2FtcGxpbmcgb3V0c2lkZSB0aGUgbGF5ZXIKKyAgICAgICAgICAgIC8v
IGJ5IGRlZmxhdGluZyB0aGUgdGlsZSByZWdpb24gaGFsZiBhIHRleGVsIG9yIGhhbGYgYSB0ZXhl
bAorICAgICAgICAgICAgLy8gbWludXMgZXBzaWxvbiBmb3Igb25lIHBpeGVsIGxheWVycy4gVGhl
IHJlc3VsdGluZyBjbGFtcCByZWdpb24KKyAgICAgICAgICAgIC8vIGlzIG1hcHBlZCB0byB0aGUg
dW5pdCBzcXVhcmUgYnkgdGhlIHZlcnRleCBzaGFkZXIgYW5kIG1hcHBlZAorICAgICAgICAgICAg
Ly8gYmFjayB0byBub3JtYWxpemVkIHRleHR1cmUgY29vcmRpbmF0ZXMgYnkgdGhlIGZyYWdtZW50
IHNoYWRlcgorICAgICAgICAgICAgLy8gYWZ0ZXIgYmVpbmcgY2xhbXBlZCB0byAwLTEgcmFuZ2Uu
CisgICAgICAgICAgICBjb25zdCBmbG9hdCBlcHNpbG9uID0gMSAvIDEwMjQuMGY7CisgICAgICAg
ICAgICBmbG9hdCBjbGFtcFggPSBtaW4oMC41LCBjbGFtcFJlY3Qud2lkdGgoKSAvIDIuMCAtIGVw
c2lsb24pOworICAgICAgICAgICAgZmxvYXQgY2xhbXBZID0gbWluKDAuNSwgY2xhbXBSZWN0Lmhl
aWdodCgpIC8gMi4wIC0gZXBzaWxvbik7CisgICAgICAgICAgICBjbGFtcFJlY3QuaW5mbGF0ZVgo
LWNsYW1wWCk7CisgICAgICAgICAgICBjbGFtcFJlY3QuaW5mbGF0ZVkoLWNsYW1wWSk7CisgICAg
ICAgICAgICBGbG9hdFNpemUgY2xhbXBPZmZzZXQgPSBjbGFtcFJlY3QubWluWE1pbllDb3JuZXIo
KSAtIEZsb2F0UmVjdCh0aWxlUmVjdCkubWluWE1pbllDb3JuZXIoKTsKKworICAgICAgICAgICAg
RmxvYXRQb2ludCB0ZXhPZmZzZXQgPSBtX3RpbGluZ0RhdGEudGV4dHVyZU9mZnNldCh0aWxlLT5p
KCksIHRpbGUtPmooKSkgKyBjbGFtcE9mZnNldCArIEZsb2F0U2l6ZShkaXNwbGF5T2Zmc2V0KTsK
KyAgICAgICAgICAgIGZsb2F0IHRpbGVXaWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0PihtX3RpbGVT
aXplLndpZHRoKCkpOworICAgICAgICAgICAgZmxvYXQgdGlsZUhlaWdodCA9IHN0YXRpY19jYXN0
PGZsb2F0PihtX3RpbGVTaXplLmhlaWdodCgpKTsKKworICAgICAgICAgICAgLy8gTWFwIGNsYW1w
aW5nIHJlY3RhbmdsZSB0byB1bml0IHNxdWFyZS4KKyAgICAgICAgICAgIGZsb2F0IHZlcnRleFRl
eFRyYW5zbGF0ZVggPSAtY2xhbXBSZWN0LngoKSAvIGNsYW1wUmVjdC53aWR0aCgpOworICAgICAg
ICAgICAgZmxvYXQgdmVydGV4VGV4VHJhbnNsYXRlWSA9IC1jbGFtcFJlY3QueSgpIC8gY2xhbXBS
ZWN0LmhlaWdodCgpOworICAgICAgICAgICAgZmxvYXQgdmVydGV4VGV4U2NhbGVYID0gdGlsZVJl
Y3Qud2lkdGgoKSAvIGNsYW1wUmVjdC53aWR0aCgpOworICAgICAgICAgICAgZmxvYXQgdmVydGV4
VGV4U2NhbGVZID0gdGlsZVJlY3QuaGVpZ2h0KCkgLyBjbGFtcFJlY3QuaGVpZ2h0KCk7CisKKyAg
ICAgICAgICAgIC8vIE1hcCB0byBub3JtYWxpemVkIHRleHR1cmUgY29vcmRpbmF0ZXMuCisgICAg
ICAgICAgICBmbG9hdCBmcmFnbWVudFRleFRyYW5zbGF0ZVggPSB0ZXhPZmZzZXQueCgpIC8gdGls
ZVdpZHRoOworICAgICAgICAgICAgZmxvYXQgZnJhZ21lbnRUZXhUcmFuc2xhdGVZID0gdGV4T2Zm
c2V0LnkoKSAvIHRpbGVIZWlnaHQ7CisgICAgICAgICAgICBmbG9hdCBmcmFnbWVudFRleFNjYWxl
WCA9IGNsYW1wUmVjdC53aWR0aCgpIC8gdGlsZVdpZHRoOworICAgICAgICAgICAgZmxvYXQgZnJh
Z21lbnRUZXhTY2FsZVkgPSBjbGFtcFJlY3QuaGVpZ2h0KCkgLyB0aWxlSGVpZ2h0OworCiAgICAg
ICAgICAgICAvLyBPcGVuR0wgY29vcmRpbmF0ZSBzeXN0ZW0gaXMgYm90dG9tLXVwLgogICAgICAg
ICAgICAgLy8gSWYgdGlsZSB0ZXh0dXJlIGlzIHRvcC1kb3duLCB3ZSBuZWVkIHRvIGZsaXAgdGhl
IHRleHR1cmUgY29vcmRpbmF0ZXMuCiAgICAgICAgICAgICBpZiAobV90ZXh0dXJlT3JpZW50YXRp
b24gPT0gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VG9wRG93bk9yaWVudGF0aW9uKSB7Ci0gICAgICAg
ICAgICAgICAgdGV4VHJhbnNsYXRlWSA9IDEuMCAtIHRleFRyYW5zbGF0ZVk7Ci0gICAgICAgICAg
ICAgICAgdGV4U2NhbGVZICo9IC0xLjA7CisgICAgICAgICAgICAgICAgZnJhZ21lbnRUZXhUcmFu
c2xhdGVZID0gMS4wIC0gZnJhZ21lbnRUZXhUcmFuc2xhdGVZOworICAgICAgICAgICAgICAgIGZy
YWdtZW50VGV4U2NhbGVZICo9IC0xLjA7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEVk
Z2UgZWRnZVggPSByaWdodEVkZ2U7CkBAIC01ODUsNTMgKzYxNSw1MCBAQCB2b2lkIExheWVyVGls
ZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdAogICAgICAgICAgICAgLy8gTm9ybWFsaXplIHRvIHRpbGVSZWN0LgogICAgICAg
ICAgICAgcXVhZC5zY2FsZSgxLjBmIC8gdGlsZVJlY3Qud2lkdGgoKSwgMS4wZiAvIHRpbGVSZWN0
LmhlaWdodCgpKTsKIAotICAgICAgICAgICAgZHJhd1RleHR1cmVkUXVhZChjb250ZXh0LCBxdWFk
LCBsYXllclJlbmRlcmVyKCktPnByb2plY3Rpb25NYXRyaXgoKSwgbWF0cml4LCB0aWxlUmVjdC53
aWR0aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwgb3BhY2l0eSwgdGV4VHJhbnNsYXRlWCwgdGV4VHJh
bnNsYXRlWSwgdGV4U2NhbGVYLCB0ZXhTY2FsZVksIHByb2dyYW0pOworICAgICAgICAgICAgaWYg
KGZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24gPT0gLTEpIHsKKyAgICAgICAgICAgICAgLy8g
TW92ZSBmcmFnbWVudCBzaGFkZXIgdHJhbnNmb3JtIHRvIHZlcnRleCBzaGFkZXIuIFdlIGNhbiBk
bworICAgICAgICAgICAgICAvLyB0aGlzIHdoaWxlIHN0aWxsIHByb2R1Y2luZyBjb3JyZWN0IHJl
c3VsdHMgYXMKKyAgICAgICAgICAgICAgLy8gZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbiBz
aG91bGQgYWx3YXlzIGJlIG5vbi1uZWdhdGl2ZQorICAgICAgICAgICAgICAvLyB3aGVuIHRpbGVz
IGFyZSB0cmFuc2Zvcm1lZCBpbiBhIHdheSB0aGF0IGNvdWxkIHJlc3VsdCBpbgorICAgICAgICAg
ICAgICAvLyBzYW1wbGluZyBvdXRzaWRlIHRoZSBsYXllci4KKyAgICAgICAgICAgICAgdmVydGV4
VGV4U2NhbGVYICo9IGZyYWdtZW50VGV4U2NhbGVYOworICAgICAgICAgICAgICB2ZXJ0ZXhUZXhT
Y2FsZVkgKj0gZnJhZ21lbnRUZXhTY2FsZVk7CisgICAgICAgICAgICAgIHZlcnRleFRleFRyYW5z
bGF0ZVggKj0gZnJhZ21lbnRUZXhTY2FsZVg7CisgICAgICAgICAgICAgIHZlcnRleFRleFRyYW5z
bGF0ZVkgKj0gZnJhZ21lbnRUZXhTY2FsZVk7CisgICAgICAgICAgICAgIHZlcnRleFRleFRyYW5z
bGF0ZVggKz0gZnJhZ21lbnRUZXhUcmFuc2xhdGVYOworICAgICAgICAgICAgICB2ZXJ0ZXhUZXhU
cmFuc2xhdGVZICs9IGZyYWdtZW50VGV4VHJhbnNsYXRlWTsKKyAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtNGYoZnJhZ21lbnRU
ZXhUcmFuc2Zvcm1Mb2NhdGlvbiwgZnJhZ21lbnRUZXhUcmFuc2xhdGVYLCBmcmFnbWVudFRleFRy
YW5zbGF0ZVksIGZyYWdtZW50VGV4U2NhbGVYLCBmcmFnbWVudFRleFNjYWxlWSkpOworCisgICAg
ICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTRmKHByb2dyYW0tPnZlcnRleFNo
YWRlcigpLnZlcnRleFRleFRyYW5zZm9ybUxvY2F0aW9uKCksIHZlcnRleFRleFRyYW5zbGF0ZVgs
IHZlcnRleFRleFRyYW5zbGF0ZVksIHZlcnRleFRleFNjYWxlWCwgdmVydGV4VGV4U2NhbGVZKSk7
CisKKyAgICAgICAgICAgIGZsb2F0IHBvaW50WzhdOworICAgICAgICAgICAgcG9pbnRbMF0gPSBx
dWFkLnAxKCkueCgpOworICAgICAgICAgICAgcG9pbnRbMV0gPSBxdWFkLnAxKCkueSgpOworICAg
ICAgICAgICAgcG9pbnRbMl0gPSBxdWFkLnAyKCkueCgpOworICAgICAgICAgICAgcG9pbnRbM10g
PSBxdWFkLnAyKCkueSgpOworICAgICAgICAgICAgcG9pbnRbNF0gPSBxdWFkLnAzKCkueCgpOwor
ICAgICAgICAgICAgcG9pbnRbNV0gPSBxdWFkLnAzKCkueSgpOworICAgICAgICAgICAgcG9pbnRb
Nl0gPSBxdWFkLnA0KCkueCgpOworICAgICAgICAgICAgcG9pbnRbN10gPSBxdWFkLnA0KCkueSgp
OworICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0yZnYocHJvZ3JhbS0+
dmVydGV4U2hhZGVyKCkucG9pbnRMb2NhdGlvbigpLCBwb2ludCwgNCkpOworCisgICAgICAgICAg
ICBMYXllckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKGNvbnRleHQsIGxheWVyUmVuZGVyZXIo
KS0+cHJvamVjdGlvbk1hdHJpeCgpLCBnbG9iYWxUcmFuc2Zvcm0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVSZWN0LndpZHRoKCksIHRpbGVSZWN0Lmhl
aWdodCgpLCBvcGFjaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFnbWVudFNoYWRl
cigpLmFscGhhTG9jYXRpb24oKSk7CiAKICAgICAgICAgICAgIHByZXZFZGdlWCA9IGVkZ2VYOwor
ICAgICAgICAgICAgLy8gUmV2ZXJzZSBkaXJlY3Rpb24uCisgICAgICAgICAgICBwcmV2RWRnZVgu
c2NhbGUoLTEsIC0xLCAtMSk7CiAgICAgICAgIH0KIAogICAgICAgICBwcmV2RWRnZVkgPSBlZGdl
WTsKKyAgICAgICAgLy8gUmV2ZXJzZSBkaXJlY3Rpb24uCisgICAgICAgIHByZXZFZGdlWS5zY2Fs
ZSgtMSwgLTEsIC0xKTsKICAgICB9CiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBUPgotdm9pZCBMYXll
clRpbGVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBy
b2plY3Rpb25NYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgd2lkdGgsIGZs
b2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsb2F0IHRleFRyYW5zbGF0ZVgsIGZsb2F0IHRleFRyYW5zbGF0ZVksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0ZXhTY2FsZVgs
IGZsb2F0IHRleFNjYWxlWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFQqIHByb2dyYW0pCi17Ci0gICAgc3RhdGljIGZsb2F0IGdsTWF0cml4WzE2XTsK
LQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlbmRlck1hdHJpeCA9IGRyYXdNYXRyaXg7Ci0K
LSAgICAvLyBBcHBseSBhIHNjYWxpbmcgZmFjdG9yIHRvIHNpemUgdGhlIHF1YWQgZnJvbSAxeDEg
dG8gaXRzIGludGVuZGVkIHNpemUuCi0gICAgcmVuZGVyTWF0cml4LnNjYWxlM2Qod2lkdGgsIGhl
aWdodCwgMSk7Ci0KLSAgICAvLyBBcHBseSB0aGUgcHJvamVjdGlvbiBtYXRyaXggYmVmb3JlIHNl
bmRpbmcgdGhlIHRyYW5zZm9ybSBvdmVyIHRvIHRoZSBzaGFkZXIuCi0gICAgTGF5ZXJDaHJvbWl1
bTo6dG9HTE1hdHJpeCgmZ2xNYXRyaXhbMF0sIHByb2plY3Rpb25NYXRyaXggKiByZW5kZXJNYXRy
aXgpOwotCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYocHJvZ3Jh
bS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwgZmFsc2UsICZnbE1hdHJpeFswXSwg
MSkpOwotCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xZihwcm9ncmFtLT5mcmFn
bWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSwgb3BhY2l0eSkpOwotCi0gICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPnVuaWZvcm00Zihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS50ZXhUcmFuc2Zv
cm1Mb2NhdGlvbigpLAotICAgICAgICB0ZXhUcmFuc2xhdGVYLCB0ZXhUcmFuc2xhdGVZLCB0ZXhT
Y2FsZVgsIHRleFNjYWxlWSkpOwotCi0gICAgZmxvYXQgcG9pbnRbOF07Ci0gICAgcG9pbnRbMF0g
PSBxdWFkLnAxKCkueCgpOwotICAgIHBvaW50WzFdID0gcXVhZC5wMSgpLnkoKTsKLSAgICBwb2lu
dFsyXSA9IHF1YWQucDIoKS54KCk7Ci0gICAgcG9pbnRbM10gPSBxdWFkLnAyKCkueSgpOwotICAg
IHBvaW50WzRdID0gcXVhZC5wMygpLngoKTsKLSAgICBwb2ludFs1XSA9IHF1YWQucDMoKS55KCk7
Ci0gICAgcG9pbnRbNl0gPSBxdWFkLnA0KCkueCgpOwotICAgIHBvaW50WzddID0gcXVhZC5wNCgp
LnkoKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTJmdihwcm9ncmFtLT52ZXJ0
ZXhTaGFkZXIoKS5wb2ludExvY2F0aW9uKCksIHBvaW50LCA0KSk7Ci0KLSAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+ZHJhd0VsZW1lbnRzKEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRVMsIDYs
IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVCwgMCkpOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRpbGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oCmluZGV4IDQ4ZjRmOWYyMDhkMzdmY2RiOWEyZWNiZDRl
ZTM5NTMwNTc1ODhiMWYuLmI0NTViYTI0NzJkMDZiYjY5MzU4OWRhMGNkMjRmMzcwMWEzNmQ2MTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyVGlsZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oCkBAIC03NSwxMCArNzUsMTQgQEAgcHVibGlj
OgogICAgIC8vIHJlY3ljbGVkIGJ5IHRoZSB0ZXh0dXJlIG1hbmFnZXIuCiAgICAgdm9pZCBwcm90
ZWN0VGlsZVRleHR1cmVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKIAotICAgIHR5cGVk
ZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUXVhZCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4
QWxwaGE+IFByb2dyYW07CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJU
aWxlLCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYT4gUHJvZ3JhbTsKICAgICAvLyBTaGFkZXIg
cHJvZ3JhbSB0aGF0IHN3YXBzIHJlZCBhbmQgYmx1ZSBjb21wb25lbnRzIG9mIHRleHR1cmUuCiAg
ICAgLy8gVXNlZCB3aGVuIHRleHR1cmUgZm9ybWF0IGRvZXMgbm90IG1hdGNoIG5hdGl2ZSBjb2xv
ciBmb3JtYXQuCi0gICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJRdWFkLCBG
cmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGE+IFByb2dyYW1Td2l6emxlOworICAgIHR5
cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyVGlsZSwgRnJhZ21lbnRTaGFkZXJSR0JB
VGV4U3dpenpsZUFscGhhPiBQcm9ncmFtU3dpenpsZTsKKworICAgIC8vIFNoYWRlciBwcm9ncmFt
IHRoYXQgcHJvZHVjZXMgYW50aS1hbGlhc2VkIGxheWVyIGVkZ2VzLgorICAgIHR5cGVkZWYgUHJv
Z3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyVGlsZSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFB
QT4gUHJvZ3JhbUFBOworICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyVGls
ZSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhhQUE+IFByb2dyYW1Td2l6emxlQUE7
CiAKICAgICAvLyBJZiB0aGlzIHRpbGVyIGhhcyBleGFjdGx5IG9uZSB0aWxlLCByZXR1cm4gaXRz
IHRleHR1cmUuIE90aGVyd2lzZSwgbnVsbC4KICAgICBMYXllclRleHR1cmUqIGdldFNpbmdsZVRl
eHR1cmUoKTsKQEAgLTExMCwxNCArMTE0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIERyYXcgYWxs
IHRpbGVzIHRoYXQgaW50ZXJzZWN0IHdpdGggY29udGVudFJlY3QuCiAgICAgdGVtcGxhdGUgPGNs
YXNzIFQ+Ci0gICAgdm9pZCBkcmF3VGlsZXMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgVCogcHJvZ3Jh
bSk7Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICB2b2lkIGRyYXdUZXh0dXJlZFF1YWQo
R3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBGbG9hdFF1YWQmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRy
YXdNYXRyaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQsIGZsb2F0IG9wYWNpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRl
eFRyYW5zbGF0ZVgsIGZsb2F0IHRleFRyYW5zbGF0ZVksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0IHRleFNjYWxlWCwgZmxvYXQgdGV4U2NhbGVZLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUKiBwcm9ncmFtKTsKKyAgICB2b2lkIGRyYXdUaWxlcyhjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFj
aXR5LCBjb25zdCBUKiBwcm9ncmFtLCBpbnQgZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbiwg
aW50IGVkZ2VMb2NhdGlvbik7CiAKICAgICAvLyBHcm93IGxheWVyIHNpemUgdG8gY29udGFpbiB0
aGlzIHJlY3RhbmdsZS4KICAgICB2b2lkIGdyb3dMYXllclRvQ29udGFpbihjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCk7CkBAIC0xMzUsNyArMTMyLDYgQEAgcHJpdmF0ZToKICAgICBUaWxlKiB0
aWxlQXQoaW50LCBpbnQpIGNvbnN0OwogICAgIEludFJlY3QgdGlsZUNvbnRlbnRSZWN0KGNvbnN0
IFRpbGUqKSBjb25zdDsKICAgICBJbnRSZWN0IHRpbGVMYXllclJlY3QoY29uc3QgVGlsZSopIGNv
bnN0OwotICAgIEludFJlY3QgdGlsZVRleFJlY3QoY29uc3QgVGlsZSopIGNvbnN0OwogCiAgICAg
R0MzRGVudW0gbV90ZXh0dXJlRm9ybWF0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAKaW5kZXgg
NTBkZTgwNDdkMWI3YjlkMTNmZjcxOTYzOGMzNjIwZWI1ZmE2OWRhYi4uY2ExMzg3Zjc3ZmM3OGU0
NjFmZWZkZjU4OWY3ODZhNmE1MjhmZDQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcApAQCAt
MTUwLDI5ICsxNTAsMjkgQEAgU3RyaW5nIFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybTo6Z2V0
U2hhZGVyU3RyaW5nKCkgY29uc3QKICAgICApOwogfQogCi1WZXJ0ZXhTaGFkZXJRdWFkOjpWZXJ0
ZXhTaGFkZXJRdWFkKCkKK1ZlcnRleFNoYWRlclRpbGU6OlZlcnRleFNoYWRlclRpbGUoKQogICAg
IDogbV9tYXRyaXhMb2NhdGlvbigtMSkKLSAgICAsIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24oLTEp
CiAgICAgLCBtX3BvaW50TG9jYXRpb24oLTEpCisgICAgLCBtX3ZlcnRleFRleFRyYW5zZm9ybUxv
Y2F0aW9uKC0xKQogewogfQogCi12b2lkIFZlcnRleFNoYWRlclF1YWQ6OmluaXQoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCit2b2lkIFZlcnRleFNoYWRlclRp
bGU6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCiB7
CiAgICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCAibWF0cml4Iik7Ci0gICAgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGNvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4VHJhbnNmb3JtIik7CiAgICAgbV9wb2ludExv
Y2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJwb2ludCIpOwot
ICAgIEFTU0VSVChtX21hdHJpeExvY2F0aW9uICE9IC0xICYmIG1fdGV4VHJhbnNmb3JtTG9jYXRp
b24gIT0gLTEgJiYgbV9wb2ludExvY2F0aW9uICE9IC0xKTsKKyAgICBtX3ZlcnRleFRleFRyYW5z
Zm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ2ZXJ0
ZXhUZXhUcmFuc2Zvcm0iKTsKKyAgICBBU1NFUlQobV9tYXRyaXhMb2NhdGlvbiAhPSAtMSAmJiBt
X3BvaW50TG9jYXRpb24gIT0gLTEgJiYgbV92ZXJ0ZXhUZXhUcmFuc2Zvcm1Mb2NhdGlvbiAhPSAt
MSk7CiB9CiAKLVN0cmluZyBWZXJ0ZXhTaGFkZXJRdWFkOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25z
dAorU3RyaW5nIFZlcnRleFNoYWRlclRpbGU6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFNIQURFUigKICAgICAgICAgYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKICAg
ICAgICAgYXR0cmlidXRlIHZlYzIgYV90ZXhDb29yZDsKICAgICAgICAgdW5pZm9ybSBtYXQ0IG1h
dHJpeDsKLSAgICAgICAgdW5pZm9ybSB2ZWM0IHRleFRyYW5zZm9ybTsKICAgICAgICAgdW5pZm9y
bSB2ZWMyIHBvaW50WzRdOworICAgICAgICB1bmlmb3JtIHZlYzQgdmVydGV4VGV4VHJhbnNmb3Jt
OwogICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKICAgICAgICAgdm9pZCBtYWluKCkK
ICAgICAgICAgewpAQCAtMTgzLDcgKzE4Myw3IEBAIFN0cmluZyBWZXJ0ZXhTaGFkZXJRdWFkOjpn
ZXRTaGFkZXJTdHJpbmcoKSBjb25zdAogICAgICAgICAgICAgcG9zLnh5ICs9IChhX3RleENvb3Jk
LnggKiBhX3RleENvb3JkLnkpICogcG9pbnRbMl07CiAgICAgICAgICAgICBwb3MueHkgKz0gKGNv
bXBsZW1lbnQueCAqIGFfdGV4Q29vcmQueSkgKiBwb2ludFszXTsKICAgICAgICAgICAgIGdsX1Bv
c2l0aW9uID0gbWF0cml4ICogcG9zOwotICAgICAgICAgICAgdl90ZXhDb29yZCA9IHBvcy54eSAq
IHRleFRyYW5zZm9ybS56dyArIHRleFRyYW5zZm9ybS54eTsKKyAgICAgICAgICAgIHZfdGV4Q29v
cmQgPSBwb3MueHkgKiB2ZXJ0ZXhUZXhUcmFuc2Zvcm0uencgKyB2ZXJ0ZXhUZXhUcmFuc2Zvcm0u
eHk7CiAgICAgICAgIH0KICAgICApOwogfQpAQCAtMjQ3LDYgKzI0Nyw3MCBAQCBTdHJpbmcgRnJh
Z21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhhOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAog
ICAgICk7CiB9CiAKK0ZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmc6OkZyYWdtZW50VGV4QWxwaGFB
QUJpbmRpbmcoKQorICAgIDogbV9zYW1wbGVyTG9jYXRpb24oLTEpCisgICAgLCBtX2FscGhhTG9j
YXRpb24oLTEpCisgICAgLCBtX2ZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24oLTEpCisgICAg
LCBtX2VkZ2VMb2NhdGlvbigtMSkKK3sKK30KKwordm9pZCBGcmFnbWVudFRleEFscGhhQUFCaW5k
aW5nOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQor
eworICAgIG1fc2FtcGxlckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sICJzX3RleHR1cmUiKTsKKyAgICBtX2FscGhhTG9jYXRpb24gPSBjb250ZXh0LT5nZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImFscGhhIik7CisgICAgbV9mcmFnbWVudFRleFRyYW5z
Zm9ybUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJmcmFn
bWVudFRleFRyYW5zZm9ybSIpOworICAgIG1fZWRnZUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0sICJlZGdlIik7CisKKyAgICBBU1NFUlQobV9zYW1wbGVyTG9j
YXRpb24gIT0gLTEgJiYgbV9hbHBoYUxvY2F0aW9uICE9IC0xICYmIG1fZnJhZ21lbnRUZXhUcmFu
c2Zvcm1Mb2NhdGlvbiAhPSAtMSAmJiBtX2VkZ2VMb2NhdGlvbiAhPSAtMSk7Cit9CisKK1N0cmlu
ZyBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAor
eworICAgIHJldHVybiBTSEFERVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owor
ICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBzYW1wbGVy
MkQgc190ZXh0dXJlOworICAgICAgICB1bmlmb3JtIGZsb2F0IGFscGhhOworICAgICAgICB1bmlm
b3JtIHZlYzQgZnJhZ21lbnRUZXhUcmFuc2Zvcm07CisgICAgICAgIHVuaWZvcm0gdmVjMyBlZGdl
WzRdOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICB2ZWMyIHRl
eENvb3JkID0gY2xhbXAodl90ZXhDb29yZCwgMC4wLCAxLjApICogZnJhZ21lbnRUZXhUcmFuc2Zv
cm0uencgKyBmcmFnbWVudFRleFRyYW5zZm9ybS54eTsKKyAgICAgICAgICAgIHZlYzQgdGV4Q29s
b3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB0ZXhDb29yZCk7CisgICAgICAgICAgICB2ZWMzIHBv
cyA9IHZlYzMoZ2xfRnJhZ0Nvb3JkLnh5LCAxKTsKKyAgICAgICAgICAgIGZsb2F0IGEwID0gY2xh
bXAoZG90KGVkZ2VbMF0sIHBvcyksIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIGZsb2F0IGExID0g
Y2xhbXAoZG90KGVkZ2VbMV0sIHBvcyksIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIGZsb2F0IGEy
ID0gY2xhbXAoZG90KGVkZ2VbMl0sIHBvcyksIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIGZsb2F0
IGEzID0gY2xhbXAoZG90KGVkZ2VbM10sIHBvcyksIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIGds
X0ZyYWdDb2xvciA9IHRleENvbG9yICogYWxwaGEgKiBtaW4oYTAsIGEyKSAqIG1pbihhMSwgYTMp
OworICAgICAgICB9CisgICAgKTsKK30KKworU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleFN3
aXp6bGVBbHBoYUFBOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBTSEFE
RVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB2YXJ5aW5nIHZl
YzIgdl90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOworICAg
ICAgICB1bmlmb3JtIGZsb2F0IGFscGhhOworICAgICAgICB1bmlmb3JtIHZlYzQgZnJhZ21lbnRU
ZXhUcmFuc2Zvcm07CisgICAgICAgIHVuaWZvcm0gdmVjMyBlZGdlWzRdOworICAgICAgICB2b2lk
IG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICB2ZWMyIHRleENvb3JkID0gY2xhbXAodl90
ZXhDb29yZCwgMC4wLCAxLjApICogZnJhZ21lbnRUZXhUcmFuc2Zvcm0uencgKyBmcmFnbWVudFRl
eFRyYW5zZm9ybS54eTsKKyAgICAgICAgICAgIHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190
ZXh0dXJlLCB0ZXhDb29yZCk7CisgICAgICAgICAgICB2ZWMzIHBvcyA9IHZlYzMoZ2xfRnJhZ0Nv
b3JkLnh5LCAxKTsKKyAgICAgICAgICAgIGZsb2F0IGEwID0gY2xhbXAoZG90KGVkZ2VbMF0sIHBv
cyksIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIGZsb2F0IGExID0gY2xhbXAoZG90KGVkZ2VbMV0s
IHBvcyksIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIGZsb2F0IGEyID0gY2xhbXAoZG90KGVkZ2Vb
Ml0sIHBvcyksIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIGZsb2F0IGEzID0gY2xhbXAoZG90KGVk
Z2VbM10sIHBvcyksIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
dGV4Q29sb3IueiwgdGV4Q29sb3IueSwgdGV4Q29sb3IueCwgdGV4Q29sb3IudykgKiBhbHBoYSAq
IG1pbihhMCwgYTIpICogbWluKGExLCBhMyk7CisgICAgICAgIH0KKyAgICApOworfQorCiBGcmFn
bWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2s6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFz
aygpCiAgICAgOiBtX3NhbXBsZXJMb2NhdGlvbigtMSkKICAgICAsIG1fbWFza1NhbXBsZXJMb2Nh
dGlvbigtMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NoYWRlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCmluZGV4IGNmYzYxMWE2NDk1YjExZTFhOWY0NTVl
YTNmOWUxYmVmYWRlODk1MTkuLjEyMDhkM2Y1ZDc0OTJjMGFkYTY0OTk1OGI3NzM4MzQ2NDdlNzQz
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1NoYWRlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaApAQCAtOTYsMjEgKzk2LDIxIEBAIHByaXZhdGU6CiAg
ICAgaW50IG1fdGV4VHJhbnNmb3JtTG9jYXRpb247CiB9OwogCi1jbGFzcyBWZXJ0ZXhTaGFkZXJR
dWFkIHsKK2NsYXNzIFZlcnRleFNoYWRlclRpbGUgewogcHVibGljOgotICAgIFZlcnRleFNoYWRl
clF1YWQoKTsKKyAgICBWZXJ0ZXhTaGFkZXJUaWxlKCk7CiAKICAgICB2b2lkIGluaXQoR3JhcGhp
Y3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3Ry
aW5nKCkgY29uc3Q7CiAKICAgICBpbnQgbWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X21hdHJpeExvY2F0aW9uOyB9Ci0gICAgaW50IHRleFRyYW5zZm9ybUxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsgfQogICAgIGludCBwb2ludExvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9wb2ludExvY2F0aW9uOyB9CisgICAgaW50IHZlcnRleFRleFRy
YW5zZm9ybUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhUZXhUcmFuc2Zvcm1Mb2Nh
dGlvbjsgfQogCiBwcml2YXRlOgogICAgIGludCBtX21hdHJpeExvY2F0aW9uOwotICAgIGludCBt
X3RleFRyYW5zZm9ybUxvY2F0aW9uOwogICAgIGludCBtX3BvaW50TG9jYXRpb247CisgICAgaW50
IG1fdmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb247CiB9OwogCiBjbGFzcyBGcmFnbWVudFRleEFs
cGhhQmluZGluZyB7CkBAIC0xNDIsNiArMTQyLDM0IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0
U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiB9OwogCitjbGFzcyBGcmFnbWVudFRleEFscGhhQUFCaW5k
aW5nIHsKK3B1YmxpYzoKKyAgICBGcmFnbWVudFRleEFscGhhQUFCaW5kaW5nKCk7CisKKyAgICB2
b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICBpbnQg
YWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxwaGFMb2NhdGlvbjsgfQorICAgIGlu
dCBzYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZXJMb2NhdGlvbjsgfQor
ICAgIGludCBmcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9m
cmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uOyB9CisgICAgaW50IGVkZ2VMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZWRnZUxvY2F0aW9uOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fc2Ft
cGxlckxvY2F0aW9uOworICAgIGludCBtX2FscGhhTG9jYXRpb247CisgICAgaW50IG1fZnJhZ21l
bnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbjsKKyAgICBpbnQgbV9lZGdlTG9jYXRpb247Cit9OworCitj
bGFzcyBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBIDogcHVibGljIEZyYWdtZW50VGV4QWxw
aGFBQUJpbmRpbmcgeworcHVibGljOgorICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25z
dDsKK307CisKKy8vIFN3aXp6bGVzIHRoZSByZWQgYW5kIGJsdWUgY29tcG9uZW50IG9mIHNhbXBs
ZWQgdGV4ZWwuCitjbGFzcyBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGFBQSA6IHB1
YmxpYyBGcmFnbWVudFRleEFscGhhQUFCaW5kaW5nIHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgZ2V0
U2hhZGVyU3RyaW5nKCkgY29uc3Q7Cit9OworCiBjbGFzcyBGcmFnbWVudFNoYWRlclJHQkFUZXhB
bHBoYU1hc2sgewogcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzaygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggM2U5ZTZkZDA0OGYyMjE1ZDI4
OTQ5MTc1OTM0MWQ3ZTM3NmJjMGQyNy4uNTY3NWNlYTEzYTZlYmRhYzFkOWNiM2FhNGUyZmZjYzU0
OWEwNGViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0zOCw3ICszOCw3
IEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKIC8vIFN0YXJ0IHRpbGluZyB3aGVu
IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGEgbGF5ZXIgYXJlIGxhcmdlciB0aGFuIHRoaXMgc2l6
ZS4KLXN0YXRpYyBpbnQgbWF4VW50aWxlZFNpemUgPSA1MTA7CitzdGF0aWMgaW50IG1heFVudGls
ZWRTaXplID0gNTEyOwogCiAvLyBXaGVuIHRpbGluZyBpcyBlbmFibGVkLCB1c2UgdGlsZXMgb2Yg
dGhpcyBkaW1lbnNpb24gc3F1YXJlZC4KIHN0YXRpYyBpbnQgZGVmYXVsdFRpbGVTaXplID0gMjU2
OwpAQCAtNTAsNyArNTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBUaWxlZExheWVyQ2hyb21p
dW06OlRpbGVkTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQogICAg
IDogTGF5ZXJDaHJvbWl1bShvd25lcikKICAgICAsIG1fdGlsaW5nT3B0aW9uKEF1dG9UaWxlKQot
ICAgICwgbV9ib3JkZXJUZXhlbHModHJ1ZSkKIHsKIH0KIApAQCAtODAsNyArNzksNyBAQCB2b2lk
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKQogICAg
IGlmICghbV90aWxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgSW50U2l6ZSB0aWxl
U2l6ZShkZWZhdWx0VGlsZVNpemUsIGRlZmF1bHRUaWxlU2l6ZSk7CisgICAgY29uc3QgSW50U2l6
ZSB0aWxlU2l6ZShtaW4oZGVmYXVsdFRpbGVTaXplLCBjb250ZW50Qm91bmRzKCkud2lkdGgoKSks
IG1pbihkZWZhdWx0VGlsZVNpemUsIGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSkpOwogCiAgICAg
Ly8gVGlsZSBpZiBib3RoIGRpbWVuc2lvbnMgbGFyZ2UsIG9yIGFueSBvbmUgZGltZW5zaW9uIGxh
cmdlIGFuZCB0aGUgb3RoZXIKICAgICAvLyBleHRlbmRzIGludG8gYSBzZWNvbmQgdGlsZS4gVGhp
cyBoZXVyaXN0aWMgYWxsb3dzIGZvciBsb25nIHNraW5ueSBsYXllcnMKQEAgLTk3LDggKzk2LDcg
QEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9u
KCkKICAgICBlbHNlCiAgICAgICAgIGlzVGlsZWQgPSBhdXRvVGlsZWQ7CiAKLSAgICAvLyBFbXB0
eSB0aWxlIHNpemUgdGVsbHMgdGhlIHRpbGVyIHRvIGF2b2lkIHRpbGluZy4KLSAgICBJbnRTaXpl
IHJlcXVlc3RlZFNpemUgPSBpc1RpbGVkID8gdGlsZVNpemUgOiBJbnRTaXplKCk7CisgICAgSW50
U2l6ZSByZXF1ZXN0ZWRTaXplID0gaXNUaWxlZCA/IHRpbGVTaXplIDogY29udGVudEJvdW5kcygp
OwogICAgIGNvbnN0IGludCBtYXhTaXplID0gbGF5ZXJSZW5kZXJlcigpLT5tYXhUZXh0dXJlU2l6
ZSgpOwogICAgIEludFNpemUgY2xhbXBlZFNpemUgPSByZXF1ZXN0ZWRTaXplLnNocnVua1RvKElu
dFNpemUobWF4U2l6ZSwgbWF4U2l6ZSkpOwogICAgIG1fdGlsZXItPnNldFRpbGVTaXplKGNsYW1w
ZWRTaXplKTsKQEAgLTEyOCw3ICsxMjYsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlVGlsZXJJZk5lZWRlZCgpCiAgICAgbV90aWxlciA9IExheWVyVGlsZXJDaHJvbWl1bTo6Y3Jl
YXRlKAogICAgICAgICBsYXllclJlbmRlcmVyKCksCiAgICAgICAgIEludFNpemUoZGVmYXVsdFRp
bGVTaXplLCBkZWZhdWx0VGlsZVNpemUpLAotICAgICAgICBtX2JvcmRlclRleGVscyA/IExheWVy
VGlsZXJDaHJvbWl1bTo6SGFzQm9yZGVyVGV4ZWxzIDogTGF5ZXJUaWxlckNocm9taXVtOjpOb0Jv
cmRlclRleGVscyk7CisgICAgICAgIExheWVyVGlsZXJDaHJvbWl1bTo6SGFzQm9yZGVyVGV4ZWxz
KTsKIH0KIAogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoKQpAQCAtMTQ0LDcgKzE0Miw2IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRUaWxp
bmdPcHRpb24oVGlsaW5nT3B0aW9uIHRpbGluZ09wdGlvbikKIAogdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnNldElzTWFzayhib29sIGlzTWFzaykKIHsKLSAgICBtX2JvcmRlclRleGVscyA9ICFp
c01hc2s7CiAgICAgc2V0VGlsaW5nT3B0aW9uKGlzTWFzayA/IE5ldmVyVGlsZSA6IEF1dG9UaWxl
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRleCA3ODhhZGM3ZjEwOGFhNmEy
NWNiM2Q0Y2Y4Y2QxNDkzMGU2NDY0MTU3Li4yZjQzNjliNjQwMzgzODUxNzBjNzcxNDMyZmQ3YTFl
YzI3MjJjZjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAtNzMsNyArNzMsNiBA
QCBwcml2YXRlOgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRpbGluZ1RyYW5zZm9ybSgpIGNv
bnN0OwogCiAgICAgVGlsaW5nT3B0aW9uIG1fdGlsaW5nT3B0aW9uOwotICAgIGJvb2wgbV9ib3Jk
ZXJUZXhlbHM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvVGlsaW5nRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvVGlsaW5nRGF0YS5jcHAKaW5kZXggMTEzYmRlMGIyMTM4ZjkxZDc3MmQzZmQ1MWI4
YzEzYjQwNmY5OGEyOS4uZmY3MDhjNzNkNmMzYTg4Y2RkZjAyYzA3MjNiYmFkZTMxYzMwMDRlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0Rh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdE
YXRhLmNwcApAQCAtNDQsMTIgKzQ0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IGludCBjb21wdXRlTnVtVGlsZXMoaW50IG1heFRleHR1cmVTaXplLCBpbnQgdG90YWxTaXplLCBp
bnQgYm9yZGVyVGV4ZWxzKQogewotICAgIGludCB0b3RhbFNpemVXaXRoQm9yZGVyID0gdG90YWxT
aXplICsgMiAqIGJvcmRlclRleGVsczsKLQogICAgIGlmIChtYXhUZXh0dXJlU2l6ZSAtIDIgKiBi
b3JkZXJUZXhlbHMgPD0gMCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiB0b3Rh
bFNpemUgPiAwICYmIG1heFRleHR1cmVTaXplID49IHRvdGFsU2l6ZSA/IDEgOiAwOwogCi0gICAg
aW50IG51bVRpbGVzID0gbWF4KDEsIDEgKyAodG90YWxTaXplV2l0aEJvcmRlciAtIDEgLSAyICog
Ym9yZGVyVGV4ZWxzKSAvIChtYXhUZXh0dXJlU2l6ZSAtIDIgKiBib3JkZXJUZXhlbHMpKTsKKyAg
ICBpbnQgbnVtVGlsZXMgPSBtYXgoMSwgMSArICh0b3RhbFNpemUgLSAxIC0gMiAqIGJvcmRlclRl
eGVscykgLyAobWF4VGV4dHVyZVNpemUgLSAyICogYm9yZGVyVGV4ZWxzKSk7CiAgICAgcmV0dXJu
IHRvdGFsU2l6ZSA+IDAgPyBudW1UaWxlcyA6IDA7CiB9CiAKQEAgLTgxLDcgKzc5LDcgQEAgaW50
IFRpbGluZ0RhdGE6OnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoaW50IHNyY1BvcykgY29uc3QKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICBBU1NFUlQobV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBtX2Jv
cmRlclRleGVscyk7Ci0gICAgaW50IHggPSBzcmNQb3MgLyAobV9tYXhUZXh0dXJlU2l6ZSAtIDIg
KiBtX2JvcmRlclRleGVscyk7CisgICAgaW50IHggPSAoc3JjUG9zIC0gbV9ib3JkZXJUZXhlbHMp
IC8gKG1fbWF4VGV4dHVyZVNpemUgLSAyICogbV9ib3JkZXJUZXhlbHMpOwogICAgIHJldHVybiBt
aW4obWF4KHgsIDApLCBudW1UaWxlc1goKSAtIDEpOwogfQogCkBAIC05MSw3ICs4OSw3IEBAIGlu
dCBUaWxpbmdEYXRhOjp0aWxlWUluZGV4RnJvbVNyY0Nvb3JkKGludCBzcmNQb3MpIGNvbnN0CiAg
ICAgICAgIHJldHVybiAwOwogCiAgICAgQVNTRVJUKG1fbWF4VGV4dHVyZVNpemUgLSAyICogbV9i
b3JkZXJUZXhlbHMpOwotICAgIGludCB5ID0gc3JjUG9zIC8gKG1fbWF4VGV4dHVyZVNpemUgLSAy
ICogbV9ib3JkZXJUZXhlbHMpOworICAgIGludCB5ID0gKHNyY1BvcyAtIG1fYm9yZGVyVGV4ZWxz
KSAvIChtX21heFRleHR1cmVTaXplIC0gMiAqIG1fYm9yZGVyVGV4ZWxzKTsKICAgICByZXR1cm4g
bWluKG1heCh5LCAwKSwgbnVtVGlsZXNZKCkgLSAxKTsKIH0KIApAQCAtMTM0LDE2ICsxMzIsNiBA
QCBJbnRSZWN0IFRpbGluZ0RhdGE6OnRpbGVCb3VuZHNXaXRoQm9yZGVyKGludCB0aWxlKSBjb25z
dAogICAgIHJldHVybiBib3VuZHM7CiB9CiAKLUludFJlY3QgVGlsaW5nRGF0YTo6dGlsZUJvdW5k
c1dpdGhPdXRlckJvcmRlcihpbnQgdGlsZSkgY29uc3QKLXsKLSAgICBJbnRSZWN0IGJvdW5kcyA9
IHRpbGVCb3VuZHModGlsZSk7Ci0KLSAgICBpZiAobV9ib3JkZXJUZXhlbHMpCi0gICAgICAgIGJv
dW5kcy5pbmZsYXRlKDEpOwotCi0gICAgcmV0dXJuIGJvdW5kczsKLX0KLQogRmxvYXRSZWN0IFRp
bGluZ0RhdGE6OnRpbGVCb3VuZHNOb3JtYWxpemVkKGludCB0aWxlKSBjb25zdAogewogICAgIGFz
c2VydFRpbGUodGlsZSk7CkBAIC0xODAsNiArMTY4LDggQEAgaW50IFRpbGluZ0RhdGE6OnRpbGVT
aXplWChpbnQgeEluZGV4KSBjb25zdAogCiAgICAgaWYgKCF4SW5kZXggJiYgbV9udW1UaWxlc1gg
PT0gMSkKICAgICAgICAgcmV0dXJuIG1fdG90YWxTaXplWDsKKyAgICBpZiAoIXhJbmRleCAmJiBt
X251bVRpbGVzWCA+IDEpCisgICAgICAgIHJldHVybiBtX21heFRleHR1cmVTaXplIC0gbV9ib3Jk
ZXJUZXhlbHM7CiAgICAgaWYgKHhJbmRleCA8IG51bVRpbGVzWCgpIC0gMSkKICAgICAgICAgcmV0
dXJuIG1fbWF4VGV4dHVyZVNpemUgLSAyICogbV9ib3JkZXJUZXhlbHM7CiAgICAgaWYgKHhJbmRl
eCA9PSBudW1UaWxlc1goKSAtIDEpCkBAIC0xOTUsNiArMTg1LDggQEAgaW50IFRpbGluZ0RhdGE6
OnRpbGVTaXplWShpbnQgeUluZGV4KSBjb25zdAogCiAgICAgaWYgKCF5SW5kZXggJiYgbV9udW1U
aWxlc1kgPT0gMSkKICAgICAgICAgcmV0dXJuIG1fdG90YWxTaXplWTsKKyAgICBpZiAoIXlJbmRl
eCAmJiBtX251bVRpbGVzWSA+IDEpCisgICAgICAgIHJldHVybiBtX21heFRleHR1cmVTaXplIC0g
bV9ib3JkZXJUZXhlbHM7CiAgICAgaWYgKHlJbmRleCA8IG51bVRpbGVzWSgpIC0gMSkKICAgICAg
ICAgcmV0dXJuIG1fbWF4VGV4dHVyZVNpemUgLSAyICogbV9ib3JkZXJUZXhlbHM7CiAgICAgaWYg
KHlJbmRleCA9PSBudW1UaWxlc1koKSAtIDEpCkBAIC0yMzgsOCArMjMwLDggQEAgdm9pZCBUaWxp
bmdEYXRhOjppbnRlcnNlY3REcmF3UXVhZChjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgZHMKIAogICAgICpuZXdTcmMgPSBzcmNSZWN0SW50ZXJzZWN0ZWQ7CiAgICAg
bmV3U3JjLT5tb3ZlKAotICAgICAgICAtdGlsZUJvdW5kcy54KCkgKyBtX2JvcmRlclRleGVscywK
LSAgICAgICAgLXRpbGVCb3VuZHMueSgpICsgbV9ib3JkZXJUZXhlbHMpOworICAgICAgICAtdGls
ZUJvdW5kcy54KCkgKyAoKHRpbGVYSW5kZXgodGlsZSkgPiAwKSA/IG1fYm9yZGVyVGV4ZWxzIDog
MCksCisgICAgICAgIC10aWxlQm91bmRzLnkoKSArICgodGlsZVlJbmRleCh0aWxlKSA+IDApID8g
bV9ib3JkZXJUZXhlbHMgOiAwKSk7CiAKICAgICAqbmV3RHN0ID0gRmxvYXRSZWN0KAogICAgICAg
ICBzcmNSZWN0SW50ZXJzZWN0ZWROb3JtWCAqIGRzdFJlY3Qud2lkdGgoKSArIGRzdFJlY3QueCgp
LApAQCAtMjQ4LDkgKzI0MCwxMiBAQCB2b2lkIFRpbGluZ0RhdGE6OmludGVyc2VjdERyYXdRdWFk
KGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkcwogICAgICAgICBz
cmNSZWN0SW50ZXJzZWN0ZWROb3JtSCAqIGRzdFJlY3QuaGVpZ2h0KCkpOwogfQogCi1JbnRQb2lu
dCBUaWxpbmdEYXRhOjp0ZXh0dXJlT2Zmc2V0KCkgY29uc3QKK0ludFBvaW50IFRpbGluZ0RhdGE6
OnRleHR1cmVPZmZzZXQoaW50IHhJbmRleCwgaW50IHlJbmRleCkgY29uc3QKIHsKLSAgICByZXR1
cm4gSW50UG9pbnQobV9ib3JkZXJUZXhlbHMsIG1fYm9yZGVyVGV4ZWxzKTsKKyAgICBpbnQgbGVm
dCA9ICgheEluZGV4IHx8IG1fbnVtVGlsZXNYID09IDEpID8gMCA6IG1fYm9yZGVyVGV4ZWxzOwor
ICAgIGludCB0b3AgPSAoIXlJbmRleCB8fCBtX251bVRpbGVzWSA9PSAxKSA/IDAgOiBtX2JvcmRl
clRleGVsczsKKworICAgIHJldHVybiBJbnRQb2ludChsZWZ0LCB0b3ApOwogfQogCiB2b2lkIFRp
bGluZ0RhdGE6OnJlY29tcHV0ZU51bVRpbGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5oCmluZGV4IDQzYjA4ZTIyODc0M2E4ZGJlM2E5
Y2UxNTk5ZTIzNDMwMzI1MzVjYWMuLjNkYWJiNWRlYzMzMDZlN2UyNjMxNDA1YmRjMmMzNGU5NTJk
NDIwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9U
aWxpbmdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1Rp
bGluZ0RhdGEuaApAQCAtNjEsNyArNjEsNiBAQCBwdWJsaWM6CiAKICAgICBJbnRSZWN0IHRpbGVC
b3VuZHMoaW50IHRpbGUpIGNvbnN0OwogICAgIEludFJlY3QgdGlsZUJvdW5kc1dpdGhCb3JkZXIo
aW50IHRpbGUpIGNvbnN0OwotICAgIEludFJlY3QgdGlsZUJvdW5kc1dpdGhPdXRlckJvcmRlcihp
bnQgdGlsZSkgY29uc3Q7CiAgICAgRmxvYXRSZWN0IHRpbGVCb3VuZHNOb3JtYWxpemVkKGludCB0
aWxlKSBjb25zdDsKICAgICBpbnQgdGlsZVBvc2l0aW9uWChpbnQgeEluZGV4KSBjb25zdDsKICAg
ICBpbnQgdGlsZVBvc2l0aW9uWShpbnQgeUluZGV4KSBjb25zdDsKQEAgLTc1LDcgKzc0LDcgQEAg
cHVibGljOgogICAgIHZvaWQgaW50ZXJzZWN0RHJhd1F1YWQoY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGludCB0aWxlLCBGbG9hdFJlY3QqIG5ld1Ny
YywgRmxvYXRSZWN0KiBuZXdEc3QpIGNvbnN0OwogCiAgICAgLy8gRGlmZmVyZW5jZSBiZXR3ZWVu
IHRpbGVCb3VuZCdzIGFuZCB0aWxlQm91bmRXaXRoQm9yZGVyJ3MgbG9jYXRpb24oKS4KLSAgICBJ
bnRQb2ludCB0ZXh0dXJlT2Zmc2V0KCkgY29uc3Q7CisgICAgSW50UG9pbnQgdGV4dHVyZU9mZnNl
dChpbnQgeEluZGV4LCBpbnQgeUluZGV4KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBUaWxpbmdE
YXRhKCkgOiBtX21heFRleHR1cmVTaXplKDApLCBtX3RvdGFsU2l6ZVgoMCksIG1fdG90YWxTaXpl
WSgwKSB7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxOThlMDc2ZDAyMWUwODI4NTEy
MzFlYWFjNDVjMmIxZTRmNzRmYWQ0Li42M2M3Yzc0ZDcwYmZlZDBmYmQ1ZmM1ZmVmNDI1Njc3ODNl
NDhiZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEx
LTA4LTAxICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W0Nocm9taXVtXSBSZW1vdmUgb3V0ZXIgYm9yZGVyIGZyb20gVGlsaW5nRGF0YSBhcyBpdCdzIG5v
IGxvbmdlciBuZWVkZWQgYnkgbGF5ZXIgY29tcG9zaXRvciBmb3IgYW50aS1hbGlhc2luZy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTQyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9UaWxp
bmdEYXRhVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMS0wOC0wMSAg
WXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWJTb2NrZXQ6
IFJlbmFtZSBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgbWVtYmVyIGZ1bmN0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxpbmdEYXRhVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGluZ0RhdGFUZXN0LmNwcAppbmRleCBkZGVm
MGI5ODIyMzFmMjgwN2E0N2RjOTAzMjNkYmE0NTQ2YzM4OTY4Li43NjJlZGE5Mzk5MTUwZWJlNGM5
NzE5NDZhNzRlNTdjMzlhM2I1ZGQ1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1RpbGluZ0RhdGFUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1RpbGluZ0RhdGFUZXN0LmNwcApAQCAtNDEsMTAgKzQxLDEwIEBAIG5hbWVzcGFjZSB7CiBU
RVNUKFRpbGluZ0RhdGFUZXN0LCBudW1UaWxlc19Ob1RpbGluZykKIHsKICAgICBFWFBFQ1RfRVEo
MSwgVGlsaW5nRGF0YSgxNiwgMTYsIDE2LCBmYWxzZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNU
X0VRKDEsIFRpbGluZ0RhdGEoMTcsIDE1LCAxNSwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQ
RUNUX0VRKDEsIFRpbGluZ0RhdGEoMTgsIDE2LCAxNiwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAg
RVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMTYsIDE1LCAxNSwgdHJ1ZSkubnVtVGlsZXMoKSk7Cisg
ICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMTYsIDE2LCAxNiwgdHJ1ZSkubnVtVGlsZXMoKSk7
CiAgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMTYsICAxLCAxNiwgZmFsc2UpLm51bVRpbGVz
KCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE3LCAxNSwgMTUsIHRydWUpLm51bVRp
bGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE1LCAxNSwgMTUsIHRydWUpLm51
bVRpbGVzKCkpOwogfQogCiBURVNUKFRpbGluZ0RhdGFUZXN0LCBudW1UaWxlc19UaWxpbmdOb0Jv
cmRlcnMpCkBAIC0xMDksNDUgKzEwOSw0NSBAQCBURVNUKFRpbGluZ0RhdGFUZXN0LCBudW1UaWxl
c19UaWxpbmdXaXRoQm9yZGVycykKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgtMSwgMSwg
IDEsIHRydWUpLm51bVRpbGVzKCkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDAsICAx
LCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7CiAKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgx
LCAgMSwgIDEsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRh
KDEsICAxLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7CiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0Rh
dGEoMSwgIDEsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5n
RGF0YSgxLCAgMiwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgwLCBUaWxp
bmdEYXRhKDIsICAxLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRp
bGluZ0RhdGEoMiwgIDEsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMCwg
VGlsaW5nRGF0YSgyLCAgMiwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgw
LCBUaWxpbmdEYXRhKDIsICAyLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0KLSAgICBFWFBFQ1Rf
RVEoMSwgVGlsaW5nRGF0YSgzLCAgMSwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVD
VF9FUSgyLCBUaWxpbmdEYXRhKDMsICAxLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQ
RUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgIDIsICAxLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBF
WFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAgMiwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAg
IEVYUEVDVF9FUSg2LCBUaWxpbmdEYXRhKDMsICAyLCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0g
ICAgRVhQRUNUX0VRKDYsIFRpbGluZ0RhdGEoMywgIDMsICAyLCB0cnVlKS5udW1UaWxlcygpKTsK
LSAgICBFWFBFQ1RfRVEoOSwgVGlsaW5nRGF0YSgzLCAgMywgIDMsIHRydWUpLm51bVRpbGVzKCkp
OwotCi0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwgIDEsICAyLCB0cnVlKS5udW1UaWxl
cygpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg0LCAgMiwgIDIsIHRydWUpLm51bVRp
bGVzKCkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDQsICAzLCAgMiwgdHJ1ZSkubnVt
VGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNCwgIDQsICAyLCB0cnVlKS5u
dW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg0LCAgNSwgIDIsIHRydWUp
Lm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDQsICA2LCAgMiwgdHJ1
ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNCwgIDcsICAyLCB0
cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg0LCAgOCwgIDIs
IHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDQsICA5LCAg
MiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNCwgMTAs
ICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoNiwgVGlsaW5nRGF0YSg0LCAx
MSwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotCi0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEo
NSwgIDEsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0
YSg1LCAgMiwgIDMsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdE
YXRhKDUsICAzLCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGlu
Z0RhdGEoNSwgIDQsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGls
aW5nRGF0YSg1LCAgNSwgIDMsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgyLCBU
aWxpbmdEYXRhKDUsICA2LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDMs
IFRpbGluZ0RhdGEoNSwgIDcsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEo
MywgVGlsaW5nRGF0YSg1LCAgOCwgIDMsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9F
USgzLCBUaWxpbmdEYXRhKDUsICA5LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNU
X0VRKDQsIFRpbGluZ0RhdGEoNSwgMTAsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBF
Q1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAxMSwgIDMsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVY
UEVDVF9FUSgxLCBUaWxpbmdEYXRhKDIsICAxLCAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAg
RVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMiwgIDEsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKKyAg
ICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgyLCAgMiwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwor
ICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDIsICAyLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7
CisKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgMSwgIDMsIHRydWUpLm51bVRpbGVz
KCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAyLCAgMywgdHJ1ZSkubnVtVGls
ZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgIDMsICAzLCB0cnVlKS5udW1U
aWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAgNCwgIDMsIHRydWUpLm51
bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsICA1LCAgMywgdHJ1ZSku
bnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgIDYsICAzLCB0cnVl
KS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSgzLCAgNywgIDMsIHRy
dWUpLm51bVRpbGVzKCkpOworCisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwgIDEsICA0
LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg0LCAgMiwg
IDQsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDQsICAz
LCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwg
IDQsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSg0
LCAgNSwgIDQsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRh
KDQsICA2LCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0Rh
dGEoNCwgIDcsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5n
RGF0YSg0LCAgOCwgIDQsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxp
bmdEYXRhKDQsICA5LCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDQsIFRp
bGluZ0RhdGEoNCwgMTAsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoNSwg
VGlsaW5nRGF0YSg0LCAxMSwgIDQsIHRydWUpLm51bVRpbGVzKCkpOworCisgICAgRVhQRUNUX0VR
KDEsIFRpbGluZ0RhdGEoNSwgIDEsICA1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1Rf
RVEoMSwgVGlsaW5nRGF0YSg1LCAgMiwgIDUsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVD
VF9FUSgxLCBUaWxpbmdEYXRhKDUsICAzLCAgNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQ
RUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwgIDQsICA1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBF
WFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgNSwgIDUsIHRydWUpLm51bVRpbGVzKCkpOworICAg
IEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDUsICA2LCAgNSwgdHJ1ZSkubnVtVGlsZXMoKSk7Cisg
ICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwgIDcsICA1LCB0cnVlKS5udW1UaWxlcygpKTsK
KyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSg1LCAgOCwgIDUsIHRydWUpLm51bVRpbGVzKCkp
OworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA5LCAgNSwgdHJ1ZSkubnVtVGlsZXMo
KSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMTAsICA1LCB0cnVlKS5udW1UaWxl
cygpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMSwgIDUsIHRydWUpLm51bVRp
bGVzKCkpOwogfQogCiBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlWEluZGV4RnJvbVNyY0Nvb3Jk
KQpAQCAtMTY2LDE3ICsxNjYsMTcgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgdGlsZVhJbmRleEZy
b21TcmNDb29yZCkKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIGZhbHNl
KS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDExKSk7CiAKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5n
RGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwotICAgIEVY
UEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmND
b29yZCgxKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50
aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDIpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgz
LCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMykpOwotICAgIEVYUEVDVF9F
USg0LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCg0
KSk7Ci0gICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWElu
ZGV4RnJvbVNyY0Nvb3JkKDUpKTsKLSAgICBFWFBFQ1RfRVEoNiwgVGlsaW5nRGF0YSgzLCAxMCwg
MTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoNikpOwotICAgIEVYUEVDVF9FUSg3LCBU
aWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCg3KSk7Ci0g
ICAgRVhQRUNUX0VRKDgsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJv
bVNyY0Nvb3JkKDgpKTsKLSAgICBFWFBFQ1RfRVEoOSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRy
dWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoOSkpOwotICAgIEVYUEVDVF9FUSg5LCBUaWxpbmdE
YXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgxMCkpOwotICAgIEVY
UEVDVF9FUSg5LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmND
b29yZCgxMSkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSku
dGlsZVhJbmRleEZyb21TcmNDb29yZCgxKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEo
MywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDIpKTsKKyAgICBFWFBFQ1Rf
RVEoMiwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQo
MykpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJ
bmRleEZyb21TcmNDb29yZCg0KSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgMTAs
IDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDUpKTsKKyAgICBFWFBFQ1RfRVEoNSwg
VGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoNikpOwor
ICAgIEVYUEVDVF9FUSg2LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZy
b21TcmNDb29yZCg3KSk7CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0
cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDgpKTsKKyAgICBFWFBFQ1RfRVEoNywgVGlsaW5n
RGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoOSkpOworICAgIEVY
UEVDVF9FUSg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmND
b29yZCgxMCkpOworICAgIEVYUEVDVF9FUSg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSku
dGlsZVhJbmRleEZyb21TcmNDb29yZCgxMSkpOwogCiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0Rh
dGEoMSwgMSwgMSwgZmFsc2UpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwogICAgIEVYUEVD
VF9FUSgwLCBUaWxpbmdEYXRhKDIsIDIsIDIsIGZhbHNlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3Jk
KDApKTsKQEAgLTE5NCwxMyArMTk0LDEzIEBAIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVYSW5k
ZXhGcm9tU3JjQ29vcmQpCiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgMiwgMiwgdHJ1
ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgwKSk7CiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0Rh
dGEoMiwgMiwgMiwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgxKSk7CiAgICAgRVhQRUNU
X0VRKDAsIFRpbGluZ0RhdGEoMywgMywgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgw
KSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMywgMywgdHJ1ZSkudGlsZVhJbmRl
eEZyb21TcmNDb29yZCgxKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMywgMywg
dHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgyKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGlu
Z0RhdGEoMywgMywgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgxKSk7CisgICAgRVhQ
RUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29y
ZCgyKSk7CiAKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSg0LCA0LCAzLCB0cnVlKS50aWxl
WEluZGV4RnJvbVNyY0Nvb3JkKDApKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSg0LCA0
LCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKLSAgICBFWFBFQ1RfRVEoMSwg
VGlsaW5nRGF0YSg0LCA0LCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDIpKTsKLSAg
ICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg0LCA0LCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNy
Y0Nvb3JkKDMpKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCA0LCAzLCB0cnVlKS50
aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDApKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgz
LCA0LCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKKyAgICBFWFBFQ1RfRVEo
MSwgVGlsaW5nRGF0YSgzLCA0LCAzLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDIpKTsK
KyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAzLCB0cnVlKS50aWxlWEluZGV4RnJv
bVNyY0Nvb3JkKDMpKTsKIH0KIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVZSW5kZXhGcm9tU3Jj
Q29vcmQpCiB7CkBAIC0yMTgsMTcgKzIxOCwxNyBAQCBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxl
WUluZGV4RnJvbVNyY0Nvb3JkKQogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDEwLCAx
MCwgZmFsc2UpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMTEpKTsKIAogICAgIEVYUEVDVF9FUSgw
LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgwKSk7
Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4
RnJvbVNyY0Nvb3JkKDEpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAxMCwgMTAs
IHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMikpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxp
bmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgzKSk7Ci0gICAg
RVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNy
Y0Nvb3JkKDQpKTsKLSAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUp
LnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNSkpOwotICAgIEVYUEVDVF9FUSg2LCBUaWxpbmdEYXRh
KDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg2KSk7Ci0gICAgRVhQRUNU
X0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3Jk
KDcpKTsKLSAgICBFWFBFQ1RfRVEoOCwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZ
SW5kZXhGcm9tU3JjQ29vcmQoOCkpOwotICAgIEVYUEVDVF9FUSg5LCBUaWxpbmdEYXRhKDMsIDEw
LCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg5KSk7Ci0gICAgRVhQRUNUX0VRKDks
IFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDEwKSk7
Ci0gICAgRVhQRUNUX0VRKDksIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4
RnJvbVNyY0Nvb3JkKDExKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMTAsIDEw
LCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGls
aW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMikpOworICAg
IEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21T
cmNDb29yZCgzKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVl
KS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDQpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0
YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNSkpOworICAgIEVYUEVD
VF9FUSg1LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29y
ZCg2KSk7CisgICAgRVhQRUNUX0VRKDYsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxl
WUluZGV4RnJvbVNyY0Nvb3JkKDcpKTsKKyAgICBFWFBFQ1RfRVEoNywgVGlsaW5nRGF0YSgzLCAx
MCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoOCkpOworICAgIEVYUEVDVF9FUSg3
LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg5KSk7
CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4
RnJvbVNyY0Nvb3JkKDEwKSk7CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEw
LCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDExKSk7CiAKICAgICBFWFBFQ1RfRVEoMCwg
VGlsaW5nRGF0YSgxLCAxLCAxLCBmYWxzZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgwKSk7CiAg
ICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgMiwgMiwgZmFsc2UpLnRpbGVZSW5kZXhGcm9t
U3JjQ29vcmQoMCkpOwpAQCAtMjQ2LDYxICsyNDYsNjEgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwg
dGlsZVlJbmRleEZyb21TcmNDb29yZCkKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgyLCAy
LCAyLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDApKTsKICAgICBFWFBFQ1RfRVEoMCwg
VGlsaW5nRGF0YSgyLCAyLCAyLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKICAg
ICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxlWUluZGV4RnJvbVNy
Y0Nvb3JkKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50
aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDEpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgz
LCAzLCAzLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDIpKTsKKyAgICBFWFBFQ1RfRVEo
MCwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDEpKTsK
KyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAzLCB0cnVlKS50aWxlWUluZGV4RnJv
bVNyY0Nvb3JkKDIpKTsKIAotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDQsIDMsIDQsIHRy
dWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdE
YXRhKDQsIDMsIDQsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkpOwotICAgIEVYUEVD
VF9FUSgxLCBUaWxpbmdEYXRhKDQsIDMsIDQsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQo
MikpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDQsIDMsIDQsIHRydWUpLnRpbGVZSW5k
ZXhGcm9tU3JjQ29vcmQoMykpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDMsIDQs
IHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMCkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxp
bmdEYXRhKDMsIDMsIDQsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMSkpOworICAgIEVY
UEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDMsIDQsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29v
cmQoMikpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDMsIDQsIHRydWUpLnRpbGVZ
SW5kZXhGcm9tU3JjQ29vcmQoMykpOwogfQogCiBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlU2l6
ZVgpCiB7CiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDUsICA1LCBmYWxzZSkudGls
ZVNpemVYKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgNSwgIDUsIHRydWUp
LnRpbGVTaXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDUsICA1LCB0
cnVlKS50aWxlU2l6ZVgoMCkpOwogCiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDYs
ICA2LCBmYWxzZSkudGlsZVNpemVYKDApKTsKICAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1
LCAgNiwgIDYsIGZhbHNlKS50aWxlU2l6ZVgoMSkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdE
YXRhKDUsICA2LCAgNiwgdHJ1ZSkudGlsZVNpemVYKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGls
aW5nRGF0YSg1LCAgNiwgIDYsIHRydWUpLnRpbGVTaXplWCgxKSk7CisgICAgRVhQRUNUX0VRKDQs
IFRpbGluZ0RhdGEoNSwgIDYsICA2LCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9F
USgyLCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgdHJ1ZSkudGlsZVNpemVYKDEpKTsKIAogICAgIEVY
UEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgZmFsc2UpLnRpbGVTaXplWCgwKSk7CiAg
ICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCBmYWxzZSkudGlsZVNpemVYKDEp
KTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIHRydWUpLnRpbGVTaXpl
WCgwKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCB0cnVlKS50aWxl
U2l6ZVgoMSkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgdHJ1ZSku
dGlsZVNpemVYKDApKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIHRy
dWUpLnRpbGVTaXplWCgxKSk7CiAKICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAxMCwg
MTAsIGZhbHNlKS50aWxlU2l6ZVgoMCkpOwogICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUs
IDEwLCAxMCwgZmFsc2UpLnRpbGVTaXplWCgxKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0Rh
dGEoNSwgMTAsIDEwLCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxp
bmdEYXRhKDUsIDEwLCAxMCwgdHJ1ZSkudGlsZVNpemVYKDApKTsKICAgICBFWFBFQ1RfRVEoMywg
VGlsaW5nRGF0YSg1LCAxMCwgMTAsIHRydWUpLnRpbGVTaXplWCgxKSk7CiAgICAgRVhQRUNUX0VR
KDMsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCB0cnVlKS50aWxlU2l6ZVgoMikpOwogCi0gICAgRVhQ
RUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMTEsIDExLCB0cnVlKS50aWxlU2l6ZVgoMikpOworICAg
IEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsIDExLCAxMSwgdHJ1ZSkudGlsZVNpemVYKDIpKTsK
ICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMiwgMTIsIHRydWUpLnRpbGVTaXplWCgy
KSk7CiB9CiBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlU2l6ZVkpCiB7CiAgICAgRVhQRUNUX0VR
KDUsIFRpbGluZ0RhdGEoNSwgIDUsICA1LCBmYWxzZSkudGlsZVNpemVZKDApKTsKLSAgICBFWFBF
Q1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgNSwgIDUsIHRydWUpLnRpbGVTaXplWSgwKSk7CisgICAg
RVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDUsICA1LCB0cnVlKS50aWxlU2l6ZVkoMCkpOwog
CiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCBmYWxzZSkudGlsZVNpemVZ
KDApKTsKICAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIGZhbHNlKS50aWxl
U2l6ZVkoMSkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgdHJ1ZSku
dGlsZVNpemVZKDApKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIHRy
dWUpLnRpbGVTaXplWSgxKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgIDYsICA2
LCB0cnVlKS50aWxlU2l6ZVkoMCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDUsICA2
LCAgNiwgdHJ1ZSkudGlsZVNpemVZKDEpKTsKIAogICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRh
KDUsICA4LCAgOCwgZmFsc2UpLnRpbGVTaXplWSgwKSk7CiAgICAgRVhQRUNUX0VRKDMsIFRpbGlu
Z0RhdGEoNSwgIDgsICA4LCBmYWxzZSkudGlsZVNpemVZKDEpKTsKLSAgICBFWFBFQ1RfRVEoMywg
VGlsaW5nRGF0YSg1LCAgOCwgIDgsIHRydWUpLnRpbGVTaXplWSgwKSk7Ci0gICAgRVhQRUNUX0VR
KDMsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCB0cnVlKS50aWxlU2l6ZVkoMSkpOworICAgIEVYUEVD
VF9FUSg0LCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgdHJ1ZSkudGlsZVNpemVZKDApKTsKKyAgICBF
WFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIHRydWUpLnRpbGVTaXplWSgxKSk7CiAK
ICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIGZhbHNlKS50aWxlU2l6ZVko
MCkpOwogICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgZmFsc2UpLnRpbGVT
aXplWSgxKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCB0cnVlKS50
aWxlU2l6ZVkoMCkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgdHJ1
ZSkudGlsZVNpemVZKDApKTsKICAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAxMCwgMTAs
IHRydWUpLnRpbGVTaXplWSgxKSk7CiAgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMTAs
IDEwLCB0cnVlKS50aWxlU2l6ZVkoMikpOwogCi0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEo
NSwgMTEsIDExLCB0cnVlKS50aWxlU2l6ZVkoMikpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdE
YXRhKDUsIDExLCAxMSwgdHJ1ZSkudGlsZVNpemVZKDIpKTsKICAgICBFWFBFQ1RfRVEoMywgVGls
aW5nRGF0YSg1LCAxMiwgMTIsIHRydWUpLnRpbGVTaXplWSgyKSk7CiB9CiAKQEAgLTMxOSwxMCAr
MzE5LDEwIEBAIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVTaXplWF9hbmRfdGlsZVBvc2l0aW9u
WCkKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAxLCAgIDEsIHRydWUpLnRpbGVQb3Np
dGlvblgoMCkpOwogICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEsIDEwMCwgdHJ1ZSku
dGlsZVNpemVYKDApKTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAxLCAxMDAsIHRy
dWUpLnRpbGVQb3NpdGlvblgoMCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDMs
ICAgMSwgdHJ1ZSkudGlsZVNpemVYKDApKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSg1
LCAzLCAgIDEsIHRydWUpLnRpbGVQb3NpdGlvblgoMCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxp
bmdEYXRhKDUsIDMsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDApKTsKLSAgICBFWFBFQ1RfRVEoMCwg
VGlsaW5nRGF0YSg1LCAzLCAxMDAsIHRydWUpLnRpbGVQb3NpdGlvblgoMCkpOworICAgIEVYUEVD
VF9FUSgzLCBUaWxpbmdEYXRhKDMsIDMsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDApKTsKKyAgICBF
WFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAgIDEsIHRydWUpLnRpbGVQb3NpdGlvblgoMCkp
OworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDMsIDEwMCwgdHJ1ZSkudGlsZVNpemVY
KDApKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCAxMDAsIHRydWUpLnRpbGVQ
b3NpdGlvblgoMCkpOwogCiAgICAgLy8gTXVsdGlwbGUgdGlsZXM6CiAgICAgLy8gbm8gYm9yZGVy
CkBAIC0zNDAsMjMgKzM0MCwyMyBAQCBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlU2l6ZVhfYW5k
X3RpbGVQb3NpdGlvblgpCiAgICAgLy8gTXVsdGlwbGUgdGlsZXM6CiAgICAgLy8gd2l0aCBib3Jk
ZXIKICAgICAvLyBwb3NpdGlvbnMgMCwgMiwgMywgNAotICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdE
YXRhKDMsIDQsICAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGlu
Z0RhdGEoMywgNCwgICAxLCB0cnVlKS50aWxlU2l6ZVgoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBU
aWxpbmdEYXRhKDMsIDQsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDEpKTsKLSAgICBFWFBFQ1RfRVEo
MSwgVGlsaW5nRGF0YSgzLCA0LCAgIDEsIHRydWUpLnRpbGVTaXplWCgyKSk7Ci0gICAgRVhQRUNU
X0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS50aWxlU2l6ZVgoMykpOwotICAgIEVY
UEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDQsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7
Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS50aWxlUG9zaXRp
b25YKDEpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCA0LCAgIDEsIHRydWUpLnRp
bGVQb3NpdGlvblgoMikpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDQsICAgMSwg
dHJ1ZSkudGlsZVBvc2l0aW9uWCgzKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywg
NCwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRh
KDMsIDQsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDEpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5n
RGF0YSgzLCA0LCAxMDAsIHRydWUpLnRpbGVTaXplWCgyKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRp
bGluZ0RhdGEoMywgNCwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMykpOwotICAgIEVYUEVDVF9FUSgw
LCBUaWxpbmdEYXRhKDMsIDQsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7Ci0gICAgRVhQ
RUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25YKDEpKTsK
LSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCA0LCAxMDAsIHRydWUpLnRpbGVQb3NpdGlv
blgoMikpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDQsIDEwMCwgdHJ1ZSkudGls
ZVBvc2l0aW9uWCgzKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgNiwgICAxLCB0
cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCA2LCAgIDEs
IHRydWUpLnRpbGVTaXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNiwg
ICAxLCB0cnVlKS50aWxlU2l6ZVgoMSkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMs
IDYsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDIpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0
YSgzLCA2LCAgIDEsIHRydWUpLnRpbGVTaXplWCgzKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGlu
Z0RhdGEoMywgNiwgICAxLCB0cnVlKS50aWxlUG9zaXRpb25YKDApKTsKKyAgICBFWFBFQ1RfRVEo
MiwgVGlsaW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLnRpbGVQb3NpdGlvblgoMSkpOworICAgIEVY
UEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDYsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgyKSk7
CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgNiwgICAxLCB0cnVlKS50aWxlUG9zaXRp
b25YKDMpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCA2LCAxMDAsIHRydWUpLnRp
bGVTaXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNiwgMTAwLCB0cnVl
KS50aWxlU2l6ZVgoMSkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDYsIDEwMCwg
dHJ1ZSkudGlsZVNpemVYKDIpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCA2LCAx
MDAsIHRydWUpLnRpbGVTaXplWCgzKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywg
NiwgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25YKDApKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5n
RGF0YSgzLCA2LCAxMDAsIHRydWUpLnRpbGVQb3NpdGlvblgoMSkpOworICAgIEVYUEVDVF9FUSgz
LCBUaWxpbmdEYXRhKDMsIDYsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgyKSk7CisgICAgRVhQ
RUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgNiwgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25YKDMpKTsK
IH0KIAogVEVTVChUaWxpbmdEYXRhVGVzdCwgdGlsZVNpemVZX2FuZF90aWxlUG9zaXRpb25ZKQpA
QCAtMzc0LDEwICszNzQsMTAgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgdGlsZVNpemVZX2FuZF90
aWxlUG9zaXRpb25ZKQogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsICAgMSwgMSwgdHJ1
ZSkudGlsZVBvc2l0aW9uWSgwKSk7CiAgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMTAw
LCAxLCB0cnVlKS50aWxlU2l6ZVkoMCkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMs
IDEwMCwgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgwKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGlu
Z0RhdGEoNSwgICAxLCAzLCB0cnVlKS50aWxlU2l6ZVkoMCkpOwotICAgIEVYUEVDVF9FUSgwLCBU
aWxpbmdEYXRhKDUsICAgMSwgMywgdHJ1ZSkudGlsZVBvc2l0aW9uWSgwKSk7Ci0gICAgRVhQRUNU
X0VRKDMsIFRpbGluZ0RhdGEoNSwgMTAwLCAzLCB0cnVlKS50aWxlU2l6ZVkoMCkpOwotICAgIEVY
UEVDVF9FUSgwLCBUaWxpbmdEYXRhKDUsIDEwMCwgMywgdHJ1ZSkudGlsZVBvc2l0aW9uWSgwKSk7
CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgICAxLCAzLCB0cnVlKS50aWxlU2l6ZVko
MCkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsICAgMSwgMywgdHJ1ZSkudGlsZVBv
c2l0aW9uWSgwKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAwLCAzLCB0cnVl
KS50aWxlU2l6ZVkoMCkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEwMCwgMywg
dHJ1ZSkudGlsZVBvc2l0aW9uWSgwKSk7CiAKICAgICAvLyBNdWx0aXBsZSB0aWxlczoKICAgICAv
LyBubyBib3JkZXIKQEAgLTM5NSwyMyArMzk1LDIzIEBAIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRp
bGVTaXplWV9hbmRfdGlsZVBvc2l0aW9uWSkKICAgICAvLyBNdWx0aXBsZSB0aWxlczoKICAgICAv
LyB3aXRoIGJvcmRlcgogICAgIC8vIHBvc2l0aW9ucyAwLCAyLCAzLCA0Ci0gICAgRVhQRUNUX0VR
KDQsIFRpbGluZ0RhdGEoMywgICAxLCA0LCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1Rf
RVEoMSwgVGlsaW5nRGF0YSgzLCAgIDEsIDQsIHRydWUpLnRpbGVTaXplWSgwKSk7Ci0gICAgRVhQ
RUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgICAxLCA0LCB0cnVlKS50aWxlU2l6ZVkoMSkpOwotICAg
IEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAgMSwgNCwgdHJ1ZSkudGlsZVNpemVZKDIpKTsK
LSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgIDEsIDQsIHRydWUpLnRpbGVTaXplWSgz
KSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgICAxLCA0LCB0cnVlKS50aWxlUG9z
aXRpb25ZKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgIDEsIDQsIHRydWUp
LnRpbGVQb3NpdGlvblkoMSkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsICAgMSwg
NCwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgyKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEo
MywgICAxLCA0LCB0cnVlKS50aWxlUG9zaXRpb25ZKDMpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGls
aW5nRGF0YSgzLCAxMDAsIDQsIHRydWUpLnRpbGVTaXplWSgwKSk7Ci0gICAgRVhQRUNUX0VRKDEs
IFRpbGluZ0RhdGEoMywgMTAwLCA0LCB0cnVlKS50aWxlU2l6ZVkoMSkpOwotICAgIEVYUEVDVF9F
USgxLCBUaWxpbmdEYXRhKDMsIDEwMCwgNCwgdHJ1ZSkudGlsZVNpemVZKDIpKTsKLSAgICBFWFBF
Q1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDQsIHRydWUpLnRpbGVTaXplWSgzKSk7Ci0gICAg
RVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMTAwLCA0LCB0cnVlKS50aWxlUG9zaXRpb25ZKDAp
KTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDQsIHRydWUpLnRpbGVQb3Np
dGlvblkoMSkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDEwMCwgNCwgdHJ1ZSku
dGlsZVBvc2l0aW9uWSgyKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAwLCA0
LCB0cnVlKS50aWxlUG9zaXRpb25ZKDMpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgz
LCAgIDEsIDYsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRh
KDMsICAgMSwgNiwgdHJ1ZSkudGlsZVNpemVZKDApKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5n
RGF0YSgzLCAgIDEsIDYsIHRydWUpLnRpbGVTaXplWSgxKSk7CisgICAgRVhQRUNUX0VRKDEsIFRp
bGluZ0RhdGEoMywgICAxLCA2LCB0cnVlKS50aWxlU2l6ZVkoMikpOworICAgIEVYUEVDVF9FUSgy
LCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkudGlsZVNpemVZKDMpKTsKKyAgICBFWFBFQ1Rf
RVEoMCwgVGlsaW5nRGF0YSgzLCAgIDEsIDYsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOworICAg
IEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgx
KSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgICAxLCA2LCB0cnVlKS50aWxlUG9z
aXRpb25ZKDIpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAgIDEsIDYsIHRydWUp
LnRpbGVQb3NpdGlvblkoMykpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsIDEwMCwg
NiwgdHJ1ZSkudGlsZVNpemVZKDApKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAx
MDAsIDYsIHRydWUpLnRpbGVTaXplWSgxKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEo
MywgMTAwLCA2LCB0cnVlKS50aWxlU2l6ZVkoMikpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdE
YXRhKDMsIDEwMCwgNiwgdHJ1ZSkudGlsZVNpemVZKDMpKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGls
aW5nRGF0YSgzLCAxMDAsIDYsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOworICAgIEVYUEVDVF9F
USgyLCBUaWxpbmdEYXRhKDMsIDEwMCwgNiwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgxKSk7CisgICAg
RVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAwLCA2LCB0cnVlKS50aWxlUG9zaXRpb25ZKDIp
KTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAxMDAsIDYsIHRydWUpLnRpbGVQb3Np
dGlvblkoMykpOwogfQogCiBURVNUKFRpbGluZ0RhdGFUZXN0LCBzZXRUb3RhbFNpemUpCkBAIC00
NjgsNyArNDY4LDcgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgc2V0TWF4VGV4dHVyZVNpemVOb0Jv
cmRlcnMpCiAKIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHNldE1heFRleHR1cmVTaXplQm9yZGVycykK
IHsKLSAgICBUaWxpbmdEYXRhIGRhdGEoOCwgMTYsIDMwLCB0cnVlKTsKKyAgICBUaWxpbmdEYXRh
IGRhdGEoOCwgMTYsIDMyLCB0cnVlKTsKICAgICBFWFBFQ1RfRVEoMywgZGF0YS5udW1UaWxlc1go
KSk7CiAgICAgRVhQRUNUX0VRKDUsIGRhdGEubnVtVGlsZXNZKCkpOwogCkBAIC00ODQsNyArNDg0
LDcgQEAgVEVTVChUaWxpbmdEYXRhVGVzdCwgc2V0TWF4VGV4dHVyZVNpemVCb3JkZXJzKQogCiAg
ICAgZGF0YS5zZXRNYXhUZXh0dXJlU2l6ZSg1KTsKICAgICBFWFBFQ1RfRVEoNSwgZGF0YS5tYXhU
ZXh0dXJlU2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVEoNiwgZGF0YS5udW1UaWxlc1goKSk7CisgICAg
RVhQRUNUX0VRKDUsIGRhdGEubnVtVGlsZXNYKCkpOwogICAgIEVYUEVDVF9FUSgxMCwgZGF0YS5u
dW1UaWxlc1koKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102670</attachid>
            <date>2011-08-02 11:42:02 -0700</date>
            <delta_ts>2011-08-02 16:35:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64942-20110802144201.patch</filename>
            <type>text/plain</type>
            <size>71635</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIxODgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmYzNjZTRkMGVmNDBhNDBjZGJlMmE4
Nzc0NGZlZDg4N2Y1ZDk3ZGQzLi5iMTI4NmJhNzk2ZTM0Yjg1NDBkYzY2ZTQ0MGY5Zjc1MDllNTFm
OWU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDgtMDEgIERhdmlkIFJldmVtYW4gIDxy
ZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFVzZSBlZGdlLWRpc3Rh
bmNlIG1ldGhvZCBmb3IgbGF5ZXIgYW50aS1hbGlhc2luZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGVkIHJlc3VsdHMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEt
MDgtMDEgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBbRXh0ZW5zaW9ucyBBUEldIHdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdl
LnJlbG9hZCgpIGlzIGJyb2tlbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDM5NGY3ZjJhMmIyOWZjZWU2MzFmZjE1ODFi
NDhlYzU4Njc3NTMwYWEuLjdhOGUzNGQ2Y2MwMDdjMmIwZmUzZTE2MDJlN2MzYTUxMGUzNTVlYWMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQKQEAgLTI2OTksNiArMjY5OSwyNCBAQCBCVUdXSzU1OTY4IEdQVSBXSU4gREVCVUcg
OiBjb21wb3NpdGluZy93ZWJnbC93ZWJnbC1ub25wcmVtdWx0aXBsaWVkLWJsZW5kLmh0bWwgPQog
Ly8gMiBwaXhlbCBzdHJldGNoaW5nIHdoZW4gcmVuZGVyaW5nIHNvbWUgdmlkZW9zIHdpdGggdGhl
IEdQVSAoTm93IGl0J3MgZmxha3kpCiBCVUdDUjc0MTAyIEdQVSBMSU5VWCA6IG1lZGlhL3ZpZGVv
LWNvbnRyb2xzLXJlbmRlcmluZy5odG1sID0gSU1BR0UgUEFTUwogCitCVUdXSzY0OTQyIDogY29t
cG9zaXRpbmcvY29sb3ItbWF0Y2hpbmcvaW1hZ2UtY29sb3ItbWF0Y2hpbmcuaHRtbCA9IElNQUdF
CitCVUdXSzY0OTQyIDogY29tcG9zaXRpbmcvZ2VvbWV0cnkvYW5jZXN0b3Itb3ZlcmZsb3ctY2hh
bmdlLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVk
LXBvc2l0aW9uLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0aW5nL2dlb21ldHJ5
L2xheWVyLWR1ZS10by1sYXllci1jaGlsZHJlbi1kZWVwLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0
MiA6IGNvbXBvc2l0aW5nL2dlb21ldHJ5L2xheWVyLWR1ZS10by1sYXllci1jaGlsZHJlbi5odG1s
ID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21wb3NpdGluZy9nZW9tZXRyeS92ZXJ0aWNhbC1zY3Jv
bGwtY29tcG9zaXRlZC5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIgOiBjb21wb3NpdGluZy9vdmVy
Zmxvdy9maXhlZC1wb3NpdGlvbi1hbmNlc3Rvci1jbGlwLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0
MiA6IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLXRyYW5zaXRpb24u
aHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvdHJhbnNm
b3JtLWluc2lkZS1yZWZsZWN0aW9uLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IGNvbXBvc2l0
aW5nL3NoYWRvd3Mvc2hhZG93LWRyYXdpbmcuaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogY29t
cG9zaXRpbmcvdHJhbnNpdGlvbnMvc2NhbGUtdHJhbnNpdGlvbi1uby1zdGFydC5odG1sID0gSU1B
R0UKK0JVR1dLNjQ5NDIgOiBtZWRpYS92aWRlby10cmFuc2Zvcm1lZC5odG1sID0gSU1BR0UKK0JV
R1dLNjQ5NDIgOiBtZWRpYS92aWRlby16b29tLWNvbnRyb2xzLmh0bWwgID0gSU1BR0UKK0JVR1dL
NjQ5NDIgOiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5
LXRyYW5zZm9ybWVkLmh0bWwgPSBJTUFHRQorQlVHV0s2NDk0MiA6IHBsYXRmb3JtL2Nocm9taXVt
L2NvbXBvc2l0aW5nL2h1Z2UtbGF5ZXItcm90YXRlZC5odG1sID0gSU1BR0UKK0JVR1dLNjQ5NDIg
OiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9wZXJwZW5kaWN1bGFyLWxheWVyLXNvcnRp
bmcuaHRtbCA9IElNQUdFCitCVUdXSzY0OTQyIDogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRp
bmcvdGlueS1sYXllci1yb3RhdGVkLmh0bWwgPSBJTUFHRQorCiAKIEJVR0NSNzIyMjMgOiBtZWRp
YS92aWRlby1mcmFtZS1hY2N1cmF0ZS1zZWVrLmh0bWwgPSBJTUFHRSBQQVNTCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBkZDRlYWExN2Y4MTYwZTVhMDQ5NWQyNjU3OWI4NDYwOGZkNmY4MTRkLi4xNGFmZTc4OGEw
M2RlM2M3ODFhYzJjYjBiNDJkNWQwNmVmYzBjNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjgg
QEAKKzIwMTEtMDgtMDEgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbQ2hyb21pdW1dIFVzZSBlZGdlLWRpc3RhbmNlIG1ldGhvZCBmb3IgbGF5ZXIgYW50
aS1hbGlhc2luZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY0OTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlIGFuIGVkZ2UgZGlzdGFuY2UgYmFzZWQgbWV0aG9kIGluc3RlYWQgb2YgdGhlIGN1cnJl
bnQgbGluZWFyCisgICAgICAgIGZpbHRlcmluZyBtZXRob2QgZm9yIHByb2R1Y2luZyBhbnRpLWFs
aWFzZWQgZWRnZXMgb24gM0QgdHJhbnNmb3JtZWQKKyAgICAgICAgbGF5ZXJzLiBUaGlzIHJlbW92
ZXMgdGhlIG91dGVyIGJvcmRlciBoYW5kbGluZyBmcm9tIFRpbGluZ0RhdGEgYXMKKyAgICAgICAg
aXQncyBubyBsb25nZXIgbmVlZGVkIGZvciBhbnRpLWFsaWFzaW5nLgorCisgICAgICAgIFRlc3Rz
OiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy90aW55LWxheWVyLXJvdGF0ZWQuaHRtbCAo
ZXhpc3RpbmcpCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9o
dWdlLWxheWVyLXJvdGF0ZWQuaHRtbCAoZXhpc3RpbmcpCisgICAgICAgICAgICAgICBjb21wb3Np
dGluZy9pbWFnZXMvY29udGVudC1pbWFnZS1jaGFuZ2UuaHRtbCAoZXhpc3RpbmcpCisgICAgICAg
ICAgICAgICBUaWxpbmdEYXRhVGVzdCBpbiB3ZWJraXRfdW5pdF90ZXN0cworCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNjcmVlbk1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpzZXREcmF3Vmlld3BvcnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtQUEpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1Td2l6emxlQUEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp3aW5kb3dNYXRyaXgpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OnNldFRpbGVTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6dGlsZUxheWVyUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OmludmFsaWRhdGVSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJUaWxlckNocm9taXVtOjpncm93TGF5ZXJUb0NvbnRhaW4pOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZl
cnRleFNoYWRlclRpbGU6OlZlcnRleFNoYWRlclRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6VmVy
dGV4U2hhZGVyVGlsZTo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhTaGFkZXJUaWxl
OjpnZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUFB
QmluZGluZzo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFnbWVudFRleEFscGhhQUFCaW5kaW5nOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdt
ZW50U2hhZGVyUkdCQVRleEFscGhhQUE6OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGFBQTo6Z2V0U2hhZGVyU3RyaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5o
OgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4U2hhZGVyVGlsZTo6dmVydGV4VGV4VHJhbnNmb3Jt
TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZzo6
YWxwaGFMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFRleEFscGhhQUFCaW5k
aW5nOjpzYW1wbGVyTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhBbHBo
YUFBQmluZGluZzo6ZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpGcmFnbWVudFRleEFscGhhQUFCaW5kaW5nOjplZGdlTG9jYXRpb24pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OlRpbGVkTGF5ZXJDaHJvbWl1bSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZVRpbGVTaXplQW5kVGls
aW5nT3B0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
VGlsZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnNl
dElzTWFzayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU51bVRpbGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGluZ0RhdGE6OnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsaW5nRGF0YTo6dGlsZVlJbmRleEZyb21TcmNDb29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxpbmdEYXRhOjp0aWxlU2l6ZVgpOgorICAgICAgICAoV2ViQ29yZTo6VGlsaW5nRGF0YTo6
dGlsZVNpemVZKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6OmludGVyc2VjdERyYXdR
dWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGluZ0RhdGE6OnRleHR1cmVPZmZzZXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmg6CisKIDIwMTEtMDgtMDEg
IEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBbRXh0ZW5zaW9ucyBBUEldIHdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlLnJlbG9h
ZCgpIGlzIGJyb2tlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXgg
Mzk1ZmVjNjk1NmVmMTcwODRkMjBkN2U1NWJjN2ZmNGM0M2ViY2RjYy4uYTVjYTdiMjFiOGRkMjRk
YWI4YWUxOGZmYzk5ZTdhMWRmZWM4MzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwCkBAIC0zODQsNiArMzg0LDIxIEBAIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBvcnRob01hdHJpeChmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBmCiAg
ICAgcmV0dXJuIG9ydGhvOwogfQogCitzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggc2NyZWVu
TWF0cml4KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHNjcmVlbjsKKworICAgIC8vIE1hcCB0byB2aWV3cG9ydC4KKyAgICBz
Y3JlZW4udHJhbnNsYXRlM2QoeCwgeSwgMCk7CisgICAgc2NyZWVuLnNjYWxlM2Qod2lkdGgsIGhl
aWdodCwgMCk7CisKKyAgICAvLyBNYXAgeCwgeSBhbmQgeiB0byB1bml0IHNxdWFyZS4KKyAgICBz
Y3JlZW4udHJhbnNsYXRlM2QoMC41LCAwLjUsIDAuNSk7CisgICAgc2NyZWVuLnNjYWxlM2QoMC41
LCAwLjUsIDAuNSk7CisKKyAgICByZXR1cm4gc2NyZWVuOworfQorCiBQYXNzUmVmUHRyPExheWVy
UmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoQ0NMYXllclRy
ZWVIb3N0Q2xpZW50KiBjbGllbnQsIFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IGNv
bnRlbnRQYWludCwgYm9vbCBhY2NlbGVyYXRlRHJhd2luZykKIHsKICAgICBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IGNvbnRleHQgPSBjbGllbnQtPmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0
M0QoKTsKQEAgLTczNyw2ICs3NTIsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d0xheWVycyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCiAKICAgICAv
LyBUaGUgR0wgdmlld3BvcnQgY292ZXJzIHRoZSBlbnRpcmUgdmlzaWJsZSBhcmVhLCBpbmNsdWRp
bmcgdGhlIHNjcm9sbGJhcnMuCiAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT52
aWV3cG9ydCgwLCAwLCBtX3ZpZXdwb3J0VmlzaWJsZVJlY3Qud2lkdGgoKSwgbV92aWV3cG9ydFZp
c2libGVSZWN0LmhlaWdodCgpKSk7CisgICAgbV93aW5kb3dNYXRyaXggPSBzY3JlZW5NYXRyaXgo
MCwgMCwgbV92aWV3cG9ydFZpc2libGVSZWN0LndpZHRoKCksIG1fdmlld3BvcnRWaXNpYmxlUmVj
dC5oZWlnaHQoKSk7CiAKICAgICAvLyBCaW5kIHRoZSBjb21tb24gdmVydGV4IGF0dHJpYnV0ZXMg
dXNlZCBmb3IgZHJhd2luZyBhbGwgdGhlIGxheWVycy4KICAgICBtX3NoYXJlZEdlb21ldHJ5LT5w
cmVwYXJlRm9yRHJhdygpOwpAQCAtMTEyMSw2ICsxMTM3LDcgQEAgdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OnNldERyYXdWaWV3cG9ydFJlY3QoY29uc3QgSW50UmVjdCYgZHJhd1JlY3QsIGJv
b2wgZmwKICAgICBlbHNlCiAgICAgICAgIG1fcHJvamVjdGlvbk1hdHJpeCA9IG9ydGhvTWF0cml4
KGRyYXdSZWN0LngoKSwgZHJhd1JlY3QubWF4WCgpLCBkcmF3UmVjdC55KCksIGRyYXdSZWN0Lm1h
eFkoKSk7CiAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAw
LCBkcmF3UmVjdC53aWR0aCgpLCBkcmF3UmVjdC5oZWlnaHQoKSkpOworICAgIG1fd2luZG93TWF0
cml4ID0gc2NyZWVuTWF0cml4KDAsIDAsIGRyYXdSZWN0LndpZHRoKCksIGRyYXdSZWN0LmhlaWdo
dCgpKTsKIH0KIAogCkBAIC0xMjIwLDYgKzEyMzcsMjggQEAgY29uc3QgTGF5ZXJUaWxlckNocm9t
aXVtOjpQcm9ncmFtU3dpenpsZSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1T
d2kKICAgICByZXR1cm4gbV90aWxlclByb2dyYW1Td2l6emxlLmdldCgpOwogfQogCitjb25zdCBM
YXllclRpbGVyQ2hyb21pdW06OlByb2dyYW1BQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxl
clByb2dyYW1BQSgpCit7CisgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbUFBKQorICAgICAgICBtX3Rp
bGVyUHJvZ3JhbUFBID0gYWRvcHRQdHIobmV3IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbUFB
KG1fY29udGV4dC5nZXQoKSkpOworICAgIGlmICghbV90aWxlclByb2dyYW1BQS0+aW5pdGlhbGl6
ZWQoKSkgeworICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxl
clByb2dyYW1BQTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBtX3RpbGVyUHJvZ3Jh
bUFBLT5pbml0aWFsaXplKCk7CisgICAgfQorICAgIHJldHVybiBtX3RpbGVyUHJvZ3JhbUFBLmdl
dCgpOworfQorCitjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW1Td2l6emxlQUEqIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpenpsZUFBKCkKK3sKKyAgICBpZiAo
IW1fdGlsZXJQcm9ncmFtU3dpenpsZUFBKQorICAgICAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVB
QSA9IGFkb3B0UHRyKG5ldyBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW1Td2l6emxlQUEobV9j
b250ZXh0LmdldCgpKSk7CisgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQS0+aW5pdGlh
bGl6ZWQoKSkgeworICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0
aWxlclByb2dyYW1Td2l6emxlQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgbV90
aWxlclByb2dyYW1Td2l6emxlQUEtPmluaXRpYWxpemUoKTsKKyAgICB9CisgICAgcmV0dXJuIG1f
dGlsZXJQcm9ncmFtU3dpenpsZUFBLmdldCgpOworfQorCiBjb25zdCBDQ0NhbnZhc0xheWVySW1w
bDo6UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjYW52YXNMYXllclByb2dyYW0oKQog
ewogICAgIGlmICghbV9jYW52YXNMYXllclByb2dyYW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5oCmluZGV4IGNiMTQ0NzQ5NDdkNDNlNzhmNTNkMmRlOTI3YjVlNTFkMmZlMzZlMGIu
LjA0OGVlMDM4MjNmZGQ5MDlmNmQwZjQ1ZWZlOWU3NDQ2M2IyNDRhNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMjIsNiArMTIyLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGRlYnVnR0xDYWxsKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgY2hhciogY29t
bWFuZCwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpOwogCiAgICAgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHByb2plY3Rpb25NYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX3Byb2plY3Rp
b25NYXRyaXg7IH0KKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgd2luZG93TWF0cml4
KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dNYXRyaXg7IH0KIAogICAgIGJvb2wgY2hlY2tUZXh0
dXJlU2l6ZShjb25zdCBJbnRTaXplJik7CiAgICAgaW50IG1heFRleHR1cmVTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXhUZXh0dXJlU2l6ZTsgfQpAQCAtMTMzLDYgKzEzNCw4IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21pdW06Ok1hc2tQcm9ncmFtKiByZW5kZXJTdXJm
YWNlTWFza1Byb2dyYW0oKTsKICAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0q
IHRpbGVyUHJvZ3JhbSgpOwogICAgIGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbVN3
aXp6bGUqIHRpbGVyUHJvZ3JhbVN3aXp6bGUoKTsKKyAgICBjb25zdCBMYXllclRpbGVyQ2hyb21p
dW06OlByb2dyYW1BQSogdGlsZXJQcm9ncmFtQUEoKTsKKyAgICBjb25zdCBMYXllclRpbGVyQ2hy
b21pdW06OlByb2dyYW1Td2l6emxlQUEqIHRpbGVyUHJvZ3JhbVN3aXp6bGVBQSgpOwogICAgIGNv
bnN0IENDQ2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFtKiBjYW52YXNMYXllclByb2dyYW0oKTsKICAg
ICBjb25zdCBDQ1BsdWdpbkxheWVySW1wbDo6UHJvZ3JhbSogcGx1Z2luTGF5ZXJQcm9ncmFtKCk7
CiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dyYW0qIHZpZGVvTGF5ZXJSR0JB
UHJvZ3JhbSgpOwpAQCAtMjExLDYgKzIxNCw3IEBAIHByaXZhdGU6CiAgICAgSW50UG9pbnQgbV92
aWV3cG9ydFNjcm9sbFBvc2l0aW9uOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9wcm9q
ZWN0aW9uTWF0cml4OworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fd2luZG93TWF0cml4Owog
CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwogICAgIE93blB0cjxMYXll
clRleHR1cmVVcGRhdGVyPiBtX3Jvb3RMYXllclRleHR1cmVVcGRhdGVyOwpAQCAtMjM5LDYgKzI0
Myw4IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6TWFza1By
b2dyYW0+IG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtOwogICAgIE93blB0cjxMYXllclRpbGVy
Q2hyb21pdW06OlByb2dyYW0+IG1fdGlsZXJQcm9ncmFtOwogICAgIE93blB0cjxMYXllclRpbGVy
Q2hyb21pdW06OlByb2dyYW1Td2l6emxlPiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGU7CisgICAgT3du
UHRyPExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbUFBPiBtX3RpbGVyUHJvZ3JhbUFBOworICAg
IE93blB0cjxMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW1Td2l6emxlQUE+IG1fdGlsZXJQcm9n
cmFtU3dpenpsZUFBOwogICAgIE93blB0cjxDQ0NhbnZhc0xheWVySW1wbDo6UHJvZ3JhbT4gbV9j
YW52YXNMYXllclByb2dyYW07CiAgICAgT3duUHRyPENDVmlkZW9MYXllckltcGw6OlJHQkFQcm9n
cmFtPiBtX3ZpZGVvTGF5ZXJSR0JBUHJvZ3JhbTsKICAgICBPd25QdHI8Q0NWaWRlb0xheWVySW1w
bDo6WVVWUHJvZ3JhbT4gbV92aWRlb0xheWVyWVVWUHJvZ3JhbTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVy
Q2hyb21pdW0uY3BwCmluZGV4IGEwYmQxMDhhODI1NGVjOWUzNmE4M2QzNTliNWE1YTg1YzY3N2M3
ZGIuLmEyODA1NzYzMzE0NzQ4ZDQzNmM2MzdmNTYzNjU2MTlmNWExNzEzZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJUaWxlckNocm9taXVtLmNwcApAQCAtODQsNiArODQsNyBAQCB2b2lkIExheWVyVGlsZXJD
aHJvbWl1bTo6c2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICByZXNldCgpOwog
CiAgICAgbV90aWxlU2l6ZSA9IHNpemU7CisgICAgbV90aWxpbmdEYXRhLnNldE1heFRleHR1cmVT
aXplKG1heChzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKIH0KIAogTGF5ZXJUZXh0dXJl
KiBMYXllclRpbGVyQ2hyb21pdW06OmdldFNpbmdsZVRleHR1cmUoKQpAQCAtMTg5LDEzICsxOTAs
OSBAQCBJbnRSZWN0IExheWVyVGlsZXJDaHJvbWl1bTo6dGlsZUNvbnRlbnRSZWN0KGNvbnN0IFRp
bGUqIHRpbGUpIGNvbnN0CiBJbnRSZWN0IExheWVyVGlsZXJDaHJvbWl1bTo6dGlsZUxheWVyUmVj
dChjb25zdCBUaWxlKiB0aWxlKSBjb25zdAogewogICAgIGNvbnN0IGludCBpbmRleCA9IG1fdGls
aW5nRGF0YS50aWxlSW5kZXgodGlsZS0+aSgpLCB0aWxlLT5qKCkpOwotICAgIHJldHVybiBtX3Rp
bGluZ0RhdGEudGlsZUJvdW5kc1dpdGhCb3JkZXIoaW5kZXgpOwotfQotCi1JbnRSZWN0IExheWVy
VGlsZXJDaHJvbWl1bTo6dGlsZVRleFJlY3QoY29uc3QgVGlsZSogdGlsZSkgY29uc3QKLXsKLSAg
ICBjb25zdCBpbnQgaW5kZXggPSBtX3RpbGluZ0RhdGEudGlsZUluZGV4KHRpbGUtPmkoKSwgdGls
ZS0+aigpKTsKLSAgICByZXR1cm4gbV90aWxpbmdEYXRhLnRpbGVCb3VuZHNXaXRoT3V0ZXJCb3Jk
ZXIoaW5kZXgpOworICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gbV90aWxpbmdEYXRhLnRpbGVCb3Vu
ZHNXaXRoQm9yZGVyKGluZGV4KTsKKyAgICBsYXllclJlY3Quc2V0U2l6ZShtX3RpbGVTaXplKTsK
KyAgICByZXR1cm4gbGF5ZXJSZWN0OwogfQogCiB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6aW52
YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCkBAIC0yMDMsOSArMjAwLDYg
QEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0KQogICAgIGlmIChjb250ZW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0Ry
YXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIEludFNpemUgb2xkTGF5ZXJTaXplKG1fdGlsaW5n
RGF0YS50b3RhbFNpemVYKCksIG1fdGlsaW5nRGF0YS50b3RhbFNpemVZKCkpOwotICAgIGNvbnN0
IEludFJlY3Qgb2xkTGF5ZXJSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBvbGRMYXllclNpemUp
OwotCiAgICAgZ3Jvd0xheWVyVG9Db250YWluKGNvbnRlbnRSZWN0KTsKIAogICAgIC8vIERpcnR5
IHJlY3RzIGFyZSBhbHdheXMgaW4gbGF5ZXIgc3BhY2UsIGFzIHRoZSBsYXllciBjb3VsZCBiZSBy
ZXBvc2l0aW9uZWQKQEAgLTIyMiwxMiArMjE2LDYgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06
OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAgICAgICAgICAg
SW50UmVjdCBib3VuZCA9IHRpbGVMYXllclJlY3QodGlsZSk7CiAgICAgICAgICAgICBib3VuZC5p
bnRlcnNlY3QobGF5ZXJSZWN0KTsKICAgICAgICAgICAgIHRpbGUtPm1fZGlydHlMYXllclJlY3Qu
dW5pdGUoYm91bmQpOwotCi0gICAgICAgICAgICAvLyBJbnZhbGlkYXRlIG9sZCBsYXllciBhcmVh
IHRvIGNsZWFyIGFueSBjb250ZW50cyBsZWZ0IGZyb20KLSAgICAgICAgICAgIC8vIHByZXZpb3Vz
IGxheWVyIHNpemUuCi0gICAgICAgICAgICBJbnRSZWN0IG9sZEJvdW5kID0gdGlsZUxheWVyUmVj
dCh0aWxlKTsKLSAgICAgICAgICAgIG9sZEJvdW5kLmludGVyc2VjdChvbGRMYXllclJlY3QpOwot
ICAgICAgICAgICAgdGlsZS0+bV9kaXJ0eUxheWVyUmVjdC51bml0ZShvbGRCb3VuZCk7CiAgICAg
ICAgIH0KICAgICB9CiB9CkBAIC0yODQsNyArMjcyLDYgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgTGF5ZXJUZXh0
dXIKICAgICAvLyBDcmVhdGUgdGlsZXMgYXMgbmVlZGVkLCBleHBhbmRpbmcgYSBkaXJ0eSByZWN0
IHRvIGNvbnRhaW4gYWxsCiAgICAgLy8gdGhlIGRpcnR5IHJlZ2lvbnMgY3VycmVudGx5IGJlaW5n
IGRyYXduLgogICAgIEludFJlY3QgZGlydHlMYXllclJlY3Q7Ci0gICAgSW50U2l6ZSB0aWxlU2l6
ZTsKICAgICBpbnQgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tOwogICAgIGNvbnRlbnRSZWN0VG9U
aWxlSW5kaWNlcyhjb250ZW50UmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKICAgICBm
b3IgKGludCBqID0gdG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CkBAIC0yOTMsMTkgKzI4MCwxNiBA
QCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0LCBMYXllclRleHR1cgogICAgICAgICAgICAgaWYgKCF0aWxlKQogICAgICAg
ICAgICAgICAgIHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwogCi0gICAgICAgICAgICBJbnRTaXpl
IHRleFNpemUgPSB0aWxlVGV4UmVjdCh0aWxlKS5zaXplKCk7Ci0gICAgICAgICAgICBpZiAoIXRp
bGUtPnRleHR1cmUoKS0+aXNWYWxpZCh0ZXhTaXplLCBtX3RleHR1cmVGb3JtYXQpKQorICAgICAg
ICAgICAgaWYgKCF0aWxlLT50ZXh0dXJlKCktPmlzVmFsaWQobV90aWxlU2l6ZSwgbV90ZXh0dXJl
Rm9ybWF0KSkKICAgICAgICAgICAgICAgICB0aWxlLT5tX2RpcnR5TGF5ZXJSZWN0ID0gdGlsZUxh
eWVyUmVjdCh0aWxlKTsKIAotICAgICAgICAgICAgaWYgKCF0aWxlLT50ZXh0dXJlKCktPnJlc2Vy
dmUodGV4U2l6ZSwgbV90ZXh0dXJlRm9ybWF0KSkgeworICAgICAgICAgICAgaWYgKCF0aWxlLT50
ZXh0dXJlKCktPnJlc2VydmUobV90aWxlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KSkgewogICAgICAg
ICAgICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXNldCgpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZGly
dHlMYXllclJlY3QudW5pdGUodGlsZS0+bV9kaXJ0eUxheWVyUmVjdCk7Ci0KLSAgICAgICAgICAg
IHRpbGVTaXplID0gdGlsZVNpemUuZXhwYW5kZWRUbyh0ZXhTaXplKTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtMzE4LDcgKzMwMiw3IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpwcmVwYXJl
VG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIExheWVyVGV4dHVyCiAgICAgaWYg
KGRpcnR5TGF5ZXJSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdGV4dHVy
ZVVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShtX3BhaW50UmVjdCwgdGlsZVNpemUsIG1fdGlsaW5n
RGF0YS5ib3JkZXJUZXhlbHMoKSk7CisgICAgdGV4dHVyZVVwZGF0ZXItPnByZXBhcmVUb1VwZGF0
ZShtX3BhaW50UmVjdCwgbV90aWxlU2l6ZSwgbV90aWxpbmdEYXRhLmJvcmRlclRleGVscygpKTsK
IH0KIAogdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0ZVJlY3QoTGF5ZXJUZXh0dXJlVXBk
YXRlciogdGV4dHVyZVVwZGF0ZXIpCkBAIC0zNDMsOCArMzI3LDcgQEAgdm9pZCBMYXllclRpbGVy
Q2hyb21pdW06OnVwZGF0ZVJlY3QoTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIp
CiAKICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBwYWdlLXNwYWNlIHJlY3RhbmdsZSB0byBjb3B5
IGZyb20uCiAgICAgICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3QgPSB0aWxlQ29udGVudFJlY3Qo
dGlsZSk7Ci0gICAgICAgICAgICBJbnRSZWN0IHRleFJlY3QgPSB0aWxlVGV4UmVjdCh0aWxlKTsK
LSAgICAgICAgICAgIGNvbnN0IEludFBvaW50IGFuY2hvciA9IHRleFJlY3QubG9jYXRpb24oKTsK
KyAgICAgICAgICAgIGNvbnN0IEludFBvaW50IGFuY2hvciA9IHNvdXJjZVJlY3QubG9jYXRpb24o
KTsKICAgICAgICAgICAgIHNvdXJjZVJlY3QuaW50ZXJzZWN0KGxheWVyUmVjdFRvQ29udGVudFJl
Y3QodGlsZS0+bV9kaXJ0eUxheWVyUmVjdCkpOwogICAgICAgICAgICAgLy8gUGFpbnQgcmVjdCBu
b3QgZ3VhcmFudGVlZCB0byBsaW5lIHVwIG9uIHRpbGUgYm91bmRhcmllcywgc28KICAgICAgICAg
ICAgIC8vIG1ha2Ugc3VyZSB0aGF0IHNvdXJjZVJlY3QgZG9lc24ndCBleHRlbmQgb3V0c2lkZSBv
ZiBpdC4KQEAgLTM5NCwxMiArMzc3LDIyIEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hCiAgICAg
aWYgKG1fc2tpcHNEcmF3IHx8ICFtX3RpbGVzLnNpemUoKSB8fCBjb250ZW50UmVjdC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIFVzZSBhbnRpLWFsaWFzaW5nIHByb2dyYW1z
IHdoZW4gYm9yZGVyIHRleGVscyBhcmUgcHJlc2V0IGFuZCB0cmFuc2Zvcm0KKyAgICAvLyBpcyBu
b3QgYW4gaW50ZWdlciB0cmFuc2xhdGlvbi4KKyAgICBib29sIHVzZUFBID0gKG1fdGlsaW5nRGF0
YS5ib3JkZXJUZXhlbHMoKSAmJiAhZ2xvYmFsVHJhbnNmb3JtLmlzSW50ZWdlclRyYW5zbGF0aW9u
KCkpOworCiAgICAgc3dpdGNoIChtX3NhbXBsZWRUZXhlbEZvcm1hdCkgewogICAgIGNhc2UgTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQToKLSAgICAgICAgZHJhd1Rp
bGVzKGNvbnRlbnRSZWN0LCBnbG9iYWxUcmFuc2Zvcm0sIG9wYWNpdHksIGxheWVyUmVuZGVyZXIo
KS0+dGlsZXJQcm9ncmFtKCkpOworICAgICAgICBpZiAodXNlQUEpCisgICAgICAgICAgICBkcmF3
VGlsZXMoY29udGVudFJlY3QsIGdsb2JhbFRyYW5zZm9ybSwgb3BhY2l0eSwgbGF5ZXJSZW5kZXJl
cigpLT50aWxlclByb2dyYW1BQSgpLCBsYXllclJlbmRlcmVyKCktPnRpbGVyUHJvZ3JhbUFBKCkt
PmZyYWdtZW50U2hhZGVyKCkuZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpLCBsYXllclJl
bmRlcmVyKCktPnRpbGVyUHJvZ3JhbUFBKCktPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0aW9u
KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkcmF3VGlsZXMoY29udGVudFJlY3QsIGds
b2JhbFRyYW5zZm9ybSwgb3BhY2l0eSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW0oKSwg
LTEsIC0xKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclRleHR1cmVVcGRhdGVyOjpT
YW1wbGVkVGV4ZWxGb3JtYXRCR1JBOgotICAgICAgICBkcmF3VGlsZXMoY29udGVudFJlY3QsIGds
b2JhbFRyYW5zZm9ybSwgb3BhY2l0eSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW1Td2l6
emxlKCkpOworICAgICAgICBpZiAodXNlQUEpCisgICAgICAgICAgICBkcmF3VGlsZXMoY29udGVu
dFJlY3QsIGdsb2JhbFRyYW5zZm9ybSwgb3BhY2l0eSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclBy
b2dyYW1Td2l6emxlQUEoKSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW1Td2l6emxlQUEo
KS0+ZnJhZ21lbnRTaGFkZXIoKS5mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uKCksIGxheWVy
UmVuZGVyZXIoKS0+dGlsZXJQcm9ncmFtU3dpenpsZUFBKCktPmZyYWdtZW50U2hhZGVyKCkuZWRn
ZUxvY2F0aW9uKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkcmF3VGlsZXMoY29udGVu
dFJlY3QsIGdsb2JhbFRyYW5zZm9ybSwgb3BhY2l0eSwgbGF5ZXJSZW5kZXJlcigpLT50aWxlclBy
b2dyYW1Td2l6emxlKCksIC0xLCAtMSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDExLDE3ICs0MDQsNyBAQCB2b2lkIExh
eWVyVGlsZXJDaHJvbWl1bTo6Z3Jvd0xheWVyVG9Db250YWluKGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0KQogICAgIC8vIEdyb3cgdGhlIHRpbGUgYXJyYXkgdG8gY29udGFpbiB0aGlzIGNvbnRl
bnQgcmVjdC4KICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNvbnRlbnRSZWN0VG9MYXllclJlY3Qo
Y29udGVudFJlY3QpOwogICAgIEludFNpemUgcmVjdFNpemUgPSBJbnRTaXplKGxheWVyUmVjdC5t
YXhYKCksIGxheWVyUmVjdC5tYXhZKCkpOwotICAgIEludFNpemUgdGV4U2l6ZSA9IG1fdGlsZVNp
emU7Ci0KLSAgICAvLyBVc2UgcmVjdCB3aXRoIGJvcmRlciB0ZXhlbHMgYXMgbWF4IHRleHR1cmUg
c2l6ZSB3aGVuIHRpbGUgc2l6ZQotICAgIC8vIGhhcyBub3QgYmVlbiBzcGVjaWZpZWQuCi0gICAg
aWYgKHRleFNpemUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRleFNpemUgPSByZWN0U2l6ZTsKLSAg
ICAgICAgaWYgKG1fdGlsaW5nRGF0YS5ib3JkZXJUZXhlbHMoKSkKLSAgICAgICAgICAgIHRleFNp
emUuZXhwYW5kKDIsIDIpOwotICAgIH0KIAotICAgIG1fdGlsaW5nRGF0YS5zZXRNYXhUZXh0dXJl
U2l6ZShtYXgodGV4U2l6ZS53aWR0aCgpLCB0ZXhTaXplLmhlaWdodCgpKSk7CiAgICAgSW50U2l6
ZSBvbGRMYXllclNpemUobV90aWxpbmdEYXRhLnRvdGFsU2l6ZVgoKSwgbV90aWxpbmdEYXRhLnRv
dGFsU2l6ZVkoKSk7CiAgICAgSW50U2l6ZSBuZXdTaXplID0gcmVjdFNpemUuZXhwYW5kZWRUbyhv
bGRMYXllclNpemUpOwogICAgIG1fdGlsaW5nRGF0YS5zZXRUb3RhbFNpemUobmV3U2l6ZS53aWR0
aCgpLCBuZXdTaXplLmhlaWdodCgpKTsKQEAgLTQ1NywxNCArNDQwLDkgQEAgc3RhdGljIEZsb2F0
UG9pbnQgaW50ZXJzZWN0KGNvbnN0IEVkZ2UmIGEsIGNvbnN0IEVkZ2UmIGIpCiB9CiAKIHRlbXBs
YXRlIDxjbGFzcyBUPgotdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXdUaWxlcyhjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGdsb2JhbFRy
YW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgVCogcHJvZ3JhbSkKK3ZvaWQgTGF5ZXJUaWxl
ckNocm9taXVtOjpkcmF3VGlsZXMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBnbG9iYWxUcmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIGNvbnN0
IFQqIHByb2dyYW0sIGludCBmcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uLCBpbnQgZWRnZUxv
Y2F0aW9uKQogewotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJl
ckNvbnRleHQoKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFt
LT5wcm9ncmFtKCkpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dy
YW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKLSAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTAp
KTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeChnbG9iYWxUcmFuc2Zvcm0pOwor
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeChsYXllclJlbmRlcmVyKCktPndpbmRvd01h
dHJpeCgpICogbGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCkgKiBnbG9iYWxUcmFu
c2Zvcm0pOwogCiAgICAgLy8gV2UgZG9uJ3QgY2FyZSBhYm91dCBaIGNvbXBvbmVudC4KICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXhYWVcgPQpAQCAtNDc4LDQ0ICs0NTYsNjUgQEAgdm9p
ZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggaW52ZXJzZSA9IG1hdHJpeFhZVy5pbnZlcnNlKCk7Ci0gICAgSW50UmVjdCBib3Vu
ZHMobV9sYXllclBvc2l0aW9uLCBJbnRTaXplKG1fdGlsaW5nRGF0YS50b3RhbFNpemVYKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdGlsaW5nRGF0YS50
b3RhbFNpemVZKCkpKTsKIAotICAgIC8vIEluY2x1ZGUgb3V0ZXIgYm9yZGVyIHRleGVscyBpbiBi
b3VuZHMuCi0gICAgYm91bmRzLmluZmxhdGUobV90aWxpbmdEYXRhLmJvcmRlclRleGVscygpKTsK
KyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7
CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgp
KSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVu
dFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiAKLSAgICAv
LyBNYXAgYm91bmRzIHRvIGRldmljZSBzcGFjZS4KLSAgICBGbG9hdFF1YWQgYm91bmRzUXVhZCA9
IG1hdHJpeC5tYXBRdWFkKEZsb2F0UXVhZChib3VuZHMpKTsKKyAgICAvLyBNYXAgY29udGVudCBy
ZWN0YW5nbGUgdG8gZGV2aWNlIHNwYWNlLgorICAgIEZsb2F0UXVhZCBkZXZpY2VRdWFkID0gbWF0
cml4Lm1hcFF1YWQoRmxvYXRRdWFkKGNvbnRlbnRSZWN0KSk7CiAKICAgICAvLyBDb3VudGVyLWNs
b2Nrd2lzZT8KLSAgICBmbG9hdCBzaWduID0gaXNDQ1coYm91bmRzUXVhZCkgPyAtMSA6IDE7Cisg
ICAgZmxvYXQgc2lnbiA9IGlzQ0NXKGRldmljZVF1YWQpID8gLTEgOiAxOwogCiAgICAgLy8gQ29t
cHV0ZSBvdXRlciBlZGdlcy4KLSAgICBFZGdlIGxlZnRFZGdlID0gY29tcHV0ZUVkZ2UoYm91bmRz
UXVhZC5wNCgpLCBib3VuZHNRdWFkLnAxKCksIHNpZ24pOwotICAgIEVkZ2UgcmlnaHRFZGdlID0g
Y29tcHV0ZUVkZ2UoYm91bmRzUXVhZC5wMigpLCBib3VuZHNRdWFkLnAzKCksIHNpZ24pOwotICAg
IEVkZ2UgdG9wRWRnZSA9IGNvbXB1dGVFZGdlKGJvdW5kc1F1YWQucDEoKSwgYm91bmRzUXVhZC5w
MigpLCBzaWduKTsKLSAgICBFZGdlIGJvdHRvbUVkZ2UgPSBjb21wdXRlRWRnZShib3VuZHNRdWFk
LnAzKCksIGJvdW5kc1F1YWQucDQoKSwgc2lnbik7Ci0KLSAgICAvLyBNb3ZlIG91dGVyIGVkZ2Vz
IHRvIGVuc3VyZSB0aGF0IGFsbCBwYXJ0aWFsbHkgY292ZXJlZCBwaXhlbHMgYXJlCi0gICAgLy8g
cHJvY2Vzc2VkLgotICAgIGZsb2F0IHpEaXN0YW5jZSA9IG1fdGlsaW5nRGF0YS5ib3JkZXJUZXhl
bHMoKSAqIDAuNWY7Ci0gICAgbGVmdEVkZ2UubW92ZSgwLCAwLCB6RGlzdGFuY2UpOwotICAgIHJp
Z2h0RWRnZS5tb3ZlKDAsIDAsIHpEaXN0YW5jZSk7Ci0gICAgdG9wRWRnZS5tb3ZlKDAsIDAsIHpE
aXN0YW5jZSk7Ci0gICAgYm90dG9tRWRnZS5tb3ZlKDAsIDAsIHpEaXN0YW5jZSk7Ci0KLSAgICBH
QzNEaW50IGZpbHRlciA9IChtX3RpbGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkgJiYgIW1hdHJpeC5p
c0ludGVnZXJUcmFuc2xhdGlvbigpKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIgOiBHcmFw
aGljc0NvbnRleHQzRDo6TkVBUkVTVDsKKyAgICBFZGdlIGxlZnRFZGdlID0gY29tcHV0ZUVkZ2Uo
ZGV2aWNlUXVhZC5wNCgpLCBkZXZpY2VRdWFkLnAxKCksIHNpZ24pOworICAgIEVkZ2UgcmlnaHRF
ZGdlID0gY29tcHV0ZUVkZ2UoZGV2aWNlUXVhZC5wMigpLCBkZXZpY2VRdWFkLnAzKCksIHNpZ24p
OworICAgIEVkZ2UgdG9wRWRnZSA9IGNvbXB1dGVFZGdlKGRldmljZVF1YWQucDEoKSwgZGV2aWNl
UXVhZC5wMigpLCBzaWduKTsKKyAgICBFZGdlIGJvdHRvbUVkZ2UgPSBjb21wdXRlRWRnZShkZXZp
Y2VRdWFkLnAzKCksIGRldmljZVF1YWQucDQoKSwgc2lnbik7CisKKyAgICBpZiAoZWRnZUxvY2F0
aW9uICE9IC0xKSB7CisgICAgICAgIC8vIE1vdmUgb3V0ZXIgZWRnZXMgdG8gZW5zdXJlIHRoYXQg
YWxsIHBhcnRpYWxseSBjb3ZlcmVkIHBpeGVscyBhcmUKKyAgICAgICAgLy8gcHJvY2Vzc2VkLgor
ICAgICAgICBsZWZ0RWRnZS5tb3ZlKDAsIDAsIDAuNWYpOworICAgICAgICByaWdodEVkZ2UubW92
ZSgwLCAwLCAwLjVmKTsKKyAgICAgICAgdG9wRWRnZS5tb3ZlKDAsIDAsIDAuNWYpOworICAgICAg
ICBib3R0b21FZGdlLm1vdmUoMCwgMCwgMC41Zik7CisKKyAgICAgICAgZmxvYXQgZWRnZVsxMl07
CisgICAgICAgIGVkZ2VbMF0gPSBsZWZ0RWRnZS54KCk7CisgICAgICAgIGVkZ2VbMV0gPSBsZWZ0
RWRnZS55KCk7CisgICAgICAgIGVkZ2VbMl0gPSBsZWZ0RWRnZS56KCk7CisgICAgICAgIGVkZ2Vb
M10gPSB0b3BFZGdlLngoKTsKKyAgICAgICAgZWRnZVs0XSA9IHRvcEVkZ2UueSgpOworICAgICAg
ICBlZGdlWzVdID0gdG9wRWRnZS56KCk7CisgICAgICAgIGVkZ2VbNl0gPSByaWdodEVkZ2UueCgp
OworICAgICAgICBlZGdlWzddID0gcmlnaHRFZGdlLnkoKTsKKyAgICAgICAgZWRnZVs4XSA9IHJp
Z2h0RWRnZS56KCk7CisgICAgICAgIGVkZ2VbOV0gPSBib3R0b21FZGdlLngoKTsKKyAgICAgICAg
ZWRnZVsxMF0gPSBib3R0b21FZGdlLnkoKTsKKyAgICAgICAgZWRnZVsxMV0gPSBib3R0b21FZGdl
LnooKTsKKyAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0zZnYoZWRnZUxvY2F0
aW9uLCBlZGdlLCA0KSk7CisgICAgfQogCiAgICAgRWRnZSBwcmV2RWRnZVkgPSB0b3BFZGdlOwog
CiAgICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKICAgICBjb250ZW50UmVjdFRvVGls
ZUluZGljZXMoY29udGVudFJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CisgICAgSW50
UmVjdCBsYXllclJlY3QgPSBjb250ZW50UmVjdFRvTGF5ZXJSZWN0KGNvbnRlbnRSZWN0KTsKICAg
ICBmb3IgKGludCBqID0gdG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIEVkZ2UgcHJl
dkVkZ2VYID0gbGVmdEVkZ2U7CiAKICAgICAgICAgRWRnZSBlZGdlWSA9IGJvdHRvbUVkZ2U7CiAg
ICAgICAgIGlmIChqIDwgKG1fdGlsaW5nRGF0YS5udW1UaWxlc1koKSAtIDEpKSB7Ci0gICAgICAg
ICAgICBJbnRSZWN0IHRpbGVSZWN0ID0gbV90aWxpbmdEYXRhLnRpbGVCb3VuZHMobV90aWxpbmdE
YXRhLnRpbGVJbmRleCgwLCBqKSk7CisgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0ID0gdW5p
b25SZWN0KG1fdGlsaW5nRGF0YS50aWxlQm91bmRzKG1fdGlsaW5nRGF0YS50aWxlSW5kZXgoMCwg
aikpLCBtX3RpbGluZ0RhdGEudGlsZUJvdW5kcyhtX3RpbGluZ0RhdGEudGlsZUluZGV4KG1fdGls
aW5nRGF0YS5udW1UaWxlc1goKSAtIDEsIGopKSk7CisgICAgICAgICAgICB0aWxlUmVjdC5pbnRl
cnNlY3QobGF5ZXJSZWN0KTsKKworICAgICAgICAgICAgLy8gU2tpcCBlbXB0eSByb3dzLgorICAg
ICAgICAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKwogICAgICAgICAgICAgdGlsZVJlY3QubW92ZShtX2xheWVyUG9zaXRpb24ueCgpLCBtX2xh
eWVyUG9zaXRpb24ueSgpKTsKIAogICAgICAgICAgICAgRmxvYXRQb2ludCBwMSh0aWxlUmVjdC5t
YXhYKCksIHRpbGVSZWN0Lm1heFkoKSk7CkBAIC01MzcsMjcgKzUzNiw1OCBAQCB2b2lkIExheWVy
VGlsZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdAogICAgICAgICAgICAgQVNTRVJUKHRpbGUtPnRleHR1cmUoKS0+aXNSZXNl
cnZlZCgpKTsKIAogICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5iaW5kVGV4dHVyZSgpOwot
ICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxU
RVIsIGZpbHRlcikpOwotICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikpOwogCiAgICAgICAgICAgICAvLyBEb24ndCB1c2Ug
dGlsZUNvbnRlbnRSZWN0IGhlcmUsIGFzIHRoYXQgY29udGFpbnMgdGhlIGZ1bGwKICAgICAgICAg
ICAgIC8vIHJlY3Qgd2l0aCBib3JkZXIgdGV4ZWxzIHdoaWNoIHNob3VsZG4ndCBiZSBkcmF3bi4K
ICAgICAgICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSBtX3RpbGluZ0RhdGEudGlsZUJvdW5kcyht
X3RpbGluZ0RhdGEudGlsZUluZGV4KHRpbGUtPmkoKSwgdGlsZS0+aigpKSk7CisgICAgICAgICAg
ICBJbnRSZWN0IGRpc3BsYXlSZWN0ID0gdGlsZVJlY3Q7CisgICAgICAgICAgICB0aWxlUmVjdC5p
bnRlcnNlY3QobGF5ZXJSZWN0KTsKKworICAgICAgICAgICAgLy8gS2VlcCB0cmFjayBvZiBob3cg
dGhlIHRvcCBsZWZ0IGhhcyBtb3ZlZCwgc28gdGhlIHRleHR1cmUgY2FuIGJlCisgICAgICAgICAg
ICAvLyBvZmZzZXQgdGhlIHNhbWUgYW1vdW50LgorICAgICAgICAgICAgSW50U2l6ZSBkaXNwbGF5
T2Zmc2V0ID0gdGlsZVJlY3QubWluWE1pbllDb3JuZXIoKSAtIGRpc3BsYXlSZWN0Lm1pblhNaW5Z
Q29ybmVyKCk7CisKKyAgICAgICAgICAgIC8vIFNraXAgZW1wdHkgdGlsZXMuCisgICAgICAgICAg
ICBpZiAodGlsZVJlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCiAg
ICAgICAgICAgICB0aWxlUmVjdC5tb3ZlKG1fbGF5ZXJQb3NpdGlvbi54KCksIG1fbGF5ZXJQb3Np
dGlvbi55KCkpOwogCi0gICAgICAgICAgICBJbnRQb2ludCB0ZXhPZmZzZXQgPSBtX3RpbGluZ0Rh
dGEudGV4dHVyZU9mZnNldCgpOwotICAgICAgICAgICAgSW50UmVjdCB0ZXhSZWN0ID0gdGlsZVRl
eFJlY3QodGlsZSk7Ci0gICAgICAgICAgICBmbG9hdCB0aWxlV2lkdGggPSBzdGF0aWNfY2FzdDxm
bG9hdD4odGV4UmVjdC53aWR0aCgpKTsKLSAgICAgICAgICAgIGZsb2F0IHRpbGVIZWlnaHQgPSBz
dGF0aWNfY2FzdDxmbG9hdD4odGV4UmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBmbG9hdCB0
ZXhUcmFuc2xhdGVYID0gKHRleE9mZnNldC54KCkgLSB0aWxlUmVjdC54KCkpIC8gdGlsZVdpZHRo
OwotICAgICAgICAgICAgZmxvYXQgdGV4VHJhbnNsYXRlWSA9ICh0ZXhPZmZzZXQueSgpIC0gdGls
ZVJlY3QueSgpKSAvIHRpbGVIZWlnaHQ7Ci0gICAgICAgICAgICBmbG9hdCB0ZXhTY2FsZVggPSB0
aWxlUmVjdC53aWR0aCgpIC8gdGlsZVdpZHRoOwotICAgICAgICAgICAgZmxvYXQgdGV4U2NhbGVZ
ID0gdGlsZVJlY3QuaGVpZ2h0KCkgLyB0aWxlSGVpZ2h0OworICAgICAgICAgICAgRmxvYXRSZWN0
IGNsYW1wUmVjdCh0aWxlUmVjdCk7CisgICAgICAgICAgICAvLyBDbGFtcCB0ZXh0dXJlIGNvb3Jk
aW5hdGVzIHRvIGF2b2lkIHNhbXBsaW5nIG91dHNpZGUgdGhlIGxheWVyCisgICAgICAgICAgICAv
LyBieSBkZWZsYXRpbmcgdGhlIHRpbGUgcmVnaW9uIGhhbGYgYSB0ZXhlbCBvciBoYWxmIGEgdGV4
ZWwKKyAgICAgICAgICAgIC8vIG1pbnVzIGVwc2lsb24gZm9yIG9uZSBwaXhlbCBsYXllcnMuIFRo
ZSByZXN1bHRpbmcgY2xhbXAgcmVnaW9uCisgICAgICAgICAgICAvLyBpcyBtYXBwZWQgdG8gdGhl
IHVuaXQgc3F1YXJlIGJ5IHRoZSB2ZXJ0ZXggc2hhZGVyIGFuZCBtYXBwZWQKKyAgICAgICAgICAg
IC8vIGJhY2sgdG8gbm9ybWFsaXplZCB0ZXh0dXJlIGNvb3JkaW5hdGVzIGJ5IHRoZSBmcmFnbWVu
dCBzaGFkZXIKKyAgICAgICAgICAgIC8vIGFmdGVyIGJlaW5nIGNsYW1wZWQgdG8gMC0xIHJhbmdl
LgorICAgICAgICAgICAgY29uc3QgZmxvYXQgZXBzaWxvbiA9IDEgLyAxMDI0LjBmOworICAgICAg
ICAgICAgZmxvYXQgY2xhbXBYID0gbWluKDAuNSwgY2xhbXBSZWN0LndpZHRoKCkgLyAyLjAgLSBl
cHNpbG9uKTsKKyAgICAgICAgICAgIGZsb2F0IGNsYW1wWSA9IG1pbigwLjUsIGNsYW1wUmVjdC5o
ZWlnaHQoKSAvIDIuMCAtIGVwc2lsb24pOworICAgICAgICAgICAgY2xhbXBSZWN0LmluZmxhdGVY
KC1jbGFtcFgpOworICAgICAgICAgICAgY2xhbXBSZWN0LmluZmxhdGVZKC1jbGFtcFkpOworICAg
ICAgICAgICAgRmxvYXRTaXplIGNsYW1wT2Zmc2V0ID0gY2xhbXBSZWN0Lm1pblhNaW5ZQ29ybmVy
KCkgLSBGbG9hdFJlY3QodGlsZVJlY3QpLm1pblhNaW5ZQ29ybmVyKCk7CisKKyAgICAgICAgICAg
IEZsb2F0UG9pbnQgdGV4T2Zmc2V0ID0gbV90aWxpbmdEYXRhLnRleHR1cmVPZmZzZXQodGlsZS0+
aSgpLCB0aWxlLT5qKCkpICsgY2xhbXBPZmZzZXQgKyBGbG9hdFNpemUoZGlzcGxheU9mZnNldCk7
CisgICAgICAgICAgICBmbG9hdCB0aWxlV2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4obV90aWxl
U2l6ZS53aWR0aCgpKTsKKyAgICAgICAgICAgIGZsb2F0IHRpbGVIZWlnaHQgPSBzdGF0aWNfY2Fz
dDxmbG9hdD4obV90aWxlU2l6ZS5oZWlnaHQoKSk7CisKKyAgICAgICAgICAgIC8vIE1hcCBjbGFt
cGluZyByZWN0YW5nbGUgdG8gdW5pdCBzcXVhcmUuCisgICAgICAgICAgICBmbG9hdCB2ZXJ0ZXhU
ZXhUcmFuc2xhdGVYID0gLWNsYW1wUmVjdC54KCkgLyBjbGFtcFJlY3Qud2lkdGgoKTsKKyAgICAg
ICAgICAgIGZsb2F0IHZlcnRleFRleFRyYW5zbGF0ZVkgPSAtY2xhbXBSZWN0LnkoKSAvIGNsYW1w
UmVjdC5oZWlnaHQoKTsKKyAgICAgICAgICAgIGZsb2F0IHZlcnRleFRleFNjYWxlWCA9IHRpbGVS
ZWN0LndpZHRoKCkgLyBjbGFtcFJlY3Qud2lkdGgoKTsKKyAgICAgICAgICAgIGZsb2F0IHZlcnRl
eFRleFNjYWxlWSA9IHRpbGVSZWN0LmhlaWdodCgpIC8gY2xhbXBSZWN0LmhlaWdodCgpOworCisg
ICAgICAgICAgICAvLyBNYXAgdG8gbm9ybWFsaXplZCB0ZXh0dXJlIGNvb3JkaW5hdGVzLgorICAg
ICAgICAgICAgZmxvYXQgZnJhZ21lbnRUZXhUcmFuc2xhdGVYID0gdGV4T2Zmc2V0LngoKSAvIHRp
bGVXaWR0aDsKKyAgICAgICAgICAgIGZsb2F0IGZyYWdtZW50VGV4VHJhbnNsYXRlWSA9IHRleE9m
ZnNldC55KCkgLyB0aWxlSGVpZ2h0OworICAgICAgICAgICAgZmxvYXQgZnJhZ21lbnRUZXhTY2Fs
ZVggPSBjbGFtcFJlY3Qud2lkdGgoKSAvIHRpbGVXaWR0aDsKKyAgICAgICAgICAgIGZsb2F0IGZy
YWdtZW50VGV4U2NhbGVZID0gY2xhbXBSZWN0LmhlaWdodCgpIC8gdGlsZUhlaWdodDsKKwogICAg
ICAgICAgICAgLy8gT3BlbkdMIGNvb3JkaW5hdGUgc3lzdGVtIGlzIGJvdHRvbS11cC4KICAgICAg
ICAgICAgIC8vIElmIHRpbGUgdGV4dHVyZSBpcyB0b3AtZG93biwgd2UgbmVlZCB0byBmbGlwIHRo
ZSB0ZXh0dXJlIGNvb3JkaW5hdGVzLgogICAgICAgICAgICAgaWYgKG1fdGV4dHVyZU9yaWVudGF0
aW9uID09IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRvcERvd25PcmllbnRhdGlvbikgewotICAgICAg
ICAgICAgICAgIHRleFRyYW5zbGF0ZVkgPSAxLjAgLSB0ZXhUcmFuc2xhdGVZOwotICAgICAgICAg
ICAgICAgIHRleFNjYWxlWSAqPSAtMS4wOworICAgICAgICAgICAgICAgIGZyYWdtZW50VGV4VHJh
bnNsYXRlWSA9IDEuMCAtIGZyYWdtZW50VGV4VHJhbnNsYXRlWTsKKyAgICAgICAgICAgICAgICBm
cmFnbWVudFRleFNjYWxlWSAqPSAtMS4wOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBF
ZGdlIGVkZ2VYID0gcmlnaHRFZGdlOwpAQCAtNTg1LDUzICs2MTUsNTAgQEAgdm9pZCBMYXllclRp
bGVyQ2hyb21pdW06OmRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3Qg
VHJhbnNmb3JtYXQKICAgICAgICAgICAgIC8vIE5vcm1hbGl6ZSB0byB0aWxlUmVjdC4KICAgICAg
ICAgICAgIHF1YWQuc2NhbGUoMS4wZiAvIHRpbGVSZWN0LndpZHRoKCksIDEuMGYgLyB0aWxlUmVj
dC5oZWlnaHQoKSk7CiAKLSAgICAgICAgICAgIGRyYXdUZXh0dXJlZFF1YWQoY29udGV4dCwgcXVh
ZCwgbGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCksIG1hdHJpeCwgdGlsZVJlY3Qu
d2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIG9wYWNpdHksIHRleFRyYW5zbGF0ZVgsIHRleFRy
YW5zbGF0ZVksIHRleFNjYWxlWCwgdGV4U2NhbGVZLCBwcm9ncmFtKTsKKyAgICAgICAgICAgIGlm
IChmcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uID09IC0xKSB7CisgICAgICAgICAgICAgICAg
Ly8gTW92ZSBmcmFnbWVudCBzaGFkZXIgdHJhbnNmb3JtIHRvIHZlcnRleCBzaGFkZXIuIFdlIGNh
biBkbworICAgICAgICAgICAgICAgIC8vIHRoaXMgd2hpbGUgc3RpbGwgcHJvZHVjaW5nIGNvcnJl
Y3QgcmVzdWx0cyBhcworICAgICAgICAgICAgICAgIC8vIGZyYWdtZW50VGV4VHJhbnNmb3JtTG9j
YXRpb24gc2hvdWxkIGFsd2F5cyBiZSBub24tbmVnYXRpdmUKKyAgICAgICAgICAgICAgICAvLyB3
aGVuIHRpbGVzIGFyZSB0cmFuc2Zvcm1lZCBpbiBhIHdheSB0aGF0IGNvdWxkIHJlc3VsdCBpbgor
ICAgICAgICAgICAgICAgIC8vIHNhbXBsaW5nIG91dHNpZGUgdGhlIGxheWVyLgorICAgICAgICAg
ICAgICAgIHZlcnRleFRleFNjYWxlWCAqPSBmcmFnbWVudFRleFNjYWxlWDsKKyAgICAgICAgICAg
ICAgICB2ZXJ0ZXhUZXhTY2FsZVkgKj0gZnJhZ21lbnRUZXhTY2FsZVk7CisgICAgICAgICAgICAg
ICAgdmVydGV4VGV4VHJhbnNsYXRlWCAqPSBmcmFnbWVudFRleFNjYWxlWDsKKyAgICAgICAgICAg
ICAgICB2ZXJ0ZXhUZXhUcmFuc2xhdGVZICo9IGZyYWdtZW50VGV4U2NhbGVZOworICAgICAgICAg
ICAgICAgIHZlcnRleFRleFRyYW5zbGF0ZVggKz0gZnJhZ21lbnRUZXhUcmFuc2xhdGVYOworICAg
ICAgICAgICAgICAgIHZlcnRleFRleFRyYW5zbGF0ZVkgKz0gZnJhZ21lbnRUZXhUcmFuc2xhdGVZ
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPnVuaWZvcm00ZihmcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uLCBmcmFnbWVudFRleFRy
YW5zbGF0ZVgsIGZyYWdtZW50VGV4VHJhbnNsYXRlWSwgZnJhZ21lbnRUZXhTY2FsZVgsIGZyYWdt
ZW50VGV4U2NhbGVZKSk7CisKKyAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlm
b3JtNGYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkudmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb24o
KSwgdmVydGV4VGV4VHJhbnNsYXRlWCwgdmVydGV4VGV4VHJhbnNsYXRlWSwgdmVydGV4VGV4U2Nh
bGVYLCB2ZXJ0ZXhUZXhTY2FsZVkpKTsKKworICAgICAgICAgICAgZmxvYXQgcG9pbnRbOF07Cisg
ICAgICAgICAgICBwb2ludFswXSA9IHF1YWQucDEoKS54KCk7CisgICAgICAgICAgICBwb2ludFsx
XSA9IHF1YWQucDEoKS55KCk7CisgICAgICAgICAgICBwb2ludFsyXSA9IHF1YWQucDIoKS54KCk7
CisgICAgICAgICAgICBwb2ludFszXSA9IHF1YWQucDIoKS55KCk7CisgICAgICAgICAgICBwb2lu
dFs0XSA9IHF1YWQucDMoKS54KCk7CisgICAgICAgICAgICBwb2ludFs1XSA9IHF1YWQucDMoKS55
KCk7CisgICAgICAgICAgICBwb2ludFs2XSA9IHF1YWQucDQoKS54KCk7CisgICAgICAgICAgICBw
b2ludFs3XSA9IHF1YWQucDQoKS55KCk7CisgICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dW5pZm9ybTJmdihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5wb2ludExvY2F0aW9uKCksIHBv
aW50LCA0KSk7CisKKyAgICAgICAgICAgIExheWVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQo
Y29udGV4dCwgbGF5ZXJSZW5kZXJlcigpLT5wcm9qZWN0aW9uTWF0cml4KCksIGdsb2JhbFRyYW5z
Zm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZVJl
Y3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIG9wYWNpdHksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJp
eExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpKTsKIAogICAgICAgICAg
ICAgcHJldkVkZ2VYID0gZWRnZVg7CisgICAgICAgICAgICAvLyBSZXZlcnNlIGRpcmVjdGlvbi4K
KyAgICAgICAgICAgIHByZXZFZGdlWC5zY2FsZSgtMSwgLTEsIC0xKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHByZXZFZGdlWSA9IGVkZ2VZOworICAgICAgICAvLyBSZXZlcnNlIGRpcmVjdGlvbi4K
KyAgICAgICAgcHJldkVkZ2VZLnNjYWxlKC0xLCAtMSwgLTEpOwogICAgIH0KIH0KIAotdGVtcGxh
dGUgPGNsYXNzIFQ+Ci12b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVkUXVhZChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIGRyYXdNYXRyaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBvcGFjaXR5LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdGV4VHJhbnNsYXRlWCwg
ZmxvYXQgdGV4VHJhbnNsYXRlWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsb2F0IHRleFNjYWxlWCwgZmxvYXQgdGV4U2NhbGVZLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCogcHJvZ3JhbSkKLXsKLSAgICBzdGF0
aWMgZmxvYXQgZ2xNYXRyaXhbMTZdOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVy
TWF0cml4ID0gZHJhd01hdHJpeDsKLQotICAgIC8vIEFwcGx5IGEgc2NhbGluZyBmYWN0b3IgdG8g
c2l6ZSB0aGUgcXVhZCBmcm9tIDF4MSB0byBpdHMgaW50ZW5kZWQgc2l6ZS4KLSAgICByZW5kZXJN
YXRyaXguc2NhbGUzZCh3aWR0aCwgaGVpZ2h0LCAxKTsKLQotICAgIC8vIEFwcGx5IHRoZSBwcm9q
ZWN0aW9uIG1hdHJpeCBiZWZvcmUgc2VuZGluZyB0aGUgdHJhbnNmb3JtIG92ZXIgdG8gdGhlIHNo
YWRlci4KLSAgICBMYXllckNocm9taXVtOjp0b0dMTWF0cml4KCZnbE1hdHJpeFswXSwgcHJvamVj
dGlvbk1hdHJpeCAqIHJlbmRlck1hdHJpeCk7Ci0KLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
dW5pZm9ybU1hdHJpeDRmdihwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigp
LCBmYWxzZSwgJmdsTWF0cml4WzBdLCAxKSk7Ci0KLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
dW5pZm9ybTFmKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLCBvcGFj
aXR5KSk7Ci0KLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTRmKHByb2dyYW0tPnZl
cnRleFNoYWRlcigpLnRleFRyYW5zZm9ybUxvY2F0aW9uKCksCi0gICAgICAgIHRleFRyYW5zbGF0
ZVgsIHRleFRyYW5zbGF0ZVksIHRleFNjYWxlWCwgdGV4U2NhbGVZKSk7Ci0KLSAgICBmbG9hdCBw
b2ludFs4XTsKLSAgICBwb2ludFswXSA9IHF1YWQucDEoKS54KCk7Ci0gICAgcG9pbnRbMV0gPSBx
dWFkLnAxKCkueSgpOwotICAgIHBvaW50WzJdID0gcXVhZC5wMigpLngoKTsKLSAgICBwb2ludFsz
XSA9IHF1YWQucDIoKS55KCk7Ci0gICAgcG9pbnRbNF0gPSBxdWFkLnAzKCkueCgpOwotICAgIHBv
aW50WzVdID0gcXVhZC5wMygpLnkoKTsKLSAgICBwb2ludFs2XSA9IHF1YWQucDQoKS54KCk7Ci0g
ICAgcG9pbnRbN10gPSBxdWFkLnA0KCkueSgpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51
bmlmb3JtMmZ2KHByb2dyYW0tPnZlcnRleFNoYWRlcigpLnBvaW50TG9jYXRpb24oKSwgcG9pbnQs
IDQpKTsKLQotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kcmF3RWxlbWVudHMoR3JhcGhpY3ND
b250ZXh0M0Q6OlRSSUFOR0xFUywgNiwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JU
LCAwKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgKaW5kZXggNDhm
NGY5ZjIwOGQzN2ZjZGI5YTJlY2JkNGVlMzk1MzA1NzU4OGIxZi4uYjQ1NWJhMjQ3MmQwNmJiNjkz
NTg5ZGEwY2QyNGYzNzAxYTM2ZDYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgKQEAg
LTc1LDEwICs3NSwxNCBAQCBwdWJsaWM6CiAgICAgLy8gcmVjeWNsZWQgYnkgdGhlIHRleHR1cmUg
bWFuYWdlci4KICAgICB2b2lkIHByb3RlY3RUaWxlVGV4dHVyZXMoY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QpOwogCi0gICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJRdWFk
LCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYT4gUHJvZ3JhbTsKKyAgICB0eXBlZGVmIFByb2dy
YW1CaW5kaW5nPFZlcnRleFNoYWRlclRpbGUsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhPiBQ
cm9ncmFtOwogICAgIC8vIFNoYWRlciBwcm9ncmFtIHRoYXQgc3dhcHMgcmVkIGFuZCBibHVlIGNv
bXBvbmVudHMgb2YgdGV4dHVyZS4KICAgICAvLyBVc2VkIHdoZW4gdGV4dHVyZSBmb3JtYXQgZG9l
cyBub3QgbWF0Y2ggbmF0aXZlIGNvbG9yIGZvcm1hdC4KLSAgICB0eXBlZGVmIFByb2dyYW1CaW5k
aW5nPFZlcnRleFNoYWRlclF1YWQsIEZyYWdtZW50U2hhZGVyUkdCQVRleFN3aXp6bGVBbHBoYT4g
UHJvZ3JhbVN3aXp6bGU7CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJU
aWxlLCBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGE+IFByb2dyYW1Td2l6emxlOwor
CisgICAgLy8gU2hhZGVyIHByb2dyYW0gdGhhdCBwcm9kdWNlcyBhbnRpLWFsaWFzZWQgbGF5ZXIg
ZWRnZXMuCisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJUaWxlLCBGcmFn
bWVudFNoYWRlclJHQkFUZXhBbHBoYUFBPiBQcm9ncmFtQUE7CisgICAgdHlwZWRlZiBQcm9ncmFt
QmluZGluZzxWZXJ0ZXhTaGFkZXJUaWxlLCBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxw
aGFBQT4gUHJvZ3JhbVN3aXp6bGVBQTsKIAogICAgIC8vIElmIHRoaXMgdGlsZXIgaGFzIGV4YWN0
bHkgb25lIHRpbGUsIHJldHVybiBpdHMgdGV4dHVyZS4gT3RoZXJ3aXNlLCBudWxsLgogICAgIExh
eWVyVGV4dHVyZSogZ2V0U2luZ2xlVGV4dHVyZSgpOwpAQCAtMTEwLDE0ICsxMTQsNyBAQCBwcml2
YXRlOgogCiAgICAgLy8gRHJhdyBhbGwgdGlsZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50
UmVjdC4KICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICB2b2lkIGRyYXdUaWxlcyhjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBv
cGFjaXR5LCBjb25zdCBUKiBwcm9ncmFtKTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAg
IHZvaWQgZHJhd1RleHR1cmVkUXVhZChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEZsb2F0UXVh
ZCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0eSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgdGV4VHJhbnNsYXRlWCwgZmxvYXQgdGV4VHJhbnNsYXRlWSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdGV4U2NhbGVYLCBmbG9hdCB0ZXhTY2Fs
ZVksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQqIHByb2dyYW0pOworICAgIHZv
aWQgZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IFQqIHByb2dyYW0sIGludCBmcmFnbWVu
dFRleFRyYW5zZm9ybUxvY2F0aW9uLCBpbnQgZWRnZUxvY2F0aW9uKTsKIAogICAgIC8vIEdyb3cg
bGF5ZXIgc2l6ZSB0byBjb250YWluIHRoaXMgcmVjdGFuZ2xlLgogICAgIHZvaWQgZ3Jvd0xheWVy
VG9Db250YWluKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKQEAgLTEzNSw3ICsxMzIsNiBA
QCBwcml2YXRlOgogICAgIFRpbGUqIHRpbGVBdChpbnQsIGludCkgY29uc3Q7CiAgICAgSW50UmVj
dCB0aWxlQ29udGVudFJlY3QoY29uc3QgVGlsZSopIGNvbnN0OwogICAgIEludFJlY3QgdGlsZUxh
eWVyUmVjdChjb25zdCBUaWxlKikgY29uc3Q7Ci0gICAgSW50UmVjdCB0aWxlVGV4UmVjdChjb25z
dCBUaWxlKikgY29uc3Q7CiAKICAgICBHQzNEZW51bSBtX3RleHR1cmVGb3JtYXQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1No
YWRlckNocm9taXVtLmNwcAppbmRleCA1MGRlODA0N2QxYjdiOWQxM2ZmNzE5NjM4YzM2MjBlYjVm
YTY5ZGFiLi5jYTEzODdmNzdmYzc4ZTQ2MWZlZmRmNTg5Zjc4NmE2YTUyOGZkNDVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2hhZGVyQ2hyb21pdW0uY3BwCkBAIC0xNTAsMjkgKzE1MCwyOSBAQCBTdHJpbmcgVmVydGV4U2hh
ZGVyUG9zVGV4VHJhbnNmb3JtOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAogICAgICk7CiB9CiAK
LVZlcnRleFNoYWRlclF1YWQ6OlZlcnRleFNoYWRlclF1YWQoKQorVmVydGV4U2hhZGVyVGlsZTo6
VmVydGV4U2hhZGVyVGlsZSgpCiAgICAgOiBtX21hdHJpeExvY2F0aW9uKC0xKQotICAgICwgbV90
ZXhUcmFuc2Zvcm1Mb2NhdGlvbigtMSkKICAgICAsIG1fcG9pbnRMb2NhdGlvbigtMSkKKyAgICAs
IG1fdmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb24oLTEpCiB7CiB9CiAKLXZvaWQgVmVydGV4U2hh
ZGVyUXVhZDo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3Jh
bSkKK3ZvaWQgVmVydGV4U2hhZGVyVGlsZTo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgdW5zaWduZWQgcHJvZ3JhbSkKIHsKICAgICBtX21hdHJpeExvY2F0aW9uID0gY29udGV4dC0+
Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJtYXRyaXgiKTsKLSAgICBtX3RleFRyYW5zZm9y
bUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhUcmFu
c2Zvcm0iKTsKICAgICBtX3BvaW50TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgInBvaW50Iik7Ci0gICAgQVNTRVJUKG1fbWF0cml4TG9jYXRpb24gIT0gLTEg
JiYgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiAhPSAtMSAmJiBtX3BvaW50TG9jYXRpb24gIT0gLTEp
OworICAgIG1fdmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbSwgInZlcnRleFRleFRyYW5zZm9ybSIpOworICAgIEFTU0VSVChtX21h
dHJpeExvY2F0aW9uICE9IC0xICYmIG1fcG9pbnRMb2NhdGlvbiAhPSAtMSAmJiBtX3ZlcnRleFRl
eFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xKTsKIH0KIAotU3RyaW5nIFZlcnRleFNoYWRlclF1YWQ6
OmdldFNoYWRlclN0cmluZygpIGNvbnN0CitTdHJpbmcgVmVydGV4U2hhZGVyVGlsZTo6Z2V0U2hh
ZGVyU3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gU0hBREVSKAogICAgICAgICBhdHRyaWJ1
dGUgdmVjNCBhX3Bvc2l0aW9uOwogICAgICAgICBhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOwog
ICAgICAgICB1bmlmb3JtIG1hdDQgbWF0cml4OwotICAgICAgICB1bmlmb3JtIHZlYzQgdGV4VHJh
bnNmb3JtOwogICAgICAgICB1bmlmb3JtIHZlYzIgcG9pbnRbNF07CisgICAgICAgIHVuaWZvcm0g
dmVjNCB2ZXJ0ZXhUZXhUcmFuc2Zvcm07CiAgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3Jk
OwogICAgICAgICB2b2lkIG1haW4oKQogICAgICAgICB7CkBAIC0xODMsNyArMTgzLDcgQEAgU3Ry
aW5nIFZlcnRleFNoYWRlclF1YWQ6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiAgICAgICAgICAg
ICBwb3MueHkgKz0gKGFfdGV4Q29vcmQueCAqIGFfdGV4Q29vcmQueSkgKiBwb2ludFsyXTsKICAg
ICAgICAgICAgIHBvcy54eSArPSAoY29tcGxlbWVudC54ICogYV90ZXhDb29yZC55KSAqIHBvaW50
WzNdOwogICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBtYXRyaXggKiBwb3M7Ci0gICAgICAgICAg
ICB2X3RleENvb3JkID0gcG9zLnh5ICogdGV4VHJhbnNmb3JtLnp3ICsgdGV4VHJhbnNmb3JtLnh5
OworICAgICAgICAgICAgdl90ZXhDb29yZCA9IHBvcy54eSAqIHZlcnRleFRleFRyYW5zZm9ybS56
dyArIHZlcnRleFRleFRyYW5zZm9ybS54eTsKICAgICAgICAgfQogICAgICk7CiB9CkBAIC0yNDcs
NiArMjQ3LDcwIEBAIFN0cmluZyBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGE6Omdl
dFNoYWRlclN0cmluZygpIGNvbnN0CiAgICAgKTsKIH0KIAorRnJhZ21lbnRUZXhBbHBoYUFBQmlu
ZGluZzo6RnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZygpCisgICAgOiBtX3NhbXBsZXJMb2NhdGlv
bigtMSkKKyAgICAsIG1fYWxwaGFMb2NhdGlvbigtMSkKKyAgICAsIG1fZnJhZ21lbnRUZXhUcmFu
c2Zvcm1Mb2NhdGlvbigtMSkKKyAgICAsIG1fZWRnZUxvY2F0aW9uKC0xKQoreworfQorCit2b2lk
IEZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmc6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIHVuc2lnbmVkIHByb2dyYW0pCit7CisgICAgbV9zYW1wbGVyTG9jYXRpb24gPSBjb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInNfdGV4dHVyZSIpOworICAgIG1fYWxwaGFM
b2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiYWxwaGEiKTsK
KyAgICBtX2ZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbSwgImZyYWdtZW50VGV4VHJhbnNmb3JtIik7CisgICAgbV9lZGdlTG9j
YXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImVkZ2UiKTsKKwor
ICAgIEFTU0VSVChtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMSAmJiBtX2FscGhhTG9jYXRpb24gIT0g
LTEgJiYgbV9mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xICYmIG1fZWRnZUxvY2F0
aW9uICE9IC0xKTsKK30KKworU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUE6Omdl
dFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOwor
ICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7CisgICAgICAgIHVuaWZvcm0gZmxv
YXQgYWxwaGE7CisgICAgICAgIHVuaWZvcm0gdmVjNCBmcmFnbWVudFRleFRyYW5zZm9ybTsKKyAg
ICAgICAgdW5pZm9ybSB2ZWMzIGVkZ2VbNF07CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZlYzIgdGV4Q29vcmQgPSBjbGFtcCh2X3RleENvb3JkLCAwLjAsIDEu
MCkgKiBmcmFnbWVudFRleFRyYW5zZm9ybS56dyArIGZyYWdtZW50VGV4VHJhbnNmb3JtLnh5Owor
ICAgICAgICAgICAgdmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHRleENvb3Jk
KTsKKyAgICAgICAgICAgIHZlYzMgcG9zID0gdmVjMyhnbF9GcmFnQ29vcmQueHksIDEpOworICAg
ICAgICAgICAgZmxvYXQgYTAgPSBjbGFtcChkb3QoZWRnZVswXSwgcG9zKSwgMC4wLCAxLjApOwor
ICAgICAgICAgICAgZmxvYXQgYTEgPSBjbGFtcChkb3QoZWRnZVsxXSwgcG9zKSwgMC4wLCAxLjAp
OworICAgICAgICAgICAgZmxvYXQgYTIgPSBjbGFtcChkb3QoZWRnZVsyXSwgcG9zKSwgMC4wLCAx
LjApOworICAgICAgICAgICAgZmxvYXQgYTMgPSBjbGFtcChkb3QoZWRnZVszXSwgcG9zKSwgMC4w
LCAxLjApOworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4Q29sb3IgKiBhbHBoYSAqIG1p
bihhMCwgYTIpICogbWluKGExLCBhMyk7CisgICAgICAgIH0KKyAgICApOworfQorCitTdHJpbmcg
RnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhhQUE6OmdldFNoYWRlclN0cmluZygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOworICAgICAgICB1bmlmb3JtIHNh
bXBsZXIyRCBzX3RleHR1cmU7CisgICAgICAgIHVuaWZvcm0gZmxvYXQgYWxwaGE7CisgICAgICAg
IHVuaWZvcm0gdmVjNCBmcmFnbWVudFRleFRyYW5zZm9ybTsKKyAgICAgICAgdW5pZm9ybSB2ZWMz
IGVkZ2VbNF07CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZl
YzIgdGV4Q29vcmQgPSBjbGFtcCh2X3RleENvb3JkLCAwLjAsIDEuMCkgKiBmcmFnbWVudFRleFRy
YW5zZm9ybS56dyArIGZyYWdtZW50VGV4VHJhbnNmb3JtLnh5OworICAgICAgICAgICAgdmVjNCB0
ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHRleENvb3JkKTsKKyAgICAgICAgICAgIHZl
YzMgcG9zID0gdmVjMyhnbF9GcmFnQ29vcmQueHksIDEpOworICAgICAgICAgICAgZmxvYXQgYTAg
PSBjbGFtcChkb3QoZWRnZVswXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxvYXQg
YTEgPSBjbGFtcChkb3QoZWRnZVsxXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxv
YXQgYTIgPSBjbGFtcChkb3QoZWRnZVsyXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAg
ZmxvYXQgYTMgPSBjbGFtcChkb3QoZWRnZVszXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAg
ICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xvci56LCB0ZXhDb2xvci55LCB0ZXhDb2xvci54
LCB0ZXhDb2xvci53KSAqIGFscGhhICogbWluKGEwLCBhMikgKiBtaW4oYTEsIGEzKTsKKyAgICAg
ICAgfQorICAgICk7Cit9CisKIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzazo6RnJhZ21l
bnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrKCkKICAgICA6IG1fc2FtcGxlckxvY2F0aW9uKC0xKQog
ICAgICwgbV9tYXNrU2FtcGxlckxvY2F0aW9uKC0xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKaW5kZXgg
Y2ZjNjExYTY0OTViMTFlMWE5ZjQ1NWVhM2Y5ZTFiZWZhZGU4OTUxOS4uMTIwOGQzZjVkNzQ5MmMw
YWRhNjQ5OTU4Yjc3MzgzNDY0N2U3NDM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCkBAIC05Niwy
MSArOTYsMjEgQEAgcHJpdmF0ZToKICAgICBpbnQgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsKIH07
CiAKLWNsYXNzIFZlcnRleFNoYWRlclF1YWQgeworY2xhc3MgVmVydGV4U2hhZGVyVGlsZSB7CiBw
dWJsaWM6Ci0gICAgVmVydGV4U2hhZGVyUXVhZCgpOworICAgIFZlcnRleFNoYWRlclRpbGUoKTsK
IAogICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOwog
ICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIAogICAgIGludCBtYXRyaXhMb2Nh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4TG9jYXRpb247IH0KLSAgICBpbnQgdGV4VHJh
bnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RleFRyYW5zZm9ybUxvY2F0aW9uOyB9
CiAgICAgaW50IHBvaW50TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3BvaW50TG9jYXRpb247
IH0KKyAgICBpbnQgdmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3ZlcnRleFRleFRyYW5zZm9ybUxvY2F0aW9uOyB9CiAKIHByaXZhdGU6CiAgICAgaW50IG1fbWF0
cml4TG9jYXRpb247Ci0gICAgaW50IG1fdGV4VHJhbnNmb3JtTG9jYXRpb247CiAgICAgaW50IG1f
cG9pbnRMb2NhdGlvbjsKKyAgICBpbnQgbV92ZXJ0ZXhUZXhUcmFuc2Zvcm1Mb2NhdGlvbjsKIH07
CiAKIGNsYXNzIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nIHsKQEAgLTE0Miw2ICsxNDIsMzQgQEAg
cHVibGljOgogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIH07CiAKK2NsYXNz
IEZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmcgeworcHVibGljOgorICAgIEZyYWdtZW50VGV4QWxw
aGFBQUJpbmRpbmcoKTsKKworICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2ln
bmVkIHByb2dyYW0pOworICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9h
bHBoYUxvY2F0aW9uOyB9CisgICAgaW50IHNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fc2FtcGxlckxvY2F0aW9uOyB9CisgICAgaW50IGZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb247IH0KKyAg
ICBpbnQgZWRnZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lZGdlTG9jYXRpb247IH0KKwor
cHJpdmF0ZToKKyAgICBpbnQgbV9zYW1wbGVyTG9jYXRpb247CisgICAgaW50IG1fYWxwaGFMb2Nh
dGlvbjsKKyAgICBpbnQgbV9mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uOworICAgIGludCBt
X2VkZ2VMb2NhdGlvbjsKK307CisKK2NsYXNzIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUEg
OiBwdWJsaWMgRnJhZ21lbnRUZXhBbHBoYUFBQmluZGluZyB7CitwdWJsaWM6CisgICAgU3RyaW5n
IGdldFNoYWRlclN0cmluZygpIGNvbnN0OworfTsKKworLy8gU3dpenpsZXMgdGhlIHJlZCBhbmQg
Ymx1ZSBjb21wb25lbnQgb2Ygc2FtcGxlZCB0ZXhlbC4KK2NsYXNzIEZyYWdtZW50U2hhZGVyUkdC
QVRleFN3aXp6bGVBbHBoYUFBIDogcHVibGljIEZyYWdtZW50VGV4QWxwaGFBQUJpbmRpbmcgewor
cHVibGljOgorICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKK307CisKIGNsYXNz
IEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzayB7CiBwdWJsaWM6CiAgICAgRnJhZ21lbnRT
aGFkZXJSR0JBVGV4QWxwaGFNYXNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApp
bmRleCAzZTllNmRkMDQ4ZjIyMTVkMjg5NDkxNzU5MzQxZDdlMzc2YmMwZDI3Li41Njc1Y2VhMTNh
NmViZGFjMWQ5Y2IzYWE0ZTJmZmNjNTQ5YTA0ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
IAogLy8gU3RhcnQgdGlsaW5nIHdoZW4gdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgYSBsYXllciBh
cmUgbGFyZ2VyIHRoYW4gdGhpcyBzaXplLgotc3RhdGljIGludCBtYXhVbnRpbGVkU2l6ZSA9IDUx
MDsKK3N0YXRpYyBpbnQgbWF4VW50aWxlZFNpemUgPSA1MTI7CiAKIC8vIFdoZW4gdGlsaW5nIGlz
IGVuYWJsZWQsIHVzZSB0aWxlcyBvZiB0aGlzIGRpbWVuc2lvbiBzcXVhcmVkLgogc3RhdGljIGlu
dCBkZWZhdWx0VGlsZVNpemUgPSAyNTY7CkBAIC01MCw3ICs1MCw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIFRpbGVkTGF5ZXJDaHJvbWl1bTo6VGlsZWRMYXllckNocm9taXVtKEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bSogb3duZXIpCiAgICAgOiBMYXllckNocm9taXVtKG93bmVyKQogICAgICwgbV90
aWxpbmdPcHRpb24oQXV0b1RpbGUpCi0gICAgLCBtX2JvcmRlclRleGVscyh0cnVlKQogewogfQog
CkBAIC04MCw3ICs3OSw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVUaWxlU2l6
ZUFuZFRpbGluZ09wdGlvbigpCiAgICAgaWYgKCFtX3RpbGVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBjb25zdCBJbnRTaXplIHRpbGVTaXplKGRlZmF1bHRUaWxlU2l6ZSwgZGVmYXVsdFRpbGVT
aXplKTsKKyAgICBjb25zdCBJbnRTaXplIHRpbGVTaXplKG1pbihkZWZhdWx0VGlsZVNpemUsIGNv
bnRlbnRCb3VuZHMoKS53aWR0aCgpKSwgbWluKGRlZmF1bHRUaWxlU2l6ZSwgY29udGVudEJvdW5k
cygpLmhlaWdodCgpKSk7CiAKICAgICAvLyBUaWxlIGlmIGJvdGggZGltZW5zaW9ucyBsYXJnZSwg
b3IgYW55IG9uZSBkaW1lbnNpb24gbGFyZ2UgYW5kIHRoZSBvdGhlcgogICAgIC8vIGV4dGVuZHMg
aW50byBhIHNlY29uZCB0aWxlLiBUaGlzIGhldXJpc3RpYyBhbGxvd3MgZm9yIGxvbmcgc2tpbm55
IGxheWVycwpAQCAtOTcsOCArOTYsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRl
VGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKQogICAgIGVsc2UKICAgICAgICAgaXNUaWxlZCA9IGF1
dG9UaWxlZDsKIAotICAgIC8vIEVtcHR5IHRpbGUgc2l6ZSB0ZWxscyB0aGUgdGlsZXIgdG8gYXZv
aWQgdGlsaW5nLgotICAgIEludFNpemUgcmVxdWVzdGVkU2l6ZSA9IGlzVGlsZWQgPyB0aWxlU2l6
ZSA6IEludFNpemUoKTsKKyAgICBJbnRTaXplIHJlcXVlc3RlZFNpemUgPSBpc1RpbGVkID8gdGls
ZVNpemUgOiBjb250ZW50Qm91bmRzKCk7CiAgICAgY29uc3QgaW50IG1heFNpemUgPSBsYXllclJl
bmRlcmVyKCktPm1heFRleHR1cmVTaXplKCk7CiAgICAgSW50U2l6ZSBjbGFtcGVkU2l6ZSA9IHJl
cXVlc3RlZFNpemUuc2hydW5rVG8oSW50U2l6ZShtYXhTaXplLCBtYXhTaXplKSk7CiAgICAgbV90
aWxlci0+c2V0VGlsZVNpemUoY2xhbXBlZFNpemUpOwpAQCAtMTI4LDcgKzEyNiw3IEBAIHZvaWQg
VGlsZWRMYXllckNocm9taXVtOjpjcmVhdGVUaWxlcklmTmVlZGVkKCkKICAgICBtX3RpbGVyID0g
TGF5ZXJUaWxlckNocm9taXVtOjpjcmVhdGUoCiAgICAgICAgIGxheWVyUmVuZGVyZXIoKSwKICAg
ICAgICAgSW50U2l6ZShkZWZhdWx0VGlsZVNpemUsIGRlZmF1bHRUaWxlU2l6ZSksCi0gICAgICAg
IG1fYm9yZGVyVGV4ZWxzID8gTGF5ZXJUaWxlckNocm9taXVtOjpIYXNCb3JkZXJUZXhlbHMgOiBM
YXllclRpbGVyQ2hyb21pdW06Ok5vQm9yZGVyVGV4ZWxzKTsKKyAgICAgICAgTGF5ZXJUaWxlckNo
cm9taXVtOjpIYXNCb3JkZXJUZXhlbHMpOwogfQogCiB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpCkBAIC0xNDQsNyArMTQyLDYgQEAgdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnNldFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24gdGlsaW5nT3B0aW9u
KQogCiB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0SXNNYXNrKGJvb2wgaXNNYXNrKQogewot
ICAgIG1fYm9yZGVyVGV4ZWxzID0gIWlzTWFzazsKICAgICBzZXRUaWxpbmdPcHRpb24oaXNNYXNr
ID8gTmV2ZXJUaWxlIDogQXV0b1RpbGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5o
CmluZGV4IDc4OGFkYzdmMTA4YWE2YTI1Y2IzZDRjZjhjZDE0OTMwZTY0NjQxNTcuLjJmNDM2OWI2
NDAzODM4NTE3MGM3NzE0MzJmZDdhMWVjMjcyMmNmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5oCkBAIC03Myw3ICs3Myw2IEBAIHByaXZhdGU6CiAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggdGlsaW5nVHJhbnNmb3JtKCkgY29uc3Q7CiAKICAgICBUaWxpbmdPcHRpb24gbV90aWxpbmdP
cHRpb247Ci0gICAgYm9vbCBtX2JvcmRlclRleGVsczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcAppbmRleCAxMTNi
ZGUwYjIxMzhmOTFkNzcyZDNmZDUxYjhjMTNiNDA2Zjk4YTI5Li5mZjcwOGM3M2Q2YzNhODhjZGRm
MDJjMDcyM2JiYWRlMzFjMzAwNGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuY3BwCkBAIC00NCwxMiArNDQsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgaW50IGNvbXB1dGVOdW1UaWxlcyhpbnQgbWF4VGV4dHVy
ZVNpemUsIGludCB0b3RhbFNpemUsIGludCBib3JkZXJUZXhlbHMpCiB7Ci0gICAgaW50IHRvdGFs
U2l6ZVdpdGhCb3JkZXIgPSB0b3RhbFNpemUgKyAyICogYm9yZGVyVGV4ZWxzOwotCiAgICAgaWYg
KG1heFRleHR1cmVTaXplIC0gMiAqIGJvcmRlclRleGVscyA8PSAwKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSA+IDAgJiYgbWF4VGV4dHVyZVNpemUgPj0gdG90
YWxTaXplID8gMSA6IDA7CiAKLSAgICBpbnQgbnVtVGlsZXMgPSBtYXgoMSwgMSArICh0b3RhbFNp
emVXaXRoQm9yZGVyIC0gMSAtIDIgKiBib3JkZXJUZXhlbHMpIC8gKG1heFRleHR1cmVTaXplIC0g
MiAqIGJvcmRlclRleGVscykpOworICAgIGludCBudW1UaWxlcyA9IG1heCgxLCAxICsgKHRvdGFs
U2l6ZSAtIDEgLSAyICogYm9yZGVyVGV4ZWxzKSAvIChtYXhUZXh0dXJlU2l6ZSAtIDIgKiBib3Jk
ZXJUZXhlbHMpKTsKICAgICByZXR1cm4gdG90YWxTaXplID4gMCA/IG51bVRpbGVzIDogMDsKIH0K
IApAQCAtODEsNyArNzksNyBAQCBpbnQgVGlsaW5nRGF0YTo6dGlsZVhJbmRleEZyb21TcmNDb29y
ZChpbnQgc3JjUG9zKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKIAogICAgIEFTU0VSVChtX21h
eFRleHR1cmVTaXplIC0gMiAqIG1fYm9yZGVyVGV4ZWxzKTsKLSAgICBpbnQgeCA9IHNyY1BvcyAv
IChtX21heFRleHR1cmVTaXplIC0gMiAqIG1fYm9yZGVyVGV4ZWxzKTsKKyAgICBpbnQgeCA9IChz
cmNQb3MgLSBtX2JvcmRlclRleGVscykgLyAobV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBtX2JvcmRl
clRleGVscyk7CiAgICAgcmV0dXJuIG1pbihtYXgoeCwgMCksIG51bVRpbGVzWCgpIC0gMSk7CiB9
CiAKQEAgLTkxLDcgKzg5LDcgQEAgaW50IFRpbGluZ0RhdGE6OnRpbGVZSW5kZXhGcm9tU3JjQ29v
cmQoaW50IHNyY1BvcykgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBBU1NFUlQobV9t
YXhUZXh0dXJlU2l6ZSAtIDIgKiBtX2JvcmRlclRleGVscyk7Ci0gICAgaW50IHkgPSBzcmNQb3Mg
LyAobV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBtX2JvcmRlclRleGVscyk7CisgICAgaW50IHkgPSAo
c3JjUG9zIC0gbV9ib3JkZXJUZXhlbHMpIC8gKG1fbWF4VGV4dHVyZVNpemUgLSAyICogbV9ib3Jk
ZXJUZXhlbHMpOwogICAgIHJldHVybiBtaW4obWF4KHksIDApLCBudW1UaWxlc1koKSAtIDEpOwog
fQogCkBAIC0xMzQsMTYgKzEzMiw2IEBAIEludFJlY3QgVGlsaW5nRGF0YTo6dGlsZUJvdW5kc1dp
dGhCb3JkZXIoaW50IHRpbGUpIGNvbnN0CiAgICAgcmV0dXJuIGJvdW5kczsKIH0KIAotSW50UmVj
dCBUaWxpbmdEYXRhOjp0aWxlQm91bmRzV2l0aE91dGVyQm9yZGVyKGludCB0aWxlKSBjb25zdAot
ewotICAgIEludFJlY3QgYm91bmRzID0gdGlsZUJvdW5kcyh0aWxlKTsKLQotICAgIGlmIChtX2Jv
cmRlclRleGVscykKLSAgICAgICAgYm91bmRzLmluZmxhdGUoMSk7Ci0KLSAgICByZXR1cm4gYm91
bmRzOwotfQotCiBGbG9hdFJlY3QgVGlsaW5nRGF0YTo6dGlsZUJvdW5kc05vcm1hbGl6ZWQoaW50
IHRpbGUpIGNvbnN0CiB7CiAgICAgYXNzZXJ0VGlsZSh0aWxlKTsKQEAgLTE4MCw2ICsxNjgsOCBA
QCBpbnQgVGlsaW5nRGF0YTo6dGlsZVNpemVYKGludCB4SW5kZXgpIGNvbnN0CiAKICAgICBpZiAo
IXhJbmRleCAmJiBtX251bVRpbGVzWCA9PSAxKQogICAgICAgICByZXR1cm4gbV90b3RhbFNpemVY
OworICAgIGlmICgheEluZGV4ICYmIG1fbnVtVGlsZXNYID4gMSkKKyAgICAgICAgcmV0dXJuIG1f
bWF4VGV4dHVyZVNpemUgLSBtX2JvcmRlclRleGVsczsKICAgICBpZiAoeEluZGV4IDwgbnVtVGls
ZXNYKCkgLSAxKQogICAgICAgICByZXR1cm4gbV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBtX2JvcmRl
clRleGVsczsKICAgICBpZiAoeEluZGV4ID09IG51bVRpbGVzWCgpIC0gMSkKQEAgLTE5NSw2ICsx
ODUsOCBAQCBpbnQgVGlsaW5nRGF0YTo6dGlsZVNpemVZKGludCB5SW5kZXgpIGNvbnN0CiAKICAg
ICBpZiAoIXlJbmRleCAmJiBtX251bVRpbGVzWSA9PSAxKQogICAgICAgICByZXR1cm4gbV90b3Rh
bFNpemVZOworICAgIGlmICgheUluZGV4ICYmIG1fbnVtVGlsZXNZID4gMSkKKyAgICAgICAgcmV0
dXJuIG1fbWF4VGV4dHVyZVNpemUgLSBtX2JvcmRlclRleGVsczsKICAgICBpZiAoeUluZGV4IDwg
bnVtVGlsZXNZKCkgLSAxKQogICAgICAgICByZXR1cm4gbV9tYXhUZXh0dXJlU2l6ZSAtIDIgKiBt
X2JvcmRlclRleGVsczsKICAgICBpZiAoeUluZGV4ID09IG51bVRpbGVzWSgpIC0gMSkKQEAgLTIz
OCw4ICsyMzAsOCBAQCB2b2lkIFRpbGluZ0RhdGE6OmludGVyc2VjdERyYXdRdWFkKGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkcwogCiAgICAgKm5ld1NyYyA9IHNy
Y1JlY3RJbnRlcnNlY3RlZDsKICAgICBuZXdTcmMtPm1vdmUoCi0gICAgICAgIC10aWxlQm91bmRz
LngoKSArIG1fYm9yZGVyVGV4ZWxzLAotICAgICAgICAtdGlsZUJvdW5kcy55KCkgKyBtX2JvcmRl
clRleGVscyk7CisgICAgICAgIC10aWxlQm91bmRzLngoKSArICgodGlsZVhJbmRleCh0aWxlKSA+
IDApID8gbV9ib3JkZXJUZXhlbHMgOiAwKSwKKyAgICAgICAgLXRpbGVCb3VuZHMueSgpICsgKCh0
aWxlWUluZGV4KHRpbGUpID4gMCkgPyBtX2JvcmRlclRleGVscyA6IDApKTsKIAogICAgICpuZXdE
c3QgPSBGbG9hdFJlY3QoCiAgICAgICAgIHNyY1JlY3RJbnRlcnNlY3RlZE5vcm1YICogZHN0UmVj
dC53aWR0aCgpICsgZHN0UmVjdC54KCksCkBAIC0yNDgsOSArMjQwLDEyIEBAIHZvaWQgVGlsaW5n
RGF0YTo6aW50ZXJzZWN0RHJhd1F1YWQoY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIGRzCiAgICAgICAgIHNyY1JlY3RJbnRlcnNlY3RlZE5vcm1IICogZHN0UmVjdC5o
ZWlnaHQoKSk7CiB9CiAKLUludFBvaW50IFRpbGluZ0RhdGE6OnRleHR1cmVPZmZzZXQoKSBjb25z
dAorSW50UG9pbnQgVGlsaW5nRGF0YTo6dGV4dHVyZU9mZnNldChpbnQgeEluZGV4LCBpbnQgeUlu
ZGV4KSBjb25zdAogewotICAgIHJldHVybiBJbnRQb2ludChtX2JvcmRlclRleGVscywgbV9ib3Jk
ZXJUZXhlbHMpOworICAgIGludCBsZWZ0ID0gKCF4SW5kZXggfHwgbV9udW1UaWxlc1ggPT0gMSkg
PyAwIDogbV9ib3JkZXJUZXhlbHM7CisgICAgaW50IHRvcCA9ICgheUluZGV4IHx8IG1fbnVtVGls
ZXNZID09IDEpID8gMCA6IG1fYm9yZGVyVGV4ZWxzOworCisgICAgcmV0dXJuIEludFBvaW50KGxl
ZnQsIHRvcCk7CiB9CiAKIHZvaWQgVGlsaW5nRGF0YTo6cmVjb21wdXRlTnVtVGlsZXMoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmgKaW5k
ZXggNDNiMDhlMjI4NzQzYThkYmUzYTljZTE1OTllMjM0MzAzMjUzNWNhYy4uM2RhYmI1ZGVjMzMw
NmU3ZTI2MzE0MDViZGMyYzM0ZTk1MmQ0MjAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5oCkBAIC02MSw3ICs2MSw2IEBAIHB1Ymxp
YzoKIAogICAgIEludFJlY3QgdGlsZUJvdW5kcyhpbnQgdGlsZSkgY29uc3Q7CiAgICAgSW50UmVj
dCB0aWxlQm91bmRzV2l0aEJvcmRlcihpbnQgdGlsZSkgY29uc3Q7Ci0gICAgSW50UmVjdCB0aWxl
Qm91bmRzV2l0aE91dGVyQm9yZGVyKGludCB0aWxlKSBjb25zdDsKICAgICBGbG9hdFJlY3QgdGls
ZUJvdW5kc05vcm1hbGl6ZWQoaW50IHRpbGUpIGNvbnN0OwogICAgIGludCB0aWxlUG9zaXRpb25Y
KGludCB4SW5kZXgpIGNvbnN0OwogICAgIGludCB0aWxlUG9zaXRpb25ZKGludCB5SW5kZXgpIGNv
bnN0OwpAQCAtNzUsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnRlcnNlY3REcmF3UXVh
ZChjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgaW50
IHRpbGUsIEZsb2F0UmVjdCogbmV3U3JjLCBGbG9hdFJlY3QqIG5ld0RzdCkgY29uc3Q7CiAKICAg
ICAvLyBEaWZmZXJlbmNlIGJldHdlZW4gdGlsZUJvdW5kJ3MgYW5kIHRpbGVCb3VuZFdpdGhCb3Jk
ZXIncyBsb2NhdGlvbigpLgotICAgIEludFBvaW50IHRleHR1cmVPZmZzZXQoKSBjb25zdDsKKyAg
ICBJbnRQb2ludCB0ZXh0dXJlT2Zmc2V0KGludCB4SW5kZXgsIGludCB5SW5kZXgpIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIFRpbGluZ0RhdGEoKSA6IG1fbWF4VGV4dHVyZVNpemUoMCksIG1fdG90
YWxTaXplWCgwKSwgbV90b3RhbFNpemVZKDApIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDYxNWU3ZDU4ZTcyNzQ1MDJlMWI2MzcxNzBhYTczM2Q0YzIwZmJiMWMuLmU4NDNjNWIyN2Y0
Y2EzYTMyMmVkOTU4ZTJjNDY1YjNkZTc1ZGMzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMDEgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFuQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFJlbW92ZSBvdXRlciBib3JkZXIgZnJv
bSBUaWxpbmdEYXRhIGFzIGl0J3Mgbm8gbG9uZ2VyIG5lZWRlZCBieSBsYXllciBjb21wb3NpdG9y
IGZvciBhbnRpLWFsaWFzaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjQ5NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHRlc3RzL1RpbGluZ0RhdGFUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRFU1QpOgorCiAyMDExLTA4LTAxICBKZWFuLWx1YyBCcm91aWxsZXQgIDxqZWFubHVjQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZW1vdmluZyBvbGQgc291cmNlIGZpbGVzIGluIGd5cCBmaWxl
cyB0aGF0IHNsb3cgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvVGlsaW5nRGF0YVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxp
bmdEYXRhVGVzdC5jcHAKaW5kZXggZGRlZjBiOTgyMjMxZjI4MDdhNDdkYzkwMzIzZGJhNDU0NmMz
ODk2OC4uNzYyZWRhOTM5OTE1MGViZTRjOTcxOTQ2YTc0ZTU3YzM5YTNiNWRkNSAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxpbmdEYXRhVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxpbmdEYXRhVGVzdC5jcHAKQEAgLTQxLDEw
ICs0MSwxMCBAQCBuYW1lc3BhY2UgewogVEVTVChUaWxpbmdEYXRhVGVzdCwgbnVtVGlsZXNfTm9U
aWxpbmcpCiB7CiAgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMTYsIDE2LCAxNiwgZmFsc2Up
Lm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE3LCAxNSwgMTUsIHRy
dWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE4LCAxNiwgMTYs
IHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE2LCAxNSwg
MTUsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE2LCAx
NiwgMTYsIHRydWUpLm51bVRpbGVzKCkpOwogICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDE2
LCAgMSwgMTYsIGZhbHNlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0
YSgxNywgMTUsIDE1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5n
RGF0YSgxNSwgMTUsIDE1LCB0cnVlKS5udW1UaWxlcygpKTsKIH0KIAogVEVTVChUaWxpbmdEYXRh
VGVzdCwgbnVtVGlsZXNfVGlsaW5nTm9Cb3JkZXJzKQpAQCAtMTA5LDQ1ICsxMDksNDUgQEAgVEVT
VChUaWxpbmdEYXRhVGVzdCwgbnVtVGlsZXNfVGlsaW5nV2l0aEJvcmRlcnMpCiAgICAgRVhQRUNU
X0VRKDAsIFRpbGluZ0RhdGEoLTEsIDEsICAxLCB0cnVlKS5udW1UaWxlcygpKTsKICAgICBFWFBF
Q1RfRVEoMCwgVGlsaW5nRGF0YSgwLCAgMSwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwogCi0gICAg
RVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMSwgIDEsICAxLCB0cnVlKS5udW1UaWxlcygpKTsKKyAg
ICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgxLCAgMSwgIDEsIHRydWUpLm51bVRpbGVzKCkpOwog
ICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDEsICAxLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7
CiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMSwgIDIsICAxLCB0cnVlKS5udW1UaWxlcygp
KTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgyLCAgMSwgIDEsIHRydWUpLm51bVRpbGVz
KCkpOwotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDIsICAxLCAgMiwgdHJ1ZSkubnVtVGls
ZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgIDIsICAxLCB0cnVlKS5udW1U
aWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgyLCAgMiwgIDIsIHRydWUpLm51
bVRpbGVzKCkpOwotCi0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgIDEsICAxLCB0cnVl
KS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAgMSwgIDIsIHRy
dWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDMsICAyLCAgMSwg
dHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgIDIsICAy
LCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoNiwgVGlsaW5nRGF0YSgzLCAgMiwg
IDMsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg2LCBUaWxpbmdEYXRhKDMsICAz
LCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDksIFRpbGluZ0RhdGEoMywg
IDMsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKLQotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRh
KDQsICAxLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0Rh
dGEoNCwgIDIsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5n
RGF0YSg0LCAgMywgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxp
bmdEYXRhKDQsICA0LCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRp
bGluZ0RhdGEoNCwgIDUsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMywg
VGlsaW5nRGF0YSg0LCAgNiwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg0
LCBUaWxpbmdEYXRhKDQsICA3LCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VR
KDQsIFRpbGluZ0RhdGEoNCwgIDgsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLSAgICBFWFBFQ1Rf
RVEoNSwgVGlsaW5nRGF0YSg0LCAgOSwgIDIsIHRydWUpLm51bVRpbGVzKCkpOwotICAgIEVYUEVD
VF9FUSg1LCBUaWxpbmdEYXRhKDQsIDEwLCAgMiwgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQ
RUNUX0VRKDYsIFRpbGluZ0RhdGEoNCwgMTEsICAyLCB0cnVlKS5udW1UaWxlcygpKTsKLQotICAg
IEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICAxLCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7Ci0g
ICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwgIDIsICAzLCB0cnVlKS5udW1UaWxlcygpKTsK
LSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgMywgIDMsIHRydWUpLm51bVRpbGVzKCkp
OwotICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDUsICA0LCAgMywgdHJ1ZSkubnVtVGlsZXMo
KSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwgIDUsICAzLCB0cnVlKS5udW1UaWxl
cygpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSg1LCAgNiwgIDMsIHRydWUpLm51bVRp
bGVzKCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA3LCAgMywgdHJ1ZSkubnVt
VGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDgsICAzLCB0cnVlKS5u
dW1UaWxlcygpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgOSwgIDMsIHRydWUp
Lm51bVRpbGVzKCkpOwotICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsIDEwLCAgMywgdHJ1
ZSkubnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgMTEsICAzLCB0
cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgyLCAgMSwgIDEs
IHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDIsICAxLCAg
MiwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMiwgIDIs
ICAxLCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgyLCAg
MiwgIDIsIHRydWUpLm51bVRpbGVzKCkpOworCisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEo
MywgIDEsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0
YSgzLCAgMiwgIDMsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdE
YXRhKDMsICAzLCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGlu
Z0RhdGEoMywgIDQsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGls
aW5nRGF0YSgzLCAgNSwgIDMsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSg0LCBU
aWxpbmdEYXRhKDMsICA2LCAgMywgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDUs
IFRpbGluZ0RhdGEoMywgIDcsICAzLCB0cnVlKS5udW1UaWxlcygpKTsKKworICAgIEVYUEVDVF9F
USgxLCBUaWxpbmdEYXRhKDQsICAxLCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNU
X0VRKDEsIFRpbGluZ0RhdGEoNCwgIDIsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBF
Q1RfRVEoMSwgVGlsaW5nRGF0YSg0LCAgMywgIDQsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVY
UEVDVF9FUSgxLCBUaWxpbmdEYXRhKDQsICA0LCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAg
RVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNCwgIDUsICA0LCB0cnVlKS5udW1UaWxlcygpKTsKKyAg
ICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSg0LCAgNiwgIDQsIHRydWUpLm51bVRpbGVzKCkpOwor
ICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDQsICA3LCAgNCwgdHJ1ZSkubnVtVGlsZXMoKSk7
CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNCwgIDgsICA0LCB0cnVlKS5udW1UaWxlcygp
KTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg0LCAgOSwgIDQsIHRydWUpLm51bVRpbGVz
KCkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDQsIDEwLCAgNCwgdHJ1ZSkubnVtVGls
ZXMoKSk7CisgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNCwgMTEsICA0LCB0cnVlKS5udW1U
aWxlcygpKTsKKworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICAxLCAgNSwgdHJ1ZSku
bnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwgIDIsICA1LCB0cnVl
KS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg1LCAgMywgIDUsIHRy
dWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDUsICA0LCAgNSwg
dHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwgIDUsICA1
LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSg1LCAgNiwg
IDUsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgyLCBUaWxpbmdEYXRhKDUsICA3
LCAgNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoNSwg
IDgsICA1LCB0cnVlKS5udW1UaWxlcygpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1
LCAgOSwgIDUsIHRydWUpLm51bVRpbGVzKCkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRh
KDUsIDEwLCAgNSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0Rh
dGEoNSwgMTEsICA1LCB0cnVlKS5udW1UaWxlcygpKTsKIH0KIAogVEVTVChUaWxpbmdEYXRhVGVz
dCwgdGlsZVhJbmRleEZyb21TcmNDb29yZCkKQEAgLTE2NiwxNyArMTY2LDE3IEBAIFRFU1QoVGls
aW5nRGF0YVRlc3QsIHRpbGVYSW5kZXhGcm9tU3JjQ29vcmQpCiAgICAgRVhQRUNUX0VRKDMsIFRp
bGluZ0RhdGEoMywgMTAsIDEwLCBmYWxzZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgxMSkpOwog
CiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4
RnJvbVNyY0Nvb3JkKDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAs
IHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMSkpOwotICAgIEVYUEVDVF9FUSgyLCBUaWxp
bmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgyKSk7Ci0gICAg
RVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNy
Y0Nvb3JkKDMpKTsKLSAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUp
LnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoNCkpOwotICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRh
KDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCg1KSk7Ci0gICAgRVhQRUNU
X0VRKDYsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3Jk
KDYpKTsKLSAgICBFWFBFQ1RfRVEoNywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVY
SW5kZXhGcm9tU3JjQ29vcmQoNykpOwotICAgIEVYUEVDVF9FUSg4LCBUaWxpbmdEYXRhKDMsIDEw
LCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCg4KSk7Ci0gICAgRVhQRUNUX0VRKDks
IFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDkpKTsK
LSAgICBFWFBFQ1RfRVEoOSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhG
cm9tU3JjQ29vcmQoMTApKTsKLSAgICBFWFBFQ1RfRVEoOSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAs
IHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMTEpKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGls
aW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMSkpOworICAg
IEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21T
cmNDb29yZCgyKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVl
KS50aWxlWEluZGV4RnJvbVNyY0Nvb3JkKDMpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0
YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoNCkpOworICAgIEVYUEVD
VF9FUSg0LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29y
ZCg1KSk7CisgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxl
WEluZGV4RnJvbVNyY0Nvb3JkKDYpKTsKKyAgICBFWFBFQ1RfRVEoNiwgVGlsaW5nRGF0YSgzLCAx
MCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoNykpOworICAgIEVYUEVDVF9FUSg3
LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCg4KSk7
CisgICAgRVhQRUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWEluZGV4
RnJvbVNyY0Nvb3JkKDkpKTsKKyAgICBFWFBFQ1RfRVEoNywgVGlsaW5nRGF0YSgzLCAxMCwgMTAs
IHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMTApKTsKKyAgICBFWFBFQ1RfRVEoNywgVGls
aW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMTEpKTsKIAog
ICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDEsIDEsIDEsIGZhbHNlKS50aWxlWEluZGV4RnJv
bVNyY0Nvb3JkKDApKTsKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgyLCAyLCAyLCBmYWxz
ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgwKSk7CkBAIC0xOTQsMTMgKzE5NCwxMyBAQCBURVNU
KFRpbGluZ0RhdGFUZXN0LCB0aWxlWEluZGV4RnJvbVNyY0Nvb3JkKQogICAgIEVYUEVDVF9FUSgw
LCBUaWxpbmdEYXRhKDIsIDIsIDIsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwog
ICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDIsIDIsIDIsIHRydWUpLnRpbGVYSW5kZXhGcm9t
U3JjQ29vcmQoMSkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDMsIDMsIHRydWUp
LnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRh
KDMsIDMsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMSkpOwotICAgIEVYUEVDVF9F
USgyLCBUaWxpbmdEYXRhKDMsIDMsIDMsIHRydWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMikp
OworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDMsIDMsIHRydWUpLnRpbGVYSW5kZXhG
cm9tU3JjQ29vcmQoMSkpOworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDMsIDMsIHRy
dWUpLnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQoMikpOwogCi0gICAgRVhQRUNUX0VRKDAsIFRpbGlu
Z0RhdGEoNCwgNCwgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgwKSk7Ci0gICAgRVhQ
RUNUX0VRKDAsIFRpbGluZ0RhdGEoNCwgNCwgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29y
ZCgxKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwgNCwgMywgdHJ1ZSkudGlsZVhJ
bmRleEZyb21TcmNDb29yZCgyKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNCwgNCwg
MywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgzKSk7CisgICAgRVhQRUNUX0VRKDAsIFRp
bGluZ0RhdGEoMywgNCwgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgwKSk7CisgICAg
RVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgNCwgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmND
b29yZCgxKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgMywgdHJ1ZSkudGls
ZVhJbmRleEZyb21TcmNDb29yZCgyKSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywg
NCwgMywgdHJ1ZSkudGlsZVhJbmRleEZyb21TcmNDb29yZCgzKSk7CiB9CiBURVNUKFRpbGluZ0Rh
dGFUZXN0LCB0aWxlWUluZGV4RnJvbVNyY0Nvb3JkKQogewpAQCAtMjE4LDE3ICsyMTgsMTcgQEAg
VEVTVChUaWxpbmdEYXRhVGVzdCwgdGlsZVlJbmRleEZyb21TcmNDb29yZCkKICAgICBFWFBFQ1Rf
RVEoMywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIGZhbHNlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3Jk
KDExKSk7CiAKICAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRp
bGVZSW5kZXhGcm9tU3JjQ29vcmQoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMs
IDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgxKSk7Ci0gICAgRVhQRUNUX0VR
KDIsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDIp
KTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5k
ZXhGcm9tU3JjQ29vcmQoMykpOwotICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsIDEwLCAx
MCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg0KSk7Ci0gICAgRVhQRUNUX0VRKDUsIFRp
bGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDUpKTsKLSAg
ICBFWFBFQ1RfRVEoNiwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9t
U3JjQ29vcmQoNikpOwotICAgIEVYUEVDVF9FUSg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1
ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg3KSk7Ci0gICAgRVhQRUNUX0VRKDgsIFRpbGluZ0Rh
dGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDgpKTsKLSAgICBFWFBF
Q1RfRVEoOSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29v
cmQoOSkpOwotICAgIEVYUEVDVF9FUSg5LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGls
ZVlJbmRleEZyb21TcmNDb29yZCgxMCkpOwotICAgIEVYUEVDVF9FUSg5LCBUaWxpbmdEYXRhKDMs
IDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgxMSkpOworICAgIEVYUEVDVF9F
USgwLCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgx
KSk7CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUlu
ZGV4RnJvbVNyY0Nvb3JkKDIpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAxMCwg
MTAsIHRydWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoMykpOworICAgIEVYUEVDVF9FUSgzLCBU
aWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg0KSk7Cisg
ICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJv
bVNyY0Nvb3JkKDUpKTsKKyAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRy
dWUpLnRpbGVZSW5kZXhGcm9tU3JjQ29vcmQoNikpOworICAgIEVYUEVDVF9FUSg2LCBUaWxpbmdE
YXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCg3KSk7CisgICAgRVhQ
RUNUX0VRKDcsIFRpbGluZ0RhdGEoMywgMTAsIDEwLCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nv
b3JkKDgpKTsKKyAgICBFWFBFQ1RfRVEoNywgVGlsaW5nRGF0YSgzLCAxMCwgMTAsIHRydWUpLnRp
bGVZSW5kZXhGcm9tU3JjQ29vcmQoOSkpOworICAgIEVYUEVDVF9FUSg3LCBUaWxpbmdEYXRhKDMs
IDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgxMCkpOworICAgIEVYUEVDVF9F
USg3LCBUaWxpbmdEYXRhKDMsIDEwLCAxMCwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgx
MSkpOwogCiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMSwgMSwgMSwgZmFsc2UpLnRpbGVZ
SW5kZXhGcm9tU3JjQ29vcmQoMCkpOwogICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDIsIDIs
IDIsIGZhbHNlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDApKTsKQEAgLTI0Niw2MSArMjQ2LDYx
IEBAIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVZSW5kZXhGcm9tU3JjQ29vcmQpCiAgICAgRVhQ
RUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgMiwgMiwgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29y
ZCgwKSk7CiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMiwgMiwgMiwgdHJ1ZSkudGlsZVlJ
bmRleEZyb21TcmNDb29yZCgxKSk7CiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywg
MywgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRp
bGluZ0RhdGEoMywgMywgMywgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgxKSk7Ci0gICAg
RVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgMywgMywgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmND
b29yZCgyKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywgMywgdHJ1ZSkudGls
ZVlJbmRleEZyb21TcmNDb29yZCgxKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywg
MywgMywgdHJ1ZSkudGlsZVlJbmRleEZyb21TcmNDb29yZCgyKSk7CiAKLSAgICBFWFBFQ1RfRVEo
MCwgVGlsaW5nRGF0YSg0LCAzLCA0LCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDApKTsK
LSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSg0LCAzLCA0LCB0cnVlKS50aWxlWUluZGV4RnJv
bVNyY0Nvb3JkKDEpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSg0LCAzLCA0LCB0cnVl
KS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDIpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0
YSg0LCAzLCA0LCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDMpKTsKKyAgICBFWFBFQ1Rf
RVEoMCwgVGlsaW5nRGF0YSgzLCAzLCA0LCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDAp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAzLCA0LCB0cnVlKS50aWxlWUluZGV4
RnJvbVNyY0Nvb3JkKDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAzLCA0LCB0
cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDIpKTsKKyAgICBFWFBFQ1RfRVEoMSwgVGlsaW5n
RGF0YSgzLCAzLCA0LCB0cnVlKS50aWxlWUluZGV4RnJvbVNyY0Nvb3JkKDMpKTsKIH0KIAogVEVT
VChUaWxpbmdEYXRhVGVzdCwgdGlsZVNpemVYKQogewogICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdE
YXRhKDUsICA1LCAgNSwgZmFsc2UpLnRpbGVTaXplWCgwKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRp
bGluZ0RhdGEoNSwgIDUsICA1LCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9FUSg1
LCBUaWxpbmdEYXRhKDUsICA1LCAgNSwgdHJ1ZSkudGlsZVNpemVYKDApKTsKIAogICAgIEVYUEVD
VF9FUSg1LCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgZmFsc2UpLnRpbGVTaXplWCgwKSk7CiAgICAg
RVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCBmYWxzZSkudGlsZVNpemVYKDEpKTsK
LSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIHRydWUpLnRpbGVTaXplWCgw
KSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDYsICA2LCB0cnVlKS50aWxlU2l6
ZVgoMSkpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgdHJ1ZSkudGls
ZVNpemVYKDApKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIHRydWUp
LnRpbGVTaXplWCgxKSk7CiAKICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAgOCwgIDgs
IGZhbHNlKS50aWxlU2l6ZVgoMCkpOwogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA4
LCAgOCwgZmFsc2UpLnRpbGVTaXplWCgxKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEo
NSwgIDgsICA4LCB0cnVlKS50aWxlU2l6ZVgoMCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdE
YXRhKDUsICA4LCAgOCwgdHJ1ZSkudGlsZVNpemVYKDEpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGls
aW5nRGF0YSg1LCAgOCwgIDgsIHRydWUpLnRpbGVTaXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDQs
IFRpbGluZ0RhdGEoNSwgIDgsICA4LCB0cnVlKS50aWxlU2l6ZVgoMSkpOwogCiAgICAgRVhQRUNU
X0VRKDUsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCBmYWxzZSkudGlsZVNpemVYKDApKTsKICAgICBF
WFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIGZhbHNlKS50aWxlU2l6ZVgoMSkpOwot
ICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgdHJ1ZSkudGlsZVNpemVYKDAp
KTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAxMCwgMTAsIHRydWUpLnRpbGVTaXpl
WCgwKSk7CiAgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCB0cnVlKS50aWxl
U2l6ZVgoMSkpOwogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgdHJ1ZSku
dGlsZVNpemVYKDIpKTsKIAotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDExLCAxMSwg
dHJ1ZSkudGlsZVNpemVYKDIpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAxMSwg
MTEsIHRydWUpLnRpbGVTaXplWCgyKSk7CiAgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwg
MTIsIDEyLCB0cnVlKS50aWxlU2l6ZVgoMikpOwogfQogVEVTVChUaWxpbmdEYXRhVGVzdCwgdGls
ZVNpemVZKQogewogICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUsICA1LCAgNSwgZmFsc2Up
LnRpbGVTaXplWSgwKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDUsICA1LCB0
cnVlKS50aWxlU2l6ZVkoMCkpOworICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUsICA1LCAg
NSwgdHJ1ZSkudGlsZVNpemVZKDApKTsKIAogICAgIEVYUEVDVF9FUSg1LCBUaWxpbmdEYXRhKDUs
ICA2LCAgNiwgZmFsc2UpLnRpbGVTaXplWSgwKSk7CiAgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0Rh
dGEoNSwgIDYsICA2LCBmYWxzZSkudGlsZVNpemVZKDEpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGls
aW5nRGF0YSg1LCAgNiwgIDYsIHRydWUpLnRpbGVTaXplWSgwKSk7Ci0gICAgRVhQRUNUX0VRKDMs
IFRpbGluZ0RhdGEoNSwgIDYsICA2LCB0cnVlKS50aWxlU2l6ZVkoMSkpOworICAgIEVYUEVDVF9F
USg0LCBUaWxpbmdEYXRhKDUsICA2LCAgNiwgdHJ1ZSkudGlsZVNpemVZKDApKTsKKyAgICBFWFBF
Q1RfRVEoMiwgVGlsaW5nRGF0YSg1LCAgNiwgIDYsIHRydWUpLnRpbGVTaXplWSgxKSk7CiAKICAg
ICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIGZhbHNlKS50aWxlU2l6ZVkoMCkp
OwogICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgZmFsc2UpLnRpbGVTaXpl
WSgxKSk7Ci0gICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgIDgsICA4LCB0cnVlKS50aWxl
U2l6ZVkoMCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICA4LCAgOCwgdHJ1ZSku
dGlsZVNpemVZKDEpKTsKKyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAgOCwgIDgsIHRy
dWUpLnRpbGVTaXplWSgwKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoNSwgIDgsICA4
LCB0cnVlKS50aWxlU2l6ZVkoMSkpOwogCiAgICAgRVhQRUNUX0VRKDUsIFRpbGluZ0RhdGEoNSwg
MTAsIDEwLCBmYWxzZSkudGlsZVNpemVZKDApKTsKICAgICBFWFBFQ1RfRVEoNSwgVGlsaW5nRGF0
YSg1LCAxMCwgMTAsIGZhbHNlKS50aWxlU2l6ZVkoMSkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxp
bmdEYXRhKDUsIDEwLCAxMCwgdHJ1ZSkudGlsZVNpemVZKDApKTsKKyAgICBFWFBFQ1RfRVEoNCwg
VGlsaW5nRGF0YSg1LCAxMCwgMTAsIHRydWUpLnRpbGVTaXplWSgwKSk7CiAgICAgRVhQRUNUX0VR
KDMsIFRpbGluZ0RhdGEoNSwgMTAsIDEwLCB0cnVlKS50aWxlU2l6ZVkoMSkpOwogICAgIEVYUEVD
VF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEwLCAxMCwgdHJ1ZSkudGlsZVNpemVZKDIpKTsKIAotICAg
IEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDExLCAxMSwgdHJ1ZSkudGlsZVNpemVZKDIpKTsK
KyAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSg1LCAxMSwgMTEsIHRydWUpLnRpbGVTaXplWSgy
KSk7CiAgICAgRVhQRUNUX0VRKDMsIFRpbGluZ0RhdGEoNSwgMTIsIDEyLCB0cnVlKS50aWxlU2l6
ZVkoMikpOwogfQogCkBAIC0zMTksMTAgKzMxOSwxMCBAQCBURVNUKFRpbGluZ0RhdGFUZXN0LCB0
aWxlU2l6ZVhfYW5kX3RpbGVQb3NpdGlvblgpCiAgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEo
MywgMSwgICAxLCB0cnVlKS50aWxlUG9zaXRpb25YKDApKTsKICAgICBFWFBFQ1RfRVEoMSwgVGls
aW5nRGF0YSgzLCAxLCAxMDAsIHRydWUpLnRpbGVTaXplWCgwKSk7CiAgICAgRVhQRUNUX0VRKDAs
IFRpbGluZ0RhdGEoMywgMSwgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25YKDApKTsKLSAgICBFWFBF
Q1RfRVEoMywgVGlsaW5nRGF0YSg1LCAzLCAgIDEsIHRydWUpLnRpbGVTaXplWCgwKSk7Ci0gICAg
RVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoNSwgMywgICAxLCB0cnVlKS50aWxlUG9zaXRpb25YKDAp
KTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSg1LCAzLCAxMDAsIHRydWUpLnRpbGVTaXpl
WCgwKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoNSwgMywgMTAwLCB0cnVlKS50aWxl
UG9zaXRpb25YKDApKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCAzLCAgIDEsIHRy
dWUpLnRpbGVTaXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMywgICAx
LCB0cnVlKS50aWxlUG9zaXRpb25YKDApKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgz
LCAzLCAxMDAsIHRydWUpLnRpbGVTaXplWCgwKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0Rh
dGEoMywgMywgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25YKDApKTsKIAogICAgIC8vIE11bHRpcGxl
IHRpbGVzOgogICAgIC8vIG5vIGJvcmRlcgpAQCAtMzQwLDIzICszNDAsMjMgQEAgVEVTVChUaWxp
bmdEYXRhVGVzdCwgdGlsZVNpemVYX2FuZF90aWxlUG9zaXRpb25YKQogICAgIC8vIE11bHRpcGxl
IHRpbGVzOgogICAgIC8vIHdpdGggYm9yZGVyCiAgICAgLy8gcG9zaXRpb25zIDAsIDIsIDMsIDQK
LSAgICBFWFBFQ1RfRVEoNCwgVGlsaW5nRGF0YSgzLCA0LCAgIDEsIHRydWUpLm51bVRpbGVzKCkp
OwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsICAgMSwgdHJ1ZSkudGlsZVNpemVY
KDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAgIDEsIHRydWUpLnRpbGVT
aXplWCgxKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgICAxLCB0cnVlKS50
aWxlU2l6ZVgoMikpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsICAgMSwgdHJ1
ZSkudGlsZVNpemVYKDMpKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCA0LCAgIDEs
IHRydWUpLnRpbGVQb3NpdGlvblgoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMs
IDQsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgxKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGlu
Z0RhdGEoMywgNCwgICAxLCB0cnVlKS50aWxlUG9zaXRpb25YKDIpKTsKLSAgICBFWFBFQ1RfRVEo
MywgVGlsaW5nRGF0YSgzLCA0LCAgIDEsIHRydWUpLnRpbGVQb3NpdGlvblgoMykpOwotICAgIEVY
UEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDApKTsKLSAg
ICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA0LCAxMDAsIHRydWUpLnRpbGVTaXplWCgxKSk7
Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgNCwgMTAwLCB0cnVlKS50aWxlU2l6ZVgo
MikpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsIDEwMCwgdHJ1ZSkudGlsZVNp
emVYKDMpKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCA0LCAxMDAsIHRydWUpLnRp
bGVQb3NpdGlvblgoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDQsIDEwMCwg
dHJ1ZSkudGlsZVBvc2l0aW9uWCgxKSk7Ci0gICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywg
NCwgMTAwLCB0cnVlKS50aWxlUG9zaXRpb25YKDIpKTsKLSAgICBFWFBFQ1RfRVEoMywgVGlsaW5n
RGF0YSgzLCA0LCAxMDAsIHRydWUpLnRpbGVQb3NpdGlvblgoMykpOworICAgIEVYUEVDVF9FUSg0
LCBUaWxpbmdEYXRhKDMsIDYsICAgMSwgdHJ1ZSkubnVtVGlsZXMoKSk7CisgICAgRVhQRUNUX0VR
KDIsIFRpbGluZ0RhdGEoMywgNiwgICAxLCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVD
VF9FUSgxLCBUaWxpbmdEYXRhKDMsIDYsICAgMSwgdHJ1ZSkudGlsZVNpemVYKDEpKTsKKyAgICBF
WFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCA2LCAgIDEsIHRydWUpLnRpbGVTaXplWCgyKSk7Cisg
ICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgNiwgICAxLCB0cnVlKS50aWxlU2l6ZVgoMykp
OworICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDYsICAgMSwgdHJ1ZSkudGlsZVBvc2l0
aW9uWCgwKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgNiwgICAxLCB0cnVlKS50
aWxlUG9zaXRpb25YKDEpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCA2LCAgIDEs
IHRydWUpLnRpbGVQb3NpdGlvblgoMikpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMs
IDYsICAgMSwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgzKSk7CisgICAgRVhQRUNUX0VRKDIsIFRpbGlu
Z0RhdGEoMywgNiwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMCkpOworICAgIEVYUEVDVF9FUSgxLCBU
aWxpbmdEYXRhKDMsIDYsIDEwMCwgdHJ1ZSkudGlsZVNpemVYKDEpKTsKKyAgICBFWFBFQ1RfRVEo
MSwgVGlsaW5nRGF0YSgzLCA2LCAxMDAsIHRydWUpLnRpbGVTaXplWCgyKSk7CisgICAgRVhQRUNU
X0VRKDIsIFRpbGluZ0RhdGEoMywgNiwgMTAwLCB0cnVlKS50aWxlU2l6ZVgoMykpOworICAgIEVY
UEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDYsIDEwMCwgdHJ1ZSkudGlsZVBvc2l0aW9uWCgwKSk7
CisgICAgRVhQRUNUX0VRKDIsIFRpbGluZ0RhdGEoMywgNiwgMTAwLCB0cnVlKS50aWxlUG9zaXRp
b25YKDEpKTsKKyAgICBFWFBFQ1RfRVEoMywgVGlsaW5nRGF0YSgzLCA2LCAxMDAsIHRydWUpLnRp
bGVQb3NpdGlvblgoMikpOworICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsIDYsIDEwMCwg
dHJ1ZSkudGlsZVBvc2l0aW9uWCgzKSk7CiB9CiAKIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHRpbGVT
aXplWV9hbmRfdGlsZVBvc2l0aW9uWSkKQEAgLTM3NCwxMCArMzc0LDEwIEBAIFRFU1QoVGlsaW5n
RGF0YVRlc3QsIHRpbGVTaXplWV9hbmRfdGlsZVBvc2l0aW9uWSkKICAgICBFWFBFQ1RfRVEoMCwg
VGlsaW5nRGF0YSgzLCAgIDEsIDEsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOwogICAgIEVYUEVD
VF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwMCwgMSwgdHJ1ZSkudGlsZVNpemVZKDApKTsKICAgICBF
WFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSgzLCAxMDAsIDEsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkp
OwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsICAgMSwgMywgdHJ1ZSkudGlsZVNpemVZ
KDApKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSg1LCAgIDEsIDMsIHRydWUpLnRpbGVQ
b3NpdGlvblkoMCkpOwotICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDUsIDEwMCwgMywgdHJ1
ZSkudGlsZVNpemVZKDApKTsKLSAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0YSg1LCAxMDAsIDMs
IHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMs
ICAgMSwgMywgdHJ1ZSkudGlsZVNpemVZKDApKTsKKyAgICBFWFBFQ1RfRVEoMCwgVGlsaW5nRGF0
YSgzLCAgIDEsIDMsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOworICAgIEVYUEVDVF9FUSgzLCBU
aWxpbmdEYXRhKDMsIDEwMCwgMywgdHJ1ZSkudGlsZVNpemVZKDApKTsKKyAgICBFWFBFQ1RfRVEo
MCwgVGlsaW5nRGF0YSgzLCAxMDAsIDMsIHRydWUpLnRpbGVQb3NpdGlvblkoMCkpOwogCiAgICAg
Ly8gTXVsdGlwbGUgdGlsZXM6CiAgICAgLy8gbm8gYm9yZGVyCkBAIC0zOTUsMjMgKzM5NSwyMyBA
QCBURVNUKFRpbGluZ0RhdGFUZXN0LCB0aWxlU2l6ZVlfYW5kX3RpbGVQb3NpdGlvblkpCiAgICAg
Ly8gTXVsdGlwbGUgdGlsZXM6CiAgICAgLy8gd2l0aCBib3JkZXIKICAgICAvLyBwb3NpdGlvbnMg
MCwgMiwgMywgNAotICAgIEVYUEVDVF9FUSg0LCBUaWxpbmdEYXRhKDMsICAgMSwgNCwgdHJ1ZSku
bnVtVGlsZXMoKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgICAxLCA0LCB0cnVl
KS50aWxlU2l6ZVkoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAgMSwgNCwg
dHJ1ZSkudGlsZVNpemVZKDEpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAgIDEs
IDQsIHRydWUpLnRpbGVTaXplWSgyKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywg
ICAxLCA0LCB0cnVlKS50aWxlU2l6ZVkoMykpOwotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRh
KDMsICAgMSwgNCwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRp
bGluZ0RhdGEoMywgICAxLCA0LCB0cnVlKS50aWxlUG9zaXRpb25ZKDEpKTsKLSAgICBFWFBFQ1Rf
RVEoMiwgVGlsaW5nRGF0YSgzLCAgIDEsIDQsIHRydWUpLnRpbGVQb3NpdGlvblkoMikpOwotICAg
IEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsICAgMSwgNCwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgz
KSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMTAwLCA0LCB0cnVlKS50aWxlU2l6
ZVkoMCkpOwotICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwMCwgNCwgdHJ1ZSkudGls
ZVNpemVZKDEpKTsKLSAgICBFWFBFQ1RfRVEoMSwgVGlsaW5nRGF0YSgzLCAxMDAsIDQsIHRydWUp
LnRpbGVTaXplWSgyKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMTAwLCA0LCB0
cnVlKS50aWxlU2l6ZVkoMykpOwotICAgIEVYUEVDVF9FUSgwLCBUaWxpbmdEYXRhKDMsIDEwMCwg
NCwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEo
MywgMTAwLCA0LCB0cnVlKS50aWxlUG9zaXRpb25ZKDEpKTsKLSAgICBFWFBFQ1RfRVEoMiwgVGls
aW5nRGF0YSgzLCAxMDAsIDQsIHRydWUpLnRpbGVQb3NpdGlvblkoMikpOwotICAgIEVYUEVDVF9F
USgzLCBUaWxpbmdEYXRhKDMsIDEwMCwgNCwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgzKSk7CisgICAg
RVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEoMywgICAxLCA2LCB0cnVlKS5udW1UaWxlcygpKTsKKyAg
ICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAgIDEsIDYsIHRydWUpLnRpbGVTaXplWSgwKSk7
CisgICAgRVhQRUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgICAxLCA2LCB0cnVlKS50aWxlU2l6ZVko
MSkpOworICAgIEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsICAgMSwgNiwgdHJ1ZSkudGlsZVNp
emVZKDIpKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAgIDEsIDYsIHRydWUpLnRp
bGVTaXplWSgzKSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgICAxLCA2LCB0cnVl
KS50aWxlUG9zaXRpb25ZKDApKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAgIDEs
IDYsIHRydWUpLnRpbGVQb3NpdGlvblkoMSkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRh
KDMsICAgMSwgNiwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgyKSk7CisgICAgRVhQRUNUX0VRKDQsIFRp
bGluZ0RhdGEoMywgICAxLCA2LCB0cnVlKS50aWxlUG9zaXRpb25ZKDMpKTsKKyAgICBFWFBFQ1Rf
RVEoMiwgVGlsaW5nRGF0YSgzLCAxMDAsIDYsIHRydWUpLnRpbGVTaXplWSgwKSk7CisgICAgRVhQ
RUNUX0VRKDEsIFRpbGluZ0RhdGEoMywgMTAwLCA2LCB0cnVlKS50aWxlU2l6ZVkoMSkpOworICAg
IEVYUEVDVF9FUSgxLCBUaWxpbmdEYXRhKDMsIDEwMCwgNiwgdHJ1ZSkudGlsZVNpemVZKDIpKTsK
KyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAxMDAsIDYsIHRydWUpLnRpbGVTaXplWSgz
KSk7CisgICAgRVhQRUNUX0VRKDAsIFRpbGluZ0RhdGEoMywgMTAwLCA2LCB0cnVlKS50aWxlUG9z
aXRpb25ZKDApKTsKKyAgICBFWFBFQ1RfRVEoMiwgVGlsaW5nRGF0YSgzLCAxMDAsIDYsIHRydWUp
LnRpbGVQb3NpdGlvblkoMSkpOworICAgIEVYUEVDVF9FUSgzLCBUaWxpbmdEYXRhKDMsIDEwMCwg
NiwgdHJ1ZSkudGlsZVBvc2l0aW9uWSgyKSk7CisgICAgRVhQRUNUX0VRKDQsIFRpbGluZ0RhdGEo
MywgMTAwLCA2LCB0cnVlKS50aWxlUG9zaXRpb25ZKDMpKTsKIH0KIAogVEVTVChUaWxpbmdEYXRh
VGVzdCwgc2V0VG90YWxTaXplKQpAQCAtNDY4LDcgKzQ2OCw3IEBAIFRFU1QoVGlsaW5nRGF0YVRl
c3QsIHNldE1heFRleHR1cmVTaXplTm9Cb3JkZXJzKQogCiBURVNUKFRpbGluZ0RhdGFUZXN0LCBz
ZXRNYXhUZXh0dXJlU2l6ZUJvcmRlcnMpCiB7Ci0gICAgVGlsaW5nRGF0YSBkYXRhKDgsIDE2LCAz
MCwgdHJ1ZSk7CisgICAgVGlsaW5nRGF0YSBkYXRhKDgsIDE2LCAzMiwgdHJ1ZSk7CiAgICAgRVhQ
RUNUX0VRKDMsIGRhdGEubnVtVGlsZXNYKCkpOwogICAgIEVYUEVDVF9FUSg1LCBkYXRhLm51bVRp
bGVzWSgpKTsKIApAQCAtNDg0LDcgKzQ4NCw3IEBAIFRFU1QoVGlsaW5nRGF0YVRlc3QsIHNldE1h
eFRleHR1cmVTaXplQm9yZGVycykKIAogICAgIGRhdGEuc2V0TWF4VGV4dHVyZVNpemUoNSk7CiAg
ICAgRVhQRUNUX0VRKDUsIGRhdGEubWF4VGV4dHVyZVNpemUoKSk7Ci0gICAgRVhQRUNUX0VRKDYs
IGRhdGEubnVtVGlsZXNYKCkpOworICAgIEVYUEVDVF9FUSg1LCBkYXRhLm51bVRpbGVzWCgpKTsK
ICAgICBFWFBFQ1RfRVEoMTAsIGRhdGEubnVtVGlsZXNZKCkpOwogfQogCg==
</data>
<flag name="review"
          id="97991"
          type_id="1"
          status="+"
          setter="jamesr"
    />
    <flag name="commit-queue"
          id="98057"
          type_id="3"
          status="-"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>