<?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>177856</bug_id>
          
          <creation_ts>2017-10-04 01:55:25 -0700</creation_ts>
          <short_desc>[Linux] Port MallocBench</short_desc>
          <delta_ts>2017-10-07 19:55:51 -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>bmalloc</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>
          <dependson>177839</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>buildbot</cc>
    
    <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1356285</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-04 01:55:25 -0700</bug_when>
    <thetext>We would like to run MallocBench to decide whether a new improvement in bmalloc works well in Linux! (Including changing bmalloc StaticMutex to an adaptive one with futex).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356319</commentid>
    <comment_count>1</comment_count>
      <attachid>322649</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-04 03:35:37 -0700</bug_when>
    <thetext>Created attachment 322649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356393</commentid>
    <comment_count>2</comment_count>
      <attachid>322666</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-04 07:15:08 -0700</bug_when>
    <thetext>Created attachment 322666
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356394</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-04 07:16:42 -0700</bug_when>
    <thetext>Attachment 322666 did not pass style-queue:


ERROR: PerformanceTests/MallocBench/MallocBench/message.cpp:130:  More than one command on the same line  [whitespace/newline] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/message.cpp:135:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/message.cpp:142:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/message.cpp:173:  More than one command on the same line  [whitespace/newline] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/Memory.cpp:27:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/Memory.cpp:43:  vm_info is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/Memory.cpp:44:  vm_size is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 7 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356432</commentid>
    <comment_count>4</comment_count>
      <attachid>322677</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-04 08:55:44 -0700</bug_when>
    <thetext>Created attachment 322677
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356433</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-04 08:58:23 -0700</bug_when>
    <thetext>Attachment 322677 did not pass style-queue:


ERROR: PerformanceTests/MallocBench/MallocBench/Memory.cpp:27:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/Memory.cpp:28:  Streams are highly discouraged.  [readability/streams] [3]
ERROR: PerformanceTests/MallocBench/MallocBench/Memory.cpp:44:  vm_info is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/Memory.cpp:45:  vm_size is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/CMakeLists.txt:49:  Use lowercase command &quot;set&quot;  [command/lowercase] [5]
ERROR: PerformanceTests/MallocBench/MallocBench/message.cpp:126:  More than one command on the same line  [whitespace/newline] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/message.cpp:131:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/message.cpp:138:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/message.cpp:169:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 9 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356442</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-04 09:13:20 -0700</bug_when>
    <thetext>macOS dump. (SystemMalloc v.s. bmalloc). This is to ensure MallocBench works right now.
MacBook Pro

                                                  SystemMalloc                        patched                              Δ
Execution Time:
    churn                                                547ms                           86ms                 ^ 6.36x faster
    list_allocate                                        570ms                           62ms                 ^ 9.19x faster
    tree_allocate                                        490ms                           73ms                 ^ 6.71x faster
    tree_churn                                           194ms                           77ms                 ^ 2.52x faster
    fragment                                             597ms                           69ms                 ^ 8.65x faster
    fragment_iterate                                     252ms                           31ms                 ^ 8.13x faster
    medium                                               531ms                          164ms                 ^ 3.24x faster
    big                                                  500ms                           88ms                 ^ 5.68x faster
    facebook                                             383ms                          184ms                 ^ 2.08x faster
    reddit                                               270ms                          103ms                 ^ 2.62x faster
    flickr                                               270ms                          106ms                 ^ 2.55x faster
    theverge                                             329ms                          135ms                 ^ 2.44x faster
    nimlang                                              673ms                           98ms                 ^ 6.87x faster
    message_one                                          973ms                          110ms                 ^ 8.85x faster
    message_many                                       2,613ms                          197ms                ^ 13.26x faster
    churn --parallel                                     120ms                           32ms                 ^ 3.75x faster
    list_allocate --parallel                             320ms                           60ms                 ^ 5.33x faster
    tree_allocate --parallel                             561ms                          132ms                 ^ 4.25x faster
    tree_churn --parallel                                245ms                           82ms                 ^ 2.99x faster
    fragment --parallel                                  181ms                           47ms                 ^ 3.85x faster
    fragment_iterate --parallel                           80ms                           11ms                 ^ 7.27x faster
    medium --parallel                                    262ms                          144ms                 ^ 1.82x faster
    big --parallel                                       177ms                           73ms                 ^ 2.42x faster
    facebook --parallel                                1,119ms                          799ms                  ^ 1.4x faster
    reddit --parallel                                    893ms                          596ms                  ^ 1.5x faster
    flickr --parallel                                    991ms                          565ms                 ^ 1.75x faster
    theverge --parallel                                1,254ms                          729ms                 ^ 1.72x faster

    &lt;geometric mean&gt;                                     423ms                          110ms                 ^ 3.86x faster
    &lt;arithmetic mean&gt;                                    570ms                          180ms                 ^ 3.17x faster
    &lt;harmonic mean&gt;                                      318ms                           71ms                  ^ 4.5x faster

Peak Memory:
    churn                                                976kB                        1,172kB                  ! 1.2x bigger
    list_allocate                                      9,732kB                        2,468kB                ^ 3.94x smaller
    tree_allocate                                     10,828kB                        6,284kB                ^ 1.72x smaller
    tree_churn                                        10,944kB                        5,112kB                ^ 2.14x smaller
    fragment                                          11,244kB                        8,332kB                ^ 1.35x smaller
    fragment_iterate                                  26,204kB                       25,996kB                ^ 1.01x smaller
    medium                                         1,145,984kB                    1,189,664kB                 ! 1.04x bigger
    big                                            1,076,456kB                    1,089,456kB                 ! 1.01x bigger
    facebook                                         130,808kB                       80,076kB                ^ 1.63x smaller
    reddit                                            32,212kB                       14,340kB                ^ 2.25x smaller
    flickr                                            53,976kB                       28,296kB                ^ 1.91x smaller
    theverge                                          51,852kB                       27,864kB                ^ 1.86x smaller
    nimlang                                          232,784kB                      165,592kB                ^ 1.41x smaller
    message_one                                        8,584kB                        4,528kB                 ^ 1.9x smaller
    message_many                                      11,672kB                        4,036kB                ^ 2.89x smaller
    churn --parallel                                   1,076kB                        1,712kB                 ! 1.59x bigger
    list_allocate --parallel                           4,120kB                        2,844kB                ^ 1.45x smaller
    tree_allocate --parallel                          11,204kB                        6,816kB                ^ 1.64x smaller
    tree_churn --parallel                              6,904kB                        5,696kB                ^ 1.21x smaller
    fragment --parallel                               10,756kB                        7,816kB                ^ 1.38x smaller
    fragment_iterate --parallel                       28,728kB                       27,284kB                ^ 1.05x smaller
    medium --parallel                              1,113,536kB                    1,185,820kB                 ! 1.06x bigger
    big --parallel                                 1,009,408kB                    1,086,988kB                 ! 1.08x bigger
    facebook --parallel                              522,520kB                      550,512kB                 ! 1.05x bigger
    reddit --parallel                                 91,368kB                      108,564kB                 ! 1.19x bigger
    flickr --parallel                                185,648kB                      192,304kB                 ! 1.04x bigger
    theverge --parallel                              199,736kB                      213,148kB                 ! 1.07x bigger

    &lt;geometric mean&gt;                                  40,410kB                       30,197kB                ^ 1.34x smaller
    &lt;arithmetic mean&gt;                                222,195kB                      223,804kB                 ! 1.01x bigger
    &lt;harmonic mean&gt;                                    8,227kB                        7,019kB                ^ 1.17x smaller

Memory at End:
    churn                                                436kB                          584kB                 ! 1.34x bigger
    list_allocate                                        520kB                          592kB                 ! 1.14x bigger
    tree_allocate                                        604kB                          592kB                ^ 1.02x smaller
    tree_churn                                           584kB                          604kB                 ! 1.03x bigger
    fragment                                           1,588kB                          592kB                ^ 2.68x smaller
    fragment_iterate                                     780kB                          592kB                ^ 1.32x smaller
    medium                                             1,308kB                          640kB                ^ 2.04x smaller
    big                                                1,716kB                          640kB                ^ 2.68x smaller
    facebook                                           1,276kB                        2,632kB                 ! 2.06x bigger
    reddit                                               904kB                        1,856kB                 ! 2.05x bigger
    flickr                                             1,016kB                        2,820kB                 ! 2.78x bigger
    theverge                                           1,052kB                        2,776kB                 ! 2.64x bigger
    nimlang                                           61,028kB                       58,820kB                ^ 1.04x smaller
    message_one                                          736kB                          708kB                ^ 1.04x smaller
    message_many                                         748kB                          864kB                 ! 1.16x bigger
    churn --parallel                                     536kB                        1,140kB                 ! 2.13x bigger
    list_allocate --parallel                             576kB                        1,216kB                 ! 2.11x bigger
    tree_allocate --parallel                             672kB                        1,640kB                 ! 2.44x bigger
    tree_churn --parallel                                628kB                        1,540kB                 ! 2.45x bigger
    fragment --parallel                                1,672kB                        1,768kB                 ! 1.06x bigger
    fragment_iterate --parallel                          940kB                        1,300kB                 ! 1.38x bigger
    medium --parallel                                  1,524kB                       11,804kB                 ! 7.75x bigger
    big --parallel                                     2,036kB                       41,716kB                ! 20.49x bigger
    facebook --parallel                                2,088kB                       24,016kB                 ! 11.5x bigger
    reddit --parallel                                  1,284kB                       13,616kB                 ! 10.6x bigger
    flickr --parallel                                  1,424kB                       23,560kB                ! 16.54x bigger
    theverge --parallel                                1,604kB                       22,260kB                ! 13.88x bigger

    &lt;geometric mean&gt;                                   1,142kB                        2,391kB                 ! 2.09x bigger
    &lt;arithmetic mean&gt;                                  3,307kB                        8,181kB                 ! 2.47x bigger
    &lt;harmonic mean&gt;                                      917kB                        1,223kB                 ! 1.33x bigger</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356453</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-04 09:30:54 -0700</bug_when>
    <thetext>Then, this is Linux version! Actually, we can see that bmalloc offers 2x performance improvement in Linux too.
It seems that glibc&apos;s malloc works a bit nicely, but bmalloc is still beneficial :)

                                                  SystemMalloc                        patched                              Δ
Execution Time:
    churn                                                167ms                          106ms                 ^ 1.58x faster
    list_allocate                                        118ms                           69ms                 ^ 1.71x faster
    tree_allocate                                        138ms                           72ms                 ^ 1.92x faster
    tree_churn                                           122ms                           63ms                 ^ 1.94x faster
    fragment                                             308ms                           86ms                 ^ 3.58x faster
    fragment_iterate                                     330ms                           57ms                 ^ 5.79x faster
    medium                                               406ms                          235ms                 ^ 1.73x faster
    big                                                  407ms                          160ms                 ^ 2.54x faster
    facebook                                             319ms                          220ms                 ^ 1.45x faster
    reddit                                               151ms                           88ms                 ^ 1.72x faster
    flickr                                               152ms                           88ms                 ^ 1.73x faster
    theverge                                             188ms                          108ms                 ^ 1.74x faster
    nimlang                                              215ms                          192ms                 ^ 1.12x faster
    message_one                                          740ms                          123ms                 ^ 6.02x faster
    message_many                                         747ms                          134ms                 ^ 5.57x faster
    churn --parallel                                     138ms                           42ms                 ^ 3.29x faster
    list_allocate --parallel                             186ms                           73ms                 ^ 2.55x faster
    tree_allocate --parallel                             142ms                           83ms                 ^ 1.71x faster
    tree_churn --parallel                                 78ms                           58ms                 ^ 1.34x faster
    fragment --parallel                                  213ms                          149ms                 ^ 1.43x faster
    fragment_iterate --parallel                          126ms                           46ms                 ^ 2.74x faster
    medium --parallel                                    535ms                          159ms                 ^ 3.36x faster
    big --parallel                                       220ms                          152ms                 ^ 1.45x faster
    facebook --parallel                                  821ms                          722ms                 ^ 1.14x faster
    reddit --parallel                                    281ms                          261ms                 ^ 1.08x faster
    flickr --parallel                                    282ms                          265ms                 ^ 1.06x faster
    theverge --parallel                                  353ms                          329ms                 ^ 1.07x faster

    &lt;geometric mean&gt;                                     240ms                          120ms                  ^ 2.0x faster
    &lt;arithmetic mean&gt;                                    292ms                          153ms                  ^ 1.9x faster
    &lt;harmonic mean&gt;                                      203ms                          100ms                 ^ 2.04x faster

Peak Memory:
    churn                                                228kB                          392kB                 ! 1.72x bigger
    list_allocate                                      2,720kB                        1,676kB                ^ 1.62x smaller
    tree_allocate                                      6,680kB                        5,276kB                ^ 1.27x smaller
    tree_churn                                         4,296kB                        4,296kB
    fragment                                           7,216kB                        7,328kB                 ! 1.02x bigger
    fragment_iterate                                  29,460kB                       25,992kB                ^ 1.13x smaller
    medium                                         1,069,036kB                    1,191,972kB                 ! 1.11x bigger
    big                                            1,051,064kB                    1,102,476kB                 ! 1.05x bigger
    facebook                                          67,728kB                       95,340kB                 ! 1.41x bigger
    reddit                                            11,384kB                       14,016kB                 ! 1.23x bigger
    flickr                                            21,492kB                       28,344kB                 ! 1.32x bigger
    theverge                                          22,024kB                       28,508kB                 ! 1.29x bigger
    nimlang                                          302,112kB                      196,392kB                ^ 1.54x smaller
    message_one                                        4,220kB                        2,272kB                ^ 1.86x smaller
    message_many                                       9,920kB                        1,396kB                ^ 7.11x smaller
    churn --parallel                                     284kB                          380kB                 ! 1.34x bigger
    list_allocate --parallel                           2,840kB                        1,404kB                ^ 2.02x smaller
    tree_allocate --parallel                           3,512kB                        2,432kB                ^ 1.44x smaller
    tree_churn --parallel                              2,388kB                        1,400kB                ^ 1.71x smaller
    fragment --parallel                                5,444kB                        6,520kB                  ! 1.2x bigger
    fragment_iterate --parallel                       27,816kB                       24,952kB                ^ 1.11x smaller
    medium --parallel                              1,068,852kB                    1,192,120kB                 ! 1.12x bigger
    big --parallel                                 1,048,908kB                    1,103,460kB                 ! 1.05x bigger
    facebook --parallel                              267,464kB                      294,996kB                  ! 1.1x bigger
    reddit --parallel                                 42,712kB                       53,484kB                 ! 1.25x bigger
    flickr --parallel                                 83,748kB                      101,860kB                 ! 1.22x bigger
    theverge --parallel                               85,868kB                      107,980kB                 ! 1.26x bigger

    &lt;geometric mean&gt;                                  22,041kB                       20,172kB                ^ 1.09x smaller
    &lt;arithmetic mean&gt;                                194,423kB                      207,284kB                 ! 1.07x bigger
    &lt;harmonic mean&gt;                                    2,525kB                        2,765kB                  ! 1.1x bigger

Memory at End:
    churn                                                228kB                          392kB                 ! 1.72x bigger
    list_allocate                                        224kB                          392kB                 ! 1.75x bigger
    tree_allocate                                        224kB                          392kB                 ! 1.75x bigger
    tree_churn                                           224kB                          396kB                 ! 1.77x bigger
    fragment                                             228kB                          396kB                 ! 1.74x bigger
    fragment_iterate                                     224kB                          392kB                 ! 1.75x bigger
    medium                                               224kB                          476kB                 ! 2.13x bigger
    big                                                  224kB                          476kB                 ! 2.13x bigger
    facebook                                             220kB                        2,304kB                ! 10.47x bigger
    reddit                                               224kB                        1,492kB                 ! 6.66x bigger
    flickr                                               224kB                        2,432kB                ! 10.86x bigger
    theverge                                             228kB                        2,456kB                ! 10.77x bigger
    nimlang                                           62,172kB                       58,200kB                ^ 1.07x smaller
    message_one                                          240kB                          408kB                  ! 1.7x bigger
    message_many                                         264kB                          436kB                 ! 1.65x bigger
    churn --parallel                                     284kB                          380kB                 ! 1.34x bigger
    list_allocate --parallel                           2,840kB                          380kB                ^ 7.47x smaller
    tree_allocate --parallel                           3,512kB                          384kB                ^ 9.15x smaller
    tree_churn --parallel                              2,388kB                          376kB                ^ 6.35x smaller
    fragment --parallel                                  788kB                          376kB                 ^ 2.1x smaller
    fragment_iterate --parallel                          788kB                          376kB                 ^ 2.1x smaller
    medium --parallel                                 17,092kB                          468kB               ^ 36.52x smaller
    big --parallel                                     2,840kB                          476kB                ^ 5.97x smaller
    facebook --parallel                                8,456kB                        8,072kB                ^ 1.05x smaller
    reddit --parallel                                    884kB                        4,800kB                 ! 5.43x bigger
    flickr --parallel                                    888kB                        8,548kB                 ! 9.63x bigger
    theverge --parallel                                  892kB                        8,652kB                  ! 9.7x bigger

    &lt;geometric mean&gt;                                     705kB                          960kB                 ! 1.36x bigger
    &lt;arithmetic mean&gt;                                  3,964kB                        3,864kB                ^ 1.03x smaller
    &lt;harmonic mean&gt;                                      373kB                          577kB                 ! 1.55x bigger</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356457</commentid>
    <comment_count>8</comment_count>
      <attachid>322682</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-04 09:39:55 -0700</bug_when>
    <thetext>Created attachment 322682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356459</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-04 09:41:06 -0700</bug_when>
    <thetext>Attachment 322682 did not pass style-queue:


ERROR: PerformanceTests/MallocBench/MallocBench/Memory.cpp:27:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/Memory.cpp:28:  Streams are highly discouraged.  [readability/streams] [3]
ERROR: PerformanceTests/MallocBench/MallocBench/Memory.cpp:44:  vm_info is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/Memory.cpp:45:  vm_size is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/CMakeLists.txt:49:  Use lowercase command &quot;set&quot;  [command/lowercase] [5]
ERROR: PerformanceTests/MallocBench/MallocBench/message.cpp:126:  More than one command on the same line  [whitespace/newline] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/message.cpp:131:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/message.cpp:138:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/message.cpp:169:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 9 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356882</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-05 00:05:54 -0700</bug_when>
    <thetext>Committed r222900: &lt;http://trac.webkit.org/changeset/222900&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356884</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-05 00:06:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/34828861&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357049</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-05 09:31:57 -0700</bug_when>
    <thetext>This broke the build with Clang due to use of a VLA:

../../PerformanceTests/MallocBench/MallocBench/message.cpp:212:38: error: variable length array of non-POD element type &apos;std::unique_ptr&lt;WorkQueue&gt;&apos;
    std::unique_ptr&lt;WorkQueue&gt; queues[queueCount];
                                     ^
1 error generated.

I&apos;m tempted to say the array should be heap-allocated instead... but I don&apos;t know if that will mess up the thing it&apos;s trying to benchmark. :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357116</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-10-05 11:23:26 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #12)
&gt; This broke the build with Clang due to use of a VLA:
&gt; 
&gt; ../../PerformanceTests/MallocBench/MallocBench/message.cpp:212:38: error:
&gt; variable length array of non-POD element type &apos;std::unique_ptr&lt;WorkQueue&gt;&apos;
&gt;     std::unique_ptr&lt;WorkQueue&gt; queues[queueCount];
&gt;                                      ^
&gt; 1 error generated.
&gt; 
&gt; I&apos;m tempted to say the array should be heap-allocated instead... but I don&apos;t
&gt; know if that will mess up the thing it&apos;s trying to benchmark. :D

It seems also broke 32-bit builds:

https://build.webkit.org/builders/GTK%20Linux%2032-bit%20Release/builds/4306/steps/compile-webkit/logs/stdio
https://build.webkit.org/builders/GTK%20Linux%20ARM%20Release/builds/1287/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357337</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-05 16:58:21 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #12)
&gt; This broke the build with Clang due to use of a VLA:
&gt; 
&gt; ../../PerformanceTests/MallocBench/MallocBench/message.cpp:212:38: error:
&gt; variable length array of non-POD element type &apos;std::unique_ptr&lt;WorkQueue&gt;&apos;
&gt;     std::unique_ptr&lt;WorkQueue&gt; queues[queueCount];
&gt;                                      ^
&gt; 1 error generated.
&gt; 
&gt; I&apos;m tempted to say the array should be heap-allocated instead... but I don&apos;t
&gt; know if that will mess up the thing it&apos;s trying to benchmark. :D

I’ll fix it with std::vector here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357373</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-05 18:15:41 -0700</bug_when>
    <thetext>Committed r222948: &lt;http://trac.webkit.org/changeset/222948&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357962</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-07 15:12:25 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #14)
&gt; I’ll fix it with std::vector here.

No need to change this test code, but I think in standard C++, if resizing is not needed, then std::unique_ptr&lt;std::unique_ptr&lt;WorkQueue&gt;[]&gt; would be preferred. std::vector has additional overhead to make resizing efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358018</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-07 19:53:12 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #16)
&gt; (In reply to Yusuke Suzuki from comment #14)
&gt; &gt; I’ll fix it with std::vector here.
&gt; 
&gt; No need to change this test code, but I think in standard C++, if resizing
&gt; is not needed, then std::unique_ptr&lt;std::unique_ptr&lt;WorkQueue&gt;[]&gt; would be
&gt; preferred. std::vector has additional overhead to make resizing efficient.

I&apos;m a bit (In reply to Darin Adler from comment #16)
&gt; (In reply to Yusuke Suzuki from comment #14)
&gt; &gt; I’ll fix it with std::vector here.
&gt; 
&gt; No need to change this test code, but I think in standard C++, if resizing
&gt; is not needed, then std::unique_ptr&lt;std::unique_ptr&lt;WorkQueue&gt;[]&gt; would be
&gt; preferred. std::vector has additional overhead to make resizing efficient.

Thank you. I&apos;ve changed it to `make_unique&lt;WorkQueue[]&gt;(queueCount)`, it should be good in this use case :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358020</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-07 19:55:51 -0700</bug_when>
    <thetext>Committed r223026: &lt;http://trac.webkit.org/changeset/223026&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322649</attachid>
            <date>2017-10-04 03:35:37 -0700</date>
            <delta_ts>2017-10-04 07:15:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177856-20171004123535.patch</filename>
            <type>text/plain</type>
            <size>21140</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggZjgwMzE4ZTMzMTI5NDEy
NjUzZjBjNjY4Mjg4OTE0ODg5NDkzMjYxYi4uNjFmOGQ1YWRmOGZlOWM1NDc4OWNmMGE4MzBlOGQ1
NWVlMTU0NjM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTEwLTA0ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtMaW51eF0gUG9y
dCBNYWxsb2NCZW5jaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc3ODU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxNy0xMC0wMiAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbTGludXhdIEVuYWJsZSBHaWdhY2FnZSBp
biB4NjQgTGludXggZW52aXJvbm1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKaW5kZXggYmY2MDRjZTA0
MjI1YTA4ZjRjMmYyYjUyNjFmMjgzMjEzMmY3M2RlOS4uM2ZhYjY5ZjBhZDVmZmQwZjk4NzEyMjA5
ZmVmMWVmNmVmYTU5NGIzOCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKQEAgLTM3LDMgKzM3LDcgQEAg
aW5jbHVkZV9kaXJlY3Rvcmllcygke2JtYWxsb2NfSU5DTFVERV9ESVJFQ1RPUklFU30pCiBhZGRf
bGlicmFyeShibWFsbG9jIFNUQVRJQyAke2JtYWxsb2NfU09VUkNFU30pCiB0YXJnZXRfbGlua19s
aWJyYXJpZXMoYm1hbGxvYyAke2JtYWxsb2NfTElCUkFSSUVTfSkKIHNldF90YXJnZXRfcHJvcGVy
dGllcyhibWFsbG9jIFBST1BFUlRJRVMgQ09NUElMRV9ERUZJTklUSU9OUyAiQlVJTERJTkdfYm1h
bGxvYyIpCisKK2FkZF9saWJyYXJ5KG1ibWFsbG9jIFNIQVJFRCBibWFsbG9jL21ibWFsbG9jLmNw
cCkKK3RhcmdldF9saW5rX2xpYnJhcmllcyhtYm1hbGxvYyBibWFsbG9jICR7Q01BS0VfVEhSRUFE
X0xJQlNfSU5JVH0gJHtibWFsbG9jX0xJQlJBUklFU30pCitzZXRfdGFyZ2V0X3Byb3BlcnRpZXMo
bWJtYWxsb2MgUFJPUEVSVElFUyBDT01QSUxFX0RFRklOSVRJT05TICJCVUlMRElOR19tYm1hbGxv
YyIpCmRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CmluZGV4IDRj
M2I5NDA5OTVkOGRhMzY4MmQ3MDhlY2FmMzFmYzk1Y2RhYmM1YTQuLjgzN2JhMDJhMGVjMzBmYTUy
ODA1YWZmYTcxNDU3MTcyNjI1Yjk1ZDMgMTAwNjQ0Ci0tLSBhL0NNYWtlTGlzdHMudHh0CisrKyBi
L0NNYWtlTGlzdHMudHh0CkBAIC0xNjYsNiArMTY2LDggQEAgaWYgKEVOQUJMRV9UT09MUykKICAg
ICBhZGRfc3ViZGlyZWN0b3J5KFRvb2xzKQogZW5kaWYgKCkKIAorYWRkX3N1YmRpcmVjdG9yeShQ
ZXJmb3JtYW5jZVRlc3RzKQorCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFByaW50IHRoZSBm
ZWF0dXJlcyBsaXN0IGxhc3QsIGZvciBtYXhpbXVtIHZpc2liaWxpdHkuCiAjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMWE1ZGNi
MzBlNjdhMzU3YWUzNWU1MjhhMmQwNmY4OTMwYjVlYWJlOS4uMTkxYWQ0MGZlMzBkYzRkODAwMjRh
ZjViMDY3ZWVhZDU1OWZlN2UwYSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTEwLTA0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtMaW51eF0gUG9ydCBNYWxsb2NCZW5jaAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3ODU2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKwogMjAxNy0xMC0wMyAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3Jvbmhh
QGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBbR0xpYl0gTGV0IFdlYkNvcmUga25vdyBvZiBs
b3cgcG93ZXIgc2l0dWF0aW9ucwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DTWFrZUxp
c3RzLnR4dCBiL1BlcmZvcm1hbmNlVGVzdHMvQ01ha2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJh
NzE3Y2EwN2JiNWYyNGU1MGRjNzQ0MjM0NDQ3YWVmOTEyYjNjZgotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvQ01ha2VMaXN0cy50eHQKQEAgLTAsMCArMSw3IEBACitzZXQoRU5B
QkxFX01BTExPQ19CRU5DSCBPTikKKworaWYgKEVOQUJMRV9NQUxMT0NfQkVOQ0gpCisgICAgYWRk
X3N1YmRpcmVjdG9yeShNYWxsb2NCZW5jaCkKK2VuZGlmICgpCisKK1dFQktJVF9JTkNMVURFX0NP
TkZJR19GSUxFU19JRl9FWElTVFMoKQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFu
Z2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCAyY2FiOTA5ODI4YzkxYWFl
ZTNiNTJkOTkyM2IzNjFjMmE2MTJlOTFhLi44ZmM3YjU2MGM3YmJiOTcwNTM3NzkyODgxMWQzZDQ2
NTgzYjNjNDBmIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE3LTEwLTA0ICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtMaW51eF0g
UG9ydCBNYWxsb2NCZW5jaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc3ODU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQuCisgICAgICAgICogTWFsbG9jQmVuY2gv
Q01ha2VMaXN0cy50eHQ6IEFkZGVkLgorICAgICAgICAqIE1hbGxvY0JlbmNoL01hbGxvY0JlbmNo
L0JlbmNobWFyay5jcHA6CisgICAgICAgIChCZW5jaG1hcms6OkJlbmNobWFyayk6CisgICAgICAg
IChCZW5jaG1hcms6OnJ1bk9uY2UpOgorICAgICAgICAoQmVuY2htYXJrOjpjdXJyZW50TWVtb3J5
Qnl0ZXMpOgorICAgICAgICAqIE1hbGxvY0JlbmNoL01hbGxvY0JlbmNoL0JlbmNobWFyay5oOgor
ICAgICAgICAqIE1hbGxvY0JlbmNoL01hbGxvY0JlbmNoL0NNYWtlTGlzdHMudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBNYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9DUFVDb3VudC5jcHA6CisgICAgICAg
IChjcHVDb3VudCk6CisgICAgICAgICogTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvSW50ZXJwcmV0
ZXIuY3BwOgorICAgICAgICAoSW50ZXJwcmV0ZXI6OmRvTWFsbG9jT3ApOgorICAgICAgICAqIE1h
bGxvY0JlbmNoL01hbGxvY0JlbmNoL1N5c3RlbUZyZWUuY3BwOiBDb3BpZWQgZnJvbSBQZXJmb3Jt
YW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL0NQVUNvdW50LmNwcC4KKyAgICAgICAg
KHN5c3RlbUZyZWUpOgorICAgICAgICAqIE1hbGxvY0JlbmNoL01hbGxvY0JlbmNoL2JhbGxvb24u
Y3BwOgorICAgICAgICAqIE1hbGxvY0JlbmNoL01hbGxvY0JlbmNoL21ibWFsbG9jLmNwcDoKKyAg
ICAgICAgKiBNYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9tZXNzYWdlLmNwcDoKKyAgICAgICAgKGJl
bmNobWFya19tZXNzYWdlX29uZSk6CisgICAgICAgIChiZW5jaG1hcmtfbWVzc2FnZV9tYW55KToK
KyAgICAgICAgKiBNYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9uaW1sYW5nLmNwcDoKKyAgICAgICAg
KGJlbmNobWFya19uaW1sYW5nKToKKyAgICAgICAgKiBNYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9z
dHJlc3MuY3BwOgorICAgICAgICAoU2l6ZVN0cmVhbTo6bmV4dCk6CisgICAgICAgICogTWFsbG9j
QmVuY2gvTWFsbG9jQmVuY2gvc3RyZXNzX2FsaWduZWQuY3BwOgorICAgICAgICAqIE1hbGxvY0Jl
bmNoL3J1bi1tYWxsb2MtYmVuY2htYXJrczoKKwogMjAxNy0wOS0yNiAgTWF0aGlhcyBCeW5lbnMg
IDxtYXRoaWFzQHFpd2kuYmU+CiAKICAgICAgICAgU3BlZWRvbWV0ZXI6IGVuc3VyZSBhbGwgVG9k
b01WQyB0ZXN0cyB1c2UgdGhlIGNvbXBsZXRlIGxhdGVzdCBDU1MKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvQ01ha2VMaXN0cy50eHQgYi9QZXJmb3JtYW5jZVRlc3Rz
L01hbGxvY0JlbmNoL0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjYmE3YjY0ZmJkMTE3MDZk
M2ViMmJkNGZlYzAyNTE1ZDA3OWMzNDkKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL01hbGxvY0JlbmNoL0NNYWtlTGlzdHMudHh0CkBAIC0wLDAgKzEgQEAKK2FkZF9zdWJkaXJl
Y3RvcnkoTWFsbG9jQmVuY2gpCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0Jl
bmNoL01hbGxvY0JlbmNoL0JlbmNobWFyay5jcHAgYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0Jl
bmNoL01hbGxvY0JlbmNoL0JlbmNobWFyay5jcHAKaW5kZXggZDJkODQyYzIzNWI2OWMzMTZmNmM3
Y2IyYmEwN2FjMjU2Njk4NzExYy4uMjhhZmIyYWY5NmIyMTUyYzk0MGE4MWVkYmQ2MmYzZDMyMWU3
ZDJmOCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5j
aC9CZW5jaG1hcmsuY3BwCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9j
QmVuY2gvQmVuY2htYXJrLmNwcApAQCAtNDIsMTUgKzQyLDI2IEBACiAjaW5jbHVkZSAic3RyZXNz
X2FsaWduZWQuaCIKICNpbmNsdWRlICJ0aGV2ZXJnZS5oIgogI2luY2x1ZGUgInRyZWUuaCIKLSNp
bmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNs
dWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxtYWNoL21hY2guaD4KLSNpbmNsdWRlIDxtYWNoL3Rh
c2tfaW5mby5oPgogI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUg
PHN0cmluZz4KKyNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KICNp
bmNsdWRlIDx0aHJlYWQ+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8dmVjdG9yPgor
CisjaWZuZGVmIF9fQVBQTEVfXwordm9pZCBzeXN0ZW1GcmVlKHZvaWQqKTsKKyNlbmRpZgorCisj
aWZkZWYgX19BUFBMRV9fCisjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNpbmNsdWRl
IDxtYWNoL21hY2guaD4KKyNpbmNsdWRlIDxtYWNoL3Rhc2tfaW5mby5oPgorI2VuZGlmCiAKICNp
bmNsdWRlICJtYm1hbGxvYy5oIgogCkBAIC0xMzAsOSArMTQxLDcgQEAgc3RhdGljIHZvaWQgZGVh
bGxvY2F0ZUhlYXAodm9pZCoqKiBjaHVua3MsIHNpemVfdCBoZWFwU2l6ZSwgc2l6ZV90IGNodW5r
U2l6ZSwgc2kKIH0KIAogQmVuY2htYXJrOjpCZW5jaG1hcmsoQ29tbWFuZExpbmUmIGNvbW1hbmRM
aW5lKQotICAgIDogbV9iZW5jaG1hcmtQYWlyKCkKLSAgICAsIG1fZWxhcHNlZFRpbWUoKQotICAg
ICwgbV9jb21tYW5kTGluZShjb21tYW5kTGluZSkKKyAgICA6IG1fY29tbWFuZExpbmUoY29tbWFu
ZExpbmUpCiB7CiAgICAgY29uc3QgQmVuY2htYXJrUGFpciogYmVuY2htYXJrUGFpciA9IHN0ZDo6
ZmluZCgKICAgICAgICAgYmVuY2htYXJrUGFpcnMsIGJlbmNobWFya1BhaXJzICsgYmVuY2htYXJr
c1BhaXJzQ291bnQsIG1fY29tbWFuZExpbmUuYmVuY2htYXJrTmFtZSgpKTsKQEAgLTE1Niw2ICsx
NjUsNyBAQCB2b2lkIEJlbmNobWFyazo6cnVuT25jZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKKyNpZmRlZiBfX0FQUExFX18KICAgICBkaXNwYXRjaF9ncm91cF90IGdyb3VwID0gZGlzcGF0
Y2hfZ3JvdXBfY3JlYXRlKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNwdUNvdW50
KCk7ICsraSkgewpAQCAtMTY3LDYgKzE3NywxNiBAQCB2b2lkIEJlbmNobWFyazo6cnVuT25jZSgp
CiAgICAgZGlzcGF0Y2hfZ3JvdXBfd2FpdChncm91cCwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsK
IAogICAgIGRpc3BhdGNoX3JlbGVhc2UoZ3JvdXApOworI2Vsc2UKKyAgICBzdGQ6OnZlY3Rvcjxz
dGQ6OnRocmVhZD4gdGhyZWFkczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNwdUNvdW50
KCk7ICsraSkgeworICAgICAgICB0aHJlYWRzLmVtcGxhY2VfYmFjayhbJl0geworICAgICAgICAg
ICAgbV9iZW5jaG1hcmtQYWlyLT5mdW5jdGlvbihtX2NvbW1hbmRMaW5lKTsKKyAgICAgICAgfSk7
CisgICAgfQorICAgIGZvciAoYXV0byYgdGhyZWFkIDogdGhyZWFkcykKKyAgICAgICAgdGhyZWFk
LmpvaW4oKTsKKyNlbmRpZgogfQogCiB2b2lkIEJlbmNobWFyazo6cnVuKCkKQEAgLTIxNiw2ICsy
MzYsNyBAQCBCZW5jaG1hcms6Ok1lbW9yeSBCZW5jaG1hcms6OmN1cnJlbnRNZW1vcnlCeXRlcygp
CiB7CiAgICAgTWVtb3J5IG1lbW9yeTsKIAorI2lmZGVmIF9fQVBQTEVfXwogICAgIHRhc2tfdm1f
aW5mb19kYXRhX3Qgdm1faW5mbzsKICAgICBtYWNoX21zZ190eXBlX251bWJlcl90IHZtX3NpemUg
PSBUQVNLX1ZNX0lORk9fQ09VTlQ7CiAgICAgaWYgKEtFUk5fU1VDQ0VTUyAhPSB0YXNrX2luZm8o
bWFjaF90YXNrX3NlbGYoKSwgVEFTS19WTV9JTkZPX1BVUkdFQUJMRSwgKHRhc2tfaW5mb190KSgm
dm1faW5mbyksICZ2bV9zaXplKSkgewpAQCAtMjI1LDUgKzI0NiwyOCBAQCBCZW5jaG1hcms6Ok1l
bW9yeSBCZW5jaG1hcms6OmN1cnJlbnRNZW1vcnlCeXRlcygpCiAKICAgICBtZW1vcnkucmVzaWRl
bnQgPSB2bV9pbmZvLmludGVybmFsICsgdm1faW5mby5jb21wcmVzc2VkIC0gdm1faW5mby5wdXJn
ZWFibGVfdm9sYXRpbGVfcG1hcDsKICAgICBtZW1vcnkucmVzaWRlbnRNYXggPSB2bV9pbmZvLnJl
c2lkZW50X3NpemVfcGVhazsKKyNlbHNlCisgICAgRklMRSogZmlsZSA9IGZvcGVuKCIvcHJvYy9z
ZWxmL3N0YXR1cyIsICJyIik7CisKKyAgICBhdXRvIGZvckVhY2hMaW5lID0gW10gKEZJTEUqIGZp
bGUsIGF1dG8gZnVuY3RvcikgeworICAgICAgICBjaGFyKiBidWZmZXIgPSBudWxscHRyOworICAg
ICAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgICAgIHdoaWxlIChnZXRsaW5lKCZidWZmZXIsICZz
aXplLCBmaWxlKSAhPSAtMSkgeworICAgICAgICAgICAgZnVuY3RvcihidWZmZXIsIHNpemUpOwor
ICAgICAgICAgICAgc3lzdGVtRnJlZShidWZmZXIpOworICAgICAgICAgICAgYnVmZmVyID0gbnVs
bHB0cjsKKyAgICAgICAgICAgIHNpemUgPSAwOworICAgICAgICB9CisgICAgfTsKKworICAgIGZv
ckVhY2hMaW5lKGZpbGUsIFsmXSAoY2hhciogYnVmZmVyLCBzaXplX3QpIHsKKyAgICAgICAgdW5z
aWduZWQgbG9uZyBzaXplSW5LQiA9IDA7CisgICAgICAgIGlmIChzc2NhbmYoYnVmZmVyLCAiVm1I
V006ICVsdSBrQiIsICZzaXplSW5LQikgPT0gMSkKKyAgICAgICAgICAgIG1lbW9yeS5yZXNpZGVu
dE1heCA9IHNpemVJbktCICogMTAyNDsKKyAgICAgICAgZWxzZSBpZiAoc3NjYW5mKGJ1ZmZlciwg
IlZtUlNTOiAlbHUga0IiLCAmc2l6ZUluS0IpID09IDEpCisgICAgICAgICAgICBtZW1vcnkucmVz
aWRlbnQgPSBzaXplSW5LQiAqIDEwMjQ7CisgICAgfSk7CisgICAgZmNsb3NlKGZpbGUpOworI2Vu
ZGlmCiAgICAgcmV0dXJuIG1lbW9yeTsKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
TWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvQmVuY2htYXJrLmggYi9QZXJmb3JtYW5jZVRlc3RzL01h
bGxvY0JlbmNoL01hbGxvY0JlbmNoL0JlbmNobWFyay5oCmluZGV4IDlhNDQ5YjkxNDQwMzY4MDU0
YzA3ZTQ0ZDcwMWFjOTM3NTI5MjE4NzMuLjk3NDI1ZTg0MGNkMDRlNTEwMzZmZjJlOTBmMjUxNjVh
YWJlNWFjOTggMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9j
QmVuY2gvQmVuY2htYXJrLmgKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxs
b2NCZW5jaC9CZW5jaG1hcmsuaApAQCAtNzUsMTIgKzc1LDEyIEBAIGNsYXNzIEJlbmNobWFyayB7
CiAKICAgICBNYXBUeXBlIG1fbWFwOwogCi0gICAgY29uc3QgQmVuY2htYXJrUGFpciogbV9iZW5j
aG1hcmtQYWlyOworICAgIGNvbnN0IEJlbmNobWFya1BhaXIqIG1fYmVuY2htYXJrUGFpciB7IG51
bGxwdHIgfTsKIAogICAgIENvbW1hbmRMaW5lJiBtX2NvbW1hbmRMaW5lOwogCiAgICAgTWVtb3J5
IG1fbWVtb3J5OwotICAgIGRvdWJsZSBtX2VsYXBzZWRUaW1lOworICAgIGRvdWJsZSBtX2VsYXBz
ZWRUaW1lIHsgMCB9OwogfTsKIAogI2VuZGlmIC8vIEJlbmNobWFya19oCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL0NNYWtlTGlzdHMudHh0IGIv
UGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9DTWFrZUxpc3RzLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43Zjg5Mjk3ODEwNzE2ZDUwNDdkMGVkZGMxOWZhYWVmOTI5NjcyNGE5Ci0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9D
TWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDQ4IEBACithZGRfbGlicmFyeShzeXNtYWxsb2MgU0hB
UkVEIG1ibWFsbG9jLmNwcCkKKworc2V0KE1BTExPQ19CRU5DSF9TT1VSQ0VTCisgICAgQmVuY2ht
YXJrLmNwcAorICAgIENQVUNvdW50LmNwcAorICAgIENvbW1hbmRMaW5lLmNwcAorICAgIEludGVy
cHJldGVyLmNwcAorICAgIFN5c3RlbUZyZWUuY3BwCisgICAgYWxsb2NfZnJlZS5jcHAKKyAgICBi
YWxsb29uLmNwcAorICAgIGJpZy5jcHAKKyAgICBjaHVybi5jcHAKKyAgICBmYWNlYm9vay5jcHAK
KyAgICBmbGlja3IuY3BwCisgICAgZnJhZ21lbnQuY3BwCisgICAgbGlzdC5jcHAKKyAgICBtYWlu
LmNwcAorICAgIG1lZGl1bS5jcHAKKyAgICBtZXNzYWdlLmNwcAorICAgIG5pbWxhbmcuY3BwCisg
ICAgcmVhbGxvYy5jcHAKKyAgICByZWRkaXQuY3BwCisgICAgc3RyZXNzLmNwcAorICAgIHN0cmVz
c19hbGlnbmVkLmNwcAorICAgIHRoZXZlcmdlLmNwcAorICAgIHRyZWUuY3BwCispCisKK3NldChN
QUxMT0NfQkVOQ0hfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICIke0JNQUxMT0NfRElSfSIKKyAg
ICAiJHtDTUFLRV9CSU5BUllfRElSfSIKKyAgICAiJHtERVJJVkVEX1NPVVJDRVNfRElSfSIKKyAg
ICAiJHtUSElSRFBBUlRZX0RJUn0iCispCisKK3NldChNQUxMT0NfQkVOQ0hfTElCUkFSSUVTCisg
ICAgJHtDTUFLRV9ETF9MSUJTfQorKQorCitXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZf
RVhJU1RTKCkKKworV0VCS0lUX1dSQVBfU09VUkNFTElTVCgke01BTExPQ19CRU5DSF9TT1VSQ0VT
fSkKKworaW5jbHVkZV9kaXJlY3Rvcmllcygke01BTExPQ19CRU5DSF9JTkNMVURFX0RJUkVDVE9S
SUVTfSkKK2FkZF9leGVjdXRhYmxlKE1hbGxvY0JlbmNoICR7TUFMTE9DX0JFTkNIX1NPVVJDRVN9
KQordGFyZ2V0X2xpbmtfbGlicmFyaWVzKE1hbGxvY0JlbmNoICR7Q01BS0VfVEhSRUFEX0xJQlNf
SU5JVH0gJHtNQUxMT0NfQkVOQ0hfTElCUkFSSUVTfSBtYm1hbGxvYykKKworYWRkX2RlcGVuZGVu
Y2llcyhNYWxsb2NCZW5jaCBzeXNtYWxsb2MgbWJtYWxsb2MpCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL0NQVUNvdW50LmNwcCBiL1BlcmZvcm1h
bmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvQ1BVQ291bnQuY3BwCmluZGV4IDBmMjAx
NjBiOThlMTIyYmUyMTJkODFjNGU2MTdjMGY4NDliYzc0MzAuLjMxZDZkMmQ4Mzk5YTAyMGFjNzBj
ZDhkODhlODJhODE4OGE1NGUyMGEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9j
QmVuY2gvTWFsbG9jQmVuY2gvQ1BVQ291bnQuY3BwCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFs
bG9jQmVuY2gvTWFsbG9jQmVuY2gvQ1BVQ291bnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSA8c3lzL3BhcmFtLmg+CiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgogI2luY2x1ZGUgPHN5
cy90eXBlcy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgogCiBzdGF0aWMgc2l6ZV90IGNvdW50Owog
CkBAIC0zNiw2ICszNyw3IEBAIHNpemVfdCBjcHVDb3VudCgpCiAgICAgaWYgKGNvdW50KQogICAg
ICAgICByZXR1cm4gY291bnQ7CiAKKyNpZmRlZiBfX0FQUExFX18KICAgICBzaXplX3QgbGVuZ3Ro
ID0gc2l6ZW9mKGNvdW50KTsKICAgICBpbnQgbmFtZVtdID0gewogICAgICAgICAgICAgQ1RMX0hX
LApAQCAtNDQsNiArNDYsMTIgQEAgc2l6ZV90IGNwdUNvdW50KCkKICAgICBpbnQgc3lzY3RsUmVz
dWx0ID0gc3lzY3RsKG5hbWUsIHNpemVvZihuYW1lKSAvIHNpemVvZihpbnQpLCAmY291bnQsICZs
ZW5ndGgsIDAsIDApOwogICAgIGlmIChzeXNjdGxSZXN1bHQgPCAwKQogICAgICAgICBhYm9ydCgp
OworI2Vsc2UKKyAgICBsb25nIHN5c2NvbmZSZXN1bHQgPSBzeXNjb25mKF9TQ19OUFJPQ0VTU09S
U19PTkxOKTsKKyAgICBpZiAoc3lzY29uZlJlc3VsdCA8IDApCisgICAgICAgIGFib3J0KCk7Cisg
ICAgY291bnQgPSBzeXNjb25mUmVzdWx0OworI2VuZGlmCiAKICAgICByZXR1cm4gY291bnQ7CiB9
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL0lu
dGVycHJldGVyLmNwcCBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gv
SW50ZXJwcmV0ZXIuY3BwCmluZGV4IDdhMWJiOGYzODYzZjJhYmFkZWJmZTAwNmY4MTk2MTg1YWY3
MGFiNzAuLjhjNmNmM2Y2MzBjZDMzMzVhMzNiMzc5MTUzZWJiNDcwNWY3ZDFhZTMgMTAwNjQ0Ci0t
LSBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvSW50ZXJwcmV0ZXIu
Y3BwCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvSW50ZXJw
cmV0ZXIuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIHNpemVfdCBjb21wdXRlMnRvUG93
ZXIodW5zaWduZWQgbG9nMm4pCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBJbnRlcnBy
ZXRlcjo6ZG9NYWxsb2NPcChPcCBvcCwgVGhyZWFkSWQgdGhyZWFkSWQpCit2b2lkIEludGVycHJl
dGVyOjpkb01hbGxvY09wKE9wIG9wLCBUaHJlYWRJZCkKIHsKICAgICBzd2l0Y2ggKG9wLm9wY29k
ZSkgewogICAgICAgICBjYXNlIG9wX21hbGxvYzogewpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9TeXN0ZW1GcmVlLmNwcCBiL1BlcmZvcm1hbmNl
VGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvU3lzdGVtRnJlZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTAwZDBlZGM4Y2I0NTQ5YzVlMGQwMjdmNzdjMGQwNzI5OTgzMWFlOAotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvU3lzdGVtRnJlZS5j
cHAKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8c3RkbGliLmg+CisKK3ZvaWQgc3lzdGVtRnJlZSh2
b2lkKiBwKQoreworICAgIDo6ZnJlZShwKTsKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvYmFsbG9vbi5jcHAgYi9QZXJmb3JtYW5jZVRlc3Rz
L01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL2JhbGxvb24uY3BwCmluZGV4IDhjMGQ0M2YzMWMxNmFl
ZGE4ZDMxOTVjMzIzYzE4ZTgxNWFlMTQyMDMuLmUyZDNlZGE1N2I4OWI1MWJjMWQ4ZDJlMWZjYzIy
ODk1YzQ1NTY5Y2IgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFs
bG9jQmVuY2gvYmFsbG9vbi5jcHAKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9N
YWxsb2NCZW5jaC9iYWxsb29uLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPGNocm9u
bz4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3Ry
aW5ncy5oPgogCiAjaW5jbHVkZSAibWJtYWxsb2MuaCIKIApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9tYm1hbGxvYy5jcHAgYi9QZXJmb3JtYW5j
ZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL21ibWFsbG9jLmNwcAppbmRleCA2MjUzN2I4
NjliNjhjYjEzZjI3YTlkMjdjZjcwYmYwODBkZWFkOTQ4Li42YTg5ZTY0MGEyMzFlZmYwYmU4YTcw
YWYxNTYwZjk0ZDVhYWFjMzhhIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0Jl
bmNoL01hbGxvY0JlbmNoL21ibWFsbG9jLmNwcAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxv
Y0JlbmNoL01hbGxvY0JlbmNoL21ibWFsbG9jLmNwcApAQCAtMjYsNyArMjYsMTIgQEAKICNpbmNs
dWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKwor
I2lmZGVmIF9fQVBQTEVfXwogI2ltcG9ydCA8bWFsbG9jL21hbGxvYy5oPgorI2Vsc2UKKyNpbmNs
dWRlIDxtYWxsb2MuaD4KKyNlbmRpZgogCiBleHRlcm4gIkMiIHsKIApAQCAtMzgsNyArNDMsOCBA
QCB2b2lkKiBtYm1hbGxvYyhzaXplX3Qgc2l6ZSkKIHZvaWQqIG1ibWVtYWxpZ24oc2l6ZV90IGFs
aWdubWVudCwgc2l6ZV90IHNpemUpCiB7CiAgICAgdm9pZCogcmVzdWx0OwotICAgIHBvc2l4X21l
bWFsaWduKCZyZXN1bHQsIGFsaWdubWVudCwgc2l6ZSk7CisgICAgaWYgKHBvc2l4X21lbWFsaWdu
KCZyZXN1bHQsIGFsaWdubWVudCwgc2l6ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTU0LDcgKzYwLDExIEBAIHZvaWQqIG1icmVhbGxvYyh2
b2lkKiBwLCBzaXplX3QsIHNpemVfdCBuZXdTaXplKQogCiB2b2lkIG1ic2NhdmVuZ2UoKQogewor
I2lmZGVmIF9fQVBQTEVfXwogICAgIG1hbGxvY196b25lX3ByZXNzdXJlX3JlbGllZihudWxscHRy
LCAwKTsKKyNlbHNlCisgICAgbWFsbG9jX3RyaW0oMCk7CisjZW5kaWYKIH0KIAogfSAvLyBleHRl
cm4gIkMiCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0Jl
bmNoL21lc3NhZ2UuY3BwIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5j
aC9tZXNzYWdlLmNwcAppbmRleCAxYjVmOWQwYmYxYTkxYzA2MDkxNTVlOGE1OTM5ZTFmYmJmZmQz
OTliLi5kZjYyZGJiOTAyYThiZDY4NThkMTRkNzA0YzkwMDY5YzIxNzJkNDk1IDEwMDY0NAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL21lc3NhZ2UuY3BwCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvbWVzc2FnZS5jcHAK
QEAgLTI1LDEwICsyNSwxMyBAQAogCiAjaW5jbHVkZSAiQ1BVQ291bnQuaCIKICNpbmNsdWRlICJt
ZXNzYWdlLmgiCi0jaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbmNsdWRlIDxzdGRs
aWIuaD4KICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAKKyNpZmRlZiBfX0FQUExFX18KKyNpbmNsdWRl
IDxkaXNwYXRjaC9kaXNwYXRjaC5oPgorI2VuZGlmCisKICNpbmNsdWRlICJtYm1hbGxvYy5oIgog
CiBuYW1lc3BhY2UgewpAQCAtMTE1LDYgKzExOCw3IEBAIHZvaWQgYmVuY2htYXJrX21lc3NhZ2Vf
b25lKENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkKICAgICBpZiAoY29tbWFuZExpbmUuaXNQYXJh
bGxlbCgpKQogICAgICAgICBhYm9ydCgpOwogCisjaWYgMAogICAgIGNvbnN0IHNpemVfdCB0aW1l
cyA9IDIwNDg7CiAgICAgY29uc3Qgc2l6ZV90IHF1YW50dW0gPSAxNjsKIApAQCAtMTM2LDYgKzE0
MCw3IEBAIHZvaWQgYmVuY2htYXJrX21lc3NhZ2Vfb25lKENvbW1hbmRMaW5lJiBjb21tYW5kTGlu
ZSkKICAgICBkaXNwYXRjaF9zeW5jKHF1ZXVlLCBeeyB9KTsKIAogICAgIGRpc3BhdGNoX3JlbGVh
c2UocXVldWUpOworI2VuZGlmCiB9CiAKIHZvaWQgYmVuY2htYXJrX21lc3NhZ2VfbWFueShDb21t
YW5kTGluZSYgY29tbWFuZExpbmUpCkBAIC0xNDMsNiArMTQ4LDcgQEAgdm9pZCBiZW5jaG1hcmtf
bWVzc2FnZV9tYW55KENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkKICAgICBpZiAoY29tbWFuZExp
bmUuaXNQYXJhbGxlbCgpKQogICAgICAgICBhYm9ydCgpOwogCisjaWYgMAogICAgIGNvbnN0IHNp
emVfdCB0aW1lcyA9IDc2ODsKICAgICBjb25zdCBzaXplX3QgcXVhbnR1bSA9IDE2OwogCkBAIC0x
NzMsNCArMTc5LDUgQEAgdm9pZCBiZW5jaG1hcmtfbWVzc2FnZV9tYW55KENvbW1hbmRMaW5lJiBj
b21tYW5kTGluZSkKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVldWVDb3VudDsgKytp
KQogICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKHF1ZXVlc1tpXSk7CisjZW5kaWYKIH0KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvbmltbGFuZy5j
cHAgYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL25pbWxhbmcuY3Bw
CmluZGV4IGFlMWViMzc4ZThjNjk2MDlmZWNiMWY4MWRhOTE2MzRmN2EzYzRjZjUuLjMzNWYwN2U2
MDlmMjE0NzY0OWFjMjQ1ZmIzNWJjYjQ1NjcxNzkwNzcgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvbmltbGFuZy5jcHAKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9uaW1sYW5nLmNwcApAQCAtNTEsNiArNTEs
NiBAQCB2b2lkIGJlbmNobWFya19uaW1sYW5nKENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRpbWVzOyArK2kpCiAgICAgICAgIGludGVycHJldGVy
LnJ1bigpOwogCi0gICAgICAgIGlmIChjb21tYW5kTGluZS5kZXRhaWxlZFJlcG9ydCgpKQotICAg
ICAgICAgICAgaW50ZXJwcmV0ZXIuZGV0YWlsZWRSZXBvcnQoKTsKKyAgICBpZiAoY29tbWFuZExp
bmUuZGV0YWlsZWRSZXBvcnQoKSkKKyAgICAgICAgaW50ZXJwcmV0ZXIuZGV0YWlsZWRSZXBvcnQo
KTsKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVu
Y2gvc3RyZXNzLmNwcCBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gv
c3RyZXNzLmNwcAppbmRleCA2YmMxYmEzMTUyYmQ5M2JlMDJjZDM1NjFjYjM5Y2UyZGJmYTBiZDlm
Li4xYzE0NzQ3YmJjMmEzN2Y4YzA2M2JlY2UxNzUwNTM3NTJiOTY4ZWE4IDEwMDY0NAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL3N0cmVzcy5jcHAKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9zdHJlc3MuY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ1BVQ291bnQuaCIKICNpbmNsdWRlICJzdHJlc3MuaCIK
ICNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1ZGUgPGNocm9ubz4K
ICNpbmNsdWRlIDxjc3RkbGliPgogI2luY2x1ZGUgPG1lbW9yeT4KQEAgLTg2LDYgKzg3LDggQEAg
Y2xhc3MgU2l6ZVN0cmVhbSB7CiAgICAgICAgICAgICByZXR1cm4gcmFuZG9tKCkgJSBsYXJnZU1h
eDsKICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9N
YWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9zdHJlc3NfYWxpZ25lZC5jcHAgYi9QZXJmb3JtYW5jZVRl
c3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL3N0cmVzc19hbGlnbmVkLmNwcAppbmRleCA0OWI5
MWJjM2ZhZTFjMTY4ZmY4NGY5MDgwOWQ1NjQ0ZWY4ZjIxMzgzLi44OWM4ZWEyM2ExMGVmYzA4NDVh
YWIwN2MyNjVlMWIxNDIzOGMxY2U5IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxv
Y0JlbmNoL01hbGxvY0JlbmNoL3N0cmVzc19hbGlnbmVkLmNwcAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL3N0cmVzc19hbGlnbmVkLmNwcApAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIkNQVUNvdW50LmgiCiAjaW5jbHVkZSAic3RyZXNzX2FsaWduZWQu
aCIKICNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1ZGUgPGNocm9u
bz4KICNpbmNsdWRlIDxjbWF0aD4KICNpbmNsdWRlIDxjc3RkbGliPgpAQCAtODksNiArOTAsOCBA
QCBjbGFzcyBTaXplU3RyZWFtIHsKICAgICAgICAgICAgIHJldHVybiByYW5kb20oKSAlIGxhcmdl
TWF4OwogICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KDApOworICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L01hbGxvY0JlbmNoL3J1bi1tYWxsb2MtYmVuY2htYXJrcyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFs
bG9jQmVuY2gvcnVuLW1hbGxvYy1iZW5jaG1hcmtzCmluZGV4IGI1YmQwYTA4MDc0ODExZmM2NjA2
NjgzNGE3ZjdlYjUzODJkOTRhY2YuLmZlYTFhY2VkMjY5N2ExNzdmMjhhOWJkM2MyZWEzODQxYzEz
NzRmNjIgMTAwNzU1Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvcnVuLW1hbGxv
Yy1iZW5jaG1hcmtzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvcnVuLW1hbGxv
Yy1iZW5jaG1hcmtzCkBAIC03LDYgKzcsMzIgQEAgcmVxdWlyZSAncGF0aG5hbWUnCiAkYmluRGly
ID0gIiN7RmlsZS5leHBhbmRfcGF0aChGaWxlLmRpcm5hbWUoX19GSUxFX18pKX0iCiAkcHJvZHVj
dERpciA9IGBwZXJsIC1lICd1c2UgbGliIFwiI3skYmluRGlyfS8uLi8uLi9Ub29scy9TY3JpcHRz
XCI7IHVzZSB3ZWJraXRkaXJzOyBwcmludCBwcm9kdWN0RGlyKCknYAogCitkZWYgZGV0ZXJtaW5l
T1MKKyAgICBjYXNlIFJiQ29uZmlnOjpDT05GSUdbImhvc3Rfb3MiXQorICAgIHdoZW4gL2Rhcndp
bi9pCisgICAgICAgICJkYXJ3aW4iCisgICAgd2hlbiAvbGludXgvaQorICAgICAgICAibGludXgi
CisgICAgd2hlbiAvbXN3aW58bWluZ3d8Y3lnd2luLworICAgICAgICAid2luZG93cyIKKyAgICBl
bHNlCisgICAgICAgICRzdGRlcnIucHV0cyAiV2FybmluZzogdW5hYmxlIHRvIGRldGVybWluZSBo
b3N0IG9wZXJhdGluZyBzeXN0ZW0iCisgICAgICAgIG5pbAorICAgIGVuZAorZW5kCisKKyRob3N0
T1MgPSBkZXRlcm1pbmVPUyB1bmxlc3MgJGhvc3RPUworCitpZiAkaG9zdE9TID09ICdkYXJ3aW4n
CisgICAgJGxpYnJhcnlEaXIgPSAkcHJvZHVjdERpcgorICAgICRiaW5hcnlEaXIgPSAkcHJvZHVj
dERpcgorICAgICRsaWJyYXJ5RXh0ZW5zaW9uID0gImR5bGliIgorZWxzZQorICAgICRsaWJyYXJ5
RGlyID0gIiN7JHByb2R1Y3REaXJ9L2xpYiIKKyAgICAkYmluYXJ5RGlyID0gIiN7JHByb2R1Y3RE
aXJ9L2JpbiIKKyAgICAkbGlicmFyeUV4dGVuc2lvbiA9ICJzbyIKK2VuZAorCiAkYmVuY2htYXJr
c19hbGwgPSBbCiAgICAgIyBTaW5nbGUtdGhyZWFkZWQgYmVuY2htYXJrcy4KICAgICAiY2h1cm4i
LApAQCAtMjYsOCArNTIsOCBAQCAkYmVuY2htYXJrc19hbGwgPSBbCiAgICAgIm5pbWxhbmciLAog
CiAgICAgIyBNdWx0aS10aHJlYWRlZCBiZW5jaG1hcmsgdmFyaWFudHMuCi0gICAgIm1lc3NhZ2Vf
b25lIiwKLSAgICAibWVzc2FnZV9tYW55IiwKKyAgICAjICJtZXNzYWdlX29uZSIsCisgICAgIyAi
bWVzc2FnZV9tYW55IiwKICAgICAiY2h1cm4gLS1wYXJhbGxlbCIsCiAgICAgImxpc3RfYWxsb2Nh
dGUgLS1wYXJhbGxlbCIsCiAgICAgInRyZWVfYWxsb2NhdGUgLS1wYXJhbGxlbCIsCkBAIC0xMDEs
NyArMTI3LDExIEBAIGNsYXNzIER5bGliCiAKICAgICBkZWYgaW5pdGlhbGl6ZShuYW1lLCBwYXRo
KQogICAgICAgICBAbmFtZSA9IG5hbWUKLSAgICAgICAgQHBhdGggPSBGaWxlLmpvaW4ocGF0aCwg
ImxpYm1ibWFsbG9jLmR5bGliIikKKyAgICAgICAgaWYgbmFtZSA9PSAnU3lzdGVtTWFsbG9jJwor
ICAgICAgICAgICAgQHBhdGggPSBGaWxlLmpvaW4ocGF0aCwgImxpYnN5c21hbGxvYy4jeyRsaWJy
YXJ5RXh0ZW5zaW9ufSIpCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEBwYXRoID0gRmlsZS5q
b2luKHBhdGgsICJsaWJtYm1hbGxvYy4jeyRsaWJyYXJ5RXh0ZW5zaW9ufSIpCisgICAgICAgIGVu
ZAogICAgIGVuZAogZW5kCiAKQEAgLTI0Niw5ICsyNzYsOSBAQCBkZWYgcGFyc2VPcHRpb25zCiAg
ICAgQVJHVi5lYWNoIHsKICAgICAgICAgfCBhcmcgfAogICAgICAgICBpZiBhcmcgPT0gIlN5c3Rl
bU1hbGxvYyIKLSAgICAgICAgICAgIGR5bGliID0gRHlsaWIubmV3KCJTeXN0ZW1NYWxsb2MiLCAk
cHJvZHVjdERpcikKKyAgICAgICAgICAgIGR5bGliID0gRHlsaWIubmV3KCJTeXN0ZW1NYWxsb2Mi
LCAkbGlicmFyeURpcikKICAgICAgICAgZWxzaWYgYXJnID09ICJOYW5vTWFsbG9jIgotICAgICAg
ICAgICAgZHlsaWIgPSBEeWxpYi5uZXcoIk5hbm9NYWxsb2MiLCAkcHJvZHVjdERpcikKKyAgICAg
ICAgICAgIGR5bGliID0gRHlsaWIubmV3KCJOYW5vTWFsbG9jIiwgJGxpYnJhcnlEaXIpCiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIG5hbWUgPSBhcmcuc3BsaXQoIjoiKVswXQogICAgICAgICAg
ICAgcGF0aCA9IGFyZy5zcGxpdCgiOiIpWzFdCkBAIC0yODgsMTAgKzMxOCwxMSBAQCBkZWYgcnVu
QmVuY2htYXJrcyhkeWxpYnMpCiAKICAgICAgICAgICAgICRzdGRlcnIucHJpbnQgIlxyUlVOTklO
RyAje2R5bGliLm5hbWV9OiAje2JlbmNobWFya30uLi4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIKICAgICAgICAgICAgIGVudiA9ICJEWUxEX0xJQlJBUllfUEFUSD0nI3tQYXRobmFt
ZS5uZXcoZHlsaWIucGF0aCkuZGlybmFtZX0nICIKKyAgICAgICAgICAgIGVudiA9ICJMRF9QUkVM
T0FEPScje2R5bGliLnBhdGh9JyAiCiAgICAgICAgICAgICBpZiBkeWxpYi5uYW1lID09ICJOYW5v
TWFsbG9jIgogICAgICAgICAgICAgICAgIGVudiArPSAiTWFsbG9jTmFub1pvbmU9MSAiCiAgICAg
ICAgICAgICBlbmQKLSAgICAgICAgICAgIGlucHV0ID0gImNkICcjeyRwcm9kdWN0RGlyfSc7ICN7
ZW52fSAnI3skcHJvZHVjdERpcn0vTWFsbG9jQmVuY2gnIC0tYmVuY2htYXJrICN7YmVuY2htYXJr
fSAtLWhlYXAgI3skaGVhcH19IgorICAgICAgICAgICAgaW5wdXQgPSAiY2QgJyN7JHByb2R1Y3RE
aXJ9JzsgI3tlbnZ9ICcjeyRiaW5hcnlEaXJ9L01hbGxvY0JlbmNoJyAtLWJlbmNobWFyayAje2Jl
bmNobWFya30gLS1oZWFwICN7JGhlYXB9fSIKICAgICAgICAgICAgIG91dHB1dCA9YCN7aW5wdXR9
YAogICAgICAgICAgICAgc3BsaXRPdXRwdXQgPSBvdXRwdXQuc3BsaXQoIlxuIikKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322666</attachid>
            <date>2017-10-04 07:15:08 -0700</date>
            <delta_ts>2017-10-04 08:55:41 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-177856-20171004161507.patch</filename>
            <type>text/plain</type>
            <size>30577</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggZjgwMzE4ZTMzMTI5NDEy
NjUzZjBjNjY4Mjg4OTE0ODg5NDkzMjYxYi4uNjFmOGQ1YWRmOGZlOWM1NDc4OWNmMGE4MzBlOGQ1
NWVlMTU0NjM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTEwLTA0ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtMaW51eF0gUG9y
dCBNYWxsb2NCZW5jaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc3ODU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxNy0xMC0wMiAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbTGludXhdIEVuYWJsZSBHaWdhY2FnZSBp
biB4NjQgTGludXggZW52aXJvbm1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKaW5kZXggYmY2MDRjZTA0
MjI1YTA4ZjRjMmYyYjUyNjFmMjgzMjEzMmY3M2RlOS4uM2ZhYjY5ZjBhZDVmZmQwZjk4NzEyMjA5
ZmVmMWVmNmVmYTU5NGIzOCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKQEAgLTM3LDMgKzM3LDcgQEAg
aW5jbHVkZV9kaXJlY3Rvcmllcygke2JtYWxsb2NfSU5DTFVERV9ESVJFQ1RPUklFU30pCiBhZGRf
bGlicmFyeShibWFsbG9jIFNUQVRJQyAke2JtYWxsb2NfU09VUkNFU30pCiB0YXJnZXRfbGlua19s
aWJyYXJpZXMoYm1hbGxvYyAke2JtYWxsb2NfTElCUkFSSUVTfSkKIHNldF90YXJnZXRfcHJvcGVy
dGllcyhibWFsbG9jIFBST1BFUlRJRVMgQ09NUElMRV9ERUZJTklUSU9OUyAiQlVJTERJTkdfYm1h
bGxvYyIpCisKK2FkZF9saWJyYXJ5KG1ibWFsbG9jIFNIQVJFRCBibWFsbG9jL21ibWFsbG9jLmNw
cCkKK3RhcmdldF9saW5rX2xpYnJhcmllcyhtYm1hbGxvYyBibWFsbG9jICR7Q01BS0VfVEhSRUFE
X0xJQlNfSU5JVH0gJHtibWFsbG9jX0xJQlJBUklFU30pCitzZXRfdGFyZ2V0X3Byb3BlcnRpZXMo
bWJtYWxsb2MgUFJPUEVSVElFUyBDT01QSUxFX0RFRklOSVRJT05TICJCVUlMRElOR19tYm1hbGxv
YyIpCmRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CmluZGV4IDRj
M2I5NDA5OTVkOGRhMzY4MmQ3MDhlY2FmMzFmYzk1Y2RhYmM1YTQuLjgzN2JhMDJhMGVjMzBmYTUy
ODA1YWZmYTcxNDU3MTcyNjI1Yjk1ZDMgMTAwNjQ0Ci0tLSBhL0NNYWtlTGlzdHMudHh0CisrKyBi
L0NNYWtlTGlzdHMudHh0CkBAIC0xNjYsNiArMTY2LDggQEAgaWYgKEVOQUJMRV9UT09MUykKICAg
ICBhZGRfc3ViZGlyZWN0b3J5KFRvb2xzKQogZW5kaWYgKCkKIAorYWRkX3N1YmRpcmVjdG9yeShQ
ZXJmb3JtYW5jZVRlc3RzKQorCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFByaW50IHRoZSBm
ZWF0dXJlcyBsaXN0IGxhc3QsIGZvciBtYXhpbXVtIHZpc2liaWxpdHkuCiAjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMWE1ZGNi
MzBlNjdhMzU3YWUzNWU1MjhhMmQwNmY4OTMwYjVlYWJlOS4uNDllOTQ0ODhhN2EzZDRkZjk3MTE5
MDc2MjQ5MTkwMjM2NzVhZmNkMiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDE3LTEwLTA0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtMaW51eF0gUG9ydCBNYWxsb2NCZW5jaAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3ODU2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKworMjAxNy0xMC0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
KworICAgICAgICBbTGludXhdIFBvcnQgTWFsbG9jQmVuY2gKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Nzg1NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMTctMTAt
MDMgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY28u
dWs+CiAKICAgICAgICAgW0dMaWJdIExldCBXZWJDb3JlIGtub3cgb2YgbG93IHBvd2VyIHNpdHVh
dGlvbnMKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ01ha2VMaXN0cy50eHQgYi9QZXJm
b3JtYW5jZVRlc3RzL0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyYTcxN2NhMDdiYjVmMjRl
NTBkYzc0NDIzNDQ0N2FlZjkxMmIzY2YKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL0NNYWtlTGlzdHMudHh0CkBAIC0wLDAgKzEsNyBAQAorc2V0KEVOQUJMRV9NQUxMT0NfQkVO
Q0ggT04pCisKK2lmIChFTkFCTEVfTUFMTE9DX0JFTkNIKQorICAgIGFkZF9zdWJkaXJlY3Rvcnko
TWFsbG9jQmVuY2gpCitlbmRpZiAoKQorCitXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZf
RVhJU1RTKCkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9y
bWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmNhYjkwOTgyOGM5MWFhZWUzYjUyZDk5MjNiMzYx
YzJhNjEyZTkxYS4uNDA0YWY5YmMyY2JjNzc0OTg2ZmJhMDA4MTM2MDg3YjJmZmJhNDVhYyAxMDA2
NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxNy0xMC0wNCAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbTGludXhdIFBvcnQgTWFsbG9jQmVu
Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Nzg1
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHdv
dWxkIGxpa2UgdG8gb3B0aW1pemUgbG9ja2luZyBpbiBibWFsbG9jIGluIExpbnV4IGJ5IHVzaW5n
IGZ1dGV4IEFQSXMuCisgICAgICAgIFNvIHdlIHNob3VsZCBoYXZlIHRoZSB3YXkgdG8gZW5zdXJl
IHRoaXMgYWN0dWFsbHkgaW1wcm92ZXMgLyBkb2VzIG5vdCByZWdyZXNzCisgICAgICAgIHRoZSBw
ZXJmb3JtYW5jZS4KKworICAgICAgICBUaGlzIHBhdGNoIHBvcnRzIE1hbGxvY0JlbmNoIHRvIExp
bnV4IHRvIG1lYXN1cmUvZW5zdXJlIHRoZSBlZmZlY3Qgb2YgYm1hbGxvYworICAgICAgICBwYXRj
aCBpbiBMaW51eC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBNYWxsb2NCZW5jaC9DTWFrZUxpc3RzLnR4dDogQWRkZWQuCisgICAgICAgICogTWFsbG9jQmVu
Y2gvTWFsbG9jQmVuY2gvQmVuY2htYXJrLmNwcDoKKyAgICAgICAgKEJlbmNobWFyazo6QmVuY2ht
YXJrKToKKyAgICAgICAgKEJlbmNobWFyazo6cnVuT25jZSk6CisgICAgICAgIChCZW5jaG1hcms6
OmN1cnJlbnRNZW1vcnlCeXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogTWFsbG9jQmVuY2gvTWFs
bG9jQmVuY2gvQmVuY2htYXJrLmg6CisgICAgICAgIChCZW5jaG1hcms6Ok1lbW9yeTo6TWVtb3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKEJlbmNobWFyazo6TWVtb3J5OjpvcGVyYXRvci0pOiBEZWxl
dGVkLgorICAgICAgICAqIE1hbGxvY0JlbmNoL01hbGxvY0JlbmNoL0NNYWtlTGlzdHMudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBNYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9DUFVDb3VudC5jcHA6Cisg
ICAgICAgIChjcHVDb3VudCk6CisgICAgICAgICogTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSW50ZXJwcmV0ZXI6OmRvTWFsbG9jT3ApOgorICAgICAg
ICAqIE1hbGxvY0JlbmNoL01hbGxvY0JlbmNoL01lbW9yeS5jcHA6IEFkZGVkLgorICAgICAgICAo
Y3VycmVudE1lbW9yeUJ5dGVzKToKKyAgICAgICAgKiBNYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9N
ZW1vcnkuaDogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NC
ZW5jaC9DUFVDb3VudC5jcHAuCisgICAgICAgIChNZW1vcnk6Ok1lbW9yeSk6CisgICAgICAgIChN
ZW1vcnk6Om9wZXJhdG9yLSk6CisgICAgICAgICogTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvYmFs
bG9vbi5jcHA6CisgICAgICAgIChiZW5jaG1hcmtfYmFsbG9vbik6CisgICAgICAgICogTWFsbG9j
QmVuY2gvTWFsbG9jQmVuY2gvbWJtYWxsb2MuY3BwOgorICAgICAgICAqIE1hbGxvY0JlbmNoL01h
bGxvY0JlbmNoL21lc3NhZ2UuY3BwOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrUXVldWUpOgor
ICAgICAgICAoV29ya1F1ZXVlOjp+V29ya1F1ZXVlKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlz
cGF0Y2hBc3luYyk6CisgICAgICAgIChXb3JrUXVldWU6OmRpc3BhdGNoU3luYyk6CisgICAgICAg
IChiZW5jaG1hcmtfbWVzc2FnZV9vbmUpOgorICAgICAgICAoYmVuY2htYXJrX21lc3NhZ2VfbWFu
eSk6CisgICAgICAgICogTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvbmltbGFuZy5jcHA6CisgICAg
ICAgIChiZW5jaG1hcmtfbmltbGFuZyk6CisgICAgICAgICogTWFsbG9jQmVuY2gvTWFsbG9jQmVu
Y2gvc3RyZXNzLmNwcDoKKyAgICAgICAgKFNpemVTdHJlYW06Om5leHQpOgorICAgICAgICAqIE1h
bGxvY0JlbmNoL01hbGxvY0JlbmNoL3N0cmVzc19hbGlnbmVkLmNwcDoKKyAgICAgICAgKiBNYWxs
b2NCZW5jaC9ydW4tbWFsbG9jLWJlbmNobWFya3M6CisKIDIwMTctMDktMjYgIE1hdGhpYXMgQnlu
ZW5zICA8bWF0aGlhc0BxaXdpLmJlPgogCiAgICAgICAgIFNwZWVkb21ldGVyOiBlbnN1cmUgYWxs
IFRvZG9NVkMgdGVzdHMgdXNlIHRoZSBjb21wbGV0ZSBsYXRlc3QgQ1NTCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL0NNYWtlTGlzdHMudHh0IGIvUGVyZm9ybWFuY2VU
ZXN0cy9NYWxsb2NCZW5jaC9DTWFrZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2JhN2I2NGZiZDEx
NzA2ZDNlYjJiZDRmZWMwMjUxNWQwNzljMzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9NYWxsb2NCZW5jaC9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxIEBACithZGRfc3Vi
ZGlyZWN0b3J5KE1hbGxvY0JlbmNoKQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxs
b2NCZW5jaC9NYWxsb2NCZW5jaC9CZW5jaG1hcmsuY3BwIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxs
b2NCZW5jaC9NYWxsb2NCZW5jaC9CZW5jaG1hcmsuY3BwCmluZGV4IGQyZDg0MmMyMzViNjljMzE2
ZjZjN2NiMmJhMDdhYzI1NjY5ODcxMWMuLmJjYmQyNjg1NWU3N2Y5OTYzNWQ3ZDcwNzJjOGEyMjYw
Yzc2NWU0ZTggMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9j
QmVuY2gvQmVuY2htYXJrLmNwcAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01h
bGxvY0JlbmNoL0JlbmNobWFyay5jcHAKQEAgLTQyLDE1ICs0MiwxOSBAQAogI2luY2x1ZGUgInN0
cmVzc19hbGlnbmVkLmgiCiAjaW5jbHVkZSAidGhldmVyZ2UuaCIKICNpbmNsdWRlICJ0cmVlLmgi
Ci0jaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAj
aW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8bWFjaC9tYWNoLmg+Ci0jaW5jbHVkZSA8bWFj
aC90YXNrX2luZm8uaD4KICNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNs
dWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2luY2x1ZGUgPHN5cy90aW1lLmg+
CiAjaW5jbHVkZSA8dGhyZWFkPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHZlY3Rv
cj4KKworI2lmZGVmIF9fQVBQTEVfXworI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+Cisj
ZW5kaWYKIAogI2luY2x1ZGUgIm1ibWFsbG9jLmgiCiAKQEAgLTEzMCw5ICsxMzQsNyBAQCBzdGF0
aWMgdm9pZCBkZWFsbG9jYXRlSGVhcCh2b2lkKioqIGNodW5rcywgc2l6ZV90IGhlYXBTaXplLCBz
aXplX3QgY2h1bmtTaXplLCBzaQogfQogCiBCZW5jaG1hcms6OkJlbmNobWFyayhDb21tYW5kTGlu
ZSYgY29tbWFuZExpbmUpCi0gICAgOiBtX2JlbmNobWFya1BhaXIoKQotICAgICwgbV9lbGFwc2Vk
VGltZSgpCi0gICAgLCBtX2NvbW1hbmRMaW5lKGNvbW1hbmRMaW5lKQorICAgIDogbV9jb21tYW5k
TGluZShjb21tYW5kTGluZSkKIHsKICAgICBjb25zdCBCZW5jaG1hcmtQYWlyKiBiZW5jaG1hcmtQ
YWlyID0gc3RkOjpmaW5kKAogICAgICAgICBiZW5jaG1hcmtQYWlycywgYmVuY2htYXJrUGFpcnMg
KyBiZW5jaG1hcmtzUGFpcnNDb3VudCwgbV9jb21tYW5kTGluZS5iZW5jaG1hcmtOYW1lKCkpOwpA
QCAtMTU2LDYgKzE1OCw3IEBAIHZvaWQgQmVuY2htYXJrOjpydW5PbmNlKCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAorI2lmZGVmIF9fQVBQTEVfXwogICAgIGRpc3BhdGNoX2dyb3VwX3QgZ3Jv
dXAgPSBkaXNwYXRjaF9ncm91cF9jcmVhdGUoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY3B1Q291bnQoKTsgKytpKSB7CkBAIC0xNjcsNiArMTcwLDE2IEBAIHZvaWQgQmVuY2htYXJr
OjpydW5PbmNlKCkKICAgICBkaXNwYXRjaF9ncm91cF93YWl0KGdyb3VwLCBESVNQQVRDSF9USU1F
X0ZPUkVWRVIpOwogCiAgICAgZGlzcGF0Y2hfcmVsZWFzZShncm91cCk7CisjZWxzZQorICAgIHN0
ZDo6dmVjdG9yPHN0ZDo6dGhyZWFkPiB0aHJlYWRzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY3B1Q291bnQoKTsgKytpKSB7CisgICAgICAgIHRocmVhZHMuZW1wbGFjZV9iYWNrKFsmXSB7
CisgICAgICAgICAgICBtX2JlbmNobWFya1BhaXItPmZ1bmN0aW9uKG1fY29tbWFuZExpbmUpOwor
ICAgICAgICB9KTsKKyAgICB9CisgICAgZm9yIChhdXRvJiB0aHJlYWQgOiB0aHJlYWRzKQorICAg
ICAgICB0aHJlYWQuam9pbigpOworI2VuZGlmCiB9CiAKIHZvaWQgQmVuY2htYXJrOjpydW4oKQpA
QCAtMjEyLDE4ICsyMjUsMyBAQCBkb3VibGUgQmVuY2htYXJrOjpjdXJyZW50VGltZU1TKCkKICAg
ICByZXR1cm4gKG5vdy50dl9zZWMgKiAxMDAwLjApICsgbm93LnR2X3VzZWMgLyAxMDAwLjA7CiB9
CiAKLUJlbmNobWFyazo6TWVtb3J5IEJlbmNobWFyazo6Y3VycmVudE1lbW9yeUJ5dGVzKCkKLXsK
LSAgICBNZW1vcnkgbWVtb3J5OwotCi0gICAgdGFza192bV9pbmZvX2RhdGFfdCB2bV9pbmZvOwot
ICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3Qgdm1fc2l6ZSA9IFRBU0tfVk1fSU5GT19DT1VOVDsK
LSAgICBpZiAoS0VSTl9TVUNDRVNTICE9IHRhc2tfaW5mbyhtYWNoX3Rhc2tfc2VsZigpLCBUQVNL
X1ZNX0lORk9fUFVSR0VBQkxFLCAodGFza19pbmZvX3QpKCZ2bV9pbmZvKSwgJnZtX3NpemUpKSB7
Ci0gICAgICAgIGNvdXQgPDwgIkZhaWxlZCB0byBnZXQgbWFjaCB0YXNrIGluZm8iIDw8IGVuZGw7
Ci0gICAgICAgIGV4aXQoMSk7Ci0gICAgfQotCi0gICAgbWVtb3J5LnJlc2lkZW50ID0gdm1faW5m
by5pbnRlcm5hbCArIHZtX2luZm8uY29tcHJlc3NlZCAtIHZtX2luZm8ucHVyZ2VhYmxlX3ZvbGF0
aWxlX3BtYXA7Ci0gICAgbWVtb3J5LnJlc2lkZW50TWF4ID0gdm1faW5mby5yZXNpZGVudF9zaXpl
X3BlYWs7Ci0gICAgcmV0dXJuIG1lbW9yeTsKLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvQmVuY2htYXJrLmggYi9QZXJmb3JtYW5jZVRlc3Rz
L01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL0JlbmNobWFyay5oCmluZGV4IDlhNDQ5YjkxNDQwMzY4
MDU0YzA3ZTQ0ZDcwMWFjOTM3NTI5MjE4NzMuLjRjODNmMTI4ZDY5N2ZiNWMzZGI1MDQ0NTI4YWRm
YWI1ZGI3ZWZjZjYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFs
bG9jQmVuY2gvQmVuY2htYXJrLmgKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9N
YWxsb2NCZW5jaC9CZW5jaG1hcmsuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBCZW5jaG1h
cmtfaAogCiAjaW5jbHVkZSAiQ29tbWFuZExpbmUuaCIKKyNpbmNsdWRlICJNZW1vcnkuaCIKICNp
bmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8c3RyaW5nPgogCkBAIC0zNSwzMCArMzYsNyBAQCBzdHJ1
Y3QgQmVuY2htYXJrUGFpcjsKIAogY2xhc3MgQmVuY2htYXJrIHsKIHB1YmxpYzoKLSAgICBzdHJ1
Y3QgTWVtb3J5IHsKLSAgICAgICAgTWVtb3J5KCkKLSAgICAgICAgICAgIDogcmVzaWRlbnQoKQot
ICAgICAgICAgICAgLCByZXNpZGVudE1heCgpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgTWVtb3J5KHNpemVfdCByZXNpZGVudCwgc2l6ZV90IHJlc2lkZW50TWF4KQot
ICAgICAgICAgICAgOiByZXNpZGVudChyZXNpZGVudCkKLSAgICAgICAgICAgICwgcmVzaWRlbnRN
YXgocmVzaWRlbnRNYXgpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIE1lbW9yeSBv
cGVyYXRvci0oY29uc3QgTWVtb3J5JiBvdGhlcikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIE1lbW9yeShyZXNpZGVudCAtIG90aGVyLnJlc2lkZW50LCByZXNpZGVudE1heCAtIG90aGVy
LnJlc2lkZW50TWF4KTsKLSAgICAgICAgfQotICAgIAotICAgICAgICBzaXplX3QgcmVzaWRlbnQ7
Ci0gICAgICAgIHNpemVfdCByZXNpZGVudE1heDsKLSAgICB9OwotCiAgICAgc3RhdGljIGRvdWJs
ZSBjdXJyZW50VGltZU1TKCk7Ci0gICAgc3RhdGljIE1lbW9yeSBjdXJyZW50TWVtb3J5Qnl0ZXMo
KTsKIAogICAgIEJlbmNobWFyayhDb21tYW5kTGluZSYpOwogICAgIApAQCAtNzUsMTIgKzUzLDEy
IEBAIGNsYXNzIEJlbmNobWFyayB7CiAKICAgICBNYXBUeXBlIG1fbWFwOwogCi0gICAgY29uc3Qg
QmVuY2htYXJrUGFpciogbV9iZW5jaG1hcmtQYWlyOworICAgIGNvbnN0IEJlbmNobWFya1BhaXIq
IG1fYmVuY2htYXJrUGFpciB7IG51bGxwdHIgfTsKIAogICAgIENvbW1hbmRMaW5lJiBtX2NvbW1h
bmRMaW5lOwogCiAgICAgTWVtb3J5IG1fbWVtb3J5OwotICAgIGRvdWJsZSBtX2VsYXBzZWRUaW1l
OworICAgIGRvdWJsZSBtX2VsYXBzZWRUaW1lIHsgMCB9OwogfTsKIAogI2VuZGlmIC8vIEJlbmNo
bWFya19oCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0Jl
bmNoL0NNYWtlTGlzdHMudHh0IGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NC
ZW5jaC9DTWFrZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2E4MTZmNzk4NDRlZjAwYTMzNzIzNDJj
ZTQ1ZmUxNmIxNDJmMmNkCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxs
b2NCZW5jaC9NYWxsb2NCZW5jaC9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDQ4IEBACithZGRf
bGlicmFyeShzeXNtYWxsb2MgU0hBUkVEIG1ibWFsbG9jLmNwcCkKKworc2V0KE1BTExPQ19CRU5D
SF9TT1VSQ0VTCisgICAgQmVuY2htYXJrLmNwcAorICAgIENQVUNvdW50LmNwcAorICAgIENvbW1h
bmRMaW5lLmNwcAorICAgIEludGVycHJldGVyLmNwcAorICAgIE1lbW9yeS5jcHAKKyAgICBhbGxv
Y19mcmVlLmNwcAorICAgIGJhbGxvb24uY3BwCisgICAgYmlnLmNwcAorICAgIGNodXJuLmNwcAor
ICAgIGZhY2Vib29rLmNwcAorICAgIGZsaWNrci5jcHAKKyAgICBmcmFnbWVudC5jcHAKKyAgICBs
aXN0LmNwcAorICAgIG1haW4uY3BwCisgICAgbWVkaXVtLmNwcAorICAgIG1lc3NhZ2UuY3BwCisg
ICAgbmltbGFuZy5jcHAKKyAgICByZWFsbG9jLmNwcAorICAgIHJlZGRpdC5jcHAKKyAgICBzdHJl
c3MuY3BwCisgICAgc3RyZXNzX2FsaWduZWQuY3BwCisgICAgdGhldmVyZ2UuY3BwCisgICAgdHJl
ZS5jcHAKKykKKworc2V0KE1BTExPQ19CRU5DSF9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgIiR7
Qk1BTExPQ19ESVJ9IgorICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9IgorICAgICIke0RFUklWRURf
U09VUkNFU19ESVJ9IgorICAgICIke1RISVJEUEFSVFlfRElSfSIKKykKKworc2V0KE1BTExPQ19C
RU5DSF9MSUJSQVJJRVMKKyAgICAke0NNQUtFX0RMX0xJQlN9CispCisKK1dFQktJVF9JTkNMVURF
X0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQorCitXRUJLSVRfV1JBUF9TT1VSQ0VMSVNUKCR7TUFM
TE9DX0JFTkNIX1NPVVJDRVN9KQorCitpbmNsdWRlX2RpcmVjdG9yaWVzKCR7TUFMTE9DX0JFTkNI
X0lOQ0xVREVfRElSRUNUT1JJRVN9KQorYWRkX2V4ZWN1dGFibGUoTWFsbG9jQmVuY2ggJHtNQUxM
T0NfQkVOQ0hfU09VUkNFU30pCit0YXJnZXRfbGlua19saWJyYXJpZXMoTWFsbG9jQmVuY2ggJHtD
TUFLRV9USFJFQURfTElCU19JTklUfSAke01BTExPQ19CRU5DSF9MSUJSQVJJRVN9IG1ibWFsbG9j
KQorCithZGRfZGVwZW5kZW5jaWVzKE1hbGxvY0JlbmNoIHN5c21hbGxvYyBtYm1hbGxvYykKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvQ1BVQ291
bnQuY3BwIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9DUFVDb3Vu
dC5jcHAKaW5kZXggMGYyMDE2MGI5OGUxMjJiZTIxMmQ4MWM0ZTYxN2MwZjg0OWJjNzQzMC4uMzFk
NmQyZDgzOTlhMDIwYWM3MGNkOGQ4OGU4MmE4MTg4YTU0ZTIwYSAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9DUFVDb3VudC5jcHAKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9DUFVDb3VudC5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KICNpbmNsdWRlIDxzeXMvc3lzY3Rs
Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CiAKIHN0YXRp
YyBzaXplX3QgY291bnQ7CiAKQEAgLTM2LDYgKzM3LDcgQEAgc2l6ZV90IGNwdUNvdW50KCkKICAg
ICBpZiAoY291bnQpCiAgICAgICAgIHJldHVybiBjb3VudDsKIAorI2lmZGVmIF9fQVBQTEVfXwog
ICAgIHNpemVfdCBsZW5ndGggPSBzaXplb2YoY291bnQpOwogICAgIGludCBuYW1lW10gPSB7CiAg
ICAgICAgICAgICBDVExfSFcsCkBAIC00NCw2ICs0NiwxMiBAQCBzaXplX3QgY3B1Q291bnQoKQog
ICAgIGludCBzeXNjdGxSZXN1bHQgPSBzeXNjdGwobmFtZSwgc2l6ZW9mKG5hbWUpIC8gc2l6ZW9m
KGludCksICZjb3VudCwgJmxlbmd0aCwgMCwgMCk7CiAgICAgaWYgKHN5c2N0bFJlc3VsdCA8IDAp
CiAgICAgICAgIGFib3J0KCk7CisjZWxzZQorICAgIGxvbmcgc3lzY29uZlJlc3VsdCA9IHN5c2Nv
bmYoX1NDX05QUk9DRVNTT1JTX09OTE4pOworICAgIGlmIChzeXNjb25mUmVzdWx0IDwgMCkKKyAg
ICAgICAgYWJvcnQoKTsKKyAgICBjb3VudCA9IHN5c2NvbmZSZXN1bHQ7CisjZW5kaWYKIAogICAg
IHJldHVybiBjb3VudDsKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVu
Y2gvTWFsbG9jQmVuY2gvSW50ZXJwcmV0ZXIuY3BwIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NC
ZW5jaC9NYWxsb2NCZW5jaC9JbnRlcnByZXRlci5jcHAKaW5kZXggN2ExYmI4ZjM4NjNmMmFiYWRl
YmZlMDA2ZjgxOTYxODVhZjcwYWI3MC4uOGM2Y2YzZjYzMGNkMzMzNWEzM2IzNzkxNTNlYmI0NzA1
ZjdkMWFlMyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NC
ZW5jaC9JbnRlcnByZXRlci5jcHAKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9N
YWxsb2NCZW5jaC9JbnRlcnByZXRlci5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBzdGF0aWMgc2l6
ZV90IGNvbXB1dGUydG9Qb3dlcih1bnNpZ25lZCBsb2cybikKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi12b2lkIEludGVycHJldGVyOjpkb01hbGxvY09wKE9wIG9wLCBUaHJlYWRJZCB0aHJlYWRJ
ZCkKK3ZvaWQgSW50ZXJwcmV0ZXI6OmRvTWFsbG9jT3AoT3Agb3AsIFRocmVhZElkKQogewogICAg
IHN3aXRjaCAob3Aub3Bjb2RlKSB7CiAgICAgICAgIGNhc2Ugb3BfbWFsbG9jOiB7CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL01lbW9yeS5jcHAg
Yi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL01lbW9yeS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWZiZGNlOGM4NDE3ZDg2YzY4MTkzYTlkOTUzNjk3ODNkY2I1OGZlYQotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvTWVt
b3J5LmNwcApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJNZW1vcnkuaCIKKyNpbmNsdWRlIDxzdGRsaWIu
aD4KKworI2lmZGVmIF9fQVBQTEVfXworI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgorI2luY2x1ZGUg
PG1hY2gvdGFza19pbmZvLmg+CisjZWxzZQorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8
dW5pc3RkLmg+CisjZW5kaWYKKworTWVtb3J5IGN1cnJlbnRNZW1vcnlCeXRlcygpCit7CisgICAg
TWVtb3J5IG1lbW9yeTsKKworI2lmZGVmIF9fQVBQTEVfXworICAgIHRhc2tfdm1faW5mb19kYXRh
X3Qgdm1faW5mbzsKKyAgICBtYWNoX21zZ190eXBlX251bWJlcl90IHZtX3NpemUgPSBUQVNLX1ZN
X0lORk9fQ09VTlQ7CisgICAgaWYgKEtFUk5fU1VDQ0VTUyAhPSB0YXNrX2luZm8obWFjaF90YXNr
X3NlbGYoKSwgVEFTS19WTV9JTkZPX1BVUkdFQUJMRSwgKHRhc2tfaW5mb190KSgmdm1faW5mbyks
ICZ2bV9zaXplKSkgeworICAgICAgICBjb3V0IDw8ICJGYWlsZWQgdG8gZ2V0IG1hY2ggdGFzayBp
bmZvIiA8PCBlbmRsOworICAgICAgICBleGl0KDEpOworICAgIH0KKworICAgIG1lbW9yeS5yZXNp
ZGVudCA9IHZtX2luZm8uaW50ZXJuYWwgKyB2bV9pbmZvLmNvbXByZXNzZWQgLSB2bV9pbmZvLnB1
cmdlYWJsZV92b2xhdGlsZV9wbWFwOworICAgIG1lbW9yeS5yZXNpZGVudE1heCA9IHZtX2luZm8u
cmVzaWRlbnRfc2l6ZV9wZWFrOworI2Vsc2UKKyAgICBGSUxFKiBmaWxlID0gZm9wZW4oIi9wcm9j
L3NlbGYvc3RhdHVzIiwgInIiKTsKKworICAgIGF1dG8gZm9yRWFjaExpbmUgPSBbXSAoRklMRSog
ZmlsZSwgYXV0byBmdW5jdG9yKSB7CisgICAgICAgIGNoYXIqIGJ1ZmZlciA9IG51bGxwdHI7Cisg
ICAgICAgIHNpemVfdCBzaXplID0gMDsKKyAgICAgICAgd2hpbGUgKGdldGxpbmUoJmJ1ZmZlciwg
JnNpemUsIGZpbGUpICE9IC0xKSB7CisgICAgICAgICAgICBmdW5jdG9yKGJ1ZmZlciwgc2l6ZSk7
CisgICAgICAgICAgICA6OmZyZWUoYnVmZmVyKTsgLy8gQmUgY2FyZWZ1bC4gZ2V0bGluZSdzIG1l
bW9yeSBhbGxvY2F0aW9uIGlzIGRvbmUgYnkgc3lzdGVtIG1hbGxvYy4KKyAgICAgICAgICAgIGJ1
ZmZlciA9IG51bGxwdHI7CisgICAgICAgICAgICBzaXplID0gMDsKKyAgICAgICAgfQorICAgIH07
CisKKyAgICB1bnNpZ25lZCBsb25nIHZtSFdNID0gMDsKKyAgICB1bnNpZ25lZCBsb25nIHZtUlNT
ID0gMDsKKyAgICB1bnNpZ25lZCBsb25nIHJzc0ZpbGUgPSAwOworICAgIHVuc2lnbmVkIGxvbmcg
cnNzU2htZW0gPSAwOworICAgIGZvckVhY2hMaW5lKGZpbGUsIFsmXSAoY2hhciogYnVmZmVyLCBz
aXplX3QpIHsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBzaXplSW5LQiA9IDA7CisgICAgICAgIGlm
IChzc2NhbmYoYnVmZmVyLCAiVm1IV006ICVsdSBrQiIsICZzaXplSW5LQikgPT0gMSkKKyAgICAg
ICAgICAgIHZtSFdNID0gc2l6ZUluS0IgKiAxMDI0OworICAgICAgICBlbHNlIGlmIChzc2NhbmYo
YnVmZmVyLCAiVm1SU1M6ICVsdSBrQiIsICZzaXplSW5LQikgPT0gMSkKKyAgICAgICAgICAgIHZt
UlNTID0gc2l6ZUluS0IgKiAxMDI0OworICAgICAgICBlbHNlIGlmIChzc2NhbmYoYnVmZmVyLCAi
UnNzRmlsZTogJWx1IGtCIiwgJnNpemVJbktCKSA9PSAxKQorICAgICAgICAgICAgcnNzRmlsZSA9
IHNpemVJbktCICogMTAyNDsKKyAgICAgICAgZWxzZSBpZiAoc3NjYW5mKGJ1ZmZlciwgIlJzc1No
bWVtOiAlbHUga0IiLCAmc2l6ZUluS0IpID09IDEpCisgICAgICAgICAgICByc3NTaG1lbSA9IHNp
emVJbktCICogMTAyNDsKKyAgICB9KTsKKyAgICBmY2xvc2UoZmlsZSk7CisgICAgbWVtb3J5LnJl
c2lkZW50ID0gdm1SU1MgLSAocnNzRmlsZSArIHJzc1NobWVtKTsKKyAgICBtZW1vcnkucmVzaWRl
bnRNYXggPSB2bUhXTSAtIChyc3NGaWxlICsgcnNzU2htZW0pOyAvLyBXZSBkbyBub3QgaGF2ZSBh
bnkgd2F5IHRvIGdldCB0aGUgcGVhayBvZiBSU1Mgb2YgYW5vbnltb3VzIHBhZ2VzLiBIZXJlLCB3
ZSBzdWJ0cmFjdCBSU1Mgb2YgZmlsZXMgYW5kIHNobWVtIHRvIGVzdGltYXRlIHRoZSBwZWFrIG9m
IFJTUyBvZiBhbm9ueW1vdXMgcGFnZXMuCisjZW5kaWYKKyAgICByZXR1cm4gbWVtb3J5OworfQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9NZW1v
cnkuaCBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvTWVtb3J5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWM3ZTkxZWQ5Y2Y5NmM1ZTA1YjQ1OTQ5NzNjODA4N2MyZDJmNzQ4YQotLS0g
L2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gv
TWVtb3J5LmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGNzdGRkZWY+CisK
K3N0cnVjdCBNZW1vcnkgeworICAgIE1lbW9yeSgpCisgICAgICAgIDogcmVzaWRlbnQoKQorICAg
ICAgICAsIHJlc2lkZW50TWF4KCkKKyAgICB7CisgICAgfQorCisgICAgTWVtb3J5KHNpemVfdCBy
ZXNpZGVudCwgc2l6ZV90IHJlc2lkZW50TWF4KQorICAgICAgICA6IHJlc2lkZW50KHJlc2lkZW50
KQorICAgICAgICAsIHJlc2lkZW50TWF4KHJlc2lkZW50TWF4KQorICAgIHsKKyAgICB9CisKKyAg
ICBNZW1vcnkgb3BlcmF0b3ItKGNvbnN0IE1lbW9yeSYgb3RoZXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gTWVtb3J5KHJlc2lkZW50IC0gb3RoZXIucmVzaWRlbnQsIHJlc2lkZW50TWF4IC0gb3Ro
ZXIucmVzaWRlbnRNYXgpOworICAgIH0KKworICAgIHNpemVfdCByZXNpZGVudDsKKyAgICBzaXpl
X3QgcmVzaWRlbnRNYXg7Cit9OworCitNZW1vcnkgY3VycmVudE1lbW9yeUJ5dGVzKCk7CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL2JhbGxvb24u
Y3BwIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9iYWxsb29uLmNw
cAppbmRleCA4YzBkNDNmMzFjMTZhZWRhOGQzMTk1YzMyM2MxOGU4MTVhZTE0MjAzLi4wNzBlODYw
MWEwMTUwOTBlOTU1OWZmZDhhNzE2NzE1ZDM5MTY0MTZlIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL2JhbGxvb24uY3BwCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvYmFsbG9vbi5jcHAKQEAgLTIzLDEzICsy
MywxNCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2luY2x1ZGUgIkJlbmNobWFyay5oIgog
I2luY2x1ZGUgIkNQVUNvdW50LmgiCisjaW5jbHVkZSAiTWVtb3J5LmgiCiAjaW5jbHVkZSAiYmFs
bG9vbi5oIgogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPGNocm9ubz4KICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RyaW5ncy5oPgogCiAjaW5j
bHVkZSAibWJtYWxsb2MuaCIKIApAQCAtNjEsNyArNjIsNyBAQCB2b2lkIGJlbmNobWFya19iYWxs
b29uKENvbW1hbmRMaW5lJikKICAgICAvLyBDb252ZXJ0cyBieXRlcyB0byB0aW1lIC0tIGZvciBy
ZXBvcnRpbmcncyBzYWtlIC0tIGJ5IHdhaXRpbmcgYSB3aGlsZSB1bnRpbAogICAgIC8vIHRoZSBo
ZWFwIHNocmlua3MgYmFjayBkb3duLiBUaGlzIGlzbid0IGdyZWF0IGZvciBwb29saW5nIHdpdGgg
b3RoZXIKICAgICAvLyBiZW5jaG1hcmtzIGluIGEgZ2VvbWV0cmljIG1lYW4gb2YgdGhyb3VnaHB1
dCwgYnV0IGl0J3MgT0sgZm9yIGJhc2ljIHRlc3RpbmcuCi0gICAgd2hpbGUgKEJlbmNobWFyazo6
Y3VycmVudE1lbW9yeUJ5dGVzKCkucmVzaWRlbnQgPiAyICogc3RlYWR5U2l6ZQorICAgIHdoaWxl
IChjdXJyZW50TWVtb3J5Qnl0ZXMoKS5yZXNpZGVudCA+IDIgKiBzdGVhZHlTaXplCiAgICAgICAg
ICYmIHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpIC0gc3RhcnQgPCA4ICogYmVuY2ht
YXJrVGltZSkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ZWFkeS5zaXplKCk7
ICsraSkgewogICAgICAgICAgICAgc3RlYWR5W2ldID0gbWJtYWxsb2MoY2h1bmtTaXplKTsKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvbWJtYWxs
b2MuY3BwIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9tYm1hbGxv
Yy5jcHAKaW5kZXggNjI1MzdiODY5YjY4Y2IxM2YyN2E5ZDI3Y2Y3MGJmMDgwZGVhZDk0OC4uNmE4
OWU2NDBhMjMxZWZmMGJlOGE3MGFmMTU2MGY5NGQ1YWFhYzM4YSAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9tYm1hbGxvYy5jcHAKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9tYm1hbGxvYy5jcHAKQEAgLTI2
LDcgKzI2LDEyIEBACiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5j
bHVkZSA8c3RkbGliLmg+CisKKyNpZmRlZiBfX0FQUExFX18KICNpbXBvcnQgPG1hbGxvYy9tYWxs
b2MuaD4KKyNlbHNlCisjaW5jbHVkZSA8bWFsbG9jLmg+CisjZW5kaWYKIAogZXh0ZXJuICJDIiB7
CiAKQEAgLTM4LDcgKzQzLDggQEAgdm9pZCogbWJtYWxsb2Moc2l6ZV90IHNpemUpCiB2b2lkKiBt
Ym1lbWFsaWduKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQogewogICAgIHZvaWQqIHJl
c3VsdDsKLSAgICBwb3NpeF9tZW1hbGlnbigmcmVzdWx0LCBhbGlnbm1lbnQsIHNpemUpOworICAg
IGlmIChwb3NpeF9tZW1hbGlnbigmcmVzdWx0LCBhbGlnbm1lbnQsIHNpemUpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC01NCw3ICs2MCwxMSBA
QCB2b2lkKiBtYnJlYWxsb2Modm9pZCogcCwgc2l6ZV90LCBzaXplX3QgbmV3U2l6ZSkKIAogdm9p
ZCBtYnNjYXZlbmdlKCkKIHsKKyNpZmRlZiBfX0FQUExFX18KICAgICBtYWxsb2Nfem9uZV9wcmVz
c3VyZV9yZWxpZWYobnVsbHB0ciwgMCk7CisjZWxzZQorICAgIG1hbGxvY190cmltKDApOworI2Vu
ZGlmCiB9CiAKIH0gLy8gZXh0ZXJuICJDIgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9N
YWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9tZXNzYWdlLmNwcCBiL1BlcmZvcm1hbmNlVGVzdHMvTWFs
bG9jQmVuY2gvTWFsbG9jQmVuY2gvbWVzc2FnZS5jcHAKaW5kZXggMWI1ZjlkMGJmMWE5MWMwNjA5
MTU1ZThhNTkzOWUxZmJiZmZkMzk5Yi4uMjdjNTQ5MzgxODMyNTc2N2I1OWI1M2VkNTJjNTE3Yzkx
ZDhkNGFhZSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NC
ZW5jaC9tZXNzYWdlLmNwcAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxv
Y0JlbmNoL21lc3NhZ2UuY3BwCkBAIC0yNSw5ICsyNSwxNyBAQAogCiAjaW5jbHVkZSAiQ1BVQ291
bnQuaCIKICNpbmNsdWRlICJtZXNzYWdlLmgiCi0jaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2gu
aD4KKyNpbmNsdWRlIDxjb25kaXRpb25fdmFyaWFibGU+CisjaW5jbHVkZSA8ZGVxdWU+CisjaW5j
bHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDxzdGRsaWIuaD4K
ICNpbmNsdWRlIDxzdHJpbmdzLmg+CisjaW5jbHVkZSA8dGhyZWFkPgorCisjaWZkZWYgX19BUFBM
RV9fCisjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNlbmRpZgogCiAjaW5jbHVkZSAi
bWJtYWxsb2MuaCIKIApAQCAtMTEwLDYgKzExOCw2OCBAQCBjbGFzcyBNZXNzYWdlIHsKIAogfSAv
LyBuYW1lc3BhY2UKIAorY2xhc3MgV29ya1F1ZXVlIHsKK3B1YmxpYzoKKyAgICBXb3JrUXVldWUo
KQorICAgIHsKKyAgICAgICAgbV90aHJlYWQgPSBzdGQ6OnRocmVhZChbJl0geworICAgICAgICAg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
dGFyZ2V0OworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBsb2NrZXIobV9tdXRleCk7CisgICAgICAgICAgICAgICAgICAg
IG1fY29uZGl0aW9uLndhaXQobG9ja2VyLCBbJl0geyByZXR1cm4gIW1fcXVldWUuZW1wdHkoKTsg
fSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gcXVldWVkID0gbV9xdWV1ZS5mcm9udCgpOwor
ICAgICAgICAgICAgICAgICAgICBtX3F1ZXVlLnBvcF9mcm9udCgpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoIXF1ZXVlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICAgICAgdGFyZ2V0ID0gc3RkOjptb3ZlKHF1ZXVlZCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHRhcmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICB9
KTsKKyAgICB9CisKKyAgICB+V29ya1F1ZXVlKCkgeworICAgICAgICB7CisgICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKKyAgICAgICAgICAg
IG1fcXVldWUucHVzaF9iYWNrKG51bGxwdHIpOworICAgICAgICAgICAgbV9jb25kaXRpb24ubm90
aWZ5X29uZSgpOworICAgICAgICB9CisgICAgICAgIG1fdGhyZWFkLmpvaW4oKTsKKyAgICB9CisK
KyAgICB2b2lkIGRpc3BhdGNoQXN5bmMoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHRhcmdldCkKKyAg
ICB7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gbG9ja2VyKG1fbXV0ZXgp
OworICAgICAgICBtX3F1ZXVlLnB1c2hfYmFjayh0YXJnZXQpOworICAgICAgICBtX2NvbmRpdGlv
bi5ub3RpZnlfb25lKCk7CisgICAgfQorCisgICAgdm9pZCBkaXNwYXRjaFN5bmMoc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IHRhcmdldCkKKyAgICB7CisgICAgICAgIHN0ZDo6bXV0ZXggc3luY011dGV4
OworICAgICAgICBzdGQ6OmNvbmRpdGlvbl92YXJpYWJsZSBzeW5jQ29uZGl0aW9uOworCisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gbG9ja2VyKHN5bmNNdXRleCk7CisgICAg
ICAgIGJvb2wgZG9uZSA9IGZhbHNlOworICAgICAgICBkaXNwYXRjaEFzeW5jKFsmXSB7CisgICAg
ICAgICAgICB0YXJnZXQoKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IGxvY2tlcihzeW5jTXV0ZXgpOworICAgICAgICAgICAgICAg
IGRvbmUgPSB0cnVlOworICAgICAgICAgICAgICAgIHN5bmNDb25kaXRpb24ubm90aWZ5X29uZSgp
OworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgc3luY0NvbmRpdGlvbi53YWl0
KGxvY2tlciwgWyZdIHsgcmV0dXJuIGRvbmU7IH0pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBz
dGQ6Om11dGV4IG1fbXV0ZXg7CisgICAgc3RkOjpjb25kaXRpb25fdmFyaWFibGUgbV9jb25kaXRp
b247CisgICAgc3RkOjpkZXF1ZTxzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+IG1fcXVldWU7CisgICAg
c3RkOjp0aHJlYWQgbV90aHJlYWQ7Cit9OworCiB2b2lkIGJlbmNobWFya19tZXNzYWdlX29uZShD
b21tYW5kTGluZSYgY29tbWFuZExpbmUpCiB7CiAgICAgaWYgKGNvbW1hbmRMaW5lLmlzUGFyYWxs
ZWwoKSkKQEAgLTExOCw2ICsxODgsNyBAQCB2b2lkIGJlbmNobWFya19tZXNzYWdlX29uZShDb21t
YW5kTGluZSYgY29tbWFuZExpbmUpCiAgICAgY29uc3Qgc2l6ZV90IHRpbWVzID0gMjA0ODsKICAg
ICBjb25zdCBzaXplX3QgcXVhbnR1bSA9IDE2OwogCisjaWZkZWYgX19BUFBMRV9fCiAgICAgZGlz
cGF0Y2hfcXVldWVfdCBxdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgibWVzc2FnZSIsIDAp
OwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0aW1lczsgaSArPSBxdWFudHVtKSB7CkBA
IC0xMzYsNiArMjA3LDI0IEBAIHZvaWQgYmVuY2htYXJrX21lc3NhZ2Vfb25lKENvbW1hbmRMaW5l
JiBjb21tYW5kTGluZSkKICAgICBkaXNwYXRjaF9zeW5jKHF1ZXVlLCBeeyB9KTsKIAogICAgIGRp
c3BhdGNoX3JlbGVhc2UocXVldWUpOworI2Vsc2UKKyAgICB7CisgICAgICAgIFdvcmtRdWV1ZSB3
b3JrUXVldWU7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGltZXM7IGkgKz0gcXVh
bnR1bSkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBxdWFudHVtOyArK2op
IHsKKyAgICAgICAgICAgICAgICBNZXNzYWdlKiBtZXNzYWdlID0gbmV3IE1lc3NhZ2U7CisgICAg
ICAgICAgICAgICAgd29ya1F1ZXVlLmRpc3BhdGNoQXN5bmMoW21lc3NhZ2VdIHsKKyAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGhhc2ggPSBtZXNzYWdlLT5oYXNoKCk7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChoYXNoKQorICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgZGVsZXRlIG1lc3NhZ2U7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICB3b3JrUXVldWUuZGlzcGF0Y2hTeW5jKFtdIHsgfSk7Cisg
ICAgICAgIH0KKyAgICAgICAgd29ya1F1ZXVlLmRpc3BhdGNoU3luYyhbXSB7IH0pOworICAgIH0K
KyNlbmRpZgogfQogCiB2b2lkIGJlbmNobWFya19tZXNzYWdlX21hbnkoQ29tbWFuZExpbmUmIGNv
bW1hbmRMaW5lKQpAQCAtMTQ3LDYgKzIzNiw3IEBAIHZvaWQgYmVuY2htYXJrX21lc3NhZ2VfbWFu
eShDb21tYW5kTGluZSYgY29tbWFuZExpbmUpCiAgICAgY29uc3Qgc2l6ZV90IHF1YW50dW0gPSAx
NjsKIAogICAgIGNvbnN0IHNpemVfdCBxdWV1ZUNvdW50ID0gY3B1Q291bnQoKSAtIDE7CisjaWZk
ZWYgX19BUFBMRV9fCiAgICAgZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZXNbcXVldWVDb3VudF07CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWV1ZUNvdW50OyArK2kpCiAgICAgICAgIHF1ZXVl
c1tpXSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgibWVzc2FnZSIsIDApOwpAQCAtMTczLDQgKzI2
MywzMSBAQCB2b2lkIGJlbmNobWFya19tZXNzYWdlX21hbnkoQ29tbWFuZExpbmUmIGNvbW1hbmRM
aW5lKQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWV1ZUNvdW50OyArK2kpCiAgICAg
ICAgIGRpc3BhdGNoX3JlbGVhc2UocXVldWVzW2ldKTsKKyNlbHNlCisgICAgeworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V29ya1F1ZXVlPiBxdWV1ZXNbcXVldWVDb3VudF07CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVldWVDb3VudDsgKytpKQorICAgICAgICAgICAgcXVldWVz
W2ldID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrUXVldWU+KCk7CisKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB0aW1lczsgaSArPSBxdWFudHVtKSB7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBqID0gMDsgaiA8IHF1YW50dW07ICsraikgeworICAgICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGsgPSAwOyBrIDwgcXVldWVDb3VudDsgKytrKSB7CisgICAgICAgICAgICAgICAgICAgIE1l
c3NhZ2UqIG1lc3NhZ2UgPSBuZXcgTWVzc2FnZTsKKyAgICAgICAgICAgICAgICAgICAgcXVldWVz
W2tdLT5kaXNwYXRjaEFzeW5jKFttZXNzYWdlXSB7CisgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaGFzaCA9IG1lc3NhZ2UtPmhhc2goKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChoYXNoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0KCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBkZWxldGUgbWVzc2FnZTsKKyAgICAgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHF1ZXVlQ291bnQ7ICsraSkKKyAgICAgICAgICAgICAgICBxdWV1ZXNbaV0t
PmRpc3BhdGNoU3luYyhbXSB7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBxdWV1ZUNvdW50OyArK2kpCisgICAgICAgICAgICBxdWV1ZXNbaV0tPmRpc3Bh
dGNoU3luYyhbXSB7IH0pOworICAgIH0KKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9uaW1sYW5nLmNwcCBiL1BlcmZvcm1hbmNl
VGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvbmltbGFuZy5jcHAKaW5kZXggYWUxZWIzNzhl
OGM2OTYwOWZlY2IxZjgxZGE5MTYzNGY3YTNjNGNmNS4uMzM1ZjA3ZTYwOWYyMTQ3NjQ5YWMyNDVm
YjM1YmNiNDU2NzE3OTA3NyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5j
aC9NYWxsb2NCZW5jaC9uaW1sYW5nLmNwcAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0Jl
bmNoL01hbGxvY0JlbmNoL25pbWxhbmcuY3BwCkBAIC01MSw2ICs1MSw2IEBAIHZvaWQgYmVuY2ht
YXJrX25pbWxhbmcoQ29tbWFuZExpbmUmIGNvbW1hbmRMaW5lKQogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdGltZXM7ICsraSkKICAgICAgICAgaW50ZXJwcmV0ZXIucnVuKCk7CiAKLSAgICAg
ICAgaWYgKGNvbW1hbmRMaW5lLmRldGFpbGVkUmVwb3J0KCkpCi0gICAgICAgICAgICBpbnRlcnBy
ZXRlci5kZXRhaWxlZFJlcG9ydCgpOworICAgIGlmIChjb21tYW5kTGluZS5kZXRhaWxlZFJlcG9y
dCgpKQorICAgICAgICBpbnRlcnByZXRlci5kZXRhaWxlZFJlcG9ydCgpOwogfQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9zdHJlc3MuY3BwIGIv
UGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9zdHJlc3MuY3BwCmluZGV4
IDZiYzFiYTMxNTJiZDkzYmUwMmNkMzU2MWNiMzljZTJkYmZhMGJkOWYuLjFjMTQ3NDdiYmMyYTM3
ZjhjMDYzYmVjZTE3NTA1Mzc1MmI5NjhlYTggMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
TWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvc3RyZXNzLmNwcAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL3N0cmVzcy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJDUFVDb3VudC5oIgogI2luY2x1ZGUgInN0cmVzcy5oIgogI2luY2x1ZGUgPGFycmF5
PgorI2luY2x1ZGUgPGNhc3NlcnQ+CiAjaW5jbHVkZSA8Y2hyb25vPgogI2luY2x1ZGUgPGNzdGRs
aWI+CiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtODYsNiArODcsOCBAQCBjbGFzcyBTaXplU3RyZWFt
IHsKICAgICAgICAgICAgIHJldHVybiByYW5kb20oKSAlIGxhcmdlTWF4OwogICAgICAgICB9CiAg
ICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KDApOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxv
Y0JlbmNoL3N0cmVzc19hbGlnbmVkLmNwcCBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gv
TWFsbG9jQmVuY2gvc3RyZXNzX2FsaWduZWQuY3BwCmluZGV4IDQ5YjkxYmMzZmFlMWMxNjhmZjg0
ZjkwODA5ZDU2NDRlZjhmMjEzODMuLjg5YzhlYTIzYTEwZWZjMDg0NWFhYjA3YzI2NWUxYjE0MjM4
YzFjZTkgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVu
Y2gvc3RyZXNzX2FsaWduZWQuY3BwCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gv
TWFsbG9jQmVuY2gvc3RyZXNzX2FsaWduZWQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiQ1BVQ291bnQuaCIKICNpbmNsdWRlICJzdHJlc3NfYWxpZ25lZC5oIgogI2luY2x1ZGUgPGFy
cmF5PgorI2luY2x1ZGUgPGNhc3NlcnQ+CiAjaW5jbHVkZSA8Y2hyb25vPgogI2luY2x1ZGUgPGNt
YXRoPgogI2luY2x1ZGUgPGNzdGRsaWI+CkBAIC04OSw2ICs5MCw4IEBAIGNsYXNzIFNpemVTdHJl
YW0gewogICAgICAgICAgICAgcmV0dXJuIHJhbmRvbSgpICUgbGFyZ2VNYXg7CiAgICAgICAgIH0K
ICAgICAgICAgfQorICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvcnVu
LW1hbGxvYy1iZW5jaG1hcmtzIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9ydW4tbWFs
bG9jLWJlbmNobWFya3MKaW5kZXggYjViZDBhMDgwNzQ4MTFmYzY2MDY2ODM0YTdmN2ViNTM4MmQ5
NGFjZi4uNzRlZGZmZjAzYjQxNGEyYmZiNmFhYThmMTUyOTEyZGIwM2I3NzMxMiAxMDA3NTUKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9ydW4tbWFsbG9jLWJlbmNobWFya3MKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9ydW4tbWFsbG9jLWJlbmNobWFya3MKQEAg
LTcsNiArNywzMCBAQCByZXF1aXJlICdwYXRobmFtZScKICRiaW5EaXIgPSAiI3tGaWxlLmV4cGFu
ZF9wYXRoKEZpbGUuZGlybmFtZShfX0ZJTEVfXykpfSIKICRwcm9kdWN0RGlyID0gYHBlcmwgLWUg
J3VzZSBsaWIgXCIjeyRiaW5EaXJ9Ly4uLy4uL1Rvb2xzL1NjcmlwdHNcIjsgdXNlIHdlYmtpdGRp
cnM7IHByaW50IHByb2R1Y3REaXIoKSdgCiAKK2RlZiBkZXRlcm1pbmVPUworICAgIGNhc2UgUmJD
b25maWc6OkNPTkZJR1siaG9zdF9vcyJdCisgICAgd2hlbiAvZGFyd2luL2kKKyAgICAgICAgImRh
cndpbiIKKyAgICB3aGVuIC9saW51eC9pCisgICAgICAgICJsaW51eCIKKyAgICB3aGVuIC9tc3dp
bnxtaW5nd3xjeWd3aW4vCisgICAgICAgICJ3aW5kb3dzIgorICAgIGVsc2UKKyAgICAgICAgJHN0
ZGVyci5wdXRzICJXYXJuaW5nOiB1bmFibGUgdG8gZGV0ZXJtaW5lIGhvc3Qgb3BlcmF0aW5nIHN5
c3RlbSIKKyAgICAgICAgbmlsCisgICAgZW5kCitlbmQKKworJGhvc3RPUyA9IGRldGVybWluZU9T
IHVubGVzcyAkaG9zdE9TCisKK2lmICRob3N0T1MgPT0gJ2RhcndpbicKKyAgICAkbGlicmFyeURp
ciA9ICRwcm9kdWN0RGlyCisgICAgJGJpbmFyeURpciA9ICRwcm9kdWN0RGlyCitlbHNlCisgICAg
JGxpYnJhcnlEaXIgPSAiI3skcHJvZHVjdERpcn0vbGliIgorICAgICRiaW5hcnlEaXIgPSAiI3sk
cHJvZHVjdERpcn0vYmluIgorZW5kCisKICRiZW5jaG1hcmtzX2FsbCA9IFsKICAgICAjIFNpbmds
ZS10aHJlYWRlZCBiZW5jaG1hcmtzLgogICAgICJjaHVybiIsCkBAIC0xMDEsNyArMTI1LDE1IEBA
IGNsYXNzIER5bGliCiAKICAgICBkZWYgaW5pdGlhbGl6ZShuYW1lLCBwYXRoKQogICAgICAgICBA
bmFtZSA9IG5hbWUKLSAgICAgICAgQHBhdGggPSBGaWxlLmpvaW4ocGF0aCwgImxpYm1ibWFsbG9j
LmR5bGliIikKKyAgICAgICAgaWYgJGhvc3RPUyA9PSAnZGFyd2luJworICAgICAgICAgICAgQHBh
dGggPSBGaWxlLmpvaW4ocGF0aCwgImxpYm1ibWFsbG9jLmR5bGliIikKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgaWYgbmFtZSA9PSAnU3lzdGVtTWFsbG9jJworICAgICAgICAgICAgICAgIEBw
YXRoID0gRmlsZS5qb2luKHBhdGgsICJsaWJzeXNtYWxsb2Muc28iKQorICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIEBwYXRoID0gRmlsZS5qb2luKHBhdGgsICJsaWJtYm1hbGxvYy5z
byIpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCiAgICAgZW5kCiBlbmQKIApAQCAtMjQ2
LDkgKzI3OCw5IEBAIGRlZiBwYXJzZU9wdGlvbnMKICAgICBBUkdWLmVhY2ggewogICAgICAgICB8
IGFyZyB8CiAgICAgICAgIGlmIGFyZyA9PSAiU3lzdGVtTWFsbG9jIgotICAgICAgICAgICAgZHls
aWIgPSBEeWxpYi5uZXcoIlN5c3RlbU1hbGxvYyIsICRwcm9kdWN0RGlyKQorICAgICAgICAgICAg
ZHlsaWIgPSBEeWxpYi5uZXcoIlN5c3RlbU1hbGxvYyIsICRsaWJyYXJ5RGlyKQogICAgICAgICBl
bHNpZiBhcmcgPT0gIk5hbm9NYWxsb2MiCi0gICAgICAgICAgICBkeWxpYiA9IER5bGliLm5ldygi
TmFub01hbGxvYyIsICRwcm9kdWN0RGlyKQorICAgICAgICAgICAgZHlsaWIgPSBEeWxpYi5uZXco
Ik5hbm9NYWxsb2MiLCAkbGlicmFyeURpcikKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmFt
ZSA9IGFyZy5zcGxpdCgiOiIpWzBdCiAgICAgICAgICAgICBwYXRoID0gYXJnLnNwbGl0KCI6Iilb
MV0KQEAgLTI4OCwxMCArMzIwLDExIEBAIGRlZiBydW5CZW5jaG1hcmtzKGR5bGlicykKIAogICAg
ICAgICAgICAgJHN0ZGVyci5wcmludCAiXHJSVU5OSU5HICN7ZHlsaWIubmFtZX06ICN7YmVuY2ht
YXJrfS4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgogICAgICAgICAgICAgZW52
ID0gIkRZTERfTElCUkFSWV9QQVRIPScje1BhdGhuYW1lLm5ldyhkeWxpYi5wYXRoKS5kaXJuYW1l
fScgIgorICAgICAgICAgICAgZW52ID0gIkxEX1BSRUxPQUQ9JyN7ZHlsaWIucGF0aH0nICIKICAg
ICAgICAgICAgIGlmIGR5bGliLm5hbWUgPT0gIk5hbm9NYWxsb2MiCiAgICAgICAgICAgICAgICAg
ZW52ICs9ICJNYWxsb2NOYW5vWm9uZT0xICIKICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAg
aW5wdXQgPSAiY2QgJyN7JHByb2R1Y3REaXJ9JzsgI3tlbnZ9ICcjeyRwcm9kdWN0RGlyfS9NYWxs
b2NCZW5jaCcgLS1iZW5jaG1hcmsgI3tiZW5jaG1hcmt9IC0taGVhcCAjeyRoZWFwfX0iCisgICAg
ICAgICAgICBpbnB1dCA9ICJjZCAnI3skcHJvZHVjdERpcn0nOyAje2Vudn0gJyN7JGJpbmFyeURp
cn0vTWFsbG9jQmVuY2gnIC0tYmVuY2htYXJrICN7YmVuY2htYXJrfSAtLWhlYXAgI3skaGVhcH19
IgogICAgICAgICAgICAgb3V0cHV0ID1gI3tpbnB1dH1gCiAgICAgICAgICAgICBzcGxpdE91dHB1
dCA9IG91dHB1dC5zcGxpdCgiXG4iKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322677</attachid>
            <date>2017-10-04 08:55:44 -0700</date>
            <delta_ts>2017-10-04 09:39:52 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-177856-20171004175542.patch</filename>
            <type>text/plain</type>
            <size>40135</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggZjgwMzE4ZTMzMTI5NDEy
NjUzZjBjNjY4Mjg4OTE0ODg5NDkzMjYxYi4uNjFmOGQ1YWRmOGZlOWM1NDc4OWNmMGE4MzBlOGQ1
NWVlMTU0NjM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTEwLTA0ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtMaW51eF0gUG9y
dCBNYWxsb2NCZW5jaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc3ODU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxNy0xMC0wMiAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbTGludXhdIEVuYWJsZSBHaWdhY2FnZSBp
biB4NjQgTGludXggZW52aXJvbm1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKaW5kZXggYmY2MDRjZTA0
MjI1YTA4ZjRjMmYyYjUyNjFmMjgzMjEzMmY3M2RlOS4uM2ZhYjY5ZjBhZDVmZmQwZjk4NzEyMjA5
ZmVmMWVmNmVmYTU5NGIzOCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKQEAgLTM3LDMgKzM3LDcgQEAg
aW5jbHVkZV9kaXJlY3Rvcmllcygke2JtYWxsb2NfSU5DTFVERV9ESVJFQ1RPUklFU30pCiBhZGRf
bGlicmFyeShibWFsbG9jIFNUQVRJQyAke2JtYWxsb2NfU09VUkNFU30pCiB0YXJnZXRfbGlua19s
aWJyYXJpZXMoYm1hbGxvYyAke2JtYWxsb2NfTElCUkFSSUVTfSkKIHNldF90YXJnZXRfcHJvcGVy
dGllcyhibWFsbG9jIFBST1BFUlRJRVMgQ09NUElMRV9ERUZJTklUSU9OUyAiQlVJTERJTkdfYm1h
bGxvYyIpCisKK2FkZF9saWJyYXJ5KG1ibWFsbG9jIFNIQVJFRCBibWFsbG9jL21ibWFsbG9jLmNw
cCkKK3RhcmdldF9saW5rX2xpYnJhcmllcyhtYm1hbGxvYyBibWFsbG9jICR7Q01BS0VfVEhSRUFE
X0xJQlNfSU5JVH0gJHtibWFsbG9jX0xJQlJBUklFU30pCitzZXRfdGFyZ2V0X3Byb3BlcnRpZXMo
bWJtYWxsb2MgUFJPUEVSVElFUyBDT01QSUxFX0RFRklOSVRJT05TICJCVUlMRElOR19tYm1hbGxv
YyIpCmRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CmluZGV4IDY1
NThhNWU2YmJjNTcyNmMyYzM1ODBjNjAwZWM1MzQwODMyMDdhMDIuLjU4ZTUyMzI2M2RhZGI1Y2Qx
ZjlmZmExOGE0MWM2NjdjYzIxMzU1OWUgMTAwNjQ0Ci0tLSBhL0NNYWtlTGlzdHMudHh0CisrKyBi
L0NNYWtlTGlzdHMudHh0CkBAIC0xNzcsNiArMTc3LDggQEAgaWYgKEVOQUJMRV9UT09MUykKICAg
ICBhZGRfc3ViZGlyZWN0b3J5KFRvb2xzKQogZW5kaWYgKCkKIAorYWRkX3N1YmRpcmVjdG9yeShQ
ZXJmb3JtYW5jZVRlc3RzKQorCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFByaW50IHRoZSBm
ZWF0dXJlcyBsaXN0IGxhc3QsIGZvciBtYXhpbXVtIHZpc2liaWxpdHkuCiAjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggYmMwYzJi
NWZjYjJjOGNjYzA1MGQwNTQ0M2QyMGU1MzI0MzAxNDE1ZS4uY2YzOGVkMjNhZDJiYjFkNGQxMWM2
NjlhMjM3ZGJjNjk5NmQ2ZTU4NCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTEwLTA0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtMaW51eF0gUG9ydCBNYWxsb2NCZW5jaAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3ODU2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKwogMjAxNy0xMC0wNCAgTWlndWVsIEdvbWV6ICA8bWFnb21lekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIEFkZCBhbmltYXRpb24gc3VwcG9ydCBmb3IgV2ViUCBpbWFnZXMKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQ01ha2VMaXN0cy50eHQgYi9QZXJmb3JtYW5jZVRlc3RzL0NNYWtl
TGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyYTcxN2NhMDdiYjVmMjRlNTBkYzc0NDIzNDQ0N2FlZjkx
MmIzY2YKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NNYWtlTGlzdHMudHh0
CkBAIC0wLDAgKzEsNyBAQAorc2V0KEVOQUJMRV9NQUxMT0NfQkVOQ0ggT04pCisKK2lmIChFTkFC
TEVfTUFMTE9DX0JFTkNIKQorICAgIGFkZF9zdWJkaXJlY3RvcnkoTWFsbG9jQmVuY2gpCitlbmRp
ZiAoKQorCitXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMmNhYjkwOTgyOGM5MWFhZWUzYjUyZDk5MjNiMzYxYzJhNjEyZTkxYS4uNDU3NTBh
OWQ3MmQyMGMyY2JiYWY4YjVkODBkNjlhMjU2NDgzMzRjYiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxNy0xMC0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbTGludXhdIFBvcnQgTWFsbG9jQmVuY2gKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Nzg1NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHdvdWxkIGxpa2UgdG8gb3B0aW1p
emUgbG9ja2luZyBpbiBibWFsbG9jIGluIExpbnV4IGJ5IHVzaW5nIGZ1dGV4IEFQSXMuCisgICAg
ICAgIFNvIHdlIHNob3VsZCBoYXZlIHRoZSB3YXkgdG8gZW5zdXJlIHRoaXMgYWN0dWFsbHkgaW1w
cm92ZXMgLyBkb2VzIG5vdCByZWdyZXNzCisgICAgICAgIHRoZSBwZXJmb3JtYW5jZS4KKworICAg
ICAgICBUaGlzIHBhdGNoIHBvcnRzIE1hbGxvY0JlbmNoIHRvIExpbnV4IHRvIG1lYXN1cmUvZW5z
dXJlIHRoZSBlZmZlY3Qgb2YgYm1hbGxvYworICAgICAgICBwYXRjaCBpbiBMaW51eC4KKworICAg
ICAgICBXaGlsZSB3ZSByZXBsYWNlIHRoZSBkaXNwYXRjaCBzZXJpYWwgcXVldWUgaW4gbWVzc2Fn
ZS5jcHAsIHdlIHN0aWxsIHVzZSBsaWJkaXNwYXRjaAorICAgICAgICBpbiBCZW5jaG1hcmsuY3Bw
IHNpbmNlIHdlIGRvIG5vdCBoYXZlIHByaW9yaXR5IG1lY2hhbmlzbSBpbiBDKysxMSB0aHJlYWRp
bmcgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQuCisg
ICAgICAgICogTWFsbG9jQmVuY2gvQ01ha2VMaXN0cy50eHQ6IEFkZGVkLgorICAgICAgICAqIE1h
bGxvY0JlbmNoL01hbGxvY0JlbmNoLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvQmVuY2htYXJrLmNwcDoKKyAgICAgICAgKEJlbmNo
bWFyazo6QmVuY2htYXJrKToKKyAgICAgICAgKEJlbmNobWFyazo6cnVuT25jZSk6CisgICAgICAg
IChCZW5jaG1hcms6OmN1cnJlbnRNZW1vcnlCeXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogTWFs
bG9jQmVuY2gvTWFsbG9jQmVuY2gvQmVuY2htYXJrLmg6CisgICAgICAgIChCZW5jaG1hcms6Ok1l
bW9yeTo6TWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEJlbmNobWFyazo6TWVtb3J5OjpvcGVy
YXRvci0pOiBEZWxldGVkLgorICAgICAgICAqIE1hbGxvY0JlbmNoL01hbGxvY0JlbmNoL0NNYWtl
TGlzdHMudHh0OiBBZGRlZC4KKyAgICAgICAgKiBNYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9DUFVD
b3VudC5jcHA6CisgICAgICAgIChjcHVDb3VudCk6CisgICAgICAgICogTWFsbG9jQmVuY2gvTWFs
bG9jQmVuY2gvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSW50ZXJwcmV0ZXI6OmRvTWFsbG9j
T3ApOgorICAgICAgICAqIE1hbGxvY0JlbmNoL01hbGxvY0JlbmNoL01lbW9yeS5jcHA6IEFkZGVk
LgorICAgICAgICAoY3VycmVudE1lbW9yeUJ5dGVzKToKKyAgICAgICAgKiBNYWxsb2NCZW5jaC9N
YWxsb2NCZW5jaC9NZW1vcnkuaDogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NC
ZW5jaC9NYWxsb2NCZW5jaC9DUFVDb3VudC5jcHAuCisgICAgICAgIChNZW1vcnk6Ok1lbW9yeSk6
CisgICAgICAgIChNZW1vcnk6Om9wZXJhdG9yLSk6CisgICAgICAgICogTWFsbG9jQmVuY2gvTWFs
bG9jQmVuY2gvYmFsbG9vbi5jcHA6CisgICAgICAgIChiZW5jaG1hcmtfYmFsbG9vbik6CisgICAg
ICAgICogTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvbWJtYWxsb2MuY3BwOgorICAgICAgICAqIE1h
bGxvY0JlbmNoL01hbGxvY0JlbmNoL21lc3NhZ2UuY3BwOgorICAgICAgICAoV29ya1F1ZXVlOjpX
b3JrUXVldWUpOgorICAgICAgICAoV29ya1F1ZXVlOjp+V29ya1F1ZXVlKToKKyAgICAgICAgKFdv
cmtRdWV1ZTo6ZGlzcGF0Y2hBc3luYyk6CisgICAgICAgIChXb3JrUXVldWU6OmRpc3BhdGNoU3lu
Yyk6CisgICAgICAgIChiZW5jaG1hcmtfbWVzc2FnZV9vbmUpOgorICAgICAgICAoYmVuY2htYXJr
X21lc3NhZ2VfbWFueSk6CisgICAgICAgICogTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvbmltbGFu
Zy5jcHA6CisgICAgICAgIChiZW5jaG1hcmtfbmltbGFuZyk6CisgICAgICAgICogTWFsbG9jQmVu
Y2gvTWFsbG9jQmVuY2gvc3RyZXNzLmNwcDoKKyAgICAgICAgKFNpemVTdHJlYW06Om5leHQpOgor
ICAgICAgICAqIE1hbGxvY0JlbmNoL01hbGxvY0JlbmNoL3N0cmVzc19hbGlnbmVkLmNwcDoKKyAg
ICAgICAgKiBNYWxsb2NCZW5jaC9ydW4tbWFsbG9jLWJlbmNobWFya3M6CisKIDIwMTctMDktMjYg
IE1hdGhpYXMgQnluZW5zICA8bWF0aGlhc0BxaXdpLmJlPgogCiAgICAgICAgIFNwZWVkb21ldGVy
OiBlbnN1cmUgYWxsIFRvZG9NVkMgdGVzdHMgdXNlIHRoZSBjb21wbGV0ZSBsYXRlc3QgQ1NTCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL0NNYWtlTGlzdHMudHh0IGIv
UGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9DTWFrZUxpc3RzLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
Y2JhN2I2NGZiZDExNzA2ZDNlYjJiZDRmZWMwMjUxNWQwNzljMzQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsx
IEBACithZGRfc3ViZGlyZWN0b3J5KE1hbGxvY0JlbmNoKQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDJiZTM2Y2JkYjQ2NWRjMWViMTMxNTgzYTQzOWE1MWY3OTdjOWQ1
M2IuLjM0MTZmODE3ZjZmZGRiNWZmOTUyZmMwYzUzNTM5NDVmMGViNjk3Y2UgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNo
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQwLDYgKzQwLDcgQEAKIAkJMTRGQ0EzNjEx
OUE3QzkxNzAwMUNGREE5IC8qIHN0cmVzcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNEZDQTM1RjE5QTdDOTE3MDAxQ0ZEQTkgLyogc3RyZXNzLmNw
cCAqLzsgfTsKIAkJNjVFNDAxQTYxQzY1N0E4NzAwM0M2RTlDIC8qIG5pbWxhbmcuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVFNDAxQTQxQzY1N0E4
NzAwM0M2RTlDIC8qIG5pbWxhbmcuY3BwICovOyB9OwogCQk2NUU0MDFBQzFDNzNCMDY4MDAzQzZF
OUMgLyogYWxsb2NfZnJlZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NUU0MDFBQTFDNzNCMDY4MDAzQzZFOUMgLyogYWxsb2NfZnJlZS5jcHAgKi87
IH07CisJCUUzNzY4MTAzMUY4NTI5RUYwMDYxN0U0QyAvKiBNZW1vcnkuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3NjgxMDExRjg1MjlFRjAwNjE3
RTRDIC8qIE1lbW9yeS5jcHAgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC00OSwxNCAr
NTAsMTQgQEAKIAkJCWRzdFBhdGggPSAiIjsKIAkJCWRzdFN1YmZvbGRlclNwZWMgPSA3OwogCQkJ
ZmlsZXMgPSAoCisJCQkJMTRDNTAwOTAxODQwMTg0MTAwN0E1MzFEIC8qIGZhY2Vib29rLm9wcyBp
biBDb3B5IEZpbGVzICovLAorCQkJCTE0NDdBRTkzMThGQjU4ODYwMEIzRDdGRiAvKiBmbGlja3Iu
b3BzIGluIENvcHkgRmlsZXMgKi8sCisJCQkJMTQ0N0FFOTkxOEZCNTlFMDAwQjNEN0ZGIC8qIGZs
aWNrcl9tZW1vcnlfd2FybmluZy5vcHMgaW4gQ29weSBGaWxlcyAqLywKIAkJCQkxNDg2NTAyQTFD
N0NGMUNDMDA4QUFCRkUgLyogbmltbGFuZy5vcHMgaW4gQ29weSBGaWxlcyAqLywKIAkJCQkxNDQ3
QUU5NDE4RkI1ODk0MDBCM0Q3RkYgLyogcmVkZGl0Lm9wcyBpbiBDb3B5IEZpbGVzICovLAotCQkJ
CTE0NDdBRTk5MThGQjU5RTAwMEIzRDdGRiAvKiBmbGlja3JfbWVtb3J5X3dhcm5pbmcub3BzIGlu
IENvcHkgRmlsZXMgKi8sCi0JCQkJMTQ0N0FFOUIxOEZCNTlFNjAwQjNEN0ZGIC8qIHRoZXZlcmdl
X21lbW9yeV93YXJuaW5nLm9wcyBpbiBDb3B5IEZpbGVzICovLAogCQkJCTE0NDdBRTlBMThGQjU5
RTMwMEIzRDdGRiAvKiByZWRkaXRfbWVtb3J5X3dhcm5pbmcub3BzIGluIENvcHkgRmlsZXMgKi8s
CiAJCQkJMTQ0N0FFOTUxOEZCNThBMzAwQjNEN0ZGIC8qIHRoZXZlcmdlLm9wcyBpbiBDb3B5IEZp
bGVzICovLAotCQkJCTE0NDdBRTkzMThGQjU4ODYwMEIzRDdGRiAvKiBmbGlja3Iub3BzIGluIENv
cHkgRmlsZXMgKi8sCi0JCQkJMTRDNTAwOTAxODQwMTg0MTAwN0E1MzFEIC8qIGZhY2Vib29rLm9w
cyBpbiBDb3B5IEZpbGVzICovLAorCQkJCTE0NDdBRTlCMThGQjU5RTYwMEIzRDdGRiAvKiB0aGV2
ZXJnZV9tZW1vcnlfd2FybmluZy5vcHMgaW4gQ29weSBGaWxlcyAqLywKIAkJCSk7CiAJCQluYW1l
ID0gIkNvcHkgRmlsZXMiOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CkBAIC0xMjAsNiArMTIxLDggQEAKIAkJNjVFNDAxQTUxQzY1N0E4NzAwM0M2RTlDIC8qIG5p
bWxhbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gbmltbGFuZy5oOyBwYXRo
ID0gTWFsbG9jQmVuY2gvbmltbGFuZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NUU0MDFBQTFDNzNCMDY4MDAzQzZFOUMgLyogYWxsb2NfZnJlZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBhbGxvY19mcmVlLmNwcDsgcGF0aCA9IE1hbGxvY0JlbmNo
L2FsbG9jX2ZyZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUU0MDFBQjFD
NzNCMDY4MDAzQzZFOUMgLyogYWxsb2NfZnJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBhbGxvY19mcmVlLmg7IHBhdGggPSBNYWxsb2NCZW5jaC9hbGxvY19mcmVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNzY4MTAxMUY4NTI5RUYwMDYxN0U0QyAvKiBN
ZW1vcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM3NjgxMDIxRjg1MjlFRjAwNjE3RTRD
IC8qIE1lbW9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAt
MTQ2LDkgKzE0OSw5IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CTE0RTExOTMzMTc3RjUxQUMwMDNBOEQxNSAvKiBCZW5jaG1hcmtzICovLAorCQkJCTE0NDdBRTg2
MThGQjRCNTEwMEIzRDdGRiAvKiBMaWJyYXJpZXMgKi8sCiAJCQkJMTQ0NTJDQUUxNzdEMjQ0NjAw
OTdFMDU3IC8qIE1hbGxvY0JlbmNoICovLAogCQkJCTE0Q0MzOTFCMThFQTY3MjIwMDRBRkUzNCAv
KiBtYm1hbGxvYyAqLywKLQkJCQkxNDQ3QUU4NjE4RkI0QjUxMDBCM0Q3RkYgLyogTGlicmFyaWVz
ICovLAogCQkJCTE0NDUyQ0FBMTc3RDI0NDYwMDk3RTA1NyAvKiBQcm9kdWN0cyAqLywKIAkJCSk7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTc0LDYgKzE3Nyw4IEBACiAJCQkJMTRD
NTAwOTExODQwM0RBMDAwN0E1MzFEIC8qIEludGVycHJldGVyLmNwcCAqLywKIAkJCQkxNEM1MDA5
MjE4NDAzREEwMDA3QTUzMUQgLyogSW50ZXJwcmV0ZXIuaCAqLywKIAkJCQkxNDQ1MkNBRjE3N0Qy
NDQ2MDA5N0UwNTcgLyogbWFpbi5jcHAgKi8sCisJCQkJRTM3NjgxMDExRjg1MjlFRjAwNjE3RTRD
IC8qIE1lbW9yeS5jcHAgKi8sCisJCQkJRTM3NjgxMDIxRjg1MjlFRjAwNjE3RTRDIC8qIE1lbW9y
eS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBNYWxsb2NCZW5jaDsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0yMDksMTAgKzIxNCwxMCBAQAogCQkJCTE0QzUwMDhCMTg0MDE2Q0YwMDdB
NTMxRCAvKiBmYWNlYm9vay5jcHAgKi8sCiAJCQkJMTRDNTAwOEMxODQwMTZDRjAwN0E1MzFEIC8q
IGZhY2Vib29rLmggKi8sCiAJCQkJMTRDNTAwOEUxODQwMTcyNjAwN0E1MzFEIC8qIGZhY2Vib29r
Lm9wcyAqLywKLQkJCQkxNDQ3QUU5NjE4RkI1OUQ5MDBCM0Q3RkYgLyogZmxpY2tyX21lbW9yeV93
YXJuaW5nLm9wcyAqLywKIAkJCQkxNDQ3QUU4NzE4RkI1ODQyMDBCM0Q3RkYgLyogZmxpY2tyLmNw
cCAqLywKIAkJCQkxNDQ3QUU4ODE4RkI1ODQyMDBCM0Q3RkYgLyogZmxpY2tyLmggKi8sCiAJCQkJ
MTQ0N0FFODkxOEZCNTg0MjAwQjNEN0ZGIC8qIGZsaWNrci5vcHMgKi8sCisJCQkJMTQ0N0FFOTYx
OEZCNTlEOTAwQjNEN0ZGIC8qIGZsaWNrcl9tZW1vcnlfd2FybmluZy5vcHMgKi8sCiAJCQkJMTQ0
NEFFOTExNzdFNzlCQjAwRjgwMzBBIC8qIGZyYWdtZW50LmNwcCAqLywKIAkJCQkxNDQ0QUU5MjE3
N0U3OUJCMDBGODAzMEEgLyogZnJhZ21lbnQuaCAqLywKIAkJCQkxNDk3NkVDNjE3N0UzNjQ5MDA2
QjgxOUEgLyogbGlzdC5jcHAgKi8sCkBAIC0yMjEsMjMgKzIyNiwyMyBAQAogCQkJCTE0NTFGQUVD
MThCMTRCNzEwMERCNkQ0NyAvKiBtZWRpdW0uaCAqLywKIAkJCQkxNDQ0QUU5NDE3N0U4REYyMDBG
ODAzMEEgLyogbWVzc2FnZS5jcHAgKi8sCiAJCQkJMTQ0NEFFOTUxNzdFOERGMjAwRjgwMzBBIC8q
IG1lc3NhZ2UuaCAqLywKLQkJCQkxNDEwNUU4MDE4RTEzRUVDMDAzQTEwNkUgLyogcmVhbGxvYy5j
cHAgKi8sCiAJCQkJNjVFNDAxQTQxQzY1N0E4NzAwM0M2RTlDIC8qIG5pbWxhbmcuY3BwICovLAog
CQkJCTY1RTQwMUE1MUM2NTdBODcwMDNDNkU5QyAvKiBuaW1sYW5nLmggKi8sCiAJCQkJMTQ4NjUw
MjkxQzdDRjE4MjAwOEFBQkZFIC8qIG5pbWxhbmcub3BzICovLAorCQkJCTE0MTA1RTgwMThFMTNF
RUMwMDNBMTA2RSAvKiByZWFsbG9jLmNwcCAqLywKIAkJCQkxNDEwNUU4MTE4RTEzRUVDMDAzQTEw
NkUgLyogcmVhbGxvYy5oICovLAotCQkJCTE0NDdBRTk3MThGQjU5RDkwMEIzRDdGRiAvKiByZWRk
aXRfbWVtb3J5X3dhcm5pbmcub3BzICovLAogCQkJCTE0NDdBRThBMThGQjU4NDIwMEIzRDdGRiAv
KiByZWRkaXQuY3BwICovLAogCQkJCTE0NDdBRThCMThGQjU4NDIwMEIzRDdGRiAvKiByZWRkaXQu
aCAqLywKIAkJCQkxNDQ3QUU4QzE4RkI1ODQyMDBCM0Q3RkYgLyogcmVkZGl0Lm9wcyAqLywKKwkJ
CQkxNDQ3QUU5NzE4RkI1OUQ5MDBCM0Q3RkYgLyogcmVkZGl0X21lbW9yeV93YXJuaW5nLm9wcyAq
LywKIAkJCQkxNEZDQTM1RjE5QTdDOTE3MDAxQ0ZEQTkgLyogc3RyZXNzLmNwcCAqLywKIAkJCQkx
NEZDQTM2MDE5QTdDOTE3MDAxQ0ZEQTkgLyogc3RyZXNzLmggKi8sCiAJCQkJMTREMEJGRjExQTZG
NEQzQjAwMTA5RjMxIC8qIHN0cmVzc19hbGlnbmVkLmNwcCAqLywKIAkJCQkxNEQwQkZGMjFBNkY0
RDNCMDAxMDlGMzEgLyogc3RyZXNzX2FsaWduZWQuaCAqLywKLQkJCQkxNDQ3QUU5ODE4RkI1OUQ5
MDBCM0Q3RkYgLyogdGhldmVyZ2VfbWVtb3J5X3dhcm5pbmcub3BzICovLAogCQkJCTE0NDdBRThE
MThGQjU4NDIwMEIzRDdGRiAvKiB0aGV2ZXJnZS5jcHAgKi8sCiAJCQkJMTQ0N0FFOEUxOEZCNTg0
MjAwQjNEN0ZGIC8qIHRoZXZlcmdlLmggKi8sCiAJCQkJMTQ0N0FFOEYxOEZCNTg0MjAwQjNEN0ZG
IC8qIHRoZXZlcmdlLm9wcyAqLywKKwkJCQkxNDQ3QUU5ODE4RkI1OUQ5MDBCM0Q3RkYgLyogdGhl
dmVyZ2VfbWVtb3J5X3dhcm5pbmcub3BzICovLAogCQkJCTE0OTc2RUNGMTc3RTRBRjcwMDZCODE5
QSAvKiB0cmVlLmNwcCAqLywKIAkJCQkxNDk3NkVEMDE3N0U0QUY3MDA2QjgxOUEgLyogdHJlZS5o
ICovLAogCQkJKTsKQEAgLTMyMywyOCArMzI4LDI5IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVp
bGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgK
LQkJCQkxNENFNEE2MDE3QkQzNTU4MDAyODhEQUEgLyogYmlnLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTE0OTc2RUQxMTc3RTRBRjcwMDZCODE5QSAvKiB0cmVlLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTE0NDRBRTk2MTc3RThERjIwMEY4MDMwQSAvKiBtZXNzYWdlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTY1RTQwMUFDMUM3M0IwNjgwMDNDNkU5QyAvKiBhbGxvY19mcmVlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTE0MTA1RTdGMThERjdENzMwMDNBMTA2RSAvKiBiYWxsb29uLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTE0OTc2RUNFMTc3RTNENjcwMDZCODE5QSAvKiBCZW5jaG1hcmsuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMTRDRTRBNjAxN0JEMzU1ODAwMjg4REFBIC8qIGJpZy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDQ1MkNFRjE3N0Q0NzExMDA5N0UwNTcgLyogY2h1cm4uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJMTQ0NTJDQjAxNzdEMjQ0NjAwOTdFMDU3IC8qIG1haW4uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJMTRGQ0EzNjExOUE3QzkxNzAwMUNGREE5IC8qIHN0cmVzcy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDk3NkVDQzE3N0UzQzg3MDA2QjgxOUEgLyogQ29tbWFu
ZExpbmUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTRFMTE5MzIxNzdFQ0M4QjAwM0E4RDE1IC8q
IENQVUNvdW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0QzUwMDhEMTg0MDE2Q0YwMDdBNTMx
RCAvKiBmYWNlYm9vay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ3QUU5MDE4RkI1ODQyMDBC
M0Q3RkYgLyogZmxpY2tyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0NDRBRTkzMTc3RTc5QkIw
MEY4MDMwQSAvKiBmcmFnbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNEM1MDA5MzE4NDAz
REEwMDA3QTUzMUQgLyogSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ5NzZF
QzgxNzdFMzY0OTAwNkI4MTlBIC8qIGxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTQ5NzZF
Q0MxNzdFM0M4NzAwNkI4MTlBIC8qIENvbW1hbmRMaW5lLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTY1RTQwMUE2MUM2NTdBODcwMDNDNkU5QyAvKiBuaW1sYW5nLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTE0NDdBRTkyMThGQjU4NDIwMEIzRDdGRiAvKiB0aGV2ZXJnZS5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQkxNEQwQkZGMzFBNkY0RDNCMDAxMDlGMzEgLyogc3RyZXNzX2FsaWduZWQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMTQ0NTJDQjAxNzdEMjQ0NjAwOTdFMDU3IC8qIG1haW4uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQ1MUZBRUQxOEIxNEI3MTAwREI2RDQ3IC8qIG1lZGl1bS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQkxNEM1MDA5MzE4NDAzREEwMDA3QTUzMUQgLyogSW50ZXJwcmV0
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTQ0N0FFOTExOEZCNTg0MjAwQjNEN0ZGIC8qIHJl
ZGRpdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxNEUxMTkzMjE3N0VDQzhCMDAzQThEMTUgLyog
Q1BVQ291bnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTQ0NEFFOTMxNzdFNzlCQjAwRjgwMzBB
IC8qIGZyYWdtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzNzY4MTAzMUY4NTI5RUYwMDYx
N0U0QyAvKiBNZW1vcnkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ0NEFFOTYxNzdFOERGMjAw
RjgwMzBBIC8qIG1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjVFNDAxQTYxQzY1N0E4
NzAwM0M2RTlDIC8qIG5pbWxhbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQxMDVFODIxOEUx
M0VFQzAwM0ExMDZFIC8qIHJlYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTQxMDVFN0Yx
OERGN0Q3MzAwM0ExMDZFIC8qIGJhbGxvb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTQ5NzZF
Q0UxNzdFM0Q2NzAwNkI4MTlBIC8qIEJlbmNobWFyay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkx
NDQ3QUU5MTE4RkI1ODQyMDBCM0Q3RkYgLyogcmVkZGl0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTE0RkNBMzYxMTlBN0M5MTcwMDFDRkRBOSAvKiBzdHJlc3MuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMTREMEJGRjMxQTZGNEQzQjAwMTA5RjMxIC8qIHN0cmVzc19hbGlnbmVkLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTE0NDdBRTkyMThGQjU4NDIwMEIzRDdGRiAvKiB0aGV2ZXJnZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkxNDk3NkVEMTE3N0U0QUY3MDA2QjgxOUEgLyogdHJlZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFs
bG9jQmVuY2gvQmVuY2htYXJrLmNwcCBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFs
bG9jQmVuY2gvQmVuY2htYXJrLmNwcAppbmRleCBkMmQ4NDJjMjM1YjY5YzMxNmY2YzdjYjJiYTA3
YWMyNTY2OTg3MTFjLi5iY2JkMjY4NTVlNzdmOTk2MzVkN2Q3MDcyYzhhMjI2MGM3NjVlNGU4IDEw
MDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL0JlbmNo
bWFyay5jcHAKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9C
ZW5jaG1hcmsuY3BwCkBAIC00MiwxNSArNDIsMTkgQEAKICNpbmNsdWRlICJzdHJlc3NfYWxpZ25l
ZC5oIgogI2luY2x1ZGUgInRoZXZlcmdlLmgiCiAjaW5jbHVkZSAidHJlZS5oIgotI2luY2x1ZGUg
PGRpc3BhdGNoL2Rpc3BhdGNoLmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGlv
c3RyZWFtPgotI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgotI2luY2x1ZGUgPG1hY2gvdGFza19pbmZv
Lmg+CiAjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5n
PgorI2luY2x1ZGUgPHN0cmluZ3MuaD4KICNpbmNsdWRlIDxzeXMvdGltZS5oPgogI2luY2x1ZGUg
PHRocmVhZD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpZmRl
ZiBfX0FQUExFX18KKyNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgorI2VuZGlmCiAKICNp
bmNsdWRlICJtYm1hbGxvYy5oIgogCkBAIC0xMzAsOSArMTM0LDcgQEAgc3RhdGljIHZvaWQgZGVh
bGxvY2F0ZUhlYXAodm9pZCoqKiBjaHVua3MsIHNpemVfdCBoZWFwU2l6ZSwgc2l6ZV90IGNodW5r
U2l6ZSwgc2kKIH0KIAogQmVuY2htYXJrOjpCZW5jaG1hcmsoQ29tbWFuZExpbmUmIGNvbW1hbmRM
aW5lKQotICAgIDogbV9iZW5jaG1hcmtQYWlyKCkKLSAgICAsIG1fZWxhcHNlZFRpbWUoKQotICAg
ICwgbV9jb21tYW5kTGluZShjb21tYW5kTGluZSkKKyAgICA6IG1fY29tbWFuZExpbmUoY29tbWFu
ZExpbmUpCiB7CiAgICAgY29uc3QgQmVuY2htYXJrUGFpciogYmVuY2htYXJrUGFpciA9IHN0ZDo6
ZmluZCgKICAgICAgICAgYmVuY2htYXJrUGFpcnMsIGJlbmNobWFya1BhaXJzICsgYmVuY2htYXJr
c1BhaXJzQ291bnQsIG1fY29tbWFuZExpbmUuYmVuY2htYXJrTmFtZSgpKTsKQEAgLTE1Niw2ICsx
NTgsNyBAQCB2b2lkIEJlbmNobWFyazo6cnVuT25jZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKKyNpZmRlZiBfX0FQUExFX18KICAgICBkaXNwYXRjaF9ncm91cF90IGdyb3VwID0gZGlzcGF0
Y2hfZ3JvdXBfY3JlYXRlKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNwdUNvdW50
KCk7ICsraSkgewpAQCAtMTY3LDYgKzE3MCwxNiBAQCB2b2lkIEJlbmNobWFyazo6cnVuT25jZSgp
CiAgICAgZGlzcGF0Y2hfZ3JvdXBfd2FpdChncm91cCwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsK
IAogICAgIGRpc3BhdGNoX3JlbGVhc2UoZ3JvdXApOworI2Vsc2UKKyAgICBzdGQ6OnZlY3Rvcjxz
dGQ6OnRocmVhZD4gdGhyZWFkczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNwdUNvdW50
KCk7ICsraSkgeworICAgICAgICB0aHJlYWRzLmVtcGxhY2VfYmFjayhbJl0geworICAgICAgICAg
ICAgbV9iZW5jaG1hcmtQYWlyLT5mdW5jdGlvbihtX2NvbW1hbmRMaW5lKTsKKyAgICAgICAgfSk7
CisgICAgfQorICAgIGZvciAoYXV0byYgdGhyZWFkIDogdGhyZWFkcykKKyAgICAgICAgdGhyZWFk
LmpvaW4oKTsKKyNlbmRpZgogfQogCiB2b2lkIEJlbmNobWFyazo6cnVuKCkKQEAgLTIxMiwxOCAr
MjI1LDMgQEAgZG91YmxlIEJlbmNobWFyazo6Y3VycmVudFRpbWVNUygpCiAgICAgcmV0dXJuIChu
b3cudHZfc2VjICogMTAwMC4wKSArIG5vdy50dl91c2VjIC8gMTAwMC4wOwogfQogCi1CZW5jaG1h
cms6Ok1lbW9yeSBCZW5jaG1hcms6OmN1cnJlbnRNZW1vcnlCeXRlcygpCi17Ci0gICAgTWVtb3J5
IG1lbW9yeTsKLQotICAgIHRhc2tfdm1faW5mb19kYXRhX3Qgdm1faW5mbzsKLSAgICBtYWNoX21z
Z190eXBlX251bWJlcl90IHZtX3NpemUgPSBUQVNLX1ZNX0lORk9fQ09VTlQ7Ci0gICAgaWYgKEtF
Uk5fU1VDQ0VTUyAhPSB0YXNrX2luZm8obWFjaF90YXNrX3NlbGYoKSwgVEFTS19WTV9JTkZPX1BV
UkdFQUJMRSwgKHRhc2tfaW5mb190KSgmdm1faW5mbyksICZ2bV9zaXplKSkgewotICAgICAgICBj
b3V0IDw8ICJGYWlsZWQgdG8gZ2V0IG1hY2ggdGFzayBpbmZvIiA8PCBlbmRsOwotICAgICAgICBl
eGl0KDEpOwotICAgIH0KLQotICAgIG1lbW9yeS5yZXNpZGVudCA9IHZtX2luZm8uaW50ZXJuYWwg
KyB2bV9pbmZvLmNvbXByZXNzZWQgLSB2bV9pbmZvLnB1cmdlYWJsZV92b2xhdGlsZV9wbWFwOwot
ICAgIG1lbW9yeS5yZXNpZGVudE1heCA9IHZtX2luZm8ucmVzaWRlbnRfc2l6ZV9wZWFrOwotICAg
IHJldHVybiBtZW1vcnk7Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0Jl
bmNoL01hbGxvY0JlbmNoL0JlbmNobWFyay5oIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5j
aC9NYWxsb2NCZW5jaC9CZW5jaG1hcmsuaAppbmRleCA5YTQ0OWI5MTQ0MDM2ODA1NGMwN2U0NGQ3
MDFhYzkzNzUyOTIxODczLi40YzgzZjEyOGQ2OTdmYjVjM2RiNTA0NDUyOGFkZmFiNWRiN2VmY2Y2
IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL0Jl
bmNobWFyay5oCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gv
QmVuY2htYXJrLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQmVuY2htYXJrX2gKIAogI2lu
Y2x1ZGUgIkNvbW1hbmRMaW5lLmgiCisjaW5jbHVkZSAiTWVtb3J5LmgiCiAjaW5jbHVkZSA8bWFw
PgogI2luY2x1ZGUgPHN0cmluZz4KIApAQCAtMzUsMzAgKzM2LDcgQEAgc3RydWN0IEJlbmNobWFy
a1BhaXI7CiAKIGNsYXNzIEJlbmNobWFyayB7CiBwdWJsaWM6Ci0gICAgc3RydWN0IE1lbW9yeSB7
Ci0gICAgICAgIE1lbW9yeSgpCi0gICAgICAgICAgICA6IHJlc2lkZW50KCkKLSAgICAgICAgICAg
ICwgcmVzaWRlbnRNYXgoKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IE1lbW9yeShzaXplX3QgcmVzaWRlbnQsIHNpemVfdCByZXNpZGVudE1heCkKLSAgICAgICAgICAg
IDogcmVzaWRlbnQocmVzaWRlbnQpCi0gICAgICAgICAgICAsIHJlc2lkZW50TWF4KHJlc2lkZW50
TWF4KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBNZW1vcnkgb3BlcmF0b3ItKGNv
bnN0IE1lbW9yeSYgb3RoZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBNZW1vcnko
cmVzaWRlbnQgLSBvdGhlci5yZXNpZGVudCwgcmVzaWRlbnRNYXggLSBvdGhlci5yZXNpZGVudE1h
eCk7Ci0gICAgICAgIH0KLSAgICAKLSAgICAgICAgc2l6ZV90IHJlc2lkZW50OwotICAgICAgICBz
aXplX3QgcmVzaWRlbnRNYXg7Ci0gICAgfTsKLQogICAgIHN0YXRpYyBkb3VibGUgY3VycmVudFRp
bWVNUygpOwotICAgIHN0YXRpYyBNZW1vcnkgY3VycmVudE1lbW9yeUJ5dGVzKCk7CiAKICAgICBC
ZW5jaG1hcmsoQ29tbWFuZExpbmUmKTsKICAgICAKQEAgLTc1LDEyICs1MywxMiBAQCBjbGFzcyBC
ZW5jaG1hcmsgewogCiAgICAgTWFwVHlwZSBtX21hcDsKIAotICAgIGNvbnN0IEJlbmNobWFya1Bh
aXIqIG1fYmVuY2htYXJrUGFpcjsKKyAgICBjb25zdCBCZW5jaG1hcmtQYWlyKiBtX2JlbmNobWFy
a1BhaXIgeyBudWxscHRyIH07CiAKICAgICBDb21tYW5kTGluZSYgbV9jb21tYW5kTGluZTsKIAog
ICAgIE1lbW9yeSBtX21lbW9yeTsKLSAgICBkb3VibGUgbV9lbGFwc2VkVGltZTsKKyAgICBkb3Vi
bGUgbV9lbGFwc2VkVGltZSB7IDAgfTsKIH07CiAKICNlbmRpZiAvLyBCZW5jaG1hcmtfaApkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9DTWFrZUxp
c3RzLnR4dCBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvQ01ha2VM
aXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNlMDAxMjcxMGZlYWVmODRlYzkzMWIzODgyZjBiMWFmN2Nj
ZWJiYQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFs
bG9jQmVuY2gvQ01ha2VMaXN0cy50eHQKQEAgLTAsMCArMSw2OSBAQAorYWRkX2xpYnJhcnkoc3lz
bWFsbG9jIFNIQVJFRCBtYm1hbGxvYy5jcHApCitzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoc3lzbWFs
bG9jIFBST1BFUlRJRVMgT1VUUFVUX05BTUUgIm1ibWFsbG9jIikKK3NldF90YXJnZXRfcHJvcGVy
dGllcyhzeXNtYWxsb2MgUFJPUEVSVElFUyBMSUJSQVJZX09VVFBVVF9ESVJFQ1RPUlkgJHtQUk9K
RUNUX0JJTkFSWV9ESVJ9L2xpYi9zeXN0ZW0vKQorCitzZXQoTUFMTE9DX0JFTkNIX1NPVVJDRVMK
KyAgICBCZW5jaG1hcmsuY3BwCisgICAgQ1BVQ291bnQuY3BwCisgICAgQ29tbWFuZExpbmUuY3Bw
CisgICAgSW50ZXJwcmV0ZXIuY3BwCisgICAgTWVtb3J5LmNwcAorICAgIGFsbG9jX2ZyZWUuY3Bw
CisgICAgYmFsbG9vbi5jcHAKKyAgICBiaWcuY3BwCisgICAgY2h1cm4uY3BwCisgICAgZmFjZWJv
b2suY3BwCisgICAgZmxpY2tyLmNwcAorICAgIGZyYWdtZW50LmNwcAorICAgIGxpc3QuY3BwCisg
ICAgbWFpbi5jcHAKKyAgICBtZWRpdW0uY3BwCisgICAgbWVzc2FnZS5jcHAKKyAgICBuaW1sYW5n
LmNwcAorICAgIHJlYWxsb2MuY3BwCisgICAgcmVkZGl0LmNwcAorICAgIHN0cmVzcy5jcHAKKyAg
ICBzdHJlc3NfYWxpZ25lZC5jcHAKKyAgICB0aGV2ZXJnZS5jcHAKKyAgICB0cmVlLmNwcAorKQor
CitzZXQoTUFMTE9DX0JFTkNIX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAiJHtCTUFMTE9DX0RJ
Un0iCisgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0iCisgICAgIiR7REVSSVZFRF9TT1VSQ0VTX0RJ
Un0iCisgICAgIiR7VEhJUkRQQVJUWV9ESVJ9IgorKQorCitzZXQoTUFMTE9DX0JFTkNIX0xJQlJB
UklFUworICAgICR7Q01BS0VfRExfTElCU30KKykKKworV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJ
TEVTX0lGX0VYSVNUUygpCisKK1dFQktJVF9XUkFQX1NPVVJDRUxJU1QoJHtNQUxMT0NfQkVOQ0hf
U09VUkNFU30pCisKKworaW5jbHVkZV9kaXJlY3Rvcmllcygke01BTExPQ19CRU5DSF9JTkNMVURF
X0RJUkVDVE9SSUVTfSkKK2FkZF9leGVjdXRhYmxlKE1hbGxvY0JlbmNoICR7TUFMTE9DX0JFTkNI
X1NPVVJDRVN9KQorU0VUKENNQUtFX1NLSVBfQlVJTERfUlBBVEggIFRSVUUpCit0YXJnZXRfbGlu
a19saWJyYXJpZXMoTWFsbG9jQmVuY2ggJHtDTUFLRV9USFJFQURfTElCU19JTklUfSAke01BTExP
Q19CRU5DSF9MSUJSQVJJRVN9IG1ibWFsbG9jKQorCithZGRfZGVwZW5kZW5jaWVzKE1hbGxvY0Jl
bmNoIHN5c21hbGxvYyBtYm1hbGxvYykKKworc2V0KE1BTExPQ19CRU5DSF9PUFMKKyAgICBmYWNl
Ym9vay5vcHMKKyAgICBmbGlja3Iub3BzCisgICAgZmxpY2tyX21lbW9yeV93YXJuaW5nLm9wcwor
ICAgIG5pbWxhbmcub3BzCisgICAgcmVkZGl0Lm9wcworICAgIHJlZGRpdF9tZW1vcnlfd2Fybmlu
Zy5vcHMKKyAgICB0aGV2ZXJnZS5vcHMKKyAgICB0aGV2ZXJnZV9tZW1vcnlfd2FybmluZy5vcHMK
KykKKworZmlsZShDT1BZCisgICAgJHtNQUxMT0NfQkVOQ0hfT1BTfQorICAgIERFU1RJTkFUSU9O
CisgICAgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9CispCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL0NQVUNvdW50LmNwcCBiL1BlcmZvcm1hbmNlVGVz
dHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvQ1BVQ291bnQuY3BwCmluZGV4IDBmMjAxNjBiOThl
MTIyYmUyMTJkODFjNGU2MTdjMGY4NDliYzc0MzAuLjMxZDZkMmQ4Mzk5YTAyMGFjNzBjZDhkODhl
ODJhODE4OGE1NGUyMGEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gv
TWFsbG9jQmVuY2gvQ1BVQ291bnQuY3BwCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVu
Y2gvTWFsbG9jQmVuY2gvQ1BVQ291bnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8
c3lzL3BhcmFtLmg+CiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgogI2luY2x1ZGUgPHN5cy90eXBl
cy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgogCiBzdGF0aWMgc2l6ZV90IGNvdW50OwogCkBAIC0z
Niw2ICszNyw3IEBAIHNpemVfdCBjcHVDb3VudCgpCiAgICAgaWYgKGNvdW50KQogICAgICAgICBy
ZXR1cm4gY291bnQ7CiAKKyNpZmRlZiBfX0FQUExFX18KICAgICBzaXplX3QgbGVuZ3RoID0gc2l6
ZW9mKGNvdW50KTsKICAgICBpbnQgbmFtZVtdID0gewogICAgICAgICAgICAgQ1RMX0hXLApAQCAt
NDQsNiArNDYsMTIgQEAgc2l6ZV90IGNwdUNvdW50KCkKICAgICBpbnQgc3lzY3RsUmVzdWx0ID0g
c3lzY3RsKG5hbWUsIHNpemVvZihuYW1lKSAvIHNpemVvZihpbnQpLCAmY291bnQsICZsZW5ndGgs
IDAsIDApOwogICAgIGlmIChzeXNjdGxSZXN1bHQgPCAwKQogICAgICAgICBhYm9ydCgpOworI2Vs
c2UKKyAgICBsb25nIHN5c2NvbmZSZXN1bHQgPSBzeXNjb25mKF9TQ19OUFJPQ0VTU09SU19PTkxO
KTsKKyAgICBpZiAoc3lzY29uZlJlc3VsdCA8IDApCisgICAgICAgIGFib3J0KCk7CisgICAgY291
bnQgPSBzeXNjb25mUmVzdWx0OworI2VuZGlmCiAKICAgICByZXR1cm4gY291bnQ7CiB9CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL0ludGVycHJl
dGVyLmNwcCBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvSW50ZXJw
cmV0ZXIuY3BwCmluZGV4IDdhMWJiOGYzODYzZjJhYmFkZWJmZTAwNmY4MTk2MTg1YWY3MGFiNzAu
LjhjNmNmM2Y2MzBjZDMzMzVhMzNiMzc5MTUzZWJiNDcwNWY3ZDFhZTMgMTAwNjQ0Ci0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvSW50ZXJwcmV0ZXIuY3BwCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvSW50ZXJwcmV0ZXIu
Y3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIHNpemVfdCBjb21wdXRlMnRvUG93ZXIodW5z
aWduZWQgbG9nMm4pCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBJbnRlcnByZXRlcjo6
ZG9NYWxsb2NPcChPcCBvcCwgVGhyZWFkSWQgdGhyZWFkSWQpCit2b2lkIEludGVycHJldGVyOjpk
b01hbGxvY09wKE9wIG9wLCBUaHJlYWRJZCkKIHsKICAgICBzd2l0Y2ggKG9wLm9wY29kZSkgewog
ICAgICAgICBjYXNlIG9wX21hbGxvYzogewpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9N
YWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9NZW1vcnkuY3BwIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxs
b2NCZW5jaC9NYWxsb2NCZW5jaC9NZW1vcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2OTU5NmVkOTQ2MDk5
MWQxYjY0OWEwMTY4N2RhYWNiYWJiN2Q2YjEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL01lbW9yeS5jcHAKQEAgLTAsMCArMSw4NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiTWVtb3J5LmgiCisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8c3RkbGliLmg+
CisKKyNpZmRlZiBfX0FQUExFX18KKyNpbmNsdWRlIDxtYWNoL21hY2guaD4KKyNpbmNsdWRlIDxt
YWNoL3Rhc2tfaW5mby5oPgorI2Vsc2UKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVu
aXN0ZC5oPgorI2VuZGlmCisKK01lbW9yeSBjdXJyZW50TWVtb3J5Qnl0ZXMoKQoreworICAgIE1l
bW9yeSBtZW1vcnk7CisKKyNpZmRlZiBfX0FQUExFX18KKyAgICB0YXNrX3ZtX2luZm9fZGF0YV90
IHZtX2luZm87CisgICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCB2bV9zaXplID0gVEFTS19WTV9J
TkZPX0NPVU5UOworICAgIGlmIChLRVJOX1NVQ0NFU1MgIT0gdGFza19pbmZvKG1hY2hfdGFza19z
ZWxmKCksIFRBU0tfVk1fSU5GT19QVVJHRUFCTEUsICh0YXNrX2luZm9fdCkoJnZtX2luZm8pLCAm
dm1fc2l6ZSkpIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJGYWlsZWQgdG8gZ2V0IG1hY2ggdGFz
ayBpbmZvIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIGV4aXQoMSk7CisgICAgfQorCisgICAgbWVt
b3J5LnJlc2lkZW50ID0gdm1faW5mby5pbnRlcm5hbCArIHZtX2luZm8uY29tcHJlc3NlZCAtIHZt
X2luZm8ucHVyZ2VhYmxlX3ZvbGF0aWxlX3BtYXA7CisgICAgbWVtb3J5LnJlc2lkZW50TWF4ID0g
dm1faW5mby5yZXNpZGVudF9zaXplX3BlYWs7CisjZWxzZQorICAgIEZJTEUqIGZpbGUgPSBmb3Bl
bigiL3Byb2Mvc2VsZi9zdGF0dXMiLCAiciIpOworCisgICAgYXV0byBmb3JFYWNoTGluZSA9IFtd
IChGSUxFKiBmaWxlLCBhdXRvIGZ1bmN0b3IpIHsKKyAgICAgICAgY2hhciogYnVmZmVyID0gbnVs
bHB0cjsKKyAgICAgICAgc2l6ZV90IHNpemUgPSAwOworICAgICAgICB3aGlsZSAoZ2V0bGluZSgm
YnVmZmVyLCAmc2l6ZSwgZmlsZSkgIT0gLTEpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoYnVmZmVy
LCBzaXplKTsKKyAgICAgICAgICAgIDo6ZnJlZShidWZmZXIpOyAvLyBCZSBjYXJlZnVsLiBnZXRs
aW5lJ3MgbWVtb3J5IGFsbG9jYXRpb24gaXMgZG9uZSBieSBzeXN0ZW0gbWFsbG9jLgorICAgICAg
ICAgICAgYnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHNpemUgPSAwOworICAgICAgICB9
CisgICAgfTsKKworICAgIHVuc2lnbmVkIGxvbmcgdm1IV00gPSAwOworICAgIHVuc2lnbmVkIGxv
bmcgdm1SU1MgPSAwOworICAgIHVuc2lnbmVkIGxvbmcgcnNzRmlsZSA9IDA7CisgICAgdW5zaWdu
ZWQgbG9uZyByc3NTaG1lbSA9IDA7CisgICAgZm9yRWFjaExpbmUoZmlsZSwgWyZdIChjaGFyKiBi
dWZmZXIsIHNpemVfdCkgeworICAgICAgICB1bnNpZ25lZCBsb25nIHNpemVJbktCID0gMDsKKyAg
ICAgICAgaWYgKHNzY2FuZihidWZmZXIsICJWbUhXTTogJWx1IGtCIiwgJnNpemVJbktCKSA9PSAx
KQorICAgICAgICAgICAgdm1IV00gPSBzaXplSW5LQiAqIDEwMjQ7CisgICAgICAgIGVsc2UgaWYg
KHNzY2FuZihidWZmZXIsICJWbVJTUzogJWx1IGtCIiwgJnNpemVJbktCKSA9PSAxKQorICAgICAg
ICAgICAgdm1SU1MgPSBzaXplSW5LQiAqIDEwMjQ7CisgICAgICAgIGVsc2UgaWYgKHNzY2FuZihi
dWZmZXIsICJSc3NGaWxlOiAlbHUga0IiLCAmc2l6ZUluS0IpID09IDEpCisgICAgICAgICAgICBy
c3NGaWxlID0gc2l6ZUluS0IgKiAxMDI0OworICAgICAgICBlbHNlIGlmIChzc2NhbmYoYnVmZmVy
LCAiUnNzU2htZW06ICVsdSBrQiIsICZzaXplSW5LQikgPT0gMSkKKyAgICAgICAgICAgIHJzc1No
bWVtID0gc2l6ZUluS0IgKiAxMDI0OworICAgIH0pOworICAgIGZjbG9zZShmaWxlKTsKKyAgICBt
ZW1vcnkucmVzaWRlbnQgPSB2bVJTUyAtIChyc3NGaWxlICsgcnNzU2htZW0pOworICAgIG1lbW9y
eS5yZXNpZGVudE1heCA9IHZtSFdNIC0gKHJzc0ZpbGUgKyByc3NTaG1lbSk7IC8vIFdlIGRvIG5v
dCBoYXZlIGFueSB3YXkgdG8gZ2V0IHRoZSBwZWFrIG9mIFJTUyBvZiBhbm9ueW1vdXMgcGFnZXMu
IEhlcmUsIHdlIHN1YnRyYWN0IFJTUyBvZiBmaWxlcyBhbmQgc2htZW0gdG8gZXN0aW1hdGUgdGhl
IHBlYWsgb2YgUlNTIG9mIGFub255bW91cyBwYWdlcy4KKyNlbmRpZgorICAgIHJldHVybiBtZW1v
cnk7Cit9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0Jl
bmNoL01lbW9yeS5oIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9N
ZW1vcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41YzdlOTFlZDljZjk2YzVlMDViNDU5NDk3M2M4MDg3YzJkMmY3
NDhhCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxs
b2NCZW5jaC9NZW1vcnkuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8Y3N0
ZGRlZj4KKworc3RydWN0IE1lbW9yeSB7CisgICAgTWVtb3J5KCkKKyAgICAgICAgOiByZXNpZGVu
dCgpCisgICAgICAgICwgcmVzaWRlbnRNYXgoKQorICAgIHsKKyAgICB9CisKKyAgICBNZW1vcnko
c2l6ZV90IHJlc2lkZW50LCBzaXplX3QgcmVzaWRlbnRNYXgpCisgICAgICAgIDogcmVzaWRlbnQo
cmVzaWRlbnQpCisgICAgICAgICwgcmVzaWRlbnRNYXgocmVzaWRlbnRNYXgpCisgICAgeworICAg
IH0KKworICAgIE1lbW9yeSBvcGVyYXRvci0oY29uc3QgTWVtb3J5JiBvdGhlcikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBNZW1vcnkocmVzaWRlbnQgLSBvdGhlci5yZXNpZGVudCwgcmVzaWRlbnRN
YXggLSBvdGhlci5yZXNpZGVudE1heCk7CisgICAgfQorCisgICAgc2l6ZV90IHJlc2lkZW50Owor
ICAgIHNpemVfdCByZXNpZGVudE1heDsKK307CisKK01lbW9yeSBjdXJyZW50TWVtb3J5Qnl0ZXMo
KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gv
YmFsbG9vbi5jcHAgYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL2Jh
bGxvb24uY3BwCmluZGV4IDhjMGQ0M2YzMWMxNmFlZGE4ZDMxOTVjMzIzYzE4ZTgxNWFlMTQyMDMu
LjA3MGU4NjAxYTAxNTA5MGU5NTU5ZmZkOGE3MTY3MTVkMzkxNjQxNmUgMTAwNjQ0Ci0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvYmFsbG9vbi5jcHAKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9iYWxsb29uLmNwcApAQCAt
MjMsMTMgKzIzLDE0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW5jbHVkZSAiQmVuY2ht
YXJrLmgiCiAjaW5jbHVkZSAiQ1BVQ291bnQuaCIKKyNpbmNsdWRlICJNZW1vcnkuaCIKICNpbmNs
dWRlICJiYWxsb29uLmgiCiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8Y2hyb25vPgogI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdHJpbmdzLmg+
CiAKICNpbmNsdWRlICJtYm1hbGxvYy5oIgogCkBAIC02MSw3ICs2Miw3IEBAIHZvaWQgYmVuY2ht
YXJrX2JhbGxvb24oQ29tbWFuZExpbmUmKQogICAgIC8vIENvbnZlcnRzIGJ5dGVzIHRvIHRpbWUg
LS0gZm9yIHJlcG9ydGluZydzIHNha2UgLS0gYnkgd2FpdGluZyBhIHdoaWxlIHVudGlsCiAgICAg
Ly8gdGhlIGhlYXAgc2hyaW5rcyBiYWNrIGRvd24uIFRoaXMgaXNuJ3QgZ3JlYXQgZm9yIHBvb2xp
bmcgd2l0aCBvdGhlcgogICAgIC8vIGJlbmNobWFya3MgaW4gYSBnZW9tZXRyaWMgbWVhbiBvZiB0
aHJvdWdocHV0LCBidXQgaXQncyBPSyBmb3IgYmFzaWMgdGVzdGluZy4KLSAgICB3aGlsZSAoQmVu
Y2htYXJrOjpjdXJyZW50TWVtb3J5Qnl0ZXMoKS5yZXNpZGVudCA+IDIgKiBzdGVhZHlTaXplCisg
ICAgd2hpbGUgKGN1cnJlbnRNZW1vcnlCeXRlcygpLnJlc2lkZW50ID4gMiAqIHN0ZWFkeVNpemUK
ICAgICAgICAgJiYgc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkgLSBzdGFydCA8IDgg
KiBiZW5jaG1hcmtUaW1lKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RlYWR5
LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBzdGVhZHlbaV0gPSBtYm1hbGxvYyhjaHVua1Np
emUpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5j
aC9tYm1hbGxvYy5jcHAgYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNo
L21ibWFsbG9jLmNwcAppbmRleCA2MjUzN2I4NjliNjhjYjEzZjI3YTlkMjdjZjcwYmYwODBkZWFk
OTQ4Li42YTg5ZTY0MGEyMzFlZmYwYmU4YTcwYWYxNTYwZjk0ZDVhYWFjMzhhIDEwMDY0NAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL21ibWFsbG9jLmNwcAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL21ibWFsbG9jLmNw
cApAQCAtMjYsNyArMjYsMTIgQEAKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RkaW8u
aD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2lmZGVmIF9fQVBQTEVfXwogI2ltcG9ydCA8bWFs
bG9jL21hbGxvYy5oPgorI2Vsc2UKKyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNlbmRpZgogCiBleHRl
cm4gIkMiIHsKIApAQCAtMzgsNyArNDMsOCBAQCB2b2lkKiBtYm1hbGxvYyhzaXplX3Qgc2l6ZSkK
IHZvaWQqIG1ibWVtYWxpZ24oc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCiB7CiAgICAg
dm9pZCogcmVzdWx0OwotICAgIHBvc2l4X21lbWFsaWduKCZyZXN1bHQsIGFsaWdubWVudCwgc2l6
ZSk7CisgICAgaWYgKHBvc2l4X21lbWFsaWduKCZyZXN1bHQsIGFsaWdubWVudCwgc2l6ZSkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTU0LDcg
KzYwLDExIEBAIHZvaWQqIG1icmVhbGxvYyh2b2lkKiBwLCBzaXplX3QsIHNpemVfdCBuZXdTaXpl
KQogCiB2b2lkIG1ic2NhdmVuZ2UoKQogeworI2lmZGVmIF9fQVBQTEVfXwogICAgIG1hbGxvY196
b25lX3ByZXNzdXJlX3JlbGllZihudWxscHRyLCAwKTsKKyNlbHNlCisgICAgbWFsbG9jX3RyaW0o
MCk7CisjZW5kaWYKIH0KIAogfSAvLyBleHRlcm4gIkMiCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL21lc3NhZ2UuY3BwIGIvUGVyZm9ybWFuY2VU
ZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9tZXNzYWdlLmNwcAppbmRleCAxYjVmOWQwYmYx
YTkxYzA2MDkxNTVlOGE1OTM5ZTFmYmJmZmQzOTliLi43NjMzZjlmMWY3YzgxOTA4NGMyOTM3NDA5
OGI2MjFlNWExOTEzYmRkIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNo
L01hbGxvY0JlbmNoL21lc3NhZ2UuY3BwCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVu
Y2gvTWFsbG9jQmVuY2gvbWVzc2FnZS5jcHAKQEAgLTI1LDkgKzI1LDEzIEBACiAKICNpbmNsdWRl
ICJDUFVDb3VudC5oIgogI2luY2x1ZGUgIm1lc3NhZ2UuaCIKLSNpbmNsdWRlIDxkaXNwYXRjaC9k
aXNwYXRjaC5oPgorI2luY2x1ZGUgPGNvbmRpdGlvbl92YXJpYWJsZT4KKyNpbmNsdWRlIDxkZXF1
ZT4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHN0
ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNpbmNsdWRlIDx0aHJlYWQ+CiAKICNpbmNs
dWRlICJtYm1hbGxvYy5oIgogCkBAIC0xMTAsNiArMTE0LDY4IEBAIGNsYXNzIE1lc3NhZ2Ugewog
CiB9IC8vIG5hbWVzcGFjZQogCitjbGFzcyBXb3JrUXVldWUgeworcHVibGljOgorICAgIFdvcmtR
dWV1ZSgpCisgICAgeworICAgICAgICBtX3RocmVhZCA9IHN0ZDo6dGhyZWFkKFsmXSB7CisgICAg
ICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiB0YXJnZXQ7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9jb25kaXRpb24ud2FpdChsb2NrZXIsIFsmXSB7IHJldHVybiAhbV9xdWV1ZS5lbXB0
eSgpOyB9KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBxdWV1ZWQgPSBtX3F1ZXVlLmZyb250
KCk7CisgICAgICAgICAgICAgICAgICAgIG1fcXVldWUucG9wX2Zyb250KCk7CisgICAgICAgICAg
ICAgICAgICAgIGlmICghcXVldWVkKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBzdGQ6Om1vdmUocXVldWVkKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgdGFyZ2V0KCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0pOworICAgIH0KKworICAgIH5Xb3JrUXVldWUoKSB7CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gbG9ja2VyKG1fbXV0ZXgpOworICAgICAg
ICAgICAgbV9xdWV1ZS5wdXNoX2JhY2sobnVsbHB0cik7CisgICAgICAgICAgICBtX2NvbmRpdGlv
bi5ub3RpZnlfb25lKCk7CisgICAgICAgIH0KKyAgICAgICAgbV90aHJlYWQuam9pbigpOworICAg
IH0KKworICAgIHZvaWQgZGlzcGF0Y2hBc3luYyhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gdGFyZ2V0
KQorICAgIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBsb2NrZXIobV9t
dXRleCk7CisgICAgICAgIG1fcXVldWUucHVzaF9iYWNrKHRhcmdldCk7CisgICAgICAgIG1fY29u
ZGl0aW9uLm5vdGlmeV9vbmUoKTsKKyAgICB9CisKKyAgICB2b2lkIGRpc3BhdGNoU3luYyhzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gdGFyZ2V0KQorICAgIHsKKyAgICAgICAgc3RkOjptdXRleCBzeW5j
TXV0ZXg7CisgICAgICAgIHN0ZDo6Y29uZGl0aW9uX3ZhcmlhYmxlIHN5bmNDb25kaXRpb247CisK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBsb2NrZXIoc3luY011dGV4KTsK
KyAgICAgICAgYm9vbCBkb25lID0gZmFsc2U7CisgICAgICAgIGRpc3BhdGNoQXN5bmMoWyZdIHsK
KyAgICAgICAgICAgIHRhcmdldCgpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gbG9ja2VyKHN5bmNNdXRleCk7CisgICAgICAgICAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICAgICAgc3luY0NvbmRpdGlvbi5ub3RpZnlf
b25lKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICBzeW5jQ29uZGl0aW9u
LndhaXQobG9ja2VyLCBbJl0geyByZXR1cm4gZG9uZTsgfSk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIHN0ZDo6bXV0ZXggbV9tdXRleDsKKyAgICBzdGQ6OmNvbmRpdGlvbl92YXJpYWJsZSBtX2Nv
bmRpdGlvbjsKKyAgICBzdGQ6OmRlcXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbV9xdWV1ZTsK
KyAgICBzdGQ6OnRocmVhZCBtX3RocmVhZDsKK307CisKIHZvaWQgYmVuY2htYXJrX21lc3NhZ2Vf
b25lKENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkKIHsKICAgICBpZiAoY29tbWFuZExpbmUuaXNQ
YXJhbGxlbCgpKQpAQCAtMTE4LDI0ICsxODQsMjAgQEAgdm9pZCBiZW5jaG1hcmtfbWVzc2FnZV9v
bmUoQ29tbWFuZExpbmUmIGNvbW1hbmRMaW5lKQogICAgIGNvbnN0IHNpemVfdCB0aW1lcyA9IDIw
NDg7CiAgICAgY29uc3Qgc2l6ZV90IHF1YW50dW0gPSAxNjsKIAotICAgIGRpc3BhdGNoX3F1ZXVl
X3QgcXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIm1lc3NhZ2UiLCAwKTsKLQorICAgIFdv
cmtRdWV1ZSB3b3JrUXVldWU7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0aW1lczsgaSAr
PSBxdWFudHVtKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgcXVhbnR1bTsgKytq
KSB7CiAgICAgICAgICAgICBNZXNzYWdlKiBtZXNzYWdlID0gbmV3IE1lc3NhZ2U7Ci0gICAgICAg
ICAgICBkaXNwYXRjaF9hc3luYyhxdWV1ZSwgXnsKKyAgICAgICAgICAgIHdvcmtRdWV1ZS5kaXNw
YXRjaEFzeW5jKFttZXNzYWdlXSB7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGhhc2ggPSBtZXNz
YWdlLT5oYXNoKCk7CiAgICAgICAgICAgICAgICAgaWYgKGhhc2gpCiAgICAgICAgICAgICAgICAg
ICAgIGFib3J0KCk7CiAgICAgICAgICAgICAgICAgZGVsZXRlIG1lc3NhZ2U7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfQotICAgICAgICBkaXNwYXRjaF9zeW5jKHF1ZXVlLCBeeyB9KTsKKyAg
ICAgICAgd29ya1F1ZXVlLmRpc3BhdGNoU3luYyhbXSB7IH0pOwogICAgIH0KLQotICAgIGRpc3Bh
dGNoX3N5bmMocXVldWUsIF57IH0pOwotCi0gICAgZGlzcGF0Y2hfcmVsZWFzZShxdWV1ZSk7Cisg
ICAgd29ya1F1ZXVlLmRpc3BhdGNoU3luYyhbXSB7IH0pOwogfQogCiB2b2lkIGJlbmNobWFya19t
ZXNzYWdlX21hbnkoQ29tbWFuZExpbmUmIGNvbW1hbmRMaW5lKQpAQCAtMTQ3LDE1ICsyMDksMTUg
QEAgdm9pZCBiZW5jaG1hcmtfbWVzc2FnZV9tYW55KENvbW1hbmRMaW5lJiBjb21tYW5kTGluZSkK
ICAgICBjb25zdCBzaXplX3QgcXVhbnR1bSA9IDE2OwogCiAgICAgY29uc3Qgc2l6ZV90IHF1ZXVl
Q291bnQgPSBjcHVDb3VudCgpIC0gMTsKLSAgICBkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlc1txdWV1
ZUNvdW50XTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya1F1ZXVlPiBxdWV1ZXNbcXVldWVDb3Vu
dF07CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWV1ZUNvdW50OyArK2kpCi0gICAgICAg
IHF1ZXVlc1tpXSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgibWVzc2FnZSIsIDApOworICAgICAg
ICBxdWV1ZXNbaV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtRdWV1ZT4oKTsKIAogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdGltZXM7IGkgKz0gcXVhbnR1bSkgewogICAgICAgICBmb3IgKHNp
emVfdCBqID0gMDsgaiA8IHF1YW50dW07ICsraikgewogICAgICAgICAgICAgZm9yIChzaXplX3Qg
ayA9IDA7IGsgPCBxdWV1ZUNvdW50OyArK2spIHsKICAgICAgICAgICAgICAgICBNZXNzYWdlKiBt
ZXNzYWdlID0gbmV3IE1lc3NhZ2U7Ci0gICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMocXVl
dWVzW2tdLCBeeworICAgICAgICAgICAgICAgIHF1ZXVlc1trXS0+ZGlzcGF0Y2hBc3luYyhbbWVz
c2FnZV0gewogICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGFzaCA9IG1lc3NhZ2UtPmhhc2go
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc2gpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBhYm9ydCgpOwpAQCAtMTY1LDEyICsyMjcsOSBAQCB2b2lkIGJlbmNobWFya19tZXNzYWdlX21h
bnkoQ29tbWFuZExpbmUmIGNvbW1hbmRMaW5lKQogICAgICAgICB9CiAKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBxdWV1ZUNvdW50OyArK2kpCi0gICAgICAgICAgICBkaXNwYXRjaF9z
eW5jKHF1ZXVlc1tpXSwgXnsgfSk7CisgICAgICAgICAgICBxdWV1ZXNbaV0tPmRpc3BhdGNoU3lu
YyhbXSB7IH0pOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVldWVDb3Vu
dDsgKytpKQotICAgICAgICBkaXNwYXRjaF9zeW5jKHF1ZXVlc1tpXSwgXnsgfSk7Ci0KLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHF1ZXVlQ291bnQ7ICsraSkKLSAgICAgICAgZGlzcGF0Y2hf
cmVsZWFzZShxdWV1ZXNbaV0pOworICAgICAgICBxdWV1ZXNbaV0tPmRpc3BhdGNoU3luYyhbXSB7
IH0pOwogfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NC
ZW5jaC9uaW1sYW5nLmNwcCBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVu
Y2gvbmltbGFuZy5jcHAKaW5kZXggYWUxZWIzNzhlOGM2OTYwOWZlY2IxZjgxZGE5MTYzNGY3YTNj
NGNmNS4uMzM1ZjA3ZTYwOWYyMTQ3NjQ5YWMyNDVmYjM1YmNiNDU2NzE3OTA3NyAxMDA2NDQKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9uaW1sYW5nLmNwcAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL25pbWxhbmcuY3Bw
CkBAIC01MSw2ICs1MSw2IEBAIHZvaWQgYmVuY2htYXJrX25pbWxhbmcoQ29tbWFuZExpbmUmIGNv
bW1hbmRMaW5lKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGltZXM7ICsraSkKICAgICAg
ICAgaW50ZXJwcmV0ZXIucnVuKCk7CiAKLSAgICAgICAgaWYgKGNvbW1hbmRMaW5lLmRldGFpbGVk
UmVwb3J0KCkpCi0gICAgICAgICAgICBpbnRlcnByZXRlci5kZXRhaWxlZFJlcG9ydCgpOworICAg
IGlmIChjb21tYW5kTGluZS5kZXRhaWxlZFJlcG9ydCgpKQorICAgICAgICBpbnRlcnByZXRlci5k
ZXRhaWxlZFJlcG9ydCgpOwogfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NC
ZW5jaC9NYWxsb2NCZW5jaC9zdHJlc3MuY3BwIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5j
aC9NYWxsb2NCZW5jaC9zdHJlc3MuY3BwCmluZGV4IDZiYzFiYTMxNTJiZDkzYmUwMmNkMzU2MWNi
MzljZTJkYmZhMGJkOWYuLjFjMTQ3NDdiYmMyYTM3ZjhjMDYzYmVjZTE3NTA1Mzc1MmI5NjhlYTgg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvc3Ry
ZXNzLmNwcAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL3N0
cmVzcy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDUFVDb3VudC5oIgogI2luY2x1
ZGUgInN0cmVzcy5oIgogI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPGNhc3NlcnQ+CiAjaW5j
bHVkZSA8Y2hyb25vPgogI2luY2x1ZGUgPGNzdGRsaWI+CiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAt
ODYsNiArODcsOCBAQCBjbGFzcyBTaXplU3RyZWFtIHsKICAgICAgICAgICAgIHJldHVybiByYW5k
b20oKSAlIGxhcmdlTWF4OwogICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KDAp
OworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL3N0cmVzc19hbGlnbmVkLmNwcCBi
L1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvc3RyZXNzX2FsaWduZWQu
Y3BwCmluZGV4IDQ5YjkxYmMzZmFlMWMxNjhmZjg0ZjkwODA5ZDU2NDRlZjhmMjEzODMuLjg5Yzhl
YTIzYTEwZWZjMDg0NWFhYjA3YzI2NWUxYjE0MjM4YzFjZTkgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvc3RyZXNzX2FsaWduZWQuY3BwCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvc3RyZXNzX2FsaWduZWQu
Y3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ1BVQ291bnQuaCIKICNpbmNsdWRlICJz
dHJlc3NfYWxpZ25lZC5oIgogI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPGNhc3NlcnQ+CiAj
aW5jbHVkZSA8Y2hyb25vPgogI2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUgPGNzdGRsaWI+CkBA
IC04OSw2ICs5MCw4IEBAIGNsYXNzIFNpemVTdHJlYW0gewogICAgICAgICAgICAgcmV0dXJuIHJh
bmRvbSgpICUgbGFyZ2VNYXg7CiAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBhc3NlcnQo
MCk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvcnVuLW1hbGxvYy1iZW5jaG1hcmtzIGIvUGVyZm9y
bWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9ydW4tbWFsbG9jLWJlbmNobWFya3MKaW5kZXggYjViZDBh
MDgwNzQ4MTFmYzY2MDY2ODM0YTdmN2ViNTM4MmQ5NGFjZi4uZWVkYTVkOWNlODE2MWNlZDI3NGY0
MzQwODA3ZDNmNjhlOTk4M2Y3NSAxMDA3NTUKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NC
ZW5jaC9ydW4tbWFsbG9jLWJlbmNobWFya3MKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NC
ZW5jaC9ydW4tbWFsbG9jLWJlbmNobWFya3MKQEAgLTcsNiArNywyOSBAQCByZXF1aXJlICdwYXRo
bmFtZScKICRiaW5EaXIgPSAiI3tGaWxlLmV4cGFuZF9wYXRoKEZpbGUuZGlybmFtZShfX0ZJTEVf
XykpfSIKICRwcm9kdWN0RGlyID0gYHBlcmwgLWUgJ3VzZSBsaWIgXCIjeyRiaW5EaXJ9Ly4uLy4u
L1Rvb2xzL1NjcmlwdHNcIjsgdXNlIHdlYmtpdGRpcnM7IHByaW50IHByb2R1Y3REaXIoKSdgCiAK
K2RlZiBkZXRlcm1pbmVPUworICAgIGNhc2UgUmJDb25maWc6OkNPTkZJR1siaG9zdF9vcyJdCisg
ICAgd2hlbiAvZGFyd2luL2kKKyAgICAgICAgImRhcndpbiIKKyAgICB3aGVuIC9saW51eC9pCisg
ICAgICAgICJsaW51eCIKKyAgICB3aGVuIC9tc3dpbnxtaW5nd3xjeWd3aW4vCisgICAgICAgICJ3
aW5kb3dzIgorICAgIGVsc2UKKyAgICAgICAgJHN0ZGVyci5wdXRzICJXYXJuaW5nOiB1bmFibGUg
dG8gZGV0ZXJtaW5lIGhvc3Qgb3BlcmF0aW5nIHN5c3RlbSIKKyAgICAgICAgbmlsCisgICAgZW5k
CitlbmQKKworJGhvc3RPUyA9IGRldGVybWluZU9TIHVubGVzcyAkaG9zdE9TCiskY21ha2UgPSBm
YWxzZQorCitpZiAkaG9zdE9TID09ICdkYXJ3aW4nCisgICAgJGxpYnJhcnlFeHRlbnNpb24gPSAi
ZHlsaWIiCitlbHNlCisgICAgJGxpYnJhcnlFeHRlbnNpb24gPSAic28iCitlbmQKKwogJGJlbmNo
bWFya3NfYWxsID0gWwogICAgICMgU2luZ2xlLXRocmVhZGVkIGJlbmNobWFya3MuCiAgICAgImNo
dXJuIiwKQEAgLTkxLDcgKzExNCw4IEBAIGRlZiB1c2FnZQogCXB1dHMgIk9wdGlvbnM6IgogICAg
IHB1dHMKICAgICBwdXRzICIgICAgLS1iZW5jaG1hcmsgPGJlbmNobWFyaz4gICAgICBTZWxlY3Qg
YSBzaW5nbGUgYmVuY2htYXJrIHRvIHJ1biBpbnN0ZWFkIG9mIHRoZSBmdWxsIHN1aXRlLiIKLSAg
ICBwdXRzICIgICAgLS1oZWFwIDxoZWFwPiAgICAgICAgICAgU2V0IGEgYmFzZWxpbmUgaGVhcCBz
aXplLiIKKyAgICBwdXRzICIgICAgLS1oZWFwIDxoZWFwPiAgICAgICAgICAgICAgICBTZXQgYSBi
YXNlbGluZSBoZWFwIHNpemUuIgorICAgIHB1dHMgIiAgICAtLWNtYWtlICAgICAgICAgICAgICAg
ICAgICAgIFNwZWNpZnkgaWYgYnVpbGQgZGlyZWN0b3J5IGxheW91dCBpcyBmb3IgQ01ha2UuIgog
ICAgIHB1dHMKIGVuZAogCkBAIC0xMDEsNyArMTI1LDcgQEAgY2xhc3MgRHlsaWIKIAogICAgIGRl
ZiBpbml0aWFsaXplKG5hbWUsIHBhdGgpCiAgICAgICAgIEBuYW1lID0gbmFtZQotICAgICAgICBA
cGF0aCA9IEZpbGUuam9pbihwYXRoLCAibGlibWJtYWxsb2MuZHlsaWIiKQorICAgICAgICBAcGF0
aCA9IEZpbGUuam9pbihwYXRoLCAibGlibWJtYWxsb2MuI3skbGlicmFyeUV4dGVuc2lvbn0iKQog
ICAgIGVuZAogZW5kCiAKQEAgLTIxNCw2ICsyMzgsNyBAQCBlbmQKIGRlZiBwYXJzZU9wdGlvbnMK
ICAgICBHZXRvcHRMb25nLm5ldygKICAgICAgICAgWyctLWJlbmNobWFyaycsIEdldG9wdExvbmc6
OlJFUVVJUkVEX0FSR1VNRU5UXSwKKyAgICAgICAgWyctLWNtYWtlJywgR2V0b3B0TG9uZzo6Tk9f
QVJHVU1FTlRdLAogICAgICAgICBbJy0tbWVtb3J5JywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRd
LAogICAgICAgICBbJy0tbWVtb3J5X3dhcm5pbmcnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0s
CiAgICAgICAgIFsnLS1oZWFwJywgR2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLApAQCAt
MjI3LDYgKzI1Miw4IEBAIGRlZiBwYXJzZU9wdGlvbnMKICAgICAgICAgICAgICRiZW5jaG1hcmtz
ID0gJGJlbmNobWFya3NfbWVtb3J5CiAgICAgICAgIHdoZW4gJy0tbWVtb3J5X3dhcm5pbmcnCiAg
ICAgICAgICAgICAkYmVuY2htYXJrcyA9ICRiZW5jaG1hcmtzX21lbW9yeV93YXJuaW5nCisgICAg
ICAgIHdoZW4gJy0tY21ha2UnCisgICAgICAgICAgICAkY21ha2UgPSB0cnVlCiAgICAgICAgIHdo
ZW4gJy0taGVhcCcKICAgICAgICAgICAgICRoZWFwID0gYXJnCiAgICAgICAgIHdoZW4gJy0taGVs
cCcKQEAgLTIzNyw2ICsyNjQsMTYgQEAgZGVmIHBhcnNlT3B0aW9ucwogICAgICAgICBlbmQKICAg
ICB9CiAKKyAgICBpZiAkY21ha2UKKyAgICAgICAgJGxpYnJhcnlEaXIgPSAiI3skcHJvZHVjdERp
cn0vbGliIgorICAgICAgICAkc3lzdGVtTWFsbG9jTGlicmFyeURpciA9ICIjeyRwcm9kdWN0RGly
fS9saWIvc3lzdGVtIgorICAgICAgICAkYmluYXJ5RGlyID0gIiN7JHByb2R1Y3REaXJ9L2JpbiIK
KyAgICBlbHNlCisgICAgICAgICRsaWJyYXJ5RGlyID0gJHByb2R1Y3REaXIKKyAgICAgICAgJGJp
bmFyeURpciA9ICRwcm9kdWN0RGlyCisgICAgICAgICRzeXN0ZW1NYWxsb2NMaWJyYXJ5RGlyID0g
JHByb2R1Y3REaXIKKyAgICBlbmQKKwogICAgIGlmIEFSR1YubGVuZ3RoIDwgMQogICAgICAgICBw
dXRzICJFcnJvcjogTm8gZHlsaWIgc3BlY2lmaWVkLiIKICAgICAgICAgZXhpdCAxCkBAIC0yNDYs
OSArMjgzLDkgQEAgZGVmIHBhcnNlT3B0aW9ucwogICAgIEFSR1YuZWFjaCB7CiAgICAgICAgIHwg
YXJnIHwKICAgICAgICAgaWYgYXJnID09ICJTeXN0ZW1NYWxsb2MiCi0gICAgICAgICAgICBkeWxp
YiA9IER5bGliLm5ldygiU3lzdGVtTWFsbG9jIiwgJHByb2R1Y3REaXIpCisgICAgICAgICAgICBk
eWxpYiA9IER5bGliLm5ldygiU3lzdGVtTWFsbG9jIiwgJHN5c3RlbU1hbGxvY0xpYnJhcnlEaXIp
CiAgICAgICAgIGVsc2lmIGFyZyA9PSAiTmFub01hbGxvYyIKLSAgICAgICAgICAgIGR5bGliID0g
RHlsaWIubmV3KCJOYW5vTWFsbG9jIiwgJHByb2R1Y3REaXIpCisgICAgICAgICAgICBkeWxpYiA9
IER5bGliLm5ldygiTmFub01hbGxvYyIsICRsaWJyYXJ5RGlyKQogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBuYW1lID0gYXJnLnNwbGl0KCI6IilbMF0KICAgICAgICAgICAgIHBhdGggPSBhcmcu
c3BsaXQoIjoiKVsxXQpAQCAtMjg4LDEwICszMjUsMTEgQEAgZGVmIHJ1bkJlbmNobWFya3MoZHls
aWJzKQogCiAgICAgICAgICAgICAkc3RkZXJyLnByaW50ICJcclJVTk5JTkcgI3tkeWxpYi5uYW1l
fTogI3tiZW5jaG1hcmt9Li4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiAgICAg
ICAgICAgICBlbnYgPSAiRFlMRF9MSUJSQVJZX1BBVEg9JyN7UGF0aG5hbWUubmV3KGR5bGliLnBh
dGgpLmRpcm5hbWV9JyAiCisgICAgICAgICAgICBlbnYgKz0gIkxEX0xJQlJBUllfUEFUSD0nI3tQ
YXRobmFtZS5uZXcoZHlsaWIucGF0aCkuZGlybmFtZX0nICIKICAgICAgICAgICAgIGlmIGR5bGli
Lm5hbWUgPT0gIk5hbm9NYWxsb2MiCiAgICAgICAgICAgICAgICAgZW52ICs9ICJNYWxsb2NOYW5v
Wm9uZT0xICIKICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgaW5wdXQgPSAiY2QgJyN7JHBy
b2R1Y3REaXJ9JzsgI3tlbnZ9ICcjeyRwcm9kdWN0RGlyfS9NYWxsb2NCZW5jaCcgLS1iZW5jaG1h
cmsgI3tiZW5jaG1hcmt9IC0taGVhcCAjeyRoZWFwfX0iCisgICAgICAgICAgICBpbnB1dCA9ICJj
ZCAnI3skcHJvZHVjdERpcn0nOyAje2Vudn0gJyN7JGJpbmFyeURpcn0vTWFsbG9jQmVuY2gnIC0t
YmVuY2htYXJrICN7YmVuY2htYXJrfSAtLWhlYXAgI3skaGVhcH19IgogICAgICAgICAgICAgb3V0
cHV0ID1gI3tpbnB1dH1gCiAgICAgICAgICAgICBzcGxpdE91dHB1dCA9IG91dHB1dC5zcGxpdCgi
XG4iKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322682</attachid>
            <date>2017-10-04 09:39:55 -0700</date>
            <delta_ts>2017-10-04 21:06:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177856-20171004183953.patch</filename>
            <type>text/plain</type>
            <size>40821</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggZjgwMzE4ZTMzMTI5NDEy
NjUzZjBjNjY4Mjg4OTE0ODg5NDkzMjYxYi4uNjFmOGQ1YWRmOGZlOWM1NDc4OWNmMGE4MzBlOGQ1
NWVlMTU0NjM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTEwLTA0ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtMaW51eF0gUG9y
dCBNYWxsb2NCZW5jaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc3ODU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxNy0xMC0wMiAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbTGludXhdIEVuYWJsZSBHaWdhY2FnZSBp
biB4NjQgTGludXggZW52aXJvbm1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKaW5kZXggYmY2MDRjZTA0
MjI1YTA4ZjRjMmYyYjUyNjFmMjgzMjEzMmY3M2RlOS4uM2ZhYjY5ZjBhZDVmZmQwZjk4NzEyMjA5
ZmVmMWVmNmVmYTU5NGIzOCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKQEAgLTM3LDMgKzM3LDcgQEAg
aW5jbHVkZV9kaXJlY3Rvcmllcygke2JtYWxsb2NfSU5DTFVERV9ESVJFQ1RPUklFU30pCiBhZGRf
bGlicmFyeShibWFsbG9jIFNUQVRJQyAke2JtYWxsb2NfU09VUkNFU30pCiB0YXJnZXRfbGlua19s
aWJyYXJpZXMoYm1hbGxvYyAke2JtYWxsb2NfTElCUkFSSUVTfSkKIHNldF90YXJnZXRfcHJvcGVy
dGllcyhibWFsbG9jIFBST1BFUlRJRVMgQ09NUElMRV9ERUZJTklUSU9OUyAiQlVJTERJTkdfYm1h
bGxvYyIpCisKK2FkZF9saWJyYXJ5KG1ibWFsbG9jIFNIQVJFRCBibWFsbG9jL21ibWFsbG9jLmNw
cCkKK3RhcmdldF9saW5rX2xpYnJhcmllcyhtYm1hbGxvYyBibWFsbG9jICR7Q01BS0VfVEhSRUFE
X0xJQlNfSU5JVH0gJHtibWFsbG9jX0xJQlJBUklFU30pCitzZXRfdGFyZ2V0X3Byb3BlcnRpZXMo
bWJtYWxsb2MgUFJPUEVSVElFUyBDT01QSUxFX0RFRklOSVRJT05TICJCVUlMRElOR19tYm1hbGxv
YyIpCmRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CmluZGV4IDY1
NThhNWU2YmJjNTcyNmMyYzM1ODBjNjAwZWM1MzQwODMyMDdhMDIuLjU4ZTUyMzI2M2RhZGI1Y2Qx
ZjlmZmExOGE0MWM2NjdjYzIxMzU1OWUgMTAwNjQ0Ci0tLSBhL0NNYWtlTGlzdHMudHh0CisrKyBi
L0NNYWtlTGlzdHMudHh0CkBAIC0xNzcsNiArMTc3LDggQEAgaWYgKEVOQUJMRV9UT09MUykKICAg
ICBhZGRfc3ViZGlyZWN0b3J5KFRvb2xzKQogZW5kaWYgKCkKIAorYWRkX3N1YmRpcmVjdG9yeShQ
ZXJmb3JtYW5jZVRlc3RzKQorCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFByaW50IHRoZSBm
ZWF0dXJlcyBsaXN0IGxhc3QsIGZvciBtYXhpbXVtIHZpc2liaWxpdHkuCiAjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggYmMwYzJi
NWZjYjJjOGNjYzA1MGQwNTQ0M2QyMGU1MzI0MzAxNDE1ZS4uY2YzOGVkMjNhZDJiYjFkNGQxMWM2
NjlhMjM3ZGJjNjk5NmQ2ZTU4NCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTEwLTA0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtMaW51eF0gUG9ydCBNYWxsb2NCZW5jaAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3ODU2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKwogMjAxNy0xMC0wNCAgTWlndWVsIEdvbWV6ICA8bWFnb21lekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIEFkZCBhbmltYXRpb24gc3VwcG9ydCBmb3IgV2ViUCBpbWFnZXMKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQ01ha2VMaXN0cy50eHQgYi9QZXJmb3JtYW5jZVRlc3RzL0NNYWtl
TGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmNjBiOTQ4ZGU1NGQ1MGE4MWEzYTUwOWRmZjk3MWRlNmVi
YWFkOWMKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NNYWtlTGlzdHMudHh0
CkBAIC0wLDAgKzEsNSBAQAoraWYgKE5PVCBVU0VfU1lTVEVNX01BTExPQykKKyAgICBhZGRfc3Vi
ZGlyZWN0b3J5KE1hbGxvY0JlbmNoKQorZW5kaWYgKCkKKworV0VCS0lUX0lOQ0xVREVfQ09ORklH
X0ZJTEVTX0lGX0VYSVNUUygpCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxv
ZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJjYWI5MDk4MjhjOTFhYWVlM2I1
MmQ5OTIzYjM2MWMyYTYxMmU5MWEuLjNlYjc5NTllOTdkNWNmMGMwYjA1YjAzMzFlN2NmODdiOTdm
NDgwMWEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTctMTAtMDQgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0xpbnV4XSBQb3J0
IE1hbGxvY0JlbmNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc4NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXZSB3b3VsZCBsaWtlIHRvIG9wdGltaXplIGxvY2tpbmcgaW4gYm1hbGxvYyBpbiBMaW51
eCBieSB1c2luZyBmdXRleCBBUElzLiBTbyB3ZSBzaG91bGQgaGF2ZQorICAgICAgICB0aGUgd2F5
IHRvIGVuc3VyZSB0aGlzIGFjdHVhbGx5IGltcHJvdmVzIC8gZG9lcyBub3QgcmVncmVzcyB0aGUg
cGVyZm9ybWFuY2UuCisKKyAgICAgICAgVGhpcyBwYXRjaCBwb3J0cyBNYWxsb2NCZW5jaCB0byBM
aW51eCB0byBtZWFzdXJlL2Vuc3VyZSB0aGUgZWZmZWN0IG9mIGJtYWxsb2MgcGF0Y2ggaW4gTGlu
dXguCisKKyAgICAgICAgV2hpbGUgd2UgcmVwbGFjZSB0aGUgZGlzcGF0Y2ggc2VyaWFsIHF1ZXVl
IGluIG1lc3NhZ2UuY3BwLCB3ZSBzdGlsbCB1c2UgbGliZGlzcGF0Y2ggaW4gQmVuY2htYXJrLmNw
cAorICAgICAgICBzaW5jZSB3ZSBkbyBub3QgaGF2ZSBwcmlvcml0eSBtZWNoYW5pc20gaW4gQysr
MTEgdGhyZWFkaW5nIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIFdlIGFsc28gZXh0ZW5kIHJ1
bi1tYWxsb2MtYmVuY2htYXJrcyB0byBhY2NlcHQgY21ha2Ugc3R5bGUgbGF5b3V0IG9mIGJ1aWxk
IHByb2R1Y3QgZGlyZWN0b3J5LgorICAgICAgICBBbmQgd2UgYWxzbyBzdXBwb3J0IGJ1aWxkaW5n
IE1hbGxvY0JlbmNoIGluIENNYWtlIGVudmlyb25tZW50IGluY2x1ZGluZyBDTWFrZSBNYWMgcG9y
dHMuCisgICAgICAgIEN1cnJlbnRseSwgd2UgZG8gbm90IHN1cHBvcnQgV2luZG93cyB5ZXQuCisK
KyAgICAgICAgQmFzZWQgb24gdGhlIG1lYXN1cmVtZW50LCB3ZSBjYW4gc2F5IHRoZSBmb2xsb3dp
bmcgb2JzZXJ2YXRpb24uIGdsaWJjJ3MgbWFsbG9jIHBlcmZvcm1hbmNlIGlzIG5vdAorICAgICAg
ICBzbyBiYWQuIFdoaWxlIGJtYWxsb2Mgc2hvd3MgMy44eCAoaW4gZ2VvbWVhbikgcGVyZm9ybWFu
Y2UgaW1wcm92ZW1lbnQsIGJtYWxsb2MgaW4gTGludXggc2hvd3MgMi4weAorICAgICAgICBpbXBy
b3ZlbWVudC4gU2luY2UgYm90aCBudW1iZXJzIGluIGJtYWxsb2MgYXJlIHNpbWlsYXIsIHdlIGNh
biB0aGluayB0aGF0IGJtYWxsb2MncyBvcHRpbWl6YXRpb24gaXMKKyAgICAgICAgYWN0dWFsbHkg
d29ya2luZyBpbiBMaW51eCB0b28uIEFuZCBldmVuIHRob3VnaCBnbGliYydzIG1hbGxvYyBwZXJv
Zm1ybmFjZSBpcyBub3Qgc28gYmFkLCBibWFsbG9jCisgICAgICAgIHN0aWxsIG9mZmVycyBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBNYWxsb2NCZW5jaC9DTWFrZUxpc3RzLnR4dDogQWRkZWQuCisgICAgICAgICog
TWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBNYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9CZW5jaG1hcmsuY3BwOgorICAgICAgICAoQmVu
Y2htYXJrOjpCZW5jaG1hcmspOgorICAgICAgICAoQmVuY2htYXJrOjpydW5PbmNlKToKKyAgICAg
ICAgKEJlbmNobWFyazo6Y3VycmVudE1lbW9yeUJ5dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
YWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9CZW5jaG1hcmsuaDoKKyAgICAgICAgKEJlbmNobWFyazo6
TWVtb3J5OjpNZW1vcnkpOiBEZWxldGVkLgorICAgICAgICAoQmVuY2htYXJrOjpNZW1vcnk6Om9w
ZXJhdG9yLSk6IERlbGV0ZWQuCisgICAgICAgICogTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvQ01h
a2VMaXN0cy50eHQ6IEFkZGVkLgorICAgICAgICAqIE1hbGxvY0JlbmNoL01hbGxvY0JlbmNoL0NQ
VUNvdW50LmNwcDoKKyAgICAgICAgKGNwdUNvdW50KToKKyAgICAgICAgKiBNYWxsb2NCZW5jaC9N
YWxsb2NCZW5jaC9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChJbnRlcnByZXRlcjo6ZG9NYWxs
b2NPcCk6CisgICAgICAgICogTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvTWVtb3J5LmNwcDogQWRk
ZWQuCisgICAgICAgIChjdXJyZW50TWVtb3J5Qnl0ZXMpOgorICAgICAgICAqIE1hbGxvY0JlbmNo
L01hbGxvY0JlbmNoL01lbW9yeS5oOiBDb3BpZWQgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL01hbGxv
Y0JlbmNoL01hbGxvY0JlbmNoL0NQVUNvdW50LmNwcC4KKyAgICAgICAgKE1lbW9yeTo6TWVtb3J5
KToKKyAgICAgICAgKE1lbW9yeTo6b3BlcmF0b3ItKToKKyAgICAgICAgKiBNYWxsb2NCZW5jaC9N
YWxsb2NCZW5jaC9iYWxsb29uLmNwcDoKKyAgICAgICAgKGJlbmNobWFya19iYWxsb29uKToKKyAg
ICAgICAgKiBNYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9tYm1hbGxvYy5jcHA6CisgICAgICAgICog
TWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvbWVzc2FnZS5jcHA6CisgICAgICAgIChXb3JrUXVldWU6
OldvcmtRdWV1ZSk6CisgICAgICAgIChXb3JrUXVldWU6On5Xb3JrUXVldWUpOgorICAgICAgICAo
V29ya1F1ZXVlOjpkaXNwYXRjaEFzeW5jKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2hT
eW5jKToKKyAgICAgICAgKGJlbmNobWFya19tZXNzYWdlX29uZSk6CisgICAgICAgIChiZW5jaG1h
cmtfbWVzc2FnZV9tYW55KToKKyAgICAgICAgKiBNYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9uaW1s
YW5nLmNwcDoKKyAgICAgICAgKGJlbmNobWFya19uaW1sYW5nKToKKyAgICAgICAgKiBNYWxsb2NC
ZW5jaC9NYWxsb2NCZW5jaC9zdHJlc3MuY3BwOgorICAgICAgICAoU2l6ZVN0cmVhbTo6bmV4dCk6
CisgICAgICAgICogTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvc3RyZXNzX2FsaWduZWQuY3BwOgor
ICAgICAgICAqIE1hbGxvY0JlbmNoL3J1bi1tYWxsb2MtYmVuY2htYXJrczoKKwogMjAxNy0wOS0y
NiAgTWF0aGlhcyBCeW5lbnMgIDxtYXRoaWFzQHFpd2kuYmU+CiAKICAgICAgICAgU3BlZWRvbWV0
ZXI6IGVuc3VyZSBhbGwgVG9kb01WQyB0ZXN0cyB1c2UgdGhlIGNvbXBsZXRlIGxhdGVzdCBDU1MK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvQ01ha2VMaXN0cy50eHQg
Yi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhjYmE3YjY0ZmJkMTE3MDZkM2ViMmJkNGZlYzAyNTE1ZDA3OWMzNDkKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL0NNYWtlTGlzdHMudHh0CkBAIC0wLDAg
KzEgQEAKK2FkZF9zdWJkaXJlY3RvcnkoTWFsbG9jQmVuY2gpCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMmJlMzZjYmRiNDY1ZGMxZWIxMzE1ODNhNDM5YTUxZjc5N2M5
ZDUzYi4uMzQxNmY4MTdmNmZkZGI1ZmY5NTJmYzBjNTM1Mzk0NWYwZWI2OTdjZSAxMDA2NDQKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVu
Y2gueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDAsNiArNDAsNyBAQAogCQkxNEZDQTM2
MTE5QTdDOTE3MDAxQ0ZEQTkgLyogc3RyZXNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RkNBMzVGMTlBN0M5MTcwMDFDRkRBOSAvKiBzdHJlc3Mu
Y3BwICovOyB9OwogCQk2NUU0MDFBNjFDNjU3QTg3MDAzQzZFOUMgLyogbmltbGFuZy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUU0MDFBNDFDNjU3
QTg3MDAzQzZFOUMgLyogbmltbGFuZy5jcHAgKi87IH07CiAJCTY1RTQwMUFDMUM3M0IwNjgwMDND
NkU5QyAvKiBhbGxvY19mcmVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1RTQwMUFBMUM3M0IwNjgwMDNDNkU5QyAvKiBhbGxvY19mcmVlLmNwcCAq
LzsgfTsKKwkJRTM3NjgxMDMxRjg1MjlFRjAwNjE3RTRDIC8qIE1lbW9yeS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc2ODEwMTFGODUyOUVGMDA2
MTdFNEMgLyogTWVtb3J5LmNwcCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ5LDE0
ICs1MCwxNCBAQAogCQkJZHN0UGF0aCA9ICIiOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJ
CQlmaWxlcyA9ICgKKwkJCQkxNEM1MDA5MDE4NDAxODQxMDA3QTUzMUQgLyogZmFjZWJvb2sub3Bz
IGluIENvcHkgRmlsZXMgKi8sCisJCQkJMTQ0N0FFOTMxOEZCNTg4NjAwQjNEN0ZGIC8qIGZsaWNr
ci5vcHMgaW4gQ29weSBGaWxlcyAqLywKKwkJCQkxNDQ3QUU5OTE4RkI1OUUwMDBCM0Q3RkYgLyog
ZmxpY2tyX21lbW9yeV93YXJuaW5nLm9wcyBpbiBDb3B5IEZpbGVzICovLAogCQkJCTE0ODY1MDJB
MUM3Q0YxQ0MwMDhBQUJGRSAvKiBuaW1sYW5nLm9wcyBpbiBDb3B5IEZpbGVzICovLAogCQkJCTE0
NDdBRTk0MThGQjU4OTQwMEIzRDdGRiAvKiByZWRkaXQub3BzIGluIENvcHkgRmlsZXMgKi8sCi0J
CQkJMTQ0N0FFOTkxOEZCNTlFMDAwQjNEN0ZGIC8qIGZsaWNrcl9tZW1vcnlfd2FybmluZy5vcHMg
aW4gQ29weSBGaWxlcyAqLywKLQkJCQkxNDQ3QUU5QjE4RkI1OUU2MDBCM0Q3RkYgLyogdGhldmVy
Z2VfbWVtb3J5X3dhcm5pbmcub3BzIGluIENvcHkgRmlsZXMgKi8sCiAJCQkJMTQ0N0FFOUExOEZC
NTlFMzAwQjNEN0ZGIC8qIHJlZGRpdF9tZW1vcnlfd2FybmluZy5vcHMgaW4gQ29weSBGaWxlcyAq
LywKIAkJCQkxNDQ3QUU5NTE4RkI1OEEzMDBCM0Q3RkYgLyogdGhldmVyZ2Uub3BzIGluIENvcHkg
RmlsZXMgKi8sCi0JCQkJMTQ0N0FFOTMxOEZCNTg4NjAwQjNEN0ZGIC8qIGZsaWNrci5vcHMgaW4g
Q29weSBGaWxlcyAqLywKLQkJCQkxNEM1MDA5MDE4NDAxODQxMDA3QTUzMUQgLyogZmFjZWJvb2su
b3BzIGluIENvcHkgRmlsZXMgKi8sCisJCQkJMTQ0N0FFOUIxOEZCNTlFNjAwQjNEN0ZGIC8qIHRo
ZXZlcmdlX21lbW9yeV93YXJuaW5nLm9wcyBpbiBDb3B5IEZpbGVzICovLAogCQkJKTsKIAkJCW5h
bWUgPSAiQ29weSBGaWxlcyI7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKQEAgLTEyMCw2ICsxMjEsOCBAQAogCQk2NUU0MDFBNTFDNjU3QTg3MDAzQzZFOUMgLyog
bmltbGFuZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBuaW1sYW5nLmg7IHBh
dGggPSBNYWxsb2NCZW5jaC9uaW1sYW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTY1RTQwMUFBMUM3M0IwNjgwMDNDNkU5QyAvKiBhbGxvY19mcmVlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGFsbG9jX2ZyZWUuY3BwOyBwYXRoID0gTWFsbG9jQmVu
Y2gvYWxsb2NfZnJlZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1RTQwMUFC
MUM3M0IwNjgwMDNDNkU5QyAvKiBhbGxvY19mcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IGFsbG9jX2ZyZWUuaDsgcGF0aCA9IE1hbGxvY0JlbmNoL2FsbG9jX2ZyZWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM3NjgxMDExRjg1MjlFRjAwNjE3RTRDIC8q
IE1lbW9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZW1vcnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzc2ODEwMjFGODUyOUVGMDA2MTdF
NEMgLyogTWVtb3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBA
IC0xNDYsOSArMTQ5LDkgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJ
CQkJMTRFMTE5MzMxNzdGNTFBQzAwM0E4RDE1IC8qIEJlbmNobWFya3MgKi8sCisJCQkJMTQ0N0FF
ODYxOEZCNEI1MTAwQjNEN0ZGIC8qIExpYnJhcmllcyAqLywKIAkJCQkxNDQ1MkNBRTE3N0QyNDQ2
MDA5N0UwNTcgLyogTWFsbG9jQmVuY2ggKi8sCiAJCQkJMTRDQzM5MUIxOEVBNjcyMjAwNEFGRTM0
IC8qIG1ibWFsbG9jICovLAotCQkJCTE0NDdBRTg2MThGQjRCNTEwMEIzRDdGRiAvKiBMaWJyYXJp
ZXMgKi8sCiAJCQkJMTQ0NTJDQUExNzdEMjQ0NjAwOTdFMDU3IC8qIFByb2R1Y3RzICovLAogCQkJ
KTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzQsNiArMTc3LDggQEAKIAkJCQkx
NEM1MDA5MTE4NDAzREEwMDA3QTUzMUQgLyogSW50ZXJwcmV0ZXIuY3BwICovLAogCQkJCTE0QzUw
MDkyMTg0MDNEQTAwMDdBNTMxRCAvKiBJbnRlcnByZXRlci5oICovLAogCQkJCTE0NDUyQ0FGMTc3
RDI0NDYwMDk3RTA1NyAvKiBtYWluLmNwcCAqLywKKwkJCQlFMzc2ODEwMTFGODUyOUVGMDA2MTdF
NEMgLyogTWVtb3J5LmNwcCAqLywKKwkJCQlFMzc2ODEwMjFGODUyOUVGMDA2MTdFNEMgLyogTWVt
b3J5LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IE1hbGxvY0JlbmNoOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKQEAgLTIwOSwxMCArMjE0LDEwIEBACiAJCQkJMTRDNTAwOEIxODQwMTZDRjAw
N0E1MzFEIC8qIGZhY2Vib29rLmNwcCAqLywKIAkJCQkxNEM1MDA4QzE4NDAxNkNGMDA3QTUzMUQg
LyogZmFjZWJvb2suaCAqLywKIAkJCQkxNEM1MDA4RTE4NDAxNzI2MDA3QTUzMUQgLyogZmFjZWJv
b2sub3BzICovLAotCQkJCTE0NDdBRTk2MThGQjU5RDkwMEIzRDdGRiAvKiBmbGlja3JfbWVtb3J5
X3dhcm5pbmcub3BzICovLAogCQkJCTE0NDdBRTg3MThGQjU4NDIwMEIzRDdGRiAvKiBmbGlja3Iu
Y3BwICovLAogCQkJCTE0NDdBRTg4MThGQjU4NDIwMEIzRDdGRiAvKiBmbGlja3IuaCAqLywKIAkJ
CQkxNDQ3QUU4OTE4RkI1ODQyMDBCM0Q3RkYgLyogZmxpY2tyLm9wcyAqLywKKwkJCQkxNDQ3QUU5
NjE4RkI1OUQ5MDBCM0Q3RkYgLyogZmxpY2tyX21lbW9yeV93YXJuaW5nLm9wcyAqLywKIAkJCQkx
NDQ0QUU5MTE3N0U3OUJCMDBGODAzMEEgLyogZnJhZ21lbnQuY3BwICovLAogCQkJCTE0NDRBRTky
MTc3RTc5QkIwMEY4MDMwQSAvKiBmcmFnbWVudC5oICovLAogCQkJCTE0OTc2RUM2MTc3RTM2NDkw
MDZCODE5QSAvKiBsaXN0LmNwcCAqLywKQEAgLTIyMSwyMyArMjI2LDIzIEBACiAJCQkJMTQ1MUZB
RUMxOEIxNEI3MTAwREI2RDQ3IC8qIG1lZGl1bS5oICovLAogCQkJCTE0NDRBRTk0MTc3RThERjIw
MEY4MDMwQSAvKiBtZXNzYWdlLmNwcCAqLywKIAkJCQkxNDQ0QUU5NTE3N0U4REYyMDBGODAzMEEg
LyogbWVzc2FnZS5oICovLAotCQkJCTE0MTA1RTgwMThFMTNFRUMwMDNBMTA2RSAvKiByZWFsbG9j
LmNwcCAqLywKIAkJCQk2NUU0MDFBNDFDNjU3QTg3MDAzQzZFOUMgLyogbmltbGFuZy5jcHAgKi8s
CiAJCQkJNjVFNDAxQTUxQzY1N0E4NzAwM0M2RTlDIC8qIG5pbWxhbmcuaCAqLywKIAkJCQkxNDg2
NTAyOTFDN0NGMTgyMDA4QUFCRkUgLyogbmltbGFuZy5vcHMgKi8sCisJCQkJMTQxMDVFODAxOEUx
M0VFQzAwM0ExMDZFIC8qIHJlYWxsb2MuY3BwICovLAogCQkJCTE0MTA1RTgxMThFMTNFRUMwMDNB
MTA2RSAvKiByZWFsbG9jLmggKi8sCi0JCQkJMTQ0N0FFOTcxOEZCNTlEOTAwQjNEN0ZGIC8qIHJl
ZGRpdF9tZW1vcnlfd2FybmluZy5vcHMgKi8sCiAJCQkJMTQ0N0FFOEExOEZCNTg0MjAwQjNEN0ZG
IC8qIHJlZGRpdC5jcHAgKi8sCiAJCQkJMTQ0N0FFOEIxOEZCNTg0MjAwQjNEN0ZGIC8qIHJlZGRp
dC5oICovLAogCQkJCTE0NDdBRThDMThGQjU4NDIwMEIzRDdGRiAvKiByZWRkaXQub3BzICovLAor
CQkJCTE0NDdBRTk3MThGQjU5RDkwMEIzRDdGRiAvKiByZWRkaXRfbWVtb3J5X3dhcm5pbmcub3Bz
ICovLAogCQkJCTE0RkNBMzVGMTlBN0M5MTcwMDFDRkRBOSAvKiBzdHJlc3MuY3BwICovLAogCQkJ
CTE0RkNBMzYwMTlBN0M5MTcwMDFDRkRBOSAvKiBzdHJlc3MuaCAqLywKIAkJCQkxNEQwQkZGMTFB
NkY0RDNCMDAxMDlGMzEgLyogc3RyZXNzX2FsaWduZWQuY3BwICovLAogCQkJCTE0RDBCRkYyMUE2
RjREM0IwMDEwOUYzMSAvKiBzdHJlc3NfYWxpZ25lZC5oICovLAotCQkJCTE0NDdBRTk4MThGQjU5
RDkwMEIzRDdGRiAvKiB0aGV2ZXJnZV9tZW1vcnlfd2FybmluZy5vcHMgKi8sCiAJCQkJMTQ0N0FF
OEQxOEZCNTg0MjAwQjNEN0ZGIC8qIHRoZXZlcmdlLmNwcCAqLywKIAkJCQkxNDQ3QUU4RTE4RkI1
ODQyMDBCM0Q3RkYgLyogdGhldmVyZ2UuaCAqLywKIAkJCQkxNDQ3QUU4RjE4RkI1ODQyMDBCM0Q3
RkYgLyogdGhldmVyZ2Uub3BzICovLAorCQkJCTE0NDdBRTk4MThGQjU5RDkwMEIzRDdGRiAvKiB0
aGV2ZXJnZV9tZW1vcnlfd2FybmluZy5vcHMgKi8sCiAJCQkJMTQ5NzZFQ0YxNzdFNEFGNzAwNkI4
MTlBIC8qIHRyZWUuY3BwICovLAogCQkJCTE0OTc2RUQwMTc3RTRBRjcwMDZCODE5QSAvKiB0cmVl
LmggKi8sCiAJCQkpOwpAQCAtMzIzLDI4ICszMjgsMjkgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAotCQkJCTE0Q0U0QTYwMTdCRDM1NTgwMDI4OERBQSAvKiBiaWcuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJMTQ5NzZFRDExNzdFNEFGNzAwNkI4MTlBIC8qIHRyZWUuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJMTQ0NEFFOTYxNzdFOERGMjAwRjgwMzBBIC8qIG1lc3NhZ2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNjVFNDAxQUMxQzczQjA2ODAwM0M2RTlDIC8qIGFsbG9jX2ZyZWUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMTQxMDVFN0YxOERGN0Q3MzAwM0ExMDZFIC8qIGJhbGxvb24uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMTQ5NzZFQ0UxNzdFM0Q2NzAwNkI4MTlBIC8qIEJlbmNobWFyay5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkxNENFNEE2MDE3QkQzNTU4MDAyODhEQUEgLyogYmlnLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDUyQ0VGMTc3RDQ3MTEwMDk3RTA1NyAvKiBjaHVybi5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQkxNDQ1MkNCMDE3N0QyNDQ2MDA5N0UwNTcgLyogbWFpbi5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQkxNEZDQTM2MTE5QTdDOTE3MDAxQ0ZEQTkgLyogc3RyZXNz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0OTc2RUNDMTc3RTNDODcwMDZCODE5QSAvKiBDb21t
YW5kTGluZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNEUxMTkzMjE3N0VDQzhCMDAzQThEMTUg
LyogQ1BVQ291bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRDNTAwOEQxODQwMTZDRjAwN0E1
MzFEIC8qIGZhY2Vib29rLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDdBRTkwMThGQjU4NDIw
MEIzRDdGRiAvKiBmbGlja3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ0NEFFOTMxNzdFNzlC
QjAwRjgwMzBBIC8qIGZyYWdtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0QzUwMDkzMTg0
MDNEQTAwMDdBNTMxRCAvKiBJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDk3
NkVDODE3N0UzNjQ5MDA2QjgxOUEgLyogbGlzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxNDk3
NkVDQzE3N0UzQzg3MDA2QjgxOUEgLyogQ29tbWFuZExpbmUuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJNjVFNDAxQTYxQzY1N0E4NzAwM0M2RTlDIC8qIG5pbWxhbmcuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJMTQ0N0FFOTIxOEZCNTg0MjAwQjNEN0ZGIC8qIHRoZXZlcmdlLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTE0RDBCRkYzMUE2RjREM0IwMDEwOUYzMSAvKiBzdHJlc3NfYWxpZ25lZC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkxNDQ1MkNCMDE3N0QyNDQ2MDA5N0UwNTcgLyogbWFpbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDUxRkFFRDE4QjE0QjcxMDBEQjZENDcgLyogbWVkaXVtLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTE0QzUwMDkzMTg0MDNEQTAwMDdBNTMxRCAvKiBJbnRlcnBy
ZXRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxNDQ3QUU5MTE4RkI1ODQyMDBCM0Q3RkYgLyog
cmVkZGl0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTE0RTExOTMyMTc3RUNDOEIwMDNBOEQxNSAv
KiBDUFVDb3VudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxNDQ0QUU5MzE3N0U3OUJCMDBGODAz
MEEgLyogZnJhZ21lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM3NjgxMDMxRjg1MjlFRjAw
NjE3RTRDIC8qIE1lbW9yeS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDQ0QUU5NjE3N0U4REYy
MDBGODAzMEEgLyogbWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2NUU0MDFBNjFDNjU3
QTg3MDAzQzZFOUMgLyogbmltbGFuZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDEwNUU4MjE4
RTEzRUVDMDAzQTEwNkUgLyogcmVhbGxvYy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxNDEwNUU3
RjE4REY3RDczMDAzQTEwNkUgLyogYmFsbG9vbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxNDk3
NkVDRTE3N0UzRDY3MDA2QjgxOUEgLyogQmVuY2htYXJrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTE0NDdBRTkxMThGQjU4NDIwMEIzRDdGRiAvKiByZWRkaXQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMTRGQ0EzNjExOUE3QzkxNzAwMUNGREE5IC8qIHN0cmVzcy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkxNEQwQkZGMzFBNkY0RDNCMDAxMDlGMzEgLyogc3RyZXNzX2FsaWduZWQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMTQ0N0FFOTIxOEZCNTg0MjAwQjNEN0ZGIC8qIHRoZXZlcmdlLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTE0OTc2RUQxMTc3RTRBRjcwMDZCODE5QSAvKiB0cmVlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9N
YWxsb2NCZW5jaC9CZW5jaG1hcmsuY3BwIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9N
YWxsb2NCZW5jaC9CZW5jaG1hcmsuY3BwCmluZGV4IGQyZDg0MmMyMzViNjljMzE2ZjZjN2NiMmJh
MDdhYzI1NjY5ODcxMWMuLmJjYmQyNjg1NWU3N2Y5OTYzNWQ3ZDcwNzJjOGEyMjYwYzc2NWU0ZTgg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvQmVu
Y2htYXJrLmNwcAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNo
L0JlbmNobWFyay5jcHAKQEAgLTQyLDE1ICs0MiwxOSBAQAogI2luY2x1ZGUgInN0cmVzc19hbGln
bmVkLmgiCiAjaW5jbHVkZSAidGhldmVyZ2UuaCIKICNpbmNsdWRlICJ0cmVlLmgiCi0jaW5jbHVk
ZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8
aW9zdHJlYW0+Ci0jaW5jbHVkZSA8bWFjaC9tYWNoLmg+Ci0jaW5jbHVkZSA8bWFjaC90YXNrX2lu
Zm8uaD4KICNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJp
bmc+CisjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAjaW5jbHVk
ZSA8dGhyZWFkPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2lm
ZGVmIF9fQVBQTEVfXworI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CisjZW5kaWYKIAog
I2luY2x1ZGUgIm1ibWFsbG9jLmgiCiAKQEAgLTEzMCw5ICsxMzQsNyBAQCBzdGF0aWMgdm9pZCBk
ZWFsbG9jYXRlSGVhcCh2b2lkKioqIGNodW5rcywgc2l6ZV90IGhlYXBTaXplLCBzaXplX3QgY2h1
bmtTaXplLCBzaQogfQogCiBCZW5jaG1hcms6OkJlbmNobWFyayhDb21tYW5kTGluZSYgY29tbWFu
ZExpbmUpCi0gICAgOiBtX2JlbmNobWFya1BhaXIoKQotICAgICwgbV9lbGFwc2VkVGltZSgpCi0g
ICAgLCBtX2NvbW1hbmRMaW5lKGNvbW1hbmRMaW5lKQorICAgIDogbV9jb21tYW5kTGluZShjb21t
YW5kTGluZSkKIHsKICAgICBjb25zdCBCZW5jaG1hcmtQYWlyKiBiZW5jaG1hcmtQYWlyID0gc3Rk
OjpmaW5kKAogICAgICAgICBiZW5jaG1hcmtQYWlycywgYmVuY2htYXJrUGFpcnMgKyBiZW5jaG1h
cmtzUGFpcnNDb3VudCwgbV9jb21tYW5kTGluZS5iZW5jaG1hcmtOYW1lKCkpOwpAQCAtMTU2LDYg
KzE1OCw3IEBAIHZvaWQgQmVuY2htYXJrOjpydW5PbmNlKCkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAorI2lmZGVmIF9fQVBQTEVfXwogICAgIGRpc3BhdGNoX2dyb3VwX3QgZ3JvdXAgPSBkaXNw
YXRjaF9ncm91cF9jcmVhdGUoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY3B1Q291
bnQoKTsgKytpKSB7CkBAIC0xNjcsNiArMTcwLDE2IEBAIHZvaWQgQmVuY2htYXJrOjpydW5PbmNl
KCkKICAgICBkaXNwYXRjaF9ncm91cF93YWl0KGdyb3VwLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIp
OwogCiAgICAgZGlzcGF0Y2hfcmVsZWFzZShncm91cCk7CisjZWxzZQorICAgIHN0ZDo6dmVjdG9y
PHN0ZDo6dGhyZWFkPiB0aHJlYWRzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY3B1Q291
bnQoKTsgKytpKSB7CisgICAgICAgIHRocmVhZHMuZW1wbGFjZV9iYWNrKFsmXSB7CisgICAgICAg
ICAgICBtX2JlbmNobWFya1BhaXItPmZ1bmN0aW9uKG1fY29tbWFuZExpbmUpOworICAgICAgICB9
KTsKKyAgICB9CisgICAgZm9yIChhdXRvJiB0aHJlYWQgOiB0aHJlYWRzKQorICAgICAgICB0aHJl
YWQuam9pbigpOworI2VuZGlmCiB9CiAKIHZvaWQgQmVuY2htYXJrOjpydW4oKQpAQCAtMjEyLDE4
ICsyMjUsMyBAQCBkb3VibGUgQmVuY2htYXJrOjpjdXJyZW50VGltZU1TKCkKICAgICByZXR1cm4g
KG5vdy50dl9zZWMgKiAxMDAwLjApICsgbm93LnR2X3VzZWMgLyAxMDAwLjA7CiB9CiAKLUJlbmNo
bWFyazo6TWVtb3J5IEJlbmNobWFyazo6Y3VycmVudE1lbW9yeUJ5dGVzKCkKLXsKLSAgICBNZW1v
cnkgbWVtb3J5OwotCi0gICAgdGFza192bV9pbmZvX2RhdGFfdCB2bV9pbmZvOwotICAgIG1hY2hf
bXNnX3R5cGVfbnVtYmVyX3Qgdm1fc2l6ZSA9IFRBU0tfVk1fSU5GT19DT1VOVDsKLSAgICBpZiAo
S0VSTl9TVUNDRVNTICE9IHRhc2tfaW5mbyhtYWNoX3Rhc2tfc2VsZigpLCBUQVNLX1ZNX0lORk9f
UFVSR0VBQkxFLCAodGFza19pbmZvX3QpKCZ2bV9pbmZvKSwgJnZtX3NpemUpKSB7Ci0gICAgICAg
IGNvdXQgPDwgIkZhaWxlZCB0byBnZXQgbWFjaCB0YXNrIGluZm8iIDw8IGVuZGw7Ci0gICAgICAg
IGV4aXQoMSk7Ci0gICAgfQotCi0gICAgbWVtb3J5LnJlc2lkZW50ID0gdm1faW5mby5pbnRlcm5h
bCArIHZtX2luZm8uY29tcHJlc3NlZCAtIHZtX2luZm8ucHVyZ2VhYmxlX3ZvbGF0aWxlX3BtYXA7
Ci0gICAgbWVtb3J5LnJlc2lkZW50TWF4ID0gdm1faW5mby5yZXNpZGVudF9zaXplX3BlYWs7Ci0g
ICAgcmV0dXJuIG1lbW9yeTsKLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9j
QmVuY2gvTWFsbG9jQmVuY2gvQmVuY2htYXJrLmggYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0Jl
bmNoL01hbGxvY0JlbmNoL0JlbmNobWFyay5oCmluZGV4IDlhNDQ5YjkxNDQwMzY4MDU0YzA3ZTQ0
ZDcwMWFjOTM3NTI5MjE4NzMuLjRjODNmMTI4ZDY5N2ZiNWMzZGI1MDQ0NTI4YWRmYWI1ZGI3ZWZj
ZjYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gv
QmVuY2htYXJrLmgKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5j
aC9CZW5jaG1hcmsuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBCZW5jaG1hcmtfaAogCiAj
aW5jbHVkZSAiQ29tbWFuZExpbmUuaCIKKyNpbmNsdWRlICJNZW1vcnkuaCIKICNpbmNsdWRlIDxt
YXA+CiAjaW5jbHVkZSA8c3RyaW5nPgogCkBAIC0zNSwzMCArMzYsNyBAQCBzdHJ1Y3QgQmVuY2ht
YXJrUGFpcjsKIAogY2xhc3MgQmVuY2htYXJrIHsKIHB1YmxpYzoKLSAgICBzdHJ1Y3QgTWVtb3J5
IHsKLSAgICAgICAgTWVtb3J5KCkKLSAgICAgICAgICAgIDogcmVzaWRlbnQoKQotICAgICAgICAg
ICAgLCByZXNpZGVudE1heCgpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAg
ICAgTWVtb3J5KHNpemVfdCByZXNpZGVudCwgc2l6ZV90IHJlc2lkZW50TWF4KQotICAgICAgICAg
ICAgOiByZXNpZGVudChyZXNpZGVudCkKLSAgICAgICAgICAgICwgcmVzaWRlbnRNYXgocmVzaWRl
bnRNYXgpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIE1lbW9yeSBvcGVyYXRvci0o
Y29uc3QgTWVtb3J5JiBvdGhlcikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIE1lbW9y
eShyZXNpZGVudCAtIG90aGVyLnJlc2lkZW50LCByZXNpZGVudE1heCAtIG90aGVyLnJlc2lkZW50
TWF4KTsKLSAgICAgICAgfQotICAgIAotICAgICAgICBzaXplX3QgcmVzaWRlbnQ7Ci0gICAgICAg
IHNpemVfdCByZXNpZGVudE1heDsKLSAgICB9OwotCiAgICAgc3RhdGljIGRvdWJsZSBjdXJyZW50
VGltZU1TKCk7Ci0gICAgc3RhdGljIE1lbW9yeSBjdXJyZW50TWVtb3J5Qnl0ZXMoKTsKIAogICAg
IEJlbmNobWFyayhDb21tYW5kTGluZSYpOwogICAgIApAQCAtNzUsMTIgKzUzLDEyIEBAIGNsYXNz
IEJlbmNobWFyayB7CiAKICAgICBNYXBUeXBlIG1fbWFwOwogCi0gICAgY29uc3QgQmVuY2htYXJr
UGFpciogbV9iZW5jaG1hcmtQYWlyOworICAgIGNvbnN0IEJlbmNobWFya1BhaXIqIG1fYmVuY2ht
YXJrUGFpciB7IG51bGxwdHIgfTsKIAogICAgIENvbW1hbmRMaW5lJiBtX2NvbW1hbmRMaW5lOwog
CiAgICAgTWVtb3J5IG1fbWVtb3J5OwotICAgIGRvdWJsZSBtX2VsYXBzZWRUaW1lOworICAgIGRv
dWJsZSBtX2VsYXBzZWRUaW1lIHsgMCB9OwogfTsKIAogI2VuZGlmIC8vIEJlbmNobWFya19oCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL0NNYWtl
TGlzdHMudHh0IGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9DTWFr
ZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjBiNjUwNzE3MWJhZjMwMzEzZWM0MjMxYzBiOTkwMDc0
ZjhkMzY1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9N
YWxsb2NCZW5jaC9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDY5IEBACithZGRfbGlicmFyeShz
eXNtYWxsb2MgU0hBUkVEIG1ibWFsbG9jLmNwcCkKK3NldF90YXJnZXRfcHJvcGVydGllcyhzeXNt
YWxsb2MgUFJPUEVSVElFUyBPVVRQVVRfTkFNRSAibWJtYWxsb2MiKQorc2V0X3RhcmdldF9wcm9w
ZXJ0aWVzKHN5c21hbGxvYyBQUk9QRVJUSUVTIExJQlJBUllfT1VUUFVUX0RJUkVDVE9SWSAke1BS
T0pFQ1RfQklOQVJZX0RJUn0vbGliL3N5c3RlbS8pCisKK3NldChNQUxMT0NfQkVOQ0hfU09VUkNF
UworICAgIEJlbmNobWFyay5jcHAKKyAgICBDUFVDb3VudC5jcHAKKyAgICBDb21tYW5kTGluZS5j
cHAKKyAgICBJbnRlcnByZXRlci5jcHAKKyAgICBNZW1vcnkuY3BwCisgICAgYWxsb2NfZnJlZS5j
cHAKKyAgICBiYWxsb29uLmNwcAorICAgIGJpZy5jcHAKKyAgICBjaHVybi5jcHAKKyAgICBmYWNl
Ym9vay5jcHAKKyAgICBmbGlja3IuY3BwCisgICAgZnJhZ21lbnQuY3BwCisgICAgbGlzdC5jcHAK
KyAgICBtYWluLmNwcAorICAgIG1lZGl1bS5jcHAKKyAgICBtZXNzYWdlLmNwcAorICAgIG5pbWxh
bmcuY3BwCisgICAgcmVhbGxvYy5jcHAKKyAgICByZWRkaXQuY3BwCisgICAgc3RyZXNzLmNwcAor
ICAgIHN0cmVzc19hbGlnbmVkLmNwcAorICAgIHRoZXZlcmdlLmNwcAorICAgIHRyZWUuY3BwCisp
CisKK3NldChNQUxMT0NfQkVOQ0hfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICIke0JNQUxMT0Nf
RElSfSIKKyAgICAiJHtDTUFLRV9CSU5BUllfRElSfSIKKyAgICAiJHtERVJJVkVEX1NPVVJDRVNf
RElSfSIKKyAgICAiJHtUSElSRFBBUlRZX0RJUn0iCispCisKK3NldChNQUxMT0NfQkVOQ0hfTElC
UkFSSUVTCisgICAgJHtDTUFLRV9ETF9MSUJTfQorKQorCitXRUJLSVRfSU5DTFVERV9DT05GSUdf
RklMRVNfSUZfRVhJU1RTKCkKKworV0VCS0lUX1dSQVBfU09VUkNFTElTVCgke01BTExPQ19CRU5D
SF9TT1VSQ0VTfSkKKworCitpbmNsdWRlX2RpcmVjdG9yaWVzKCR7TUFMTE9DX0JFTkNIX0lOQ0xV
REVfRElSRUNUT1JJRVN9KQorCitTRVQoQ01BS0VfU0tJUF9CVUlMRF9SUEFUSCAgVFJVRSkKK2Fk
ZF9leGVjdXRhYmxlKE1hbGxvY0JlbmNoICR7TUFMTE9DX0JFTkNIX1NPVVJDRVN9KQordGFyZ2V0
X2xpbmtfbGlicmFyaWVzKE1hbGxvY0JlbmNoICR7Q01BS0VfVEhSRUFEX0xJQlNfSU5JVH0gJHtN
QUxMT0NfQkVOQ0hfTElCUkFSSUVTfSBtYm1hbGxvYykKK2FkZF9kZXBlbmRlbmNpZXMoTWFsbG9j
QmVuY2ggc3lzbWFsbG9jIG1ibWFsbG9jKQorCitzZXQoTUFMTE9DX0JFTkNIX09QUworICAgIGZh
Y2Vib29rLm9wcworICAgIGZsaWNrci5vcHMKKyAgICBmbGlja3JfbWVtb3J5X3dhcm5pbmcub3Bz
CisgICAgbmltbGFuZy5vcHMKKyAgICByZWRkaXQub3BzCisgICAgcmVkZGl0X21lbW9yeV93YXJu
aW5nLm9wcworICAgIHRoZXZlcmdlLm9wcworICAgIHRoZXZlcmdlX21lbW9yeV93YXJuaW5nLm9w
cworKQorCitmaWxlKENPUFkKKyAgICAke01BTExPQ19CRU5DSF9PUFN9CisgICAgREVTVElOQVRJ
T04KKyAgICAke1BST0pFQ1RfQklOQVJZX0RJUn0KKykKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvQ1BVQ291bnQuY3BwIGIvUGVyZm9ybWFuY2VU
ZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9DUFVDb3VudC5jcHAKaW5kZXggMGYyMDE2MGI5
OGUxMjJiZTIxMmQ4MWM0ZTYxN2MwZjg0OWJjNzQzMC4uMzFkNmQyZDgzOTlhMDIwYWM3MGNkOGQ4
OGU4MmE4MTg4YTU0ZTIwYSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5j
aC9NYWxsb2NCZW5jaC9DUFVDb3VudC5jcHAKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NC
ZW5jaC9NYWxsb2NCZW5jaC9DUFVDb3VudC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRl
IDxzeXMvcGFyYW0uaD4KICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CiAjaW5jbHVkZSA8c3lzL3R5
cGVzLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CiAKIHN0YXRpYyBzaXplX3QgY291bnQ7CiAKQEAg
LTM2LDYgKzM3LDcgQEAgc2l6ZV90IGNwdUNvdW50KCkKICAgICBpZiAoY291bnQpCiAgICAgICAg
IHJldHVybiBjb3VudDsKIAorI2lmZGVmIF9fQVBQTEVfXwogICAgIHNpemVfdCBsZW5ndGggPSBz
aXplb2YoY291bnQpOwogICAgIGludCBuYW1lW10gPSB7CiAgICAgICAgICAgICBDVExfSFcsCkBA
IC00NCw2ICs0NiwxMiBAQCBzaXplX3QgY3B1Q291bnQoKQogICAgIGludCBzeXNjdGxSZXN1bHQg
PSBzeXNjdGwobmFtZSwgc2l6ZW9mKG5hbWUpIC8gc2l6ZW9mKGludCksICZjb3VudCwgJmxlbmd0
aCwgMCwgMCk7CiAgICAgaWYgKHN5c2N0bFJlc3VsdCA8IDApCiAgICAgICAgIGFib3J0KCk7Cisj
ZWxzZQorICAgIGxvbmcgc3lzY29uZlJlc3VsdCA9IHN5c2NvbmYoX1NDX05QUk9DRVNTT1JTX09O
TE4pOworICAgIGlmIChzeXNjb25mUmVzdWx0IDwgMCkKKyAgICAgICAgYWJvcnQoKTsKKyAgICBj
b3VudCA9IHN5c2NvbmZSZXN1bHQ7CisjZW5kaWYKIAogICAgIHJldHVybiBjb3VudDsKIH0KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvSW50ZXJw
cmV0ZXIuY3BwIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9JbnRl
cnByZXRlci5jcHAKaW5kZXggN2ExYmI4ZjM4NjNmMmFiYWRlYmZlMDA2ZjgxOTYxODVhZjcwYWI3
MC4uOGM2Y2YzZjYzMGNkMzMzNWEzM2IzNzkxNTNlYmI0NzA1ZjdkMWFlMyAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9JbnRlcnByZXRlci5jcHAK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9JbnRlcnByZXRl
ci5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBzdGF0aWMgc2l6ZV90IGNvbXB1dGUydG9Qb3dlcih1
bnNpZ25lZCBsb2cybikKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEludGVycHJldGVy
Ojpkb01hbGxvY09wKE9wIG9wLCBUaHJlYWRJZCB0aHJlYWRJZCkKK3ZvaWQgSW50ZXJwcmV0ZXI6
OmRvTWFsbG9jT3AoT3Agb3AsIFRocmVhZElkKQogewogICAgIHN3aXRjaCAob3Aub3Bjb2RlKSB7
CiAgICAgICAgIGNhc2Ugb3BfbWFsbG9jOiB7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL01lbW9yeS5jcHAgYi9QZXJmb3JtYW5jZVRlc3RzL01h
bGxvY0JlbmNoL01hbGxvY0JlbmNoL01lbW9yeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY5NTk2ZWQ5NDYw
OTkxZDFiNjQ5YTAxNjg3ZGFhY2JhYmI3ZDZiMQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvTWVtb3J5LmNwcApAQCAtMCwwICsxLDg3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJNZW1vcnkuaCIKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDxzdGRsaWIu
aD4KKworI2lmZGVmIF9fQVBQTEVfXworI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgorI2luY2x1ZGUg
PG1hY2gvdGFza19pbmZvLmg+CisjZWxzZQorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8
dW5pc3RkLmg+CisjZW5kaWYKKworTWVtb3J5IGN1cnJlbnRNZW1vcnlCeXRlcygpCit7CisgICAg
TWVtb3J5IG1lbW9yeTsKKworI2lmZGVmIF9fQVBQTEVfXworICAgIHRhc2tfdm1faW5mb19kYXRh
X3Qgdm1faW5mbzsKKyAgICBtYWNoX21zZ190eXBlX251bWJlcl90IHZtX3NpemUgPSBUQVNLX1ZN
X0lORk9fQ09VTlQ7CisgICAgaWYgKEtFUk5fU1VDQ0VTUyAhPSB0YXNrX2luZm8obWFjaF90YXNr
X3NlbGYoKSwgVEFTS19WTV9JTkZPX1BVUkdFQUJMRSwgKHRhc2tfaW5mb190KSgmdm1faW5mbyks
ICZ2bV9zaXplKSkgeworICAgICAgICBzdGQ6OmNvdXQgPDwgIkZhaWxlZCB0byBnZXQgbWFjaCB0
YXNrIGluZm8iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisKKyAgICBt
ZW1vcnkucmVzaWRlbnQgPSB2bV9pbmZvLmludGVybmFsICsgdm1faW5mby5jb21wcmVzc2VkIC0g
dm1faW5mby5wdXJnZWFibGVfdm9sYXRpbGVfcG1hcDsKKyAgICBtZW1vcnkucmVzaWRlbnRNYXgg
PSB2bV9pbmZvLnJlc2lkZW50X3NpemVfcGVhazsKKyNlbHNlCisgICAgRklMRSogZmlsZSA9IGZv
cGVuKCIvcHJvYy9zZWxmL3N0YXR1cyIsICJyIik7CisKKyAgICBhdXRvIGZvckVhY2hMaW5lID0g
W10gKEZJTEUqIGZpbGUsIGF1dG8gZnVuY3RvcikgeworICAgICAgICBjaGFyKiBidWZmZXIgPSBu
dWxscHRyOworICAgICAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgICAgIHdoaWxlIChnZXRsaW5l
KCZidWZmZXIsICZzaXplLCBmaWxlKSAhPSAtMSkgeworICAgICAgICAgICAgZnVuY3RvcihidWZm
ZXIsIHNpemUpOworICAgICAgICAgICAgOjpmcmVlKGJ1ZmZlcik7IC8vIEJlIGNhcmVmdWwuIGdl
dGxpbmUncyBtZW1vcnkgYWxsb2NhdGlvbiBpcyBkb25lIGJ5IHN5c3RlbSBtYWxsb2MuCisgICAg
ICAgICAgICBidWZmZXIgPSBudWxscHRyOworICAgICAgICAgICAgc2l6ZSA9IDA7CisgICAgICAg
IH0KKyAgICB9OworCisgICAgdW5zaWduZWQgbG9uZyB2bUhXTSA9IDA7CisgICAgdW5zaWduZWQg
bG9uZyB2bVJTUyA9IDA7CisgICAgdW5zaWduZWQgbG9uZyByc3NGaWxlID0gMDsKKyAgICB1bnNp
Z25lZCBsb25nIHJzc1NobWVtID0gMDsKKyAgICBmb3JFYWNoTGluZShmaWxlLCBbJl0gKGNoYXIq
IGJ1ZmZlciwgc2l6ZV90KSB7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZUluS0IgPSAwOwor
ICAgICAgICBpZiAoc3NjYW5mKGJ1ZmZlciwgIlZtSFdNOiAlbHUga0IiLCAmc2l6ZUluS0IpID09
IDEpCisgICAgICAgICAgICB2bUhXTSA9IHNpemVJbktCICogMTAyNDsKKyAgICAgICAgZWxzZSBp
ZiAoc3NjYW5mKGJ1ZmZlciwgIlZtUlNTOiAlbHUga0IiLCAmc2l6ZUluS0IpID09IDEpCisgICAg
ICAgICAgICB2bVJTUyA9IHNpemVJbktCICogMTAyNDsKKyAgICAgICAgZWxzZSBpZiAoc3NjYW5m
KGJ1ZmZlciwgIlJzc0ZpbGU6ICVsdSBrQiIsICZzaXplSW5LQikgPT0gMSkKKyAgICAgICAgICAg
IHJzc0ZpbGUgPSBzaXplSW5LQiAqIDEwMjQ7CisgICAgICAgIGVsc2UgaWYgKHNzY2FuZihidWZm
ZXIsICJSc3NTaG1lbTogJWx1IGtCIiwgJnNpemVJbktCKSA9PSAxKQorICAgICAgICAgICAgcnNz
U2htZW0gPSBzaXplSW5LQiAqIDEwMjQ7CisgICAgfSk7CisgICAgZmNsb3NlKGZpbGUpOworICAg
IG1lbW9yeS5yZXNpZGVudCA9IHZtUlNTIC0gKHJzc0ZpbGUgKyByc3NTaG1lbSk7CisgICAgbWVt
b3J5LnJlc2lkZW50TWF4ID0gdm1IV00gLSAocnNzRmlsZSArIHJzc1NobWVtKTsgLy8gV2UgZG8g
bm90IGhhdmUgYW55IHdheSB0byBnZXQgdGhlIHBlYWsgb2YgUlNTIG9mIGFub255bW91cyBwYWdl
cy4gSGVyZSwgd2Ugc3VidHJhY3QgUlNTIG9mIGZpbGVzIGFuZCBzaG1lbSB0byBlc3RpbWF0ZSB0
aGUgcGVhayBvZiBSU1Mgb2YgYW5vbnltb3VzIHBhZ2VzLgorI2VuZGlmCisgICAgcmV0dXJuIG1l
bW9yeTsKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9j
QmVuY2gvTWVtb3J5LmggYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNo
L01lbW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjN2U5MWVkOWNmOTZjNWUwNWI0NTk0OTczYzgwODdjMmQy
Zjc0OGEKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01h
bGxvY0JlbmNoL01lbW9yeS5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxj
c3RkZGVmPgorCitzdHJ1Y3QgTWVtb3J5IHsKKyAgICBNZW1vcnkoKQorICAgICAgICA6IHJlc2lk
ZW50KCkKKyAgICAgICAgLCByZXNpZGVudE1heCgpCisgICAgeworICAgIH0KKworICAgIE1lbW9y
eShzaXplX3QgcmVzaWRlbnQsIHNpemVfdCByZXNpZGVudE1heCkKKyAgICAgICAgOiByZXNpZGVu
dChyZXNpZGVudCkKKyAgICAgICAgLCByZXNpZGVudE1heChyZXNpZGVudE1heCkKKyAgICB7Cisg
ICAgfQorCisgICAgTWVtb3J5IG9wZXJhdG9yLShjb25zdCBNZW1vcnkmIG90aGVyKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIE1lbW9yeShyZXNpZGVudCAtIG90aGVyLnJlc2lkZW50LCByZXNpZGVu
dE1heCAtIG90aGVyLnJlc2lkZW50TWF4KTsKKyAgICB9CisKKyAgICBzaXplX3QgcmVzaWRlbnQ7
CisgICAgc2l6ZV90IHJlc2lkZW50TWF4OworfTsKKworTWVtb3J5IGN1cnJlbnRNZW1vcnlCeXRl
cygpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5j
aC9iYWxsb29uLmNwcCBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gv
YmFsbG9vbi5jcHAKaW5kZXggOGMwZDQzZjMxYzE2YWVkYThkMzE5NWMzMjNjMThlODE1YWUxNDIw
My4uMDcwZTg2MDFhMDE1MDkwZTk1NTlmZmQ4YTcxNjcxNWQzOTE2NDE2ZSAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9iYWxsb29uLmNwcAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL2JhbGxvb24uY3BwCkBA
IC0yMywxMyArMjMsMTQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpbmNsdWRlICJCZW5j
aG1hcmsuaCIKICNpbmNsdWRlICJDUFVDb3VudC5oIgorI2luY2x1ZGUgIk1lbW9yeS5oIgogI2lu
Y2x1ZGUgImJhbGxvb24uaCIKICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxjaHJvbm8+CiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0cmluZ3Mu
aD4KIAogI2luY2x1ZGUgIm1ibWFsbG9jLmgiCiAKQEAgLTYxLDcgKzYyLDcgQEAgdm9pZCBiZW5j
aG1hcmtfYmFsbG9vbihDb21tYW5kTGluZSYpCiAgICAgLy8gQ29udmVydHMgYnl0ZXMgdG8gdGlt
ZSAtLSBmb3IgcmVwb3J0aW5nJ3Mgc2FrZSAtLSBieSB3YWl0aW5nIGEgd2hpbGUgdW50aWwKICAg
ICAvLyB0aGUgaGVhcCBzaHJpbmtzIGJhY2sgZG93bi4gVGhpcyBpc24ndCBncmVhdCBmb3IgcG9v
bGluZyB3aXRoIG90aGVyCiAgICAgLy8gYmVuY2htYXJrcyBpbiBhIGdlb21ldHJpYyBtZWFuIG9m
IHRocm91Z2hwdXQsIGJ1dCBpdCdzIE9LIGZvciBiYXNpYyB0ZXN0aW5nLgotICAgIHdoaWxlIChC
ZW5jaG1hcms6OmN1cnJlbnRNZW1vcnlCeXRlcygpLnJlc2lkZW50ID4gMiAqIHN0ZWFkeVNpemUK
KyAgICB3aGlsZSAoY3VycmVudE1lbW9yeUJ5dGVzKCkucmVzaWRlbnQgPiAyICogc3RlYWR5U2l6
ZQogICAgICAgICAmJiBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKSAtIHN0YXJ0IDwg
OCAqIGJlbmNobWFya1RpbWUpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGVh
ZHkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIHN0ZWFkeVtpXSA9IG1ibWFsbG9jKGNodW5r
U2l6ZSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0Jl
bmNoL21ibWFsbG9jLmNwcCBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVu
Y2gvbWJtYWxsb2MuY3BwCmluZGV4IDYyNTM3Yjg2OWI2OGNiMTNmMjdhOWQyN2NmNzBiZjA4MGRl
YWQ5NDguLjZhODllNjQwYTIzMWVmZjBiZThhNzBhZjE1NjBmOTRkNWFhYWMzOGEgMTAwNjQ0Ci0t
LSBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvbWJtYWxsb2MuY3Bw
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvbWJtYWxsb2Mu
Y3BwCkBAIC0yNiw3ICsyNiwxMiBAQAogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzdGRp
by5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaWZkZWYgX19BUFBMRV9fCiAjaW1wb3J0IDxt
YWxsb2MvbWFsbG9jLmg+CisjZWxzZQorI2luY2x1ZGUgPG1hbGxvYy5oPgorI2VuZGlmCiAKIGV4
dGVybiAiQyIgewogCkBAIC0zOCw3ICs0Myw4IEBAIHZvaWQqIG1ibWFsbG9jKHNpemVfdCBzaXpl
KQogdm9pZCogbWJtZW1hbGlnbihzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKIHsKICAg
ICB2b2lkKiByZXN1bHQ7Ci0gICAgcG9zaXhfbWVtYWxpZ24oJnJlc3VsdCwgYWxpZ25tZW50LCBz
aXplKTsKKyAgICBpZiAocG9zaXhfbWVtYWxpZ24oJnJlc3VsdCwgYWxpZ25tZW50LCBzaXplKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNTQs
NyArNjAsMTEgQEAgdm9pZCogbWJyZWFsbG9jKHZvaWQqIHAsIHNpemVfdCwgc2l6ZV90IG5ld1Np
emUpCiAKIHZvaWQgbWJzY2F2ZW5nZSgpCiB7CisjaWZkZWYgX19BUFBMRV9fCiAgICAgbWFsbG9j
X3pvbmVfcHJlc3N1cmVfcmVsaWVmKG51bGxwdHIsIDApOworI2Vsc2UKKyAgICBtYWxsb2NfdHJp
bSgwKTsKKyNlbmRpZgogfQogCiB9IC8vIGV4dGVybiAiQyIKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvbWVzc2FnZS5jcHAgYi9QZXJmb3JtYW5j
ZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL21lc3NhZ2UuY3BwCmluZGV4IDFiNWY5ZDBi
ZjFhOTFjMDYwOTE1NWU4YTU5MzllMWZiYmZmZDM5OWIuLjc2MzNmOWYxZjdjODE5MDg0YzI5Mzc0
MDk4YjYyMWU1YTE5MTNiZGQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVu
Y2gvTWFsbG9jQmVuY2gvbWVzc2FnZS5jcHAKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NC
ZW5jaC9NYWxsb2NCZW5jaC9tZXNzYWdlLmNwcApAQCAtMjUsOSArMjUsMTMgQEAKIAogI2luY2x1
ZGUgIkNQVUNvdW50LmgiCiAjaW5jbHVkZSAibWVzc2FnZS5oIgotI2luY2x1ZGUgPGRpc3BhdGNo
L2Rpc3BhdGNoLmg+CisjaW5jbHVkZSA8Y29uZGl0aW9uX3ZhcmlhYmxlPgorI2luY2x1ZGUgPGRl
cXVlPgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8
c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5ncy5oPgorI2luY2x1ZGUgPHRocmVhZD4KIAogI2lu
Y2x1ZGUgIm1ibWFsbG9jLmgiCiAKQEAgLTExMCw2ICsxMTQsNjggQEAgY2xhc3MgTWVzc2FnZSB7
CiAKIH0gLy8gbmFtZXNwYWNlCiAKK2NsYXNzIFdvcmtRdWV1ZSB7CitwdWJsaWM6CisgICAgV29y
a1F1ZXVlKCkKKyAgICB7CisgICAgICAgIG1fdGhyZWFkID0gc3RkOjp0aHJlYWQoWyZdIHsKKyAg
ICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IHRhcmdldDsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gbG9ja2VyKG1fbXV0ZXgpOworICAgICAgICAgICAg
ICAgICAgICBtX2NvbmRpdGlvbi53YWl0KGxvY2tlciwgWyZdIHsgcmV0dXJuICFtX3F1ZXVlLmVt
cHR5KCk7IH0pOworICAgICAgICAgICAgICAgICAgICBhdXRvIHF1ZXVlZCA9IG1fcXVldWUuZnJv
bnQoKTsKKyAgICAgICAgICAgICAgICAgICAgbV9xdWV1ZS5wb3BfZnJvbnQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFxdWV1ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IHN0ZDo6bW92ZShxdWV1ZWQpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0YXJnZXQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisgICAgfQorCisgICAgfldvcmtRdWV1ZSgpIHsKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBsb2NrZXIobV9tdXRleCk7CisgICAg
ICAgICAgICBtX3F1ZXVlLnB1c2hfYmFjayhudWxscHRyKTsKKyAgICAgICAgICAgIG1fY29uZGl0
aW9uLm5vdGlmeV9vbmUoKTsKKyAgICAgICAgfQorICAgICAgICBtX3RocmVhZC5qb2luKCk7Cisg
ICAgfQorCisgICAgdm9pZCBkaXNwYXRjaEFzeW5jKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiB0YXJn
ZXQpCisgICAgeworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IGxvY2tlciht
X211dGV4KTsKKyAgICAgICAgbV9xdWV1ZS5wdXNoX2JhY2sodGFyZ2V0KTsKKyAgICAgICAgbV9j
b25kaXRpb24ubm90aWZ5X29uZSgpOworICAgIH0KKworICAgIHZvaWQgZGlzcGF0Y2hTeW5jKHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiB0YXJnZXQpCisgICAgeworICAgICAgICBzdGQ6Om11dGV4IHN5
bmNNdXRleDsKKyAgICAgICAgc3RkOjpjb25kaXRpb25fdmFyaWFibGUgc3luY0NvbmRpdGlvbjsK
KworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IGxvY2tlcihzeW5jTXV0ZXgp
OworICAgICAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgZGlzcGF0Y2hBc3luYyhbJl0g
eworICAgICAgICAgICAgdGFyZ2V0KCk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBsb2NrZXIoc3luY011dGV4KTsKKyAgICAgICAg
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzeW5jQ29uZGl0aW9uLm5vdGlm
eV9vbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIHN5bmNDb25kaXRp
b24ud2FpdChsb2NrZXIsIFsmXSB7IHJldHVybiBkb25lOyB9KTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgc3RkOjptdXRleCBtX211dGV4OworICAgIHN0ZDo6Y29uZGl0aW9uX3ZhcmlhYmxlIG1f
Y29uZGl0aW9uOworICAgIHN0ZDo6ZGVxdWU8c3RkOjpmdW5jdGlvbjx2b2lkKCk+PiBtX3F1ZXVl
OworICAgIHN0ZDo6dGhyZWFkIG1fdGhyZWFkOworfTsKKwogdm9pZCBiZW5jaG1hcmtfbWVzc2Fn
ZV9vbmUoQ29tbWFuZExpbmUmIGNvbW1hbmRMaW5lKQogewogICAgIGlmIChjb21tYW5kTGluZS5p
c1BhcmFsbGVsKCkpCkBAIC0xMTgsMjQgKzE4NCwyMCBAQCB2b2lkIGJlbmNobWFya19tZXNzYWdl
X29uZShDb21tYW5kTGluZSYgY29tbWFuZExpbmUpCiAgICAgY29uc3Qgc2l6ZV90IHRpbWVzID0g
MjA0ODsKICAgICBjb25zdCBzaXplX3QgcXVhbnR1bSA9IDE2OwogCi0gICAgZGlzcGF0Y2hfcXVl
dWVfdCBxdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgibWVzc2FnZSIsIDApOwotCisgICAg
V29ya1F1ZXVlIHdvcmtRdWV1ZTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRpbWVzOyBp
ICs9IHF1YW50dW0pIHsKICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBxdWFudHVtOyAr
K2opIHsKICAgICAgICAgICAgIE1lc3NhZ2UqIG1lc3NhZ2UgPSBuZXcgTWVzc2FnZTsKLSAgICAg
ICAgICAgIGRpc3BhdGNoX2FzeW5jKHF1ZXVlLCBeeworICAgICAgICAgICAgd29ya1F1ZXVlLmRp
c3BhdGNoQXN5bmMoW21lc3NhZ2VdIHsKICAgICAgICAgICAgICAgICBzaXplX3QgaGFzaCA9IG1l
c3NhZ2UtPmhhc2goKTsKICAgICAgICAgICAgICAgICBpZiAoaGFzaCkKICAgICAgICAgICAgICAg
ICAgICAgYWJvcnQoKTsKICAgICAgICAgICAgICAgICBkZWxldGUgbWVzc2FnZTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9Ci0gICAgICAgIGRpc3BhdGNoX3N5bmMocXVldWUsIF57IH0pOwor
ICAgICAgICB3b3JrUXVldWUuZGlzcGF0Y2hTeW5jKFtdIHsgfSk7CiAgICAgfQotCi0gICAgZGlz
cGF0Y2hfc3luYyhxdWV1ZSwgXnsgfSk7Ci0KLSAgICBkaXNwYXRjaF9yZWxlYXNlKHF1ZXVlKTsK
KyAgICB3b3JrUXVldWUuZGlzcGF0Y2hTeW5jKFtdIHsgfSk7CiB9CiAKIHZvaWQgYmVuY2htYXJr
X21lc3NhZ2VfbWFueShDb21tYW5kTGluZSYgY29tbWFuZExpbmUpCkBAIC0xNDcsMTUgKzIwOSwx
NSBAQCB2b2lkIGJlbmNobWFya19tZXNzYWdlX21hbnkoQ29tbWFuZExpbmUmIGNvbW1hbmRMaW5l
KQogICAgIGNvbnN0IHNpemVfdCBxdWFudHVtID0gMTY7CiAKICAgICBjb25zdCBzaXplX3QgcXVl
dWVDb3VudCA9IGNwdUNvdW50KCkgLSAxOwotICAgIGRpc3BhdGNoX3F1ZXVlX3QgcXVldWVzW3F1
ZXVlQ291bnRdOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrUXVldWU+IHF1ZXVlc1txdWV1ZUNv
dW50XTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1ZXVlQ291bnQ7ICsraSkKLSAgICAg
ICAgcXVldWVzW2ldID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJtZXNzYWdlIiwgMCk7CisgICAg
ICAgIHF1ZXVlc1tpXSA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya1F1ZXVlPigpOwogCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB0aW1lczsgaSArPSBxdWFudHVtKSB7CiAgICAgICAgIGZvciAo
c2l6ZV90IGogPSAwOyBqIDwgcXVhbnR1bTsgKytqKSB7CiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBrID0gMDsgayA8IHF1ZXVlQ291bnQ7ICsraykgewogICAgICAgICAgICAgICAgIE1lc3NhZ2Uq
IG1lc3NhZ2UgPSBuZXcgTWVzc2FnZTsKLSAgICAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhx
dWV1ZXNba10sIF57CisgICAgICAgICAgICAgICAgcXVldWVzW2tdLT5kaXNwYXRjaEFzeW5jKFtt
ZXNzYWdlXSB7CiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoYXNoID0gbWVzc2FnZS0+aGFz
aCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoaGFzaCkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGFib3J0KCk7CkBAIC0xNjUsMTIgKzIyNyw5IEBAIHZvaWQgYmVuY2htYXJrX21lc3NhZ2Vf
bWFueShDb21tYW5kTGluZSYgY29tbWFuZExpbmUpCiAgICAgICAgIH0KIAogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHF1ZXVlQ291bnQ7ICsraSkKLSAgICAgICAgICAgIGRpc3BhdGNo
X3N5bmMocXVldWVzW2ldLCBeeyB9KTsKKyAgICAgICAgICAgIHF1ZXVlc1tpXS0+ZGlzcGF0Y2hT
eW5jKFtdIHsgfSk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWV1ZUNv
dW50OyArK2kpCi0gICAgICAgIGRpc3BhdGNoX3N5bmMocXVldWVzW2ldLCBeeyB9KTsKLQotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVldWVDb3VudDsgKytpKQotICAgICAgICBkaXNwYXRj
aF9yZWxlYXNlKHF1ZXVlc1tpXSk7CisgICAgICAgIHF1ZXVlc1tpXS0+ZGlzcGF0Y2hTeW5jKFtd
IHsgfSk7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxv
Y0JlbmNoL25pbWxhbmcuY3BwIGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NC
ZW5jaC9uaW1sYW5nLmNwcAppbmRleCBhZTFlYjM3OGU4YzY5NjA5ZmVjYjFmODFkYTkxNjM0Zjdh
M2M0Y2Y1Li4zMzVmMDdlNjA5ZjIxNDc2NDlhYzI0NWZiMzViY2I0NTY3MTc5MDc3IDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL25pbWxhbmcuY3Bw
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvbmltbGFuZy5j
cHAKQEAgLTUxLDYgKzUxLDYgQEAgdm9pZCBiZW5jaG1hcmtfbmltbGFuZyhDb21tYW5kTGluZSYg
Y29tbWFuZExpbmUpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0aW1lczsgKytpKQogICAg
ICAgICBpbnRlcnByZXRlci5ydW4oKTsKIAotICAgICAgICBpZiAoY29tbWFuZExpbmUuZGV0YWls
ZWRSZXBvcnQoKSkKLSAgICAgICAgICAgIGludGVycHJldGVyLmRldGFpbGVkUmVwb3J0KCk7Cisg
ICAgaWYgKGNvbW1hbmRMaW5lLmRldGFpbGVkUmVwb3J0KCkpCisgICAgICAgIGludGVycHJldGVy
LmRldGFpbGVkUmVwb3J0KCk7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxv
Y0JlbmNoL01hbGxvY0JlbmNoL3N0cmVzcy5jcHAgYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxvY0Jl
bmNoL01hbGxvY0JlbmNoL3N0cmVzcy5jcHAKaW5kZXggNmJjMWJhMzE1MmJkOTNiZTAyY2QzNTYx
Y2IzOWNlMmRiZmEwYmQ5Zi4uMWMxNDc0N2JiYzJhMzdmOGMwNjNiZWNlMTc1MDUzNzUyYjk2OGVh
OCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9z
dHJlc3MuY3BwCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gv
c3RyZXNzLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNQVUNvdW50LmgiCiAjaW5j
bHVkZSAic3RyZXNzLmgiCiAjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8Y2Fzc2VydD4KICNp
bmNsdWRlIDxjaHJvbm8+CiAjaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRlIDxtZW1vcnk+CkBA
IC04Niw2ICs4Nyw4IEBAIGNsYXNzIFNpemVTdHJlYW0gewogICAgICAgICAgICAgcmV0dXJuIHJh
bmRvbSgpICUgbGFyZ2VNYXg7CiAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBhc3NlcnQo
MCk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvc3RyZXNzX2FsaWduZWQuY3Bw
IGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9zdHJlc3NfYWxpZ25l
ZC5jcHAKaW5kZXggNDliOTFiYzNmYWUxYzE2OGZmODRmOTA4MDlkNTY0NGVmOGYyMTM4My4uODlj
OGVhMjNhMTBlZmMwODQ1YWFiMDdjMjY1ZTFiMTQyMzhjMWNlOSAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9zdHJlc3NfYWxpZ25lZC5jcHAKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9zdHJlc3NfYWxpZ25l
ZC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDUFVDb3VudC5oIgogI2luY2x1ZGUg
InN0cmVzc19hbGlnbmVkLmgiCiAjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8Y2Fzc2VydD4K
ICNpbmNsdWRlIDxjaHJvbm8+CiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8Y3N0ZGxpYj4K
QEAgLTg5LDYgKzkwLDggQEAgY2xhc3MgU2l6ZVN0cmVhbSB7CiAgICAgICAgICAgICByZXR1cm4g
cmFuZG9tKCkgJSBsYXJnZU1heDsKICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGFzc2Vy
dCgwKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9NYWxsb2NCZW5jaC9ydW4tbWFsbG9jLWJlbmNobWFya3MgYi9QZXJm
b3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL3J1bi1tYWxsb2MtYmVuY2htYXJrcwppbmRleCBiNWJk
MGEwODA3NDgxMWZjNjYwNjY4MzRhN2Y3ZWI1MzgyZDk0YWNmLi5lZWRhNWQ5Y2U4MTYxY2VkMjc0
ZjQzNDA4MDdkM2Y2OGU5OTgzZjc1IDEwMDc1NQotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL01hbGxv
Y0JlbmNoL3J1bi1tYWxsb2MtYmVuY2htYXJrcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL01hbGxv
Y0JlbmNoL3J1bi1tYWxsb2MtYmVuY2htYXJrcwpAQCAtNyw2ICs3LDI5IEBAIHJlcXVpcmUgJ3Bh
dGhuYW1lJwogJGJpbkRpciA9ICIje0ZpbGUuZXhwYW5kX3BhdGgoRmlsZS5kaXJuYW1lKF9fRklM
RV9fKSl9IgogJHByb2R1Y3REaXIgPSBgcGVybCAtZSAndXNlIGxpYiBcIiN7JGJpbkRpcn0vLi4v
Li4vVG9vbHMvU2NyaXB0c1wiOyB1c2Ugd2Via2l0ZGlyczsgcHJpbnQgcHJvZHVjdERpcigpJ2AK
IAorZGVmIGRldGVybWluZU9TCisgICAgY2FzZSBSYkNvbmZpZzo6Q09ORklHWyJob3N0X29zIl0K
KyAgICB3aGVuIC9kYXJ3aW4vaQorICAgICAgICAiZGFyd2luIgorICAgIHdoZW4gL2xpbnV4L2kK
KyAgICAgICAgImxpbnV4IgorICAgIHdoZW4gL21zd2lufG1pbmd3fGN5Z3dpbi8KKyAgICAgICAg
IndpbmRvd3MiCisgICAgZWxzZQorICAgICAgICAkc3RkZXJyLnB1dHMgIldhcm5pbmc6IHVuYWJs
ZSB0byBkZXRlcm1pbmUgaG9zdCBvcGVyYXRpbmcgc3lzdGVtIgorICAgICAgICBuaWwKKyAgICBl
bmQKK2VuZAorCiskaG9zdE9TID0gZGV0ZXJtaW5lT1MgdW5sZXNzICRob3N0T1MKKyRjbWFrZSA9
IGZhbHNlCisKK2lmICRob3N0T1MgPT0gJ2RhcndpbicKKyAgICAkbGlicmFyeUV4dGVuc2lvbiA9
ICJkeWxpYiIKK2Vsc2UKKyAgICAkbGlicmFyeUV4dGVuc2lvbiA9ICJzbyIKK2VuZAorCiAkYmVu
Y2htYXJrc19hbGwgPSBbCiAgICAgIyBTaW5nbGUtdGhyZWFkZWQgYmVuY2htYXJrcy4KICAgICAi
Y2h1cm4iLApAQCAtOTEsNyArMTE0LDggQEAgZGVmIHVzYWdlCiAJcHV0cyAiT3B0aW9uczoiCiAg
ICAgcHV0cwogICAgIHB1dHMgIiAgICAtLWJlbmNobWFyayA8YmVuY2htYXJrPiAgICAgIFNlbGVj
dCBhIHNpbmdsZSBiZW5jaG1hcmsgdG8gcnVuIGluc3RlYWQgb2YgdGhlIGZ1bGwgc3VpdGUuIgot
ICAgIHB1dHMgIiAgICAtLWhlYXAgPGhlYXA+ICAgICAgICAgICBTZXQgYSBiYXNlbGluZSBoZWFw
IHNpemUuIgorICAgIHB1dHMgIiAgICAtLWhlYXAgPGhlYXA+ICAgICAgICAgICAgICAgIFNldCBh
IGJhc2VsaW5lIGhlYXAgc2l6ZS4iCisgICAgcHV0cyAiICAgIC0tY21ha2UgICAgICAgICAgICAg
ICAgICAgICAgU3BlY2lmeSBpZiBidWlsZCBkaXJlY3RvcnkgbGF5b3V0IGlzIGZvciBDTWFrZS4i
CiAgICAgcHV0cwogZW5kCiAKQEAgLTEwMSw3ICsxMjUsNyBAQCBjbGFzcyBEeWxpYgogCiAgICAg
ZGVmIGluaXRpYWxpemUobmFtZSwgcGF0aCkKICAgICAgICAgQG5hbWUgPSBuYW1lCi0gICAgICAg
IEBwYXRoID0gRmlsZS5qb2luKHBhdGgsICJsaWJtYm1hbGxvYy5keWxpYiIpCisgICAgICAgIEBw
YXRoID0gRmlsZS5qb2luKHBhdGgsICJsaWJtYm1hbGxvYy4jeyRsaWJyYXJ5RXh0ZW5zaW9ufSIp
CiAgICAgZW5kCiBlbmQKIApAQCAtMjE0LDYgKzIzOCw3IEBAIGVuZAogZGVmIHBhcnNlT3B0aW9u
cwogICAgIEdldG9wdExvbmcubmV3KAogICAgICAgICBbJy0tYmVuY2htYXJrJywgR2V0b3B0TG9u
Zzo6UkVRVUlSRURfQVJHVU1FTlRdLAorICAgICAgICBbJy0tY21ha2UnLCBHZXRvcHRMb25nOjpO
T19BUkdVTUVOVF0sCiAgICAgICAgIFsnLS1tZW1vcnknLCBHZXRvcHRMb25nOjpOT19BUkdVTUVO
VF0sCiAgICAgICAgIFsnLS1tZW1vcnlfd2FybmluZycsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5U
XSwKICAgICAgICAgWyctLWhlYXAnLCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCkBA
IC0yMjcsNiArMjUyLDggQEAgZGVmIHBhcnNlT3B0aW9ucwogICAgICAgICAgICAgJGJlbmNobWFy
a3MgPSAkYmVuY2htYXJrc19tZW1vcnkKICAgICAgICAgd2hlbiAnLS1tZW1vcnlfd2FybmluZycK
ICAgICAgICAgICAgICRiZW5jaG1hcmtzID0gJGJlbmNobWFya3NfbWVtb3J5X3dhcm5pbmcKKyAg
ICAgICAgd2hlbiAnLS1jbWFrZScKKyAgICAgICAgICAgICRjbWFrZSA9IHRydWUKICAgICAgICAg
d2hlbiAnLS1oZWFwJwogICAgICAgICAgICAgJGhlYXAgPSBhcmcKICAgICAgICAgd2hlbiAnLS1o
ZWxwJwpAQCAtMjM3LDYgKzI2NCwxNiBAQCBkZWYgcGFyc2VPcHRpb25zCiAgICAgICAgIGVuZAog
ICAgIH0KIAorICAgIGlmICRjbWFrZQorICAgICAgICAkbGlicmFyeURpciA9ICIjeyRwcm9kdWN0
RGlyfS9saWIiCisgICAgICAgICRzeXN0ZW1NYWxsb2NMaWJyYXJ5RGlyID0gIiN7JHByb2R1Y3RE
aXJ9L2xpYi9zeXN0ZW0iCisgICAgICAgICRiaW5hcnlEaXIgPSAiI3skcHJvZHVjdERpcn0vYmlu
IgorICAgIGVsc2UKKyAgICAgICAgJGxpYnJhcnlEaXIgPSAkcHJvZHVjdERpcgorICAgICAgICAk
YmluYXJ5RGlyID0gJHByb2R1Y3REaXIKKyAgICAgICAgJHN5c3RlbU1hbGxvY0xpYnJhcnlEaXIg
PSAkcHJvZHVjdERpcgorICAgIGVuZAorCiAgICAgaWYgQVJHVi5sZW5ndGggPCAxCiAgICAgICAg
IHB1dHMgIkVycm9yOiBObyBkeWxpYiBzcGVjaWZpZWQuIgogICAgICAgICBleGl0IDEKQEAgLTI0
Niw5ICsyODMsOSBAQCBkZWYgcGFyc2VPcHRpb25zCiAgICAgQVJHVi5lYWNoIHsKICAgICAgICAg
fCBhcmcgfAogICAgICAgICBpZiBhcmcgPT0gIlN5c3RlbU1hbGxvYyIKLSAgICAgICAgICAgIGR5
bGliID0gRHlsaWIubmV3KCJTeXN0ZW1NYWxsb2MiLCAkcHJvZHVjdERpcikKKyAgICAgICAgICAg
IGR5bGliID0gRHlsaWIubmV3KCJTeXN0ZW1NYWxsb2MiLCAkc3lzdGVtTWFsbG9jTGlicmFyeURp
cikKICAgICAgICAgZWxzaWYgYXJnID09ICJOYW5vTWFsbG9jIgotICAgICAgICAgICAgZHlsaWIg
PSBEeWxpYi5uZXcoIk5hbm9NYWxsb2MiLCAkcHJvZHVjdERpcikKKyAgICAgICAgICAgIGR5bGli
ID0gRHlsaWIubmV3KCJOYW5vTWFsbG9jIiwgJGxpYnJhcnlEaXIpCiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG5hbWUgPSBhcmcuc3BsaXQoIjoiKVswXQogICAgICAgICAgICAgcGF0aCA9IGFy
Zy5zcGxpdCgiOiIpWzFdCkBAIC0yODgsMTAgKzMyNSwxMSBAQCBkZWYgcnVuQmVuY2htYXJrcyhk
eWxpYnMpCiAKICAgICAgICAgICAgICRzdGRlcnIucHJpbnQgIlxyUlVOTklORyAje2R5bGliLm5h
bWV9OiAje2JlbmNobWFya30uLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKICAg
ICAgICAgICAgIGVudiA9ICJEWUxEX0xJQlJBUllfUEFUSD0nI3tQYXRobmFtZS5uZXcoZHlsaWIu
cGF0aCkuZGlybmFtZX0nICIKKyAgICAgICAgICAgIGVudiArPSAiTERfTElCUkFSWV9QQVRIPScj
e1BhdGhuYW1lLm5ldyhkeWxpYi5wYXRoKS5kaXJuYW1lfScgIgogICAgICAgICAgICAgaWYgZHls
aWIubmFtZSA9PSAiTmFub01hbGxvYyIKICAgICAgICAgICAgICAgICBlbnYgKz0gIk1hbGxvY05h
bm9ab25lPTEgIgogICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICBpbnB1dCA9ICJjZCAnI3sk
cHJvZHVjdERpcn0nOyAje2Vudn0gJyN7JHByb2R1Y3REaXJ9L01hbGxvY0JlbmNoJyAtLWJlbmNo
bWFyayAje2JlbmNobWFya30gLS1oZWFwICN7JGhlYXB9fSIKKyAgICAgICAgICAgIGlucHV0ID0g
ImNkICcjeyRwcm9kdWN0RGlyfSc7ICN7ZW52fSAnI3skYmluYXJ5RGlyfS9NYWxsb2NCZW5jaCcg
LS1iZW5jaG1hcmsgI3tiZW5jaG1hcmt9IC0taGVhcCAjeyRoZWFwfX0iCiAgICAgICAgICAgICBv
dXRwdXQgPWAje2lucHV0fWAKICAgICAgICAgICAgIHNwbGl0T3V0cHV0ID0gb3V0cHV0LnNwbGl0
KCJcbiIpCiAK
</data>
<flag name="review"
          id="342524"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>