<?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>198023</bug_id>
          
          <creation_ts>2019-05-18 17:11:42 -0700</creation_ts>
          <short_desc>[JSC] UnlinkedCodeBlock should be eventually jettisoned in VM mini mode</short_desc>
          <delta_ts>2019-06-12 07:51:40 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>198727</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>guijemont</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1537443</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-18 17:11:42 -0700</bug_when>
    <thetext>Otherwise, so long as we have a reachable path to that UnlinkedCodeBlock, we still retain it.
Since UnlinkedCodeBlock holds InstructionStream and UnlinkedMetadataTable, it is not so cheap.
We could have some mechanism similar to ScriptExecutable -&gt; CodeBlock (logically) weak reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537633</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-20 11:04:59 -0700</bug_when>
    <thetext>Now I think this would be very profitable.
CodeBlock -&gt; UnlinkedCodeBlock should be strong ref.
But UnlinkedFunctionExecutable -&gt; UnlinkedCodeBlock can be (special) weak ref as ScriptExecutable -&gt; CodeBlock ref is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537635</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-20 11:09:44 -0700</bug_when>
    <thetext>I’ll prototype it quickly to see the potential impact on Gmail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537696</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-20 14:37:02 -0700</bug_when>
    <thetext>Simply making them Weak&lt;&gt; like thing reduces Gmail memory footprint by ~8% in my MBP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537745</commentid>
    <comment_count>4</comment_count>
      <attachid>370283</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-20 17:00:33 -0700</bug_when>
    <thetext>Created attachment 370283
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538576</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-22 22:53:04 -0700</bug_when>
    <thetext>Interesting results

RAMification 0.28% progression
Speedometer 0.69% regression
JetStream2 1.31% progression</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539866</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-28 19:44:07 -0700</bug_when>
    <thetext>UnlinkedCodeBlock investigation in Gmail. The following numbers are not taken at the same time, so it is just a rough sketch of the memory usage.
But it is enough I think.


Total number = 24219
Actually live = 2208
Baseline or upper + live = 4994
DFG or upper + live = 2532</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539867</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-28 19:45:12 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #6)
&gt; UnlinkedCodeBlock investigation in Gmail. The following numbers are not
&gt; taken at the same time, so it is just a rough sketch of the memory usage.
&gt; But it is enough I think.
&gt; 
&gt; 
&gt; Total number = 24219
&gt; Actually live = 2208
&gt; Baseline or upper + live = 4994
&gt; DFG or upper + live = 2532

The above says there are 20000 non-live LLInt UnlinkedCodeBlock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539868</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-28 19:46:05 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #7)
&gt; (In reply to Yusuke Suzuki from comment #6)
&gt; &gt; UnlinkedCodeBlock investigation in Gmail. The following numbers are not
&gt; &gt; taken at the same time, so it is just a rough sketch of the memory usage.
&gt; &gt; But it is enough I think.
&gt; &gt; 
&gt; &gt; 
&gt; &gt; Total number = 24219
&gt; &gt; Actually live = 2208
&gt; &gt; Baseline or upper + live = 4994
&gt; &gt; DFG or upper + live = 2532
&gt; 
&gt; The above says there are 20000 non-live LLInt UnlinkedCodeBlock.

LLInt UnlinkedCodeBlock means that CodeBlock belonging to this UnlinkedCodeBlock does not get Baseline or upper so far.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540403</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-30 11:55:38 -0700</bug_when>
    <thetext>Discussed with Saam. Basically dropping UnlinkedCodeBlock can cause PLT / Speedometer2 regression. These UnlinkedCodeBlock can be reused once the same page is loaded. This is the same when we are using Safari and navigating to the page in the same domain (typically loading many same scripts again).
On the other hand, keeping these UnlinkedCodeBlock (almost) forever until we fill up CodeCache completely takes huge amount of memory in SPA web pages. One example is Gmail. We do not navigate to the other pages in Gmail, we stay the same page for a very long time. In this case, keeping UnlinkedCodeBlock is much worthless compared to the non-SPA page navigation story. We can accelerate reload of the Gmail, but it is not frequent compared to navigation in non-SPA pages while it takes fair amount of memory.

Maybe, we should discard these UnlinkedCodeBlocks only when it is not used soooooooooooo long time? Or once we get Bytecode disk caching, we could try more aggressive eviction policy? Anyway, we could try various things. And at least for mini mode VM, we should discard these things eagerly because we are incentivize memory reduction more on mini mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540420</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-30 12:48:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/51192115&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1541819</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-04 18:34:10 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #10)
&gt; &lt;rdar://problem/51192115&gt;

Let&apos;s do it for mini mode VM first.
And I&apos;m also considering whether we can make UnlinkedCodeBlock back to cached bytecode. I think we can do it easily. But we should get some space to saving decoder and offsets :P (I have one idea anyway, so I think we can do it maybe).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1541828</commentid>
    <comment_count>12</comment_count>
      <attachid>371361</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-04 18:48:45 -0700</bug_when>
    <thetext>Created attachment 371361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542231</commentid>
    <comment_count>13</comment_count>
      <attachid>371455</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-05 17:14:42 -0700</bug_when>
    <thetext>Created attachment 371455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542304</commentid>
    <comment_count>14</comment_count>
      <attachid>371472</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-05 22:06:32 -0700</bug_when>
    <thetext>Created attachment 371472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542305</commentid>
    <comment_count>15</comment_count>
      <attachid>371473</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-05 22:07:38 -0700</bug_when>
    <thetext>Created attachment 371473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542308</commentid>
    <comment_count>16</comment_count>
      <attachid>371474</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-05 22:15:23 -0700</bug_when>
    <thetext>Created attachment 371474
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542672</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-06 18:26:51 -0700</bug_when>
    <thetext>OK, we could have several problems. But as a first step, I&apos;ll go with a simple patch, and after that improving heuristics based on the workload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542715</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-06 21:46:17 -0700</bug_when>
    <thetext>Heuristics data. I think AGE = 7 case would be a good starting point.
AGE = 0 can reduce much memory, but it almost always requires reparsing 400 functions per scene change.


AGE = INFINITY, many = 0
WebKit Using System Malloc_0xe334000      18.5M      1040K      1040K        16K       5592       853K       203K     20%      32
WebKit Using System Malloc_0xe334000      21.7M      3760K      3760K      2368K      20566      5921K       207K      4%     195
WebKit Using System Malloc_0xe334000      22.8M      4928K      4912K      2944K      25225      7826K        30K      1%     204
WebKit Using System Malloc_0xe334000      22.8M      1024K      1024K      6832K      25225      7826K        30K      1%     204
WebKit Using System Malloc_0xe334000      22.8M       992K       992K      6864K      25225      7826K        30K      1%     204
WebKit Using System Malloc_0xe334000      21.7M      6960K      6736K       128K      21587      5918K       946K     14%     209
WebKit Using System Malloc_0xe334000      21.7M      6960K      6736K       128K      21587      5918K       946K     14%     209
WebKit Using System Malloc_0xe334000      21.7M      6960K      6736K       128K      21587      5918K       946K     14%     209
WebKit Using System Malloc_0xe334000      21.8M      6960K      6848K       128K      23709      6428K       548K      8%     208
WebKit Using System Malloc_0xe334000      21.8M      6960K      6848K       128K      23709      6428K       548K      8%     208
WebKit Using System Malloc_0xe334000      21.8M      6960K      6848K       128K      23709      6428K       548K      8%     208
WebKit Using System Malloc_0xe334000      21.6M      6848K      6672K       128K      23213      6149K       651K     10%     202
WebKit Using System Malloc_0xe334000      21.6M      6848K      6672K       128K      23213      6149K       651K     10%     202
WebKit Using System Malloc_0xe334000      21.6M      6848K      6672K       128K      23213      6149K       651K     10%     202
WebKit Using System Malloc_0xe334000      22.0M      7184K      7008K       128K      23801      6652K       484K      7%     208
WebKit Using System Malloc_0xe334000      22.0M      7184K      7008K       128K      23801      6652K       484K      7%     208
WebKit Using System Malloc_0xe334000      21.7M      6912K      6752K       128K      24338      6457K       423K      7%     209
WebKit Using System Malloc_0xe334000      21.7M      6912K      6752K       128K      24338      6457K       423K      7%     209
WebKit Using System Malloc_0xe334000      21.7M      6912K      6752K       128K      24338      6457K       423K      7%     209
WebKit Using System Malloc_0xe334000      22.7M      7760K      7616K       128K      24202      7503K       241K      4%     205
WebKit Using System Malloc_0xe334000      22.7M      7760K      7616K       128K      24202      7503K       241K      4%     205
WebKit Using System Malloc_0xe334000      23.6M      8656K      8528K       128K      24683      8502K       154K      2%     206
WebKit Using System Malloc_0xe334000      22.7M      7712K      7568K       128K      24431      7472K       224K      3%     203
WebKit Using System Malloc_0xe334000      22.7M      7712K      7568K       128K      24431      7472K       224K      3%     203
WebKit Using System Malloc_0xe334000      22.0M      7248K      7104K       128K      25206      6787K       445K      7%     220
WebKit Using System Malloc_0xe334000      21.8M      6992K      6784K       144K      24012      6362K       566K      9%     212
WebKit Using System Malloc_0xe334000      21.8M      6288K      6096K       832K      24012      6362K       566K      9%     212
WebKit Using System Malloc_0xe334000      21.8M      6416K      6240K       720K      24330      6410K       550K      8%     213
WebKit Using System Malloc_0xe334000      21.6M      6784K      6592K       144K      23254      6018K       718K     11%     199
WebKit Using System Malloc_0xe334000      21.6M      6800K      6608K       144K      23708      6135K       617K     10%     200
WebKit Using System Malloc_0xe334000      21.7M      6880K      6656K       144K      23418      6101K       699K     11%     204
WebKit Using System Malloc_0xe334000      21.7M      6880K      6656K       144K      23418      6101K       699K     11%     204
WebKit Using System Malloc_0xe334000      21.7M      6880K      6656K       144K      23758      6140K       660K     10%     204
WebKit Using System Malloc_0xe334000      21.7M      6848K      6656K       144K      24031      6282K       518K      8%     205
WebKit Using System Malloc_0xe334000      21.7M      6848K      6656K       144K      24031      6282K       518K      8%     205
WebKit Using System Malloc_0xe334000      21.1M      6400K      6160K       144K      21961      5288K      1016K     17%     191
WebKit Using System Malloc_0xe334000      21.5M      6720K      6544K       144K      23923      6141K       547K      9%     196
WebKit Using System Malloc_0xe334000      21.5M      6720K      6544K       144K      23923      6141K       547K      9%     196
WebKit Using System Malloc_0xe334000      21.5M      6720K      6544K       144K      23923      6141K       547K      9%     196
WebKit Using System Malloc_0xe334000      21.5M      6592K      6528K       176K      24226      6191K       513K      8%     197
WebKit Using System Malloc_0xe334000      21.6M      6480K      6432K       304K      23179      5959K       777K     12%     199
WebKit Using System Malloc_0xe334000      21.6M      6480K      6432K       304K      23179      5959K       777K     12%     199
WebKit Using System Malloc_0xe334000      21.6M      6480K      6432K       304K      23179      5959K       777K     12%     199
WebKit Using System Malloc_0xe334000      21.6M      6480K      6432K       304K      23590      6047K       689K     11%     199
WebKit Using System Malloc_0xe334000      21.7M      6576K      6544K       304K      23581      6205K       643K     10%     203
WebKit Using System Malloc_0xe334000      21.7M      6704K      6688K       272K      24688      6518K       442K      7%     205
WebKit Using System Malloc_0xe334000      21.7M      6704K      6688K       272K      24688      6518K       442K      7%     205
WebKit Using System Malloc_0xe334000      21.7M      6704K      6688K       272K      24881      6532K       428K      7%     205
WebKit Using System Malloc_0xe334000      21.6M      6656K      6576K       256K      23405      6087K       745K     11%     203
WebKit Using System Malloc_0xe334000      21.6M      6656K      6576K       256K      23405      6087K       745K     11%     203
WebKit Using System Malloc_0xe334000      21.2M      6304K      6176K       256K      22167      5452K       980K     16%     198
WebKit Using System Malloc_0xe334000      21.6M      6624K      6592K       256K      24300      6293K       555K      9%     199
WebKit Using System Malloc_0xe334000      21.6M      6624K      6592K       256K      24300      6293K       555K      9%     199
WebKit Using System Malloc_0xe334000      21.6M      6624K      6592K       256K      24300      6293K       555K      9%     199
WebKit Using System Malloc_0xe334000      22.7M      7584K      7536K       256K      24654      7475K       317K      5%     206
WebKit Using System Malloc_0xe334000      22.7M      7584K      7536K       256K      24654      7475K       317K      5%     206
WebKit Using System Malloc_0xe334000      21.7M      6800K      6768K       256K      24456      6516K       508K      8%     208
WebKit Using System Malloc_0xe334000      21.7M      6752K      6704K       224K      23692      6228K       700K     11%     204
WebKit Using System Malloc_0xe334000      21.7M      6752K      6704K       224K      23692      6228K       700K     11%     204
WebKit Using System Malloc_0xe334000      21.8M      6864K      6800K       224K      24316      6447K       577K      9%     210
WebKit Using System Malloc_0xe334000      21.8M      6864K      6800K       224K      24316      6447K       577K      9%     210
WebKit Using System Malloc_0xe334000      22.0M      7040K      6976K       224K      25357      6817K       383K      6%     214
WebKit Using System Malloc_0xe334000      21.9M      6944K      6864K       224K      23736      6450K       638K     10%     202
WebKit Using System Malloc_0xe334000      22.1M      7104K      7072K       224K      25123      6991K       305K      5%     209
WebKit Using System Malloc_0xe334000      22.1M      7104K      7072K       224K      25123      6991K       305K      5%     209
WebKit Using System Malloc_0xe334000      21.7M      6768K      6704K       224K      23713      6228K       700K     11%     205
WebKit Using System Malloc_0xe334000      21.7M      6768K      6704K       224K      23713      6228K       700K     11%     205
WebKit Using System Malloc_0xe334000      21.7M      6768K      6704K       224K      23713      6228K       700K     11%     205
WebKit Using System Malloc_0xe334000      21.7M      6768K      6704K       224K      23713      6228K       700K     11%     205
WebKit Using System Malloc_0xe334000      21.7M      6752K      6736K       224K      24168      6341K       619K      9%     206
WebKit Using System Malloc_0xe334000      22.0M      7008K      6944K       208K      24214      6588K       564K      8%     206
WebKit Using System Malloc_0xe334000      22.0M      7008K      6944K       208K      24214      6588K       564K      8%     206
WebKit Using System Malloc_0xe334000      21.5M      6560K      6464K       208K      24012      6087K       585K      9%     195
WebKit Using System Malloc_0xe334000      21.5M      6560K      6464K       208K      24012      6087K       585K      9%     195
WebKit Using System Malloc_0xe334000      21.5M      6560K      6480K       208K      24464      6174K       514K      8%     195
WebKit Using System Malloc_0xe334000      21.3M      6400K      6272K       208K      23097      5647K       833K     13%     198
WebKit Using System Malloc_0xe334000      21.3M      6416K      6304K       208K      23459      5718K       794K     13%     199
WebKit Using System Malloc_0xe334000      21.7M      6816K      6768K       208K      24583      6431K       545K      8%     202
WebKit Using System Malloc_0xe334000      21.7M      6816K      6768K       208K      24583      6431K       545K      8%     202
WebKit Using System Malloc_0xe334000      21.7M      6816K      6768K       208K      24994      6506K       470K      7%     202
WebKit Using System Malloc_0xe334000      21.6M      6752K      6640K       208K      24091      6214K       634K     10%     202
WebKit Using System Malloc_0xe334000      21.6M      6752K      6640K       208K      24091      6214K       634K     10%     202
WebKit Using System Malloc_0xe334000      21.6M      6752K      6640K       208K      24091      6214K       634K     10%     202
WebKit Using System Malloc_0xe334000      21.6M      6752K      6640K       208K      24091      6214K       634K     10%     202
WebKit Using System Malloc_0xe334000      21.6M      6752K      6640K       208K      24083      6214K       634K     10%     202
WebKit Using System Malloc_0xe334000      21.6M      6752K      6640K       208K      24083      6214K       634K     10%     202
WebKit Using System Malloc_0xe334000      21.9M      7008K      6928K       208K      25427      6689K       447K      7%     208
WebKit Using System Malloc_0xe334000      21.9M      6928K      6832K       208K      24402      6492K       548K      8%     213
WebKit Using System Malloc_0xe334000      21.6M      6720K      6656K       208K      24338      6326K       538K      8%     200
WebKit Using System Malloc_0xe334000      21.6M      6720K      6656K       208K      24651      6360K       504K      8%     200
WebKit Using System Malloc_0xe334000      21.6M      6720K      6576K       208K      22579      5837K       947K     14%     202
WebKit Using System Malloc_0xe334000      21.6M      6720K      6576K       208K      22579      5837K       947K     14%     202
WebKit Using System Malloc_0xe334000      21.7M      6768K      6656K       192K      23838      6107K       741K     11%     205
WebKit Using System Malloc_0xe334000      21.8M      2960K      2960K      4064K      25182      6591K       433K      7%     208
WebKit Using System Malloc_0xe334000      21.8M      2304K      2304K      4720K      25178      6591K       433K      7%     208
WebKit Using System Malloc_0xe334000      21.8M      2240K      2240K      4784K      25178      6591K       433K      7%     208
WebKit Using System Malloc_0xe334000      21.8M      6192K      6192K       832K      25264      6597K       427K      7%     208
WebKit Using System Malloc_0xe334000      21.4M      6448K      6336K       304K      24644      5907K       733K     12%     199
WebKit Using System Malloc_0xe334000      21.5M      6576K      6528K       256K      24572      6160K       624K     10%     209
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25466      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25466      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25466      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25466      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212

AGE = 7, many = 100, most case, 1-2, ~20
WebKit Using System Malloc_0xcde8000      18.1M       384K       384K         0K       1003       166K       218K     57%       8
WebKit Using System Malloc_0xcde8000      20.6M      4336K      4336K       320K      15585      4297K       359K      8%     145
WebKit Using System Malloc_0xcde8000      21.7M       560K       560K      5632K      20572      5969K       223K      4%     198
WebKit Using System Malloc_0xcde8000      21.7M      3728K      3728K      2512K      21058      6045K       195K      4%     199
WebKit Using System Malloc_0xcde8000      22.5M      7232K      7216K       208K      24548      7444K         0K      0%     194
WebKit Using System Malloc_0xcde8000      22.5M      6432K      6416K      1008K      24548      7444K         0K      0%     194
WebKit Using System Malloc_0xcde8000      22.5M      6432K      6416K      1008K      24548      7444K         0K      0%     194
WebKit Using System Malloc_0xcde8000      21.5M      6672K      6608K        64K      21630      5980K       692K     11%     194
WebKit Using System Malloc_0xcde8000      21.5M      6672K      6608K        64K      21630      5980K       692K     11%     194
WebKit Using System Malloc_0xcde8000      21.3M      6496K      6400K        32K      20408      5602K       830K     13%     187
WebKit Using System Malloc_0xcde8000      21.3M      6496K      6400K        32K      20408      5602K       830K     13%     187
WebKit Using System Malloc_0xcde8000      21.7M      6944K      6816K        32K      19647      5952K       896K     14%     197
WebKit Using System Malloc_0xcde8000      21.7M      6944K      6816K        32K      19647      5952K       896K     14%     197
WebKit Using System Malloc_0xcde8000      22.2M      7376K      7184K        32K      20153      6551K       665K     10%     203
WebKit Using System Malloc_0xcde8000      21.7M      6016K      5920K       688K      19197      5813K       795K     13%     189
WebKit Using System Malloc_0xcde8000      21.7M      5632K      5600K      1024K      19681      5916K       708K     11%     189
WebKit Using System Malloc_0xcde8000      21.4M      6432K      6400K       112K      19851      5678K       834K     13%     194
WebKit Using System Malloc_0xcde8000      21.4M      6432K      6400K       112K      19851      5678K       834K     13%     194
WebKit Using System Malloc_0xcde8000      21.5M      6448K      6416K       112K      20149      5720K       808K     13%     195
WebKit Using System Malloc_0xcde8000      21.2M      6208K      6128K       112K      19604      5385K       855K     14%     183
WebKit Using System Malloc_0xcde8000      21.2M      6208K      6128K       112K      19604      5385K       855K     14%     183
WebKit Using System Malloc_0xcde8000      21.2M      6208K      6128K       112K      19604      5385K       855K     14%     183
WebKit Using System Malloc_0xcde8000      21.2M      6208K      6128K       112K      19600      5385K       855K     14%     183
WebKit Using System Malloc_0xcde8000      22.4M      7360K      7296K        96K      20700      6952K       440K      6%     193
WebKit Using System Malloc_0xcde8000      22.4M      7360K      7296K        96K      20700      6952K       440K      6%     193
WebKit Using System Malloc_0xcde8000      22.5M      7392K      7328K        96K      20995      7009K       415K      6%     195
WebKit Using System Malloc_0xcde8000      22.1M      7280K      7184K        64K      19834      6329K       919K     13%     205
WebKit Using System Malloc_0xcde8000      22.1M      7280K      7184K        64K      19834      6329K       919K     13%     205
WebKit Using System Malloc_0xcde8000      21.5M      6608K      6496K        64K      19019      5674K       886K     14%     197
WebKit Using System Malloc_0xcde8000      21.5M      6608K      6496K        64K      19019      5674K       886K     14%     197
WebKit Using System Malloc_0xcde8000      21.5M      6608K      6496K        64K      19019      5674K       886K     14%     197
WebKit Using System Malloc_0xcde8000      21.5M      6640K      6512K        64K      18002      5373K      1203K     19%     200
WebKit Using System Malloc_0xcde8000      21.5M      6640K      6512K        64K      18002      5373K      1203K     19%     200
WebKit Using System Malloc_0xcde8000      21.3M      6464K      6352K        64K      19455      5581K       835K     14%     188
WebKit Using System Malloc_0xcde8000      21.3M      6464K      6352K        64K      19455      5581K       835K     14%     188
WebKit Using System Malloc_0xcde8000      21.6M      6784K      6640K        32K      19785      5849K       823K     13%     192
WebKit Using System Malloc_0xcde8000      21.6M      6768K      6624K        48K      19785      5849K       823K     13%     192
WebKit Using System Malloc_0xcde8000      21.6M      6768K      6624K        48K      19785      5849K       823K     13%     192
WebKit Using System Malloc_0xcde8000      21.6M      6768K      6624K        48K      19785      5849K       823K     13%     192
WebKit Using System Malloc_0xcde8000      21.3M      6464K      6304K        48K      19829      5566K       786K     13%     186
WebKit Using System Malloc_0xcde8000      21.3M      6464K      6304K        48K      19829      5566K       786K     13%     186
WebKit Using System Malloc_0xcde8000      21.3M      6480K      6320K        48K      20153      5614K       754K     12%     187
WebKit Using System Malloc_0xcde8000      21.6M      6768K      6560K        48K      20087      5709K       899K     14%     196
WebKit Using System Malloc_0xcde8000      21.5M      6688K      6592K        32K      21280      5974K       650K     10%     203
WebKit Using System Malloc_0xcde8000      21.5M      6688K      6592K        32K      21280      5974K       650K     10%     203
WebKit Using System Malloc_0xcde8000      21.5M      6688K      6592K        32K      21568      5999K       625K     10%     203
WebKit Using System Malloc_0xcde8000      21.4M      6576K      6400K        32K      19929      5480K       952K     15%     194
WebKit Using System Malloc_0xcde8000      21.4M      6576K      6400K        32K      19929      5480K       952K     15%     194
WebKit Using System Malloc_0xcde8000      21.0M      6256K      6016K        32K      18947      4963K      1085K     18%     189
WebKit Using System Malloc_0xcde8000      21.3M      6464K      6288K        32K      20115      5529K       791K     13%     184
WebKit Using System Malloc_0xcde8000      21.3M      6464K      6288K        32K      20115      5529K       791K     13%     184
WebKit Using System Malloc_0xcde8000      21.9M      7024K      6880K        32K      21624      6375K       537K      8%     203
WebKit Using System Malloc_0xcde8000      21.9M      7024K      6880K        32K      21624      6375K       537K      8%     203
WebKit Using System Malloc_0xcde8000      21.2M      6448K      6256K        32K      20089      5491K       797K     13%     194
WebKit Using System Malloc_0xcde8000      21.5M      6656K      6464K        32K      20399      5825K       671K     11%     196
WebKit Using System Malloc_0xcde8000      21.4M      6544K      6336K        32K      19118      5523K       845K     14%     193
WebKit Using System Malloc_0xcde8000      21.4M      6544K      6336K        32K      19118      5523K       845K     14%     193

AGE = 3, many = 120
WebKit Using System Malloc_0xe6dc000      18.5M      1072K      1072K        16K       5731       866K       222K     21%      32
WebKit Using System Malloc_0xe6dc000      21.8M      4384K      4384K      1952K      20571      6063K       273K      5%     204
WebKit Using System Malloc_0xe6dc000      22.8M      7920K      7856K        32K      25183      7885K       2752      1%     208
WebKit Using System Malloc_0xe6dc000      22.8M      1872K      1808K      6080K      25183      7885K       2752      1%     208
WebKit Using System Malloc_0xe6dc000      23.6M      7264K      7264K      1440K      26203      8818K         0K      0%     222
WebKit Using System Malloc_0xe6dc000      23.4M      7072K      7072K      1408K      26196      8593K         0K      0%     221
WebKit Using System Malloc_0xe6dc000      21.3M      6608K      6464K        48K      18779      5478K      1034K     16%     188
WebKit Using System Malloc_0xe6dc000      21.3M      6592K      6448K        64K      18779      5478K      1034K     16%     188
WebKit Using System Malloc_0xe6dc000      21.5M      6736K      6592K        64K      19472      5722K       934K     15%     190
WebKit Using System Malloc_0xe6dc000      21.7M      6976K      6640K        48K      17424      5587K      1101K     17%     197
WebKit Using System Malloc_0xe6dc000      21.9M      7072K      6768K        32K      19847      6187K       613K     10%     199
WebKit Using System Malloc_0xe6dc000      21.9M      7072K      6768K        32K      19847      6187K       613K     10%     199
WebKit Using System Malloc_0xe6dc000      22.1M      7248K      6944K        32K      20741      6485K       491K      8%     203
WebKit Using System Malloc_0xe6dc000      21.5M      6816K      6400K        32K      18207      5371K      1061K     17%     202
WebKit Using System Malloc_0xe6dc000      21.5M      6784K      6464K        32K      20197      5835K       661K     11%     202
WebKit Using System Malloc_0xe6dc000      21.5M      6784K      6464K        32K      20197      5835K       661K     11%     202
WebKit Using System Malloc_0xe6dc000      21.5M      6768K      6464K        32K      20197      5835K       661K     11%     202
WebKit Using System Malloc_0xe6dc000      21.5M      6768K      6464K        32K      20514      5866K       630K     10%     202
WebKit Using System Malloc_0xe6dc000      21.5M      6768K      6464K        32K      20510      5865K       631K     10%     202
WebKit Using System Malloc_0xe6dc000      21.7M      6944K      6480K        32K      18054      5580K       932K     15%     200
WebKit Using System Malloc_0xe6dc000      21.7M      6976K      6528K        16K      18558      5702K       842K     13%     201
WebKit Using System Malloc_0xe6dc000      21.5M      6816K      6496K        16K      21109      5989K       523K      9%     202
WebKit Using System Malloc_0xe6dc000      21.5M      6816K      6496K        16K      21109      5989K       523K      9%     202
WebKit Using System Malloc_0xe6dc000      21.5M      6832K      6512K        16K      21397      6030K       498K      8%     203
WebKit Using System Malloc_0xe6dc000      21.4M      6656K      6272K        16K      19838      5591K       697K     12%     191
WebKit Using System Malloc_0xe6dc000      21.4M      5936K      5904K       400K      18999      5542K       762K     13%     195
WebKit Using System Malloc_0xe6dc000      21.4M      5936K      5904K       400K      18999      5542K       762K     13%     195
WebKit Using System Malloc_0xe6dc000      21.4M      5936K      5904K       400K      19302      5572K       732K     12%     195
WebKit Using System Malloc_0xe6dc000      21.4M      6320K      6192K        32K      17450      5109K      1115K     18%     195
WebKit Using System Malloc_0xe6dc000      21.6M      6512K      6416K        32K      18932      5611K       837K     13%     199
WebKit Using System Malloc_0xe6dc000      21.5M      6432K      6400K        64K      19556      5770K       694K     11%     199
WebKit Using System Malloc_0xe6dc000      21.5M      6432K      6400K        64K      19556      5770K       694K     11%     199
WebKit Using System Malloc_0xe6dc000      21.3M      6320K      6224K        48K      19044      5517K       755K     13%     189
WebKit Using System Malloc_0xe6dc000      21.3M      6320K      6224K        48K      19044      5517K       755K     13%     189
WebKit Using System Malloc_0xe6dc000      21.3M      6320K      6224K        48K      19044      5517K       755K     13%     189
WebKit Using System Malloc_0xe6dc000      22.5M      7360K      7312K        16K      19896      6823K       505K      7%     197
WebKit Using System Malloc_0xe6dc000      22.5M      7360K      7312K        16K      19896      6823K       505K      7%     197
WebKit Using System Malloc_0xe6dc000      22.7M      7648K      7584K         0K      19878      7080K       504K      7%     208
WebKit Using System Malloc_0xe6dc000      22.7M      7648K      7584K         0K      19878      7080K       504K      7%     208
WebKit Using System Malloc_0xe6dc000      22.7M      7648K      7584K         0K      19878      7080K       504K      7%     208
WebKit Using System Malloc_0xe6dc000      22.7M      7648K      7584K         0K      19878      7080K       504K      7%     208
WebKit Using System Malloc_0xe6dc000      22.7M      7648K      7584K         0K      20102      7100K       484K      7%     208
WebKit Using System Malloc_0xe6dc000      23.1M      8080K      8032K         0K      21106      7741K       291K      4%     216
WebKit Using System Malloc_0xe6dc000      21.8M      6992K      6784K         0K      19033      5962K       822K     13%     204
WebKit Using System Malloc_0xe6dc000      21.8M      6992K      6784K         0K      19033      5962K       822K     13%     204
WebKit Using System Malloc_0xe6dc000      21.8M      6960K      6784K         0K      19033      5962K       822K     13%     204
WebKit Using System Malloc_0xe6dc000      21.8M      6960K      6784K         0K      19033      5962K       822K     13%     204
WebKit Using System Malloc_0xe6dc000      21.9M      6928K      6720K         0K      20143      6220K       500K      8%     198
WebKit Using System Malloc_0xe6dc000      21.9M      6928K      6720K         0K      20143      6220K       500K      8%     198
WebKit Using System Malloc_0xe6dc000      21.9M      6928K      6720K         0K      20143      6220K       500K      8%     198
WebKit Using System Malloc_0xe6dc000      21.4M      6528K      6224K         0K      17839      5237K       987K     16%     191
WebKit Using System Malloc_0xe6dc000      21.4M      6528K      6224K         0K      17839      5237K       987K     16%     191
WebKit Using System Malloc_0xe6dc000      21.4M      6560K      6320K         0K      20185      5719K       601K     10%     195
WebKit Using System Malloc_0xe6dc000      21.4M      6560K      6320K         0K      20185      5719K       601K     10%     195
WebKit Using System Malloc_0xe6dc000      21.4M      6576K      6240K         0K      18642      5461K       779K     13%     197
WebKit Using System Malloc_0xe6dc000      21.5M      6624K      6384K         0K      18825      5570K       814K     13%     196
WebKit Using System Malloc_0xe6dc000      21.5M      6624K      6384K         0K      18825      5570K       814K     13%     196
WebKit Using System Malloc_0xe6dc000      21.5M      6624K      6384K         0K      18825      5570K       814K     13%     196
WebKit Using System Malloc_0xe6dc000      21.5M      6624K      6384K         0K      18825      5570K       814K     13%     196
WebKit Using System Malloc_0xe6dc000      21.5M      6624K      6384K         0K      18817      5570K       814K     13%     196
WebKit Using System Malloc_0xe6dc000      21.8M      6848K      6592K         0K      19694      6009K       583K      9%     194
WebKit Using System Malloc_0xe6dc000      21.8M      6848K      6592K         0K      19694      6009K       583K      9%     194
WebKit Using System Malloc_0xe6dc000      21.8M      6848K      6592K         0K      19694      6009K       583K      9%     194
WebKit Using System Malloc_0xe6dc000      21.8M      6848K      6592K         0K      19694      6009K       583K      9%     194
WebKit Using System Malloc_0xe6dc000      21.8M      6848K      6592K         0K      19686      6008K       584K      9%     194
WebKit Using System Malloc_0xe6dc000      21.8M      6928K      6768K         0K      20095      6098K       670K     10%     200
WebKit Using System Malloc_0xe6dc000      21.8M      6928K      6768K         0K      20095      6098K       670K     10%     200
WebKit Using System Malloc_0xe6dc000      21.5M      6656K      6512K         0K      19821      5727K       785K     13%     197
WebKit Using System Malloc_0xe6dc000      21.5M      6656K      6512K         0K      19821      5727K       785K     13%     197
WebKit Using System Malloc_0xe6dc000      21.5M      6656K      6512K         0K      19821      5727K       785K     13%     197
WebKit Using System Malloc_0xe6dc000      21.4M      6624K      6368K         0K      18165      5313K      1055K     17%     196
WebKit Using System Malloc_0xe6dc000      21.4M      6624K      6368K         0K      18165      5313K      1055K     17%     196
WebKit Using System Malloc_0xe6dc000      22.5M      7520K      7344K         0K      20049      6865K       479K      7%     197
WebKit Using System Malloc_0xe6dc000      22.5M      7520K      7344K         0K      20049      6865K       479K      7%     197
WebKit Using System Malloc_0xe6dc000      22.5M      7520K      7344K         0K      20049      6865K       479K      7%     197
WebKit Using System Malloc_0xe6dc000      22.5M      7520K      7344K         0K      20049      6865K       479K      7%     197
WebKit Using System Malloc_0xe6dc000      22.5M      7536K      7360K         0K      20332      6906K       454K      7%     198
WebKit Using System Malloc_0xe6dc000      22.5M      7616K      7408K         0K      19998      6931K       477K      7%     200
WebKit Using System Malloc_0xe6dc000      22.5M      7616K      7408K         0K      19998      6931K       477K      7%     200
WebKit Using System Malloc_0xe6dc000      21.4M      6624K      6240K         0K      17495      5188K      1052K     17%     197
WebKit Using System Malloc_0xe6dc000      21.4M      6624K      6240K         0K      17963      5260K       980K     16%     197
WebKit Using System Malloc_0xe6dc000      21.7M      6912K      6528K         0K      19835      5752K       776K     12%     207
WebKit Using System Malloc_0xe6dc000      22.5M      7648K      7536K         0K      21923      7255K       281K      4%     201
WebKit Using System Malloc_0xe6dc000      22.5M      7648K      7536K         0K      21923      7255K       281K      4%     201
WebKit Using System Malloc_0xe6dc000      22.9M      7968K      7888K         0K      22831      7672K       216K      3%     216
WebKit Using System Malloc_0xe6dc000      21.6M      6816K      6608K         0K      19419      5674K       934K     15%     207
WebKit Using System Malloc_0xe6dc000      21.6M      6816K      6608K         0K      19419      5674K       934K     15%     207
WebKit Using System Malloc_0xe6dc000      21.6M      6816K      6608K         0K      19893      5776K       832K     13%     207
WebKit Using System Malloc_0xe6dc000      21.5M      6720K      6560K         0K      18873      5627K       933K     15%     202

AGE = 2, many = 200
WebKit Using System Malloc_0xac28000      18.1M       176K       176K       240K       1003       166K       250K     61%       8
WebKit Using System Malloc_0xac28000      20.3M      4112K      4080K       112K      13902      3774K       418K     10%     138
WebKit Using System Malloc_0xac28000      21.7M      1712K      1712K      4448K      20565      5921K       239K      4%     195
WebKit Using System Malloc_0xac28000      21.7M       656K       656K      5504K      20565      5921K       239K      4%     195
WebKit Using System Malloc_0xac28000      21.7M      4128K      4128K      2096K      21050      5997K       227K      4%     196
WebKit Using System Malloc_0xac28000      22.3M      6672K      6608K       208K      18484      6425K       391K      6%     184
WebKit Using System Malloc_0xac28000      22.3M      6800K      6752K       112K      19704      6602K       262K      4%     185
WebKit Using System Malloc_0xac28000      23.0M      7616K      7568K        16K      20873      7503K        81K      2%     206
WebKit Using System Malloc_0xac28000      23.0M      7632K      7584K        16K      21121      7536K        64K      1%     207
WebKit Using System Malloc_0xac28000      21.4M      6320K      6208K         0K      18072      5385K       823K     14%     194
WebKit Using System Malloc_0xac28000      21.4M      6320K      6208K         0K      18072      5385K       823K     14%     194
WebKit Using System Malloc_0xac28000      21.4M      6336K      6240K         0K      18713      5520K       720K     12%     195
WebKit Using System Malloc_0xac28000      21.3M      6240K      6160K         0K      19277      5570K       590K     10%     188
WebKit Using System Malloc_0xac28000      21.6M      6496K      6416K         0K      18618      5710K       706K     12%     189
WebKit Using System Malloc_0xac28000      21.6M      6496K      6416K         0K      18618      5710K       706K     12%     189
WebKit Using System Malloc_0xac28000      21.7M      6624K      6544K         0K      18994      5841K       703K     11%     197
WebKit Using System Malloc_0xac28000      21.7M      6624K      6544K         0K      18994      5841K       703K     11%     197
WebKit Using System Malloc_0xac28000      21.4M      6320K      6240K         0K      19107      5516K       724K     12%     191
WebKit Using System Malloc_0xac28000      21.4M      6320K      6240K         0K      19365      5545K       695K     12%     191
WebKit Using System Malloc_0xac28000      21.7M      6608K      6496K         0K      18847      5681K       815K     13%     200
WebKit Using System Malloc_0xac28000      21.2M      6112K      6064K         0K      21036      5650K       414K      7%     183
WebKit Using System Malloc_0xac28000      21.4M      6304K      6208K         0K      18908      5500K       708K     12%     189
WebKit Using System Malloc_0xac28000      21.4M      6304K      6208K         0K      18908      5500K       708K     12%     189
WebKit Using System Malloc_0xac28000      21.4M      6368K      6288K         0K      18769      5450K       838K     14%     193
WebKit Using System Malloc_0xac28000      21.4M      6368K      6288K         0K      18769      5450K       838K     14%     193
WebKit Using System Malloc_0xac28000      21.4M      6368K      6288K         0K      18769      5450K       838K     14%     193
WebKit Using System Malloc_0xac28000      21.8M      6640K      6608K        16K      20304      6100K       524K      8%     198
WebKit Using System Malloc_0xac28000      21.8M      6640K      6608K        16K      20304      6100K       524K      8%     198
WebKit Using System Malloc_0xac28000      21.5M      6416K      6384K        16K      20165      5811K       589K     10%     196
WebKit Using System Malloc_0xac28000      21.5M      6416K      6384K        16K      20165      5811K       589K     10%     196
WebKit Using System Malloc_0xac28000      21.5M      6480K      6368K         0K      18235      5386K       982K     16%     200
WebKit Using System Malloc_0xac28000      21.5M      6480K      6368K         0K      18235      5386K       982K     16%     200
WebKit Using System Malloc_0xac28000      21.6M      6528K      6464K         0K      19342      5778K       686K     11%     188
WebKit Using System Malloc_0xac28000      21.6M      6528K      6464K         0K      19342      5778K       686K     11%     188
WebKit Using System Malloc_0xac28000      21.6M      6528K      6464K         0K      19342      5778K       686K     11%     188
WebKit Using System Malloc_0xac28000      21.7M      6688K      6464K         0K      17059      5579K       885K     14%     197
WebKit Using System Malloc_0xac28000      21.7M      6688K      6464K         0K      17059      5579K       885K     14%     197
WebKit Using System Malloc_0xac28000      21.7M      6704K      6512K         0K      18455      5782K       730K     12%     198

AGE = 1, 
WebKit Using System Malloc_0xebe4000      18.1M       400K       400K         0K       1003       166K       234K     59%       8
WebKit Using System Malloc_0xebe4000      20.3M      3984K      3984K       256K      13785      3765K       475K     12%     138
WebKit Using System Malloc_0xebe4000      21.7M      4480K      4464K      1680K      20572      5953K       191K      4%     197
WebKit Using System Malloc_0xebe4000      21.7M       752K       752K      5392K      20572      5953K       191K      4%     197
WebKit Using System Malloc_0xebe4000      21.7M       656K       656K      5488K      20572      5953K       191K      4%     197
WebKit Using System Malloc_0xebe4000      21.7M      4032K      4016K      2176K      21057      6029K       163K      3%     198
WebKit Using System Malloc_0xebe4000      21.1M      5168K      5056K       688K      17601      5074K       670K     12%     174
WebKit Using System Malloc_0xebe4000      21.2M      5376K      5280K       528K      18837      5284K       524K     10%     177
WebKit Using System Malloc_0xebe4000      21.0M      5824K      5680K        64K      18864      5156K       588K     11%     187
WebKit Using System Malloc_0xebe4000      21.0M      5824K      5696K        64K      19331      5216K       544K     10%     187
WebKit Using System Malloc_0xebe4000      21.6M      6272K      6096K        48K      17801      5609K       535K      9%     184
WebKit Using System Malloc_0xebe4000      21.6M      6272K      6096K        48K      17801      5609K       535K      9%     184
WebKit Using System Malloc_0xebe4000      21.6M      6272K      6096K        48K      17801      5609K       535K      9%     184
WebKit Using System Malloc_0xebe4000      20.8M      5648K      5488K        32K      15781      4414K      1106K     21%     181
WebKit Using System Malloc_0xebe4000      22.4M      7152K      6944K        32K      20470      6812K       164K      3%     193
WebKit Using System Malloc_0xebe4000      22.4M      7152K      6944K        32K      20467      6811K       165K      3%     193
WebKit Using System Malloc_0xebe4000      22.3M      7056K      6832K        32K      19811      6640K       224K      4%     187
WebKit Using System Malloc_0xebe4000      22.3M      7056K      6832K        32K      19811      6640K       224K      4%     187
WebKit Using System Malloc_0xebe4000      22.3M      7296K      7008K        32K      18605      6592K       448K      7%     188
WebKit Using System Malloc_0xebe4000      22.6M      7552K      7328K        16K      20547      7119K       225K      4%     196
WebKit Using System Malloc_0xebe4000      22.9M      7872K      7680K        16K      21021      7554K       142K      2%     204
WebKit Using System Malloc_0xebe4000      22.9M      7872K      7680K        16K      21021      7554K       142K      2%     204
WebKit Using System Malloc_0xebe4000      22.9M      7872K      7680K        16K      21013      7553K       143K      2%     204
WebKit Using System Malloc_0xebe4000      23.0M      7904K      7712K        16K      21256      7602K       126K      2%     206
WebKit Using System Malloc_0xebe4000      21.3M      6416K      6160K         0K      17579      5252K       908K     15%     185
WebKit Using System Malloc_0xebe4000      21.3M      6464K      6256K         0K      18954      5474K       782K     13%     187
WebKit Using System Malloc_0xebe4000      21.4M      6496K      6336K         0K      19661      5694K       642K     11%     192
WebKit Using System Malloc_0xebe4000      21.4M      6496K      6336K         0K      19661      5694K       642K     11%     192
WebKit Using System Malloc_0xebe4000      21.4M      6512K      6352K         0K      19952      5735K       617K     10%     193
WebKit Using System Malloc_0xebe4000      21.6M      6704K      6352K         0K      17214      5427K       925K     15%     190
WebKit Using System Malloc_0xebe4000      21.8M      6864K      6608K         0K      19874      6125K       483K      8%     195
WebKit Using System Malloc_0xebe4000      21.8M      6864K      6608K         0K      19874      6125K       483K      8%     195
WebKit Using System Malloc_0xebe4000      21.8M      6864K      6608K         0K      19874      6125K       483K      8%     195
WebKit Using System Malloc_0xebe4000      21.8M      6864K      6608K         0K      19874      6125K       483K      8%     195
WebKit Using System Malloc_0xebe4000      21.8M      6864K      6608K         0K      19874      6125K       483K      8%     195
WebKit Using System Malloc_0xebe4000      21.8M      6864K      6608K         0K      19866      6125K       483K      8%     195
WebKit Using System Malloc_0xebe4000      21.4M      6576K      6208K         0K      16702      5126K      1082K     18%     195
WebKit Using System Malloc_0xebe4000      21.4M      6576K      6208K         0K      16702      5126K      1082K     18%     195
WebKit Using System Malloc_0xebe4000      21.4M      6576K      6208K         0K      16702      5126K      1082K     18%     195
WebKit Using System Malloc_0xebe4000      21.4M      6576K      6208K         0K      16702      5126K      1082K     18%     195
WebKit Using System Malloc_0xebe4000      21.2M      6352K      6128K         0K      18710      5320K       808K     14%     182
WebKit Using System Malloc_0xebe4000      21.2M      6352K      6128K         0K      18710      5320K       808K     14%     182
WebKit Using System Malloc_0xebe4000      21.2M      6352K      6128K         0K      18710      5320K       808K     14%     182
WebKit Using System Malloc_0xebe4000      21.6M      6736K      6336K         0K      16805      5372K       964K     16%     189
WebKit Using System Malloc_0xebe4000      21.6M      6736K      6336K         0K      16805      5372K       964K     16%     189
WebKit Using System Malloc_0xebe4000      21.5M      6656K      6496K         0K      20502      5891K       605K     10%     197
WebKit Using System Malloc_0xebe4000      21.5M      6656K      6496K         0K      20502      5891K       605K     10%     197
WebKit Using System Malloc_0xebe4000      21.5M      6656K      6496K         0K      20498      5891K       605K     10%     197
WebKit Using System Malloc_0xebe4000      21.5M      6656K      6496K         0K      20498      5891K       605K     10%     197
WebKit Using System Malloc_0xebe4000      21.5M      6656K      6496K         0K      20494      5891K       605K     10%     197
WebKit Using System Malloc_0xebe4000      21.7M      6832K      6672K         0K      21280      6179K       493K      8%     201
WebKit Using System Malloc_0xebe4000      21.4M      6544K      6192K         0K      17040      5289K       903K     15%     193
WebKit Using System Malloc_0xebe4000      21.4M      6528K      6192K         0K      17040      5289K       903K     15%     193
WebKit Using System Malloc_0xebe4000      21.4M      6528K      6192K         0K      17040      5289K       903K     15%     193
WebKit Using System Malloc_0xebe4000      21.8M      6784K      6576K         0K      20108      6089K       487K      8%     190
WebKit Using System Malloc_0xebe4000      21.8M      6784K      6576K         0K      20108      6089K       487K      8%     190
WebKit Using System Malloc_0xebe4000      21.8M      6784K      6576K         0K      20108      6089K       487K      8%     190
WebKit Using System Malloc_0xebe4000      21.8M      6784K      6576K         0K      20108      6089K       487K      8%     190
WebKit Using System Malloc_0xebe4000      21.8M      6784K      6576K         0K      20100      6089K       487K      8%     190
WebKit Using System Malloc_0xebe4000      21.3M      6400K      6048K         0K      17563      5127K       921K     16%     187
WebKit Using System Malloc_0xebe4000      21.3M      6400K      6048K         0K      17563      5127K       921K     16%     187
WebKit Using System Malloc_0xebe4000      21.3M      6400K      6048K         0K      17563      5127K       921K     16%     187
WebKit Using System Malloc_0xebe4000      21.3M      6400K      6048K         0K      17563      5127K       921K     16%     187
WebKit Using System Malloc_0xebe4000      20.9M      6096K      5456K         0K      12619      4203K      1253K     23%     183
WebKit Using System Malloc_0xebe4000      21.5M      6672K      6144K         0K      18345      5460K       684K     12%     196
WebKit Using System Malloc_0xebe4000      21.2M      6400K      6144K         0K      20052      5526K       618K     11%     184
WebKit Using System Malloc_0xebe4000      21.2M      6400K      6144K         0K      20052      5526K       618K     11%     184
WebKit Using System Malloc_0xebe4000      21.2M      6400K      6144K         0K      20052      5526K       618K     11%     184
WebKit Using System Malloc_0xebe4000      22.3M      7376K      7152K         0K      18897      6615K       537K      8%     188
WebKit Using System Malloc_0xebe4000      22.3M      7376K      7152K         0K      18897      6615K       537K      8%     188
WebKit Using System Malloc_0xebe4000      22.3M      7376K      7152K         0K      18897      6615K       537K      8%     188
WebKit Using System Malloc_0xebe4000      22.3M      7376K      7152K         0K      18897      6615K       537K      8%     188
WebKit Using System Malloc_0xebe4000      22.3M      7376K      7152K         0K      18897      6615K       537K      8%     188
WebKit Using System Malloc_0xebe4000      22.4M      7408K      7200K         0K      19860      6784K       416K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7408K      7200K         0K      19860      6784K       416K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7408K      7200K         0K      19860      6784K       416K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7408K      7200K         0K      19860      6784K       416K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7408K      7200K         0K      19860      6784K       416K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      19860      6784K       416K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      19860      6784K       416K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      19860      6784K       416K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      19860      6784K       416K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      20082      6799K       401K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      20082      6799K       401K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      20082      6799K       401K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      20082      6799K       401K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      20082      6799K       401K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      20082      6799K       401K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      20082      6799K       401K      6%     190
WebKit Using System Malloc_0xebe4000      23.1M      7952K      7856K         0K      21373      7686K       170K      3%     212
WebKit Using System Malloc_0xebe4000      21.3M      6336K      6128K         0K      15738      4967K      1161K     19%     188
WebKit Using System Malloc_0xebe4000      21.3M      6336K      6128K         0K      15738      4967K      1161K     19%     188
WebKit Using System Malloc_0xebe4000      21.3M      6368K      6160K         0K      17123      5187K       973K     16%     190
WebKit Using System Malloc_0xebe4000      21.2M      6272K      6064K         0K      17541      5192K       872K     15%     182
WebKit Using System Malloc_0xebe4000      21.2M      6272K      6064K         0K      17541      5192K       872K     15%     182
WebKit Using System Malloc_0xebe4000      21.2M      6272K      6064K         0K      17541      5192K       872K     15%     182
WebKit Using System Malloc_0xebe4000      21.2M      6272K      6064K         0K      17541      5192K       872K     15%     182
WebKit Using System Malloc_0xebe4000      21.3M      6448K      6128K         0K      16562      5069K      1059K     18%     187
WebKit Using System Malloc_0xebe4000      21.3M      6448K      6128K         0K      16562      5069K      1059K     18%     187
WebKit Using System Malloc_0xebe4000      21.0M      6208K      5680K         0K      14159      4545K      1135K     20%     184
WebKit Using System Malloc_0xebe4000      21.2M      6368K      6016K         0K      19274      5438K       578K     10%     181
WebKit Using System Malloc_0xebe4000      21.2M      6368K      6016K         0K      19274      5438K       578K     10%     181


AGE = 0, many = 300
WebKit Using System Malloc_0xabec000      18.1M       400K       400K         0K       1003       166K       234K     59%       8
WebKit Using System Malloc_0xabec000      20.3M      4272K      4112K        48K      13342      3677K       483K     12%     135
WebKit Using System Malloc_0xabec000      21.7M      5136K      5104K      1072K      20586      5956K       220K      4%     197
WebKit Using System Malloc_0xabec000      21.7M       912K       912K      5264K      20586      5956K       220K      4%     197
WebKit Using System Malloc_0xabec000      21.7M      4144K      4144K      2096K      21071      6031K       209K      4%     198
WebKit Using System Malloc_0xabec000      21.1M      5968K      5760K         0K      17877      5104K       656K     12%     174
WebKit Using System Malloc_0xabec000      21.1M      2608K      2496K      3264K      17877      5104K       656K     12%     174
WebKit Using System Malloc_0xabec000      21.1M      2608K      2496K      3264K      17877      5104K       656K     12%     174
WebKit Using System Malloc_0xabec000      21.1M      4416K      4416K      1424K      19108      5298K       542K     10%     176
WebKit Using System Malloc_0xabec000      21.0M      5936K      5824K         0K      17267      4896K       928K     16%     171
WebKit Using System Malloc_0xabec000      21.0M      5408K      5328K       496K      17267      4896K       928K     16%     171
WebKit Using System Malloc_0xabec000      21.1M      5504K      5424K       416K      17757      4976K       864K     15%     172
WebKit Using System Malloc_0xabec000      21.4M      6384K      6256K        16K      18092      5466K       806K     13%     178
WebKit Using System Malloc_0xabec000      21.4M      6384K      6256K        16K      18092      5466K       806K     13%     178
WebKit Using System Malloc_0xabec000      21.4M      6400K      6288K        16K      19342      5644K       660K     11%     179
WebKit Using System Malloc_0xabec000      21.5M      6480K      6368K        16K      18440      5548K       836K     14%     177
WebKit Using System Malloc_0xabec000      21.5M      6480K      6368K        16K      18440      5548K       836K     14%     177
WebKit Using System Malloc_0xabec000      21.4M      6640K      6272K        16K      15547      5086K      1202K     20%     189
WebKit Using System Malloc_0xabec000      21.4M      6640K      6272K        16K      15547      5086K      1202K     20%     189
WebKit Using System Malloc_0xabec000      21.4M      6640K      6272K        16K      15547      5086K      1202K     20%     189
WebKit Using System Malloc_0xabec000      21.0M      6368K      5712K        16K      14778      4612K      1116K     20%     185
WebKit Using System Malloc_0xabec000      21.1M      6368K      6000K        16K      18995      5249K       767K     13%     175
WebKit Using System Malloc_0xabec000      21.1M      6368K      6000K        16K      18995      5249K       767K     13%     175
WebKit Using System Malloc_0xabec000      21.1M      6368K      6000K        16K      19365      5286K       730K     13%     175
WebKit Using System Malloc_0xabec000      21.5M      6864K      6160K        16K      16593      5281K       895K     15%     193
WebKit Using System Malloc_0xabec000      21.2M      6384K      6160K        16K      21100      5620K       556K     10%     178
WebKit Using System Malloc_0xabec000      21.2M      6384K      6160K        16K      21100      5620K       556K     10%     178
WebKit Using System Malloc_0xabec000      21.2M      5584K      5568K       608K      21100      5620K       556K     10%     178
WebKit Using System Malloc_0xabec000      21.1M      6080K      5856K        80K      18276      5151K       785K     14%     177
WebKit Using System Malloc_0xabec000      21.1M      6080K      5856K        80K      18276      5151K       785K     14%     177
WebKit Using System Malloc_0xabec000      21.1M      6080K      5856K        80K      18276      5151K       785K     14%     177</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542716</commentid>
    <comment_count>19</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-06 21:46:42 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #18)
&gt; Heuristics data. I think AGE = 7 case would be a good starting point.
&gt; AGE = 0 can reduce much memory, but it almost always requires reparsing 400
&gt; functions per scene change.

Not 400, 300. But still too large.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542725</commentid>
    <comment_count>20</comment_count>
      <attachid>371560</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-06 22:18:55 -0700</bug_when>
    <thetext>Created attachment 371560
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542737</commentid>
    <comment_count>21</comment_count>
      <attachid>371564</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-06 22:51:35 -0700</bug_when>
    <thetext>Created attachment 371564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542752</commentid>
    <comment_count>22</comment_count>
      <attachid>371569</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-07 00:07:23 -0700</bug_when>
    <thetext>Created attachment 371569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542757</commentid>
    <comment_count>23</comment_count>
      <attachid>371569</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-06-07 00:31:44 -0700</bug_when>
    <thetext>Comment on attachment 371569
Patch

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

&gt; Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:295
&gt; +    if (VM::isInMiniMode() &amp;&amp; !m_isGeneratedFromCache &amp;&amp; !isBuiltinFunction()) {

Can we add a different switch here to turn this feature on so we can test it in non mini mode?

Maybe something like: “VM::useUnlinkedCodeBlockJettisoning()”

By default, it will be true in mini mode.

And we can also key that off a runtime option that you can set for some of our stress tests?

Do some of our stress tests run in mini mode?

&gt; Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:310
&gt; +            vm.unlinkedFunctionExecutableSpace.set.remove(this);

Where do you add to this set?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542766</commentid>
    <comment_count>24</comment_count>
      <attachid>371569</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-07 01:04:20 -0700</bug_when>
    <thetext>Comment on attachment 371569
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:295
&gt;&gt; +    if (VM::isInMiniMode() &amp;&amp; !m_isGeneratedFromCache &amp;&amp; !isBuiltinFunction()) {
&gt; 
&gt; Can we add a different switch here to turn this feature on so we can test it in non mini mode?
&gt; 
&gt; Maybe something like: “VM::useUnlinkedCodeBlockJettisoning()”
&gt; 
&gt; By default, it will be true in mini mode.
&gt; 
&gt; And we can also key that off a runtime option that you can set for some of our stress tests?
&gt; 
&gt; Do some of our stress tests run in mini mode?

Sounds nice. Added.

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:310
&gt;&gt; +            vm.unlinkedFunctionExecutableSpace.set.remove(this);
&gt; 
&gt; Where do you add to this set?

UnlinkedFunctionExecutable::unlinkedCodeBlockFor adds |this| to this set if it sets UnlinkedFunctionCodeBlock. This set is maintained before this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542784</commentid>
    <comment_count>25</comment_count>
      <attachid>371569</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-06-07 02:09:24 -0700</bug_when>
    <thetext>Comment on attachment 371569
Patch

Attachment 371569 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/12403825

New failing tests:
mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-ftl-eager-no-cjit-validate-phases
apiTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542998</commentid>
    <comment_count>26</comment_count>
      <attachid>371624</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-07 16:14:49 -0700</bug_when>
    <thetext>Created attachment 371624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543210</commentid>
    <comment_count>27</comment_count>
      <attachid>371624</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-06-09 13:06:12 -0700</bug_when>
    <thetext>Comment on attachment 371624
Patch

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

Nice! r=me

&gt; Source/JavaScriptCore/ChangeLog:54
&gt; +        UnlinkedCodeBlock link weak. We also use execution counter information to reset this age: CodeBlock will reset undelying UnlinkedCodeBlock&apos;s age if it has some
&gt; +        execution. While this heuristic is quite simple, it has some effect in practice. Basically what happens with this heuristic is that UnlinkedFunctionExecutable -&gt;

&quot;if it has some execution&quot; -&gt; &quot;if it has executed&quot;

&gt; Source/JavaScriptCore/ChangeLog:67
&gt; +        memory footprint of our target application from about 6.5 MB to about 5.9 MB.

nice!

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1377
&gt; +        if (!VM::isInMiniMode())

should call useUnlinkedCodeBlockJettisoning instead of miniMode.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1392
&gt; +        case JITType::DFGJIT:

Doesn&apos;t the DFG have an execution counter?

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:432
&gt; +    unsigned m_age : 3;

nit: maybe  static_assert (1 &lt;&lt; 3 &gt;= maxAge) ?

&gt; Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:151
&gt; +    // We also keep builtin functions. The builtin functions are foundamental library for JavaScript, which means that they can be used in random places of
&gt; +    // the client scripts. It is safe to assume that builtin functions are used relatively frequently from many call sites.

Are we sure this is the case? Wouldn&apos;t this be captured by your executionCount logic?

&gt; Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:295
&gt; +    if (VM::useUnlinkedCodeBlockJettisoning() &amp;&amp; !m_isGeneratedFromCache &amp;&amp; !isBuiltinFunction()) {

nit: You have this logic exactly in visitChildren too. Can you instead make it a helper method on UnlinkedFunctionExecutable? Maybe &quot;codeBlockEdgeMayBeWeak&quot; or &quot;shouldConsiderCodeBlockEdgeAsWeak&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543418</commentid>
    <comment_count>28</comment_count>
      <attachid>371624</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-10 12:24:48 -0700</bug_when>
    <thetext>Comment on attachment 371624
Patch

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

Thank you for your review!

&gt;&gt; Source/JavaScriptCore/ChangeLog:54
&gt;&gt; +        execution. While this heuristic is quite simple, it has some effect in practice. Basically what happens with this heuristic is that UnlinkedFunctionExecutable -&gt;
&gt; 
&gt; &quot;if it has some execution&quot; -&gt; &quot;if it has executed&quot;

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:67
&gt;&gt; +        memory footprint of our target application from about 6.5 MB to about 5.9 MB.
&gt; 
&gt; nice!

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1377
&gt;&gt; +        if (!VM::isInMiniMode())
&gt; 
&gt; should call useUnlinkedCodeBlockJettisoning instead of miniMode.

Yeah, fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1392
&gt;&gt; +        case JITType::DFGJIT:
&gt; 
&gt; Doesn&apos;t the DFG have an execution counter?

DFG has the counter too. I thought that DFG and FTL are optimizing layer so that we do not need to handle ages here. But for now, we can do the same thing for DFG too. Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:432
&gt;&gt; +    unsigned m_age : 3;
&gt; 
&gt; nit: maybe  static_assert (1 &lt;&lt; 3 &gt;= maxAge) ?

Added, nice.

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:151
&gt;&gt; +    // the client scripts. It is safe to assume that builtin functions are used relatively frequently from many call sites.
&gt; 
&gt; Are we sure this is the case? Wouldn&apos;t this be captured by your executionCount logic?

This flag is not added based on the empirical measurement, so as you said, maybe our aging mechanism covers this well. Removed.

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:295
&gt;&gt; +    if (VM::useUnlinkedCodeBlockJettisoning() &amp;&amp; !m_isGeneratedFromCache &amp;&amp; !isBuiltinFunction()) {
&gt; 
&gt; nit: You have this logic exactly in visitChildren too. Can you instead make it a helper method on UnlinkedFunctionExecutable? Maybe &quot;codeBlockEdgeMayBeWeak&quot; or &quot;shouldConsiderCodeBlockEdgeAsWeak&quot;

Yeah, nice. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543427</commentid>
    <comment_count>29</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-10 12:50:04 -0700</bug_when>
    <thetext>Committed r246272: &lt;https://trac.webkit.org/changeset/246272&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543433</commentid>
    <comment_count>30</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-10 13:02:34 -0700</bug_when>
    <thetext>Committed r246274: &lt;https://trac.webkit.org/changeset/246274&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543435</commentid>
    <comment_count>31</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-10 13:10:43 -0700</bug_when>
    <thetext>Committed r246275: &lt;https://trac.webkit.org/changeset/246275&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543439</commentid>
    <comment_count>32</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-06-10 13:11:48 -0700</bug_when>
    <thetext>I&apos;ll create a follow-up patch in https://bugs.webkit.org/show_bug.cgi?id=198727</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544087</commentid>
    <comment_count>33</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2019-06-12 07:51:40 -0700</bug_when>
    <thetext>This change might be what made stress/ftl-gettypedarrayoffset-wasteful.js slow to a point it times out on arm/linux. Reported on Bug 198754 and skipped the test for now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370283</attachid>
            <date>2019-05-20 17:00:33 -0700</date>
            <delta_ts>2019-06-04 18:48:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198023-20190520170032.patch</filename>
            <type>text/plain</type>
            <size>4265</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZWY4NWQ5MDFjMTNmNzM2MWM0ZGNkZWFmNDg4MWI5YWRmOTU4ZjhiLi5hNzk3OGEwZDMxYTkxMzlk
MDk4ZTlkMzAyMjI2Yjk2MWQ5MmY0ZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxOS0wNS0yMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVubGlua2VkQ29kZUJsb2NrIHNob3VsZCBiZSBldmVudHVhbGx5
IGpldHRpc29uZWQgdG9vIG9yIGNhY2hlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MDIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5j
cHA6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFsaXpl
VW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6
OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorCiAyMDE5LTA1LTIwICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xJQl0gQ3Jh
c2ggd2hlbiBpbnN0YW50aWF0aW5nIGEganMgb2JqZWN0IHJlZ2lzdGVyZWQgd2l0aCBqc2NfY29u
dGV4dF9yZWdpc3Rlcl9jbGFzcyBvbiB3aW5kb3cgb2JqZWN0IGNsZWFyZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuY3BwCmluZGV4IDE0YTA2OWM1ZTA3NjA4ZDMwOTE4MjI5MzY1NmViMjE4N2ZkOTdm
ZDYuLjkzN2Y3NDMzNDM0M2M1MzU5ODFlMGExZjg5YWY3ODc4NGI5MTgzM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmNwcApAQCAtMTQyLDEwICsxNDIsNiBAQCB2b2lkIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0bwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0
PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5tX2lzQ2FjaGVkKSB7
Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5saW5rZWRDb2RlQmxvY2tG
b3JDYWxsKTsKLSAgICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV91bmxpbmtlZENv
ZGVCbG9ja0ZvckNvbnN0cnVjdCk7Ci0gICAgfQogfQogCiBTb3VyY2VDb2RlIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpsaW5rZWRTb3VyY2VDb2RlKGNvbnN0IFNvdXJjZUNvZGUmIHBhc3Nl
ZFBhcmVudFNvdXJjZSkgY29uc3QKQEAgLTI4NCw0ICsyODAsMTQgQEAgdm9pZCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6c2V0SW52YWxpZFR5cGVQcm9maWxpbmdPZmZzZXRzKCkKICAgICBt
X3R5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCk7CiB9CiAKK3ZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFsaXplVW5j
b25kaXRpb25hbGx5KFZNJiB2bSkKK3sKKyAgICBpZiAoIW1faXNDYWNoZWQpIHsKKyAgICAgICAg
aWYgKG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsICYmICF2bS5oZWFwLmlzTWFya2VkKG1fdW5s
aW5rZWRDb2RlQmxvY2tGb3JDYWxsLmdldCgpKSkKKyAgICAgICAgICAgIG1fdW5saW5rZWRDb2Rl
QmxvY2tGb3JDYWxsLmNsZWFyKCk7CisgICAgICAgIGlmIChtX3VubGlua2VkQ29kZUJsb2NrRm9y
Q29uc3RydWN0ICYmICF2bS5oZWFwLmlzTWFya2VkKG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25z
dHJ1Y3QuZ2V0KCkpKQorICAgICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVj
dC5jbGVhcigpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oCmluZGV4IDBjN2Y4OWNkNGViMDI0ZmNmODBkNzg4MzZjM2Y0M2MwYTdjZDIzYzMuLmJj
OTcyMDc0NDM5MWY5MDNhM2UzMGJlNzZhOTA3MTZiMmVmZmU5ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oCkBAIC0xOTgsNiArMTk4LDggQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgQ29tcGFjdFZhcmlhYmxlTWFwOjpI
YW5kbGUgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsKICAgICB9OwogCisgICAgdm9pZCBmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseShWTSYpOworCiBwcml2YXRlOgogICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEpT
UGFyc2VyU2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+LCAg
SlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3Ry
dWN0b3IpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImLCBjb25zdCBD
YWNoZWRGdW5jdGlvbkV4ZWN1dGFibGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
aW5kZXggOTg3ZjlmODU0YWEyMjU0ZjUyY2FhNjE2NTQyOTUxODg5ZTA5NGI0ZC4uNzg4NDVkY2Vm
Y2YzZDIxYzNkODE5Y2UyNzVhNWU0NzBhNzEyMjhlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAKQEAgLTU5Niw2ICs1OTYsNyBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5jb25kaXRp
b25hbEZpbmFsaXplcnMoKQogICAgICAgICB9KTsKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0
aW9uYWxGaW5hbGl6ZXJzPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtKCktPmV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMpOwogICAgIGZpbmFsaXplTWFya2VkVW5j
b25kaXRpb25hbEZpbmFsaXplcnM8U3RydWN0dXJlUmFyZURhdGE+KHZtKCktPnN0cnVjdHVyZVJh
cmVEYXRhU3BhY2UpOworICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtKCktPnVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlU3BhY2Uuc3BhY2UpOwogICAgIGlmICh2bSgpLT5tX3dlYWtTZXRTcGFjZSkKICAgICAgICAg
ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtTZXQ+KCp2bSgpLT5t
X3dlYWtTZXRTcGFjZSk7CiAgICAgaWYgKHZtKCktPm1fd2Vha01hcFNwYWNlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371361</attachid>
            <date>2019-06-04 18:48:45 -0700</date>
            <delta_ts>2019-06-05 17:14:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198023-20190604184844.patch</filename>
            <type>text/plain</type>
            <size>32705</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MjFiYWFhYTM5ZThlZDQ1OTQ1ZjJiZTBmNDM5ODY4MWU4NDczZDcwLi41ZWMxZWMyN2M0ZThkOGM5
YzNkY2E3YWRiMWE2NWI2ZmQ4ZjczN2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NiBAQAorMjAxOS0wNi0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVubGlua2VkQ29kZUJsb2NrIHNob3VsZCBiZSBldmVudHVhbGx5
IGpldHRpc29uZWQgdG9vIG9yIGNhY2hlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MDIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHA6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcENvbnN0YW50cyk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxv
Y2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNvbnN0YW50TWV0YWRhdGEpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmFkZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRD
b25zdGFudExhemlseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y29uc3RhbnRDb25zdGFu
dE1ldGFkYXRhIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb25zdGFudHNTb3Vy
Y2VDb2RlUmVwcmVzZW50YXRpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmNvbnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlu
a2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFkZFNldENvbnN0YW50
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFkZENvbnN0YW50KToKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmNvbnN0YW50TWV0YWRhdGEpOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9jazo6c2V0Q2FjaGVkQ29kZUJsb2NrT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNvbnN0
YW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmNvbnN0YW50
c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmFkZENvbnN0YW50VmFsdWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdExvYWQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpO
dW1iZXJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldCk6CisgICAgICAg
ICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6cmVnaXN0ZXJG
cm96ZW5WYWx1ZXMpOgorICAgICAgICAqIGRmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemVDb21tb24pOgorICAgICAgICAqIHJ1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s8Q29k
ZUJsb2NrVHlwZT46OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9j
azxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6ZGVjb2RlRnVuY3Rpb25D
b2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAoSlND
OjpFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbkhhc2hUcmFpdHM6OmVtcHR5VmFsdWUp
OgorICAgICAgICAoSlNDOjpFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbkhhc2hUcmFp
dHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OkVuY29kZWRKU1ZhbHVl
V2l0aFJlcHJlc2VudGF0aW9uSGFzaFRyYWl0czo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAo
SlNDOjpFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbkhhc2g6Omhhc2gpOgorCiAyMDE5
LTA2LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgdXBkYXRlIGV4Y2VwdGlvbiBzY29wZSBmb3IgcHV0QnlJbmRleEJleW9uZFZlY3Rv
ckxlbmd0aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlRHVtcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1
bXBlci5jcHAKaW5kZXggMzcxNDcyYzQxMmU0NTIyMjI2MTA2MGE4MmYwMmIxNDI1MzYwM2NlZC4u
NmQ0MWVmOGYwMzJkZWRlNjUxNGE0ODNmYzAwOTQzMGJkMDQ5YTE4YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCkBAIC0xMTcsMTkg
KzExNywyMiBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcENvbnN0YW50cygpCiAg
ICAgICAgIG1fb3V0LnByaW50ZigiXG5Db25zdGFudHM6XG4iKTsKICAgICAgICAgc2l6ZV90IGkg
PSAwOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnN0YW50IDogYmxvY2soKS0+Y29uc3Rh
bnRSZWdpc3RlcnMoKSkgewotICAgICAgICAgICAgY29uc3QgY2hhciogc291cmNlQ29kZVJlcHJl
c2VudGF0aW9uRGVzY3JpcHRpb24gPSBudWxscHRyOwotICAgICAgICAgICAgc3dpdGNoIChibG9j
aygpLT5jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oKVtpXSkgewotICAgICAgICAg
ICAgY2FzZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246OkRvdWJsZToKLSAgICAgICAgICAgICAg
ICBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb25EZXNjcmlwdGlvbiA9ICI6IGluIHNvdXJjZSBhcyBk
b3VibGUiOworICAgICAgICAgICAgY29uc3QgY2hhciogY29uc3RhbnRNZXRhZGF0YURlc2NyaXB0
aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHN3aXRjaCAoYmxvY2soKS0+Y29uc3RhbnRNZXRh
ZGF0YSgpW2ldKSB7CisgICAgICAgICAgICBjYXNlIENvbnN0YW50TWV0YWRhdGE6OkRvdWJsZToK
KyAgICAgICAgICAgICAgICBjb25zdGFudE1ldGFkYXRhRGVzY3JpcHRpb24gPSAiOiBpbiBzb3Vy
Y2UgYXMgZG91YmxlIjsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
U291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpJbnRlZ2VyOgotICAgICAgICAgICAgICAgIHNvdXJj
ZUNvZGVSZXByZXNlbnRhdGlvbkRlc2NyaXB0aW9uID0gIjogaW4gc291cmNlIGFzIGludGVnZXIi
OworICAgICAgICAgICAgY2FzZSBDb25zdGFudE1ldGFkYXRhOjpJbnRlZ2VyOgorICAgICAgICAg
ICAgICAgIGNvbnN0YW50TWV0YWRhdGFEZXNjcmlwdGlvbiA9ICI6IGluIHNvdXJjZSBhcyBpbnRl
Z2VyIjsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgU291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgICAgICBzb3VyY2VDb2RlUmVwcmVz
ZW50YXRpb25EZXNjcmlwdGlvbiA9ICIiOworICAgICAgICAgICAgY2FzZSBDb25zdGFudE1ldGFk
YXRhOjpMaW5rVGltZUNvbnN0YW50OgorICAgICAgICAgICAgICAgIGNvbnN0YW50TWV0YWRhdGFE
ZXNjcmlwdGlvbiA9ICI6IGxpbmsgdGltZSBjb25zdGFudCI7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIENvbnN0YW50TWV0YWRhdGE6Ok90aGVyOgorICAgICAgICAg
ICAgICAgIGNvbnN0YW50TWV0YWRhdGFEZXNjcmlwdGlvbiA9ICIiOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9vdXQucHJpbnRmKCIgICBrJXUg
PSAlcyVzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSksIHRvQ1N0cmluZyhjb25zdGFudC5n
ZXQoKSkuZGF0YSgpLCBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb25EZXNjcmlwdGlvbik7CisgICAg
ICAgICAgICBtX291dC5wcmludGYoIiAgIGsldSA9ICVzJXNcbiIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpKSwgdG9DU3RyaW5nKGNvbnN0YW50LmdldCgpKS5kYXRhKCksIGNvbnN0YW50TWV0YWRh
dGFEZXNjcmlwdGlvbik7CiAgICAgICAgICAgICArK2k7CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGFkZTJhY2Uz
ZDFhNDZkMTMxNmEwNDNkMzEwNTgyMDEwMDE3NzBkNTAuLjYwYjY1ZTE5ZmZhYTI0ZWQ4ZDU1NTgy
NzZkNWY5ZWJiZDc4OGY2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soVk0q
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2sK
ICAgICAsIG1fdm0ob3RoZXIubV92bSkKICAgICAsIG1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcihv
dGhlci5tX2luc3RydWN0aW9uc1Jhd1BvaW50ZXIpCiAgICAgLCBtX2NvbnN0YW50UmVnaXN0ZXJz
KG90aGVyLm1fY29uc3RhbnRSZWdpc3RlcnMpCi0gICAgLCBtX2NvbnN0YW50c1NvdXJjZUNvZGVS
ZXByZXNlbnRhdGlvbihvdGhlci5tX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbikK
KyAgICAsIG1fY29uc3RhbnRNZXRhZGF0YShvdGhlci5tX2NvbnN0YW50TWV0YWRhdGEpCiAgICAg
LCBtX2Z1bmN0aW9uRGVjbHMob3RoZXIubV9mdW5jdGlvbkRlY2xzKQogICAgICwgbV9mdW5jdGlv
bkV4cHJzKG90aGVyLm1fZnVuY3Rpb25FeHBycykKICAgICAsIG1fb3NyRXhpdENvdW50ZXIoMCkK
QEAgLTM5NiwxNSArMzk2LDkgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgdm0u
ZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPnJlbW92ZVVuZXhlY3V0ZWRSYW5nZShvd25lckV4
ZWN1dGFibGUtPnNvdXJjZUlEKCksIG93bmVyRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0
T2Zmc2V0KHZtKSwgb3duZXJFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KHZtKSk7
CiAKICAgICBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUgPSBvd25lckV4ZWN1
dGFibGUtPnRvcExldmVsRXhlY3V0YWJsZSgpOwotICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVu
bGlua2VkQ29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVycygpLCB1bmxpbmtlZENvZGVCbG9jay0+
Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKCksIHRvcExldmVsRXhlY3V0YWJsZSk7
CisgICAgc2V0Q29uc3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50UmVn
aXN0ZXJzKCksIHVubGlua2VkQ29kZUJsb2NrLT5jb25zdGFudE1ldGFkYXRhKCksIHRvcExldmVs
RXhlY3V0YWJsZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTGlua1RpbWVDb25zdGFudENvdW50OyBp
KyspIHsKLSAgICAgICAgTGlua1RpbWVDb25zdGFudCB0eXBlID0gc3RhdGljX2Nhc3Q8TGlua1Rp
bWVDb25zdGFudD4oaSk7Ci0gICAgICAgIGlmICh1bnNpZ25lZCByZWdpc3RlckluZGV4ID0gdW5s
aW5rZWRDb2RlQmxvY2stPnJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUpKQot
ICAgICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tyZWdpc3RlckluZGV4XS5zZXQodm0sIHRo
aXMsIG1fZ2xvYmFsT2JqZWN0LT5qc0NlbGxGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUpKTsKLSAg
ICB9Ci0KICAgICAvLyBXZSBhbHJlYWR5IGhhdmUgdGhlIGNsb25lZCBzeW1ib2wgdGFibGUgZm9y
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgc2luY2Ugd2UgbmVlZCB0byBpbnN0YW50aWF0ZQogICAg
IC8vIHRoZSBtb2R1bGUgZW52aXJvbm1lbnRzIGJlZm9yZSBsaW5raW5nIHRoZSBjb2RlIGJsb2Nr
LiBXZSByZXBsYWNlIHRoZSBzdG9yZWQgc3ltYm9sIHRhYmxlIHdpdGggdGhlIGFscmVhZHkgY2xv
bmVkIG9uZS4KICAgICBpZiAoVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgPSBqc0R5bmFtaWNDYXN0PFVubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayo+KHZtLCB1bmxpbmtlZENvZGVCbG9jaykpIHsKQEAgLTg2NywxOCArODYx
LDE5IEBAIHZvaWQgQ29kZUJsb2NrOjpzZXRDb25zdGFudElkZW50aWZpZXJTZXRSZWdpc3RlcnMo
Vk0mIHZtLCBjb25zdCBWZWN0b3I8Q29uc3RhbnRJCiAgICAgfQogfQogCi12b2lkIENvZGVCbG9j
azo6c2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3du
Pj4mIGNvbnN0YW50cywgY29uc3QgVmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4mIGNv
bnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2
ZWxFeGVjdXRhYmxlKQordm9pZCBDb2RlQmxvY2s6OnNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0
IFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+JiBjb25zdGFudHMsIGNvbnN0IFZlY3RvcjxD
b25zdGFudE1ldGFkYXRhPiYgY29uc3RhbnRNZXRhZGF0YSwgU2NyaXB0RXhlY3V0YWJsZSogdG9w
TGV2ZWxFeGVjdXRhYmxlKQogewogICAgIFZNJiB2bSA9ICptX3ZtOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9nbG9iYWxPYmplY3QuZ2V0KCk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAKLSAgICBBU1NFUlQoY29uc3RhbnRzLnNpemUoKSA9PSBj
b25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uc2l6ZSgpKTsKKyAgICBBU1NFUlQoY29u
c3RhbnRzLnNpemUoKSA9PSBjb25zdGFudE1ldGFkYXRhLnNpemUoKSk7CiAgICAgc2l6ZV90IGNv
dW50ID0gY29uc3RhbnRzLnNpemUoKTsKICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzLnJlc2l6ZVRv
Rml0KGNvdW50KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAg
ICAgICAgSlNWYWx1ZSBjb25zdGFudCA9IGNvbnN0YW50c1tpXS5nZXQoKTsKKyAgICAgICAgQ29u
c3RhbnRNZXRhZGF0YSBtZXRhZGF0YSA9IGNvbnN0YW50TWV0YWRhdGFbaV07CiAKICAgICAgICAg
aWYgKCFjb25zdGFudC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChjb25zdGFudC5pc0Nl
bGwoKSkgewpAQCAtODk5LDEzICs4OTQsMTcgQEAgdm9pZCBDb2RlQmxvY2s6OnNldENvbnN0YW50
UmVnaXN0ZXJzKGNvbnN0IFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+JiBjb25zdGEKICAg
ICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAg
ICAgICAgICAgICAgICAgICAgY29uc3RhbnQgPSB0ZW1wbGF0ZU9iamVjdDsKICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhID09IENvbnN0YW50TWV0YWRh
dGE6OkxpbmtUaW1lQ29uc3RhbnQpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoY29uc3RhbnQu
aXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICBMaW5rVGltZUNvbnN0YW50IGxpbmtUaW1lQ29u
c3RhbnQgPSBzdGF0aWNfY2FzdDxMaW5rVGltZUNvbnN0YW50Pihjb25zdGFudC5hc0ludDMyKCkp
OworICAgICAgICAgICAgICAgIGNvbnN0YW50ID0gbV9nbG9iYWxPYmplY3QtPmpzQ2VsbEZvckxp
bmtUaW1lQ29uc3RhbnQobGlua1RpbWVDb25zdGFudCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAogICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW2ldLnNldCh2bSwgdGhpcywgY29uc3Rh
bnQpOwogICAgIH0KIAotICAgIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uID0g
Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOworICAgIG1fY29uc3RhbnRNZXRhZGF0
YSA9IGNvbnN0YW50TWV0YWRhdGE7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpzZXRBbHRlcm5hdGl2
ZShWTSYgdm0sIENvZGVCbG9jayogYWx0ZXJuYXRpdmUpCkBAIC0xODQxLDcgKzE4NDAsNyBAQCB2
b2lkIENvZGVCbG9jazo6c2hyaW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQogICAgIAog
ICAgIGlmIChzaHJpbmtNb2RlID09IEVhcmx5U2hyaW5rKSB7CiAgICAgICAgIG1fY29uc3RhbnRS
ZWdpc3RlcnMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVw
cmVzZW50YXRpb24uc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgbV9jb25zdGFudE1ldGFkYXRhLnNo
cmlua1RvRml0KCk7CiAgICAgICAgIAogICAgICAgICBpZiAobV9yYXJlRGF0YSkgewogICAgICAg
ICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNGU2MmJkZWMyMmVl
OWU1ZTI4NmY5MTY1NDA0YjBmYzMyZDc3YzI4OS4uZTI1OTlkYThmNjJkZWY1Y2IxNjBkZmE4YTY1
NTVlZjc3OTliYTQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaApAQCAtNTQ1LDEzICs1NDUsMTMgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+JiBjb25zdGFu
dHMoKSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzOyB9Ci0gICAgVmVjdG9yPFNvdXJjZUNv
ZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbigpIHsg
cmV0dXJuIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOyB9CisgICAgVmVjdG9y
PENvbnN0YW50TWV0YWRhdGE+JiBjb25zdGFudE1ldGFkYXRhKCkgeyByZXR1cm4gbV9jb25zdGFu
dE1ldGFkYXRhOyB9CiAgICAgdW5zaWduZWQgYWRkQ29uc3RhbnQoSlNWYWx1ZSB2KQogICAgIHsK
ICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9jb25zdGFudFJlZ2lzdGVycy5zaXplKCk7CiAg
ICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnMuYXBwZW5kKFdyaXRlQmFycmllcjxVbmtub3duPigp
KTsKICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5sYXN0KCkuc2V0KCptX3ZtLCB0aGlzLCB2
KTsKLSAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uYXBwZW5kKFNv
dXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6T3RoZXIpOworICAgICAgICBtX2NvbnN0YW50TWV0YWRh
dGEuYXBwZW5kKENvbnN0YW50TWV0YWRhdGE6Ok90aGVyKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKQEAgLTU1OSw3ICs1NTksNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IG1fY29uc3RhbnRSZWdp
c3RlcnMuc2l6ZSgpOwogICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzLmFwcGVuZChXcml0ZUJh
cnJpZXI8VW5rbm93bj4oKSk7Ci0gICAgICAgIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uLmFwcGVuZChTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246Ok90aGVyKTsKKyAgICAgICAg
bV9jb25zdGFudE1ldGFkYXRhLmFwcGVuZChDb25zdGFudE1ldGFkYXRhOjpPdGhlcik7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC01NjcsNyArNTY3LDcgQEAgY2xhc3MgQ29k
ZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25z
dGFudFJlZ2lzdGVyKGludCBpbmRleCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRl
eCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQogICAgIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW50IGluZGV4KSB7IHJldHVybiBpbmRl
eCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQogICAgIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBnZXRDb25zdGFudChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdp
c3RlcnNbaW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF0uZ2V0KCk7IH0KLSAgICBB
TFdBWVNfSU5MSU5FIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiBjb25zdGFudFNvdXJjZUNvZGVS
ZXByZXNlbnRhdGlvbihpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRzU291cmNl
Q29kZVJlcHJlc2VudGF0aW9uW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9
CisgICAgQUxXQVlTX0lOTElORSBDb25zdGFudE1ldGFkYXRhIGNvbnN0YW50Q29uc3RhbnRNZXRh
ZGF0YShpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRNZXRhZGF0YVtpbmRleCAt
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQogCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkRlY2woaW50IGluZGV4KSB7IHJldHVybiBtX2Z1bmN0aW9uRGVjbHNbaW5kZXhd
LmdldCgpOyB9CiAgICAgaW50IG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fZnVu
Y3Rpb25EZWNscy5zaXplKCk7IH0KQEAgLTkxMiw3ICs5MTIsNyBAQCBjbGFzcyBDb2RlQmxvY2sg
OiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIHZvaWQgc2V0Q29uc3RhbnRJZGVudGlmaWVyU2V0UmVn
aXN0ZXJzKFZNJiwgY29uc3QgVmVjdG9yPENvbnN0YW50SWRlbnRpZmllclNldEVudHJ5PiYgY29u
c3RhbnRzKTsKIAotICAgIHZvaWQgc2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgVmVjdG9yPFdy
aXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgVmVjdG9yPFNvdXJjZUNvZGVS
ZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiwgU2NyaXB0
RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlKTsKKyAgICB2b2lkIHNldENvbnN0YW50UmVn
aXN0ZXJzKGNvbnN0IFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+JiBjb25zdGFudHMsIGNv
bnN0IFZlY3RvcjxDb25zdGFudE1ldGFkYXRhPiYgY29uc3RhbnRNZXRhZGF0YSwgU2NyaXB0RXhl
Y3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlKTsKIAogICAgIHZvaWQgcmVwbGFjZUNvbnN0YW50
KGludCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CkBAIC05OTMsNyArOTkzLDcgQEAgY2xh
c3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgLy8gVE9ETzogVGhpcyBjb3VsZCBq
dXN0IGJlIGEgcG9pbnRlciB0byBtX3VubGlua2VkQ29kZUJsb2NrJ3MgZGF0YSwgYnV0IHRoZSBE
RkcgbXV0YXRlcwogICAgIC8vIGl0LCBzbyB3ZSdyZSBzdHVjayB3aXRoIGl0IGZvciBub3cuCiAg
ICAgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4gbV9jb25zdGFudFJlZ2lzdGVyczsKLSAg
ICBWZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0aW9uPiBtX2NvbnN0YW50c1NvdXJjZUNvZGVS
ZXByZXNlbnRhdGlvbjsKKyAgICBWZWN0b3I8Q29uc3RhbnRNZXRhZGF0YT4gbV9jb25zdGFudE1l
dGFkYXRhOwogICAgIFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8RnVuY3Rpb25FeGVjdXRh
YmxlPj4gbV9mdW5jdGlvbkRlY2xzOwogICAgIFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8
RnVuY3Rpb25FeGVjdXRhYmxlPj4gbV9mdW5jdGlvbkV4cHJzOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBmOWMz
YmE5ZDcxNjQ3ZDQyM2RiMThhMTQ0MTk4MDRkMzRmMzBmNDQxLi4wMmEwMjZhNjFkMGM0NGRkNzU5
YTgzZjU0YTM1OWU4YWMxNTI3YThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTc1LDggKzc1LDYgQEAgVW5saW5r
ZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0
aW9uTW9kZSkKICAgICAsIG1fbWV0YWRhdGEoVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpjcmVhdGUo
KSkKIHsKLSAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXJJbmRleCA6IG1fbGlua1RpbWVD
b25zdGFudHMpCi0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDA7CiAgICAgQVNTRVJU
KG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmNvbnN0cnVj
dG9yS2luZCgpKSk7CiAgICAgQVNTRVJUKG1fY29kZVR5cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNvZGVUeXBlKSk7CiAgICAgQVNTRVJUKG1fZGlkT3B0aW1pemUgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KE1peGVkVHJpU3RhdGUpKTsKQEAgLTM4Miw3ICszODAsNyBAQCB2b2lkIFVubGlu
a2VkQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdCgpCiAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0
aW9ucy5zaHJpbmtUb0ZpdCgpOwogICAgIG1faWRlbnRpZmllcnMuc2hyaW5rVG9GaXQoKTsKICAg
ICBtX2NvbnN0YW50UmVnaXN0ZXJzLnNocmlua1RvRml0KCk7Ci0gICAgbV9jb25zdGFudHNTb3Vy
Y2VDb2RlUmVwcmVzZW50YXRpb24uc2hyaW5rVG9GaXQoKTsKKyAgICBtX2NvbnN0YW50TWV0YWRh
dGEuc2hyaW5rVG9GaXQoKTsKICAgICBtX2Z1bmN0aW9uRGVjbHMuc2hyaW5rVG9GaXQoKTsKICAg
ICBtX2Z1bmN0aW9uRXhwcnMuc2hyaW5rVG9GaXQoKTsKICAgICBtX2V4cHJlc3Npb25JbmZvLnNo
cmlua1RvRml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oCmluZGV4IDJhMzUwYTFmMTFjZjIxMzFmNzJjMmI0YmQ4MDkwMThmZTcx
MmVmZjIuLmQ4MDM1ZGU1ODVmMTBkZTgxYTUwZjZlNjI0YTEyYTljNjIwMWJmYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBA
IC0xNjcsMTggKzE2NywxOCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0Nl
bGwgewogICAgICAgICBhdXRvIGxvY2tlciA9IGxvY2tEdXJpbmdNYXJraW5nKHZtLmhlYXAsIGNl
bGxMb2NrKCkpOwogICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2NvbnN0YW50UmVnaXN0ZXJz
LnNpemUoKTsKICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5hcHBlbmQoV3JpdGVCYXJyaWVy
PFVua25vd24+KCkpOwotICAgICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlv
bi5hcHBlbmQoU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpPdGhlcik7CisgICAgICAgIG1fY29u
c3RhbnRNZXRhZGF0YS5hcHBlbmQoQ29uc3RhbnRNZXRhZGF0YTo6T3RoZXIpOwogICAgICAgICBt
X3JhcmVEYXRhLT5tX2NvbnN0YW50SWRlbnRpZmllclNldHMuYXBwZW5kKENvbnN0YW50SWRlbnRp
ZmllclNldEVudHJ5KHNldCwgcmVzdWx0KSk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYWRkQ29u
c3RhbnQoSlNWYWx1ZSB2LCBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gc291cmNlQ29kZVJlcHJl
c2VudGF0aW9uID0gU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpPdGhlcikKKyAgICB1bnNpZ25l
ZCBhZGRDb25zdGFudChKU1ZhbHVlIHYsIENvbnN0YW50TWV0YWRhdGEgY29uc3RhbnRNZXRhZGF0
YSA9IENvbnN0YW50TWV0YWRhdGE6Ok90aGVyKQogICAgIHsKICAgICAgICAgVk0mIHZtID0gKnRo
aXMtPnZtKCk7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gbG9ja0R1cmluZ01hcmtpbmcodm0uaGVh
cCwgY2VsbExvY2soKSk7CiAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IG1fY29uc3RhbnRSZWdp
c3RlcnMuc2l6ZSgpOwogICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzLmFwcGVuZChXcml0ZUJh
cnJpZXI8VW5rbm93bj4oKSk7CiAgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnMubGFzdCgpLnNl
dCh2bSwgdGhpcywgdik7Ci0gICAgICAgIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0
aW9uLmFwcGVuZChzb3VyY2VDb2RlUmVwcmVzZW50YXRpb24pOworICAgICAgICBtX2NvbnN0YW50
TWV0YWRhdGEuYXBwZW5kKGNvbnN0YW50TWV0YWRhdGEpOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KICAgICB1bnNpZ25lZCBhZGRDb25zdGFudChMaW5rVGltZUNvbnN0YW50IHR5cGUp
CkBAIC0xODcsMjYgKzE4NywxOCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgICAgICBhdXRvIGxvY2tlciA9IGxvY2tEdXJpbmdNYXJraW5nKHZtLmhlYXAs
IGNlbGxMb2NrKCkpOwogICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2NvbnN0YW50UmVnaXN0
ZXJzLnNpemUoKTsKICAgICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgIHVuc2lnbmVkIGlu
ZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpOwotICAgICAgICBBU1NFUlQoaW5kZXgg
PCBMaW5rVGltZUNvbnN0YW50Q291bnQpOwotICAgICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW2lu
ZGV4XSA9IHJlc3VsdDsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBl
KSA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7CiAgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnMu
YXBwZW5kKFdyaXRlQmFycmllcjxVbmtub3duPigpKTsKLSAgICAgICAgbV9jb25zdGFudHNTb3Vy
Y2VDb2RlUmVwcmVzZW50YXRpb24uYXBwZW5kKFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6T3Ro
ZXIpOworICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzLmxhc3QoKS5zZXQodm0sIHRoaXMsIGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KHR5cGUpKSk7CisgICAgICAgIG1fY29uc3RhbnRN
ZXRhZGF0YS5hcHBlbmQoQ29uc3RhbnRNZXRhZGF0YTo6TGlua1RpbWVDb25zdGFudCk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgcmVnaXN0ZXJJbmRleEZv
ckxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQotICAgIHsKLSAgICAgICAg
dW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7Ci0gICAgICAgIEFT
U0VSVChpbmRleCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7Ci0gICAgICAgIHJldHVybiBtX2xp
bmtUaW1lQ29uc3RhbnRzW2luZGV4XTsKLSAgICB9Ci0KICAgICBjb25zdCBWZWN0b3I8V3JpdGVC
YXJyaWVyPFVua25vd24+PiYgY29uc3RhbnRSZWdpc3RlcnMoKSB7IHJldHVybiBtX2NvbnN0YW50
UmVnaXN0ZXJzOyB9CiAgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJl
Z2lzdGVyKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRl
eCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4
ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CiAgICAgQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGdldENvbnN0YW50KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lz
dGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XS5nZXQoKTsgfQotICAgIGNv
bnN0IFZlY3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+JiBjb25zdGFudHNTb3VyY2VDb2Rl
UmVwcmVzZW50YXRpb24oKSB7IHJldHVybiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbjsgfQorICAgIGNvbnN0IFZlY3RvcjxDb25zdGFudE1ldGFkYXRhPiYgY29uc3RhbnRNZXRh
ZGF0YSgpIHsgcmV0dXJuIG1fY29uc3RhbnRNZXRhZGF0YTsgfQogCiAgICAgdW5zaWduZWQgbnVt
YmVyT2ZDb25zdGFudElkZW50aWZpZXJTZXRzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YSA/
IG1fcmFyZURhdGEtPm1fY29uc3RhbnRJZGVudGlmaWVyU2V0cy5zaXplKCkgOiAwOyB9CiAgICAg
Y29uc3QgVmVjdG9yPENvbnN0YW50SWRlbnRpZmllclNldEVudHJ5PiYgY29uc3RhbnRJZGVudGlm
aWVyU2V0cygpIHsgQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9jb25z
dGFudElkZW50aWZpZXJTZXRzOyB9CkBAIC0zNzAsNiArMzYyLDEwIEBAIGNsYXNzIFVubGlua2Vk
Q29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBtX21ldGFkYXRhLT5z
aXplSW5CeXRlcygpOwogICAgIH0KIAorICAgIHZvaWQgc2V0Q2FjaGVkQ29kZUJsb2NrT2Zmc2V0
KGludDMyX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jYWNoZWRDb2RlQmxvY2tPZmZzZXQg
PSBvZmZzZXQ7CisgICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgVW5saW5rZWRDb2RlQmxvY2soVk0q
LCBTdHJ1Y3R1cmUqLCBDb2RlVHlwZSwgY29uc3QgRXhlY3V0YWJsZUluZm8mLCBPcHRpb25TZXQ8
Q29kZUdlbmVyYXRpb25Nb2RlPik7CkBAIC00MDYsOCArNDAyLDcgQEAgY2xhc3MgVW5saW5rZWRD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFZpcnR1YWxSZWdpc3RlciBtX3RoaXNS
ZWdpc3RlcjsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9zY29wZVJlZ2lzdGVyOwotCi0gICAgc3Rk
OjphcnJheTx1bnNpZ25lZCwgTGlua1RpbWVDb25zdGFudENvdW50PiBtX2xpbmtUaW1lQ29uc3Rh
bnRzOworICAgIGludDMyX3QgbV9jYWNoZWRDb2RlQmxvY2tPZmZzZXQgeyAtMSB9OwogCiAgICAg
dW5zaWduZWQgbV91c2VzRXZhbCA6IDE7CiAgICAgdW5zaWduZWQgbV9pc1N0cmljdE1vZGUgOiAx
OwpAQCAtNDU3LDcgKzQ1Miw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgLy8gQ29uc3RhbnQgUG9vbHMKICAgICBWZWN0b3I8SWRlbnRpZmllcj4gbV9p
ZGVudGlmaWVyczsKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2NvbnN0YW50
UmVnaXN0ZXJzOwotICAgIFZlY3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+IG1fY29uc3Rh
bnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOworICAgIFZlY3RvcjxDb25zdGFudE1ldGFkYXRh
PiBtX2NvbnN0YW50TWV0YWRhdGE7CiAgICAgdHlwZWRlZiBWZWN0b3I8V3JpdGVCYXJyaWVyPFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPj4gRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yOwogICAg
IEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBtX2Z1bmN0aW9uRGVjbHM7CiAgICAgRnVuY3Rpb25F
eHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25FeHByczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYWJl
NDE2NmM1Yjg2ZTMyMjBhZTczYTRhNDgxMTgwMjNmMjFmNzRjYS4uOThjMDI4YmQyOGE0M2E2ZmQ5
YzQ4N2IyMDY3NTFiYzk1NmFiOGJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE1NzMsMjAgKzE1
NzMsMjAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50RW1wdHlW
YWx1ZSgpCiAgICAgcmV0dXJuIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyOwogfQogCi1SZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6YWRkQ29uc3RhbnRWYWx1ZShKU1ZhbHVlIHYsIFNvdXJjZUNv
ZGVSZXByZXNlbnRhdGlvbiBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb24pCitSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6YWRkQ29uc3RhbnRWYWx1ZShKU1ZhbHVlIHYsIENvbnN0YW50TWV0
YWRhdGEgY29uc3RhbnRNZXRhZGF0YSkKIHsKICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybiBh
ZGRDb25zdGFudEVtcHR5VmFsdWUoKTsKIAogICAgIGludCBpbmRleCA9IG1fbmV4dENvbnN0YW50
T2Zmc2V0OwogCi0gICAgaWYgKHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiA9PSBTb3VyY2VDb2Rl
UmVwcmVzZW50YXRpb246OkRvdWJsZSAmJiB2LmlzSW50MzIoKSkKKyAgICBpZiAoY29uc3RhbnRN
ZXRhZGF0YSA9PSBDb25zdGFudE1ldGFkYXRhOjpEb3VibGUgJiYgdi5pc0ludDMyKCkpCiAgICAg
ICAgIHYgPSBqc0RvdWJsZU51bWJlcih2LmFzTnVtYmVyKCkpOwotICAgIEVuY29kZWRKU1ZhbHVl
V2l0aFJlcHJlc2VudGF0aW9uIHZhbHVlTWFwS2V5IHsgSlNWYWx1ZTo6ZW5jb2RlKHYpLCBzb3Vy
Y2VDb2RlUmVwcmVzZW50YXRpb24gfTsKKyAgICBFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRh
dGlvbiB2YWx1ZU1hcEtleSB7IEpTVmFsdWU6OmVuY29kZSh2KSwgY29uc3RhbnRNZXRhZGF0YSB9
OwogICAgIEpTVmFsdWVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2pzVmFsdWVNYXAuYWRkKHZh
bHVlTWFwS2V5LCBtX25leHRDb25zdGFudE9mZnNldCk7CiAgICAgaWYgKHJlc3VsdC5pc05ld0Vu
dHJ5KSB7CiAgICAgICAgIGFkZENvbnN0YW50SW5kZXgoKTsKLSAgICAgICAgbV9jb2RlQmxvY2st
PmFkZENvbnN0YW50KHYsIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik7CisgICAgICAgIG1fY29k
ZUJsb2NrLT5hZGRDb25zdGFudCh2LCBjb25zdGFudE1ldGFkYXRhKTsKICAgICB9IGVsc2UKICAg
ICAgICAgaW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiAmbV9jb25z
dGFudFBvb2xSZWdpc3RlcnNbaW5kZXhdOwpAQCAtMTg5MSw5ICsxODkxLDkgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQKICAgICByZXR1cm4gZW1pdExvYWQoZHN0LCBKU1ZhbHVlKHN0cmluZ0lu
TWFwKSk7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZChSZWdp
c3RlcklEKiBkc3QsIEpTVmFsdWUgdiwgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIHNvdXJjZUNv
ZGVSZXByZXNlbnRhdGlvbikKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9h
ZChSZWdpc3RlcklEKiBkc3QsIEpTVmFsdWUgdiwgQ29uc3RhbnRNZXRhZGF0YSBjb25zdGFudE1l
dGFkYXRhKQogewotICAgIFJlZ2lzdGVySUQqIGNvbnN0YW50SUQgPSBhZGRDb25zdGFudFZhbHVl
KHYsIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik7CisgICAgUmVnaXN0ZXJJRCogY29uc3RhbnRJ
RCA9IGFkZENvbnN0YW50VmFsdWUodiwgY29uc3RhbnRNZXRhZGF0YSk7CiAgICAgaWYgKGRzdCkK
ICAgICAgICAgcmV0dXJuIG1vdmUoZHN0LCBjb25zdGFudElEKTsKICAgICByZXR1cm4gY29uc3Rh
bnRJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBlOTc2ODZhYTNlZGNkZDhkM2Y5YjU3YzRhNmQxMjNiYWM5
Y2IzOTg3Li45MjVmN2MyMGU3ZWYwZDdlMWYyMzM0MjU4NjFjODE1MDEwYmFiYWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCkBAIC02NzEsNyArNjcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2ln
bmVkIGFkZENvbnN0YW50SW5kZXgoKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWQoUmVn
aXN0ZXJJRCogZHN0LCBib29sKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0
ZXJJRCogZHN0LCBjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRM
b2FkKFJlZ2lzdGVySUQqIGRzdCwgSlNWYWx1ZSwgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uID0g
U291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpPdGhlcik7CisgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgSlNWYWx1ZSwgQ29uc3RhbnRNZXRhZGF0YSA9IENvbnN0
YW50TWV0YWRhdGE6Ok90aGVyKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0
ZXJJRCogZHN0LCBJZGVudGlmaWVyU2V0JiBleGNsdWRlZExpc3QpOwogCiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFVuYXJ5T3AsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxVbmFyeU9w
OjpvcGNvZGVJRCAhPSBvcF9uZWdhdGU+PgpAQCAtMTEwNCw3ICsxMTA0LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgYm9vbCBoYXNDb25zdGFudChjb25zdCBJZGVudGlmaWVyJikgY29u
c3Q7CiAgICAgICAgIHVuc2lnbmVkIGFkZENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImKTsKLSAg
ICAgICAgUmVnaXN0ZXJJRCogYWRkQ29uc3RhbnRWYWx1ZShKU1ZhbHVlLCBTb3VyY2VDb2RlUmVw
cmVzZW50YXRpb24gPSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246Ok90aGVyKTsKKyAgICAgICAg
UmVnaXN0ZXJJRCogYWRkQ29uc3RhbnRWYWx1ZShKU1ZhbHVlLCBDb25zdGFudE1ldGFkYXRhID0g
Q29uc3RhbnRNZXRhZGF0YTo6T3RoZXIpOwogICAgICAgICBSZWdpc3RlcklEKiBhZGRDb25zdGFu
dEVtcHR5VmFsdWUoKTsKIAogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbWFr
ZUZ1bmN0aW9uKEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtZXRhZGF0YSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA2Mjlk
NDE2YmY5NGEzMjM0ODQ2MjQwODM5NTgwOGRkYjQwYzdjODdmLi5hMDY2Y2ZkZDM3NTI4OTEyNGU5
ZDJlNWFmYjQ3NjViY2ZkMzA4NDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgUmVnaXN0
ZXJJRCogTnVtYmVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGQKIHsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVz
dWx0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1p
dExvYWQoZHN0LCBqc1ZhbHVlKGdlbmVyYXRvciksIGlzSW50ZWdlck5vZGUoKSA/IFNvdXJjZUNv
ZGVSZXByZXNlbnRhdGlvbjo6SW50ZWdlciA6IFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6RG91
YmxlKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNWYWx1ZShnZW5lcmF0
b3IpLCBpc0ludGVnZXJOb2RlKCkgPyBDb25zdGFudE1ldGFkYXRhOjpJbnRlZ2VyIDogQ29uc3Rh
bnRNZXRhZGF0YTo6RG91YmxlKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIFJlZ0V4cE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggYTY5
YjAxY2NlMmFkMmZhOTk4NjZlNWJmYmExNWEzOTVmODU2Zjc3Ni4uNDJiOGNkY2IwOTY2ZjcwYmNi
ZjFmNjY4YjM1MmQ4ODIxNGNkMzkyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI5Miw3ICsyOTIsNyBAQCBjbGFzcyBCeXRlQ29k
ZVBhcnNlciB7CiAgICAgICAgICAgICBpZiAoY29uc3RhbnRJbmRleCA+PSBvbGRTaXplIHx8ICFt
X2NvbnN0YW50c1tjb25zdGFudEluZGV4XSkgewogICAgICAgICAgICAgICAgIGNvbnN0IENvZGVC
bG9jayYgY29kZUJsb2NrID0gKm1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrOwogICAgICAg
ICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjb2RlQmxvY2suZ2V0Q29uc3RhbnQob3BlcmFuZC5v
ZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIHNvdXJj
ZUNvZGVSZXByZXNlbnRhdGlvbiA9IGNvZGVCbG9jay5jb25zdGFudFNvdXJjZUNvZGVSZXByZXNl
bnRhdGlvbihvcGVyYW5kLm9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICBDb25zdGFudE1ldGFk
YXRhIGNvbnN0YW50TWV0YWRhdGEgPSBjb2RlQmxvY2suY29uc3RhbnRDb25zdGFudE1ldGFkYXRh
KG9wZXJhbmQub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIGlmIChjb25zdGFudEluZGV4ID49
IG9sZFNpemUpIHsKICAgICAgICAgICAgICAgICAgICAgbV9jb25zdGFudHMuZ3Jvdyhjb25zdGFu
dEluZGV4ICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG9sZFNp
emU7IGkgPCBtX2NvbnN0YW50cy5zaXplKCk7ICsraSkKQEAgLTMwMCw3ICszMDAsNyBAQCBjbGFz
cyBCeXRlQ29kZVBhcnNlciB7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
Tm9kZSogY29uc3RhbnROb2RlID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICBpZiAoc291cmNl
Q29kZVJlcHJlc2VudGF0aW9uID09IFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6RG91YmxlKQor
ICAgICAgICAgICAgICAgIGlmIChjb25zdGFudE1ldGFkYXRhID09IENvbnN0YW50TWV0YWRhdGE6
OkRvdWJsZSkKICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnROb2RlID0gYWRkVG9HcmFwaChE
b3VibGVDb25zdGFudCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplU3Ryb25nKGpzRG91YmxlTnVtYmVy
KHZhbHVlLmFzTnVtYmVyKCkpKSkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgY29uc3RhbnROb2RlID0gYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9n
cmFwaC5mcmVlemVTdHJvbmcodmFsdWUpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwCmluZGV4IDMyYTJjOTA0OWZlZDZmODJjNmFiYTQwNzY3NjZiZjQyOWIxMzkzODMuLjMw
YzU2ZTQ4ZGVhNjJjM2NlMTMwNWQyZDU3YzNmM2NmYzZkZjRjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC0xMzg1LDcgKzEzODUsNyBAQCBKU0FycmF5QnVmZmVy
VmlldyogR3JhcGg6OnRyeUdldEZvbGRhYmxlVmlldyhKU1ZhbHVlIHZhbHVlLCBBcnJheU1vZGUg
YXJyYXlNb2RlKQogdm9pZCBHcmFwaDo6cmVnaXN0ZXJGcm96ZW5WYWx1ZXMoKQogewogICAgIG1f
Y29kZUJsb2NrLT5jb25zdGFudHMoKS5zaHJpbmsoMCk7Ci0gICAgbV9jb2RlQmxvY2stPmNvbnN0
YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbigpLnJlc2l6ZSgwKTsKKyAgICBtX2NvZGVCbG9j
ay0+Y29uc3RhbnRNZXRhZGF0YSgpLnJlc2l6ZSgwKTsKICAgICBmb3IgKEZyb3plblZhbHVlKiB2
YWx1ZSA6IG1fZnJvemVuVmFsdWVzKSB7CiAgICAgICAgIGlmICghdmFsdWUtPnBvaW50c1RvSGVh
cCgpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0xNDA2LDcgKzE0MDYsNyBAQCB2b2lkIEdy
YXBoOjpyZWdpc3RlckZyb3plblZhbHVlcygpCiAgICAgICAgIH0gfQogICAgIH0KICAgICBtX2Nv
ZGVCbG9jay0+Y29uc3RhbnRzKCkuc2hyaW5rVG9GaXQoKTsKLSAgICBtX2NvZGVCbG9jay0+Y29u
c3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKCkuc2hyaW5rVG9GaXQoKTsKKyAgICBtX2Nv
ZGVCbG9jay0+Y29uc3RhbnRNZXRhZGF0YSgpLnNocmlua1RvRml0KCk7CiB9CiAKIHZvaWQgR3Jh
cGg6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAKaW5kZXggMGYwODA4Yjk4MTJkZjJmN2I5
MTJkMWNjNzNiMmFiYTIwY2IxMjc0MC4uOGQ4MDBkZWQwZjBmM2Y5Zjg1MWIyNjdhOTQ5MTA5NGFi
MTAxNzRhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5h
bGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVy
LmNwcApAQCAtODMsNyArODMsNyBAQCB2b2lkIEpJVEZpbmFsaXplcjo6ZmluYWxpemVDb21tb24o
KQogewogICAgIC8vIFNvbWUgSklUIGZpbmFsaXplcnMgbWF5IGhhdmUgYWRkZWQgbW9yZSBjb25z
dGFudHMuIFNocmluay10by1maXQgdGhvc2UgdGhpbmdzIG5vdy4KICAgICBtX3BsYW4uY29kZUJs
b2NrKCktPmNvbnN0YW50cygpLnNocmlua1RvRml0KCk7Ci0gICAgbV9wbGFuLmNvZGVCbG9jaygp
LT5jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oKS5zaHJpbmtUb0ZpdCgpOworICAg
IG1fcGxhbi5jb2RlQmxvY2soKS0+Y29uc3RhbnRNZXRhZGF0YSgpLnNocmlua1RvRml0KCk7CiAK
ICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBtX2ppdENvZGUtPm9wdGltaXplQWZ0ZXJXYXJtVXAo
bV9wbGFuLmNvZGVCbG9jaygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmNwcAppbmRleCBkNDYxZTU2OTMyOWYxZDllOGI4NmVjYmMzNTdiOWFlNzY5OWQ3
MThhLi4wZjliMDhhN2MyMTU1M2RlYzg3NDU1ZTMyYzRjZDBhZDZlZDM1OGQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC0xODE3LDcgKzE4
MTcsNiBAQCBjbGFzcyBDYWNoZWRDb2RlQmxvY2sgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PENvZGVC
bG9ja1R5cGU+IHsKIHByaXZhdGU6CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fdGhpc1JlZ2lzdGVy
OwogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7Ci0gICAgc3RkOjphcnJheTx1
bnNpZ25lZCwgTGlua1RpbWVDb25zdGFudENvdW50PiBtX2xpbmtUaW1lQ29uc3RhbnRzOwogCiAg
ICAgdW5zaWduZWQgbV91c2VzRXZhbCA6IDE7CiAgICAgdW5zaWduZWQgbV9pc1N0cmljdE1vZGUg
OiAxOwpAQCAtMTg1Niw3ICsxODU1LDcgQEAgY2xhc3MgQ2FjaGVkQ29kZUJsb2NrIDogcHVibGlj
IENhY2hlZE9iamVjdDxDb2RlQmxvY2tUeXBlPiB7CiAgICAgQ2FjaGVkVmVjdG9yPEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7CiAgICAgQ2FjaGVkVmVjdG9yPEluc3Ry
dWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnM7CiAgICAg
Q2FjaGVkVmVjdG9yPENhY2hlZEpTVmFsdWU+IG1fY29uc3RhbnRSZWdpc3RlcnM7Ci0gICAgQ2Fj
aGVkVmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4gbV9jb25zdGFudHNTb3VyY2VDb2Rl
UmVwcmVzZW50YXRpb247CisgICAgQ2FjaGVkVmVjdG9yPENvbnN0YW50TWV0YWRhdGE+IG1fY29u
c3RhbnRNZXRhZGF0YTsKICAgICBDYWNoZWRWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbz4gbV9l
eHByZXNzaW9uSW5mbzsKICAgICBDYWNoZWRIYXNoTWFwPEluc3RydWN0aW9uU3RyZWFtOjpPZmZz
ZXQsIGludD4gbV9vdXRPZkxpbmVKdW1wVGFyZ2V0czsKIApAQCAtMjA1NSwxMiArMjA1NCw5IEBA
IEFMV0FZU19JTkxJTkUgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKERlY29k
ZXImIGRlY29kZXIsIFN0cnVjdHVyZSoKIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+
CiBBTFdBWVNfSU5MSU5FIHZvaWQgQ2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5cGU+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgVW5saW5rZWRDb2RlQmxvY2smIGNvZGVCbG9jaykgY29uc3QK
IHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBMaW5rVGltZUNvbnN0YW50Q291bnQ7IGktLTspCi0g
ICAgICAgIGNvZGVCbG9jay5tX2xpbmtUaW1lQ29uc3RhbnRzW2ldID0gbV9saW5rVGltZUNvbnN0
YW50c1tpXTsKLQogICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuZGVjb2RlKGRlY29k
ZXIsIGNvZGVCbG9jay5tX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zKTsKICAgICBtX2NvbnN0
YW50UmVnaXN0ZXJzLmRlY29kZShkZWNvZGVyLCBjb2RlQmxvY2subV9jb25zdGFudFJlZ2lzdGVy
cywgJmNvZGVCbG9jayk7Ci0gICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24u
ZGVjb2RlKGRlY29kZXIsIGNvZGVCbG9jay5tX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbik7CisgICAgbV9jb25zdGFudE1ldGFkYXRhLmRlY29kZShkZWNvZGVyLCBjb2RlQmxvY2su
bV9jb25zdGFudE1ldGFkYXRhKTsKICAgICBtX2V4cHJlc3Npb25JbmZvLmRlY29kZShkZWNvZGVy
LCBjb2RlQmxvY2subV9leHByZXNzaW9uSW5mbyk7CiAgICAgbV9vdXRPZkxpbmVKdW1wVGFyZ2V0
cy5kZWNvZGUoZGVjb2RlciwgY29kZUJsb2NrLm1fb3V0T2ZMaW5lSnVtcFRhcmdldHMpOwogICAg
IG1fanVtcFRhcmdldHMuZGVjb2RlKGRlY29kZXIsIGNvZGVCbG9jay5tX2p1bXBUYXJnZXRzKTsK
QEAgLTIyMjMsOSArMjIxOSw2IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBDYWNoZWRDb2RlQmxvY2s8
Q29kZUJsb2NrVHlwZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zCiAgICAgbV9jb2Rl
R2VuZXJhdGlvbk1vZGUgPSBjb2RlQmxvY2subV9jb2RlR2VuZXJhdGlvbk1vZGU7CiAgICAgbV9j
b2RlVHlwZSA9IGNvZGVCbG9jay5tX2NvZGVUeXBlOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
TGlua1RpbWVDb25zdGFudENvdW50OyBpLS07KQotICAgICAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W2ldID0gY29kZUJsb2NrLm1fbGlua1RpbWVDb25zdGFudHNbaV07Ci0KICAgICBtX21ldGFkYXRh
LmVuY29kZShlbmNvZGVyLCBjb2RlQmxvY2subV9tZXRhZGF0YS5nZXQoKSk7CiAgICAgbV9yYXJl
RGF0YS5lbmNvZGUoZW5jb2RlciwgY29kZUJsb2NrLm1fcmFyZURhdGEuZ2V0KCkpOwogCkBAIC0y
MjM1LDcgKzIyMjgsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgQ2FjaGVkQ29kZUJsb2NrPENvZGVC
bG9ja1R5cGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29ucwogICAgIG1faW5zdHJ1Y3Rp
b25zLmVuY29kZShlbmNvZGVyLCBjb2RlQmxvY2subV9pbnN0cnVjdGlvbnMuZ2V0KCkpOwogICAg
IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuZW5jb2RlKGVuY29kZXIsIGNvZGVCbG9jay5t
X3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zKTsKICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzLmVu
Y29kZShlbmNvZGVyLCBjb2RlQmxvY2subV9jb25zdGFudFJlZ2lzdGVycyk7Ci0gICAgbV9jb25z
dGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uZW5jb2RlKGVuY29kZXIsIGNvZGVCbG9jay5t
X2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik7CisgICAgbV9jb25zdGFudE1ldGFk
YXRhLmVuY29kZShlbmNvZGVyLCBjb2RlQmxvY2subV9jb25zdGFudE1ldGFkYXRhKTsKICAgICBt
X2V4cHJlc3Npb25JbmZvLmVuY29kZShlbmNvZGVyLCBjb2RlQmxvY2subV9leHByZXNzaW9uSW5m
byk7CiAgICAgbV9qdW1wVGFyZ2V0cy5lbmNvZGUoZW5jb2RlciwgY29kZUJsb2NrLm1fanVtcFRh
cmdldHMpOwogICAgIG1fb3V0T2ZMaW5lSnVtcFRhcmdldHMuZW5jb2RlKGVuY29kZXIsIGNvZGVC
bG9jay5tX291dE9mTGluZUp1bXBUYXJnZXRzKTsKQEAgLTI0NDUsNiArMjQzOCw4IEBAIHZvaWQg
ZGVjb2RlRnVuY3Rpb25Db2RlQmxvY2soRGVjb2RlciYgZGVjb2RlciwgaW50MzJfdCBjYWNoZWRG
dW5jdGlvbkNvZGVCbG9ja09mCiAgICAgQVNTRVJUKGRlY29kZXIudm0oKS5oZWFwLmlzRGVmZXJy
ZWQoKSk7CiAgICAgYXV0byogY2FjaGVkQ29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ2Fj
aGVkV3JpdGVCYXJyaWVyPENhY2hlZEZ1bmN0aW9uQ29kZUJsb2NrLCBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrPio+KGRlY29kZXIucHRyRm9yT2Zmc2V0RnJvbUJhc2UoY2FjaGVkRnVuY3Rpb25D
b2RlQmxvY2tPZmZzZXQpKTsKICAgICBjYWNoZWRDb2RlQmxvY2stPmRlY29kZShkZWNvZGVyLCBj
b2RlQmxvY2ssIG93bmVyKTsKKyAgICBpZiAoY29kZUJsb2NrKQorICAgICAgICBjb2RlQmxvY2st
PnNldENhY2hlZENvZGVCbG9ja09mZnNldChjYWNoZWRGdW5jdGlvbkNvZGVCbG9ja09mZnNldCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oCmluZGV4IGVmNzAzM2U1OTFjODQ0MmY5N2FhYjc3MjJjZDAzZmY4OTI2MzI2
MzIuLjgyNjcyOTQ2ZTFlMjg3NGU3NzgwMjliMTVlN2JmMzUyM2U2ZjQ2Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTEyNiwxMCArMTI2LDExIEBA
IGVudW0gV2hpY2hWYWx1ZVdvcmQgewogaW50NjRfdCB0cnlDb252ZXJ0VG9JbnQ1Mihkb3VibGUp
OwogYm9vbCBpc0ludDUyKGRvdWJsZSk7CiAKLWVudW0gY2xhc3MgU291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uIDogdWludDhfdCB7CitlbnVtIGNsYXNzIENvbnN0YW50TWV0YWRhdGEgOiB1aW50OF90
IHsKICAgICBPdGhlciwKICAgICBJbnRlZ2VyLAotICAgIERvdWJsZQorICAgIERvdWJsZSwKKyAg
ICBMaW5rVGltZUNvbnN0YW50LAogfTsKIAogY2xhc3MgSlNWYWx1ZSB7CkBAIC01MDIsMTkgKzUw
MywxOSBAQCBzdHJ1Y3QgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxFbmNv
ZGVkSlNWYWx1ZT4gewogfTsKICNlbmRpZgogCi10eXBlZGVmIHN0ZDo6cGFpcjxFbmNvZGVkSlNW
YWx1ZSwgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uPiBFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNl
bnRhdGlvbjsKK3R5cGVkZWYgc3RkOjpwYWlyPEVuY29kZWRKU1ZhbHVlLCBDb25zdGFudE1ldGFk
YXRhPiBFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbjsKIAogc3RydWN0IEVuY29kZWRK
U1ZhbHVlV2l0aFJlcHJlc2VudGF0aW9uSGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8RW5jb2RlZEpT
VmFsdWVXaXRoUmVwcmVzZW50YXRpb24+IHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZh
bHVlSXNaZXJvID0gZmFsc2U7Ci0gICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlV2l0aFJlcHJlc2Vu
dGF0aW9uIGVtcHR5VmFsdWUoKSB7IHJldHVybiBzdGQ6Om1ha2VfcGFpcihKU1ZhbHVlOjplbmNv
ZGUoSlNWYWx1ZSgpKSwgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpPdGhlcik7IH0KLSAgICBz
dGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoRW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVz
ZW50YXRpb24mIHNsb3QpIHsgc2xvdCA9IHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlKEpTVmFsdWU6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkpLCBTb3VyY2VDb2RlUmVwcmVz
ZW50YXRpb246Ok90aGVyKTsgfQotICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKEVuY29k
ZWRKU1ZhbHVlV2l0aFJlcHJlc2VudGF0aW9uIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSBzdGQ6
Om1ha2VfcGFpcihKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU1ZhbHVlOjpIYXNoVGFibGVEZWxl
dGVkVmFsdWUpKSwgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpPdGhlcik7IH0KKyAgICBzdGF0
aWMgRW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb24gZW1wdHlWYWx1ZSgpIHsgcmV0dXJu
IHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpLCBDb25zdGFudE1ldGFk
YXRhOjpPdGhlcik7IH0KKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoRW5j
b2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb24mIHNsb3QpIHsgc2xvdCA9IHN0ZDo6bWFrZV9w
YWlyKEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZSkpLCBDb25zdGFudE1ldGFkYXRhOjpPdGhlcik7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0
ZWRWYWx1ZShFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbiB2YWx1ZSkgeyByZXR1cm4g
dmFsdWUgPT0gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSksIENvbnN0YW50TWV0YWRhdGE6Ok90aGVyKTsgfQogfTsK
IAogc3RydWN0IEVuY29kZWRKU1ZhbHVlV2l0aFJlcHJlc2VudGF0aW9uSGFzaCB7CiAgICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgRW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb24m
IHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6cGFpckludEhhc2goRW5jb2RlZEpT
VmFsdWVIYXNoOjpoYXNoKHZhbHVlLmZpcnN0KSwgSW50SGFzaDxTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb24+OjpoYXNoKHZhbHVlLnNlY29uZCkpOworICAgICAgICByZXR1cm4gV1RGOjpwYWlySW50
SGFzaChFbmNvZGVkSlNWYWx1ZUhhc2g6Omhhc2godmFsdWUuZmlyc3QpLCBJbnRIYXNoPENvbnN0
YW50TWV0YWRhdGE+OjpoYXNoKHZhbHVlLnNlY29uZCkpOwogICAgIH0KICAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbiYgYSwgY29uc3Qg
RW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb24mIGIpCiAgICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371455</attachid>
            <date>2019-06-05 17:14:42 -0700</date>
            <delta_ts>2019-06-05 22:06:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198023-20190605171441.patch</filename>
            <type>text/plain</type>
            <size>14718</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MjFiYWFhYTM5ZThlZDQ1OTQ1ZjJiZTBmNDM5ODY4MWU4NDczZDcwLi40ODVhNTlkZGUwNDUwMTYy
MTliOTdkY2VjMzk0YWY2NTlmMTdkYjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxOS0wNi0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVubGlua2VkQ29kZUJsb2NrIHNob3VsZCBiZSBldmVudHVhbGx5
IGpldHRpc29uZWQgdG9vIG9yIGNhY2hlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MDIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OnVzZWRJblByZXZpb3VzQ3ljbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZENvZGVCbG9jazo6c2V0VXNlZEluUHJldmlvdXNDeWNsZSk6CisgICAgICAgICogYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0Zv
cik6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGVDYWNo
ZWRDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChK
U0M6OkhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAqIHJ1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorCiAyMDE5LTA2LTA0ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRl
IGV4Y2VwdGlvbiBzY29wZSBmb3IgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAK
aW5kZXggZjljM2JhOWQ3MTY0N2Q0MjNkYjE4YTE0NDE5ODA0ZDM0ZjMwZjQ0MS4uNDM3YjNhODIz
MjUyYTQyN2NmM2FiOWExZWNhMmVjOThkNGVkODRjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC03MSw2ICs3MSw3
IEBAIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBDb2RlVHlwZSBjb2RlCiAgICAgLCBtX2V2YWxDb250ZXh0VHlwZShzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5ldmFsQ29udGV4dFR5cGUoKSkpCiAgICAgLCBtX2NvZGVU
eXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlVHlwZSkpCiAgICAgLCBtX2RpZE9wdGltaXpl
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihNaXhlZFRyaVN0YXRlKSkKKyAgICAsIG1fdXNlZEluUHJl
dmlvdXNDeWNsZShmYWxzZSkKICAgICAsIG1fcGFyc2VNb2RlKGluZm8ucGFyc2VNb2RlKCkpCiAg
ICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX21l
dGFkYXRhKFVubGlua2VkTWV0YWRhdGFUYWJsZTo6Y3JlYXRlKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDJhMzUwYTFm
MTFjZjIxMzFmNzJjMmI0YmQ4MDkwMThmZTcxMmVmZjIuLjYxYTc2NzQ0MDMzZjM1YWE5YzZjODEz
NjMwODYwNTQ2NjE1NDliOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0zNzAsNiArMzcwLDEyIEBAIGNsYXNzIFVubGlu
a2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBtX21ldGFkYXRh
LT5zaXplSW5CeXRlcygpOwogICAgIH0KIAorICAgIGJvb2wgdXNlZEluUHJldmlvdXNDeWNsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdXNlZEluUHJldmlvdXNDeWNsZTsgfQorCisgICAgdm9pZCBzZXRV
c2VkSW5QcmV2aW91c0N5Y2xlKGJvb2wgdXNlZCkKKyAgICB7CisgICAgICAgIG1fdXNlZEluUHJl
dmlvdXNDeWNsZSA9IHVzZWQ7CisgICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgVW5saW5rZWRDb2Rl
QmxvY2soVk0qLCBTdHJ1Y3R1cmUqLCBDb2RlVHlwZSwgY29uc3QgRXhlY3V0YWJsZUluZm8mLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPik7CkBAIC00MjQsNiArNDMwLDcgQEAgY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBtX2V2YWxD
b250ZXh0VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9jb2RlVHlwZSA6IDI7CiAgICAgdW5zaWdu
ZWQgbV9kaWRPcHRpbWl6ZSA6IDI7CisgICAgdW5zaWduZWQgbV91c2VkSW5QcmV2aW91c0N5Y2xl
IDogMTsKIHB1YmxpYzoKICAgICBDb25jdXJyZW50SlNMb2NrIG1fbG9jazsKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCAxNGEwNjljNWUwNzYwOGQzMDkxODIyOTM2NTZl
YjIxODdmZDk3ZmQ2Li4wMzEyZDU5ZWMyMTRhYjg0NjlhYjY5YWEyZjg0NjBiNDU4ZjY0ZjZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTEwNyw2ICsxMDcsNyBAQCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdAogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSkKICAgICAsIG1fZnVuY3Rpb25Nb2RlKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihub2RlLT5mdW5jdGlvbk1vZGUoKSkpCiAgICAgLCBtX2Rlcml2ZWRD
b250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVyaXZlZENvbnRleHRUeXBlKSkKKyAg
ICAsIG1faXNHZW5lcmF0ZWRGcm9tQ2FjaGUoZmFsc2UpCiAgICAgLCBtX3VubGlua2VkQ29kZUJs
b2NrRm9yQ2FsbCgpCiAgICAgLCBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0KCkKICAg
ICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQpAQCAtMTQyLDcgKzE0MywyMSBAQCB2b2lkIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0bwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB0aGlzT2JqZWN0
ID0ganNDYXN0PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5tX2lz
Q2FjaGVkKSB7CisKKyAgICAvLyBDdXJyZW50bHksIGJ5dGVjb2RlIGNhY2hlIGFzc3VtZXMgdGhh
dCB0aGUgdHJlZSBvZiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBhbmQgVW5saW5rZWRDb2Rl
QmxvY2sgd2lsbCBub3QgYmUgZGVzdHJveWVkIHdoaWxlIHRoZSBwYXJlbnQgaXMgbGl2ZS4KKyAg
ICAvLyBCeXRlY29kZSBjYWNoZSB1c2VzIHRoaXMgYXN1bXB0aW9uIHRvIGF2b2lkIGR1cGxpY2F0
ZSBtYXRlcmlhbGl6YXRpb24gYnkgYm9va2tlZXBpbmcgdGhlIGhlYXAgY2VsbHMgaW4gdGhlIG9m
ZnN0ZS10by1wb2ludGVyIG1hcC4KKyAgICBpZiAoVk06OmlzSW5NaW5pTW9kZSgpICYmICF0aGlz
T2JqZWN0LT5tX2lzR2VuZXJhdGVkRnJvbUNhY2hlKSB7CisgICAgICAgIGF1dG8gbWFya0lmUHJv
Zml0YWJsZSA9IFsmXSAoV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+JiB1
bmxpbmtlZENvZGVCbG9jaykgeworICAgICAgICAgICAgaWYgKCF1bmxpbmtlZENvZGVCbG9jaykK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAodW5saW5rZWRDb2RlQmxv
Y2stPmRpZE9wdGltaXplKCkgPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIHZpc2l0
b3IuYXBwZW5kKHVubGlua2VkQ29kZUJsb2NrKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHVubGlu
a2VkQ29kZUJsb2NrLT51c2VkSW5QcmV2aW91c0N5Y2xlKCkpCisgICAgICAgICAgICAgICAgdmlz
aXRvci5hcHBlbmQodW5saW5rZWRDb2RlQmxvY2spOworICAgICAgICB9OworICAgICAgICBtYXJr
SWZQcm9maXRhYmxlKHRoaXNPYmplY3QtPm1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsKTsKKyAg
ICAgICAgbWFya0lmUHJvZml0YWJsZSh0aGlzT2JqZWN0LT5tX3VubGlua2VkQ29kZUJsb2NrRm9y
Q29uc3RydWN0KTsKKyAgICB9IGVsc2UgaWYgKCF0aGlzT2JqZWN0LT5tX2lzQ2FjaGVkKSB7CiAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5saW5rZWRDb2RlQmxvY2tGb3JD
YWxsKTsKICAgICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV91bmxpbmtlZENvZGVC
bG9ja0ZvckNvbnN0cnVjdCk7CiAgICAgfQpAQCAtMTk3LDU2ICsyMTIsNDkgQEAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFs
Q29kZSgKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKENv
ZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kKQotewotICAgIHN3aXRjaCAo
c3BlY2lhbGl6YXRpb25LaW5kKSB7Ci0gICAgY2FzZSBDb2RlRm9yQ2FsbDoKLSAgICAgICAgcmV0
dXJuIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsLmdldCgpOwotICAgIGNhc2UgQ29kZUZvckNv
bnN0cnVjdDoKLSAgICAgICAgcmV0dXJuIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3Qu
Z2V0KCk7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxs
cHRyOwotfQotCiBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgVk0mIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kLCAK
ICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIFBh
cnNlckVycm9yJiBlcnJvciwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKLSAgICBpZiAo
bV9pc0NhY2hlZCkKLSAgICAgICAgZGVjb2RlQ2FjaGVkQ29kZUJsb2NrcygpOwotICAgIHN3aXRj
aCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7Ci0gICAgY2FzZSBDb2RlRm9yQ2FsbDoKLSAgICAgICAg
aWYgKFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fdW5saW5rZWRDb2Rl
QmxvY2tGb3JDYWxsLmdldCgpKQotICAgICAgICAgICAgcmV0dXJuIGNvZGVCbG9jazsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgotICAgICAgICBpZiAoVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNv
bnN0cnVjdC5nZXQoKSkKLSAgICAgICAgICAgIHJldHVybiBjb2RlQmxvY2s7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLQotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdl
bmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKLSAgICAgICAgdm0sIHRoaXMsIHNvdXJj
ZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBjb2RlR2VuZXJhdGlvbk1vZGUsIAotICAgICAgICBpc0J1
aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1h
bEZ1bmN0aW9uLCAKLSAgICAgICAgZXJyb3IsIHBhcnNlTW9kZSk7Ci0gICAgCi0gICAgaWYgKGVy
cm9yLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBzd2l0Y2ggKHNw
ZWNpYWxpemF0aW9uS2luZCkgewotICAgIGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAgIG1fdW5s
aW5rZWRDb2RlQmxvY2tGb3JDYWxsLnNldCh2bSwgdGhpcywgcmVzdWx0KTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgotICAgICAgICBtX3VubGlua2VkQ29kZUJs
b2NrRm9yQ29uc3RydWN0LnNldCh2bSwgdGhpcywgcmVzdWx0KTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LmFkZCh0aGlz
KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrID0gKFsmXSAoKSAtPiBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB7
CisgICAgICAgIGlmIChtX2lzQ2FjaGVkKQorICAgICAgICAgICAgZGVjb2RlQ2FjaGVkQ29kZUJs
b2Nrcyh2bSk7CisgICAgICAgIHN3aXRjaCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7CisgICAgICAg
IGNhc2UgQ29kZUZvckNhbGw6CisgICAgICAgICAgICBpZiAoVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogY29kZUJsb2NrID0gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwuZ2V0KCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGNvZGVCbG9jazsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6CisgICAgICAgICAgICBpZiAoVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayogY29kZUJsb2NrID0gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdC5n
ZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY29kZUJsb2NrOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1
bHQgPSBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCisgICAgICAgICAgICB2bSwg
dGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGNvZGVHZW5lcmF0aW9uTW9kZSwgCisg
ICAgICAgICAgICBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24g
OiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCAKKyAgICAgICAgICAgIGVycm9yLCBwYXJzZU1vZGUp
OworICAgICAgICAKKyAgICAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgICAgIHN3aXRjaCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7Cisg
ICAgICAgIGNhc2UgQ29kZUZvckNhbGw6CisgICAgICAgICAgICBtX3VubGlua2VkQ29kZUJsb2Nr
Rm9yQ2FsbC5zZXQodm0sIHRoaXMsIHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgorICAgICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9j
a0ZvckNvbnN0cnVjdC5zZXQodm0sIHRoaXMsIHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNl
dC5hZGQodGhpcyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSkoKTsKKyAgICBpZiAo
dW5saW5rZWRDb2RlQmxvY2spCisgICAgICAgIHVubGlua2VkQ29kZUJsb2NrLT5zZXRVc2VkSW5Q
cmV2aW91c0N5Y2xlKHRydWUpOworICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jazsKIH0KIAot
dm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVjb2RlQ2FjaGVkQ29kZUJsb2Nrcygp
Cit2b2lkIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGVDYWNoZWRDb2RlQmxvY2tz
KFZNJiB2bSkKIHsKICAgICBBU1NFUlQobV9pc0NhY2hlZCk7CiAgICAgQVNTRVJUKG1fZGVjb2Rl
cik7CkBAIC0yNTYsNyArMjY0LDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
ZGVjb2RlQ2FjaGVkQ29kZUJsb2NrcygpCiAgICAgaW50MzJfdCBjYWNoZWRDb2RlQmxvY2tGb3JD
YWxsT2Zmc2V0ID0gbV9jYWNoZWRDb2RlQmxvY2tGb3JDYWxsT2Zmc2V0OwogICAgIGludDMyX3Qg
Y2FjaGVkQ29kZUJsb2NrRm9yQ29uc3RydWN0T2Zmc2V0ID0gbV9jYWNoZWRDb2RlQmxvY2tGb3JD
b25zdHJ1Y3RPZmZzZXQ7CiAKLSAgICBEZWZlckdDIGRlZmVyR0MoZGVjb2Rlci0+dm0oKS5oZWFw
KTsKKyAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAKICAgICAvLyBObyBuZWVkIHRvIGNs
ZWFyIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsIGhlcmUsIHNpbmNlIHdlIG1vdmVkIHRoZSBk
ZWNvZGVyIG91dCBvZiB0aGUgc2FtZSBzbG90CiAgICAgaWYgKGNhY2hlZENvZGVCbG9ja0ZvckNh
bGxPZmZzZXQpCkBAIC0yNjgsNyArMjc2LDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6ZGVjb2RlQ2FjaGVkQ29kZUJsb2NrcygpCiAKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5j
ZSgpOwogICAgIG1faXNDYWNoZWQgPSBmYWxzZTsKLSAgICBkZWNvZGVyLT52bSgpLmhlYXAud3Jp
dGVCYXJyaWVyKHRoaXMpOworICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKHRoaXMpOwogfQogCiBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEmIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjplbnN1cmVSYXJlRGF0YVNsb3coKQpAQCAtMjg0LDQgKzI5MiwyNyBAQCB2b2lkIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpzZXRJbnZhbGlkVHlwZVByb2ZpbGluZ09mZnNldHMo
KQogICAgIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKTsKIH0KIAordm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Zmlu
YWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mIHZtKQoreworICAgIGlmIChWTTo6aXNJbk1pbmlNb2Rl
KCkgJiYgIW1faXNHZW5lcmF0ZWRGcm9tQ2FjaGUpIHsKKyAgICAgICAgYm9vbCBpc0NsZWFyZWQg
PSBmYWxzZTsKKyAgICAgICAgYm9vbCBpc1N0aWxsVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgYXV0
byBjbGVhcklmRGVhZCA9IFsmXSAoV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2s+JiB1bmxpbmtlZENvZGVCbG9jaykgeworICAgICAgICAgICAgaWYgKCF1bmxpbmtlZENvZGVC
bG9jaykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAoIXZtLmhlYXAu
aXNNYXJrZWQodW5saW5rZWRDb2RlQmxvY2suZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgdW5s
aW5rZWRDb2RlQmxvY2suY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBpc0NsZWFyZWQgPSB0cnVl
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB1bmxpbmtlZENvZGVCbG9j
ay0+c2V0VXNlZEluUHJldmlvdXNDeWNsZShmYWxzZSk7CisgICAgICAgICAgICAgICAgaXNTdGls
bFZhbGlkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgY2xlYXJJ
ZkRlYWQobV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwpOworICAgICAgICBjbGVhcklmRGVhZCht
X3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0KTsKKyAgICAgICAgaWYgKGlzQ2xlYXJlZCAm
JiAhaXNTdGlsbFZhbGlkKQorICAgICAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGVTcGFjZS5zZXQucmVtb3ZlKHRoaXMpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IDBjN2Y4OWNkNGViMDI0ZmNmODBkNzg4MzZjM2Y0
M2MwYTdjZDIzYzMuLmJlZDk1ZDMwOWU3ZjE2ZGNkNjk3OTJmZmVkNDRhMGQxZTJkYzhmMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0xMTQsOCArMTE0LDYgQEAgY2xhc3MgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCB0
eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlUHJvZmlsaW5nRW5k
T2Zmc2V0OyB9CiAgICAgdm9pZCBzZXRJbnZhbGlkVHlwZVByb2ZpbGluZ09mZnNldHMoKTsKIAot
ICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrRm9yKENvZGVT
cGVjaWFsaXphdGlvbktpbmQpOwotCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5s
aW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LAogICAgICAg
ICBQYXJzZXJFcnJvciYsIFNvdXJjZVBhcnNlTW9kZSk7CkBAIC0xODksNiArMTg3LDggQEAgY2xh
c3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX3NvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUgPSBzb3Vy
Y2VNYXBwaW5nVVJMOwogICAgIH0KIAorICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHko
Vk0mKTsKKwogICAgIHN0cnVjdCBSYXJlRGF0YSB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKIApAQCAtMjAyLDcgKzIwMiw3IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgSlNQ
YXJzZXJTY3JpcHRNb2RlLCBPcHRpb25hbDxDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZT4sICBK
U0M6OkRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1
Y3Rvcik7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoRGVjb2RlciYsIGNvbnN0IENh
Y2hlZEZ1bmN0aW9uRXhlY3V0YWJsZSYpOwogCi0gICAgdm9pZCBkZWNvZGVDYWNoZWRDb2RlQmxv
Y2tzKCk7CisgICAgdm9pZCBkZWNvZGVDYWNoZWRDb2RlQmxvY2tzKFZNJik7CiAKICAgICB1bnNp
Z25lZCBtX2ZpcnN0TGluZU9mZnNldCA6IDMxOwogICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENv
bnRleHQgOiAxOwpAQCAtMjI4LDYgKzIyOCw3IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMjsgLy8gRnVuY3Rpb25N
b2RlCiAgICAgdW5zaWduZWQgbV9kZXJpdmVkQ29udGV4dFR5cGU6IDI7CisgICAgdW5zaWduZWQg
bV9pc0dlbmVyYXRlZEZyb21DYWNoZSA6IDE7CiAKICAgICB1bmlvbiB7CiAgICAgICAgIFdyaXRl
QmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2NrRm9y
Q2FsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggNjY2M2I0ZjBkMzllYmJl
ZjlkMjcwZGUwM2QyYjVmYzVlMzNkNjQ4Mi4uYTg1MjA3ZjEyY2Y2MDNmMDQ3ODgxZDE2NGNjNjc4
Mjc0NDgzZmZlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTYwNiw2ICs2
MDYsNyBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKQogICAg
ICAgICB9KTsKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtKCktPmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0
aEZpbmFsaXplcnMpOwogICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
U3RydWN0dXJlUmFyZURhdGE+KHZtKCktPnN0cnVjdHVyZVJhcmVEYXRhU3BhY2UpOworICAgIGZp
bmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU+KHZtKCktPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0KTsKICAgICBp
ZiAodm0oKS0+bV93ZWFrU2V0U3BhY2UpCiAgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRp
b25hbEZpbmFsaXplcnM8SlNXZWFrU2V0Pigqdm0oKS0+bV93ZWFrU2V0U3BhY2UpOwogICAgIGlm
ICh2bSgpLT5tX3dlYWtNYXBTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhY2hlZFR5cGVzLmNwcAppbmRleCBkNDYxZTU2OTMyOWYxZDllOGI4NmVjYmMzNTdiOWFlNzY5
OWQ3MThhLi5iN2JjMmE3MjRjMzZlZjgxZjhhNzI0NWNkNDc2MzkxMDkxY2IzMTMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC0yMDMyLDYg
KzIwMzIsOCBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVC
bG9jayhEZWNvZGVyJiBkZWNvZGVyLCBTdHJ1Y3R1cmUqCiAKICAgICAsIG1fZGlkT3B0aW1pemUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE1peGVkVHJpU3RhdGUpKQogCisgICAgLCBtX3VzZWRJblBy
ZXZpb3VzQ3ljbGUoZmFsc2UpCisKICAgICAsIG1fZmVhdHVyZXMoY2FjaGVkQ29kZUJsb2NrLmZl
YXR1cmVzKCkpCiAgICAgLCBtX3BhcnNlTW9kZShjYWNoZWRDb2RlQmxvY2sucGFyc2VNb2RlKCkp
CiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjYWNoZWRDb2RlQmxvY2suY29kZUdlbmVyYXRp
b25Nb2RlKCkpCkBAIC0yMTU4LDYgKzIxNjAsNyBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShEZWNvZGVyJiBkZQog
ICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoY2FjaGVkRXhlY3V0YWJsZS5jb25zdHJ1Y3RvcktpbmQo
KSkKICAgICAsIG1fZnVuY3Rpb25Nb2RlKGNhY2hlZEV4ZWN1dGFibGUuZnVuY3Rpb25Nb2RlKCkp
CiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjYWNoZWRFeGVjdXRhYmxlLmRlcml2ZWRDb250
ZXh0VHlwZSgpKQorICAgICwgbV9pc0dlbmVyYXRlZEZyb21DYWNoZSh0cnVlKQogICAgICwgbV91
bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwoKQogICAgICwgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNv
bnN0cnVjdCgpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371472</attachid>
            <date>2019-06-05 22:06:32 -0700</date>
            <delta_ts>2019-06-05 22:07:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198023-20190605220631.patch</filename>
            <type>text/plain</type>
            <size>19621</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MjFiYWFhYTM5ZThlZDQ1OTQ1ZjJiZTBmNDM5ODY4MWU4NDczZDcwLi4yOTQzYTQ1YmIxYjI4ZjA0
YWRkM2E4YWQ0NmViNzZlYjI2ZWIwYjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAxOS0wNi0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVubGlua2VkQ29kZUJsb2NrIHNob3VsZCBiZSBldmVudHVhbGx5
IGpldHRpc29uZWQgdG9vIG9yIGNhY2hlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MDIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2hpbGUgQ29kZUJsb2NrIGlzIHBlcmlvZGljYWxseSBqZXR0aXNv
bmVkLCBVbmxpbmtlZENvZGVCbG9jayBhbmQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgY2Fu
IGJlIHJldGFpbmVkIGFsbW9zdCBmb3JldmVyIGluIGNlcnRhaW4gdHlwZSBvZiBhcHBsaWNhdGlv
bnMuCisgICAgICAgIFdoZW4gd2UgZXhlY3V0ZSBhIHByb2dyYW0sIHdoaWNoIGhhcyBVbmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2sgcmV0YWluZWQgaW4gQ29kZUNhY2hlLiBBbmQgVW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrIGhvbGRzIGFycmF5IG9mIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLgor
ICAgICAgICBBbmQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVzIGhvbGQgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9ja3Mgb25jZSBpdCBpcyBnZW5lcmF0ZWQuIFNvIGV2ZW50dWFsbHksIHRoaXMg
dHJlZSBnZXRzIGxhcmdlciBhbmQgbGFyZ2VyIHVudGlsIHdlIHB1cmdlCisgICAgICAgIFVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jayBmcm9tIENvZGVDYWNoZS4gVGhpcyBpcyBPSyBpbiB0aGUgYnJv
d3NlciBjYXNlLiBXZSBuYXZpZ2F0ZSB0byB2YXJpb3VzIG90aGVyIHBhZ2VzLCBhbmQgVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrcyBzaG91bGQgZXZlbnR1YWxseQorICAgICAgICBiZSBwcnVuZWQg
ZnJvbSBDb2RlQ2FjaGUgd2l0aCB0aGUgbmV3IG9uZXMuIFNvIHRoaXMgdHJlZSB3b24ndCBiZSBy
ZXRhaW5lZCBmb3JldmVyLiBCdXQgdGhlIGJlaGF2aW9yIGlzIGRpZmZlcmVudCBpbiB0aGUgb3Ro
ZXIgYXBwbGljYXRpb25zIHRoYXQgZG8gbm90IGhhdmUKKyAgICAgICAgbmF2aWdhdGlvbnMuIElm
IHRoZXkgb25seSBoYXZlIG9uZSBwcm9ncmFtIHdoaWNoIGhvbGRzIGFsbCwgd2UgYmFzaWNhbGx5
IHJldGFpbiB0aGlzIHRyZWUgZHVyaW5nIGV4ZWN1dGluZyB0aGlzIGFwcGxpY2F0aW9uLiBUaGUg
c2FtZSB0aGluZyBjYW4gaGFwcGVuIGluCisgICAgICAgIHdlYiBhcHBsaWNhdGlvbnMgd2hpY2gg
ZG9lcyBub3QgaGF2ZSBuYXZpZ2F0aW9uIGFuZCBrZWVwcyBhbGl2ZSBmb3IgYSBsb25nIHRpbWUu
IE9uY2Ugd2UgaGl0IENvZGVDYWNoZSBsaW1pdCBieSBwZXJpb2RpY2FsbHkgZXhlY3V0aW5nIGEg
bmV3IHNjcmlwdCwgd2Ugd2lsbAorICAgICAgICBoaXQgdGhlIHVwcGVybW9zdCBvZiBtZW1vcnkg
Zm9vdHByaW50LiBCdXQgdW50aWwgdGhhdCwgd2UgaW5jcmVhc2Ugb3VyIG1lbW9yeSBmb290cHJp
bnQuCisKKyAgICAgICAgSG93ZXZlciwgZGVzdHJveWluZyB0aGVzZSBVbmxpbmtlZENvZGVCbG9j
a3MgYW5kIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlcyBjYXVzZSBhIHRyaWNreSBwcm9ibGVt
LiBJbiB0aGUgYnJvd3NlciBlbnZpcm9ubWVudCwgbmF2aWdhdGlvbiBjYW4gaGFwcGVuIGF0IGFu
eQorICAgICAgICBwb2ludC4gU28gZXZlbiBpZiB0aGUgZ2l2ZW4gVW5saW5rZWRDb2RlQmxvY2sg
c2VlbXMgdW51c2VkIGluIHRoZSBjdXJyZW50IHBhZ2UsIGl0IGNhbiBiZSB1c2VkIHdoZW4gbmF2
aWdhdGluZyB0byB0aGUgbmV3IHBhZ2Ugd2hpY2ggaXMgdW5kZXIgdGhlIHNhbWUgZG9tYWluLgor
ICAgICAgICBPbmUgZXhhbXBsZSBpcyBpbml0aWFsaXppbmcgZnVuY3Rpb24gaW4gYSBzY3JpcHQu
IEl0IGlzIG9ubHkgZXhlY3V0ZWQgb25jZSBwZXIgcGFnZS4gU28gb25jZSBpdCBpcyBleGVjdXRl
ZCwgaXQgc2VlbXMgdGhhdCB0aGlzIFVubGlua2VkQ29kZUJsb2NrIHNlZW1zIHVudXNlZC4KKyAg
ICAgICAgQnV0IHRoaXMgd2lsbCBiZSB1c2VkIHdoZW4gd2UgbmF2aWdhdGUgdG8gYSBuZXcgcGFn
ZS4gUHJ1bmluZyBjb2RlIGJsb2NrcyBiYXNlZCBvbiB1c2FnZSBjb3VsZCBjYXVzZSBwZXJmb3Jt
YW5jZSByZWdyZXNzaW9uLgorCisgICAgICAgIEJ1dCBpZiBvdXIgVk0gaXMgbWluaSBWTSBtb2Rl
LCB0aGUgc3RvcnkgaXMgZGlmZmVyZW50LiBJbiBtaW5pIFZNIG1vZGUsIHdlIGZvY3VzIG9uIG1l
bW9yeSBmb290cHJpbnQgcmF0aGVyIHRoYW4gcGVyZm9ybWFuY2UgZS5nLiBkYWVtb25zLiBUaGUg
ZGFlbW9uIG5ldmVyCisgICAgICAgIHJldXNlIHRoZXNlIENvZGVDYWNoZSBzaW5jZSB3ZSBkbyBu
b3QgaGF2ZSB0aGUgbmF2aWdhdGlvbi4KKworICAgICAgICBUaGlzIHBhdGNoIGxvZ2ljYWxseSBt
YWtlcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSAtPiBVbmxpbmtlZENvZGVCbG9jayByZWZl
cmVuY2Ugd2VhayB3aGVuIFZNIGlzIG1pbmkgbW9kZS4gSWYgVW5saW5rZWRDb2RlQmxvY2sgaXMg
dXNlZCBpbiBwcmV2aW91cyBHQworICAgICAgICBjeWNsZSwgd2UgcmV0YWluIGl0LiBCdXQgaWYg
aXQgaXMgbm90IHVzZWQsIGFuZCBpZiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBpcyBvbmx5
IHRoZSBjZWxsIGtlZXBpbmcgVW5saW5rZWRDb2RlQmxvY2sgYWxpdmUsIHdlIGRlc3Ryb3kgaXQu
IEl0IGlzIHNvbWUKKyAgICAgICAgaGV1cmlzdGljLiBJbiBzdXBlciBwYXRob2xvZ2ljYWwgY2Fz
ZSwgaXQgY291bGQgaW5jcmVhc2UgbWVtb3J5IGZvb3RwcmludC4gQ29uc2lkZXIgdGhlIGZvbGxv
d2luZyBleGFtcGxlLgorCisgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShB
MSkgLT4gVW5saW5rZWRDb2RlQmxvY2soQjEpIC0+IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KEMxKSAtPiBVbmxpbmtlZENvZGVCbG9jayhEMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb2RlQmxvY2soRTEpCisKKyAgICAgICAgV2UgY291bGQgZGVs
ZXRlIEExLCBCMSwgYW5kIEMxIHdoaWxlIGtlZXBpbmcgRDEuIEJ1dCBpZiB3ZSBldmVudHVhbGx5
IHJlLWV4ZWN1dGUgdGhlIHNhbWUgY29kZSBjb3JyZXNwb25kaW5nIHRvIEExLCBCMSwgQzEsIHRo
ZXkgd2lsbCBiZSBuZXdseSBjcmVhdGVkLCBhbmQKKyAgICAgICAgd2Ugd2lsbCBjcmVhdGUgZHVw
bGljYXRlIFVubGlua2VkQ29kZUJsb2NrIGFuZCBpbnN0cnVjdGlvbnMgc3RyZWFtIGZvciBEMS4K
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5saW5r
ZWRDb2RlQmxvY2soRDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ29kZUJsb2NrKEUxKQorCisgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZShBMikgLT4gVW5saW5rZWRDb2RlQmxvY2soQjIpIC0+IFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKEMyKSAtPiBVbmxpbmtlZENvZGVCbG9jayhEMikKKworICAgICAgICBCdXQgdGhpcyBk
b2VzIG5vdCBoYXBwZW4gYmFzaWNhbGx5IGFuZCBldmVuIGl0IGhhcHBlbnMsIHdlIGV2ZW50dWFs
bHkgZGlzY2FyZCBEMSBhbmQgRDIgc2luY2UgQ29kZUJsb2NrIEUxIHdpbGwgYmUgamV0dGlzb25l
ZCBhbnl3YXkuIFNvIGluIHByYWN0aWNlLCB3ZSBkbworICAgICAgICBub3Qgc2VlIG1lbW9yeSBm
b290cHJpbnQgaW5jcmVhc2UuIFdlIHRlc3RlZCBpdCBpbiBHbWFpbCBhbmQgdGFyZ2V0IGFwcGxp
Y2F0aW9uLCBidXQgYm90aCBzYXlzIG1lbW9yeSBmb290cHJpbnQgcmVkdWN0aW9uICgzMCBNQiAv
IDQwMCBNQiBhbmQgMSBNQiAvNiBNQikuIFdoaWxlCisgICAgICAgIHRoaXMgYWZmZWN0cyBvbiBw
ZXJmb3JtYW5jZSBtdWNoICgxLTMgJSByZWdyZXNzaW9uIGluIFNwZWVkb21ldGVyMiksIHdlIGRv
IG5vdCBhcHBseSB0aGlzIHRvIG5vbiBtaW5pIG1vZGUgVk0gdW50aWwgd2UgY29tZSB1cCB3aXRo
IGEgZ29vZCBzdHJhdGVneSB0byBmYXN0ZW4KKyAgICAgICAgcGVyZm9ybWFuY2Ugb2YgcmUtZ2Vu
ZXJhdGlvbi4gUGVyc29uYWxseSBJIHRoaW5rIGZsdXNoaW5nIGRlc3Ryb3llZCBVbmxpbmtlZENv
ZGVCbG9jayB0byB0aGUgZGlzayBpcyBwcm9taXNpbmcuCisKKyAgICAgICAgSWYgVW5saW5rZWRD
b2RlQmxvY2sgaXMgZ2VuZXJhdGVkIGZyb20gYnl0ZWNvZGUgY2FjaGUsIHdlIGRvIG5vdCBtYWtl
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIC0+IFVubGlua2VkQ29kZUJsb2NrIGxpbmsgd2Vh
ayBiZWNhdXNlIHRoZSBkZWNvZGVyIG9mIHRoZSBieXRlY29kZQorICAgICAgICBjYWNoZSBhc3N1
bWVzIHRoYXQgZ2VuZXJhdGVkIEpTQ2VsbHMgd29uJ3QgYmUgZGVzdHJveWVkIHdoaWxlIHRoZSBw
YXJlbnQgY2VsbHMgb2YgdGhhdCBjZWxsIGFyZSBsaXZlLiBUaGlzIGlzIHRydWUgaW4gdGhlIGN1
cnJlbnQgaW1wbGVtZW50YXRpb24sIGFuZCB0aGlzIGFzc3VtcHRpb24KKyAgICAgICAgd2lsbCBi
ZSBicm9rZW4gd2l0aCB0aGlzIHBhdGNoLiBTbywgZm9yIG5vdywgd2UgZG8gbm90IG1ha2UgdGhp
cyBsaW5rIHdlYWsuIEN1cnJlbnRseSwgb3VyIHRhcmdldCBhcHBsaWNhdGlvbiBkb2VzIG5vdCB1
c2UgYnl0ZWNvZGUgY2FjaGUgc28gaXQgaXMgT0suCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBy
b3ZlcyBtZW1vcnkgZm9vdHByaW50IG9uIGEgdGFyZ2V0IGFwcGxpY2F0aW9uIGZyb20gNiBNQiB0
byA1IE1CLgorCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAg
ICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjp1c2VkSW5QcmV2aW91c0N5Y2xlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6OnNldFVzZWRJblByZXZpb3VzQ3ljbGUpOgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVjb2RlQ2Fj
aGVkQ29kZUJsb2Nrcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAo
SlNDOjpIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKToKKyAgICAgICAgKiBy
dW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6
OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKwogMjAxOS0wNi0wNCAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHVwZGF0
ZSBleGNlcHRpb24gc2NvcGUgZm9yIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3Bw
CmluZGV4IGY5YzNiYTlkNzE2NDdkNDIzZGIxOGExNDQxOTgwNGQzNGYzMGY0NDEuLjQzN2IzYTgy
MzI1MmE0MjdjZjNhYjlhMWVjYTJlYzk4ZDRlZDg0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNzEsNiArNzEs
NyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9ldmFsQ29udGV4dFR5cGUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZXZhbENvbnRleHRUeXBlKCkpKQogICAgICwgbV9jb2Rl
VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5cGUpKQogICAgICwgbV9kaWRPcHRpbWl6
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWl4ZWRUcmlTdGF0ZSkpCisgICAgLCBtX3VzZWRJblBy
ZXZpb3VzQ3ljbGUoZmFsc2UpCiAgICAgLCBtX3BhcnNlTW9kZShpbmZvLnBhcnNlTW9kZSgpKQog
ICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9t
ZXRhZGF0YShVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmNyZWF0ZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCAyYTM1MGEx
ZjExY2YyMTMxZjcyYzJiNGJkODA5MDE4ZmU3MTJlZmYyLi42MWE3Njc0NDAzM2YzNWFhOWM2Yzgx
MzYzMDg2MDU0NjYxNTQ5YjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMzcwLDYgKzM3MCwxMiBAQCBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gbV9tZXRhZGF0
YS0+c2l6ZUluQnl0ZXMoKTsKICAgICB9CiAKKyAgICBib29sIHVzZWRJblByZXZpb3VzQ3ljbGUo
KSBjb25zdCB7IHJldHVybiBtX3VzZWRJblByZXZpb3VzQ3ljbGU7IH0KKworICAgIHZvaWQgc2V0
VXNlZEluUHJldmlvdXNDeWNsZShib29sIHVzZWQpCisgICAgeworICAgICAgICBtX3VzZWRJblBy
ZXZpb3VzQ3ljbGUgPSB1c2VkOworICAgIH0KIAogcHJvdGVjdGVkOgogICAgIFVubGlua2VkQ29k
ZUJsb2NrKFZNKiwgU3RydWN0dXJlKiwgQ29kZVR5cGUsIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiwg
T3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4pOwpAQCAtNDI0LDYgKzQzMCw3IEBAIGNsYXNz
IFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9ldmFs
Q29udGV4dFR5cGUgOiAyOwogICAgIHVuc2lnbmVkIG1fY29kZVR5cGUgOiAyOwogICAgIHVuc2ln
bmVkIG1fZGlkT3B0aW1pemUgOiAyOworICAgIHVuc2lnbmVkIG1fdXNlZEluUHJldmlvdXNDeWNs
ZSA6IDE7CiBwdWJsaWM6CiAgICAgQ29uY3VycmVudEpTTG9jayBtX2xvY2s7CiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTRhMDY5YzVlMDc2MDhkMzA5MTgyMjkzNjU2
ZWIyMTg3ZmQ5N2ZkNi4uMDMxMmQ1OWVjMjE0YWI4NDY5YWI2OWFhMmY4NDYwYjQ1OGY2NGY2YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0xMDcsNiArMTA3LDcgQEAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCiAgICAgLCBtX2Z1bmN0aW9uTW9kZShzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKQogICAgICwgbV9kZXJpdmVk
Q29udGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRDb250ZXh0VHlwZSkpCisg
ICAgLCBtX2lzR2VuZXJhdGVkRnJvbUNhY2hlKGZhbHNlKQogICAgICwgbV91bmxpbmtlZENvZGVC
bG9ja0ZvckNhbGwoKQogICAgICwgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdCgpCiAg
ICAgLCBtX25hbWUobm9kZS0+aWRlbnQoKSkKQEAgLTE0Miw3ICsxNDMsMjEgQEAgdm9pZCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG8KICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdGhpc09iamVj
dCA9IGpzQ2FzdDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNlbGwpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIGlmICghdGhpc09iamVjdC0+bV9p
c0NhY2hlZCkgeworCisgICAgLy8gQ3VycmVudGx5LCBieXRlY29kZSBjYWNoZSBhc3N1bWVzIHRo
YXQgdGhlIHRyZWUgb2YgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgYW5kIFVubGlua2VkQ29k
ZUJsb2NrIHdpbGwgbm90IGJlIGRlc3Ryb3llZCB3aGlsZSB0aGUgcGFyZW50IGlzIGxpdmUuCisg
ICAgLy8gQnl0ZWNvZGUgY2FjaGUgdXNlcyB0aGlzIGFzdW1wdGlvbiB0byBhdm9pZCBkdXBsaWNh
dGUgbWF0ZXJpYWxpemF0aW9uIGJ5IGJvb2trZWVwaW5nIHRoZSBoZWFwIGNlbGxzIGluIHRoZSBv
ZmZzdGUtdG8tcG9pbnRlciBtYXAuCisgICAgaWYgKFZNOjppc0luTWluaU1vZGUoKSAmJiAhdGhp
c09iamVjdC0+bV9pc0dlbmVyYXRlZEZyb21DYWNoZSkgeworICAgICAgICBhdXRvIG1hcmtJZlBy
b2ZpdGFibGUgPSBbJl0gKFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiYg
dW5saW5rZWRDb2RlQmxvY2spIHsKKyAgICAgICAgICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2sp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKHVubGlua2VkQ29kZUJs
b2NrLT5kaWRPcHRpbWl6ZSgpID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICB2aXNp
dG9yLmFwcGVuZCh1bmxpbmtlZENvZGVCbG9jayk7CisgICAgICAgICAgICBlbHNlIGlmICh1bmxp
bmtlZENvZGVCbG9jay0+dXNlZEluUHJldmlvdXNDeWNsZSgpKQorICAgICAgICAgICAgICAgIHZp
c2l0b3IuYXBwZW5kKHVubGlua2VkQ29kZUJsb2NrKTsKKyAgICAgICAgfTsKKyAgICAgICAgbWFy
a0lmUHJvZml0YWJsZSh0aGlzT2JqZWN0LT5tX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbCk7Cisg
ICAgICAgIG1hcmtJZlByb2ZpdGFibGUodGhpc09iamVjdC0+bV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNvbnN0cnVjdCk7CisgICAgfSBlbHNlIGlmICghdGhpc09iamVjdC0+bV9pc0NhY2hlZCkgewog
ICAgICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkQ29kZUJsb2NrRm9y
Q2FsbCk7CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5saW5rZWRDb2Rl
QmxvY2tGb3JDb25zdHJ1Y3QpOwogICAgIH0KQEAgLTE5Nyw1NiArMjEyLDQ5IEBAIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2Jh
bENvZGUoCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcihD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCkKLXsKLSAgICBzd2l0Y2gg
KHNwZWNpYWxpemF0aW9uS2luZCkgewotICAgIGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAgIHJl
dHVybiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbC5nZXQoKTsKLSAgICBjYXNlIENvZGVGb3JD
b25zdHJ1Y3Q6Ci0gICAgICAgIHJldHVybiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0
LmdldCgpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVs
bHB0cjsKLX0KLQogVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgIFZNJiB2bSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCwg
CiAgICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBQ
YXJzZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7Ci0gICAgaWYg
KG1faXNDYWNoZWQpCi0gICAgICAgIGRlY29kZUNhY2hlZENvZGVCbG9ja3MoKTsKLSAgICBzd2l0
Y2ggKHNwZWNpYWxpemF0aW9uS2luZCkgewotICAgIGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAg
IGlmIChVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX3VubGlua2VkQ29k
ZUJsb2NrRm9yQ2FsbC5nZXQoKSkKLSAgICAgICAgICAgIHJldHVybiBjb2RlQmxvY2s7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKLSAgICAgICAgaWYgKFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JD
b25zdHJ1Y3QuZ2V0KCkpCi0gICAgICAgICAgICByZXR1cm4gY29kZUJsb2NrOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0KLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBn
ZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCi0gICAgICAgIHZtLCB0aGlzLCBzb3Vy
Y2UsIHNwZWNpYWxpemF0aW9uS2luZCwgY29kZUdlbmVyYXRpb25Nb2RlLCAKLSAgICAgICAgaXNC
dWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3Jt
YWxGdW5jdGlvbiwgCi0gICAgICAgIGVycm9yLCBwYXJzZU1vZGUpOwotICAgIAotICAgIGlmIChl
cnJvci5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgc3dpdGNoIChz
cGVjaWFsaXphdGlvbktpbmQpIHsKLSAgICBjYXNlIENvZGVGb3JDYWxsOgotICAgICAgICBtX3Vu
bGlua2VkQ29kZUJsb2NrRm9yQ2FsbC5zZXQodm0sIHRoaXMsIHJlc3VsdCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKLSAgICAgICAgbV91bmxpbmtlZENvZGVC
bG9ja0ZvckNvbnN0cnVjdC5zZXQodm0sIHRoaXMsIHJlc3VsdCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLSAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5hZGQodGhp
cyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1
bmxpbmtlZENvZGVCbG9jayA9IChbJl0gKCkgLT4gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
eworICAgICAgICBpZiAobV9pc0NhY2hlZCkKKyAgICAgICAgICAgIGRlY29kZUNhY2hlZENvZGVC
bG9ja3Modm0pOworICAgICAgICBzd2l0Y2ggKHNwZWNpYWxpemF0aW9uS2luZCkgeworICAgICAg
ICBjYXNlIENvZGVGb3JDYWxsOgorICAgICAgICAgICAgaWYgKFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqIGNvZGVCbG9jayA9IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsLmdldCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBjb2RlQmxvY2s7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgorICAgICAgICAgICAgaWYgKFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3Qu
Z2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvZGVCbG9jazsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKKyAgICAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVz
dWx0ID0gZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAorICAgICAgICAgICAgdm0s
IHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBjb2RlR2VuZXJhdGlvbk1vZGUsIAor
ICAgICAgICAgICAgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
IDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgCisgICAgICAgICAgICBlcnJvciwgcGFyc2VNb2Rl
KTsKKyAgICAgICAgCisgICAgICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBzd2l0Y2ggKHNwZWNpYWxpemF0aW9uS2luZCkgewor
ICAgICAgICBjYXNlIENvZGVGb3JDYWxsOgorICAgICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9j
a0ZvckNhbGwuc2V0KHZtLCB0aGlzLCByZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKKyAgICAgICAgICAgIG1fdW5saW5rZWRDb2RlQmxv
Y2tGb3JDb25zdHJ1Y3Quc2V0KHZtLCB0aGlzLCByZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5z
ZXQuYWRkKHRoaXMpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pKCk7CisgICAgaWYg
KHVubGlua2VkQ29kZUJsb2NrKQorICAgICAgICB1bmxpbmtlZENvZGVCbG9jay0+c2V0VXNlZElu
UHJldmlvdXNDeWNsZSh0cnVlKTsKKyAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7CiB9CiAK
LXZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmRlY29kZUNhY2hlZENvZGVCbG9ja3Mo
KQordm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVjb2RlQ2FjaGVkQ29kZUJsb2Nr
cyhWTSYgdm0pCiB7CiAgICAgQVNTRVJUKG1faXNDYWNoZWQpOwogICAgIEFTU0VSVChtX2RlY29k
ZXIpOwpAQCAtMjU2LDcgKzI2NCw3IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmRlY29kZUNhY2hlZENvZGVCbG9ja3MoKQogICAgIGludDMyX3QgY2FjaGVkQ29kZUJsb2NrRm9y
Q2FsbE9mZnNldCA9IG1fY2FjaGVkQ29kZUJsb2NrRm9yQ2FsbE9mZnNldDsKICAgICBpbnQzMl90
IGNhY2hlZENvZGVCbG9ja0ZvckNvbnN0cnVjdE9mZnNldCA9IG1fY2FjaGVkQ29kZUJsb2NrRm9y
Q29uc3RydWN0T2Zmc2V0OwogCi0gICAgRGVmZXJHQyBkZWZlckdDKGRlY29kZXItPnZtKCkuaGVh
cCk7CisgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogCiAgICAgLy8gTm8gbmVlZCB0byBj
bGVhciBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbCBoZXJlLCBzaW5jZSB3ZSBtb3ZlZCB0aGUg
ZGVjb2RlciBvdXQgb2YgdGhlIHNhbWUgc2xvdAogICAgIGlmIChjYWNoZWRDb2RlQmxvY2tGb3JD
YWxsT2Zmc2V0KQpAQCAtMjY4LDcgKzI3Niw3IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OmRlY29kZUNhY2hlZENvZGVCbG9ja3MoKQogCiAgICAgV1RGOjpzdG9yZVN0b3JlRmVu
Y2UoKTsKICAgICBtX2lzQ2FjaGVkID0gZmFsc2U7Ci0gICAgZGVjb2Rlci0+dm0oKS5oZWFwLndy
aXRlQmFycmllcih0aGlzKTsKKyAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzKTsKIH0KIAog
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KCkKQEAgLTI4NCw0ICsyOTIsMjcgQEAgdm9pZCBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6c2V0SW52YWxpZFR5cGVQcm9maWxpbmdPZmZzZXRz
KCkKICAgICBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCk7CiB9CiAKK3ZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZp
bmFsaXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKK3sKKyAgICBpZiAoVk06OmlzSW5NaW5pTW9k
ZSgpICYmICFtX2lzR2VuZXJhdGVkRnJvbUNhY2hlKSB7CisgICAgICAgIGJvb2wgaXNDbGVhcmVk
ID0gZmFsc2U7CisgICAgICAgIGJvb2wgaXNTdGlsbFZhbGlkID0gZmFsc2U7CisgICAgICAgIGF1
dG8gY2xlYXJJZkRlYWQgPSBbJl0gKFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrPiYgdW5saW5rZWRDb2RlQmxvY2spIHsKKyAgICAgICAgICAgIGlmICghdW5saW5rZWRDb2Rl
QmxvY2spCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKCF2bS5oZWFw
LmlzTWFya2VkKHVubGlua2VkQ29kZUJsb2NrLmdldCgpKSkgeworICAgICAgICAgICAgICAgIHVu
bGlua2VkQ29kZUJsb2NrLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgaXNDbGVhcmVkID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdW5saW5rZWRDb2RlQmxv
Y2stPnNldFVzZWRJblByZXZpb3VzQ3ljbGUoZmFsc2UpOworICAgICAgICAgICAgICAgIGlzU3Rp
bGxWYWxpZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIGNsZWFy
SWZEZWFkKG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsKTsKKyAgICAgICAgY2xlYXJJZkRlYWQo
bV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdCk7CisgICAgICAgIGlmIChpc0NsZWFyZWQg
JiYgIWlzU3RpbGxWYWxpZCkKKyAgICAgICAgICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlU3BhY2Uuc2V0LnJlbW92ZSh0aGlzKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCAwYzdmODljZDRlYjAyNGZjZjgwZDc4ODM2YzNm
NDNjMGE3Y2QyM2MzLi5iZWQ5NWQzMDllN2YxNmRjZDY5NzkyZmZlZDQ0YTBkMWUyZGM4ZjExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMTE0LDggKzExNCw2IEBAIGNsYXNzIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQg
dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZVByb2ZpbGluZ0Vu
ZE9mZnNldDsgfQogICAgIHZvaWQgc2V0SW52YWxpZFR5cGVQcm9maWxpbmdPZmZzZXRzKCk7CiAK
LSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9ja0ZvcihDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kKTsKLQogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwKICAgICAg
ICAgUGFyc2VyRXJyb3ImLCBTb3VyY2VQYXJzZU1vZGUpOwpAQCAtMTg5LDYgKzE4Nyw4IEBAIGNs
YXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlID0gc291
cmNlTWFwcGluZ1VSTDsKICAgICB9CiAKKyAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5
KFZNJik7CisKICAgICBzdHJ1Y3QgUmFyZURhdGEgewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CiAKQEAgLTIwMiw3ICsyMDIsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEpT
UGFyc2VyU2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+LCAg
SlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3Ry
dWN0b3IpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImLCBjb25zdCBD
YWNoZWRGdW5jdGlvbkV4ZWN1dGFibGUmKTsKIAotICAgIHZvaWQgZGVjb2RlQ2FjaGVkQ29kZUJs
b2NrcygpOworICAgIHZvaWQgZGVjb2RlQ2FjaGVkQ29kZUJsb2NrcyhWTSYpOwogCiAgICAgdW5z
aWduZWQgbV9maXJzdExpbmVPZmZzZXQgOiAzMTsKICAgICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RD
b250ZXh0IDogMTsKQEAgLTIyOCw2ICsyMjgsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0
b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2Z1bmN0aW9uTW9kZSA6IDI7IC8vIEZ1bmN0aW9u
TW9kZQogICAgIHVuc2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlOiAyOworICAgIHVuc2lnbmVk
IG1faXNHZW5lcmF0ZWRGcm9tQ2FjaGUgOiAxOwogCiAgICAgdW5pb24gewogICAgICAgICBXcml0
ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNhbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDY2NjNiNGYwZDM5ZWJi
ZWY5ZDI3MGRlMDNkMmI1ZmM1ZTMzZDY0ODIuLmE4NTIwN2YxMmNmNjAzZjA0Nzg4MWQxNjRjYzY3
ODI3NDQ4M2ZmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC02MDYsNiAr
NjA2LDcgQEAgdm9pZCBIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCkKICAg
ICAgICAgfSk7CiAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlPih2bSgpLT5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dp
dGhGaW5hbGl6ZXJzKTsKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PFN0cnVjdHVyZVJhcmVEYXRhPih2bSgpLT5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKTsKKyAgICBm
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlPih2bSgpLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldCk7CiAgICAg
aWYgKHZtKCktPm1fd2Vha1NldFNwYWNlKQogICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0
aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha1NldD4oKnZtKCktPm1fd2Vha1NldFNwYWNlKTsKICAgICBp
ZiAodm0oKS0+bV93ZWFrTWFwU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggZDQ2MWU1NjkzMjlmMWQ5ZThiODZlY2JjMzU3YjlhZTc2
OTlkNzE4YS4uYjdiYzJhNzI0YzM2ZWY4MWY4YTcyNDVjZDQ3NjM5MTA5MWNiMzEzMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMjAzMiw2
ICsyMDMyLDggQEAgQUxXQVlTX0lOTElORSBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2Rl
QmxvY2soRGVjb2RlciYgZGVjb2RlciwgU3RydWN0dXJlKgogCiAgICAgLCBtX2RpZE9wdGltaXpl
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihNaXhlZFRyaVN0YXRlKSkKIAorICAgICwgbV91c2VkSW5Q
cmV2aW91c0N5Y2xlKGZhbHNlKQorCiAgICAgLCBtX2ZlYXR1cmVzKGNhY2hlZENvZGVCbG9jay5m
ZWF0dXJlcygpKQogICAgICwgbV9wYXJzZU1vZGUoY2FjaGVkQ29kZUJsb2NrLnBhcnNlTW9kZSgp
KQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY2FjaGVkQ29kZUJsb2NrLmNvZGVHZW5lcmF0
aW9uTW9kZSgpKQpAQCAtMjE1OCw2ICsyMTYwLDcgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoRGVjb2RlciYgZGUK
ICAgICAsIG1fY29uc3RydWN0b3JLaW5kKGNhY2hlZEV4ZWN1dGFibGUuY29uc3RydWN0b3JLaW5k
KCkpCiAgICAgLCBtX2Z1bmN0aW9uTW9kZShjYWNoZWRFeGVjdXRhYmxlLmZ1bmN0aW9uTW9kZSgp
KQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY2FjaGVkRXhlY3V0YWJsZS5kZXJpdmVkQ29u
dGV4dFR5cGUoKSkKKyAgICAsIG1faXNHZW5lcmF0ZWRGcm9tQ2FjaGUodHJ1ZSkKICAgICAsIG1f
dW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsKCkKICAgICAsIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JD
b25zdHJ1Y3QoKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371473</attachid>
            <date>2019-06-05 22:07:38 -0700</date>
            <delta_ts>2019-06-05 22:15:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198023-20190605220737.patch</filename>
            <type>text/plain</type>
            <size>19623</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MjFiYWFhYTM5ZThlZDQ1OTQ1ZjJiZTBmNDM5ODY4MWU4NDczZDcwLi5jMjMwNDI0ODNhYjg2Yjhk
NzM4MTA4OGM0Yzc2Mjg2MWI5OTdjNWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAxOS0wNi0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVubGlua2VkQ29kZUJsb2NrIHNob3VsZCBiZSBldmVudHVhbGx5
IGpldHRpc29uZWQgaW4gVk0gbWluaSBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgwMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXaGlsZSBDb2RlQmxvY2sgaXMgcGVyaW9kaWNhbGx5IGpldHRp
c29uZWQsIFVubGlua2VkQ29kZUJsb2NrIGFuZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBj
YW4gYmUgcmV0YWluZWQgYWxtb3N0IGZvcmV2ZXIgaW4gY2VydGFpbiB0eXBlIG9mIGFwcGxpY2F0
aW9ucy4KKyAgICAgICAgV2hlbiB3ZSBleGVjdXRlIGEgcHJvZ3JhbSwgd2hpY2ggaGFzIFVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jayByZXRhaW5lZCBpbiBDb2RlQ2FjaGUuIEFuZCBVbmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2sgaG9sZHMgYXJyYXkgb2YgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
CisgICAgICAgIEFuZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZXMgaG9sZCBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrcyBvbmNlIGl0IGlzIGdlbmVyYXRlZC4gU28gZXZlbnR1YWxseSwgdGhp
cyB0cmVlIGdldHMgbGFyZ2VyIGFuZCBsYXJnZXIgdW50aWwgd2UgcHVyZ2UKKyAgICAgICAgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrIGZyb20gQ29kZUNhY2hlLiBUaGlzIGlzIE9LIGluIHRoZSBi
cm93c2VyIGNhc2UuIFdlIG5hdmlnYXRlIHRvIHZhcmlvdXMgb3RoZXIgcGFnZXMsIGFuZCBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2tzIHNob3VsZCBldmVudHVhbGx5CisgICAgICAgIGJlIHBydW5l
ZCBmcm9tIENvZGVDYWNoZSB3aXRoIHRoZSBuZXcgb25lcy4gU28gdGhpcyB0cmVlIHdvbid0IGJl
IHJldGFpbmVkIGZvcmV2ZXIuIEJ1dCB0aGUgYmVoYXZpb3IgaXMgZGlmZmVyZW50IGluIHRoZSBv
dGhlciBhcHBsaWNhdGlvbnMgdGhhdCBkbyBub3QgaGF2ZQorICAgICAgICBuYXZpZ2F0aW9ucy4g
SWYgdGhleSBvbmx5IGhhdmUgb25lIHByb2dyYW0gd2hpY2ggaG9sZHMgYWxsLCB3ZSBiYXNpY2Fs
bHkgcmV0YWluIHRoaXMgdHJlZSBkdXJpbmcgZXhlY3V0aW5nIHRoaXMgYXBwbGljYXRpb24uIFRo
ZSBzYW1lIHRoaW5nIGNhbiBoYXBwZW4gaW4KKyAgICAgICAgd2ViIGFwcGxpY2F0aW9ucyB3aGlj
aCBkb2VzIG5vdCBoYXZlIG5hdmlnYXRpb24gYW5kIGtlZXBzIGFsaXZlIGZvciBhIGxvbmcgdGlt
ZS4gT25jZSB3ZSBoaXQgQ29kZUNhY2hlIGxpbWl0IGJ5IHBlcmlvZGljYWxseSBleGVjdXRpbmcg
YSBuZXcgc2NyaXB0LCB3ZSB3aWxsCisgICAgICAgIGhpdCB0aGUgdXBwZXJtb3N0IG9mIG1lbW9y
eSBmb290cHJpbnQuIEJ1dCB1bnRpbCB0aGF0LCB3ZSBpbmNyZWFzZSBvdXIgbWVtb3J5IGZvb3Rw
cmludC4KKworICAgICAgICBIb3dldmVyLCBkZXN0cm95aW5nIHRoZXNlIFVubGlua2VkQ29kZUJs
b2NrcyBhbmQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVzIGNhdXNlIGEgdHJpY2t5IHByb2Js
ZW0uIEluIHRoZSBicm93c2VyIGVudmlyb25tZW50LCBuYXZpZ2F0aW9uIGNhbiBoYXBwZW4gYXQg
YW55CisgICAgICAgIHBvaW50LiBTbyBldmVuIGlmIHRoZSBnaXZlbiBVbmxpbmtlZENvZGVCbG9j
ayBzZWVtcyB1bnVzZWQgaW4gdGhlIGN1cnJlbnQgcGFnZSwgaXQgY2FuIGJlIHVzZWQgd2hlbiBu
YXZpZ2F0aW5nIHRvIHRoZSBuZXcgcGFnZSB3aGljaCBpcyB1bmRlciB0aGUgc2FtZSBkb21haW4u
CisgICAgICAgIE9uZSBleGFtcGxlIGlzIGluaXRpYWxpemluZyBmdW5jdGlvbiBpbiBhIHNjcmlw
dC4gSXQgaXMgb25seSBleGVjdXRlZCBvbmNlIHBlciBwYWdlLiBTbyBvbmNlIGl0IGlzIGV4ZWN1
dGVkLCBpdCBzZWVtcyB0aGF0IHRoaXMgVW5saW5rZWRDb2RlQmxvY2sgc2VlbXMgdW51c2VkLgor
ICAgICAgICBCdXQgdGhpcyB3aWxsIGJlIHVzZWQgd2hlbiB3ZSBuYXZpZ2F0ZSB0byBhIG5ldyBw
YWdlLiBQcnVuaW5nIGNvZGUgYmxvY2tzIGJhc2VkIG9uIHVzYWdlIGNvdWxkIGNhdXNlIHBlcmZv
cm1hbmNlIHJlZ3Jlc3Npb24uCisKKyAgICAgICAgQnV0IGlmIG91ciBWTSBpcyBtaW5pIFZNIG1v
ZGUsIHRoZSBzdG9yeSBpcyBkaWZmZXJlbnQuIEluIG1pbmkgVk0gbW9kZSwgd2UgZm9jdXMgb24g
bWVtb3J5IGZvb3RwcmludCByYXRoZXIgdGhhbiBwZXJmb3JtYW5jZSBlLmcuIGRhZW1vbnMuIFRo
ZSBkYWVtb24gbmV2ZXIKKyAgICAgICAgcmV1c2UgdGhlc2UgQ29kZUNhY2hlIHNpbmNlIHdlIGRv
IG5vdCBoYXZlIHRoZSBuYXZpZ2F0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbG9naWNhbGx5
IG1ha2VzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIC0+IFVubGlua2VkQ29kZUJsb2NrIHJl
ZmVyZW5jZSB3ZWFrIHdoZW4gVk0gaXMgbWluaSBtb2RlLiBJZiBVbmxpbmtlZENvZGVCbG9jayBp
cyB1c2VkIGluIHByZXZpb3VzIEdDCisgICAgICAgIGN5Y2xlLCB3ZSByZXRhaW4gaXQuIEJ1dCBp
ZiBpdCBpcyBub3QgdXNlZCwgYW5kIGlmIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGlzIG9u
bHkgdGhlIGNlbGwga2VlcGluZyBVbmxpbmtlZENvZGVCbG9jayBhbGl2ZSwgd2UgZGVzdHJveSBp
dC4gSXQgaXMgc29tZQorICAgICAgICBoZXVyaXN0aWMuIEluIHN1cGVyIHBhdGhvbG9naWNhbCBj
YXNlLCBpdCBjb3VsZCBpbmNyZWFzZSBtZW1vcnkgZm9vdHByaW50LiBDb25zaWRlciB0aGUgZm9s
bG93aW5nIGV4YW1wbGUuCisKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KEExKSAtPiBVbmxpbmtlZENvZGVCbG9jayhCMSkgLT4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUoQzEpIC0+IFVubGlua2VkQ29kZUJsb2NrKEQxKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENvZGVCbG9jayhFMSkKKworICAgICAgICBXZSBjb3VsZCBk
ZWxldGUgQTEsIEIxLCBhbmQgQzEgd2hpbGUga2VlcGluZyBEMS4gQnV0IGlmIHdlIGV2ZW50dWFs
bHkgcmUtZXhlY3V0ZSB0aGUgc2FtZSBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gQTEsIEIxLCBDMSwg
dGhleSB3aWxsIGJlIG5ld2x5IGNyZWF0ZWQsIGFuZAorICAgICAgICB3ZSB3aWxsIGNyZWF0ZSBk
dXBsaWNhdGUgVW5saW5rZWRDb2RlQmxvY2sgYW5kIGluc3RydWN0aW9ucyBzdHJlYW0gZm9yIEQx
LgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmxp
bmtlZENvZGVCbG9jayhEMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb2RlQmxvY2soRTEpCisKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKEEyKSAtPiBVbmxpbmtlZENvZGVCbG9jayhCMikgLT4gVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUoQzIpIC0+IFVubGlua2VkQ29kZUJsb2NrKEQyKQorCisgICAgICAgIEJ1dCB0aGlz
IGRvZXMgbm90IGhhcHBlbiBiYXNpY2FsbHkgYW5kIGV2ZW4gaXQgaGFwcGVucywgd2UgZXZlbnR1
YWxseSBkaXNjYXJkIEQxIGFuZCBEMiBzaW5jZSBDb2RlQmxvY2sgRTEgd2lsbCBiZSBqZXR0aXNv
bmVkIGFueXdheS4gU28gaW4gcHJhY3RpY2UsIHdlIGRvCisgICAgICAgIG5vdCBzZWUgbWVtb3J5
IGZvb3RwcmludCBpbmNyZWFzZS4gV2UgdGVzdGVkIGl0IGluIEdtYWlsIGFuZCB0YXJnZXQgYXBw
bGljYXRpb24sIGJ1dCBib3RoIHNheXMgbWVtb3J5IGZvb3RwcmludCByZWR1Y3Rpb24gKDMwIE1C
IC8gNDAwIE1CIGFuZCAxIE1CIC82IE1CKS4gV2hpbGUKKyAgICAgICAgdGhpcyBhZmZlY3RzIG9u
IHBlcmZvcm1hbmNlIG11Y2ggKDEtMyAlIHJlZ3Jlc3Npb24gaW4gU3BlZWRvbWV0ZXIyKSwgd2Ug
ZG8gbm90IGFwcGx5IHRoaXMgdG8gbm9uIG1pbmkgbW9kZSBWTSB1bnRpbCB3ZSBjb21lIHVwIHdp
dGggYSBnb29kIHN0cmF0ZWd5IHRvIGZhc3RlbgorICAgICAgICBwZXJmb3JtYW5jZSBvZiByZS1n
ZW5lcmF0aW9uLiBQZXJzb25hbGx5IEkgdGhpbmsgZmx1c2hpbmcgZGVzdHJveWVkIFVubGlua2Vk
Q29kZUJsb2NrIHRvIHRoZSBkaXNrIGlzIHByb21pc2luZy4KKworICAgICAgICBJZiBVbmxpbmtl
ZENvZGVCbG9jayBpcyBnZW5lcmF0ZWQgZnJvbSBieXRlY29kZSBjYWNoZSwgd2UgZG8gbm90IG1h
a2UgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgLT4gVW5saW5rZWRDb2RlQmxvY2sgbGluayB3
ZWFrIGJlY2F1c2UgdGhlIGRlY29kZXIgb2YgdGhlIGJ5dGVjb2RlCisgICAgICAgIGNhY2hlIGFz
c3VtZXMgdGhhdCBnZW5lcmF0ZWQgSlNDZWxscyB3b24ndCBiZSBkZXN0cm95ZWQgd2hpbGUgdGhl
IHBhcmVudCBjZWxscyBvZiB0aGF0IGNlbGwgYXJlIGxpdmUuIFRoaXMgaXMgdHJ1ZSBpbiB0aGUg
Y3VycmVudCBpbXBsZW1lbnRhdGlvbiwgYW5kIHRoaXMgYXNzdW1wdGlvbgorICAgICAgICB3aWxs
IGJlIGJyb2tlbiB3aXRoIHRoaXMgcGF0Y2guIFNvLCBmb3Igbm93LCB3ZSBkbyBub3QgbWFrZSB0
aGlzIGxpbmsgd2Vhay4gQ3VycmVudGx5LCBvdXIgdGFyZ2V0IGFwcGxpY2F0aW9uIGRvZXMgbm90
IHVzZSBieXRlY29kZSBjYWNoZSBzbyBpdCBpcyBPSy4KKworICAgICAgICBUaGlzIHBhdGNoIGlt
cHJvdmVzIG1lbW9yeSBmb290cHJpbnQgb24gYSB0YXJnZXQgYXBwbGljYXRpb24gZnJvbSA2IE1C
IHRvIDUgTUIuCisKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OnVzZWRJblByZXZpb3VzQ3ljbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6c2V0VXNlZEluUHJldmlvdXNDeWNsZSk6CisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9j
a0Zvcik6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGVD
YWNoZWRDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAg
IChKU0M6OkhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAq
IHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorCiAyMDE5LTA2LTA0ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBk
YXRlIGV4Y2VwdGlvbiBzY29wZSBmb3IgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAKaW5kZXggZjljM2JhOWQ3MTY0N2Q0MjNkYjE4YTE0NDE5ODA0ZDM0ZjMwZjQ0MS4uNDM3YjNh
ODIzMjUyYTQyN2NmM2FiOWExZWNhMmVjOThkNGVkODRjNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC03MSw2ICs3
MSw3IEBAIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSogdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBDb2RlVHlwZSBjb2RlCiAgICAgLCBtX2V2YWxDb250ZXh0VHlwZShz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5ldmFsQ29udGV4dFR5cGUoKSkpCiAgICAgLCBtX2Nv
ZGVUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlVHlwZSkpCiAgICAgLCBtX2RpZE9wdGlt
aXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihNaXhlZFRyaVN0YXRlKSkKKyAgICAsIG1fdXNlZElu
UHJldmlvdXNDeWNsZShmYWxzZSkKICAgICAsIG1fcGFyc2VNb2RlKGluZm8ucGFyc2VNb2RlKCkp
CiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBt
X21ldGFkYXRhKFVubGlua2VkTWV0YWRhdGFUYWJsZTo6Y3JlYXRlKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDJhMzUw
YTFmMTFjZjIxMzFmNzJjMmI0YmQ4MDkwMThmZTcxMmVmZjIuLjYxYTc2NzQ0MDMzZjM1YWE5YzZj
ODEzNjMwODYwNTQ2NjE1NDliOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0zNzAsNiArMzcwLDEyIEBAIGNsYXNzIFVu
bGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBtX21ldGFk
YXRhLT5zaXplSW5CeXRlcygpOwogICAgIH0KIAorICAgIGJvb2wgdXNlZEluUHJldmlvdXNDeWNs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlZEluUHJldmlvdXNDeWNsZTsgfQorCisgICAgdm9pZCBz
ZXRVc2VkSW5QcmV2aW91c0N5Y2xlKGJvb2wgdXNlZCkKKyAgICB7CisgICAgICAgIG1fdXNlZElu
UHJldmlvdXNDeWNsZSA9IHVzZWQ7CisgICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgVW5saW5rZWRD
b2RlQmxvY2soVk0qLCBTdHJ1Y3R1cmUqLCBDb2RlVHlwZSwgY29uc3QgRXhlY3V0YWJsZUluZm8m
LCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPik7CkBAIC00MjQsNiArNDMwLDcgQEAgY2xh
c3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBtX2V2
YWxDb250ZXh0VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9jb2RlVHlwZSA6IDI7CiAgICAgdW5z
aWduZWQgbV9kaWRPcHRpbWl6ZSA6IDI7CisgICAgdW5zaWduZWQgbV91c2VkSW5QcmV2aW91c0N5
Y2xlIDogMTsKIHB1YmxpYzoKICAgICBDb25jdXJyZW50SlNMb2NrIG1fbG9jazsKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCAxNGEwNjljNWUwNzYwOGQzMDkxODIyOTM2
NTZlYjIxODdmZDk3ZmQ2Li4wMzEyZDU5ZWMyMTRhYjg0NjlhYjY5YWEyZjg0NjBiNDU4ZjY0ZjZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTEwNyw2ICsxMDcsNyBAQCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdAogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSkKICAgICAsIG1fZnVuY3Rpb25Nb2RlKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5mdW5jdGlvbk1vZGUoKSkpCiAgICAgLCBtX2Rlcml2
ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVyaXZlZENvbnRleHRUeXBlKSkK
KyAgICAsIG1faXNHZW5lcmF0ZWRGcm9tQ2FjaGUoZmFsc2UpCiAgICAgLCBtX3VubGlua2VkQ29k
ZUJsb2NrRm9yQ2FsbCgpCiAgICAgLCBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0KCkK
ICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQpAQCAtMTQyLDcgKzE0MywyMSBAQCB2b2lkIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0bwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5t
X2lzQ2FjaGVkKSB7CisKKyAgICAvLyBDdXJyZW50bHksIGJ5dGVjb2RlIGNhY2hlIGFzc3VtZXMg
dGhhdCB0aGUgdHJlZSBvZiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBhbmQgVW5saW5rZWRD
b2RlQmxvY2sgd2lsbCBub3QgYmUgZGVzdHJveWVkIHdoaWxlIHRoZSBwYXJlbnQgaXMgbGl2ZS4K
KyAgICAvLyBCeXRlY29kZSBjYWNoZSB1c2VzIHRoaXMgYXN1bXB0aW9uIHRvIGF2b2lkIGR1cGxp
Y2F0ZSBtYXRlcmlhbGl6YXRpb24gYnkgYm9va2tlZXBpbmcgdGhlIGhlYXAgY2VsbHMgaW4gdGhl
IG9mZnN0ZS10by1wb2ludGVyIG1hcC4KKyAgICBpZiAoVk06OmlzSW5NaW5pTW9kZSgpICYmICF0
aGlzT2JqZWN0LT5tX2lzR2VuZXJhdGVkRnJvbUNhY2hlKSB7CisgICAgICAgIGF1dG8gbWFya0lm
UHJvZml0YWJsZSA9IFsmXSAoV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+
JiB1bmxpbmtlZENvZGVCbG9jaykgeworICAgICAgICAgICAgaWYgKCF1bmxpbmtlZENvZGVCbG9j
aykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAodW5saW5rZWRDb2Rl
QmxvY2stPmRpZE9wdGltaXplKCkgPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIHZp
c2l0b3IuYXBwZW5kKHVubGlua2VkQ29kZUJsb2NrKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHVu
bGlua2VkQ29kZUJsb2NrLT51c2VkSW5QcmV2aW91c0N5Y2xlKCkpCisgICAgICAgICAgICAgICAg
dmlzaXRvci5hcHBlbmQodW5saW5rZWRDb2RlQmxvY2spOworICAgICAgICB9OworICAgICAgICBt
YXJrSWZQcm9maXRhYmxlKHRoaXNPYmplY3QtPm1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsKTsK
KyAgICAgICAgbWFya0lmUHJvZml0YWJsZSh0aGlzT2JqZWN0LT5tX3VubGlua2VkQ29kZUJsb2Nr
Rm9yQ29uc3RydWN0KTsKKyAgICB9IGVsc2UgaWYgKCF0aGlzT2JqZWN0LT5tX2lzQ2FjaGVkKSB7
CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5saW5rZWRDb2RlQmxvY2tG
b3JDYWxsKTsKICAgICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV91bmxpbmtlZENv
ZGVCbG9ja0ZvckNvbnN0cnVjdCk7CiAgICAgfQpAQCAtMTk3LDU2ICsyMTIsNDkgQEAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xv
YmFsQ29kZSgKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9y
KENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kKQotewotICAgIHN3aXRj
aCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7Ci0gICAgY2FzZSBDb2RlRm9yQ2FsbDoKLSAgICAgICAg
cmV0dXJuIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsLmdldCgpOwotICAgIGNhc2UgQ29kZUZv
ckNvbnN0cnVjdDoKLSAgICAgICAgcmV0dXJuIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1
Y3QuZ2V0KCk7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBu
dWxscHRyOwotfQotCiBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgVk0mIHZtLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5k
LCAKICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUs
IFBhcnNlckVycm9yJiBlcnJvciwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKLSAgICBp
ZiAobV9pc0NhY2hlZCkKLSAgICAgICAgZGVjb2RlQ2FjaGVkQ29kZUJsb2NrcygpOwotICAgIHN3
aXRjaCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7Ci0gICAgY2FzZSBDb2RlRm9yQ2FsbDoKLSAgICAg
ICAgaWYgKFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fdW5saW5rZWRD
b2RlQmxvY2tGb3JDYWxsLmdldCgpKQotICAgICAgICAgICAgcmV0dXJuIGNvZGVCbG9jazsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgotICAgICAgICBpZiAoVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0gbV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNvbnN0cnVjdC5nZXQoKSkKLSAgICAgICAgICAgIHJldHVybiBjb2RlQmxvY2s7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLQotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9
IGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKLSAgICAgICAgdm0sIHRoaXMsIHNv
dXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBjb2RlR2VuZXJhdGlvbk1vZGUsIAotICAgICAgICBp
c0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5v
cm1hbEZ1bmN0aW9uLCAKLSAgICAgICAgZXJyb3IsIHBhcnNlTW9kZSk7Ci0gICAgCi0gICAgaWYg
KGVycm9yLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBzd2l0Y2gg
KHNwZWNpYWxpemF0aW9uS2luZCkgewotICAgIGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAgIG1f
dW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsLnNldCh2bSwgdGhpcywgcmVzdWx0KTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgotICAgICAgICBtX3VubGlua2VkQ29k
ZUJsb2NrRm9yQ29uc3RydWN0LnNldCh2bSwgdGhpcywgcmVzdWx0KTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LmFkZCh0
aGlzKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrID0gKFsmXSAoKSAtPiBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KiB7CisgICAgICAgIGlmIChtX2lzQ2FjaGVkKQorICAgICAgICAgICAgZGVjb2RlQ2FjaGVkQ29k
ZUJsb2Nrcyh2bSk7CisgICAgICAgIHN3aXRjaCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7CisgICAg
ICAgIGNhc2UgQ29kZUZvckNhbGw6CisgICAgICAgICAgICBpZiAoVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogY29kZUJsb2NrID0gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwuZ2V0KCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGNvZGVCbG9jazsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6CisgICAgICAgICAgICBpZiAoVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVj
dC5nZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY29kZUJsb2NrOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBy
ZXN1bHQgPSBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCisgICAgICAgICAgICB2
bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGNvZGVHZW5lcmF0aW9uTW9kZSwg
CisgICAgICAgICAgICBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rp
b24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCAKKyAgICAgICAgICAgIGVycm9yLCBwYXJzZU1v
ZGUpOworICAgICAgICAKKyAgICAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgICAgIHN3aXRjaCAoc3BlY2lhbGl6YXRpb25LaW5kKSB7
CisgICAgICAgIGNhc2UgQ29kZUZvckNhbGw6CisgICAgICAgICAgICBtX3VubGlua2VkQ29kZUJs
b2NrRm9yQ2FsbC5zZXQodm0sIHRoaXMsIHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgorICAgICAgICAgICAgbV91bmxpbmtlZENvZGVC
bG9ja0ZvckNvbnN0cnVjdC5zZXQodm0sIHRoaXMsIHJlc3VsdCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNl
LnNldC5hZGQodGhpcyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSkoKTsKKyAgICBp
ZiAodW5saW5rZWRDb2RlQmxvY2spCisgICAgICAgIHVubGlua2VkQ29kZUJsb2NrLT5zZXRVc2Vk
SW5QcmV2aW91c0N5Y2xlKHRydWUpOworICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jazsKIH0K
IAotdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVjb2RlQ2FjaGVkQ29kZUJsb2Nr
cygpCit2b2lkIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGVDYWNoZWRDb2RlQmxv
Y2tzKFZNJiB2bSkKIHsKICAgICBBU1NFUlQobV9pc0NhY2hlZCk7CiAgICAgQVNTRVJUKG1fZGVj
b2Rlcik7CkBAIC0yNTYsNyArMjY0LDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6ZGVjb2RlQ2FjaGVkQ29kZUJsb2NrcygpCiAgICAgaW50MzJfdCBjYWNoZWRDb2RlQmxvY2tG
b3JDYWxsT2Zmc2V0ID0gbV9jYWNoZWRDb2RlQmxvY2tGb3JDYWxsT2Zmc2V0OwogICAgIGludDMy
X3QgY2FjaGVkQ29kZUJsb2NrRm9yQ29uc3RydWN0T2Zmc2V0ID0gbV9jYWNoZWRDb2RlQmxvY2tG
b3JDb25zdHJ1Y3RPZmZzZXQ7CiAKLSAgICBEZWZlckdDIGRlZmVyR0MoZGVjb2Rlci0+dm0oKS5o
ZWFwKTsKKyAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAKICAgICAvLyBObyBuZWVkIHRv
IGNsZWFyIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsIGhlcmUsIHNpbmNlIHdlIG1vdmVkIHRo
ZSBkZWNvZGVyIG91dCBvZiB0aGUgc2FtZSBzbG90CiAgICAgaWYgKGNhY2hlZENvZGVCbG9ja0Zv
ckNhbGxPZmZzZXQpCkBAIC0yNjgsNyArMjc2LDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZGVjb2RlQ2FjaGVkQ29kZUJsb2NrcygpCiAKICAgICBXVEY6OnN0b3JlU3RvcmVG
ZW5jZSgpOwogICAgIG1faXNDYWNoZWQgPSBmYWxzZTsKLSAgICBkZWNvZGVyLT52bSgpLmhlYXAu
d3JpdGVCYXJyaWVyKHRoaXMpOworICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKHRoaXMpOwogfQog
CiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEmIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjplbnN1cmVSYXJlRGF0YVNsb3coKQpAQCAtMjg0LDQgKzI5MiwyNyBAQCB2b2lk
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpzZXRJbnZhbGlkVHlwZVByb2ZpbGluZ09mZnNl
dHMoKQogICAgIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKTsKIH0KIAordm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mIHZtKQoreworICAgIGlmIChWTTo6aXNJbk1pbmlN
b2RlKCkgJiYgIW1faXNHZW5lcmF0ZWRGcm9tQ2FjaGUpIHsKKyAgICAgICAgYm9vbCBpc0NsZWFy
ZWQgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBpc1N0aWxsVmFsaWQgPSBmYWxzZTsKKyAgICAgICAg
YXV0byBjbGVhcklmRGVhZCA9IFsmXSAoV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2s+JiB1bmxpbmtlZENvZGVCbG9jaykgeworICAgICAgICAgICAgaWYgKCF1bmxpbmtlZENv
ZGVCbG9jaykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAoIXZtLmhl
YXAuaXNNYXJrZWQodW5saW5rZWRDb2RlQmxvY2suZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAg
dW5saW5rZWRDb2RlQmxvY2suY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBpc0NsZWFyZWQgPSB0
cnVlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB1bmxpbmtlZENvZGVC
bG9jay0+c2V0VXNlZEluUHJldmlvdXNDeWNsZShmYWxzZSk7CisgICAgICAgICAgICAgICAgaXNT
dGlsbFZhbGlkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgY2xl
YXJJZkRlYWQobV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwpOworICAgICAgICBjbGVhcklmRGVh
ZChtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0KTsKKyAgICAgICAgaWYgKGlzQ2xlYXJl
ZCAmJiAhaXNTdGlsbFZhbGlkKQorICAgICAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGVTcGFjZS5zZXQucmVtb3ZlKHRoaXMpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IDBjN2Y4OWNkNGViMDI0ZmNmODBkNzg4MzZj
M2Y0M2MwYTdjZDIzYzMuLmJlZDk1ZDMwOWU3ZjE2ZGNkNjk3OTJmZmVkNDRhMGQxZTJkYzhmMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0xMTQsOCArMTE0LDYgQEAgY2xhc3MgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25l
ZCB0eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlUHJvZmlsaW5n
RW5kT2Zmc2V0OyB9CiAgICAgdm9pZCBzZXRJbnZhbGlkVHlwZVByb2ZpbGluZ09mZnNldHMoKTsK
IAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrRm9yKENv
ZGVTcGVjaWFsaXphdGlvbktpbmQpOwotCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LAogICAg
ICAgICBQYXJzZXJFcnJvciYsIFNvdXJjZVBhcnNlTW9kZSk7CkBAIC0xODksNiArMTg3LDggQEAg
Y2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX3NvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUgPSBz
b3VyY2VNYXBwaW5nVVJMOwogICAgIH0KIAorICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFs
bHkoVk0mKTsKKwogICAgIHN0cnVjdCBSYXJlRGF0YSB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKIApAQCAtMjAyLDcgKzIwMiw3IEBAIGNsYXNzIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwg
SlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25hbDxDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZT4s
ICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25z
dHJ1Y3Rvcik7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoRGVjb2RlciYsIGNvbnN0
IENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZSYpOwogCi0gICAgdm9pZCBkZWNvZGVDYWNoZWRDb2Rl
QmxvY2tzKCk7CisgICAgdm9pZCBkZWNvZGVDYWNoZWRDb2RlQmxvY2tzKFZNJik7CiAKICAgICB1
bnNpZ25lZCBtX2ZpcnN0TGluZU9mZnNldCA6IDMxOwogICAgIHVuc2lnbmVkIG1faXNJblN0cmlj
dENvbnRleHQgOiAxOwpAQCAtMjI4LDYgKzIyOCw3IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1
Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMjsgLy8gRnVuY3Rp
b25Nb2RlCiAgICAgdW5zaWduZWQgbV9kZXJpdmVkQ29udGV4dFR5cGU6IDI7CisgICAgdW5zaWdu
ZWQgbV9pc0dlbmVyYXRlZEZyb21DYWNoZSA6IDE7CiAKICAgICB1bmlvbiB7CiAgICAgICAgIFdy
aXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2Nr
Rm9yQ2FsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggNjY2M2I0ZjBkMzll
YmJlZjlkMjcwZGUwM2QyYjVmYzVlMzNkNjQ4Mi4uYTg1MjA3ZjEyY2Y2MDNmMDQ3ODgxZDE2NGNj
Njc4Mjc0NDgzZmZlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTYwNiw2
ICs2MDYsNyBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKQog
ICAgICAgICB9KTsKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtKCktPmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aEZpbmFsaXplcnMpOwogICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXpl
cnM8U3RydWN0dXJlUmFyZURhdGE+KHZtKCktPnN0cnVjdHVyZVJhcmVEYXRhU3BhY2UpOworICAg
IGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU+KHZtKCktPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0KTsKICAg
ICBpZiAodm0oKS0+bV93ZWFrU2V0U3BhY2UpCiAgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnM8SlNXZWFrU2V0Pigqdm0oKS0+bV93ZWFrU2V0U3BhY2UpOwogICAg
IGlmICh2bSgpLT5tX3dlYWtNYXBTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCBkNDYxZTU2OTMyOWYxZDllOGI4NmVjYmMzNTdiOWFl
NzY5OWQ3MThhLi5iN2JjMmE3MjRjMzZlZjgxZjhhNzI0NWNkNDc2MzkxMDkxY2IzMTMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC0yMDMy
LDYgKzIwMzIsOCBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENv
ZGVCbG9jayhEZWNvZGVyJiBkZWNvZGVyLCBTdHJ1Y3R1cmUqCiAKICAgICAsIG1fZGlkT3B0aW1p
emUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE1peGVkVHJpU3RhdGUpKQogCisgICAgLCBtX3VzZWRJ
blByZXZpb3VzQ3ljbGUoZmFsc2UpCisKICAgICAsIG1fZmVhdHVyZXMoY2FjaGVkQ29kZUJsb2Nr
LmZlYXR1cmVzKCkpCiAgICAgLCBtX3BhcnNlTW9kZShjYWNoZWRDb2RlQmxvY2sucGFyc2VNb2Rl
KCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjYWNoZWRDb2RlQmxvY2suY29kZUdlbmVy
YXRpb25Nb2RlKCkpCkBAIC0yMTU4LDYgKzIxNjAsNyBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShEZWNvZGVyJiBk
ZQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoY2FjaGVkRXhlY3V0YWJsZS5jb25zdHJ1Y3Rvcktp
bmQoKSkKICAgICAsIG1fZnVuY3Rpb25Nb2RlKGNhY2hlZEV4ZWN1dGFibGUuZnVuY3Rpb25Nb2Rl
KCkpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjYWNoZWRFeGVjdXRhYmxlLmRlcml2ZWRD
b250ZXh0VHlwZSgpKQorICAgICwgbV9pc0dlbmVyYXRlZEZyb21DYWNoZSh0cnVlKQogICAgICwg
bV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwoKQogICAgICwgbV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNvbnN0cnVjdCgpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371474</attachid>
            <date>2019-06-05 22:15:23 -0700</date>
            <delta_ts>2019-06-06 22:18:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198023-20190605221523.patch</filename>
            <type>text/plain</type>
            <size>19873</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MjFiYWFhYTM5ZThlZDQ1OTQ1ZjJiZTBmNDM5ODY4MWU4NDczZDcwLi4yYjY4OTI0MzFmZGNmZDg0
MGQxZDhkZmZiZjU1YjEzMWVmNTBlZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NSBAQAorMjAxOS0wNi0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVubGlua2VkQ29kZUJsb2NrIHNob3VsZCBiZSBldmVudHVhbGx5
IGpldHRpc29uZWQgaW4gVk0gbWluaSBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgwMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXaGlsZSBDb2RlQmxvY2sgaXMgcGVyaW9kaWNhbGx5IGpldHRp
c29uZWQsIFVubGlua2VkQ29kZUJsb2NrIGFuZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBj
YW4gYmUgcmV0YWluZWQgYWxtb3N0IGZvcmV2ZXIgaW4gY2VydGFpbiB0eXBlIG9mIGFwcGxpY2F0
aW9ucy4KKyAgICAgICAgV2hlbiB3ZSBleGVjdXRlIGEgcHJvZ3JhbSwgd2hpY2ggaGFzIFVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jayByZXRhaW5lZCBpbiBDb2RlQ2FjaGUuIEFuZCBVbmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2sgaG9sZHMgYXJyYXkgb2YgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
CisgICAgICAgIEFuZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZXMgaG9sZCBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrcyBvbmNlIGl0IGlzIGdlbmVyYXRlZC4gU28gZXZlbnR1YWxseSwgdGhp
cyB0cmVlIGdldHMgbGFyZ2VyIGFuZCBsYXJnZXIgdW50aWwgd2UgcHVyZ2UKKyAgICAgICAgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrIGZyb20gQ29kZUNhY2hlLiBUaGlzIGlzIE9LIGluIHRoZSBi
cm93c2VyIGNhc2UuIFdlIG5hdmlnYXRlIHRvIHZhcmlvdXMgb3RoZXIgcGFnZXMsIGFuZCBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2tzIHNob3VsZCBldmVudHVhbGx5CisgICAgICAgIGJlIHBydW5l
ZCBmcm9tIENvZGVDYWNoZSB3aXRoIHRoZSBuZXcgb25lcy4gU28gdGhpcyB0cmVlIHdvbid0IGJl
IHJldGFpbmVkIGZvcmV2ZXIuIEJ1dCB0aGUgYmVoYXZpb3IgaXMgZGlmZmVyZW50IGluIHRoZSBv
dGhlciBhcHBsaWNhdGlvbnMgdGhhdCBkbyBub3QgaGF2ZQorICAgICAgICBuYXZpZ2F0aW9ucy4g
SWYgdGhleSBvbmx5IGhhdmUgb25lIHByb2dyYW0gd2hpY2ggaG9sZHMgYWxsLCB3ZSBiYXNpY2Fs
bHkgcmV0YWluIHRoaXMgdHJlZSBkdXJpbmcgZXhlY3V0aW5nIHRoaXMgYXBwbGljYXRpb24uIFRo
ZSBzYW1lIHRoaW5nIGNhbiBoYXBwZW4gaW4KKyAgICAgICAgd2ViIGFwcGxpY2F0aW9ucyB3aGlj
aCBkb2VzIG5vdCBoYXZlIG5hdmlnYXRpb24gYW5kIGtlZXBzIGFsaXZlIGZvciBhIGxvbmcgdGlt
ZS4gT25jZSB3ZSBoaXQgQ29kZUNhY2hlIGxpbWl0IGJ5IHBlcmlvZGljYWxseSBleGVjdXRpbmcg
YSBuZXcgc2NyaXB0LCB3ZSB3aWxsCisgICAgICAgIGhpdCB0aGUgdXBwZXJtb3N0IG9mIG1lbW9y
eSBmb290cHJpbnQuIEJ1dCB1bnRpbCB0aGF0LCB3ZSBpbmNyZWFzZSBvdXIgbWVtb3J5IGZvb3Rw
cmludC4KKworICAgICAgICBIb3dldmVyLCBkZXN0cm95aW5nIHRoZXNlIFVubGlua2VkQ29kZUJs
b2NrcyBhbmQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVzIGNhdXNlcyBhIHRyaWNreSBwcm9i
bGVtLiBJbiB0aGUgYnJvd3NlciBlbnZpcm9ubWVudCwgbmF2aWdhdGlvbiBjYW4gaGFwcGVuIGF0
IGFueQorICAgICAgICB0aW1lLiBTbyBldmVuIGlmIHRoZSBnaXZlbiBVbmxpbmtlZENvZGVCbG9j
ayBzZWVtcyB1bnVzZWQgaW4gdGhlIGN1cnJlbnQgcGFnZSwgaXQgY2FuIGJlIHVzZWQgd2hlbiBu
YXZpZ2F0aW5nIHRvIGEgbmV3IHBhZ2Ugd2hpY2ggaXMgdW5kZXIgdGhlIHNhbWUgZG9tYWluLgor
ICAgICAgICBPbmUgZXhhbXBsZSBpcyBpbml0aWFsaXppbmcgZnVuY3Rpb24gaW4gYSBzY3JpcHQu
IEl0IGlzIG9ubHkgZXhlY3V0ZWQgb25jZSBwZXIgcGFnZS4gU28gb25jZSBpdCBpcyBleGVjdXRl
ZCwgaXQgc2VlbXMgdGhhdCB0aGlzIFVubGlua2VkQ29kZUJsb2NrIGlzIHVudXNlZC4KKyAgICAg
ICAgQnV0IHRoaXMgd2lsbCBiZSB1c2VkIHdoZW4gd2UgbmF2aWdhdGUgdG8gYSBuZXcgcGFnZS4g
UHJ1bmluZyBjb2RlIGJsb2NrcyBiYXNlZCBvbiB1c2FnZSBjb3VsZCBjYXVzZSBwZXJmb3JtYW5j
ZSByZWdyZXNzaW9uLgorCisgICAgICAgIEJ1dCBpZiBvdXIgVk0gaXMgbWluaSBWTSBtb2RlLCB0
aGUgc3RvcnkgaXMgZGlmZmVyZW50LiBJbiBtaW5pIFZNIG1vZGUsIHdlIGZvY3VzIG9uIG1lbW9y
eSBmb290cHJpbnQgcmF0aGVyIHRoYW4gcGVyZm9ybWFuY2UgZS5nLiBkYWVtb25zLiBUaGUgZGFl
bW9uIG5ldmVyCisgICAgICAgIHJldXNlIHRoZXNlIENvZGVDYWNoZSBzaW5jZSB3ZSBkbyBub3Qg
aGF2ZSB0aGUgbmF2aWdhdGlvbi4KKworICAgICAgICBUaGlzIHBhdGNoIGxvZ2ljYWxseSBtYWtl
cyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSAtPiBVbmxpbmtlZENvZGVCbG9jayByZWZlcmVu
Y2Ugd2VhayB3aGVuIFZNIGlzIG1pbmkgbW9kZS4gSWYgVW5saW5rZWRDb2RlQmxvY2sgaXMgdXNl
ZCBpbiBwcmV2aW91cyBHQworICAgICAgICBjeWNsZSwgd2UgcmV0YWluIGl0LiBCdXQgaWYgaXQg
aXMgbm90IHVzZWQsIGFuZCBpZiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBpcyBvbmx5IHRo
ZSBjZWxsIGtlZXBpbmcgVW5saW5rZWRDb2RlQmxvY2sgYWxpdmUsIHdlIGRlc3Ryb3kgaXQuIEl0
IGlzIGEKKyAgICAgICAgaGV1cmlzdGljLiBJbiBhIHN1cGVyIHBhdGhvbG9naWNhbCBjYXNlLCBp
dCBjb3VsZCBpbmNyZWFzZSBtZW1vcnkgZm9vdHByaW50LiBDb25zaWRlciB0aGUgZm9sbG93aW5n
IGV4YW1wbGUuCisKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKEExKSAt
PiBVbmxpbmtlZENvZGVCbG9jayhCMSkgLT4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoQzEp
IC0+IFVubGlua2VkQ29kZUJsb2NrKEQxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvZGVCbG9jayhFMSkKKworICAgICAgICBXZSBjb3VsZCBkZWxldGUg
QTEsIEIxLCBhbmQgQzEgd2hpbGUga2VlcGluZyBEMS4gQnV0IGlmIHdlIGV2ZW50dWFsbHkgcmUt
ZXhlY3V0ZSB0aGUgc2FtZSBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gQTEsIEIxLCBDMSwgdGhleSB3
aWxsIGJlIG5ld2x5IGNyZWF0ZWQsIGFuZAorICAgICAgICB3ZSB3aWxsIGNyZWF0ZSBkdXBsaWNh
dGUgVW5saW5rZWRDb2RlQmxvY2sgYW5kIGluc3RydWN0aW9ucyBzdHJlYW0gZm9yIEQxLgorCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmxpbmtlZENv
ZGVCbG9jayhEMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDb2RlQmxvY2soRTEpCisKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KEEyKSAtPiBVbmxpbmtlZENvZGVCbG9jayhCMikgLT4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUoQzIpIC0+IFVubGlua2VkQ29kZUJsb2NrKEQyKQorCisgICAgICAgIEJ1dCB0aGlzIGRvZXMg
bm90IGhhcHBlbiBpbiBwcmFjdGljZSBhbmQgZXZlbiBpdCBoYXBwZW5zLCB3ZSBldmVudHVhbGx5
IGRpc2NhcmQgRDEgYW5kIEQyIHNpbmNlIENvZGVCbG9jayBFMSB3aWxsIGJlIGpldHRpc29uZWQg
YW55d2F5LiBTbyBpbiBwcmFjdGljZSwgd2UgZG8KKyAgICAgICAgbm90IHNlZSBtZW1vcnkgZm9v
dHByaW50IGluY3JlYXNlLiBXZSB0ZXN0ZWQgaXQgaW4gR21haWwgYW5kIHRoZSB0YXJnZXQgYXBw
bGljYXRpb24sIGJ1dCBib3RoIHNhaWQgbWVtb3J5IGZvb3RwcmludCByZWR1Y3Rpb24gKDMwIE1C
IC8gNDAwIE1CIGFuZCAxIE1CIC82IE1CKS4KKyAgICAgICAgV2hpbGUgdGhpcyBhZmZlY3RzIG9u
IHBlcmZvcm1hbmNlIG11Y2ggb24gdGVzdHMgd2hpY2ggaGFzIG5hdmlnYXRpb24gKDEtMyAlIHJl
Z3Jlc3Npb24gaW4gU3BlZWRvbWV0ZXIyLCBub3RlIHRoYXQgSmV0U3RyZWFtMiBkb2VzIG5vdCBz
aG93IHJlZ3Jlc3Npb24pLCB3ZSBkbworICAgICAgICBub3QgYXBwbHkgdGhpcyB0byBub24gbWlu
aSBtb2RlIFZNIHVudGlsIHdlIGNvbWUgdXAgd2l0aCBhIGdvb2Qgc3RyYXRlZ3kgdG8gZmFzdGVu
IHBlcmZvcm1hbmNlIG9mIHJlLWdlbmVyYXRpb24uIFBlcnNvbmFsbHkgSSB0aGluayBmbHVzaGlu
ZyBkZXN0cm95ZWQKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sgdG8gdGhlIGRpc2sgaXMgcHJv
bWlzaW5nLgorCisgICAgICAgIElmIFVubGlua2VkQ29kZUJsb2NrIGlzIGdlbmVyYXRlZCBmcm9t
IGJ5dGVjb2RlIGNhY2hlLCB3ZSBkbyBub3QgbWFrZSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSAtPiBVbmxpbmtlZENvZGVCbG9jayBsaW5rIHdlYWsgYmVjYXVzZSB0aGUgZGVjb2RlciBvZiB0
aGUgYnl0ZWNvZGUKKyAgICAgICAgY2FjaGUgYXNzdW1lcyB0aGF0IGdlbmVyYXRlZCBKU0NlbGxz
IHdvbid0IGJlIGRlc3Ryb3llZCB3aGlsZSB0aGUgcGFyZW50IGNlbGxzIG9mIHRoYXQgY2VsbCBh
cmUgbGl2ZS4gVGhpcyBpcyB0cnVlIGluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBhbmQg
dGhpcyBhc3N1bXB0aW9uCisgICAgICAgIHdpbGwgYmUgYnJva2VuIHdpdGggdGhpcyBwYXRjaC4g
U28sIGZvciBub3csIHdlIGRvIG5vdCBtYWtlIHRoaXMgbGluayB3ZWFrLiBDdXJyZW50bHksIG91
ciB0YXJnZXQgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGJ5dGVjb2RlIGNhY2hlIHNvIGl0IGlz
IE9LLgorCisgICAgICAgIFNpbmNlIHdlIGRvIG5vdCBoYXZlIGFuIGF1dG9tYXRlZCBzY3JpcHQg
cmlnaHQgbm93IHNvIGl0IGlzIGEgYml0IGRpZmZpY3VsdCB0byBtZWFzdXJlIG1lbW9yeSBmb290
cHJpbnQgcHJlY2lzZWx5LiBCdXQgbWFudWFsIHRlc3Rpbmcgc2hvd3MgdGhhdCB0cGF0Y2ggaW1w
cm92ZXMgbWVtb3J5CisgICAgICAgIGZvb3RwcmludCBvZiBvdXIgdGFyZ2V0IGFwcGxpY2F0aW9u
IGZyb20gYWJvdXQgNiBNQiB0byBhYm91dCA1IE1CLgorCisgICAgICAgICogYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5s
aW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6
CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjp1c2VkSW5QcmV2aW91c0N5Y2xlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnNldFVzZWRJblByZXZpb3Vz
Q3ljbGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNw
cDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6ZGVjb2RlQ2FjaGVkQ29kZUJsb2Nrcyk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBo
ZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxG
aW5hbGl6ZXJzKToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KToKKwogMjAxOS0wNi0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHVwZGF0ZSBleGNlcHRpb24gc2NvcGUgZm9yIHB1dEJ5SW5kZXhC
ZXlvbmRWZWN0b3JMZW5ndGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGY5YzNiYTlkNzE2NDdkNDIzZGIxOGExNDQx
OTgwNGQzNGYzMGY0NDEuLjQzN2IzYTgyMzI1MmE0MjdjZjNhYjlhMWVjYTJlYzk4ZDRlZDg0Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcApAQCAtNzEsNiArNzEsNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRD
b2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQogICAg
ICwgbV9ldmFsQ29udGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZXZhbENvbnRl
eHRUeXBlKCkpKQogICAgICwgbV9jb2RlVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5
cGUpKQogICAgICwgbV9kaWRPcHRpbWl6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWl4ZWRUcmlT
dGF0ZSkpCisgICAgLCBtX3VzZWRJblByZXZpb3VzQ3ljbGUoZmFsc2UpCiAgICAgLCBtX3BhcnNl
TW9kZShpbmZvLnBhcnNlTW9kZSgpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdl
bmVyYXRpb25Nb2RlKQogICAgICwgbV9tZXRhZGF0YShVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmNy
ZWF0ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaAppbmRleCAyYTM1MGExZjExY2YyMTMxZjcyYzJiNGJkODA5MDE4ZmU3MTJlZmYy
Li42MWE3Njc0NDAzM2YzNWFhOWM2YzgxMzYzMDg2MDU0NjYxNTQ5YjhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMzcw
LDYgKzM3MCwxMiBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
ICAgICAgICByZXR1cm4gbV9tZXRhZGF0YS0+c2l6ZUluQnl0ZXMoKTsKICAgICB9CiAKKyAgICBi
b29sIHVzZWRJblByZXZpb3VzQ3ljbGUoKSBjb25zdCB7IHJldHVybiBtX3VzZWRJblByZXZpb3Vz
Q3ljbGU7IH0KKworICAgIHZvaWQgc2V0VXNlZEluUHJldmlvdXNDeWNsZShib29sIHVzZWQpCisg
ICAgeworICAgICAgICBtX3VzZWRJblByZXZpb3VzQ3ljbGUgPSB1c2VkOworICAgIH0KIAogcHJv
dGVjdGVkOgogICAgIFVubGlua2VkQ29kZUJsb2NrKFZNKiwgU3RydWN0dXJlKiwgQ29kZVR5cGUs
IGNvbnN0IEV4ZWN1dGFibGVJbmZvJiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4pOwpA
QCAtNDI0LDYgKzQzMCw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgdW5zaWduZWQgbV9ldmFsQ29udGV4dFR5cGUgOiAyOwogICAgIHVuc2lnbmVkIG1f
Y29kZVR5cGUgOiAyOwogICAgIHVuc2lnbmVkIG1fZGlkT3B0aW1pemUgOiAyOworICAgIHVuc2ln
bmVkIG1fdXNlZEluUHJldmlvdXNDeWNsZSA6IDE7CiBwdWJsaWM6CiAgICAgQ29uY3VycmVudEpT
TG9jayBtX2xvY2s7CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTRh
MDY5YzVlMDc2MDhkMzA5MTgyMjkzNjU2ZWIyMTg3ZmQ5N2ZkNi4uMDMxMmQ1OWVjMjE0YWI4NDY5
YWI2OWFhMmY4NDYwYjQ1OGY2NGY2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0x
MDcsNiArMTA3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fY29uc3RydWN0
b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCiAg
ICAgLCBtX2Z1bmN0aW9uTW9kZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+ZnVuY3Rpb25N
b2RlKCkpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGRlcml2ZWRDb250ZXh0VHlwZSkpCisgICAgLCBtX2lzR2VuZXJhdGVkRnJvbUNhY2hlKGZhbHNl
KQogICAgICwgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwoKQogICAgICwgbV91bmxpbmtlZENv
ZGVCbG9ja0ZvckNvbnN0cnVjdCgpCiAgICAgLCBtX25hbWUobm9kZS0+aWRlbnQoKSkKQEAgLTE0
Miw3ICsxNDMsMjEgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG8KICAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwot
ICAgIGlmICghdGhpc09iamVjdC0+bV9pc0NhY2hlZCkgeworCisgICAgLy8gQ3VycmVudGx5LCBi
eXRlY29kZSBjYWNoZSBhc3N1bWVzIHRoYXQgdGhlIHRyZWUgb2YgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUgYW5kIFVubGlua2VkQ29kZUJsb2NrIHdpbGwgbm90IGJlIGRlc3Ryb3llZCB3aGls
ZSB0aGUgcGFyZW50IGlzIGxpdmUuCisgICAgLy8gQnl0ZWNvZGUgY2FjaGUgdXNlcyB0aGlzIGFz
dW1wdGlvbiB0byBhdm9pZCBkdXBsaWNhdGUgbWF0ZXJpYWxpemF0aW9uIGJ5IGJvb2trZWVwaW5n
IHRoZSBoZWFwIGNlbGxzIGluIHRoZSBvZmZzdGUtdG8tcG9pbnRlciBtYXAuCisgICAgaWYgKFZN
Ojppc0luTWluaU1vZGUoKSAmJiAhdGhpc09iamVjdC0+bV9pc0dlbmVyYXRlZEZyb21DYWNoZSkg
eworICAgICAgICBhdXRvIG1hcmtJZlByb2ZpdGFibGUgPSBbJl0gKFdyaXRlQmFycmllcjxVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiYgdW5saW5rZWRDb2RlQmxvY2spIHsKKyAgICAgICAgICAg
IGlmICghdW5saW5rZWRDb2RlQmxvY2spCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5kaWRPcHRpbWl6ZSgpID09IFRydWVUcmlTdGF0
ZSkKKyAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCh1bmxpbmtlZENvZGVCbG9jayk7Cisg
ICAgICAgICAgICBlbHNlIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlZEluUHJldmlvdXNDeWNs
ZSgpKQorICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHVubGlua2VkQ29kZUJsb2NrKTsK
KyAgICAgICAgfTsKKyAgICAgICAgbWFya0lmUHJvZml0YWJsZSh0aGlzT2JqZWN0LT5tX3VubGlu
a2VkQ29kZUJsb2NrRm9yQ2FsbCk7CisgICAgICAgIG1hcmtJZlByb2ZpdGFibGUodGhpc09iamVj
dC0+bV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdCk7CisgICAgfSBlbHNlIGlmICghdGhp
c09iamVjdC0+bV9pc0NhY2hlZCkgewogICAgICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbCk7CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3QpOwogICAgIH0KQEAgLTE5
Nyw1NiArMjEyLDQ5IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9
CiAKLVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
Ojp1bmxpbmtlZENvZGVCbG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0
aW9uS2luZCkKLXsKLSAgICBzd2l0Y2ggKHNwZWNpYWxpemF0aW9uS2luZCkgewotICAgIGNhc2Ug
Q29kZUZvckNhbGw6Ci0gICAgICAgIHJldHVybiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbC5n
ZXQoKTsKLSAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6Ci0gICAgICAgIHJldHVybiBtX3VubGlu
a2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0LmdldCgpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKAog
ICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCiAgICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9k
ZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUpCiB7Ci0gICAgaWYgKG1faXNDYWNoZWQpCi0gICAgICAgIGRlY29kZUNhY2hl
ZENvZGVCbG9ja3MoKTsKLSAgICBzd2l0Y2ggKHNwZWNpYWxpemF0aW9uS2luZCkgewotICAgIGNh
c2UgQ29kZUZvckNhbGw6Ci0gICAgICAgIGlmIChVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbC5nZXQoKSkKLSAgICAgICAgICAg
IHJldHVybiBjb2RlQmxvY2s7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29kZUZvckNvbnN0
cnVjdDoKLSAgICAgICAgaWYgKFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9
IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCkpCi0gICAgICAgICAgICByZXR1
cm4gY29kZUJsb2NrOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2so
Ci0gICAgICAgIHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwgY29kZUdlbmVy
YXRpb25Nb2RlLCAKLSAgICAgICAgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRp
bkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgCi0gICAgICAgIGVycm9yLCBwYXJz
ZU1vZGUpOwotICAgIAotICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgc3dpdGNoIChzcGVjaWFsaXphdGlvbktpbmQpIHsKLSAgICBjYXNlIENv
ZGVGb3JDYWxsOgotICAgICAgICBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbC5zZXQodm0sIHRo
aXMsIHJlc3VsdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoK
LSAgICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdC5zZXQodm0sIHRoaXMsIHJl
c3VsdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZVNwYWNlLnNldC5hZGQodGhpcyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IChbJl0gKCkgLT4gVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogeworICAgICAgICBpZiAobV9pc0NhY2hlZCkKKyAgICAg
ICAgICAgIGRlY29kZUNhY2hlZENvZGVCbG9ja3Modm0pOworICAgICAgICBzd2l0Y2ggKHNwZWNp
YWxpemF0aW9uS2luZCkgeworICAgICAgICBjYXNlIENvZGVGb3JDYWxsOgorICAgICAgICAgICAg
aWYgKFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fdW5saW5rZWRDb2Rl
QmxvY2tGb3JDYWxsLmdldCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBjb2RlQmxvY2s7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgorICAgICAg
ICAgICAgaWYgKFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fdW5saW5r
ZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNv
ZGVCbG9jazsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKAorICAgICAgICAgICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5k
LCBjb2RlR2VuZXJhdGlvbk1vZGUsIAorICAgICAgICAgICAgaXNCdWlsdGluRnVuY3Rpb24oKSA/
IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgCisgICAg
ICAgICAgICBlcnJvciwgcGFyc2VNb2RlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChlcnJvci5p
c1ZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBzd2l0Y2gg
KHNwZWNpYWxpemF0aW9uS2luZCkgeworICAgICAgICBjYXNlIENvZGVGb3JDYWxsOgorICAgICAg
ICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwuc2V0KHZtLCB0aGlzLCByZXN1bHQpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKKyAgICAg
ICAgICAgIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3Quc2V0KHZtLCB0aGlzLCByZXN1
bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgdm0udW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQuYWRkKHRoaXMpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0pKCk7CisgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrKQorICAgICAgICB1bmxp
bmtlZENvZGVCbG9jay0+c2V0VXNlZEluUHJldmlvdXNDeWNsZSh0cnVlKTsKKyAgICByZXR1cm4g
dW5saW5rZWRDb2RlQmxvY2s7CiB9CiAKLXZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmRlY29kZUNhY2hlZENvZGVCbG9ja3MoKQordm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6ZGVjb2RlQ2FjaGVkQ29kZUJsb2NrcyhWTSYgdm0pCiB7CiAgICAgQVNTRVJUKG1faXNDYWNo
ZWQpOwogICAgIEFTU0VSVChtX2RlY29kZXIpOwpAQCAtMjU2LDcgKzI2NCw3IEBAIHZvaWQgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmRlY29kZUNhY2hlZENvZGVCbG9ja3MoKQogICAgIGlu
dDMyX3QgY2FjaGVkQ29kZUJsb2NrRm9yQ2FsbE9mZnNldCA9IG1fY2FjaGVkQ29kZUJsb2NrRm9y
Q2FsbE9mZnNldDsKICAgICBpbnQzMl90IGNhY2hlZENvZGVCbG9ja0ZvckNvbnN0cnVjdE9mZnNl
dCA9IG1fY2FjaGVkQ29kZUJsb2NrRm9yQ29uc3RydWN0T2Zmc2V0OwogCi0gICAgRGVmZXJHQyBk
ZWZlckdDKGRlY29kZXItPnZtKCkuaGVhcCk7CisgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXAp
OwogCiAgICAgLy8gTm8gbmVlZCB0byBjbGVhciBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbCBo
ZXJlLCBzaW5jZSB3ZSBtb3ZlZCB0aGUgZGVjb2RlciBvdXQgb2YgdGhlIHNhbWUgc2xvdAogICAg
IGlmIChjYWNoZWRDb2RlQmxvY2tGb3JDYWxsT2Zmc2V0KQpAQCAtMjY4LDcgKzI3Niw3IEBAIHZv
aWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmRlY29kZUNhY2hlZENvZGVCbG9ja3MoKQog
CiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICBtX2lzQ2FjaGVkID0gZmFsc2U7Ci0g
ICAgZGVjb2Rlci0+dm0oKS5oZWFwLndyaXRlQmFycmllcih0aGlzKTsKKyAgICB2bS5oZWFwLndy
aXRlQmFycmllcih0aGlzKTsKIH0KIAogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVE
YXRhJiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KCkKQEAg
LTI4NCw0ICsyOTIsMjcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6c2V0SW52
YWxpZFR5cGVQcm9maWxpbmdPZmZzZXRzKCkKICAgICBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CiB9CiAKK3ZvaWQgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKK3sK
KyAgICBpZiAoVk06OmlzSW5NaW5pTW9kZSgpICYmICFtX2lzR2VuZXJhdGVkRnJvbUNhY2hlKSB7
CisgICAgICAgIGJvb2wgaXNDbGVhcmVkID0gZmFsc2U7CisgICAgICAgIGJvb2wgaXNTdGlsbFZh
bGlkID0gZmFsc2U7CisgICAgICAgIGF1dG8gY2xlYXJJZkRlYWQgPSBbJl0gKFdyaXRlQmFycmll
cjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiYgdW5saW5rZWRDb2RlQmxvY2spIHsKKyAgICAg
ICAgICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHVubGlua2VkQ29kZUJsb2NrLmdldCgp
KSkgeworICAgICAgICAgICAgICAgIHVubGlua2VkQ29kZUJsb2NrLmNsZWFyKCk7CisgICAgICAg
ICAgICAgICAgaXNDbGVhcmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgdW5saW5rZWRDb2RlQmxvY2stPnNldFVzZWRJblByZXZpb3VzQ3ljbGUoZmFsc2Up
OworICAgICAgICAgICAgICAgIGlzU3RpbGxWYWxpZCA9IHRydWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisgICAgICAgIGNsZWFySWZEZWFkKG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxs
KTsKKyAgICAgICAgY2xlYXJJZkRlYWQobV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdCk7
CisgICAgICAgIGlmIChpc0NsZWFyZWQgJiYgIWlzU3RpbGxWYWxpZCkKKyAgICAgICAgICAgIHZt
LnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LnJlbW92ZSh0aGlzKTsKKyAgICB9
Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCAwYzdm
ODljZDRlYjAyNGZjZjgwZDc4ODM2YzNmNDNjMGE3Y2QyM2MzLi5iZWQ5NWQzMDllN2YxNmRjZDY5
NzkyZmZlZDQ0YTBkMWUyZGM4ZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMTE0LDgg
KzExNCw2IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgdHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldDsgfQogICAgIHZvaWQgc2V0SW52YWxpZFR5
cGVQcm9maWxpbmdPZmZzZXRzKCk7CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1
bmxpbmtlZENvZGVCbG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKLQogICAgIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICBWTSYs
IGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBPcHRpb25TZXQ8Q29k
ZUdlbmVyYXRpb25Nb2RlPiwKICAgICAgICAgUGFyc2VyRXJyb3ImLCBTb3VyY2VQYXJzZU1vZGUp
OwpAQCAtMTg5LDYgKzE4Nyw4IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZp
bmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9zb3VyY2VN
YXBwaW5nVVJMRGlyZWN0aXZlID0gc291cmNlTWFwcGluZ1VSTDsKICAgICB9CiAKKyAgICB2b2lk
IGZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJik7CisKICAgICBzdHJ1Y3QgUmFyZURhdGEgewog
ICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKQEAgLTIwMiw3ICsyMDIs
NyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29u
c3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktp
bmQsIENvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFj
dFZhcmlhYmxlTWFwOjpIYW5kbGU+LCAgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNC
dWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKERlY29kZXImLCBjb25zdCBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGUmKTsKIAotICAg
IHZvaWQgZGVjb2RlQ2FjaGVkQ29kZUJsb2NrcygpOworICAgIHZvaWQgZGVjb2RlQ2FjaGVkQ29k
ZUJsb2NrcyhWTSYpOwogCiAgICAgdW5zaWduZWQgbV9maXJzdExpbmVPZmZzZXQgOiAzMTsKICAg
ICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKQEAgLTIyOCw2ICsyMjgsNyBAQCBj
bGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewog
ICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2Z1bmN0
aW9uTW9kZSA6IDI7IC8vIEZ1bmN0aW9uTW9kZQogICAgIHVuc2lnbmVkIG1fZGVyaXZlZENvbnRl
eHRUeXBlOiAyOworICAgIHVuc2lnbmVkIG1faXNHZW5lcmF0ZWRGcm9tQ2FjaGUgOiAxOwogCiAg
ICAgdW5pb24gewogICAgICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
az4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCmluZGV4IDY2NjNiNGYwZDM5ZWJiZWY5ZDI3MGRlMDNkMmI1ZmM1ZTMzZDY0ODIuLmE4NTIw
N2YxMmNmNjAzZjA0Nzg4MWQxNjRjYzY3ODI3NDQ4M2ZmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCkBAIC02MDYsNiArNjA2LDcgQEAgdm9pZCBIZWFwOjpmaW5hbGl6ZVVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzKCkKICAgICAgICAgfSk7CiAgICAgZmluYWxpemVNYXJrZWRVbmNv
bmRpdGlvbmFsRmluYWxpemVyczxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPih2bSgpLT5leGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKTsKICAgICBmaW5hbGl6ZU1hcmtl
ZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN0cnVjdHVyZVJhcmVEYXRhPih2bSgpLT5zdHJ1Y3R1
cmVSYXJlRGF0YVNwYWNlKTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXJzPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bSgpLT51bmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZVNwYWNlLnNldCk7CiAgICAgaWYgKHZtKCktPm1fd2Vha1NldFNwYWNlKQogICAgICAg
ICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha1NldD4oKnZtKCkt
Pm1fd2Vha1NldFNwYWNlKTsKICAgICBpZiAodm0oKS0+bV93ZWFrTWFwU3BhY2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggZDQ2MWU1Njkz
MjlmMWQ5ZThiODZlY2JjMzU3YjlhZTc2OTlkNzE4YS4uYjdiYzJhNzI0YzM2ZWY4MWY4YTcyNDVj
ZDQ3NjM5MTA5MWNiMzEzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmNwcApAQCAtMjAzMiw2ICsyMDMyLDggQEAgQUxXQVlTX0lOTElORSBVbmxpbmtl
ZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soRGVjb2RlciYgZGVjb2RlciwgU3RydWN0dXJl
KgogCiAgICAgLCBtX2RpZE9wdGltaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihNaXhlZFRyaVN0
YXRlKSkKIAorICAgICwgbV91c2VkSW5QcmV2aW91c0N5Y2xlKGZhbHNlKQorCiAgICAgLCBtX2Zl
YXR1cmVzKGNhY2hlZENvZGVCbG9jay5mZWF0dXJlcygpKQogICAgICwgbV9wYXJzZU1vZGUoY2Fj
aGVkQ29kZUJsb2NrLnBhcnNlTW9kZSgpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY2Fj
aGVkQ29kZUJsb2NrLmNvZGVHZW5lcmF0aW9uTW9kZSgpKQpAQCAtMjE1OCw2ICsyMTYwLDcgQEAg
QUxXQVlTX0lOTElORSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUoRGVjb2RlciYgZGUKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKGNhY2hlZEV4
ZWN1dGFibGUuY29uc3RydWN0b3JLaW5kKCkpCiAgICAgLCBtX2Z1bmN0aW9uTW9kZShjYWNoZWRF
eGVjdXRhYmxlLmZ1bmN0aW9uTW9kZSgpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY2Fj
aGVkRXhlY3V0YWJsZS5kZXJpdmVkQ29udGV4dFR5cGUoKSkKKyAgICAsIG1faXNHZW5lcmF0ZWRG
cm9tQ2FjaGUodHJ1ZSkKICAgICAsIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsKCkKICAgICAs
IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371560</attachid>
            <date>2019-06-06 22:18:55 -0700</date>
            <delta_ts>2019-06-06 22:51:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198023-20190606221855.patch</filename>
            <type>text/plain</type>
            <size>23311</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MjFiYWFhYTM5ZThlZDQ1OTQ1ZjJiZTBmNDM5ODY4MWU4NDczZDcwLi4xNzEyYjYwMTA0NWYxYjdi
NGVkNGJlY2M0MGMwZjc5MDI4NzlhMGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NCBAQAorMjAxOS0wNi0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVubGlua2VkQ29kZUJsb2NrIHNob3VsZCBiZSBldmVudHVhbGx5
IGpldHRpc29uZWQgaW4gVk0gbWluaSBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgwMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXaGlsZSBDb2RlQmxvY2sgaXMgcGVyaW9kaWNhbGx5IGpldHRp
c29uZWQsIFVubGlua2VkQ29kZUJsb2NrIGFuZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBj
YW4gYmUgcmV0YWluZWQgYWxtb3N0IGZvcmV2ZXIgaW4gY2VydGFpbiB0eXBlIG9mIGFwcGxpY2F0
aW9ucy4KKyAgICAgICAgV2hlbiB3ZSBleGVjdXRlIGEgcHJvZ3JhbSwgd2hpY2ggaGFzIFVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jayByZXRhaW5lZCBpbiBDb2RlQ2FjaGUuIEFuZCBVbmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2sgaG9sZHMgYXJyYXkgb2YgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
CisgICAgICAgIEFuZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZXMgaG9sZCBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrcyBvbmNlIGl0IGlzIGdlbmVyYXRlZC4gU28gZXZlbnR1YWxseSwgdGhp
cyB0cmVlIGdldHMgbGFyZ2VyIGFuZCBsYXJnZXIgdW50aWwgd2UgcHVyZ2UKKyAgICAgICAgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrIGZyb20gQ29kZUNhY2hlLiBUaGlzIGlzIE9LIGluIHRoZSBi
cm93c2VyIGNhc2UuIFdlIG5hdmlnYXRlIHRvIHZhcmlvdXMgb3RoZXIgcGFnZXMsIGFuZCBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2tzIHNob3VsZCBldmVudHVhbGx5CisgICAgICAgIGJlIHBydW5l
ZCBmcm9tIENvZGVDYWNoZSB3aXRoIHRoZSBuZXcgb25lcy4gU28gdGhpcyB0cmVlIHdvbid0IGJl
IHJldGFpbmVkIGZvcmV2ZXIuIEJ1dCB0aGUgYmVoYXZpb3IgaXMgZGlmZmVyZW50IGluIHRoZSBv
dGhlciBhcHBsaWNhdGlvbnMgdGhhdCBkbyBub3QgaGF2ZQorICAgICAgICBuYXZpZ2F0aW9ucy4g
SWYgdGhleSBvbmx5IGhhdmUgb25lIHByb2dyYW0gd2hpY2ggaG9sZHMgYWxsLCB3ZSBiYXNpY2Fs
bHkgcmV0YWluIHRoaXMgdHJlZSBkdXJpbmcgZXhlY3V0aW5nIHRoaXMgYXBwbGljYXRpb24uIFRo
ZSBzYW1lIHRoaW5nIGNhbiBoYXBwZW4gaW4KKyAgICAgICAgd2ViIGFwcGxpY2F0aW9ucyB3aGlj
aCBkb2VzIG5vdCBoYXZlIG5hdmlnYXRpb24gYW5kIGtlZXBzIGFsaXZlIGZvciBhIGxvbmcgdGlt
ZS4gT25jZSB3ZSBoaXQgQ29kZUNhY2hlIGxpbWl0IGJ5IHBlcmlvZGljYWxseSBleGVjdXRpbmcg
YSBuZXcgc2NyaXB0LCB3ZSB3aWxsCisgICAgICAgIGhpdCB0aGUgdXBwZXJtb3N0IG9mIG1lbW9y
eSBmb290cHJpbnQuIEJ1dCB1bnRpbCB0aGF0LCB3ZSBpbmNyZWFzZSBvdXIgbWVtb3J5IGZvb3Rw
cmludC4KKworICAgICAgICBIb3dldmVyLCBkZXN0cm95aW5nIHRoZXNlIFVubGlua2VkQ29kZUJs
b2NrcyBhbmQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVzIGNhdXNlcyBhIHRyaWNreSBwcm9i
bGVtLiBJbiB0aGUgYnJvd3NlciBlbnZpcm9ubWVudCwgbmF2aWdhdGlvbiBjYW4gaGFwcGVuIGF0
IGFueQorICAgICAgICB0aW1lLiBTbyBldmVuIGlmIHRoZSBnaXZlbiBVbmxpbmtlZENvZGVCbG9j
ayBzZWVtcyB1bnVzZWQgaW4gdGhlIGN1cnJlbnQgcGFnZSwgaXQgY2FuIGJlIHVzZWQgd2hlbiBu
YXZpZ2F0aW5nIHRvIGEgbmV3IHBhZ2Ugd2hpY2ggaXMgdW5kZXIgdGhlIHNhbWUgZG9tYWluLgor
ICAgICAgICBPbmUgZXhhbXBsZSBpcyBpbml0aWFsaXppbmcgZnVuY3Rpb24gaW4gYSBzY3JpcHQu
IEl0IGlzIG9ubHkgZXhlY3V0ZWQgb25jZSBwZXIgcGFnZS4gU28gb25jZSBpdCBpcyBleGVjdXRl
ZCwgaXQgc2VlbXMgdGhhdCB0aGlzIFVubGlua2VkQ29kZUJsb2NrIGlzIHVudXNlZC4KKyAgICAg
ICAgQnV0IHRoaXMgd2lsbCBiZSB1c2VkIHdoZW4gd2UgbmF2aWdhdGUgdG8gYSBuZXcgcGFnZS4g
UHJ1bmluZyBjb2RlIGJsb2NrcyBiYXNlZCBvbiB1c2FnZSBjb3VsZCBjYXVzZSBwZXJmb3JtYW5j
ZSByZWdyZXNzaW9uLgorCisgICAgICAgIEJ1dCBpZiBvdXIgVk0gaXMgbWluaSBWTSBtb2RlLCB0
aGUgc3RvcnkgaXMgZGlmZmVyZW50LiBJbiBtaW5pIFZNIG1vZGUsIHdlIGZvY3VzIG9uIG1lbW9y
eSBmb290cHJpbnQgcmF0aGVyIHRoYW4gcGVyZm9ybWFuY2UgZS5nLiBkYWVtb25zLiBUaGUgZGFl
bW9uIG5ldmVyCisgICAgICAgIHJldXNlIHRoZXNlIENvZGVDYWNoZSBzaW5jZSB3ZSBkbyBub3Qg
aGF2ZSB0aGUgbmF2aWdhdGlvbi4KKworICAgICAgICBUaGlzIHBhdGNoIGxvZ2ljYWxseSBtYWtl
cyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSAtPiBVbmxpbmtlZENvZGVCbG9jayByZWZlcmVu
Y2Ugd2VhayB3aGVuIFZNIGlzIG1pbmkgbW9kZS4gSWYgVW5saW5rZWRDb2RlQmxvY2sgaXMgdXNl
ZCBpbiBwcmV2aW91cyBHQworICAgICAgICBjeWNsZSwgd2UgcmV0YWluIGl0LiBCdXQgaWYgaXQg
aXMgbm90IHVzZWQsIGFuZCBpZiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBpcyBvbmx5IHRo
ZSBjZWxsIGtlZXBpbmcgVW5saW5rZWRDb2RlQmxvY2sgYWxpdmUsIHdlIGRlc3Ryb3kgaXQuIEl0
IGlzIGEKKyAgICAgICAgaGV1cmlzdGljLiBJbiBhIHN1cGVyIHBhdGhvbG9naWNhbCBjYXNlLCBp
dCBjb3VsZCBpbmNyZWFzZSBtZW1vcnkgZm9vdHByaW50LiBDb25zaWRlciB0aGUgZm9sbG93aW5n
IGV4YW1wbGUuCisKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKEExKSAt
PiBVbmxpbmtlZENvZGVCbG9jayhCMSkgLT4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoQzEp
IC0+IFVubGlua2VkQ29kZUJsb2NrKEQxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvZGVCbG9jayhFMSkKKworICAgICAgICBXZSBjb3VsZCBkZWxldGUg
QTEsIEIxLCBhbmQgQzEgd2hpbGUga2VlcGluZyBEMS4gQnV0IGlmIHdlIGV2ZW50dWFsbHkgcmUt
ZXhlY3V0ZSB0aGUgc2FtZSBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gQTEsIEIxLCBDMSwgdGhleSB3
aWxsIGJlIG5ld2x5IGNyZWF0ZWQsIGFuZAorICAgICAgICB3ZSB3aWxsIGNyZWF0ZSBkdXBsaWNh
dGUgVW5saW5rZWRDb2RlQmxvY2sgYW5kIGluc3RydWN0aW9ucyBzdHJlYW0gZm9yIEQxLgorCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmxpbmtlZENv
ZGVCbG9jayhEMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDb2RlQmxvY2soRTEpCisKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KEEyKSAtPiBVbmxpbmtlZENvZGVCbG9jayhCMikgLT4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUoQzIpIC0+IFVubGlua2VkQ29kZUJsb2NrKEQyKQorCisgICAgICAgIEJ1dCB0aGlzIGRvZXMg
bm90IGhhcHBlbiBpbiBwcmFjdGljZSBhbmQgZXZlbiBpdCBoYXBwZW5zLCB3ZSBldmVudHVhbGx5
IGRpc2NhcmQgRDEgYW5kIEQyIHNpbmNlIENvZGVCbG9jayBFMSB3aWxsIGJlIGpldHRpc29uZWQg
YW55d2F5LiBTbyBpbiBwcmFjdGljZSwgd2UgZG8KKyAgICAgICAgbm90IHNlZSBtZW1vcnkgZm9v
dHByaW50IGluY3JlYXNlLiBXZSB0ZXN0ZWQgaXQgaW4gR21haWwgYW5kIHRoZSB0YXJnZXQgYXBw
bGljYXRpb24sIGJ1dCBib3RoIHNhaWQgbWVtb3J5IGZvb3RwcmludCByZWR1Y3Rpb24gKDMwIE1C
IC8gNDAwIE1CIGFuZCAxIE1CIC82IE1CKS4KKyAgICAgICAgV2hpbGUgdGhpcyBhZmZlY3RzIG9u
IHBlcmZvcm1hbmNlIG11Y2ggb24gdGVzdHMgd2hpY2ggaGFzIG5hdmlnYXRpb24gKDEtMyAlIHJl
Z3Jlc3Npb24gaW4gU3BlZWRvbWV0ZXIyLCBub3RlIHRoYXQgSmV0U3RyZWFtMiBkb2VzIG5vdCBz
aG93IHJlZ3Jlc3Npb24gaW4geDY0LAorICAgICAgICB3aGlsZSBpdCBpcyBub3QgZW5hYmxpbmcg
bWluaSBtb2RlKSwgd2UgZG8gbm90IGFwcGx5IHRoaXMgdG8gbm9uIG1pbmkgbW9kZSBWTSB1bnRp
bCB3ZSBjb21lIHVwIHdpdGggYSBnb29kIHN0cmF0ZWd5IHRvIGZhc3RlbiBwZXJmb3JtYW5jZSBv
ZiByZS1nZW5lcmF0aW9uLgorICAgICAgICBQZXJzb25hbGx5IEkgdGhpbmsgZmx1c2hpbmcgZGVz
dHJveWVkIFVubGlua2VkQ29kZUJsb2NrIHRvIHRoZSBkaXNrIHNvdW5kcyBwcm9taXNpbmcuCisK
KyAgICAgICAgSWYgVW5saW5rZWRDb2RlQmxvY2sgaXMgZ2VuZXJhdGVkIGZyb20gYnl0ZWNvZGUg
Y2FjaGUsIHdlIGRvIG5vdCBtYWtlIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIC0+IFVubGlu
a2VkQ29kZUJsb2NrIGxpbmsgd2VhayBiZWNhdXNlIHRoZSBkZWNvZGVyIG9mIHRoZSBieXRlY29k
ZQorICAgICAgICBjYWNoZSBhc3N1bWVzIHRoYXQgZ2VuZXJhdGVkIEpTQ2VsbHMgd29uJ3QgYmUg
ZGVzdHJveWVkIHdoaWxlIHRoZSBwYXJlbnQgY2VsbHMgb2YgdGhhdCBjZWxsIGFyZSBsaXZlLiBU
aGlzIGlzIHRydWUgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIGFuZCB0aGlzIGFzc3Vt
cHRpb24KKyAgICAgICAgd2lsbCBiZSBicm9rZW4gd2l0aCB0aGlzIHBhdGNoLiBTbywgZm9yIG5v
dywgd2UgZG8gbm90IG1ha2UgdGhpcyBsaW5rIHdlYWsuIEN1cnJlbnRseSwgb3VyIHRhcmdldCBh
cHBsaWNhdGlvbiBkb2VzIG5vdCB1c2UgYnl0ZWNvZGUgY2FjaGUgc28gaXQgaXMgT0suCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhbHNvIGludHJvZHVjZSBzaW1wbGUgaGV1cmlzdGljIHRvby4gV2Ug
YXJlIGNvdW50aW5nIFVubGlua2VkQ29kZUJsb2NrJ3MgYWdlLiBBbmQgb25jZSB0aGUgYWdlIGJl
Y29tZXMgbWF4aW11bSBzaXplLCB3ZSBtYWtlIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIC0+
CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrIGxpbmsgd2Vhay4gV2UgYWxzbyB1c2UgZXhlY3V0
aW9uIGNvdW50ZXIgaW5mb3JtYXRpb24gdG8gcmVzZXQgdGhpcyBhZ2U6IENvZGVCbG9jayB3aWxs
IHJlc2V0IHVuZGVseWluZyBVbmxpbmtlZENvZGVCbG9jaydzIGFnZSBpZiBpdCBoYXMgc29tZQor
ICAgICAgICBleGVjdXRpb24uIFdoaWxlIHRoaXMgaGV1cmlzdGljIGlzIHF1aXRlIHNpbXBsZSwg
aXQgaGFzIHNvbWUgZWZmZWN0IGluIHByYWN0aWNlLiBCYXNpY2FsbHkgd2hhdCBoYXBwZW5zIHdp
dGggdGhpcyBoZXVyaXN0aWMgaXMgdGhhdCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSAtPgor
ICAgICAgICBVbmxpbmtlZENvZGVCbG9jayBsaW5rIHN0cm9uZy4gV2hlbiBHQyBoYXBwZW5zLCB3
ZSBhcmUgZXhlY3V0aW5nIHNvbWUgQ29kZUJsb2Nrcywgd2hpY2ggYmVjb21lIGxpdmUuIEFuZCBT
Y3JpcHRFeGVjdXRhYmxlcyAtPiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZXMgaGVsZAorICAg
ICAgICBieSB0aGlzIENvZGVCbG9jayBiZWNvbWUgYWxzbyBsaXZlLiBUaGVuIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlcyBjYW4gbWFyayB0aGUgY2hpbGQgVW5saW5rZWRDb2RlQmxvY2tzIGlm
IGl0IGlzIG5vdCBzbyBvbGQuCisgICAgICAgIElmIHNvbWUgb2YgcGFyZW50IFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlIGJlY29tZXMgZGVhZCwgY2hpbGQgVW5saW5rZWRDb2RlQmxvY2tzIHRl
bmRzIHRvIGJlIGRlYWQgdW5sZXNzIHNvbWUgbGl2ZSBDb2RlQmxvY2sgaG9sZHMgaXQuIEJ1dCBp
dCBpcyBPSyBmb3IgYSBmaXJzdAorICAgICAgICBoZXVyaXN0aWNzIHNpbmNlIHRoaXMgbWVhbnMg
dGhhdCBwYXJlbnQgY29kZSBibG9jayBpcyBub3cgY29uc2lkZXJlZCBvbGQsIHJlYWNoYWJsZSBV
bmxpbmtlZENvZGVCbG9jayB3aWxsIGJlIHVzZWQgd2hlbiB0aGUgcGFyZW50IGlzIGV4ZWN1dGVk
IGFnYWluLiBTbyBkZXN0cm95aW5nCisgICAgICAgIHRoZSB0cmVlIGlzIE9LIGV2ZW4gaWYgdGhl
IHRyZWUgbWF5IGluY2x1ZGUgc29tZSBuZXcgVW5saW5rZWRDb2RlQmxvY2suIFdoaWxlIHdlIGNv
dWxkIG1ha2UgbW9yZSBzb3BoaXN0aWNhdGVkIG1lY2hhbmlzbSB0byBtYW5hZ2UgdGhlc2UgbGlm
ZXRpbWUsIEkgdGhpbmsgdGhpcyBpcyBhCisgICAgICAgIGdvb2Qgc3RhcnRpbmcgcG9pbnQuCisK
KyAgICAgICAgQmFzZWQgb24gbWVhc3VyZW1lbnQsIHdlIHBpY2sgNyBhcyBhIG1heGltdW0gYWdl
LiBJZiB3ZSBwaWNrIDAsIHdlIGNhbiBnZXQgbW9yZSBtZW1vcnkgcmVkdWN0aW9uICgxIC0gMS41
IE1CISksIHdoaWxlIHdlIGVuZHMgdXAgcmVwYXJzaW5nIGNvZGVzIHNvIG1hbnkgdGltZXMuCisg
ICAgICAgIEl0IHNlZW1zIHRoYXQgNyBjYW4gcmVkdWNlIGZhaXIgYW1vdW50IG9mIG1lbW9yeSB3
aGlsZSBkb2luZyBzbWFsbCAjIG9mIHJlcGFyc2luZyBvbiBhdmVyYWdlICh1c3VhbGx5LCAxLCAy
LiBTb21ldGltZXMsIDEwMC4gQnV0IG5vdCAzMDAsIHdoaWNoIGlzIHRoZSBjYXNlIGluIDApLgor
ICAgICAgICBJZiB3ZSB3YW50IHRvIGdldCBtb3JlIG1lbW9yeSByZWR1Y3Rpb24gZm9yIHRoZSBz
YWtlIG9mIHBlcmZvcm1hbmNlLCB3ZSBjb3VsZCBkZWNyZWFzZSB0aGlzIGFnZSBsaW1pdC4KKwor
ICAgICAgICBTaW5jZSB3ZSBkbyBub3QgaGF2ZSBhbiBhdXRvbWF0ZWQgc2NyaXB0IHJpZ2h0IG5v
dyBzbyBpdCBpcyBhIGJpdCBkaWZmaWN1bHQgdG8gbWVhc3VyZSBtZW1vcnkgZm9vdHByaW50IHBy
ZWNpc2VseS4gQnV0IG1hbnVhbCB0ZXN0aW5nIHNob3dzIHRoYXQgdGhpcyBwYXRjaCBpbXByb3Zl
cworICAgICAgICBtZW1vcnkgZm9vdHByaW50IG9mIG91ciB0YXJnZXQgYXBwbGljYXRpb24gZnJv
bSBhYm91dCA2LjUgTUIgdG8gYWJvdXQgNS45IE1CLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9u
YWxseSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFnZSBjb25zdCk6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjpyZXNldEFnZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0Zvcik6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGVDYWNoZWRDb2Rl
QmxvY2tzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFs
aXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6Okhl
YXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAqIHJ1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5r
ZWRDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZVNwZWNp
YWxpemF0aW9uS2luZC5oOgorCiAyMDE5LTA2LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRlIGV4Y2VwdGlvbiBzY29wZSBm
b3IgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBhZGUyYWNlM2QxYTQ2ZDEzMTZhMDQzZDMxMDU4
MjAxMDAxNzcwZDUwLi5iZjc1YWIwYjU2Y2MwZGJlMGM5NjY4YmNkYTA0YmUxZGFjYWEyZDNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTM3
Myw2ICsxMzczLDM1IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShW
TSYgdm0pCiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogCisgICAgYXV0byB1cGRh
dGVBY3Rpdml0eSA9IFsmXSB7CisgICAgICAgIGlmICghVk06OmlzSW5NaW5pTW9kZSgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBKSVRDb2RlKiBqaXRDb2RlID0gbV9qaXRDb2RlLmdl
dCgpOworICAgICAgICBkb3VibGUgY291bnQgPSAwOworICAgICAgICBib29sIGFsd2F5c0FjdGl2
ZSA9IGZhbHNlOworICAgICAgICBzd2l0Y2ggKEpJVENvZGU6OmppdFR5cGVGb3Ioaml0Q29kZSkp
IHsKKyAgICAgICAgY2FzZSBKSVRUeXBlOjpOb25lOgorICAgICAgICBjYXNlIEpJVFR5cGU6Okhv
c3RDYWxsVGh1bms6CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgSklUVHlwZTo6
SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAgICAgICAgIGNvdW50ID0gbV9sbGludEV4ZWN1dGVDb3Vu
dGVyLmNvdW50KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBKSVRUeXBlOjpC
YXNlbGluZUpJVDoKKyAgICAgICAgICAgIGNvdW50ID0gbV9qaXRFeGVjdXRlQ291bnRlci5jb3Vu
dCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSklUVHlwZTo6REZHSklUOgor
ICAgICAgICBjYXNlIEpJVFR5cGU6OkZUTEpJVDoKKyAgICAgICAgICAgIGFsd2F5c0FjdGl2ZSA9
IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoYWx3YXlz
QWN0aXZlIHx8IG1fcHJldmlvdXNDb3VudGVyIDwgY291bnQpIHsKKyAgICAgICAgICAgIC8vIENv
ZGVCbG9jayBpcyBhY3RpdmUgcmlnaHQgbm93LCBzbyByZXNldHRpbmcgVW5saW5rZWRDb2RlQmxv
Y2sncyBhZ2UuCisgICAgICAgICAgICBtX3VubGlua2VkQ29kZS0+cmVzZXRBZ2UoKTsKKyAgICAg
ICAgfQorICAgICAgICBtX3ByZXZpb3VzQ291bnRlciA9IGNvdW50OworICAgIH07CisgICAgdXBk
YXRlQWN0aXZpdHkoKTsKKwogICAgIFZNOjpTcGFjZUFuZFNldDo6c2V0Rm9yKCpzdWJzcGFjZSgp
KS5yZW1vdmUodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAppbmRleCA0ZTYyYmRlYzIyZWU5ZTVlMjg2ZjkxNjU0MDRiMGZjMzJkNzdjMjg5Li40
ZDMyNzllY2M5MmI0ZDI3OWNiYzg4NDlhYjg4NTg4MDhlOTdjNTU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0xMDEwLDYgKzEwMTAsNyBAQCBjbGFz
cyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBSZWZQdHI8TWV0YWRhdGFUYWJsZT4g
bV9tZXRhZGF0YTsKIAogICAgIE1vbm90b25pY1RpbWUgbV9jcmVhdGlvblRpbWU7CisgICAgZG91
YmxlIG1fcHJldmlvdXNDb3VudGVyIHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJhcmVE
YXRhPiBtX3JhcmVEYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGY5YzNiYTlkNzE2NDdkNDIzZGIxOGEx
NDQxOTgwNGQzNGYzMGY0NDEuLjc3NDVhNDFhZDJiM2ExZmFiY2FkNDI0OGMxZTVlNzQ4NjRlZDBk
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcApAQCAtNzEsNiArNzEsNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5r
ZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQog
ICAgICwgbV9ldmFsQ29udGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZXZhbENv
bnRleHRUeXBlKCkpKQogICAgICwgbV9jb2RlVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29k
ZVR5cGUpKQogICAgICwgbV9kaWRPcHRpbWl6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWl4ZWRU
cmlTdGF0ZSkpCisgICAgLCBtX2FnZSgwKQogICAgICwgbV9wYXJzZU1vZGUoaW5mby5wYXJzZU1v
ZGUoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAg
ICAsIG1fbWV0YWRhdGEoVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpjcmVhdGUoKSkKQEAgLTg4LDYg
Kzg5LDcgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOwogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGhpc09iamVjdC0+Y2VsbExv
Y2soKSk7CisgICAgdGhpc09iamVjdC0+bV9hZ2UgPSBzdGQ6Om1pbjx1bnNpZ25lZD4oc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHRoaXNPYmplY3QtPm1fYWdlKSArIDEsIG1heEFnZSk7CiAgICAgZm9y
IChGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3I6Oml0ZXJhdG9yIHB0ciA9IHRoaXNPYmplY3QtPm1f
ZnVuY3Rpb25EZWNscy5iZWdpbigpLCBlbmQgPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRGVjbHMu
ZW5kKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgqcHRyKTsK
ICAgICBmb3IgKEZ1bmN0aW9uRXhwcmVzc2lvblZlY3Rvcjo6aXRlcmF0b3IgcHRyID0gdGhpc09i
amVjdC0+bV9mdW5jdGlvbkV4cHJzLmJlZ2luKCksIGVuZCA9IHRoaXNPYmplY3QtPm1fZnVuY3Rp
b25FeHBycy5lbmQoKTsgcHRyICE9IGVuZDsgKytwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDJhMzUwYTFmMTFjZjIx
MzFmNzJjMmI0YmQ4MDkwMThmZTcxMmVmZjIuLmMxOGE3MGQyYTkyZjllZjg2YjQ0ZDhmODgxODMx
OGFkOWRhMmZiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCkBAIC0zMzksNiArMzM5LDExIEBAIGNsYXNzIFVubGlua2VkQ29k
ZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgVHJpU3RhdGUgZGlkT3B0aW1pemUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxUcmlTdGF0ZT4obV9kaWRPcHRpbWl6ZSk7IH0KICAgICB2
b2lkIHNldERpZE9wdGltaXplKFRyaVN0YXRlIGRpZE9wdGltaXplKSB7IG1fZGlkT3B0aW1pemUg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGlkT3B0aW1pemUpOyB9CiAKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIG1heEFnZSA9IDc7CisKKyAgICB1bnNpZ25lZCBhZ2UoKSBjb25zdCB7
IHJldHVybiBtX2FnZTsgfQorICAgIHZvaWQgcmVzZXRBZ2UoKSB7IG1fYWdlID0gMDsgfQorCiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKICAgICBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMmIGxpdmVuZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC00MjQs
NiArNDI5LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICB1bnNpZ25lZCBtX2V2YWxDb250ZXh0VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9jb2RlVHlw
ZSA6IDI7CiAgICAgdW5zaWduZWQgbV9kaWRPcHRpbWl6ZSA6IDI7CisgICAgdW5zaWduZWQgbV9h
Z2UgOiAzOwogcHVibGljOgogICAgIENvbmN1cnJlbnRKU0xvY2sgbV9sb2NrOwogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDE0YTA2OWM1ZTA3NjA4ZDMwOTE4MjI5MzY1
NmViMjE4N2ZkOTdmZDYuLjEzZmYxYzM3M2U2NGU2NGRkZmNiM2NiZWM5ZGE3MDU0ZjhiMWVkMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMTA3LDYgKzEwNyw3IEBAIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0
cnVjdHVyZSogc3RydWN0CiAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwgbV9mdW5jdGlvbk1vZGUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkKICAgICAsIG1fZGVyaXZl
ZENvbnRleHRUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXJpdmVkQ29udGV4dFR5cGUpKQor
ICAgICwgbV9pc0dlbmVyYXRlZEZyb21DYWNoZShmYWxzZSkKICAgICAsIG1fdW5saW5rZWRDb2Rl
QmxvY2tGb3JDYWxsKCkKICAgICAsIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKQog
ICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCkBAIC0xNDIsNyArMTQzLDI0IEBAIHZvaWQgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvCiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqPihjZWxsKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICBpZiAoIXRoaXNPYmplY3QtPm1f
aXNDYWNoZWQpIHsKKworICAgIC8vIEN1cnJlbnRseSwgYnl0ZWNvZGUgY2FjaGUgYXNzdW1lcyB0
aGF0IHRoZSB0cmVlIG9mIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGFuZCBVbmxpbmtlZENv
ZGVCbG9jayB3aWxsIG5vdCBiZSBkZXN0cm95ZWQgd2hpbGUgdGhlIHBhcmVudCBpcyBsaXZlLgor
ICAgIC8vIEJ5dGVjb2RlIGNhY2hlIHVzZXMgdGhpcyBhc3VtcHRpb24gdG8gYXZvaWQgZHVwbGlj
YXRlIG1hdGVyaWFsaXphdGlvbiBieSBib29ra2VlcGluZyB0aGUgaGVhcCBjZWxscyBpbiB0aGUg
b2Zmc3RlLXRvLXBvaW50ZXIgbWFwLgorICAgIC8vCisgICAgLy8gV2UgYWxzbyBrZWVwIGJ1aWx0
aW4gZnVuY3Rpb25zLiBUaGUgYnVpbHRpbiBmdW5jdGlvbnMgYXJlIGZvdW5kYW1lbnRhbCBsaWJy
YXJ5IGZvciBKYXZhU2NyaXB0LCB3aGljaCBtZWFucyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQgaW4g
cmFuZG9tIHBsYWNlcyBvZgorICAgIC8vIHRoZSBjbGllbnQgc2NyaXB0cy4gSXQgaXMgc2FmZSB0
byBhc3N1bWUgdGhhdCBidWlsdGluIGZ1bmN0aW9ucyBhcmUgdXNlZCByZWxhdGl2ZWx5IGZyZXF1
ZW50bHkgZnJvbSBtYW55IGNhbGwgc2l0ZXMuCisgICAgaWYgKFZNOjppc0luTWluaU1vZGUoKSAm
JiAhdGhpc09iamVjdC0+bV9pc0dlbmVyYXRlZEZyb21DYWNoZSAmJiAhdGhpc09iamVjdC0+aXNC
dWlsdGluRnVuY3Rpb24oKSkgeworICAgICAgICBhdXRvIG1hcmtJZlByb2ZpdGFibGUgPSBbJl0g
KFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiYgdW5saW5rZWRDb2RlQmxv
Y2spIHsKKyAgICAgICAgICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5kaWRPcHRpbWl6
ZSgpID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCh1bmxp
bmtlZENvZGVCbG9jayk7CisgICAgICAgICAgICBlbHNlIGlmICh1bmxpbmtlZENvZGVCbG9jay0+
YWdlKCkgPCBVbmxpbmtlZENvZGVCbG9jazo6bWF4QWdlKQorICAgICAgICAgICAgICAgIHZpc2l0
b3IuYXBwZW5kKHVubGlua2VkQ29kZUJsb2NrKTsKKyAgICAgICAgfTsKKyAgICAgICAgbWFya0lm
UHJvZml0YWJsZSh0aGlzT2JqZWN0LT5tX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbCk7CisgICAg
ICAgIG1hcmtJZlByb2ZpdGFibGUodGhpc09iamVjdC0+bV91bmxpbmtlZENvZGVCbG9ja0ZvckNv
bnN0cnVjdCk7CisgICAgfSBlbHNlIGlmICghdGhpc09iamVjdC0+bV9pc0NhY2hlZCkgewogICAg
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkQ29kZUJsb2NrRm9yQ2Fs
bCk7CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5saW5rZWRDb2RlQmxv
Y2tGb3JDb25zdHJ1Y3QpOwogICAgIH0KQEAgLTE5NywyNCArMjE1LDEyIEBAIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENv
ZGUoCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcihDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCkKLXsKLSAgICBzd2l0Y2ggKHNw
ZWNpYWxpemF0aW9uS2luZCkgewotICAgIGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAgIHJldHVy
biBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbC5nZXQoKTsKLSAgICBjYXNlIENvZGVGb3JDb25z
dHJ1Y3Q6Ci0gICAgICAgIHJldHVybiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0Lmdl
dCgpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0
cjsKLX0KLQogVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCiAg
ICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBQYXJz
ZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgaWYgKG1f
aXNDYWNoZWQpCi0gICAgICAgIGRlY29kZUNhY2hlZENvZGVCbG9ja3MoKTsKKyAgICAgICAgZGVj
b2RlQ2FjaGVkQ29kZUJsb2Nrcyh2bSk7CiAgICAgc3dpdGNoIChzcGVjaWFsaXphdGlvbktpbmQp
IHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgogICAgICAgICBpZiAoVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogY29kZUJsb2NrID0gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwuZ2V0KCkpCkBA
IC0yNDYsNyArMjUyLDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmRlY29kZUNhY2hlZENvZGVC
bG9ja3MoKQordm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVjb2RlQ2FjaGVkQ29k
ZUJsb2NrcyhWTSYgdm0pCiB7CiAgICAgQVNTRVJUKG1faXNDYWNoZWQpOwogICAgIEFTU0VSVCht
X2RlY29kZXIpOwpAQCAtMjU2LDcgKzI2Miw3IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OmRlY29kZUNhY2hlZENvZGVCbG9ja3MoKQogICAgIGludDMyX3QgY2FjaGVkQ29kZUJs
b2NrRm9yQ2FsbE9mZnNldCA9IG1fY2FjaGVkQ29kZUJsb2NrRm9yQ2FsbE9mZnNldDsKICAgICBp
bnQzMl90IGNhY2hlZENvZGVCbG9ja0ZvckNvbnN0cnVjdE9mZnNldCA9IG1fY2FjaGVkQ29kZUJs
b2NrRm9yQ29uc3RydWN0T2Zmc2V0OwogCi0gICAgRGVmZXJHQyBkZWZlckdDKGRlY29kZXItPnZt
KCkuaGVhcCk7CisgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogCiAgICAgLy8gTm8gbmVl
ZCB0byBjbGVhciBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbCBoZXJlLCBzaW5jZSB3ZSBtb3Zl
ZCB0aGUgZGVjb2RlciBvdXQgb2YgdGhlIHNhbWUgc2xvdAogICAgIGlmIChjYWNoZWRDb2RlQmxv
Y2tGb3JDYWxsT2Zmc2V0KQpAQCAtMjY4LDcgKzI3NCw3IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmRlY29kZUNhY2hlZENvZGVCbG9ja3MoKQogCiAgICAgV1RGOjpzdG9yZVN0
b3JlRmVuY2UoKTsKICAgICBtX2lzQ2FjaGVkID0gZmFsc2U7Ci0gICAgZGVjb2Rlci0+dm0oKS5o
ZWFwLndyaXRlQmFycmllcih0aGlzKTsKKyAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzKTsK
IH0KIAogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KCkKQEAgLTI4NCw0ICsyOTAsMjUgQEAg
dm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6c2V0SW52YWxpZFR5cGVQcm9maWxpbmdP
ZmZzZXRzKCkKICAgICBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCk7CiB9CiAKK3ZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKK3sKKyAgICBpZiAoVk06OmlzSW5N
aW5pTW9kZSgpICYmICFtX2lzR2VuZXJhdGVkRnJvbUNhY2hlICYmICFpc0J1aWx0aW5GdW5jdGlv
bigpKSB7CisgICAgICAgIGJvb2wgaXNDbGVhcmVkID0gZmFsc2U7CisgICAgICAgIGJvb2wgaXNT
dGlsbFZhbGlkID0gZmFsc2U7CisgICAgICAgIGF1dG8gY2xlYXJJZkRlYWQgPSBbJl0gKFdyaXRl
QmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiYgdW5saW5rZWRDb2RlQmxvY2spIHsK
KyAgICAgICAgICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHVubGlua2VkQ29kZUJsb2Nr
LmdldCgpKSkgeworICAgICAgICAgICAgICAgIHVubGlua2VkQ29kZUJsb2NrLmNsZWFyKCk7Cisg
ICAgICAgICAgICAgICAgaXNDbGVhcmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgIGlzU3RpbGxWYWxpZCA9IHRydWU7CisgICAgICAgIH07CisgICAgICAgIGNs
ZWFySWZEZWFkKG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsKTsKKyAgICAgICAgY2xlYXJJZkRl
YWQobV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdCk7CisgICAgICAgIGlmIChpc0NsZWFy
ZWQgJiYgIWlzU3RpbGxWYWxpZCkKKyAgICAgICAgICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlU3BhY2Uuc2V0LnJlbW92ZSh0aGlzKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCAwYzdmODljZDRlYjAyNGZjZjgwZDc4ODM2
YzNmNDNjMGE3Y2QyM2MzLi5iZWQ5NWQzMDllN2YxNmRjZDY5NzkyZmZlZDQ0YTBkMWUyZGM4ZjEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMTE0LDggKzExNCw2IEBAIGNsYXNzIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWdu
ZWQgdHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZVByb2ZpbGlu
Z0VuZE9mZnNldDsgfQogICAgIHZvaWQgc2V0SW52YWxpZFR5cGVQcm9maWxpbmdPZmZzZXRzKCk7
CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9ja0ZvcihD
b2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKLQogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwKICAg
ICAgICAgUGFyc2VyRXJyb3ImLCBTb3VyY2VQYXJzZU1vZGUpOwpAQCAtMTg5LDYgKzE4Nyw4IEBA
IGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlID0g
c291cmNlTWFwcGluZ1VSTDsKICAgICB9CiAKKyAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25h
bGx5KFZNJik7CisKICAgICBzdHJ1Y3QgUmFyZURhdGEgewogICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAKQEAgLTIwMiw3ICsyMDIsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0
aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHks
IEpTUGFyc2VyU2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+
LCAgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29u
c3RydWN0b3IpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImLCBjb25z
dCBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGUmKTsKIAotICAgIHZvaWQgZGVjb2RlQ2FjaGVkQ29k
ZUJsb2NrcygpOworICAgIHZvaWQgZGVjb2RlQ2FjaGVkQ29kZUJsb2NrcyhWTSYpOwogCiAgICAg
dW5zaWduZWQgbV9maXJzdExpbmVPZmZzZXQgOiAzMTsKICAgICB1bnNpZ25lZCBtX2lzSW5TdHJp
Y3RDb250ZXh0IDogMTsKQEAgLTIyOCw2ICsyMjgsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1fY29uc3Ry
dWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2Z1bmN0aW9uTW9kZSA6IDI7IC8vIEZ1bmN0
aW9uTW9kZQogICAgIHVuc2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlOiAyOworICAgIHVuc2ln
bmVkIG1faXNHZW5lcmF0ZWRGcm9tQ2FjaGUgOiAxOwogCiAgICAgdW5pb24gewogICAgICAgICBX
cml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9j
a0ZvckNhbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDY2NjNiNGYwZDM5
ZWJiZWY5ZDI3MGRlMDNkMmI1ZmM1ZTMzZDY0ODIuLmE4NTIwN2YxMmNmNjAzZjA0Nzg4MWQxNjRj
YzY3ODI3NDQ4M2ZmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC02MDYs
NiArNjA2LDcgQEAgdm9pZCBIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCkK
ICAgICAgICAgfSk7CiAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPih2bSgpLT5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
c1dpdGhGaW5hbGl6ZXJzKTsKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXJzPFN0cnVjdHVyZVJhcmVEYXRhPih2bSgpLT5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKTsKKyAg
ICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlPih2bSgpLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldCk7CiAg
ICAgaWYgKHZtKCktPm1fd2Vha1NldFNwYWNlKQogICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha1NldD4oKnZtKCktPm1fd2Vha1NldFNwYWNlKTsKICAg
ICBpZiAodm0oKS0+bV93ZWFrTWFwU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggZDQ2MWU1NjkzMjlmMWQ5ZThiODZlY2JjMzU3Yjlh
ZTc2OTlkNzE4YS4uMDNjZjE2NGZiY2NjMDExZThjODVmMDE3NzcyNDA4YjFjMTE1NGViYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMjAz
MSw2ICsyMDMxLDcgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRD
b2RlQmxvY2soRGVjb2RlciYgZGVjb2RlciwgU3RydWN0dXJlKgogICAgICwgbV9jb2RlVHlwZShj
YWNoZWRDb2RlQmxvY2suY29kZVR5cGUoKSkKIAogICAgICwgbV9kaWRPcHRpbWl6ZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTWl4ZWRUcmlTdGF0ZSkpCisgICAgLCBtX2FnZSgwKQogCiAgICAgLCBt
X2ZlYXR1cmVzKGNhY2hlZENvZGVCbG9jay5mZWF0dXJlcygpKQogICAgICwgbV9wYXJzZU1vZGUo
Y2FjaGVkQ29kZUJsb2NrLnBhcnNlTW9kZSgpKQpAQCAtMjE1OCw2ICsyMTU5LDcgQEAgQUxXQVlT
X0lOTElORSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUoRGVjb2RlciYgZGUKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKGNhY2hlZEV4ZWN1dGFi
bGUuY29uc3RydWN0b3JLaW5kKCkpCiAgICAgLCBtX2Z1bmN0aW9uTW9kZShjYWNoZWRFeGVjdXRh
YmxlLmZ1bmN0aW9uTW9kZSgpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY2FjaGVkRXhl
Y3V0YWJsZS5kZXJpdmVkQ29udGV4dFR5cGUoKSkKKyAgICAsIG1faXNHZW5lcmF0ZWRGcm9tQ2Fj
aGUodHJ1ZSkKICAgICAsIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsKCkKICAgICAsIG1fdW5s
aW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgKaW5kZXggNzUwMDg2MWZi
NTkzODJhM2I5NTAxODA4ODlhM2I0OGRhZWZiN2JlNi4uYzc1NzQ5NWJkYzU1MDQzM2UwMDI1ZmZj
ZmFlY2YwMjRkM2FlNGNiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaApAQCAtMjcsNyArMjcsNyBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGws
IENvZGVGb3JDb25zdHJ1Y3QgfTsKK2VudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCA6IHVpbnQ4
X3QgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogCiBpbmxpbmUgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbkZyb21Jc0NhbGwoYm9vbCBpc0NhbGwpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371564</attachid>
            <date>2019-06-06 22:51:35 -0700</date>
            <delta_ts>2019-06-07 00:07:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198023-20190606225134.patch</filename>
            <type>text/plain</type>
            <size>24935</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MjFiYWFhYTM5ZThlZDQ1OTQ1ZjJiZTBmNDM5ODY4MWU4NDczZDcwLi4xNzEyYjYwMTA0NWYxYjdi
NGVkNGJlY2M0MGMwZjc5MDI4NzlhMGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NCBAQAorMjAxOS0wNi0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVubGlua2VkQ29kZUJsb2NrIHNob3VsZCBiZSBldmVudHVhbGx5
IGpldHRpc29uZWQgaW4gVk0gbWluaSBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgwMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXaGlsZSBDb2RlQmxvY2sgaXMgcGVyaW9kaWNhbGx5IGpldHRp
c29uZWQsIFVubGlua2VkQ29kZUJsb2NrIGFuZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBj
YW4gYmUgcmV0YWluZWQgYWxtb3N0IGZvcmV2ZXIgaW4gY2VydGFpbiB0eXBlIG9mIGFwcGxpY2F0
aW9ucy4KKyAgICAgICAgV2hlbiB3ZSBleGVjdXRlIGEgcHJvZ3JhbSwgd2hpY2ggaGFzIFVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jayByZXRhaW5lZCBpbiBDb2RlQ2FjaGUuIEFuZCBVbmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2sgaG9sZHMgYXJyYXkgb2YgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
CisgICAgICAgIEFuZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZXMgaG9sZCBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrcyBvbmNlIGl0IGlzIGdlbmVyYXRlZC4gU28gZXZlbnR1YWxseSwgdGhp
cyB0cmVlIGdldHMgbGFyZ2VyIGFuZCBsYXJnZXIgdW50aWwgd2UgcHVyZ2UKKyAgICAgICAgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrIGZyb20gQ29kZUNhY2hlLiBUaGlzIGlzIE9LIGluIHRoZSBi
cm93c2VyIGNhc2UuIFdlIG5hdmlnYXRlIHRvIHZhcmlvdXMgb3RoZXIgcGFnZXMsIGFuZCBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2tzIHNob3VsZCBldmVudHVhbGx5CisgICAgICAgIGJlIHBydW5l
ZCBmcm9tIENvZGVDYWNoZSB3aXRoIHRoZSBuZXcgb25lcy4gU28gdGhpcyB0cmVlIHdvbid0IGJl
IHJldGFpbmVkIGZvcmV2ZXIuIEJ1dCB0aGUgYmVoYXZpb3IgaXMgZGlmZmVyZW50IGluIHRoZSBv
dGhlciBhcHBsaWNhdGlvbnMgdGhhdCBkbyBub3QgaGF2ZQorICAgICAgICBuYXZpZ2F0aW9ucy4g
SWYgdGhleSBvbmx5IGhhdmUgb25lIHByb2dyYW0gd2hpY2ggaG9sZHMgYWxsLCB3ZSBiYXNpY2Fs
bHkgcmV0YWluIHRoaXMgdHJlZSBkdXJpbmcgZXhlY3V0aW5nIHRoaXMgYXBwbGljYXRpb24uIFRo
ZSBzYW1lIHRoaW5nIGNhbiBoYXBwZW4gaW4KKyAgICAgICAgd2ViIGFwcGxpY2F0aW9ucyB3aGlj
aCBkb2VzIG5vdCBoYXZlIG5hdmlnYXRpb24gYW5kIGtlZXBzIGFsaXZlIGZvciBhIGxvbmcgdGlt
ZS4gT25jZSB3ZSBoaXQgQ29kZUNhY2hlIGxpbWl0IGJ5IHBlcmlvZGljYWxseSBleGVjdXRpbmcg
YSBuZXcgc2NyaXB0LCB3ZSB3aWxsCisgICAgICAgIGhpdCB0aGUgdXBwZXJtb3N0IG9mIG1lbW9y
eSBmb290cHJpbnQuIEJ1dCB1bnRpbCB0aGF0LCB3ZSBpbmNyZWFzZSBvdXIgbWVtb3J5IGZvb3Rw
cmludC4KKworICAgICAgICBIb3dldmVyLCBkZXN0cm95aW5nIHRoZXNlIFVubGlua2VkQ29kZUJs
b2NrcyBhbmQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVzIGNhdXNlcyBhIHRyaWNreSBwcm9i
bGVtLiBJbiB0aGUgYnJvd3NlciBlbnZpcm9ubWVudCwgbmF2aWdhdGlvbiBjYW4gaGFwcGVuIGF0
IGFueQorICAgICAgICB0aW1lLiBTbyBldmVuIGlmIHRoZSBnaXZlbiBVbmxpbmtlZENvZGVCbG9j
ayBzZWVtcyB1bnVzZWQgaW4gdGhlIGN1cnJlbnQgcGFnZSwgaXQgY2FuIGJlIHVzZWQgd2hlbiBu
YXZpZ2F0aW5nIHRvIGEgbmV3IHBhZ2Ugd2hpY2ggaXMgdW5kZXIgdGhlIHNhbWUgZG9tYWluLgor
ICAgICAgICBPbmUgZXhhbXBsZSBpcyBpbml0aWFsaXppbmcgZnVuY3Rpb24gaW4gYSBzY3JpcHQu
IEl0IGlzIG9ubHkgZXhlY3V0ZWQgb25jZSBwZXIgcGFnZS4gU28gb25jZSBpdCBpcyBleGVjdXRl
ZCwgaXQgc2VlbXMgdGhhdCB0aGlzIFVubGlua2VkQ29kZUJsb2NrIGlzIHVudXNlZC4KKyAgICAg
ICAgQnV0IHRoaXMgd2lsbCBiZSB1c2VkIHdoZW4gd2UgbmF2aWdhdGUgdG8gYSBuZXcgcGFnZS4g
UHJ1bmluZyBjb2RlIGJsb2NrcyBiYXNlZCBvbiB1c2FnZSBjb3VsZCBjYXVzZSBwZXJmb3JtYW5j
ZSByZWdyZXNzaW9uLgorCisgICAgICAgIEJ1dCBpZiBvdXIgVk0gaXMgbWluaSBWTSBtb2RlLCB0
aGUgc3RvcnkgaXMgZGlmZmVyZW50LiBJbiBtaW5pIFZNIG1vZGUsIHdlIGZvY3VzIG9uIG1lbW9y
eSBmb290cHJpbnQgcmF0aGVyIHRoYW4gcGVyZm9ybWFuY2UgZS5nLiBkYWVtb25zLiBUaGUgZGFl
bW9uIG5ldmVyCisgICAgICAgIHJldXNlIHRoZXNlIENvZGVDYWNoZSBzaW5jZSB3ZSBkbyBub3Qg
aGF2ZSB0aGUgbmF2aWdhdGlvbi4KKworICAgICAgICBUaGlzIHBhdGNoIGxvZ2ljYWxseSBtYWtl
cyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSAtPiBVbmxpbmtlZENvZGVCbG9jayByZWZlcmVu
Y2Ugd2VhayB3aGVuIFZNIGlzIG1pbmkgbW9kZS4gSWYgVW5saW5rZWRDb2RlQmxvY2sgaXMgdXNl
ZCBpbiBwcmV2aW91cyBHQworICAgICAgICBjeWNsZSwgd2UgcmV0YWluIGl0LiBCdXQgaWYgaXQg
aXMgbm90IHVzZWQsIGFuZCBpZiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBpcyBvbmx5IHRo
ZSBjZWxsIGtlZXBpbmcgVW5saW5rZWRDb2RlQmxvY2sgYWxpdmUsIHdlIGRlc3Ryb3kgaXQuIEl0
IGlzIGEKKyAgICAgICAgaGV1cmlzdGljLiBJbiBhIHN1cGVyIHBhdGhvbG9naWNhbCBjYXNlLCBp
dCBjb3VsZCBpbmNyZWFzZSBtZW1vcnkgZm9vdHByaW50LiBDb25zaWRlciB0aGUgZm9sbG93aW5n
IGV4YW1wbGUuCisKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKEExKSAt
PiBVbmxpbmtlZENvZGVCbG9jayhCMSkgLT4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoQzEp
IC0+IFVubGlua2VkQ29kZUJsb2NrKEQxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvZGVCbG9jayhFMSkKKworICAgICAgICBXZSBjb3VsZCBkZWxldGUg
QTEsIEIxLCBhbmQgQzEgd2hpbGUga2VlcGluZyBEMS4gQnV0IGlmIHdlIGV2ZW50dWFsbHkgcmUt
ZXhlY3V0ZSB0aGUgc2FtZSBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gQTEsIEIxLCBDMSwgdGhleSB3
aWxsIGJlIG5ld2x5IGNyZWF0ZWQsIGFuZAorICAgICAgICB3ZSB3aWxsIGNyZWF0ZSBkdXBsaWNh
dGUgVW5saW5rZWRDb2RlQmxvY2sgYW5kIGluc3RydWN0aW9ucyBzdHJlYW0gZm9yIEQxLgorCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmxpbmtlZENv
ZGVCbG9jayhEMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDb2RlQmxvY2soRTEpCisKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KEEyKSAtPiBVbmxpbmtlZENvZGVCbG9jayhCMikgLT4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUoQzIpIC0+IFVubGlua2VkQ29kZUJsb2NrKEQyKQorCisgICAgICAgIEJ1dCB0aGlzIGRvZXMg
bm90IGhhcHBlbiBpbiBwcmFjdGljZSBhbmQgZXZlbiBpdCBoYXBwZW5zLCB3ZSBldmVudHVhbGx5
IGRpc2NhcmQgRDEgYW5kIEQyIHNpbmNlIENvZGVCbG9jayBFMSB3aWxsIGJlIGpldHRpc29uZWQg
YW55d2F5LiBTbyBpbiBwcmFjdGljZSwgd2UgZG8KKyAgICAgICAgbm90IHNlZSBtZW1vcnkgZm9v
dHByaW50IGluY3JlYXNlLiBXZSB0ZXN0ZWQgaXQgaW4gR21haWwgYW5kIHRoZSB0YXJnZXQgYXBw
bGljYXRpb24sIGJ1dCBib3RoIHNhaWQgbWVtb3J5IGZvb3RwcmludCByZWR1Y3Rpb24gKDMwIE1C
IC8gNDAwIE1CIGFuZCAxIE1CIC82IE1CKS4KKyAgICAgICAgV2hpbGUgdGhpcyBhZmZlY3RzIG9u
IHBlcmZvcm1hbmNlIG11Y2ggb24gdGVzdHMgd2hpY2ggaGFzIG5hdmlnYXRpb24gKDEtMyAlIHJl
Z3Jlc3Npb24gaW4gU3BlZWRvbWV0ZXIyLCBub3RlIHRoYXQgSmV0U3RyZWFtMiBkb2VzIG5vdCBz
aG93IHJlZ3Jlc3Npb24gaW4geDY0LAorICAgICAgICB3aGlsZSBpdCBpcyBub3QgZW5hYmxpbmcg
bWluaSBtb2RlKSwgd2UgZG8gbm90IGFwcGx5IHRoaXMgdG8gbm9uIG1pbmkgbW9kZSBWTSB1bnRp
bCB3ZSBjb21lIHVwIHdpdGggYSBnb29kIHN0cmF0ZWd5IHRvIGZhc3RlbiBwZXJmb3JtYW5jZSBv
ZiByZS1nZW5lcmF0aW9uLgorICAgICAgICBQZXJzb25hbGx5IEkgdGhpbmsgZmx1c2hpbmcgZGVz
dHJveWVkIFVubGlua2VkQ29kZUJsb2NrIHRvIHRoZSBkaXNrIHNvdW5kcyBwcm9taXNpbmcuCisK
KyAgICAgICAgSWYgVW5saW5rZWRDb2RlQmxvY2sgaXMgZ2VuZXJhdGVkIGZyb20gYnl0ZWNvZGUg
Y2FjaGUsIHdlIGRvIG5vdCBtYWtlIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIC0+IFVubGlu
a2VkQ29kZUJsb2NrIGxpbmsgd2VhayBiZWNhdXNlIHRoZSBkZWNvZGVyIG9mIHRoZSBieXRlY29k
ZQorICAgICAgICBjYWNoZSBhc3N1bWVzIHRoYXQgZ2VuZXJhdGVkIEpTQ2VsbHMgd29uJ3QgYmUg
ZGVzdHJveWVkIHdoaWxlIHRoZSBwYXJlbnQgY2VsbHMgb2YgdGhhdCBjZWxsIGFyZSBsaXZlLiBU
aGlzIGlzIHRydWUgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIGFuZCB0aGlzIGFzc3Vt
cHRpb24KKyAgICAgICAgd2lsbCBiZSBicm9rZW4gd2l0aCB0aGlzIHBhdGNoLiBTbywgZm9yIG5v
dywgd2UgZG8gbm90IG1ha2UgdGhpcyBsaW5rIHdlYWsuIEN1cnJlbnRseSwgb3VyIHRhcmdldCBh
cHBsaWNhdGlvbiBkb2VzIG5vdCB1c2UgYnl0ZWNvZGUgY2FjaGUgc28gaXQgaXMgT0suCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhbHNvIGludHJvZHVjZSBzaW1wbGUgaGV1cmlzdGljIHRvby4gV2Ug
YXJlIGNvdW50aW5nIFVubGlua2VkQ29kZUJsb2NrJ3MgYWdlLiBBbmQgb25jZSB0aGUgYWdlIGJl
Y29tZXMgbWF4aW11bSBzaXplLCB3ZSBtYWtlIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIC0+
CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrIGxpbmsgd2Vhay4gV2UgYWxzbyB1c2UgZXhlY3V0
aW9uIGNvdW50ZXIgaW5mb3JtYXRpb24gdG8gcmVzZXQgdGhpcyBhZ2U6IENvZGVCbG9jayB3aWxs
IHJlc2V0IHVuZGVseWluZyBVbmxpbmtlZENvZGVCbG9jaydzIGFnZSBpZiBpdCBoYXMgc29tZQor
ICAgICAgICBleGVjdXRpb24uIFdoaWxlIHRoaXMgaGV1cmlzdGljIGlzIHF1aXRlIHNpbXBsZSwg
aXQgaGFzIHNvbWUgZWZmZWN0IGluIHByYWN0aWNlLiBCYXNpY2FsbHkgd2hhdCBoYXBwZW5zIHdp
dGggdGhpcyBoZXVyaXN0aWMgaXMgdGhhdCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSAtPgor
ICAgICAgICBVbmxpbmtlZENvZGVCbG9jayBsaW5rIHN0cm9uZy4gV2hlbiBHQyBoYXBwZW5zLCB3
ZSBhcmUgZXhlY3V0aW5nIHNvbWUgQ29kZUJsb2Nrcywgd2hpY2ggYmVjb21lIGxpdmUuIEFuZCBT
Y3JpcHRFeGVjdXRhYmxlcyAtPiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZXMgaGVsZAorICAg
ICAgICBieSB0aGlzIENvZGVCbG9jayBiZWNvbWUgYWxzbyBsaXZlLiBUaGVuIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlcyBjYW4gbWFyayB0aGUgY2hpbGQgVW5saW5rZWRDb2RlQmxvY2tzIGlm
IGl0IGlzIG5vdCBzbyBvbGQuCisgICAgICAgIElmIHNvbWUgb2YgcGFyZW50IFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlIGJlY29tZXMgZGVhZCwgY2hpbGQgVW5saW5rZWRDb2RlQmxvY2tzIHRl
bmRzIHRvIGJlIGRlYWQgdW5sZXNzIHNvbWUgbGl2ZSBDb2RlQmxvY2sgaG9sZHMgaXQuIEJ1dCBp
dCBpcyBPSyBmb3IgYSBmaXJzdAorICAgICAgICBoZXVyaXN0aWNzIHNpbmNlIHRoaXMgbWVhbnMg
dGhhdCBwYXJlbnQgY29kZSBibG9jayBpcyBub3cgY29uc2lkZXJlZCBvbGQsIHJlYWNoYWJsZSBV
bmxpbmtlZENvZGVCbG9jayB3aWxsIGJlIHVzZWQgd2hlbiB0aGUgcGFyZW50IGlzIGV4ZWN1dGVk
IGFnYWluLiBTbyBkZXN0cm95aW5nCisgICAgICAgIHRoZSB0cmVlIGlzIE9LIGV2ZW4gaWYgdGhl
IHRyZWUgbWF5IGluY2x1ZGUgc29tZSBuZXcgVW5saW5rZWRDb2RlQmxvY2suIFdoaWxlIHdlIGNv
dWxkIG1ha2UgbW9yZSBzb3BoaXN0aWNhdGVkIG1lY2hhbmlzbSB0byBtYW5hZ2UgdGhlc2UgbGlm
ZXRpbWUsIEkgdGhpbmsgdGhpcyBpcyBhCisgICAgICAgIGdvb2Qgc3RhcnRpbmcgcG9pbnQuCisK
KyAgICAgICAgQmFzZWQgb24gbWVhc3VyZW1lbnQsIHdlIHBpY2sgNyBhcyBhIG1heGltdW0gYWdl
LiBJZiB3ZSBwaWNrIDAsIHdlIGNhbiBnZXQgbW9yZSBtZW1vcnkgcmVkdWN0aW9uICgxIC0gMS41
IE1CISksIHdoaWxlIHdlIGVuZHMgdXAgcmVwYXJzaW5nIGNvZGVzIHNvIG1hbnkgdGltZXMuCisg
ICAgICAgIEl0IHNlZW1zIHRoYXQgNyBjYW4gcmVkdWNlIGZhaXIgYW1vdW50IG9mIG1lbW9yeSB3
aGlsZSBkb2luZyBzbWFsbCAjIG9mIHJlcGFyc2luZyBvbiBhdmVyYWdlICh1c3VhbGx5LCAxLCAy
LiBTb21ldGltZXMsIDEwMC4gQnV0IG5vdCAzMDAsIHdoaWNoIGlzIHRoZSBjYXNlIGluIDApLgor
ICAgICAgICBJZiB3ZSB3YW50IHRvIGdldCBtb3JlIG1lbW9yeSByZWR1Y3Rpb24gZm9yIHRoZSBz
YWtlIG9mIHBlcmZvcm1hbmNlLCB3ZSBjb3VsZCBkZWNyZWFzZSB0aGlzIGFnZSBsaW1pdC4KKwor
ICAgICAgICBTaW5jZSB3ZSBkbyBub3QgaGF2ZSBhbiBhdXRvbWF0ZWQgc2NyaXB0IHJpZ2h0IG5v
dyBzbyBpdCBpcyBhIGJpdCBkaWZmaWN1bHQgdG8gbWVhc3VyZSBtZW1vcnkgZm9vdHByaW50IHBy
ZWNpc2VseS4gQnV0IG1hbnVhbCB0ZXN0aW5nIHNob3dzIHRoYXQgdGhpcyBwYXRjaCBpbXByb3Zl
cworICAgICAgICBtZW1vcnkgZm9vdHByaW50IG9mIG91ciB0YXJnZXQgYXBwbGljYXRpb24gZnJv
bSBhYm91dCA2LjUgTUIgdG8gYWJvdXQgNS45IE1CLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9u
YWxseSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFnZSBjb25zdCk6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjpyZXNldEFnZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0Zvcik6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGVDYWNoZWRDb2Rl
QmxvY2tzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFs
aXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6Okhl
YXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAqIHJ1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5r
ZWRDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZVNwZWNp
YWxpemF0aW9uS2luZC5oOgorCiAyMDE5LTA2LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRlIGV4Y2VwdGlvbiBzY29wZSBm
b3IgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBhZGUyYWNlM2QxYTQ2ZDEzMTZhMDQzZDMxMDU4
MjAxMDAxNzcwZDUwLi5iZjc1YWIwYjU2Y2MwZGJlMGM5NjY4YmNkYTA0YmUxZGFjYWEyZDNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTM3
Myw2ICsxMzczLDM1IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShW
TSYgdm0pCiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogCisgICAgYXV0byB1cGRh
dGVBY3Rpdml0eSA9IFsmXSB7CisgICAgICAgIGlmICghVk06OmlzSW5NaW5pTW9kZSgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBKSVRDb2RlKiBqaXRDb2RlID0gbV9qaXRDb2RlLmdl
dCgpOworICAgICAgICBkb3VibGUgY291bnQgPSAwOworICAgICAgICBib29sIGFsd2F5c0FjdGl2
ZSA9IGZhbHNlOworICAgICAgICBzd2l0Y2ggKEpJVENvZGU6OmppdFR5cGVGb3Ioaml0Q29kZSkp
IHsKKyAgICAgICAgY2FzZSBKSVRUeXBlOjpOb25lOgorICAgICAgICBjYXNlIEpJVFR5cGU6Okhv
c3RDYWxsVGh1bms6CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgSklUVHlwZTo6
SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAgICAgICAgIGNvdW50ID0gbV9sbGludEV4ZWN1dGVDb3Vu
dGVyLmNvdW50KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBKSVRUeXBlOjpC
YXNlbGluZUpJVDoKKyAgICAgICAgICAgIGNvdW50ID0gbV9qaXRFeGVjdXRlQ291bnRlci5jb3Vu
dCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSklUVHlwZTo6REZHSklUOgor
ICAgICAgICBjYXNlIEpJVFR5cGU6OkZUTEpJVDoKKyAgICAgICAgICAgIGFsd2F5c0FjdGl2ZSA9
IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoYWx3YXlz
QWN0aXZlIHx8IG1fcHJldmlvdXNDb3VudGVyIDwgY291bnQpIHsKKyAgICAgICAgICAgIC8vIENv
ZGVCbG9jayBpcyBhY3RpdmUgcmlnaHQgbm93LCBzbyByZXNldHRpbmcgVW5saW5rZWRDb2RlQmxv
Y2sncyBhZ2UuCisgICAgICAgICAgICBtX3VubGlua2VkQ29kZS0+cmVzZXRBZ2UoKTsKKyAgICAg
ICAgfQorICAgICAgICBtX3ByZXZpb3VzQ291bnRlciA9IGNvdW50OworICAgIH07CisgICAgdXBk
YXRlQWN0aXZpdHkoKTsKKwogICAgIFZNOjpTcGFjZUFuZFNldDo6c2V0Rm9yKCpzdWJzcGFjZSgp
KS5yZW1vdmUodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAppbmRleCA0ZTYyYmRlYzIyZWU5ZTVlMjg2ZjkxNjU0MDRiMGZjMzJkNzdjMjg5Li40
ZDMyNzllY2M5MmI0ZDI3OWNiYzg4NDlhYjg4NTg4MDhlOTdjNTU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0xMDEwLDYgKzEwMTAsNyBAQCBjbGFz
cyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBSZWZQdHI8TWV0YWRhdGFUYWJsZT4g
bV9tZXRhZGF0YTsKIAogICAgIE1vbm90b25pY1RpbWUgbV9jcmVhdGlvblRpbWU7CisgICAgZG91
YmxlIG1fcHJldmlvdXNDb3VudGVyIHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJhcmVE
YXRhPiBtX3JhcmVEYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGY5YzNiYTlkNzE2NDdkNDIzZGIxOGEx
NDQxOTgwNGQzNGYzMGY0NDEuLjc3NDVhNDFhZDJiM2ExZmFiY2FkNDI0OGMxZTVlNzQ4NjRlZDBk
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcApAQCAtNzEsNiArNzEsNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5r
ZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQog
ICAgICwgbV9ldmFsQ29udGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZXZhbENv
bnRleHRUeXBlKCkpKQogICAgICwgbV9jb2RlVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29k
ZVR5cGUpKQogICAgICwgbV9kaWRPcHRpbWl6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWl4ZWRU
cmlTdGF0ZSkpCisgICAgLCBtX2FnZSgwKQogICAgICwgbV9wYXJzZU1vZGUoaW5mby5wYXJzZU1v
ZGUoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAg
ICAsIG1fbWV0YWRhdGEoVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpjcmVhdGUoKSkKQEAgLTg4LDYg
Kzg5LDcgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOwogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGhpc09iamVjdC0+Y2VsbExv
Y2soKSk7CisgICAgdGhpc09iamVjdC0+bV9hZ2UgPSBzdGQ6Om1pbjx1bnNpZ25lZD4oc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHRoaXNPYmplY3QtPm1fYWdlKSArIDEsIG1heEFnZSk7CiAgICAgZm9y
IChGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3I6Oml0ZXJhdG9yIHB0ciA9IHRoaXNPYmplY3QtPm1f
ZnVuY3Rpb25EZWNscy5iZWdpbigpLCBlbmQgPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRGVjbHMu
ZW5kKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgqcHRyKTsK
ICAgICBmb3IgKEZ1bmN0aW9uRXhwcmVzc2lvblZlY3Rvcjo6aXRlcmF0b3IgcHRyID0gdGhpc09i
amVjdC0+bV9mdW5jdGlvbkV4cHJzLmJlZ2luKCksIGVuZCA9IHRoaXNPYmplY3QtPm1fZnVuY3Rp
b25FeHBycy5lbmQoKTsgcHRyICE9IGVuZDsgKytwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDJhMzUwYTFmMTFjZjIx
MzFmNzJjMmI0YmQ4MDkwMThmZTcxMmVmZjIuLmMxOGE3MGQyYTkyZjllZjg2YjQ0ZDhmODgxODMx
OGFkOWRhMmZiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCkBAIC0zMzksNiArMzM5LDExIEBAIGNsYXNzIFVubGlua2VkQ29k
ZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgVHJpU3RhdGUgZGlkT3B0aW1pemUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxUcmlTdGF0ZT4obV9kaWRPcHRpbWl6ZSk7IH0KICAgICB2
b2lkIHNldERpZE9wdGltaXplKFRyaVN0YXRlIGRpZE9wdGltaXplKSB7IG1fZGlkT3B0aW1pemUg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGlkT3B0aW1pemUpOyB9CiAKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIG1heEFnZSA9IDc7CisKKyAgICB1bnNpZ25lZCBhZ2UoKSBjb25zdCB7
IHJldHVybiBtX2FnZTsgfQorICAgIHZvaWQgcmVzZXRBZ2UoKSB7IG1fYWdlID0gMDsgfQorCiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKICAgICBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMmIGxpdmVuZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC00MjQs
NiArNDI5LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICB1bnNpZ25lZCBtX2V2YWxDb250ZXh0VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9jb2RlVHlw
ZSA6IDI7CiAgICAgdW5zaWduZWQgbV9kaWRPcHRpbWl6ZSA6IDI7CisgICAgdW5zaWduZWQgbV9h
Z2UgOiAzOwogcHVibGljOgogICAgIENvbmN1cnJlbnRKU0xvY2sgbV9sb2NrOwogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDE0YTA2OWM1ZTA3NjA4ZDMwOTE4MjI5MzY1
NmViMjE4N2ZkOTdmZDYuLjEzZmYxYzM3M2U2NGU2NGRkZmNiM2NiZWM5ZGE3MDU0ZjhiMWVkMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMTA3LDYgKzEwNyw3IEBAIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0
cnVjdHVyZSogc3RydWN0CiAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwgbV9mdW5jdGlvbk1vZGUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkKICAgICAsIG1fZGVyaXZl
ZENvbnRleHRUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXJpdmVkQ29udGV4dFR5cGUpKQor
ICAgICwgbV9pc0dlbmVyYXRlZEZyb21DYWNoZShmYWxzZSkKICAgICAsIG1fdW5saW5rZWRDb2Rl
QmxvY2tGb3JDYWxsKCkKICAgICAsIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKQog
ICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCkBAIC0xNDIsNyArMTQzLDI0IEBAIHZvaWQgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvCiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqPihjZWxsKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICBpZiAoIXRoaXNPYmplY3QtPm1f
aXNDYWNoZWQpIHsKKworICAgIC8vIEN1cnJlbnRseSwgYnl0ZWNvZGUgY2FjaGUgYXNzdW1lcyB0
aGF0IHRoZSB0cmVlIG9mIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGFuZCBVbmxpbmtlZENv
ZGVCbG9jayB3aWxsIG5vdCBiZSBkZXN0cm95ZWQgd2hpbGUgdGhlIHBhcmVudCBpcyBsaXZlLgor
ICAgIC8vIEJ5dGVjb2RlIGNhY2hlIHVzZXMgdGhpcyBhc3VtcHRpb24gdG8gYXZvaWQgZHVwbGlj
YXRlIG1hdGVyaWFsaXphdGlvbiBieSBib29ra2VlcGluZyB0aGUgaGVhcCBjZWxscyBpbiB0aGUg
b2Zmc3RlLXRvLXBvaW50ZXIgbWFwLgorICAgIC8vCisgICAgLy8gV2UgYWxzbyBrZWVwIGJ1aWx0
aW4gZnVuY3Rpb25zLiBUaGUgYnVpbHRpbiBmdW5jdGlvbnMgYXJlIGZvdW5kYW1lbnRhbCBsaWJy
YXJ5IGZvciBKYXZhU2NyaXB0LCB3aGljaCBtZWFucyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQgaW4g
cmFuZG9tIHBsYWNlcyBvZgorICAgIC8vIHRoZSBjbGllbnQgc2NyaXB0cy4gSXQgaXMgc2FmZSB0
byBhc3N1bWUgdGhhdCBidWlsdGluIGZ1bmN0aW9ucyBhcmUgdXNlZCByZWxhdGl2ZWx5IGZyZXF1
ZW50bHkgZnJvbSBtYW55IGNhbGwgc2l0ZXMuCisgICAgaWYgKFZNOjppc0luTWluaU1vZGUoKSAm
JiAhdGhpc09iamVjdC0+bV9pc0dlbmVyYXRlZEZyb21DYWNoZSAmJiAhdGhpc09iamVjdC0+aXNC
dWlsdGluRnVuY3Rpb24oKSkgeworICAgICAgICBhdXRvIG1hcmtJZlByb2ZpdGFibGUgPSBbJl0g
KFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiYgdW5saW5rZWRDb2RlQmxv
Y2spIHsKKyAgICAgICAgICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5kaWRPcHRpbWl6
ZSgpID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCh1bmxp
bmtlZENvZGVCbG9jayk7CisgICAgICAgICAgICBlbHNlIGlmICh1bmxpbmtlZENvZGVCbG9jay0+
YWdlKCkgPCBVbmxpbmtlZENvZGVCbG9jazo6bWF4QWdlKQorICAgICAgICAgICAgICAgIHZpc2l0
b3IuYXBwZW5kKHVubGlua2VkQ29kZUJsb2NrKTsKKyAgICAgICAgfTsKKyAgICAgICAgbWFya0lm
UHJvZml0YWJsZSh0aGlzT2JqZWN0LT5tX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbCk7CisgICAg
ICAgIG1hcmtJZlByb2ZpdGFibGUodGhpc09iamVjdC0+bV91bmxpbmtlZENvZGVCbG9ja0ZvckNv
bnN0cnVjdCk7CisgICAgfSBlbHNlIGlmICghdGhpc09iamVjdC0+bV9pc0NhY2hlZCkgewogICAg
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkQ29kZUJsb2NrRm9yQ2Fs
bCk7CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5saW5rZWRDb2RlQmxv
Y2tGb3JDb25zdHJ1Y3QpOwogICAgIH0KQEAgLTE5NywyNCArMjE1LDEyIEBAIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENv
ZGUoCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcihDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCkKLXsKLSAgICBzd2l0Y2ggKHNw
ZWNpYWxpemF0aW9uS2luZCkgewotICAgIGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAgIHJldHVy
biBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbC5nZXQoKTsKLSAgICBjYXNlIENvZGVGb3JDb25z
dHJ1Y3Q6Ci0gICAgICAgIHJldHVybiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0Lmdl
dCgpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0
cjsKLX0KLQogVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCiAg
ICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBQYXJz
ZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgaWYgKG1f
aXNDYWNoZWQpCi0gICAgICAgIGRlY29kZUNhY2hlZENvZGVCbG9ja3MoKTsKKyAgICAgICAgZGVj
b2RlQ2FjaGVkQ29kZUJsb2Nrcyh2bSk7CiAgICAgc3dpdGNoIChzcGVjaWFsaXphdGlvbktpbmQp
IHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgogICAgICAgICBpZiAoVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogY29kZUJsb2NrID0gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwuZ2V0KCkpCkBA
IC0yNDYsNyArMjUyLDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmRlY29kZUNhY2hlZENvZGVC
bG9ja3MoKQordm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVjb2RlQ2FjaGVkQ29k
ZUJsb2NrcyhWTSYgdm0pCiB7CiAgICAgQVNTRVJUKG1faXNDYWNoZWQpOwogICAgIEFTU0VSVCht
X2RlY29kZXIpOwpAQCAtMjU2LDcgKzI2Miw3IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OmRlY29kZUNhY2hlZENvZGVCbG9ja3MoKQogICAgIGludDMyX3QgY2FjaGVkQ29kZUJs
b2NrRm9yQ2FsbE9mZnNldCA9IG1fY2FjaGVkQ29kZUJsb2NrRm9yQ2FsbE9mZnNldDsKICAgICBp
bnQzMl90IGNhY2hlZENvZGVCbG9ja0ZvckNvbnN0cnVjdE9mZnNldCA9IG1fY2FjaGVkQ29kZUJs
b2NrRm9yQ29uc3RydWN0T2Zmc2V0OwogCi0gICAgRGVmZXJHQyBkZWZlckdDKGRlY29kZXItPnZt
KCkuaGVhcCk7CisgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogCiAgICAgLy8gTm8gbmVl
ZCB0byBjbGVhciBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbCBoZXJlLCBzaW5jZSB3ZSBtb3Zl
ZCB0aGUgZGVjb2RlciBvdXQgb2YgdGhlIHNhbWUgc2xvdAogICAgIGlmIChjYWNoZWRDb2RlQmxv
Y2tGb3JDYWxsT2Zmc2V0KQpAQCAtMjY4LDcgKzI3NCw3IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmRlY29kZUNhY2hlZENvZGVCbG9ja3MoKQogCiAgICAgV1RGOjpzdG9yZVN0
b3JlRmVuY2UoKTsKICAgICBtX2lzQ2FjaGVkID0gZmFsc2U7Ci0gICAgZGVjb2Rlci0+dm0oKS5o
ZWFwLndyaXRlQmFycmllcih0aGlzKTsKKyAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzKTsK
IH0KIAogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KCkKQEAgLTI4NCw0ICsyOTAsMjUgQEAg
dm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6c2V0SW52YWxpZFR5cGVQcm9maWxpbmdP
ZmZzZXRzKCkKICAgICBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCk7CiB9CiAKK3ZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKK3sKKyAgICBpZiAoVk06OmlzSW5N
aW5pTW9kZSgpICYmICFtX2lzR2VuZXJhdGVkRnJvbUNhY2hlICYmICFpc0J1aWx0aW5GdW5jdGlv
bigpKSB7CisgICAgICAgIGJvb2wgaXNDbGVhcmVkID0gZmFsc2U7CisgICAgICAgIGJvb2wgaXNT
dGlsbFZhbGlkID0gZmFsc2U7CisgICAgICAgIGF1dG8gY2xlYXJJZkRlYWQgPSBbJl0gKFdyaXRl
QmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiYgdW5saW5rZWRDb2RlQmxvY2spIHsK
KyAgICAgICAgICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHVubGlua2VkQ29kZUJsb2Nr
LmdldCgpKSkgeworICAgICAgICAgICAgICAgIHVubGlua2VkQ29kZUJsb2NrLmNsZWFyKCk7Cisg
ICAgICAgICAgICAgICAgaXNDbGVhcmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgIGlzU3RpbGxWYWxpZCA9IHRydWU7CisgICAgICAgIH07CisgICAgICAgIGNs
ZWFySWZEZWFkKG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsKTsKKyAgICAgICAgY2xlYXJJZkRl
YWQobV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdCk7CisgICAgICAgIGlmIChpc0NsZWFy
ZWQgJiYgIWlzU3RpbGxWYWxpZCkKKyAgICAgICAgICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlU3BhY2Uuc2V0LnJlbW92ZSh0aGlzKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCAwYzdmODljZDRlYjAyNGZjZjgwZDc4ODM2
YzNmNDNjMGE3Y2QyM2MzLi5iZWQ5NWQzMDllN2YxNmRjZDY5NzkyZmZlZDQ0YTBkMWUyZGM4ZjEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMTE0LDggKzExNCw2IEBAIGNsYXNzIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWdu
ZWQgdHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZVByb2ZpbGlu
Z0VuZE9mZnNldDsgfQogICAgIHZvaWQgc2V0SW52YWxpZFR5cGVQcm9maWxpbmdPZmZzZXRzKCk7
CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9ja0ZvcihD
b2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKLQogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwKICAg
ICAgICAgUGFyc2VyRXJyb3ImLCBTb3VyY2VQYXJzZU1vZGUpOwpAQCAtMTg5LDYgKzE4Nyw4IEBA
IGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlID0g
c291cmNlTWFwcGluZ1VSTDsKICAgICB9CiAKKyAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25h
bGx5KFZNJik7CisKICAgICBzdHJ1Y3QgUmFyZURhdGEgewogICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAKQEAgLTIwMiw3ICsyMDIsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0
aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHks
IEpTUGFyc2VyU2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+
LCAgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29u
c3RydWN0b3IpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImLCBjb25z
dCBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGUmKTsKIAotICAgIHZvaWQgZGVjb2RlQ2FjaGVkQ29k
ZUJsb2NrcygpOworICAgIHZvaWQgZGVjb2RlQ2FjaGVkQ29kZUJsb2NrcyhWTSYpOwogCiAgICAg
dW5zaWduZWQgbV9maXJzdExpbmVPZmZzZXQgOiAzMTsKICAgICB1bnNpZ25lZCBtX2lzSW5TdHJp
Y3RDb250ZXh0IDogMTsKQEAgLTIyOCw2ICsyMjgsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1fY29uc3Ry
dWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2Z1bmN0aW9uTW9kZSA6IDI7IC8vIEZ1bmN0
aW9uTW9kZQogICAgIHVuc2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlOiAyOworICAgIHVuc2ln
bmVkIG1faXNHZW5lcmF0ZWRGcm9tQ2FjaGUgOiAxOwogCiAgICAgdW5pb24gewogICAgICAgICBX
cml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9j
a0ZvckNhbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDY2NjNiNGYwZDM5
ZWJiZWY5ZDI3MGRlMDNkMmI1ZmM1ZTMzZDY0ODIuLmE4NTIwN2YxMmNmNjAzZjA0Nzg4MWQxNjRj
YzY3ODI3NDQ4M2ZmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC02MDYs
NiArNjA2LDcgQEAgdm9pZCBIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCkK
ICAgICAgICAgfSk7CiAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPih2bSgpLT5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
c1dpdGhGaW5hbGl6ZXJzKTsKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXJzPFN0cnVjdHVyZVJhcmVEYXRhPih2bSgpLT5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKTsKKyAg
ICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlPih2bSgpLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldCk7CiAg
ICAgaWYgKHZtKCktPm1fd2Vha1NldFNwYWNlKQogICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha1NldD4oKnZtKCktPm1fd2Vha1NldFNwYWNlKTsKICAg
ICBpZiAodm0oKS0+bV93ZWFrTWFwU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggZDQ2MWU1NjkzMjlmMWQ5ZThiODZlY2JjMzU3Yjlh
ZTc2OTlkNzE4YS4uMDNjZjE2NGZiY2NjMDExZThjODVmMDE3NzcyNDA4YjFjMTE1NGViYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMjAz
MSw2ICsyMDMxLDcgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRD
b2RlQmxvY2soRGVjb2RlciYgZGVjb2RlciwgU3RydWN0dXJlKgogICAgICwgbV9jb2RlVHlwZShj
YWNoZWRDb2RlQmxvY2suY29kZVR5cGUoKSkKIAogICAgICwgbV9kaWRPcHRpbWl6ZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTWl4ZWRUcmlTdGF0ZSkpCisgICAgLCBtX2FnZSgwKQogCiAgICAgLCBt
X2ZlYXR1cmVzKGNhY2hlZENvZGVCbG9jay5mZWF0dXJlcygpKQogICAgICwgbV9wYXJzZU1vZGUo
Y2FjaGVkQ29kZUJsb2NrLnBhcnNlTW9kZSgpKQpAQCAtMjE1OCw2ICsyMTU5LDcgQEAgQUxXQVlT
X0lOTElORSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUoRGVjb2RlciYgZGUKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKGNhY2hlZEV4ZWN1dGFi
bGUuY29uc3RydWN0b3JLaW5kKCkpCiAgICAgLCBtX2Z1bmN0aW9uTW9kZShjYWNoZWRFeGVjdXRh
YmxlLmZ1bmN0aW9uTW9kZSgpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY2FjaGVkRXhl
Y3V0YWJsZS5kZXJpdmVkQ29udGV4dFR5cGUoKSkKKyAgICAsIG1faXNHZW5lcmF0ZWRGcm9tQ2Fj
aGUodHJ1ZSkKICAgICAsIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsKCkKICAgICAsIG1fdW5s
aW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgKaW5kZXggNzUwMDg2MWZi
NTkzODJhM2I5NTAxODA4ODlhM2I0OGRhZWZiN2JlNi4uYzc1NzQ5NWJkYzU1MDQzM2UwMDI1ZmZj
ZmFlY2YwMjRkM2FlNGNiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaApAQCAtMjcsNyArMjcsNyBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGws
IENvZGVGb3JDb25zdHJ1Y3QgfTsKK2VudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCA6IHVpbnQ4
X3QgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogCiBpbmxpbmUgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbkZyb21Jc0NhbGwoYm9vbCBpc0NhbGwpCiB7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg3
YjNiMTkyNGIzODNhYWI2NzAyMGQ0ZmM4OTk4YzJiMDA3ODY4MTAuLjc3MTA1OGU3ZGY1Y2Q1ODVi
MWRmNDA1MzNmOWNhNTg5NjM3NGFkMDkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDYtMDYgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBVbmxpbmtlZENv
ZGVCbG9jayBzaG91bGQgYmUgZXZlbnR1YWxseSBqZXR0aXNvbmVkIGluIFZNIG1pbmkgbW9kZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MDIzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3Mv
cmVwYXJzaW5nLXVubGlua2VkLWNvZGVibG9jay5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgIChoZWxsbyk6CisKIDIwMTktMDYtMDQgIFRhZGV1IFphZ2FsbG8gIDx0emFn
YWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQXJndW1lbnQgZWxpbWluYXRpb24gc2hvdWxkIGNo
ZWNrIHRyYW5zaXRpdmUgZGVwZW5kZW50cyBmb3IgaW50ZXJmZXJlbmNlCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9yZXBhcnNpbmctdW5saW5rZWQtY29kZWJsb2NrLmpzIGIvSlNUZXN0cy9z
dHJlc3MvcmVwYXJzaW5nLXVubGlua2VkLWNvZGVibG9jay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNmRhODRm
ZGIwNDg1YTM1OGQ4OWM1NDc0YTZhMzNmOGEwZTczODU1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvcmVwYXJzaW5nLXVubGlua2VkLWNvZGVibG9jay5qcwpAQCAtMCwwICsxLDI0
IEBACisvL0AgcnVuRGVmYXVsdCgiZm9yY2VDb2RlQmxvY2tUb0pldHRpc29uRHVlVG9PbGRBZ2U9
MSIsICItLWZvcmNlTWluaVZNTW9kZT0xIikKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIGhlbGxvKCkK
K3sKKyAgICByZXR1cm4gKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZnVuY3Rpb24gd29ybGQoKSB7
CisgICAgICAgICAgICByZXR1cm4gNDI7CisgICAgICAgIH07CisgICAgICAgIHJldHVybiB3b3Js
ZCgpOworICAgIH0oKSk7Cit9CisKKy8vIENvbXBpbGUgaGVsbG8gYW5kIHdvcmxkIGZ1bmN0aW9u
Lgorc2hvdWxkQmUoaGVsbG8oKSwgNDIpOworLy8gS2ljayBmdWxsIEdDIDIwIHRpbWVzIHRvIG1h
a2UgVW5saW5rZWRDb2RlQmxvY2sgYWdlZCBhbmQgZGVzdHJveWVkLiBKZXR0aXNvbiBoZWxsbyBD
b2RlQmxvY2ssIGFuZCB1bmRlcmx5aW5nIHdvcmxkIFVubGlua2VkQ29kZUJsb2NrLgorZm9yICh2
YXIgaSA9IDA7IGkgPCAyMDsgKytpKQorICAgIGZ1bGxHQygpOworLy8gUmVjb21waWxlIHdvcmxk
Lgorc2hvdWxkQmUoaGVsbG8oKSwgNDIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371569</attachid>
            <date>2019-06-07 00:07:23 -0700</date>
            <delta_ts>2019-06-07 16:14:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198023-20190607000722.patch</filename>
            <type>text/plain</type>
            <size>24937</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MjFiYWFhYTM5ZThlZDQ1OTQ1ZjJiZTBmNDM5ODY4MWU4NDczZDcwLi4xM2U1MjZkNWFkZTBjZTRi
ZmQ5ZWM0Mzk0YzU2YjZlZDc5ZjJlYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NCBAQAorMjAxOS0wNi0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVubGlua2VkQ29kZUJsb2NrIHNob3VsZCBiZSBldmVudHVhbGx5
IGpldHRpc29uZWQgaW4gVk0gbWluaSBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgwMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXaGlsZSBDb2RlQmxvY2sgaXMgcGVyaW9kaWNhbGx5IGpldHRp
c29uZWQsIFVubGlua2VkQ29kZUJsb2NrIGFuZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBj
YW4gYmUgcmV0YWluZWQgYWxtb3N0IGZvcmV2ZXIgaW4gY2VydGFpbiB0eXBlIG9mIGFwcGxpY2F0
aW9ucy4KKyAgICAgICAgV2hlbiB3ZSBleGVjdXRlIGEgcHJvZ3JhbSwgd2hpY2ggaGFzIFVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jayByZXRhaW5lZCBpbiBDb2RlQ2FjaGUuIEFuZCBVbmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2sgaG9sZHMgYXJyYXkgb2YgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
CisgICAgICAgIEFuZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZXMgaG9sZCBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrcyBvbmNlIGl0IGlzIGdlbmVyYXRlZC4gU28gZXZlbnR1YWxseSwgdGhp
cyB0cmVlIGdldHMgbGFyZ2VyIGFuZCBsYXJnZXIgdW50aWwgd2UgcHVyZ2UKKyAgICAgICAgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrIGZyb20gQ29kZUNhY2hlLiBUaGlzIGlzIE9LIGluIHRoZSBi
cm93c2VyIGNhc2UuIFdlIG5hdmlnYXRlIHRvIHZhcmlvdXMgb3RoZXIgcGFnZXMsIGFuZCBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2tzIHNob3VsZCBldmVudHVhbGx5CisgICAgICAgIGJlIHBydW5l
ZCBmcm9tIENvZGVDYWNoZSB3aXRoIHRoZSBuZXcgb25lcy4gU28gdGhpcyB0cmVlIHdvbid0IGJl
IHJldGFpbmVkIGZvcmV2ZXIuIEJ1dCB0aGUgYmVoYXZpb3IgaXMgZGlmZmVyZW50IGluIHRoZSBv
dGhlciBhcHBsaWNhdGlvbnMgdGhhdCBkbyBub3QgaGF2ZQorICAgICAgICBuYXZpZ2F0aW9ucy4g
SWYgdGhleSBvbmx5IGhhdmUgb25lIHByb2dyYW0gd2hpY2ggaG9sZHMgYWxsLCB3ZSBiYXNpY2Fs
bHkgcmV0YWluIHRoaXMgdHJlZSBkdXJpbmcgZXhlY3V0aW5nIHRoaXMgYXBwbGljYXRpb24uIFRo
ZSBzYW1lIHRoaW5nIGNhbiBoYXBwZW4gaW4KKyAgICAgICAgd2ViIGFwcGxpY2F0aW9ucyB3aGlj
aCBkb2VzIG5vdCBoYXZlIG5hdmlnYXRpb24gYW5kIGtlZXBzIGFsaXZlIGZvciBhIGxvbmcgdGlt
ZS4gT25jZSB3ZSBoaXQgQ29kZUNhY2hlIGxpbWl0IGJ5IHBlcmlvZGljYWxseSBleGVjdXRpbmcg
YSBuZXcgc2NyaXB0LCB3ZSB3aWxsCisgICAgICAgIGhpdCB0aGUgdXBwZXJtb3N0IG9mIG1lbW9y
eSBmb290cHJpbnQuIEJ1dCB1bnRpbCB0aGF0LCB3ZSBpbmNyZWFzZSBvdXIgbWVtb3J5IGZvb3Rw
cmludC4KKworICAgICAgICBIb3dldmVyLCBkZXN0cm95aW5nIHRoZXNlIFVubGlua2VkQ29kZUJs
b2NrcyBhbmQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVzIGNhdXNlcyBhIHRyaWNreSBwcm9i
bGVtLiBJbiB0aGUgYnJvd3NlciBlbnZpcm9ubWVudCwgbmF2aWdhdGlvbiBjYW4gaGFwcGVuIGF0
IGFueQorICAgICAgICB0aW1lLiBTbyBldmVuIGlmIHRoZSBnaXZlbiBVbmxpbmtlZENvZGVCbG9j
ayBzZWVtcyB1bnVzZWQgaW4gdGhlIGN1cnJlbnQgcGFnZSwgaXQgY2FuIGJlIHVzZWQgd2hlbiBu
YXZpZ2F0aW5nIHRvIGEgbmV3IHBhZ2Ugd2hpY2ggaXMgdW5kZXIgdGhlIHNhbWUgZG9tYWluLgor
ICAgICAgICBPbmUgZXhhbXBsZSBpcyBpbml0aWFsaXppbmcgZnVuY3Rpb24gaW4gYSBzY3JpcHQu
IEl0IGlzIG9ubHkgZXhlY3V0ZWQgb25jZSBwZXIgcGFnZS4gU28gb25jZSBpdCBpcyBleGVjdXRl
ZCwgaXQgc2VlbXMgdGhhdCB0aGlzIFVubGlua2VkQ29kZUJsb2NrIGlzIHVudXNlZC4KKyAgICAg
ICAgQnV0IHRoaXMgd2lsbCBiZSB1c2VkIHdoZW4gd2UgbmF2aWdhdGUgdG8gYSBuZXcgcGFnZS4g
UHJ1bmluZyBjb2RlIGJsb2NrcyBiYXNlZCBvbiB1c2FnZSBjb3VsZCBjYXVzZSBwZXJmb3JtYW5j
ZSByZWdyZXNzaW9uLgorCisgICAgICAgIEJ1dCBpZiBvdXIgVk0gaXMgbWluaSBWTSBtb2RlLCB0
aGUgc3RvcnkgaXMgZGlmZmVyZW50LiBJbiBtaW5pIFZNIG1vZGUsIHdlIGZvY3VzIG9uIG1lbW9y
eSBmb290cHJpbnQgcmF0aGVyIHRoYW4gcGVyZm9ybWFuY2UgZS5nLiBkYWVtb25zLiBUaGUgZGFl
bW9uIG5ldmVyCisgICAgICAgIHJldXNlIHRoZXNlIENvZGVDYWNoZSBzaW5jZSB3ZSBkbyBub3Qg
aGF2ZSB0aGUgbmF2aWdhdGlvbi4KKworICAgICAgICBUaGlzIHBhdGNoIGxvZ2ljYWxseSBtYWtl
cyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSAtPiBVbmxpbmtlZENvZGVCbG9jayByZWZlcmVu
Y2Ugd2VhayB3aGVuIFZNIGlzIG1pbmkgbW9kZS4gSWYgVW5saW5rZWRDb2RlQmxvY2sgaXMgdXNl
ZCBpbiBwcmV2aW91cyBHQworICAgICAgICBjeWNsZSwgd2UgcmV0YWluIGl0LiBCdXQgaWYgaXQg
aXMgbm90IHVzZWQsIGFuZCBpZiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBpcyBvbmx5IHRo
ZSBjZWxsIGtlZXBpbmcgVW5saW5rZWRDb2RlQmxvY2sgYWxpdmUsIHdlIGRlc3Ryb3kgaXQuIEl0
IGlzIGEKKyAgICAgICAgaGV1cmlzdGljLiBJbiBhIHN1cGVyIHBhdGhvbG9naWNhbCBjYXNlLCBp
dCBjb3VsZCBpbmNyZWFzZSBtZW1vcnkgZm9vdHByaW50LiBDb25zaWRlciB0aGUgZm9sbG93aW5n
IGV4YW1wbGUuCisKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKEExKSAt
PiBVbmxpbmtlZENvZGVCbG9jayhCMSkgLT4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoQzEp
IC0+IFVubGlua2VkQ29kZUJsb2NrKEQxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvZGVCbG9jayhFMSkKKworICAgICAgICBXZSBjb3VsZCBkZWxldGUg
QTEsIEIxLCBhbmQgQzEgd2hpbGUga2VlcGluZyBEMS4gQnV0IGlmIHdlIGV2ZW50dWFsbHkgcmUt
ZXhlY3V0ZSB0aGUgc2FtZSBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gQTEsIEIxLCBDMSwgdGhleSB3
aWxsIGJlIG5ld2x5IGNyZWF0ZWQsIGFuZAorICAgICAgICB3ZSB3aWxsIGNyZWF0ZSBkdXBsaWNh
dGUgVW5saW5rZWRDb2RlQmxvY2sgYW5kIGluc3RydWN0aW9ucyBzdHJlYW0gZm9yIEQxLgorCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmxpbmtlZENv
ZGVCbG9jayhEMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDb2RlQmxvY2soRTEpCisKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KEEyKSAtPiBVbmxpbmtlZENvZGVCbG9jayhCMikgLT4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUoQzIpIC0+IFVubGlua2VkQ29kZUJsb2NrKEQyKQorCisgICAgICAgIEJ1dCB0aGlzIGRvZXMg
bm90IGhhcHBlbiBpbiBwcmFjdGljZSBhbmQgZXZlbiBpdCBoYXBwZW5zLCB3ZSBldmVudHVhbGx5
IGRpc2NhcmQgRDEgYW5kIEQyIHNpbmNlIENvZGVCbG9jayBFMSB3aWxsIGJlIGpldHRpc29uZWQg
YW55d2F5LiBTbyBpbiBwcmFjdGljZSwgd2UgZG8KKyAgICAgICAgbm90IHNlZSBtZW1vcnkgZm9v
dHByaW50IGluY3JlYXNlLiBXZSB0ZXN0ZWQgaXQgaW4gR21haWwgYW5kIHRoZSB0YXJnZXQgYXBw
bGljYXRpb24sIGJ1dCBib3RoIHNhaWQgbWVtb3J5IGZvb3RwcmludCByZWR1Y3Rpb24gKDMwIE1C
IC8gNDAwIE1CIGFuZCAxIE1CIC82IE1CKS4KKyAgICAgICAgV2hpbGUgdGhpcyBhZmZlY3RzIG9u
IHBlcmZvcm1hbmNlIG11Y2ggb24gdGVzdHMgd2hpY2ggaGFzIG5hdmlnYXRpb24gKDEtMyAlIHJl
Z3Jlc3Npb24gaW4gU3BlZWRvbWV0ZXIyLCBub3RlIHRoYXQgSmV0U3RyZWFtMiBkb2VzIG5vdCBz
aG93IHJlZ3Jlc3Npb24gaW4geDY0LAorICAgICAgICB3aGlsZSBpdCBpcyBub3QgZW5hYmxpbmcg
bWluaSBtb2RlKSwgd2UgZG8gbm90IGFwcGx5IHRoaXMgdG8gbm9uIG1pbmkgbW9kZSBWTSB1bnRp
bCB3ZSBjb21lIHVwIHdpdGggYSBnb29kIHN0cmF0ZWd5IHRvIGZhc3RlbiBwZXJmb3JtYW5jZSBv
ZiByZS1nZW5lcmF0aW9uLgorICAgICAgICBQZXJzb25hbGx5IEkgdGhpbmsgZmx1c2hpbmcgZGVz
dHJveWVkIFVubGlua2VkQ29kZUJsb2NrIHRvIHRoZSBkaXNrIHNvdW5kcyBwcm9taXNpbmcuCisK
KyAgICAgICAgSWYgVW5saW5rZWRDb2RlQmxvY2sgaXMgZ2VuZXJhdGVkIGZyb20gYnl0ZWNvZGUg
Y2FjaGUsIHdlIGRvIG5vdCBtYWtlIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIC0+IFVubGlu
a2VkQ29kZUJsb2NrIGxpbmsgd2VhayBiZWNhdXNlIHRoZSBkZWNvZGVyIG9mIHRoZSBieXRlY29k
ZQorICAgICAgICBjYWNoZSBhc3N1bWVzIHRoYXQgZ2VuZXJhdGVkIEpTQ2VsbHMgd29uJ3QgYmUg
ZGVzdHJveWVkIHdoaWxlIHRoZSBwYXJlbnQgY2VsbHMgb2YgdGhhdCBjZWxsIGFyZSBsaXZlLiBU
aGlzIGlzIHRydWUgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIGFuZCB0aGlzIGFzc3Vt
cHRpb24KKyAgICAgICAgd2lsbCBiZSBicm9rZW4gd2l0aCB0aGlzIHBhdGNoLiBTbywgZm9yIG5v
dywgd2UgZG8gbm90IG1ha2UgdGhpcyBsaW5rIHdlYWsuIEN1cnJlbnRseSwgb3VyIHRhcmdldCBh
cHBsaWNhdGlvbiBkb2VzIG5vdCB1c2UgYnl0ZWNvZGUgY2FjaGUgc28gaXQgaXMgT0suCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhbHNvIGludHJvZHVjZSBzaW1wbGUgaGV1cmlzdGljIHRvby4gV2Ug
YXJlIGNvdW50aW5nIFVubGlua2VkQ29kZUJsb2NrJ3MgYWdlLiBBbmQgb25jZSB0aGUgYWdlIGJl
Y29tZXMgbWF4aW11bSBzaXplLCB3ZSBtYWtlIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIC0+
CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrIGxpbmsgd2Vhay4gV2UgYWxzbyB1c2UgZXhlY3V0
aW9uIGNvdW50ZXIgaW5mb3JtYXRpb24gdG8gcmVzZXQgdGhpcyBhZ2U6IENvZGVCbG9jayB3aWxs
IHJlc2V0IHVuZGVseWluZyBVbmxpbmtlZENvZGVCbG9jaydzIGFnZSBpZiBpdCBoYXMgc29tZQor
ICAgICAgICBleGVjdXRpb24uIFdoaWxlIHRoaXMgaGV1cmlzdGljIGlzIHF1aXRlIHNpbXBsZSwg
aXQgaGFzIHNvbWUgZWZmZWN0IGluIHByYWN0aWNlLiBCYXNpY2FsbHkgd2hhdCBoYXBwZW5zIHdp
dGggdGhpcyBoZXVyaXN0aWMgaXMgdGhhdCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSAtPgor
ICAgICAgICBVbmxpbmtlZENvZGVCbG9jayBsaW5rIHN0cm9uZy4gV2hlbiBHQyBoYXBwZW5zLCB3
ZSBhcmUgZXhlY3V0aW5nIHNvbWUgQ29kZUJsb2Nrcywgd2hpY2ggYmVjb21lIGxpdmUuIEFuZCBT
Y3JpcHRFeGVjdXRhYmxlcyAtPiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZXMgaGVsZAorICAg
ICAgICBieSB0aGlzIENvZGVCbG9jayBiZWNvbWUgYWxzbyBsaXZlLiBUaGVuIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlcyBjYW4gbWFyayB0aGUgY2hpbGQgVW5saW5rZWRDb2RlQmxvY2tzIGlm
IGl0IGlzIG5vdCBzbyBvbGQuCisgICAgICAgIElmIHNvbWUgb2YgcGFyZW50IFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlIGJlY29tZXMgZGVhZCwgY2hpbGQgVW5saW5rZWRDb2RlQmxvY2tzIHRl
bmRzIHRvIGJlIGRlYWQgdW5sZXNzIHNvbWUgbGl2ZSBDb2RlQmxvY2sgaG9sZHMgaXQuIEJ1dCBp
dCBpcyBPSyBmb3IgYSBmaXJzdAorICAgICAgICBoZXVyaXN0aWNzIHNpbmNlIHRoaXMgbWVhbnMg
dGhhdCBwYXJlbnQgY29kZSBibG9jayBpcyBub3cgY29uc2lkZXJlZCBvbGQsIHJlYWNoYWJsZSBV
bmxpbmtlZENvZGVCbG9jayB3aWxsIGJlIHVzZWQgd2hlbiB0aGUgcGFyZW50IGlzIGV4ZWN1dGVk
IGFnYWluLiBTbyBkZXN0cm95aW5nCisgICAgICAgIHRoZSB0cmVlIGlzIE9LIGV2ZW4gaWYgdGhl
IHRyZWUgbWF5IGluY2x1ZGUgc29tZSBuZXcgVW5saW5rZWRDb2RlQmxvY2suIFdoaWxlIHdlIGNv
dWxkIG1ha2UgbW9yZSBzb3BoaXN0aWNhdGVkIG1lY2hhbmlzbSB0byBtYW5hZ2UgdGhlc2UgbGlm
ZXRpbWUsIEkgdGhpbmsgdGhpcyBpcyBhCisgICAgICAgIGdvb2Qgc3RhcnRpbmcgcG9pbnQuCisK
KyAgICAgICAgQmFzZWQgb24gbWVhc3VyZW1lbnQsIHdlIHBpY2sgNyBhcyBhIG1heGltdW0gYWdl
LiBJZiB3ZSBwaWNrIDAsIHdlIGNhbiBnZXQgbW9yZSBtZW1vcnkgcmVkdWN0aW9uICgxIC0gMS41
IE1CISksIHdoaWxlIHdlIGVuZHMgdXAgcmVwYXJzaW5nIGNvZGVzIHNvIG1hbnkgdGltZXMuCisg
ICAgICAgIEl0IHNlZW1zIHRoYXQgNyBjYW4gcmVkdWNlIGZhaXIgYW1vdW50IG9mIG1lbW9yeSB3
aGlsZSBkb2luZyBzbWFsbCAjIG9mIHJlcGFyc2luZyBvbiBhdmVyYWdlICh1c3VhbGx5LCAxLCAy
LiBTb21ldGltZXMsIDEwMC4gQnV0IG5vdCAzMDAsIHdoaWNoIGlzIHRoZSBjYXNlIGluIDApLgor
ICAgICAgICBJZiB3ZSB3YW50IHRvIGdldCBtb3JlIG1lbW9yeSByZWR1Y3Rpb24gZm9yIHRoZSBz
YWtlIG9mIHBlcmZvcm1hbmNlLCB3ZSBjb3VsZCBkZWNyZWFzZSB0aGlzIGFnZSBsaW1pdC4KKwor
ICAgICAgICBTaW5jZSB3ZSBkbyBub3QgaGF2ZSBhbiBhdXRvbWF0ZWQgc2NyaXB0IHJpZ2h0IG5v
dyBzbyBpdCBpcyBhIGJpdCBkaWZmaWN1bHQgdG8gbWVhc3VyZSBtZW1vcnkgZm9vdHByaW50IHBy
ZWNpc2VseS4gQnV0IG1hbnVhbCB0ZXN0aW5nIHNob3dzIHRoYXQgdGhpcyBwYXRjaCBpbXByb3Zl
cworICAgICAgICBtZW1vcnkgZm9vdHByaW50IG9mIG91ciB0YXJnZXQgYXBwbGljYXRpb24gZnJv
bSBhYm91dCA2LjUgTUIgdG8gYWJvdXQgNS45IE1CLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9u
YWxseSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFnZSBjb25zdCk6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjpyZXNldEFnZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0Zvcik6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGVDYWNoZWRDb2Rl
QmxvY2tzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFs
aXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6Okhl
YXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAqIHJ1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5r
ZWRDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZVNwZWNp
YWxpemF0aW9uS2luZC5oOgorCiAyMDE5LTA2LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRlIGV4Y2VwdGlvbiBzY29wZSBm
b3IgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBhZGUyYWNlM2QxYTQ2ZDEzMTZhMDQzZDMxMDU4
MjAxMDAxNzcwZDUwLi5iZjc1YWIwYjU2Y2MwZGJlMGM5NjY4YmNkYTA0YmUxZGFjYWEyZDNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTM3
Myw2ICsxMzczLDM1IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShW
TSYgdm0pCiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogCisgICAgYXV0byB1cGRh
dGVBY3Rpdml0eSA9IFsmXSB7CisgICAgICAgIGlmICghVk06OmlzSW5NaW5pTW9kZSgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBKSVRDb2RlKiBqaXRDb2RlID0gbV9qaXRDb2RlLmdl
dCgpOworICAgICAgICBkb3VibGUgY291bnQgPSAwOworICAgICAgICBib29sIGFsd2F5c0FjdGl2
ZSA9IGZhbHNlOworICAgICAgICBzd2l0Y2ggKEpJVENvZGU6OmppdFR5cGVGb3Ioaml0Q29kZSkp
IHsKKyAgICAgICAgY2FzZSBKSVRUeXBlOjpOb25lOgorICAgICAgICBjYXNlIEpJVFR5cGU6Okhv
c3RDYWxsVGh1bms6CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgSklUVHlwZTo6
SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAgICAgICAgIGNvdW50ID0gbV9sbGludEV4ZWN1dGVDb3Vu
dGVyLmNvdW50KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBKSVRUeXBlOjpC
YXNlbGluZUpJVDoKKyAgICAgICAgICAgIGNvdW50ID0gbV9qaXRFeGVjdXRlQ291bnRlci5jb3Vu
dCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSklUVHlwZTo6REZHSklUOgor
ICAgICAgICBjYXNlIEpJVFR5cGU6OkZUTEpJVDoKKyAgICAgICAgICAgIGFsd2F5c0FjdGl2ZSA9
IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoYWx3YXlz
QWN0aXZlIHx8IG1fcHJldmlvdXNDb3VudGVyIDwgY291bnQpIHsKKyAgICAgICAgICAgIC8vIENv
ZGVCbG9jayBpcyBhY3RpdmUgcmlnaHQgbm93LCBzbyByZXNldHRpbmcgVW5saW5rZWRDb2RlQmxv
Y2sncyBhZ2UuCisgICAgICAgICAgICBtX3VubGlua2VkQ29kZS0+cmVzZXRBZ2UoKTsKKyAgICAg
ICAgfQorICAgICAgICBtX3ByZXZpb3VzQ291bnRlciA9IGNvdW50OworICAgIH07CisgICAgdXBk
YXRlQWN0aXZpdHkoKTsKKwogICAgIFZNOjpTcGFjZUFuZFNldDo6c2V0Rm9yKCpzdWJzcGFjZSgp
KS5yZW1vdmUodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAppbmRleCA0ZTYyYmRlYzIyZWU5ZTVlMjg2ZjkxNjU0MDRiMGZjMzJkNzdjMjg5Li40
ZDMyNzllY2M5MmI0ZDI3OWNiYzg4NDlhYjg4NTg4MDhlOTdjNTU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0xMDEwLDYgKzEwMTAsNyBAQCBjbGFz
cyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBSZWZQdHI8TWV0YWRhdGFUYWJsZT4g
bV9tZXRhZGF0YTsKIAogICAgIE1vbm90b25pY1RpbWUgbV9jcmVhdGlvblRpbWU7CisgICAgZG91
YmxlIG1fcHJldmlvdXNDb3VudGVyIHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJhcmVE
YXRhPiBtX3JhcmVEYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGY5YzNiYTlkNzE2NDdkNDIzZGIxOGEx
NDQxOTgwNGQzNGYzMGY0NDEuLjc3NDVhNDFhZDJiM2ExZmFiY2FkNDI0OGMxZTVlNzQ4NjRlZDBk
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcApAQCAtNzEsNiArNzEsNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5r
ZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQog
ICAgICwgbV9ldmFsQ29udGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZXZhbENv
bnRleHRUeXBlKCkpKQogICAgICwgbV9jb2RlVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29k
ZVR5cGUpKQogICAgICwgbV9kaWRPcHRpbWl6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWl4ZWRU
cmlTdGF0ZSkpCisgICAgLCBtX2FnZSgwKQogICAgICwgbV9wYXJzZU1vZGUoaW5mby5wYXJzZU1v
ZGUoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAg
ICAsIG1fbWV0YWRhdGEoVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpjcmVhdGUoKSkKQEAgLTg4LDYg
Kzg5LDcgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOwogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGhpc09iamVjdC0+Y2VsbExv
Y2soKSk7CisgICAgdGhpc09iamVjdC0+bV9hZ2UgPSBzdGQ6Om1pbjx1bnNpZ25lZD4oc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHRoaXNPYmplY3QtPm1fYWdlKSArIDEsIG1heEFnZSk7CiAgICAgZm9y
IChGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3I6Oml0ZXJhdG9yIHB0ciA9IHRoaXNPYmplY3QtPm1f
ZnVuY3Rpb25EZWNscy5iZWdpbigpLCBlbmQgPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRGVjbHMu
ZW5kKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgqcHRyKTsK
ICAgICBmb3IgKEZ1bmN0aW9uRXhwcmVzc2lvblZlY3Rvcjo6aXRlcmF0b3IgcHRyID0gdGhpc09i
amVjdC0+bV9mdW5jdGlvbkV4cHJzLmJlZ2luKCksIGVuZCA9IHRoaXNPYmplY3QtPm1fZnVuY3Rp
b25FeHBycy5lbmQoKTsgcHRyICE9IGVuZDsgKytwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDJhMzUwYTFmMTFjZjIx
MzFmNzJjMmI0YmQ4MDkwMThmZTcxMmVmZjIuLmMxOGE3MGQyYTkyZjllZjg2YjQ0ZDhmODgxODMx
OGFkOWRhMmZiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCkBAIC0zMzksNiArMzM5LDExIEBAIGNsYXNzIFVubGlua2VkQ29k
ZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgVHJpU3RhdGUgZGlkT3B0aW1pemUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxUcmlTdGF0ZT4obV9kaWRPcHRpbWl6ZSk7IH0KICAgICB2
b2lkIHNldERpZE9wdGltaXplKFRyaVN0YXRlIGRpZE9wdGltaXplKSB7IG1fZGlkT3B0aW1pemUg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGlkT3B0aW1pemUpOyB9CiAKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIG1heEFnZSA9IDc7CisKKyAgICB1bnNpZ25lZCBhZ2UoKSBjb25zdCB7
IHJldHVybiBtX2FnZTsgfQorICAgIHZvaWQgcmVzZXRBZ2UoKSB7IG1fYWdlID0gMDsgfQorCiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKICAgICBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMmIGxpdmVuZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC00MjQs
NiArNDI5LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICB1bnNpZ25lZCBtX2V2YWxDb250ZXh0VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9jb2RlVHlw
ZSA6IDI7CiAgICAgdW5zaWduZWQgbV9kaWRPcHRpbWl6ZSA6IDI7CisgICAgdW5zaWduZWQgbV9h
Z2UgOiAzOwogcHVibGljOgogICAgIENvbmN1cnJlbnRKU0xvY2sgbV9sb2NrOwogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDE0YTA2OWM1ZTA3NjA4ZDMwOTE4MjI5MzY1
NmViMjE4N2ZkOTdmZDYuLjEzZmYxYzM3M2U2NGU2NGRkZmNiM2NiZWM5ZGE3MDU0ZjhiMWVkMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMTA3LDYgKzEwNyw3IEBAIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0
cnVjdHVyZSogc3RydWN0CiAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwgbV9mdW5jdGlvbk1vZGUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkKICAgICAsIG1fZGVyaXZl
ZENvbnRleHRUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXJpdmVkQ29udGV4dFR5cGUpKQor
ICAgICwgbV9pc0dlbmVyYXRlZEZyb21DYWNoZShmYWxzZSkKICAgICAsIG1fdW5saW5rZWRDb2Rl
QmxvY2tGb3JDYWxsKCkKICAgICAsIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKQog
ICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCkBAIC0xNDIsNyArMTQzLDI0IEBAIHZvaWQgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvCiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqPihjZWxsKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICBpZiAoIXRoaXNPYmplY3QtPm1f
aXNDYWNoZWQpIHsKKworICAgIC8vIEN1cnJlbnRseSwgYnl0ZWNvZGUgY2FjaGUgYXNzdW1lcyB0
aGF0IHRoZSB0cmVlIG9mIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGFuZCBVbmxpbmtlZENv
ZGVCbG9jayB3aWxsIG5vdCBiZSBkZXN0cm95ZWQgd2hpbGUgdGhlIHBhcmVudCBpcyBsaXZlLgor
ICAgIC8vIEJ5dGVjb2RlIGNhY2hlIHVzZXMgdGhpcyBhc3VtcHRpb24gdG8gYXZvaWQgZHVwbGlj
YXRlIG1hdGVyaWFsaXphdGlvbiBieSBib29ra2VlcGluZyB0aGUgaGVhcCBjZWxscyBpbiB0aGUg
b2Zmc3RlLXRvLXBvaW50ZXIgbWFwLgorICAgIC8vCisgICAgLy8gV2UgYWxzbyBrZWVwIGJ1aWx0
aW4gZnVuY3Rpb25zLiBUaGUgYnVpbHRpbiBmdW5jdGlvbnMgYXJlIGZvdW5kYW1lbnRhbCBsaWJy
YXJ5IGZvciBKYXZhU2NyaXB0LCB3aGljaCBtZWFucyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQgaW4g
cmFuZG9tIHBsYWNlcyBvZgorICAgIC8vIHRoZSBjbGllbnQgc2NyaXB0cy4gSXQgaXMgc2FmZSB0
byBhc3N1bWUgdGhhdCBidWlsdGluIGZ1bmN0aW9ucyBhcmUgdXNlZCByZWxhdGl2ZWx5IGZyZXF1
ZW50bHkgZnJvbSBtYW55IGNhbGwgc2l0ZXMuCisgICAgaWYgKFZNOjppc0luTWluaU1vZGUoKSAm
JiAhdGhpc09iamVjdC0+bV9pc0dlbmVyYXRlZEZyb21DYWNoZSAmJiAhdGhpc09iamVjdC0+aXNC
dWlsdGluRnVuY3Rpb24oKSkgeworICAgICAgICBhdXRvIG1hcmtJZlByb2ZpdGFibGUgPSBbJl0g
KFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiYgdW5saW5rZWRDb2RlQmxv
Y2spIHsKKyAgICAgICAgICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5kaWRPcHRpbWl6
ZSgpID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCh1bmxp
bmtlZENvZGVCbG9jayk7CisgICAgICAgICAgICBlbHNlIGlmICh1bmxpbmtlZENvZGVCbG9jay0+
YWdlKCkgPCBVbmxpbmtlZENvZGVCbG9jazo6bWF4QWdlKQorICAgICAgICAgICAgICAgIHZpc2l0
b3IuYXBwZW5kKHVubGlua2VkQ29kZUJsb2NrKTsKKyAgICAgICAgfTsKKyAgICAgICAgbWFya0lm
UHJvZml0YWJsZSh0aGlzT2JqZWN0LT5tX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbCk7CisgICAg
ICAgIG1hcmtJZlByb2ZpdGFibGUodGhpc09iamVjdC0+bV91bmxpbmtlZENvZGVCbG9ja0ZvckNv
bnN0cnVjdCk7CisgICAgfSBlbHNlIGlmICghdGhpc09iamVjdC0+bV9pc0NhY2hlZCkgewogICAg
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkQ29kZUJsb2NrRm9yQ2Fs
bCk7CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5saW5rZWRDb2RlQmxv
Y2tGb3JDb25zdHJ1Y3QpOwogICAgIH0KQEAgLTE5NywyNCArMjE1LDEyIEBAIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENv
ZGUoCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcihDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCkKLXsKLSAgICBzd2l0Y2ggKHNw
ZWNpYWxpemF0aW9uS2luZCkgewotICAgIGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAgIHJldHVy
biBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbC5nZXQoKTsKLSAgICBjYXNlIENvZGVGb3JDb25z
dHJ1Y3Q6Ci0gICAgICAgIHJldHVybiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0Lmdl
dCgpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0
cjsKLX0KLQogVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCiAg
ICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBQYXJz
ZXJFcnJvciYgZXJyb3IsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgaWYgKG1f
aXNDYWNoZWQpCi0gICAgICAgIGRlY29kZUNhY2hlZENvZGVCbG9ja3MoKTsKKyAgICAgICAgZGVj
b2RlQ2FjaGVkQ29kZUJsb2Nrcyh2bSk7CiAgICAgc3dpdGNoIChzcGVjaWFsaXphdGlvbktpbmQp
IHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgogICAgICAgICBpZiAoVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogY29kZUJsb2NrID0gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwuZ2V0KCkpCkBA
IC0yNDYsNyArMjUyLDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OnVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmRlY29kZUNhY2hlZENvZGVC
bG9ja3MoKQordm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVjb2RlQ2FjaGVkQ29k
ZUJsb2NrcyhWTSYgdm0pCiB7CiAgICAgQVNTRVJUKG1faXNDYWNoZWQpOwogICAgIEFTU0VSVCht
X2RlY29kZXIpOwpAQCAtMjU2LDcgKzI2Miw3IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OmRlY29kZUNhY2hlZENvZGVCbG9ja3MoKQogICAgIGludDMyX3QgY2FjaGVkQ29kZUJs
b2NrRm9yQ2FsbE9mZnNldCA9IG1fY2FjaGVkQ29kZUJsb2NrRm9yQ2FsbE9mZnNldDsKICAgICBp
bnQzMl90IGNhY2hlZENvZGVCbG9ja0ZvckNvbnN0cnVjdE9mZnNldCA9IG1fY2FjaGVkQ29kZUJs
b2NrRm9yQ29uc3RydWN0T2Zmc2V0OwogCi0gICAgRGVmZXJHQyBkZWZlckdDKGRlY29kZXItPnZt
KCkuaGVhcCk7CisgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogCiAgICAgLy8gTm8gbmVl
ZCB0byBjbGVhciBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbCBoZXJlLCBzaW5jZSB3ZSBtb3Zl
ZCB0aGUgZGVjb2RlciBvdXQgb2YgdGhlIHNhbWUgc2xvdAogICAgIGlmIChjYWNoZWRDb2RlQmxv
Y2tGb3JDYWxsT2Zmc2V0KQpAQCAtMjY4LDcgKzI3NCw3IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmRlY29kZUNhY2hlZENvZGVCbG9ja3MoKQogCiAgICAgV1RGOjpzdG9yZVN0
b3JlRmVuY2UoKTsKICAgICBtX2lzQ2FjaGVkID0gZmFsc2U7Ci0gICAgZGVjb2Rlci0+dm0oKS5o
ZWFwLndyaXRlQmFycmllcih0aGlzKTsKKyAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzKTsK
IH0KIAogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KCkKQEAgLTI4NCw0ICsyOTAsMjUgQEAg
dm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6c2V0SW52YWxpZFR5cGVQcm9maWxpbmdP
ZmZzZXRzKCkKICAgICBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCk7CiB9CiAKK3ZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKK3sKKyAgICBpZiAoVk06OmlzSW5N
aW5pTW9kZSgpICYmICFtX2lzR2VuZXJhdGVkRnJvbUNhY2hlICYmICFpc0J1aWx0aW5GdW5jdGlv
bigpKSB7CisgICAgICAgIGJvb2wgaXNDbGVhcmVkID0gZmFsc2U7CisgICAgICAgIGJvb2wgaXNT
dGlsbFZhbGlkID0gZmFsc2U7CisgICAgICAgIGF1dG8gY2xlYXJJZkRlYWQgPSBbJl0gKFdyaXRl
QmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiYgdW5saW5rZWRDb2RlQmxvY2spIHsK
KyAgICAgICAgICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHVubGlua2VkQ29kZUJsb2Nr
LmdldCgpKSkgeworICAgICAgICAgICAgICAgIHVubGlua2VkQ29kZUJsb2NrLmNsZWFyKCk7Cisg
ICAgICAgICAgICAgICAgaXNDbGVhcmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgIGlzU3RpbGxWYWxpZCA9IHRydWU7CisgICAgICAgIH07CisgICAgICAgIGNs
ZWFySWZEZWFkKG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsKTsKKyAgICAgICAgY2xlYXJJZkRl
YWQobV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdCk7CisgICAgICAgIGlmIChpc0NsZWFy
ZWQgJiYgIWlzU3RpbGxWYWxpZCkKKyAgICAgICAgICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlU3BhY2Uuc2V0LnJlbW92ZSh0aGlzKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCAwYzdmODljZDRlYjAyNGZjZjgwZDc4ODM2
YzNmNDNjMGE3Y2QyM2MzLi5iZWQ5NWQzMDllN2YxNmRjZDY5NzkyZmZlZDQ0YTBkMWUyZGM4ZjEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMTE0LDggKzExNCw2IEBAIGNsYXNzIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWdu
ZWQgdHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZVByb2ZpbGlu
Z0VuZE9mZnNldDsgfQogICAgIHZvaWQgc2V0SW52YWxpZFR5cGVQcm9maWxpbmdPZmZzZXRzKCk7
CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9ja0ZvcihD
b2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKLQogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrRm9yKAogICAgICAgICBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwKICAg
ICAgICAgUGFyc2VyRXJyb3ImLCBTb3VyY2VQYXJzZU1vZGUpOwpAQCAtMTg5LDYgKzE4Nyw4IEBA
IGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlID0g
c291cmNlTWFwcGluZ1VSTDsKICAgICB9CiAKKyAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25h
bGx5KFZNJik7CisKICAgICBzdHJ1Y3QgUmFyZURhdGEgewogICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAKQEAgLTIwMiw3ICsyMDIsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0
aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHks
IEpTUGFyc2VyU2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU+
LCAgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29u
c3RydWN0b3IpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImLCBjb25z
dCBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGUmKTsKIAotICAgIHZvaWQgZGVjb2RlQ2FjaGVkQ29k
ZUJsb2NrcygpOworICAgIHZvaWQgZGVjb2RlQ2FjaGVkQ29kZUJsb2NrcyhWTSYpOwogCiAgICAg
dW5zaWduZWQgbV9maXJzdExpbmVPZmZzZXQgOiAzMTsKICAgICB1bnNpZ25lZCBtX2lzSW5TdHJp
Y3RDb250ZXh0IDogMTsKQEAgLTIyOCw2ICsyMjgsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIG1fY29uc3Ry
dWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2Z1bmN0aW9uTW9kZSA6IDI7IC8vIEZ1bmN0
aW9uTW9kZQogICAgIHVuc2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlOiAyOworICAgIHVuc2ln
bmVkIG1faXNHZW5lcmF0ZWRGcm9tQ2FjaGUgOiAxOwogCiAgICAgdW5pb24gewogICAgICAgICBX
cml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9j
a0ZvckNhbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDY2NjNiNGYwZDM5
ZWJiZWY5ZDI3MGRlMDNkMmI1ZmM1ZTMzZDY0ODIuLmE4NTIwN2YxMmNmNjAzZjA0Nzg4MWQxNjRj
YzY3ODI3NDQ4M2ZmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC02MDYs
NiArNjA2LDcgQEAgdm9pZCBIZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCkK
ICAgICAgICAgfSk7CiAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPih2bSgpLT5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
c1dpdGhGaW5hbGl6ZXJzKTsKICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXJzPFN0cnVjdHVyZVJhcmVEYXRhPih2bSgpLT5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKTsKKyAg
ICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlPih2bSgpLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldCk7CiAg
ICAgaWYgKHZtKCktPm1fd2Vha1NldFNwYWNlKQogICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha1NldD4oKnZtKCktPm1fd2Vha1NldFNwYWNlKTsKICAg
ICBpZiAodm0oKS0+bV93ZWFrTWFwU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggZDQ2MWU1NjkzMjlmMWQ5ZThiODZlY2JjMzU3Yjlh
ZTc2OTlkNzE4YS4uMDNjZjE2NGZiY2NjMDExZThjODVmMDE3NzcyNDA4YjFjMTE1NGViYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMjAz
MSw2ICsyMDMxLDcgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRD
b2RlQmxvY2soRGVjb2RlciYgZGVjb2RlciwgU3RydWN0dXJlKgogICAgICwgbV9jb2RlVHlwZShj
YWNoZWRDb2RlQmxvY2suY29kZVR5cGUoKSkKIAogICAgICwgbV9kaWRPcHRpbWl6ZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTWl4ZWRUcmlTdGF0ZSkpCisgICAgLCBtX2FnZSgwKQogCiAgICAgLCBt
X2ZlYXR1cmVzKGNhY2hlZENvZGVCbG9jay5mZWF0dXJlcygpKQogICAgICwgbV9wYXJzZU1vZGUo
Y2FjaGVkQ29kZUJsb2NrLnBhcnNlTW9kZSgpKQpAQCAtMjE1OCw2ICsyMTU5LDcgQEAgQUxXQVlT
X0lOTElORSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUoRGVjb2RlciYgZGUKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKGNhY2hlZEV4ZWN1dGFi
bGUuY29uc3RydWN0b3JLaW5kKCkpCiAgICAgLCBtX2Z1bmN0aW9uTW9kZShjYWNoZWRFeGVjdXRh
YmxlLmZ1bmN0aW9uTW9kZSgpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY2FjaGVkRXhl
Y3V0YWJsZS5kZXJpdmVkQ29udGV4dFR5cGUoKSkKKyAgICAsIG1faXNHZW5lcmF0ZWRGcm9tQ2Fj
aGUodHJ1ZSkKICAgICAsIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsKCkKICAgICAsIG1fdW5s
aW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgKaW5kZXggNzUwMDg2MWZi
NTkzODJhM2I5NTAxODA4ODlhM2I0OGRhZWZiN2JlNi4uYzc1NzQ5NWJkYzU1MDQzM2UwMDI1ZmZj
ZmFlY2YwMjRkM2FlNGNiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaApAQCAtMjcsNyArMjcsNyBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGws
IENvZGVGb3JDb25zdHJ1Y3QgfTsKK2VudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCA6IHVpbnQ4
X3QgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogCiBpbmxpbmUgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbkZyb21Jc0NhbGwoYm9vbCBpc0NhbGwpCiB7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg3
YjNiMTkyNGIzODNhYWI2NzAyMGQ0ZmM4OTk4YzJiMDA3ODY4MTAuLjZlYzliNWY1ZDllMjFlYTg4
YWU1NGQ4OTg1OTM3YWUxNWNiZWY0OGQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDYtMDcgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBVbmxpbmtlZENv
ZGVCbG9jayBzaG91bGQgYmUgZXZlbnR1YWxseSBqZXR0aXNvbmVkIGluIFZNIG1pbmkgbW9kZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MDIzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3Mv
cmVwYXJzaW5nLXVubGlua2VkLWNvZGVibG9jay5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgIChoZWxsbyk6CisKIDIwMTktMDYtMDQgIFRhZGV1IFphZ2FsbG8gIDx0emFn
YWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQXJndW1lbnQgZWxpbWluYXRpb24gc2hvdWxkIGNo
ZWNrIHRyYW5zaXRpdmUgZGVwZW5kZW50cyBmb3IgaW50ZXJmZXJlbmNlCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9yZXBhcnNpbmctdW5saW5rZWQtY29kZWJsb2NrLmpzIGIvSlNUZXN0cy9z
dHJlc3MvcmVwYXJzaW5nLXVubGlua2VkLWNvZGVibG9jay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNGVkZWQ2
OWE3NDdmZTA4NTI3N2Y2ZjgyMGUyZTgyMjkwMGZiNTNlCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvcmVwYXJzaW5nLXVubGlua2VkLWNvZGVibG9jay5qcwpAQCAtMCwwICsxLDI0
IEBACisvL0AgcnVuRGVmYXVsdCgiLS1mb3JjZUNvZGVCbG9ja1RvSmV0dGlzb25EdWVUb09sZEFn
ZT0xIiwgIi0tZm9yY2VNaW5pVk1Nb2RlPTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gaGVsbG8o
KQoreworICAgIHJldHVybiAoZnVuY3Rpb24gKCkgeworICAgICAgICBmdW5jdGlvbiB3b3JsZCgp
IHsKKyAgICAgICAgICAgIHJldHVybiA0MjsKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIHdv
cmxkKCk7CisgICAgfSgpKTsKK30KKworLy8gQ29tcGlsZSBoZWxsbyBhbmQgd29ybGQgZnVuY3Rp
b24uCitzaG91bGRCZShoZWxsbygpLCA0Mik7CisvLyBLaWNrIGZ1bGwgR0MgMjAgdGltZXMgdG8g
bWFrZSBVbmxpbmtlZENvZGVCbG9jayBhZ2VkIGFuZCBkZXN0cm95ZWQuIEpldHRpc29uIGhlbGxv
IENvZGVCbG9jaywgYW5kIHVuZGVybHlpbmcgd29ybGQgVW5saW5rZWRDb2RlQmxvY2suCitmb3Ig
KHZhciBpID0gMDsgaSA8IDIwOyArK2kpCisgICAgZnVsbEdDKCk7CisvLyBSZWNvbXBpbGUgd29y
bGQuCitzaG91bGRCZShoZWxsbygpLCA0Mik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371624</attachid>
            <date>2019-06-07 16:14:49 -0700</date>
            <delta_ts>2019-06-09 13:06:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198023-20190607161448.patch</filename>
            <type>text/plain</type>
            <size>28668</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MjFiYWFhYTM5ZThlZDQ1OTQ1ZjJiZTBmNDM5ODY4MWU4NDczZDcwLi5lYmU4NTNmOTgzZGI3YWE3
M2E1ODkyMzM0NzhiZWIxOGM3OGVkODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDAgQEAKKzIwMTktMDYtMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVbmxpbmtlZENvZGVCbG9jayBzaG91bGQgYmUgZXZlbnR1YWxs
eSBqZXR0aXNvbmVkIGluIFZNIG1pbmkgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MDIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2hpbGUgQ29kZUJsb2NrIGlzIHBlcmlvZGljYWxseSBqZXR0
aXNvbmVkLCBVbmxpbmtlZENvZGVCbG9jayBhbmQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUg
Y2FuIGJlIHJldGFpbmVkIGFsbW9zdCBmb3JldmVyIGluIGNlcnRhaW4gdHlwZSBvZiBhcHBsaWNh
dGlvbnMuCisgICAgICAgIFdoZW4gd2UgZXhlY3V0ZSBhIHByb2dyYW0sIHdoaWNoIGhhcyBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2sgcmV0YWluZWQgaW4gQ29kZUNhY2hlLiBBbmQgVW5saW5rZWRQ
cm9ncmFtQ29kZUJsb2NrIGhvbGRzIGFycmF5IG9mIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LgorICAgICAgICBBbmQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVzIGhvbGQgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9ja3Mgb25jZSBpdCBpcyBnZW5lcmF0ZWQuIFNvIGV2ZW50dWFsbHksIHRo
aXMgdHJlZSBnZXRzIGxhcmdlciBhbmQgbGFyZ2VyIHVudGlsIHdlIHB1cmdlCisgICAgICAgIFVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jayBmcm9tIENvZGVDYWNoZS4gVGhpcyBpcyBPSyBpbiB0aGUg
YnJvd3NlciBjYXNlLiBXZSBuYXZpZ2F0ZSB0byB2YXJpb3VzIG90aGVyIHBhZ2VzLCBhbmQgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrcyBzaG91bGQgZXZlbnR1YWxseQorICAgICAgICBiZSBwcnVu
ZWQgZnJvbSBDb2RlQ2FjaGUgd2l0aCB0aGUgbmV3IG9uZXMuIFNvIHRoaXMgdHJlZSB3b24ndCBi
ZSByZXRhaW5lZCBmb3JldmVyLiBCdXQgdGhlIGJlaGF2aW9yIGlzIGRpZmZlcmVudCBpbiB0aGUg
b3RoZXIgYXBwbGljYXRpb25zIHRoYXQgZG8gbm90IGhhdmUKKyAgICAgICAgbmF2aWdhdGlvbnMu
IElmIHRoZXkgb25seSBoYXZlIG9uZSBwcm9ncmFtIHdoaWNoIGhvbGRzIGFsbCwgd2UgYmFzaWNh
bGx5IHJldGFpbiB0aGlzIHRyZWUgZHVyaW5nIGV4ZWN1dGluZyB0aGlzIGFwcGxpY2F0aW9uLiBU
aGUgc2FtZSB0aGluZyBjYW4gaGFwcGVuIGluCisgICAgICAgIHdlYiBhcHBsaWNhdGlvbnMgd2hp
Y2ggZG9lcyBub3QgaGF2ZSBuYXZpZ2F0aW9uIGFuZCBrZWVwcyBhbGl2ZSBmb3IgYSBsb25nIHRp
bWUuIE9uY2Ugd2UgaGl0IENvZGVDYWNoZSBsaW1pdCBieSBwZXJpb2RpY2FsbHkgZXhlY3V0aW5n
IGEgbmV3IHNjcmlwdCwgd2Ugd2lsbAorICAgICAgICBoaXQgdGhlIHVwcGVybW9zdCBvZiBtZW1v
cnkgZm9vdHByaW50LiBCdXQgdW50aWwgdGhhdCwgd2UgaW5jcmVhc2Ugb3VyIG1lbW9yeSBmb290
cHJpbnQuCisKKyAgICAgICAgSG93ZXZlciwgZGVzdHJveWluZyB0aGVzZSBVbmxpbmtlZENvZGVC
bG9ja3MgYW5kIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlcyBjYXVzZXMgYSB0cmlja3kgcHJv
YmxlbS4gSW4gdGhlIGJyb3dzZXIgZW52aXJvbm1lbnQsIG5hdmlnYXRpb24gY2FuIGhhcHBlbiBh
dCBhbnkKKyAgICAgICAgdGltZS4gU28gZXZlbiBpZiB0aGUgZ2l2ZW4gVW5saW5rZWRDb2RlQmxv
Y2sgc2VlbXMgdW51c2VkIGluIHRoZSBjdXJyZW50IHBhZ2UsIGl0IGNhbiBiZSB1c2VkIHdoZW4g
bmF2aWdhdGluZyB0byBhIG5ldyBwYWdlIHdoaWNoIGlzIHVuZGVyIHRoZSBzYW1lIGRvbWFpbi4K
KyAgICAgICAgT25lIGV4YW1wbGUgaXMgaW5pdGlhbGl6aW5nIGZ1bmN0aW9uIGluIGEgc2NyaXB0
LiBJdCBpcyBvbmx5IGV4ZWN1dGVkIG9uY2UgcGVyIHBhZ2UuIFNvIG9uY2UgaXQgaXMgZXhlY3V0
ZWQsIGl0IHNlZW1zIHRoYXQgdGhpcyBVbmxpbmtlZENvZGVCbG9jayBpcyB1bnVzZWQuCisgICAg
ICAgIEJ1dCB0aGlzIHdpbGwgYmUgdXNlZCB3aGVuIHdlIG5hdmlnYXRlIHRvIGEgbmV3IHBhZ2Uu
IFBydW5pbmcgY29kZSBibG9ja3MgYmFzZWQgb24gdXNhZ2UgY291bGQgY2F1c2UgcGVyZm9ybWFu
Y2UgcmVncmVzc2lvbi4KKworICAgICAgICBCdXQgaWYgb3VyIFZNIGlzIG1pbmkgVk0gbW9kZSwg
dGhlIHN0b3J5IGlzIGRpZmZlcmVudC4gSW4gbWluaSBWTSBtb2RlLCB3ZSBmb2N1cyBvbiBtZW1v
cnkgZm9vdHByaW50IHJhdGhlciB0aGFuIHBlcmZvcm1hbmNlIGUuZy4gZGFlbW9ucy4gVGhlIGRh
ZW1vbiBuZXZlcgorICAgICAgICByZXVzZSB0aGVzZSBDb2RlQ2FjaGUgc2luY2Ugd2UgZG8gbm90
IGhhdmUgdGhlIG5hdmlnYXRpb24uCisKKyAgICAgICAgVGhpcyBwYXRjaCBsb2dpY2FsbHkgbWFr
ZXMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgLT4gVW5saW5rZWRDb2RlQmxvY2sgcmVmZXJl
bmNlIHdlYWsgd2hlbiBWTSBpcyBtaW5pIG1vZGUuIElmIFVubGlua2VkQ29kZUJsb2NrIGlzIHVz
ZWQgaW4gcHJldmlvdXMgR0MKKyAgICAgICAgY3ljbGUsIHdlIHJldGFpbiBpdC4gQnV0IGlmIGl0
IGlzIG5vdCB1c2VkLCBhbmQgaWYgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgaXMgb25seSB0
aGUgY2VsbCBrZWVwaW5nIFVubGlua2VkQ29kZUJsb2NrIGFsaXZlLCB3ZSBkZXN0cm95IGl0LiBJ
dCBpcyBhCisgICAgICAgIGhldXJpc3RpYy4gSW4gYSBzdXBlciBwYXRob2xvZ2ljYWwgY2FzZSwg
aXQgY291bGQgaW5jcmVhc2UgbWVtb3J5IGZvb3RwcmludC4gQ29uc2lkZXIgdGhlIGZvbGxvd2lu
ZyBleGFtcGxlLgorCisgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShBMSkg
LT4gVW5saW5rZWRDb2RlQmxvY2soQjEpIC0+IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKEMx
KSAtPiBVbmxpbmtlZENvZGVCbG9jayhEMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDb2RlQmxvY2soRTEpCisKKyAgICAgICAgV2UgY291bGQgZGVsZXRl
IEExLCBCMSwgYW5kIEMxIHdoaWxlIGtlZXBpbmcgRDEuIEJ1dCBpZiB3ZSBldmVudHVhbGx5IHJl
LWV4ZWN1dGUgdGhlIHNhbWUgY29kZSBjb3JyZXNwb25kaW5nIHRvIEExLCBCMSwgQzEsIHRoZXkg
d2lsbCBiZSBuZXdseSBjcmVhdGVkLCBhbmQKKyAgICAgICAgd2Ugd2lsbCBjcmVhdGUgZHVwbGlj
YXRlIFVubGlua2VkQ29kZUJsb2NrIGFuZCBpbnN0cnVjdGlvbnMgc3RyZWFtIGZvciBEMS4KKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5saW5rZWRD
b2RlQmxvY2soRDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29kZUJsb2NrKEUxKQorCisgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZShBMikgLT4gVW5saW5rZWRDb2RlQmxvY2soQjIpIC0+IFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKEMyKSAtPiBVbmxpbmtlZENvZGVCbG9jayhEMikKKworICAgICAgICBCdXQgdGhpcyBkb2Vz
IG5vdCBoYXBwZW4gaW4gcHJhY3RpY2UgYW5kIGV2ZW4gaXQgaGFwcGVucywgd2UgZXZlbnR1YWxs
eSBkaXNjYXJkIEQxIGFuZCBEMiBzaW5jZSBDb2RlQmxvY2sgRTEgd2lsbCBiZSBqZXR0aXNvbmVk
IGFueXdheS4gU28gaW4gcHJhY3RpY2UsIHdlIGRvCisgICAgICAgIG5vdCBzZWUgbWVtb3J5IGZv
b3RwcmludCBpbmNyZWFzZS4gV2UgdGVzdGVkIGl0IGluIEdtYWlsIGFuZCB0aGUgdGFyZ2V0IGFw
cGxpY2F0aW9uLCBidXQgYm90aCBzYWlkIG1lbW9yeSBmb290cHJpbnQgcmVkdWN0aW9uICgzMCBN
QiAvIDQwMCBNQiBhbmQgMSBNQiAvNiBNQikuCisgICAgICAgIFdoaWxlIHRoaXMgYWZmZWN0cyBv
biBwZXJmb3JtYW5jZSBtdWNoIG9uIHRlc3RzIHdoaWNoIGhhcyBuYXZpZ2F0aW9uICgxLTMgJSBy
ZWdyZXNzaW9uIGluIFNwZWVkb21ldGVyMiwgbm90ZSB0aGF0IEpldFN0cmVhbTIgZG9lcyBub3Qg
c2hvdyByZWdyZXNzaW9uIGluIHg2NCwKKyAgICAgICAgd2hpbGUgaXQgaXMgbm90IGVuYWJsaW5n
IG1pbmkgbW9kZSksIHdlIGRvIG5vdCBhcHBseSB0aGlzIHRvIG5vbiBtaW5pIG1vZGUgVk0gdW50
aWwgd2UgY29tZSB1cCB3aXRoIGEgZ29vZCBzdHJhdGVneSB0byBmYXN0ZW4gcGVyZm9ybWFuY2Ug
b2YgcmUtZ2VuZXJhdGlvbi4KKyAgICAgICAgUGVyc29uYWxseSBJIHRoaW5rIGZsdXNoaW5nIGRl
c3Ryb3llZCBVbmxpbmtlZENvZGVCbG9jayB0byB0aGUgZGlzayBzb3VuZHMgcHJvbWlzaW5nLgor
CisgICAgICAgIElmIFVubGlua2VkQ29kZUJsb2NrIGlzIGdlbmVyYXRlZCBmcm9tIGJ5dGVjb2Rl
IGNhY2hlLCB3ZSBkbyBub3QgbWFrZSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSAtPiBVbmxp
bmtlZENvZGVCbG9jayBsaW5rIHdlYWsgYmVjYXVzZSB0aGUgZGVjb2RlciBvZiB0aGUgYnl0ZWNv
ZGUKKyAgICAgICAgY2FjaGUgYXNzdW1lcyB0aGF0IGdlbmVyYXRlZCBKU0NlbGxzIHdvbid0IGJl
IGRlc3Ryb3llZCB3aGlsZSB0aGUgcGFyZW50IGNlbGxzIG9mIHRoYXQgY2VsbCBhcmUgbGl2ZS4g
VGhpcyBpcyB0cnVlIGluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBhbmQgdGhpcyBhc3N1
bXB0aW9uCisgICAgICAgIHdpbGwgYmUgYnJva2VuIHdpdGggdGhpcyBwYXRjaC4gU28sIGZvciBu
b3csIHdlIGRvIG5vdCBtYWtlIHRoaXMgbGluayB3ZWFrLiBDdXJyZW50bHksIG91ciB0YXJnZXQg
YXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGJ5dGVjb2RlIGNhY2hlIHNvIGl0IGlzIE9LLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBpbnRyb2R1Y2Ugc2ltcGxlIGhldXJpc3RpYyB0b28uIFdl
IGFyZSBjb3VudGluZyBVbmxpbmtlZENvZGVCbG9jaydzIGFnZS4gQW5kIG9uY2UgdGhlIGFnZSBi
ZWNvbWVzIG1heGltdW0gc2l6ZSwgd2UgbWFrZSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSAt
PgorICAgICAgICBVbmxpbmtlZENvZGVCbG9jayBsaW5rIHdlYWsuIFdlIGFsc28gdXNlIGV4ZWN1
dGlvbiBjb3VudGVyIGluZm9ybWF0aW9uIHRvIHJlc2V0IHRoaXMgYWdlOiBDb2RlQmxvY2sgd2ls
bCByZXNldCB1bmRlbHlpbmcgVW5saW5rZWRDb2RlQmxvY2sncyBhZ2UgaWYgaXQgaGFzIHNvbWUK
KyAgICAgICAgZXhlY3V0aW9uLiBXaGlsZSB0aGlzIGhldXJpc3RpYyBpcyBxdWl0ZSBzaW1wbGUs
IGl0IGhhcyBzb21lIGVmZmVjdCBpbiBwcmFjdGljZS4gQmFzaWNhbGx5IHdoYXQgaGFwcGVucyB3
aXRoIHRoaXMgaGV1cmlzdGljIGlzIHRoYXQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgLT4K
KyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sgbGluayBzdHJvbmcuIFdoZW4gR0MgaGFwcGVucywg
d2UgYXJlIGV4ZWN1dGluZyBzb21lIENvZGVCbG9ja3MsIHdoaWNoIGJlY29tZSBsaXZlLiBBbmQg
U2NyaXB0RXhlY3V0YWJsZXMgLT4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVzIGhlbGQKKyAg
ICAgICAgYnkgdGhpcyBDb2RlQmxvY2sgYmVjb21lIGFsc28gbGl2ZS4gVGhlbiBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZXMgY2FuIG1hcmsgdGhlIGNoaWxkIFVubGlua2VkQ29kZUJsb2NrcyBp
ZiBpdCBpcyBub3Qgc28gb2xkLgorICAgICAgICBJZiBzb21lIG9mIHBhcmVudCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSBiZWNvbWVzIGRlYWQsIGNoaWxkIFVubGlua2VkQ29kZUJsb2NrcyB0
ZW5kcyB0byBiZSBkZWFkIHVubGVzcyBzb21lIGxpdmUgQ29kZUJsb2NrIGhvbGRzIGl0LiBCdXQg
aXQgaXMgT0sgZm9yIGEgZmlyc3QKKyAgICAgICAgaGV1cmlzdGljcyBzaW5jZSB0aGlzIG1lYW5z
IHRoYXQgcGFyZW50IGNvZGUgYmxvY2sgaXMgbm93IGNvbnNpZGVyZWQgb2xkLCByZWFjaGFibGUg
VW5saW5rZWRDb2RlQmxvY2sgd2lsbCBiZSB1c2VkIHdoZW4gdGhlIHBhcmVudCBpcyBleGVjdXRl
ZCBhZ2Fpbi4gU28gZGVzdHJveWluZworICAgICAgICB0aGUgdHJlZSBpcyBPSyBldmVuIGlmIHRo
ZSB0cmVlIG1heSBpbmNsdWRlIHNvbWUgbmV3IFVubGlua2VkQ29kZUJsb2NrLiBXaGlsZSB3ZSBj
b3VsZCBtYWtlIG1vcmUgc29waGlzdGljYXRlZCBtZWNoYW5pc20gdG8gbWFuYWdlIHRoZXNlIGxp
ZmV0aW1lLCBJIHRoaW5rIHRoaXMgaXMgYQorICAgICAgICBnb29kIHN0YXJ0aW5nIHBvaW50Lgor
CisgICAgICAgIEJhc2VkIG9uIG1lYXN1cmVtZW50LCB3ZSBwaWNrIDcgYXMgYSBtYXhpbXVtIGFn
ZS4gSWYgd2UgcGljayAwLCB3ZSBjYW4gZ2V0IG1vcmUgbWVtb3J5IHJlZHVjdGlvbiAoMSAtIDEu
NSBNQiEpLCB3aGlsZSB3ZSBlbmRzIHVwIHJlcGFyc2luZyBjb2RlcyBzbyBtYW55IHRpbWVzLgor
ICAgICAgICBJdCBzZWVtcyB0aGF0IDcgY2FuIHJlZHVjZSBmYWlyIGFtb3VudCBvZiBtZW1vcnkg
d2hpbGUgZG9pbmcgc21hbGwgIyBvZiByZXBhcnNpbmcgb24gYXZlcmFnZSAodXN1YWxseSwgMSwg
Mi4gU29tZXRpbWVzLCAxMDAuIEJ1dCBub3QgMzAwLCB3aGljaCBpcyB0aGUgY2FzZSBpbiAwKS4K
KyAgICAgICAgSWYgd2Ugd2FudCB0byBnZXQgbW9yZSBtZW1vcnkgcmVkdWN0aW9uIGZvciB0aGUg
c2FrZSBvZiBwZXJmb3JtYW5jZSwgd2UgY291bGQgZGVjcmVhc2UgdGhpcyBhZ2UgbGltaXQuCisK
KyAgICAgICAgU2luY2Ugd2UgZG8gbm90IGhhdmUgYW4gYXV0b21hdGVkIHNjcmlwdCByaWdodCBu
b3cgc28gaXQgaXMgYSBiaXQgZGlmZmljdWx0IHRvIG1lYXN1cmUgbWVtb3J5IGZvb3RwcmludCBw
cmVjaXNlbHkuIEJ1dCBtYW51YWwgdGVzdGluZyBzaG93cyB0aGF0IHRoaXMgcGF0Y2ggaW1wcm92
ZXMKKyAgICAgICAgbWVtb3J5IGZvb3RwcmludCBvZiBvdXIgdGFyZ2V0IGFwcGxpY2F0aW9uIGZy
b20gYWJvdXQgNi41IE1CIHRvIGFib3V0IDUuOSBNQi4KKworICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6
CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjphZ2UgY29uc3QpOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9jazo6cmVzZXRBZ2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IpOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVjb2RlQ2FjaGVkQ29k
ZUJsb2Nrcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpI
ZWFwOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKToKKyAgICAgICAgKiBydW50aW1l
L0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlu
a2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVTcGVj
aWFsaXphdGlvbktpbmQuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAg
KiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OmlzSW5NaW5pTW9kZSk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6aXNJbk1pbmlN
b2RlKToKKyAgICAgICAgKEpTQzo6Vk06OnVzZVVubGlua2VkQ29kZUJsb2NrSmV0dGlzb25pbmcp
OgorCiAyMDE5LTA2LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgdXBkYXRlIGV4Y2VwdGlvbiBzY29wZSBmb3IgcHV0QnlJbmRleEJl
eW9uZFZlY3Rvckxlbmd0aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAppbmRleCBhZGUyYWNlM2QxYTQ2ZDEzMTZhMDQzZDMxMDU4MjAxMDAxNzcwZDUwLi5i
Zjc1YWIwYjU2Y2MwZGJlMGM5NjY4YmNkYTA0YmUxZGFjYWEyZDNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTM3Myw2ICsxMzczLDM1IEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCiAgICAgfQog
I2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogCisgICAgYXV0byB1cGRhdGVBY3Rpdml0eSA9IFsm
XSB7CisgICAgICAgIGlmICghVk06OmlzSW5NaW5pTW9kZSgpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBKSVRDb2RlKiBqaXRDb2RlID0gbV9qaXRDb2RlLmdldCgpOworICAgICAgICBk
b3VibGUgY291bnQgPSAwOworICAgICAgICBib29sIGFsd2F5c0FjdGl2ZSA9IGZhbHNlOworICAg
ICAgICBzd2l0Y2ggKEpJVENvZGU6OmppdFR5cGVGb3Ioaml0Q29kZSkpIHsKKyAgICAgICAgY2Fz
ZSBKSVRUeXBlOjpOb25lOgorICAgICAgICBjYXNlIEpJVFR5cGU6Okhvc3RDYWxsVGh1bms6Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVu
azoKKyAgICAgICAgICAgIGNvdW50ID0gbV9sbGludEV4ZWN1dGVDb3VudGVyLmNvdW50KCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBKSVRUeXBlOjpCYXNlbGluZUpJVDoKKyAg
ICAgICAgICAgIGNvdW50ID0gbV9qaXRFeGVjdXRlQ291bnRlci5jb3VudCgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgSklUVHlwZTo6REZHSklUOgorICAgICAgICBjYXNlIEpJ
VFR5cGU6OkZUTEpJVDoKKyAgICAgICAgICAgIGFsd2F5c0FjdGl2ZSA9IHRydWU7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoYWx3YXlzQWN0aXZlIHx8IG1fcHJl
dmlvdXNDb3VudGVyIDwgY291bnQpIHsKKyAgICAgICAgICAgIC8vIENvZGVCbG9jayBpcyBhY3Rp
dmUgcmlnaHQgbm93LCBzbyByZXNldHRpbmcgVW5saW5rZWRDb2RlQmxvY2sncyBhZ2UuCisgICAg
ICAgICAgICBtX3VubGlua2VkQ29kZS0+cmVzZXRBZ2UoKTsKKyAgICAgICAgfQorICAgICAgICBt
X3ByZXZpb3VzQ291bnRlciA9IGNvdW50OworICAgIH07CisgICAgdXBkYXRlQWN0aXZpdHkoKTsK
KwogICAgIFZNOjpTcGFjZUFuZFNldDo6c2V0Rm9yKCpzdWJzcGFjZSgpKS5yZW1vdmUodGhpcyk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA0
ZTYyYmRlYzIyZWU5ZTVlMjg2ZjkxNjU0MDRiMGZjMzJkNzdjMjg5Li40ZDMyNzllY2M5MmI0ZDI3
OWNiYzg4NDlhYjg4NTg4MDhlOTdjNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCkBAIC0xMDEwLDYgKzEwMTAsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICBSZWZQdHI8TWV0YWRhdGFUYWJsZT4gbV9tZXRhZGF0YTsKIAog
ICAgIE1vbm90b25pY1RpbWUgbV9jcmVhdGlvblRpbWU7CisgICAgZG91YmxlIG1fcHJldmlvdXND
b3VudGVyIHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJhcmVEYXRhPiBtX3JhcmVEYXRh
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwCmluZGV4IGY5YzNiYTlkNzE2NDdkNDIzZGIxOGExNDQxOTgwNGQzNGYzMGY0
NDEuLjc3NDVhNDFhZDJiM2ExZmFiY2FkNDI0OGMxZTVlNzQ4NjRlZDBkYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApA
QCAtNzEsNiArNzEsNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0q
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9ldmFsQ29u
dGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZXZhbENvbnRleHRUeXBlKCkpKQog
ICAgICwgbV9jb2RlVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5cGUpKQogICAgICwg
bV9kaWRPcHRpbWl6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWl4ZWRUcmlTdGF0ZSkpCisgICAg
LCBtX2FnZSgwKQogICAgICwgbV9wYXJzZU1vZGUoaW5mby5wYXJzZU1vZGUoKSkKICAgICAsIG1f
Y29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fbWV0YWRhdGEo
VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpjcmVhdGUoKSkKQEAgLTg4LDYgKzg5LDcgQEAgdm9pZCBV
bmxpbmtlZENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5m
bygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGhpc09iamVjdC0+Y2VsbExvY2soKSk7CisgICAgdGhp
c09iamVjdC0+bV9hZ2UgPSBzdGQ6Om1pbjx1bnNpZ25lZD4oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHRoaXNPYmplY3QtPm1fYWdlKSArIDEsIG1heEFnZSk7CiAgICAgZm9yIChGdW5jdGlvbkV4cHJl
c3Npb25WZWN0b3I6Oml0ZXJhdG9yIHB0ciA9IHRoaXNPYmplY3QtPm1fZnVuY3Rpb25EZWNscy5i
ZWdpbigpLCBlbmQgPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRGVjbHMuZW5kKCk7IHB0ciAhPSBl
bmQ7ICsrcHRyKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgqcHRyKTsKICAgICBmb3IgKEZ1bmN0
aW9uRXhwcmVzc2lvblZlY3Rvcjo6aXRlcmF0b3IgcHRyID0gdGhpc09iamVjdC0+bV9mdW5jdGlv
bkV4cHJzLmJlZ2luKCksIGVuZCA9IHRoaXNPYmplY3QtPm1fZnVuY3Rpb25FeHBycy5lbmQoKTsg
cHRyICE9IGVuZDsgKytwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDJhMzUwYTFmMTFjZjIxMzFmNzJjMmI0YmQ4MDkw
MThmZTcxMmVmZjIuLmMxOGE3MGQyYTkyZjllZjg2YjQ0ZDhmODgxODMxOGFkOWRhMmZiZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCkBAIC0zMzksNiArMzM5LDExIEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgVHJpU3RhdGUgZGlkT3B0aW1pemUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxUcmlTdGF0ZT4obV9kaWRPcHRpbWl6ZSk7IH0KICAgICB2b2lkIHNldERpZE9wdGlt
aXplKFRyaVN0YXRlIGRpZE9wdGltaXplKSB7IG1fZGlkT3B0aW1pemUgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZGlkT3B0aW1pemUpOyB9CiAKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IG1heEFnZSA9IDc7CisKKyAgICB1bnNpZ25lZCBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2FnZTsg
fQorICAgIHZvaWQgcmVzZXRBZ2UoKSB7IG1fYWdlID0gMDsgfQorCiAgICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7CiAKICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIGxpdmVu
ZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC00MjQsNiArNDI5LDcgQEAgY2xh
c3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBtX2V2
YWxDb250ZXh0VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9jb2RlVHlwZSA6IDI7CiAgICAgdW5z
aWduZWQgbV9kaWRPcHRpbWl6ZSA6IDI7CisgICAgdW5zaWduZWQgbV9hZ2UgOiAzOwogcHVibGlj
OgogICAgIENvbmN1cnJlbnRKU0xvY2sgbV9sb2NrOwogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuY3BwCmluZGV4IDE0YTA2OWM1ZTA3NjA4ZDMwOTE4MjI5MzY1NmViMjE4N2ZkOTdmZDYu
LjEwY2Y0ZjY0ZTRiMmFmM2VkZGVjYzJmNWMxMTliN2FmN2I4MWIwN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcApAQCAtMTA3LDYgKzEwNyw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0
CiAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29u
c3RydWN0b3JLaW5kKCkpKQogICAgICwgbV9mdW5jdGlvbk1vZGUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihkZXJpdmVkQ29udGV4dFR5cGUpKQorICAgICwgbV9pc0dlbmVy
YXRlZEZyb21DYWNoZShmYWxzZSkKICAgICAsIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsKCkK
ICAgICAsIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKQogICAgICwgbV9uYW1lKG5v
ZGUtPmlkZW50KCkpCkBAIC0xNDIsNyArMTQzLDI0IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKLSAgICBpZiAoIXRoaXNPYmplY3QtPm1faXNDYWNoZWQpIHsKKwor
ICAgIC8vIEN1cnJlbnRseSwgYnl0ZWNvZGUgY2FjaGUgYXNzdW1lcyB0aGF0IHRoZSB0cmVlIG9m
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGFuZCBVbmxpbmtlZENvZGVCbG9jayB3aWxsIG5v
dCBiZSBkZXN0cm95ZWQgd2hpbGUgdGhlIHBhcmVudCBpcyBsaXZlLgorICAgIC8vIEJ5dGVjb2Rl
IGNhY2hlIHVzZXMgdGhpcyBhc3VtcHRpb24gdG8gYXZvaWQgZHVwbGljYXRlIG1hdGVyaWFsaXph
dGlvbiBieSBib29ra2VlcGluZyB0aGUgaGVhcCBjZWxscyBpbiB0aGUgb2Zmc3RlLXRvLXBvaW50
ZXIgbWFwLgorICAgIC8vCisgICAgLy8gV2UgYWxzbyBrZWVwIGJ1aWx0aW4gZnVuY3Rpb25zLiBU
aGUgYnVpbHRpbiBmdW5jdGlvbnMgYXJlIGZvdW5kYW1lbnRhbCBsaWJyYXJ5IGZvciBKYXZhU2Ny
aXB0LCB3aGljaCBtZWFucyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQgaW4gcmFuZG9tIHBsYWNlcyBv
ZgorICAgIC8vIHRoZSBjbGllbnQgc2NyaXB0cy4gSXQgaXMgc2FmZSB0byBhc3N1bWUgdGhhdCBi
dWlsdGluIGZ1bmN0aW9ucyBhcmUgdXNlZCByZWxhdGl2ZWx5IGZyZXF1ZW50bHkgZnJvbSBtYW55
IGNhbGwgc2l0ZXMuCisgICAgaWYgKFZNOjp1c2VVbmxpbmtlZENvZGVCbG9ja0pldHRpc29uaW5n
KCkgJiYgIXRoaXNPYmplY3QtPm1faXNHZW5lcmF0ZWRGcm9tQ2FjaGUgJiYgIXRoaXNPYmplY3Qt
PmlzQnVpbHRpbkZ1bmN0aW9uKCkpIHsKKyAgICAgICAgYXV0byBtYXJrSWZQcm9maXRhYmxlID0g
WyZdIChXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4mIHVubGlua2VkQ29k
ZUJsb2NrKSB7CisgICAgICAgICAgICBpZiAoIXVubGlua2VkQ29kZUJsb2NrKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+ZGlkT3B0
aW1pemUoKSA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQo
dW5saW5rZWRDb2RlQmxvY2spOworICAgICAgICAgICAgZWxzZSBpZiAodW5saW5rZWRDb2RlQmxv
Y2stPmFnZSgpIDwgVW5saW5rZWRDb2RlQmxvY2s6Om1heEFnZSkKKyAgICAgICAgICAgICAgICB2
aXNpdG9yLmFwcGVuZCh1bmxpbmtlZENvZGVCbG9jayk7CisgICAgICAgIH07CisgICAgICAgIG1h
cmtJZlByb2ZpdGFibGUodGhpc09iamVjdC0+bV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwpOwor
ICAgICAgICBtYXJrSWZQcm9maXRhYmxlKHRoaXNPYmplY3QtPm1fdW5saW5rZWRDb2RlQmxvY2tG
b3JDb25zdHJ1Y3QpOworICAgIH0gZWxzZSBpZiAoIXRoaXNPYmplY3QtPm1faXNDYWNoZWQpIHsK
ICAgICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNhbGwpOwogICAgICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkQ29k
ZUJsb2NrRm9yQ29uc3RydWN0KTsKICAgICB9CkBAIC0xOTcsMjQgKzIxNSwxMiBAQCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9i
YWxDb2RlKAogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3Io
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQpCi17Ci0gICAgc3dpdGNo
IChzcGVjaWFsaXphdGlvbktpbmQpIHsKLSAgICBjYXNlIENvZGVGb3JDYWxsOgotICAgICAgICBy
ZXR1cm4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwuZ2V0KCk7Ci0gICAgY2FzZSBDb2RlRm9y
Q29uc3RydWN0OgotICAgICAgICByZXR1cm4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVj
dC5nZXQoKTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0KIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQs
IAogICAgIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwg
UGFyc2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAgIGlm
IChtX2lzQ2FjaGVkKQotICAgICAgICBkZWNvZGVDYWNoZWRDb2RlQmxvY2tzKCk7CisgICAgICAg
IGRlY29kZUNhY2hlZENvZGVCbG9ja3Modm0pOwogICAgIHN3aXRjaCAoc3BlY2lhbGl6YXRpb25L
aW5kKSB7CiAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKICAgICAgICAgaWYgKFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsLmdldCgp
KQpAQCAtMjQ2LDcgKzI1Miw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi12b2lkIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGVDYWNoZWRD
b2RlQmxvY2tzKCkKK3ZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmRlY29kZUNhY2hl
ZENvZGVCbG9ja3MoVk0mIHZtKQogewogICAgIEFTU0VSVChtX2lzQ2FjaGVkKTsKICAgICBBU1NF
UlQobV9kZWNvZGVyKTsKQEAgLTI1Niw3ICsyNjIsNyBAQCB2b2lkIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpkZWNvZGVDYWNoZWRDb2RlQmxvY2tzKCkKICAgICBpbnQzMl90IGNhY2hlZENv
ZGVCbG9ja0ZvckNhbGxPZmZzZXQgPSBtX2NhY2hlZENvZGVCbG9ja0ZvckNhbGxPZmZzZXQ7CiAg
ICAgaW50MzJfdCBjYWNoZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3RPZmZzZXQgPSBtX2NhY2hlZENv
ZGVCbG9ja0ZvckNvbnN0cnVjdE9mZnNldDsKIAotICAgIERlZmVyR0MgZGVmZXJHQyhkZWNvZGVy
LT52bSgpLmhlYXApOworICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKIAogICAgIC8vIE5v
IG5lZWQgdG8gY2xlYXIgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwgaGVyZSwgc2luY2Ugd2Ug
bW92ZWQgdGhlIGRlY29kZXIgb3V0IG9mIHRoZSBzYW1lIHNsb3QKICAgICBpZiAoY2FjaGVkQ29k
ZUJsb2NrRm9yQ2FsbE9mZnNldCkKQEAgLTI2OCw3ICsyNzQsNyBAQCB2b2lkIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpkZWNvZGVDYWNoZWRDb2RlQmxvY2tzKCkKIAogICAgIFdURjo6c3Rv
cmVTdG9yZUZlbmNlKCk7CiAgICAgbV9pc0NhY2hlZCA9IGZhbHNlOwotICAgIGRlY29kZXItPnZt
KCkuaGVhcC53cml0ZUJhcnJpZXIodGhpcyk7CisgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIodGhp
cyk7CiB9CiAKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmVuc3VyZVJhcmVEYXRhU2xvdygpCkBAIC0yODQsNCArMjkwLDI1
IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnNldEludmFsaWRUeXBlUHJvZmls
aW5nT2Zmc2V0cygpCiAgICAgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpOwogfQogCit2b2lkIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCit7CisgICAgaWYgKFZNOjp1
c2VVbmxpbmtlZENvZGVCbG9ja0pldHRpc29uaW5nKCkgJiYgIW1faXNHZW5lcmF0ZWRGcm9tQ2Fj
aGUgJiYgIWlzQnVpbHRpbkZ1bmN0aW9uKCkpIHsKKyAgICAgICAgYm9vbCBpc0NsZWFyZWQgPSBm
YWxzZTsKKyAgICAgICAgYm9vbCBpc1N0aWxsVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgYXV0byBj
bGVhcklmRGVhZCA9IFsmXSAoV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+
JiB1bmxpbmtlZENvZGVCbG9jaykgeworICAgICAgICAgICAgaWYgKCF1bmxpbmtlZENvZGVCbG9j
aykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAoIXZtLmhlYXAuaXNN
YXJrZWQodW5saW5rZWRDb2RlQmxvY2suZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgdW5saW5r
ZWRDb2RlQmxvY2suY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBpc0NsZWFyZWQgPSB0cnVlOwor
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgaXNTdGlsbFZhbGlkID0gdHJ1ZTsK
KyAgICAgICAgfTsKKyAgICAgICAgY2xlYXJJZkRlYWQobV91bmxpbmtlZENvZGVCbG9ja0ZvckNh
bGwpOworICAgICAgICBjbGVhcklmRGVhZChtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0
KTsKKyAgICAgICAgaWYgKGlzQ2xlYXJlZCAmJiAhaXNTdGlsbFZhbGlkKQorICAgICAgICAgICAg
dm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQucmVtb3ZlKHRoaXMpOworICAg
IH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IDBj
N2Y4OWNkNGViMDI0ZmNmODBkNzg4MzZjM2Y0M2MwYTdjZDIzYzMuLmJlZDk1ZDMwOWU3ZjE2ZGNk
Njk3OTJmZmVkNDRhMGQxZTJkYzhmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0xMTQs
OCArMTE0LDYgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCB0eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0OyB9CiAgICAgdm9pZCBzZXRJbnZhbGlk
VHlwZVByb2ZpbGluZ09mZnNldHMoKTsKIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwotCiAgICAgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgICAgIFZN
JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+LAogICAgICAgICBQYXJzZXJFcnJvciYsIFNvdXJjZVBhcnNlTW9k
ZSk7CkBAIC0xODksNiArMTg3LDggQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUg
ZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX3NvdXJj
ZU1hcHBpbmdVUkxEaXJlY3RpdmUgPSBzb3VyY2VNYXBwaW5nVVJMOwogICAgIH0KIAorICAgIHZv
aWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKTsKKwogICAgIHN0cnVjdCBSYXJlRGF0YSB7
CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIApAQCAtMjAyLDcgKzIw
Miw3IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBj
b25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9u
S2luZCwgQ29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25hbDxDb21w
YWN0VmFyaWFibGVNYXA6OkhhbmRsZT4sICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBp
c0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUoRGVjb2RlciYsIGNvbnN0IENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZSYpOwogCi0g
ICAgdm9pZCBkZWNvZGVDYWNoZWRDb2RlQmxvY2tzKCk7CisgICAgdm9pZCBkZWNvZGVDYWNoZWRD
b2RlQmxvY2tzKFZNJik7CiAKICAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZU9mZnNldCA6IDMxOwog
ICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRleHQgOiAxOwpAQCAtMjI4LDYgKzIyOCw3IEBA
IGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVu
Y3Rpb25Nb2RlIDogMjsgLy8gRnVuY3Rpb25Nb2RlCiAgICAgdW5zaWduZWQgbV9kZXJpdmVkQ29u
dGV4dFR5cGU6IDI7CisgICAgdW5zaWduZWQgbV9pc0dlbmVyYXRlZEZyb21DYWNoZSA6IDE7CiAK
ICAgICB1bmlvbiB7CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrPiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKaW5kZXggNjY2M2I0ZjBkMzllYmJlZjlkMjcwZGUwM2QyYjVmYzVlMzNkNjQ4Mi4uYTg1
MjA3ZjEyY2Y2MDNmMDQ3ODgxZDE2NGNjNjc4Mjc0NDgzZmZlZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKQEAgLTYwNiw2ICs2MDYsNyBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5j
b25kaXRpb25hbEZpbmFsaXplcnMoKQogICAgICAgICB9KTsKICAgICBmaW5hbGl6ZU1hcmtlZFVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXJzPEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KHZtKCktPmV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMpOwogICAgIGZpbmFsaXplTWFy
a2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8U3RydWN0dXJlUmFyZURhdGE+KHZtKCktPnN0cnVj
dHVyZVJhcmVEYXRhU3BhY2UpOworICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFs
aXplcnM8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtKCktPnVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3BhY2Uuc2V0KTsKICAgICBpZiAodm0oKS0+bV93ZWFrU2V0U3BhY2UpCiAgICAg
ICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWFrU2V0Pigqdm0o
KS0+bV93ZWFrU2V0U3BhY2UpOwogICAgIGlmICh2bSgpLT5tX3dlYWtNYXBTcGFjZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCBkNDYxZTU2
OTMyOWYxZDllOGI4NmVjYmMzNTdiOWFlNzY5OWQ3MThhLi4wM2NmMTY0ZmJjY2MwMTFlOGM4NWYw
MTc3NzI0MDhiMWMxMTU0ZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwCkBAIC0yMDMxLDYgKzIwMzEsNyBAQCBBTFdBWVNfSU5MSU5FIFVubGlu
a2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhEZWNvZGVyJiBkZWNvZGVyLCBTdHJ1Y3R1
cmUqCiAgICAgLCBtX2NvZGVUeXBlKGNhY2hlZENvZGVCbG9jay5jb2RlVHlwZSgpKQogCiAgICAg
LCBtX2RpZE9wdGltaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihNaXhlZFRyaVN0YXRlKSkKKyAg
ICAsIG1fYWdlKDApCiAKICAgICAsIG1fZmVhdHVyZXMoY2FjaGVkQ29kZUJsb2NrLmZlYXR1cmVz
KCkpCiAgICAgLCBtX3BhcnNlTW9kZShjYWNoZWRDb2RlQmxvY2sucGFyc2VNb2RlKCkpCkBAIC0y
MTU4LDYgKzIxNTksNyBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShEZWNvZGVyJiBkZQogICAgICwgbV9jb25zdHJ1
Y3RvcktpbmQoY2FjaGVkRXhlY3V0YWJsZS5jb25zdHJ1Y3RvcktpbmQoKSkKICAgICAsIG1fZnVu
Y3Rpb25Nb2RlKGNhY2hlZEV4ZWN1dGFibGUuZnVuY3Rpb25Nb2RlKCkpCiAgICAgLCBtX2Rlcml2
ZWRDb250ZXh0VHlwZShjYWNoZWRFeGVjdXRhYmxlLmRlcml2ZWRDb250ZXh0VHlwZSgpKQorICAg
ICwgbV9pc0dlbmVyYXRlZEZyb21DYWNoZSh0cnVlKQogICAgICwgbV91bmxpbmtlZENvZGVCbG9j
a0ZvckNhbGwoKQogICAgICwgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdCgpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlv
bktpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlv
bktpbmQuaAppbmRleCA3NTAwODYxZmI1OTM4MmEzYjk1MDE4MDg4OWEzYjQ4ZGFlZmI3YmU2Li5j
NzU3NDk1YmRjNTUwNDMzZTAwMjVmZmNmYWVjZjAyNGQzYWU0Y2IzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCkBA
IC0yNyw3ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIENvZGVTcGVjaWFsaXph
dGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OworZW51bSBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIDogdWludDhfdCB7IENvZGVGb3JDYWxsLCBDb2RlRm9yQ29uc3RydWN0
IH07CiAKIGlubGluZSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uRnJvbUlz
Q2FsbChib29sIGlzQ2FsbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
aAppbmRleCAxNGM5YjU2NjNlNTRjNWVkNTllYTlhYzZkNmRjYzA1OWE4MDI2MTI2Li5jNDJhMzQx
ZmQ4ZGRiYjE0ZmIzZTYyNzc1NjJhNDVhYTNkMDZkYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCkBAIC01MjAsNiArNTIwLDcgQEAgY29uc3RleHByIGJvb2wgZW5h
YmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KGRvdWJsZSwgdmFsaWRh
dGVBYnN0cmFjdEludGVycHJldGVyU3RhdGVQcm9iYWJpbGl0eSwgMC41LCBOb3JtYWwsIG51bGxw
dHIpIFwKICAgICB2KG9wdGlvblN0cmluZywgZHVtcEpJVE1lbW9yeVBhdGgsIG51bGxwdHIsIFJl
c3RyaWN0ZWQsIG51bGxwdHIpIFwKICAgICB2KGRvdWJsZSwgZHVtcEpJVE1lbW9yeUZsdXNoSW50
ZXJ2YWwsIDEwLCBSZXN0cmljdGVkLCAiTWF4aW11bSB0aW1lIGluIGJldHdlZW4gZmx1c2hlcyBv
ZiB0aGUgSklUIG1lbW9yeSBkdW1wIGluIHNlY29uZHMuIikgXAorICAgIHYoYm9vbCwgdXNlVW5s
aW5rZWRDb2RlQmxvY2tKZXR0aXNvbmluZywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIFVubGlu
a2VkQ29kZUJsb2NrIGNhbiBiZSBqZXR0aXNvbmVkLiIpIFwKIAogCiBlbnVtIE9wdGlvbkVxdWl2
YWxlbmNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA0NWZhMjAyNjky
MTVhZmViN2ZhODk2NTc1ZDY1NDc5ZmQzZTcwYjhiLi4yODYxYTEyZGMyZWUzOThjNTIzMmY5OWZi
YjljMmU5ODYwZDRmYmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0y
MzIsMTEgKzIzMiw2IEBAIHZvaWQgVk06OmNvbXB1dGVDYW5Vc2VKSVQoKQogI2VuZGlmCiB9CiAK
LWJvb2wgVk06OmlzSW5NaW5pTW9kZSgpCi17Ci0gICAgcmV0dXJuICFjYW5Vc2VKSVQoKSB8fCBP
cHRpb25zOjpmb3JjZU1pbmlWTU1vZGUoKTsKLX0KLQogaW5saW5lIHVuc2lnbmVkIFZNOjpuZXh0
SUQoKQogewogICAgIGZvciAoOzspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4
IDExYzg3ZGZjNzQ0OThmNDU2ZTFmMzkzYTgzMjYyNWQyNjBlZGVmYTEuLmVlZTE1NWM0YjI5N2Q5
MjI5ZGJhZjNmZGNjOWFiMjdkOWZiMGE4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aApAQCAtNjMyLDcgKzYzMiwxNSBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIH07CiAKICAg
ICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VBc3NlbWJsZXIoKTsKLSAgICBz
dGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0luTWluaU1vZGUoKTsKKyAgICBzdGF0aWMg
Ym9vbCBpc0luTWluaU1vZGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFjYW5Vc2VKSVQoKSB8
fCBPcHRpb25zOjpmb3JjZU1pbmlWTU1vZGUoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCB1
c2VVbmxpbmtlZENvZGVCbG9ja0pldHRpc29uaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiBP
cHRpb25zOjp1c2VVbmxpbmtlZENvZGVCbG9ja0pldHRpc29uaW5nKCkgfHwgaXNJbk1pbmlNb2Rl
KCk7CisgICAgfQogCiAgICAgc3RhdGljIHZvaWQgY29tcHV0ZUNhblVzZUpJVCgpOwogICAgIEFM
V0FZU19JTkxJTkUgc3RhdGljIGJvb2wgY2FuVXNlSklUKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1YzNjYTFlZDRjOWIyMWE0ZjBkZjFhYzQx
NDgyZWJiMDcyODEyZmE2Li41Yjg0ZTBlODQxM2MwM2QwMTJlNzdlOTM2NWY4MjVlMTExODhlODY2
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTktMDYtMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVbmxpbmtlZENvZGVCbG9jayBzaG91bGQgYmUgZXZlbnR1YWxs
eSBqZXR0aXNvbmVkIGluIFZNIG1pbmkgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MDIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOgorCiAy
MDE5LTA2LTA0ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbZXdzLWFwcF0gQWRkIGF1dGhlbnRpY2F0aW9uIHdoaWxlIGZldGNoaW5nIGJ1Z3MKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgYi9Ub29scy9TY3JpcHRz
L3J1bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IDEyM2I3ZmQ0ZGRjMjlmYjkyNWQzNTczYmIyOWI4
MDUyYjNlNmRiYTEuLmEwMzM2NTY3OTc2ZmU0NDljYjg5NGE4YjIxYjBhNmZjYmEzMjFlNDAgMTAw
NzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKKysrIGIvVG9vbHMv
U2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtNzgwLDEyICs3ODAsMTcgQEAgZGVmIHJ1
blNoYWRvd0NoaWNrZW4oKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKICAgICBydW4oInNo
YWRvdy1jaGlja2VuIiwgIi0tdXNlREZHSklUPWZhbHNlIiwgIi0tYWx3YXlzVXNlU2hhZG93Q2hp
Y2tlbj10cnVlIiwgKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKIGVuZAogCitkZWYgcnVu
TWluaU1vZGUoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKKyAgICBydW4oIm1pbmktbW9k
ZSIsICItLWZvcmNlTWluaVZNTW9kZT10cnVlIiwgKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9u
cykKK2VuZAorCiBkZWYgZGVmYXVsdFJ1bgogICAgIGlmICRtb2RlID09ICJxdWljayIKICAgICAg
ICAgZGVmYXVsdFF1aWNrUnVuCiAgICAgZWxzZQogICAgICAgICBydW5EZWZhdWx0CiAgICAgICAg
IHJ1bkJ5dGVjb2RlQ2FjaGUKKyAgICAgICAgcnVuTWluaU1vZGUKICAgICAgICAgaWYgJGppdFRl
c3RzCiAgICAgICAgICAgICBydW5Ob0xMSW50CiAgICAgICAgICAgICBydW5Ob0NKSVRWYWxpZGF0
ZVBoYXNlcwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCA4N2IzYjE5MjRiMzgzYWFiNjcwMjBkNGZjODk5OGMyYjAwNzg2ODEwLi42ZWM5YjVm
NWQ5ZTIxZWE4OGFlNTRkODk4NTkzN2FlMTVjYmVmNDhkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA2
LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10g
VW5saW5rZWRDb2RlQmxvY2sgc2hvdWxkIGJlIGV2ZW50dWFsbHkgamV0dGlzb25lZCBpbiBWTSBt
aW5pIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5ODAyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogc3RyZXNzL3JlcGFyc2luZy11bmxpbmtlZC1jb2RlYmxvY2suanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAoaGVsbG8pOgorCiAyMDE5LTA2LTA0ICBUYWRldSBaYWdh
bGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgogCiAgICAgICAgIEFyZ3VtZW50IGVsaW1pbmF0aW9u
IHNob3VsZCBjaGVjayB0cmFuc2l0aXZlIGRlcGVuZGVudHMgZm9yIGludGVyZmVyZW5jZQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVwYXJzaW5nLXVubGlua2VkLWNvZGVibG9jay5qcyBi
L0pTVGVzdHMvc3RyZXNzL3JlcGFyc2luZy11bmxpbmtlZC1jb2RlYmxvY2suanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjMxOTYzN2ZlYzcwYWY2MGZjMjMyYjJlOWIwMGNkODhmYjczMjg1OQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlcGFyc2luZy11bmxpbmtlZC1jb2RlYmxvY2suanMKQEAg
LTAsMCArMSwyNCBAQAorLy9AIHJ1bkRlZmF1bHQoIi0tZm9yY2VDb2RlQmxvY2tUb0pldHRpc29u
RHVlVG9PbGRBZ2U9MSIsICItLXVzZVVubGlua2VkQ29kZUJsb2NrSmV0dGlzb25pbmc9MSIpCisK
K2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1
YWwpOworfQorCitmdW5jdGlvbiBoZWxsbygpCit7CisgICAgcmV0dXJuIChmdW5jdGlvbiAoKSB7
CisgICAgICAgIGZ1bmN0aW9uIHdvcmxkKCkgeworICAgICAgICAgICAgcmV0dXJuIDQyOworICAg
ICAgICB9OworICAgICAgICByZXR1cm4gd29ybGQoKTsKKyAgICB9KCkpOworfQorCisvLyBDb21w
aWxlIGhlbGxvIGFuZCB3b3JsZCBmdW5jdGlvbi4KK3Nob3VsZEJlKGhlbGxvKCksIDQyKTsKKy8v
IEtpY2sgZnVsbCBHQyAyMCB0aW1lcyB0byBtYWtlIFVubGlua2VkQ29kZUJsb2NrIGFnZWQgYW5k
IGRlc3Ryb3llZC4gSmV0dGlzb24gaGVsbG8gQ29kZUJsb2NrLCBhbmQgdW5kZXJseWluZyB3b3Js
ZCBVbmxpbmtlZENvZGVCbG9jay4KK2ZvciAodmFyIGkgPSAwOyBpIDwgMjA7ICsraSkKKyAgICBm
dWxsR0MoKTsKKy8vIFJlY29tcGlsZSB3b3JsZC4KK3Nob3VsZEJlKGhlbGxvKCksIDQyKTsK
</data>
<flag name="review"
          id="387469"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>